@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
@@ -100,26 +100,6 @@ export function buildEventScheduleContext(event: DomainEvent): RuntimeEventSched
100
100
  primaryId: event.payload.subject.primaryId,
101
101
  },
102
102
  }
103
- case "action.requested":
104
- return {
105
- actionId: event.payload.actionId,
106
- runId: event.payload.runId,
107
- ...actionSubjectContext(event.payload.subject),
108
- params: { ...event.payload.params },
109
- }
110
- case "action.completed":
111
- return {
112
- actionId: event.payload.actionId,
113
- runId: event.payload.runId,
114
- ...actionSubjectContext(event.payload.subject),
115
- }
116
- case "action.failed":
117
- return {
118
- actionId: event.payload.actionId,
119
- runId: event.payload.runId,
120
- ...actionSubjectContext(event.payload.subject),
121
- error: event.payload.error,
122
- }
123
103
  case "dataset.version.committed":
124
104
  return { ...event.payload }
125
105
  case "sync.run.finished":
@@ -131,27 +111,6 @@ export function buildEventScheduleContext(event: DomainEvent): RuntimeEventSched
131
111
  }
132
112
  }
133
113
 
134
- function actionSubjectContext(subject: {
135
- readonly kind: "none" | "object"
136
- readonly objectTypeId?: string
137
- readonly primaryId?: string
138
- }): { readonly subject?: { readonly objectTypeId: string; readonly primaryId: string } } {
139
- if (
140
- subject.kind !== "object" ||
141
- subject.objectTypeId === undefined ||
142
- subject.primaryId === undefined
143
- ) {
144
- return {}
145
- }
146
-
147
- return {
148
- subject: {
149
- objectTypeId: subject.objectTypeId,
150
- primaryId: subject.primaryId,
151
- },
152
- }
153
- }
154
-
155
114
  function fieldsForEvent(event: DomainEvent): Readonly<Record<string, unknown>> {
156
115
  if (event.topic !== "links") {
157
116
  return {}
@@ -8,7 +8,6 @@ import type { EventScheduleCondition, EventScheduleDefinition, ScheduleDefinitio
8
8
  const objectEventTypes = new Set(["object.created", "object.updated", "object.deleted"])
9
9
  const linkEventTypes = new Set(["link.created", "link.updated", "link.deleted"])
10
10
  const ruleEventTypes = new Set(["rule.triggered", "rule.resolved"])
11
- const actionEventTypes = new Set(["action.requested", "action.completed", "action.failed"])
12
11
  const datasetEventTypes = new Set(["dataset.version.committed"])
13
12
  const syncEventTypes = new Set(["sync.run.finished"])
14
13
  const pipelineEventTypes = new Set(["pipeline.run.finished"])
@@ -17,7 +16,6 @@ const linkIdentityFields = new Set(["target.objectTypeId", "target.primaryId"])
17
16
 
18
17
  export interface ValidateSchedulesAtStartupOptions {
19
18
  readonly registeredRuleIds?: ReadonlySet<string>
20
- readonly registeredActionIds?: ReadonlySet<string>
21
19
  readonly registeredDatasetIds?: ReadonlySet<string>
22
20
  readonly registeredSyncIds?: ReadonlySet<string>
23
21
  readonly registeredPipelineIds?: ReadonlySet<string>
@@ -138,9 +136,6 @@ function assertEventSourceShape(
138
136
  case "rules":
139
137
  assertNonEmptyString(value.ruleId, `${path} ruleId`, createError)
140
138
  return
141
- case "actions":
142
- assertNonEmptyString(value.actionId, `${path} actionId`, createError)
143
- return
144
139
  case "datasets":
145
140
  assertNonEmptyString(value.datasetId, `${path} datasetId`, createError)
146
141
  return
@@ -154,7 +149,7 @@ function assertEventSourceShape(
154
149
  return
155
150
  default:
156
151
  throw createError(
157
- `${path} must select object, link, rule, action, dataset, sync, or pipeline events.`
152
+ `${path} must select object, link, rule, dataset, sync, or pipeline events.`
158
153
  )
159
154
  }
160
155
  }
@@ -212,15 +207,6 @@ function validateEventSchedule(
212
207
  "rule"
213
208
  )
214
209
  return
215
- case "actions":
216
- validateRegisteredSource(
217
- schedule,
218
- source.actionId,
219
- options.registeredActionIds,
220
- actionEventTypes,
221
- "action"
222
- )
223
- return
224
210
  case "datasets":
225
211
  validateRegisteredSource(
226
212
  schedule,
@@ -294,7 +280,7 @@ function validateRegisteredSource(
294
280
  sourceId: string | undefined,
295
281
  registeredIds: ReadonlySet<string> | undefined,
296
282
  supportedTypes: ReadonlySet<string>,
297
- sourceKind: "rule" | "action" | "dataset" | "sync" | "pipeline"
283
+ sourceKind: "rule" | "dataset" | "sync" | "pipeline"
298
284
  ): void {
299
285
  validateEventTypes(schedule, supportedTypes, sourceKind)
300
286
  if (!registeredIds?.has(sourceId ?? "")) {
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * They live under one `every` namespace on purpose. Spending seven of the best identifiers in
10
10
  * `@sixb/core` — `actions`, `workflows`, `syncs`, … — on an auxiliary subsystem collided with the
11
- * primitives themselves and with `events.actions()` / `logs.actions()` on the client.
11
+ * primitives themselves and with client builders such as `logs.actions()`.
12
12
  */
13
13
 
14
14
  import type { ActionDefinition } from "../actions/types"
@@ -1,13 +1,6 @@
1
1
  import type { ActionSubject } from "../../actions"
2
2
  import { stableJsonStringify } from "../../json"
3
- import type {
4
- ActionRunEffectsRecord,
5
- ActionRunPhase,
6
- ActionRunRecord,
7
- ActionRunWritebackRecord,
8
- FinishActionRunInput,
9
- QueueActionRunInput,
10
- } from "./types"
3
+ import type { ActionRunEffectsRecord, ActionRunRecord, ActionRunWritebackRecord } from "./types"
11
4
 
12
5
  export function actionSubjectsEqual(left: ActionSubject, right: ActionSubject): boolean {
13
6
  if (left.kind !== right.kind) return false
@@ -20,6 +13,18 @@ export function actionRunParamsEqual(left: unknown, right: unknown): boolean {
20
13
  return stableJsonStringify(left) === stableJsonStringify(right)
21
14
  }
22
15
 
16
+ /** Whether two runs carry the same request: the same Action, subject, and params. */
17
+ export function actionRunRequestsEqual(
18
+ left: Pick<ActionRunRecord, "actionId" | "subject" | "params">,
19
+ right: Pick<ActionRunRecord, "actionId" | "subject" | "params">
20
+ ): boolean {
21
+ return (
22
+ left.actionId === right.actionId &&
23
+ actionSubjectsEqual(left.subject, right.subject) &&
24
+ actionRunParamsEqual(left.params, right.params)
25
+ )
26
+ }
27
+
23
28
  export type ActionRunPhaseRecord = ActionRunWritebackRecord | ActionRunEffectsRecord
24
29
 
25
30
  export function actionRunPhaseRecordsEqual(
@@ -29,39 +34,6 @@ export function actionRunPhaseRecordsEqual(
29
34
  return actionRunParamsEqual(stripPhaseRecordCompletedAt(left), stripPhaseRecordCompletedAt(right))
30
35
  }
31
36
 
32
- export function finishActionRunPhase(
33
- input: FinishActionRunInput,
34
- current: ActionRunPhase | null | undefined
35
- ): ActionRunPhase {
36
- if (input.status === "succeeded") {
37
- return input.phase ?? current ?? "validation"
38
- }
39
-
40
- return input.error.details.phase
41
- }
42
-
43
- export function canRequeueActionRunAfterEnqueueFailure(
44
- existing: ActionRunRecord,
45
- input: QueueActionRunInput
46
- ): boolean {
47
- return (
48
- existing.status === "failed" &&
49
- existing.phase === "enqueue" &&
50
- existing.executionId === input.executionId &&
51
- existing.error?.retryable === true &&
52
- existing.actionId === input.actionId &&
53
- existing.idempotencyKey === input.idempotencyKey &&
54
- actionSubjectsEqual(existing.subject, input.subject) &&
55
- actionRunParamsEqual(existing.params, input.params)
56
- )
57
- }
58
-
59
- export function isTerminalActionRun(record: Pick<ActionRunRecord, "status">): boolean {
60
- return (
61
- record.status === "succeeded" || record.status === "failed" || record.status === "cancelled"
62
- )
63
- }
64
-
65
37
  function stripPhaseRecordCompletedAt(
66
38
  record: ActionRunPhaseRecord
67
39
  ): Omit<ActionRunPhaseRecord, "completedAt"> {
@@ -1,30 +1,15 @@
1
1
  import type { ExecutionStorage } from "../executions"
2
2
  import { ActionRunError } from "./errors"
3
- import { parseActionRunFailure } from "./failure"
4
- import {
5
- actionRunPhaseRecordsEqual,
6
- actionSubjectsEqual,
7
- canRequeueActionRunAfterEnqueueFailure,
8
- isTerminalActionRun,
9
- } from "./idempotency"
3
+ import { actionSubjectsEqual } from "./idempotency"
10
4
  import { assertActionRunExecution } from "./provider"
5
+ import { normalizeRecordActionRunInput, resolveActionRunEffects } from "./record"
11
6
  import type {
12
- ActionRunEffectsRecord,
13
- ActionRunFailure,
14
- ActionRunParams,
15
- ActionRunPhase,
16
7
  ActionRunRecord,
17
8
  ActionRunStorage,
18
- ActionRunWritebackRecord,
19
- EnterActionRunPhaseInput,
20
- FinishActionRunInput,
21
9
  ListActionRunsInput,
22
10
  ListActionRunsResult,
23
- LockActionMaterializationRunInput,
24
- QueueActionRunInput,
25
11
  RecordActionEffectsInput,
26
- RecordActionWritebackInput,
27
- StartActionRunInput,
12
+ RecordActionRunInput,
28
13
  } from "./types"
29
14
 
30
15
  type RunRootOperation = <T>(run: () => Promise<T> | T) => Promise<T>
@@ -35,74 +20,12 @@ function actionRunKey(projectId: string, id: string): string {
35
20
  return JSON.stringify([projectId, id])
36
21
  }
37
22
 
38
- function assertNonBlank(value: string, fieldName: string): void {
39
- if (typeof value !== "string" || value.trim().length === 0) {
40
- throw new ActionRunError(`[Sixb] Action materialization ${fieldName} must be nonblank.`)
41
- }
42
- }
43
-
44
23
  function cloneActionRunRecord(record: ActionRunRecord): ActionRunRecord {
45
24
  return structuredClone(record)
46
25
  }
47
26
 
48
- function normalizeParams(params: ActionRunParams): ActionRunParams {
49
- return structuredClone(params)
50
- }
51
-
52
- function normalizeSubject(subject: QueueActionRunInput["subject"]): QueueActionRunInput["subject"] {
53
- return structuredClone(subject)
54
- }
55
-
56
- function normalizeError<TPhase extends ActionRunPhase>(
57
- error: ActionRunFailure<TPhase>,
58
- expectedPhase?: TPhase
59
- ): ActionRunFailure<TPhase> {
60
- return expectedPhase === undefined
61
- ? (parseActionRunFailure(error) as ActionRunFailure<TPhase>)
62
- : parseActionRunFailure(error, expectedPhase)
63
- }
64
-
65
- function normalizeWriteback(
66
- input: RecordActionWritebackInput,
67
- completedAt: Date
68
- ): ActionRunWritebackRecord {
69
- if (input.status === "succeeded") {
70
- return {
71
- status: "succeeded",
72
- completedAt,
73
- result: structuredClone(input.result),
74
- }
75
- }
76
-
77
- return {
78
- status: "failed",
79
- completedAt,
80
- error: normalizeError(input.error, "writeback"),
81
- }
82
- }
83
-
84
- function normalizeEffects(
85
- input: RecordActionEffectsInput,
86
- completedAt: Date
87
- ): ActionRunEffectsRecord {
88
- if (input.status === "succeeded") {
89
- return {
90
- status: "succeeded",
91
- completedAt,
92
- }
93
- }
94
-
95
- return {
96
- status: "failed",
97
- completedAt,
98
- error: normalizeError(input.error, "effects"),
99
- }
100
- }
101
-
102
27
  function compareRuns(a: ActionRunRecord, b: ActionRunRecord, order: "asc" | "desc"): number {
103
- const leftAt = a.startedAt ?? a.queuedAt
104
- const rightAt = b.startedAt ?? b.queuedAt
105
- const delta = leftAt.getTime() - rightAt.getTime()
28
+ const delta = a.startedAt.getTime() - b.startedAt.getTime()
106
29
  if (delta !== 0) {
107
30
  return order === "asc" ? delta : -delta
108
31
  }
@@ -136,235 +59,49 @@ export class InMemoryActionRunStorage implements ActionRunStorage {
136
59
  }
137
60
  }
138
61
 
139
- async lockForMaterialization(input: LockActionMaterializationRunInput): Promise<ActionRunRecord> {
140
- return this.runRootOperation(() => cloneActionRunRecord(this.requireMaterializationRun(input)))
141
- }
142
-
143
- async queue(input: QueueActionRunInput): Promise<ActionRunRecord> {
62
+ async record(input: RecordActionRunInput): Promise<ActionRunRecord> {
144
63
  return this.runRootOperation(async () => {
145
- const key = actionRunKey(input.projectId, input.id)
146
- const existing = this.rows.get(key)
147
- if (existing && !canRequeueActionRunAfterEnqueueFailure(existing, input)) {
64
+ const record = normalizeRecordActionRunInput(input)
65
+ const key = actionRunKey(record.projectId, record.id)
66
+ if (this.rows.has(key)) {
148
67
  throw new ActionRunError(
149
- `[Sixb] Action run '${input.id}' already exists for project '${input.projectId}'.`
68
+ `[Sixb] Action run '${record.id}' is already recorded for project '${record.projectId}'.`
150
69
  )
151
70
  }
152
71
  if (
153
72
  [...this.rows.values()].some(
154
- (run) =>
155
- run.projectId === input.projectId &&
156
- run.id !== input.id &&
157
- run.executionId === input.executionId
73
+ (run) => run.projectId === record.projectId && run.executionId === record.executionId
158
74
  )
159
75
  ) {
160
76
  throw new ActionRunError(
161
- `[Sixb] Execution '${input.executionId}' already belongs to another Action run.`
77
+ `[Sixb] Execution '${record.executionId}' already belongs to another Action run.`
162
78
  )
163
79
  }
164
80
  await assertActionRunExecution({
165
81
  executions: this.executions,
166
- projectId: input.projectId,
167
- executionId: input.executionId,
168
- runId: input.id,
169
- actionId: input.actionId,
82
+ projectId: record.projectId,
83
+ executionId: record.executionId,
84
+ runId: record.id,
85
+ actionId: record.actionId,
170
86
  })
171
87
 
172
- const record: ActionRunRecord = {
173
- id: input.id,
174
- projectId: input.projectId,
175
- executionId: input.executionId,
176
- actionId: input.actionId,
177
- subject: normalizeSubject(input.subject),
178
- status: "queued",
179
- phase: "request",
180
- queuedAt: new Date(input.queuedAt ?? new Date()),
181
- params: normalizeParams(input.params),
182
- idempotencyKey: input.idempotencyKey,
183
- }
184
-
185
- if (existing) {
186
- const next: ActionRunRecord = {
187
- ...existing,
188
- status: "queued",
189
- phase: "request",
190
- queuedAt: record.queuedAt,
191
- startedAt: undefined,
192
- finishedAt: undefined,
193
- error: undefined,
194
- writeback: undefined,
195
- effects: undefined,
196
- }
197
- this.rows.set(key, structuredClone(next))
198
- return cloneActionRunRecord(next)
199
- }
200
-
201
88
  this.rows.set(key, structuredClone(record))
202
89
  return cloneActionRunRecord(record)
203
90
  })
204
91
  }
205
92
 
206
- async start(input: StartActionRunInput): Promise<ActionRunRecord> {
207
- return this.runRootOperation(() => {
208
- const key = actionRunKey(input.projectId, input.id)
209
- const existing = this.rows.get(key)
210
-
211
- if (!existing) {
212
- throw new ActionRunError(
213
- `[Sixb] Action run '${input.id}' not found for project '${input.projectId}'.`
214
- )
215
- }
216
-
217
- if (existing.status !== "queued") {
218
- throw new ActionRunError(
219
- `[Sixb] Action run '${input.id}' cannot start from status '${existing.status}'.`
220
- )
221
- }
222
-
223
- const next: ActionRunRecord = {
224
- ...existing,
225
- status: "running",
226
- phase: input.phase ?? "validation",
227
- startedAt: new Date(input.startedAt ?? new Date()),
228
- error: undefined,
229
- }
230
-
231
- this.rows.set(key, structuredClone(next))
232
- return cloneActionRunRecord(next)
233
- })
234
- }
235
-
236
- async enterPhase(input: EnterActionRunPhaseInput): Promise<ActionRunRecord> {
237
- return this.runRootOperation(() => {
238
- const key = actionRunKey(input.projectId, input.id)
239
- const existing = this.requireRunningRun(key, input.projectId, input.id, "enter phase")
240
- const next: ActionRunRecord = {
241
- ...existing,
242
- phase: input.phase,
243
- }
244
-
245
- this.rows.set(key, structuredClone(next))
246
- return cloneActionRunRecord(next)
247
- })
248
- }
249
-
250
- async recordWriteback(input: RecordActionWritebackInput): Promise<ActionRunRecord> {
251
- return this.runRootOperation(() => {
252
- const key = actionRunKey(input.projectId, input.id)
253
- const existing = this.requireRunningRun(key, input.projectId, input.id, "record writeback")
254
- const writeback = normalizeWriteback(input, new Date(input.completedAt ?? new Date()))
255
-
256
- if (existing.writeback) {
257
- if (actionRunPhaseRecordsEqual(existing.writeback, writeback)) {
258
- return cloneActionRunRecord(existing)
259
- }
260
-
261
- throw new ActionRunError(
262
- `[Sixb] Action run '${input.id}' already has a different writeback record.`
263
- )
264
- }
265
-
266
- const next: ActionRunRecord = {
267
- ...existing,
268
- phase: "writeback",
269
- writeback,
270
- }
271
-
272
- this.rows.set(key, structuredClone(next))
273
- return cloneActionRunRecord(next)
274
- })
275
- }
276
-
277
93
  async recordEffects(input: RecordActionEffectsInput): Promise<ActionRunRecord> {
278
94
  return this.runRootOperation(() => {
279
95
  const key = actionRunKey(input.projectId, input.id)
280
- const existing = this.requireRunningRun(key, input.projectId, input.id, "record effects")
281
- const effects = normalizeEffects(input, new Date(input.completedAt ?? new Date()))
282
-
283
- if (existing.effects) {
284
- if (actionRunPhaseRecordsEqual(existing.effects, effects)) {
285
- return cloneActionRunRecord(existing)
286
- }
287
-
288
- throw new ActionRunError(
289
- `[Sixb] Action run '${input.id}' already has a different effects record.`
290
- )
291
- }
292
-
293
- const next: ActionRunRecord = {
294
- ...existing,
295
- phase: "effects",
296
- effects,
297
- }
96
+ const { run, effects } = resolveActionRunEffects(this.rows.get(key) ?? null, input)
97
+ if (!effects) return cloneActionRunRecord(run)
298
98
 
99
+ const next: ActionRunRecord = { ...run, phase: "effects", effects }
299
100
  this.rows.set(key, structuredClone(next))
300
101
  return cloneActionRunRecord(next)
301
102
  })
302
103
  }
303
104
 
304
- async finish(input: FinishActionRunInput): Promise<ActionRunRecord> {
305
- return this.runRootOperation(() => {
306
- const key = actionRunKey(input.projectId, input.id)
307
- const existing = this.rows.get(key)
308
-
309
- if (!existing) {
310
- throw new ActionRunError(
311
- `[Sixb] Action run '${input.id}' not found for project '${input.projectId}'.`
312
- )
313
- }
314
-
315
- if (isTerminalActionRun(existing)) {
316
- throw new ActionRunError(
317
- `[Sixb] Action run '${input.id}' cannot finish from terminal status '${existing.status}'.`
318
- )
319
- }
320
-
321
- const phase =
322
- input.status === "succeeded" ? (input.phase ?? existing.phase) : input.error.details.phase
323
-
324
- const base: ActionRunRecord = {
325
- ...existing,
326
- status: input.status,
327
- phase,
328
- finishedAt: new Date(input.finishedAt ?? new Date()),
329
- }
330
-
331
- const next: ActionRunRecord =
332
- input.status === "succeeded"
333
- ? {
334
- ...base,
335
- error: undefined,
336
- }
337
- : {
338
- ...base,
339
- error: normalizeError(input.error),
340
- }
341
-
342
- this.rows.set(key, structuredClone(next))
343
- return cloneActionRunRecord(next)
344
- })
345
- }
346
-
347
- private requireRunningRun(
348
- key: string,
349
- projectId: string,
350
- id: string,
351
- operation: string
352
- ): ActionRunRecord {
353
- const existing = this.rows.get(key)
354
-
355
- if (!existing) {
356
- throw new ActionRunError(`[Sixb] Action run '${id}' not found for project '${projectId}'.`)
357
- }
358
-
359
- if (existing.status !== "running") {
360
- throw new ActionRunError(
361
- `[Sixb] Action run '${id}' cannot ${operation} from status '${existing.status}'.`
362
- )
363
- }
364
-
365
- return existing
366
- }
367
-
368
105
  async getById(params: { projectId: string; id: string }): Promise<ActionRunRecord | null> {
369
106
  return this.runRootOperation(() => {
370
107
  const record = this.rows.get(actionRunKey(params.projectId, params.id))
@@ -408,12 +145,8 @@ export class InMemoryActionRunStorage implements ActionRunStorage {
408
145
  : true
409
146
  )
410
147
  .filter((record) => (statuses ? statuses.has(record.status) : true))
411
- .filter((record) =>
412
- input.startedAfter ? (record.startedAt ?? record.queuedAt) >= input.startedAfter : true
413
- )
414
- .filter((record) =>
415
- input.startedBefore ? (record.startedAt ?? record.queuedAt) <= input.startedBefore : true
416
- )
148
+ .filter((record) => (input.startedAfter ? record.startedAt >= input.startedAfter : true))
149
+ .filter((record) => (input.startedBefore ? record.startedAt <= input.startedBefore : true))
417
150
  .sort((a, b) => compareRuns(a, b, order))
418
151
 
419
152
  const total = filtered.length
@@ -421,30 +154,6 @@ export class InMemoryActionRunStorage implements ActionRunStorage {
421
154
  return { runs, hasMore: offset + runs.length < total, total }
422
155
  })
423
156
  }
424
-
425
- private requireMaterializationRun(input: LockActionMaterializationRunInput): ActionRunRecord {
426
- assertNonBlank(input.projectId, "projectId")
427
- assertNonBlank(input.runId, "runId")
428
- assertNonBlank(input.actionId, "actionId")
429
-
430
- const existing = this.rows.get(actionRunKey(input.projectId, input.runId))
431
- if (!existing) {
432
- throw new ActionRunError(
433
- `[Sixb] Action run '${input.runId}' not found for project '${input.projectId}'.`
434
- )
435
- }
436
- if (existing.actionId !== input.actionId) {
437
- throw new ActionRunError(
438
- `[Sixb] Action run '${input.runId}' does not belong to action '${input.actionId}'.`
439
- )
440
- }
441
- if (existing.status !== "running") {
442
- throw new ActionRunError(
443
- `[Sixb] Action run '${input.runId}' cannot materialize from status '${existing.status}'.`
444
- )
445
- }
446
- return existing
447
- }
448
157
  }
449
158
 
450
159
  export type InMemoryActionRunStorageSnapshot = Map<string, ActionRunRecord>
@@ -1,13 +1,4 @@
1
1
  export { ActionRunError } from "./errors"
2
- export type { ActionRunPhaseRecord } from "./idempotency"
3
- export {
4
- actionRunParamsEqual,
5
- actionRunPhaseRecordsEqual,
6
- actionSubjectsEqual,
7
- canRequeueActionRunAfterEnqueueFailure,
8
- finishActionRunPhase,
9
- isTerminalActionRun,
10
- } from "./idempotency"
11
2
  export { InMemoryActionRunStorage } from "./in-memory"
12
3
  export type {
13
4
  ActionRunEffectsRecord,
@@ -16,19 +7,13 @@ export type {
16
7
  ActionRunFailureDetails,
17
8
  ActionRunParams,
18
9
  ActionRunPhase,
19
- ActionRunPhaseStatus,
20
10
  ActionRunRecord,
21
11
  ActionRunStatus,
22
12
  ActionRunStorage,
23
13
  ActionRunWritebackRecord,
24
- EnterActionRunPhaseInput,
25
- FinishActionRunInput,
26
14
  ListActionRunsInput,
27
15
  ListActionRunsResult,
28
- LockActionMaterializationRunInput,
29
- QueueActionRunInput,
30
16
  RecordActionEffectsInput,
31
- RecordActionWritebackInput,
32
- StartActionRunInput,
17
+ RecordActionRunInput,
33
18
  } from "./types"
34
19
  export { ACTION_RUN_FAILURE_CODES, ACTION_RUN_PHASES } from "./types"