@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,25 +0,0 @@
1
- import type { DomainEventLog } from "../events";
2
- import type { Queues } from "../queues";
3
- import type { ActionRunParams, ActionRunRecord, CreateExecutionInput, Storage } from "../storage";
4
- import type { RequestActionResult } from "./request";
5
- import type { ActionSubject } from "./types";
6
- interface DispatchActionRunInput {
7
- readonly errorReporterHost: object;
8
- readonly projectId: string;
9
- readonly storage: Storage;
10
- readonly queue: Queues["actions"];
11
- readonly events: DomainEventLog;
12
- readonly actionId: string;
13
- readonly subject: ActionSubject;
14
- readonly params: ActionRunParams;
15
- readonly runId?: string;
16
- readonly createExecution: (executionId: string, runId: string) => Promise<CreateExecutionInput>;
17
- /** Runs before payload comparison or retry so an existing run cannot cross authority owners. */
18
- readonly assertCanReuseExisting?: (storage: Storage, run: ActionRunRecord) => void | Promise<void>;
19
- /** Checks that hold only for a run this call creates; a replayed run keeps its accepted params. */
20
- readonly assertNewRun?: () => Promise<void>;
21
- }
22
- /** Persist an Action execution and run before publishing its queue job. */
23
- export declare function dispatchActionRun(input: DispatchActionRunInput): Promise<RequestActionResult>;
24
- export {};
25
- //# sourceMappingURL=run-dispatch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-dispatch.d.ts","sourceRoot":"","sources":["../../src/actions/run-dispatch.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAEV,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,OAAO,EACR,MAAM,YAAY,CAAA;AAInB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,eAAe,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAC/F,gGAAgG;IAChG,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClG,mGAAmG;IACnG,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5C;AAiBD,2EAA2E;AAC3E,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAK9B"}
@@ -1,3 +0,0 @@
1
- export type { RecordEditsHandler, RecordEditsOptions } from "../edits/recorder";
2
- export { recordEdits } from "../edits/recorder";
3
- //# sourceMappingURL=worker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/actions/worker.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA"}
@@ -1,325 +0,0 @@
1
- // @bun
2
- import"../chunk-jhm3zsa7.js";
3
- import"../chunk-z3y5kg1x.js";
4
- import {
5
- assertValidFileRefs2,
6
- normalizeObjectProperties2,
7
- assertKnownProperties2,
8
- assertRequiredProperties2,
9
- validateObjectProperties2,
10
- validatePropertyValue2
11
- } from "../chunk-y05543x6.js";
12
- import {
13
- EditBatchError2
14
- } from "../chunk-zvx7h87b.js";
15
- import {
16
- OntologyValidationError2
17
- } from "../chunk-cqr3acm1.js";
18
-
19
- // src/edits/recorder.ts
20
- import { createHash } from "crypto";
21
-
22
- // src/edits/properties.ts
23
- function normalizeObjectEditProperties(params) {
24
- const { objectType, properties, valueTypesById, path } = params;
25
- assertKnownProperties2(objectType, properties);
26
- assertNoTelemetryProperties(objectType.properties, properties, path);
27
- validateObjectProperties2(objectType, properties, valueTypesById);
28
- assertValidFileRefs2(properties, objectType.id);
29
- return normalizeObjectProperties2(objectType.properties, properties, valueTypesById, path);
30
- }
31
- function normalizeLinkEditProperties(params) {
32
- const { sourceObjectTypeId, linkId, linkDefinition, properties, valueTypesById } = params;
33
- const linkProperties = linkDefinition.properties ?? [];
34
- if (linkProperties.length === 0 && Object.keys(properties).length > 0) {
35
- throw new OntologyValidationError2(`[Sixb] Link ${sourceObjectTypeId}.${linkId} does not define link properties`);
36
- }
37
- const knownPropertyIds = new Set(linkProperties.map((property) => property.id));
38
- for (const propertyId of Object.keys(properties)) {
39
- if (!knownPropertyIds.has(propertyId)) {
40
- throw new OntologyValidationError2(`[Sixb] Unknown link property '${propertyId}' for link '${sourceObjectTypeId}.${linkId}'`);
41
- }
42
- }
43
- assertNoTelemetryProperties(linkProperties, properties, `${sourceObjectTypeId}.${linkId}`);
44
- for (const [propertyId, value] of Object.entries(properties)) {
45
- const property = linkProperties.find((candidate) => candidate.id === propertyId);
46
- if (!property)
47
- continue;
48
- validatePropertyValue2(property, value, `${sourceObjectTypeId}.${linkId}.${propertyId}`, valueTypesById);
49
- }
50
- assertValidFileRefs2(properties, `${sourceObjectTypeId}.${linkId}`);
51
- return normalizeObjectProperties2(linkProperties, properties, valueTypesById, `${sourceObjectTypeId}.${linkId}`);
52
- }
53
- function getPrimaryProperty(objectType) {
54
- const primaryProperty = objectType.properties.find((property) => property.primary);
55
- if (!primaryProperty) {
56
- throw new OntologyValidationError2(`[Sixb] Object type '${objectType.id}' has no primary property`);
57
- }
58
- return primaryProperty;
59
- }
60
- function assertPrimaryPropertyNotUpdated(objectType, properties) {
61
- const primaryProperty = getPrimaryProperty(objectType);
62
- if (Object.hasOwn(properties, primaryProperty.id)) {
63
- throw new EditBatchError2(`[Sixb] EditBatch cannot update primary property '${objectType.id}.${primaryProperty.id}'.`);
64
- }
65
- }
66
- function normalizeEditablePropertyIds(params) {
67
- const { objectType, propertyIds, operation } = params;
68
- const primaryProperty = getPrimaryProperty(objectType);
69
- const normalized = [];
70
- const seen = new Set;
71
- for (const propertyId of propertyIds) {
72
- if (typeof propertyId !== "string" || !propertyId.trim()) {
73
- throw new EditBatchError2(`[Sixb] EditBatch ${objectType.id}.${operation} property id must be a non-empty string.`);
74
- }
75
- const property = objectType.properties.find((candidate) => candidate.id === propertyId);
76
- if (!property) {
77
- throw new EditBatchError2(`[Sixb] EditBatch ${operation} references unknown property '${objectType.id}.${propertyId}'.`);
78
- }
79
- if (property.id === primaryProperty.id) {
80
- throw new EditBatchError2(`[Sixb] EditBatch cannot ${operation} primary property '${objectType.id}.${propertyId}'.`);
81
- }
82
- if (property.mode === "telemetry") {
83
- throw new EditBatchError2(`[Sixb] EditBatch cannot ${operation} telemetry property '${objectType.id}.${propertyId}'.`);
84
- }
85
- if (seen.has(propertyId))
86
- continue;
87
- seen.add(propertyId);
88
- normalized.push(propertyId);
89
- }
90
- if (normalized.length === 0) {
91
- throw new EditBatchError2(`[Sixb] EditBatch ${objectType.id}.${operation} requires at least one property id.`);
92
- }
93
- return normalized;
94
- }
95
- function assertNoTelemetryProperties(definitions, properties, path) {
96
- for (const propertyId of Object.keys(properties)) {
97
- const property = definitions.find((candidate) => candidate.id === propertyId);
98
- if (property?.mode === "telemetry") {
99
- throw new EditBatchError2(`[Sixb] EditBatch cannot edit telemetry property '${path}.${propertyId}' in the MVP.`);
100
- }
101
- }
102
- }
103
-
104
- // src/edits/recorder.ts
105
- var EMPTY_VALUE_TYPES = new Map;
106
- async function recordEdits(options, handler) {
107
- const recorder = createEditRecorder(options);
108
- await handler({ objects: recorder.objects });
109
- return recorder.toEditBatch();
110
- }
111
- function createEditRecorder(options) {
112
- if (!options.runId.trim()) {
113
- throw new EditBatchError2("[Sixb] recordEdits requires a non-empty runId.");
114
- }
115
- const operations = [];
116
- const valueTypesById = options.valueTypesById ?? EMPTY_VALUE_TYPES;
117
- function objects(objectType) {
118
- return {
119
- byId(primaryId) {
120
- return createObjectHandle(objectType, createRef(objectType.id, primaryId));
121
- },
122
- create(properties) {
123
- const operationPath = String(operations.length);
124
- const primaryProperty = getPrimaryProperty(objectType);
125
- const rawProperties = assertRecord(properties, `${objectType.id}.create.properties`);
126
- const primaryValue = rawProperties[primaryProperty.id] ?? generatePrimaryId({
127
- runId: options.runId,
128
- operationPath,
129
- objectTypeId: objectType.id
130
- });
131
- if (typeof primaryValue !== "string" || !primaryValue.trim()) {
132
- throw new EditBatchError2(`[Sixb] EditBatch create '${objectType.id}' primary property '${primaryProperty.id}' must be a non-empty string.`);
133
- }
134
- const normalizedProperties = normalizeObjectEditProperties({
135
- objectType,
136
- properties: {
137
- ...rawProperties,
138
- [primaryProperty.id]: primaryValue
139
- },
140
- valueTypesById,
141
- path: `${objectType.id}.create`
142
- });
143
- assertRequiredProperties2(objectType, normalizedProperties);
144
- operations.push({
145
- kind: "object.create",
146
- objectTypeId: objectType.id,
147
- primaryId: primaryValue,
148
- properties: withoutPrimaryProperty(normalizedProperties, primaryProperty.id)
149
- });
150
- return createObjectHandle(objectType, {
151
- objectTypeId: objectType.id,
152
- primaryId: primaryValue
153
- });
154
- }
155
- };
156
- }
157
- function toEditBatch() {
158
- return { operations: [...operations] };
159
- }
160
- function createObjectHandle(objectType, ref) {
161
- const handle = {
162
- objectTypeId: ref.objectTypeId,
163
- primaryId: ref.primaryId
164
- };
165
- Object.defineProperties(handle, {
166
- objectType: {
167
- value: objectType
168
- },
169
- update: {
170
- value(properties) {
171
- const normalizedProperties = normalizeObjectEditProperties({
172
- objectType,
173
- properties: assertRecord(properties, `${objectType.id}.update.properties`),
174
- valueTypesById,
175
- path: `${objectType.id}.update`
176
- });
177
- assertPrimaryPropertyNotUpdated(objectType, normalizedProperties);
178
- if (Object.keys(normalizedProperties).length === 0) {
179
- throw new EditBatchError2(`[Sixb] EditBatch update '${objectType.id}:${ref.primaryId}' must set at least one property.`);
180
- }
181
- operations.push({
182
- kind: "object.update",
183
- objectTypeId: ref.objectTypeId,
184
- primaryId: ref.primaryId,
185
- properties: normalizedProperties
186
- });
187
- }
188
- },
189
- unset: {
190
- value(...propertyIds) {
191
- operations.push({
192
- kind: "object.unset",
193
- objectTypeId: ref.objectTypeId,
194
- primaryId: ref.primaryId,
195
- propertyIds: normalizeEditablePropertyIds({
196
- objectType,
197
- propertyIds,
198
- operation: "unset"
199
- })
200
- });
201
- }
202
- },
203
- reset: {
204
- value(...propertyIds) {
205
- operations.push({
206
- kind: "object.reset",
207
- objectTypeId: ref.objectTypeId,
208
- primaryId: ref.primaryId,
209
- propertyIds: normalizeEditablePropertyIds({
210
- objectType,
211
- propertyIds,
212
- operation: "reset"
213
- })
214
- });
215
- }
216
- },
217
- delete: {
218
- value() {
219
- operations.push({
220
- kind: "object.delete",
221
- objectTypeId: ref.objectTypeId,
222
- primaryId: ref.primaryId
223
- });
224
- }
225
- },
226
- restore: {
227
- value() {
228
- operations.push({
229
- kind: "object.restore",
230
- objectTypeId: ref.objectTypeId,
231
- primaryId: ref.primaryId
232
- });
233
- }
234
- },
235
- link: {
236
- value(link, target, linkOptions) {
237
- assertLinkTokenSource(ref, link);
238
- const properties = linkOptions?.properties === undefined ? undefined : normalizeLinkEditProperties({
239
- sourceObjectTypeId: ref.objectTypeId,
240
- linkId: link.id,
241
- linkDefinition: link.link,
242
- properties: linkOptions.properties,
243
- valueTypesById
244
- });
245
- operations.push({
246
- kind: "link.upsert",
247
- source: toPlainRef(ref),
248
- linkId: link.id,
249
- target: toPlainRef(target),
250
- ...properties !== undefined ? { properties } : {}
251
- });
252
- }
253
- },
254
- unlink: {
255
- value(link, target) {
256
- assertLinkTokenSource(ref, link);
257
- operations.push({
258
- kind: "link.delete",
259
- source: toPlainRef(ref),
260
- linkId: link.id,
261
- target: toPlainRef(target)
262
- });
263
- }
264
- },
265
- resetLink: {
266
- value(link, target) {
267
- assertLinkTokenSource(ref, link);
268
- operations.push({
269
- kind: "link.reset",
270
- source: toPlainRef(ref),
271
- linkId: link.id,
272
- target: toPlainRef(target)
273
- });
274
- }
275
- }
276
- });
277
- return handle;
278
- }
279
- return {
280
- objects,
281
- toEditBatch
282
- };
283
- }
284
- function assertLinkTokenSource(source, link) {
285
- if (source.objectTypeId !== link.objectTypeId) {
286
- throw new OntologyValidationError2(`[Sixb] Link token ${link.objectTypeId}.${link.id} cannot be used with ${source.objectTypeId}`);
287
- }
288
- }
289
- function createRef(objectTypeId, primaryId) {
290
- return {
291
- objectTypeId: assertNonEmptyString(objectTypeId, "objectTypeId"),
292
- primaryId: assertNonEmptyString(primaryId, `${objectTypeId}.primaryId`)
293
- };
294
- }
295
- function generatePrimaryId(params) {
296
- const hash = createHash("sha256").update(`${params.runId}:${params.operationPath}:${params.objectTypeId}`).digest("hex").slice(0, 24);
297
- return `edit_${hash}`;
298
- }
299
- function withoutPrimaryProperty(properties, primaryPropertyId) {
300
- const { [primaryPropertyId]: _primary, ...rest } = properties;
301
- return rest;
302
- }
303
- function assertRecord(value, label) {
304
- if (typeof value !== "object" || value === null || Array.isArray(value)) {
305
- throw new EditBatchError2(`[Sixb] EditBatch ${label} must be an object.`);
306
- }
307
- return value;
308
- }
309
- function assertNonEmptyString(value, label) {
310
- if (typeof value !== "string" || !value.trim()) {
311
- throw new EditBatchError2(`[Sixb] EditBatch ${label} must be a non-empty string.`);
312
- }
313
- return value;
314
- }
315
- function toPlainRef(ref) {
316
- return {
317
- objectTypeId: ref.objectTypeId,
318
- primaryId: ref.primaryId
319
- };
320
- }
321
- export {
322
- recordEdits
323
- };
324
-
325
- //# debugId=C332D402574FA7A464756E2164756E21
@@ -1,11 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/edits/recorder.ts", "../src/edits/properties.ts"],
4
- "sourcesContent": [
5
- "import { createHash } from \"node:crypto\"\nimport type { ObjectLink, ValueType } from \"../ontology\"\nimport { OntologyValidationError } from \"../ontology/errors\"\nimport type { ObjectTypeWithPropertyTokens } from \"../ontology/tokens\"\nimport { assertRequiredProperties } from \"../ontology/validation\"\nimport { EditBatchError } from \"./errors\"\nimport {\n assertPrimaryPropertyNotUpdated,\n getPrimaryProperty,\n normalizeEditablePropertyIds,\n normalizeLinkEditProperties,\n normalizeObjectEditProperties,\n} from \"./properties\"\nimport type {\n EditBatch,\n EditObjectHandle,\n EditObjectProperties,\n EditObjectRef,\n EditOperation,\n RecordEditsContext,\n RecordEditsHandler,\n RecordEditsOptions,\n} from \"./types\"\n\nexport type { RecordEditsHandler, RecordEditsOptions } from \"./types\"\n\nconst EMPTY_VALUE_TYPES = new Map<string, ValueType>()\n\ntype RuntimeEditRecorder = {\n readonly objects: (objectType: ObjectTypeWithPropertyTokens) => unknown\n toEditBatch(): EditBatch\n}\n\nexport async function recordEdits(\n options: RecordEditsOptions,\n handler: RecordEditsHandler\n): Promise<EditBatch> {\n const recorder = createEditRecorder(options)\n await handler({ objects: recorder.objects } as RecordEditsContext)\n return recorder.toEditBatch()\n}\n\nfunction createEditRecorder(options: RecordEditsOptions): RuntimeEditRecorder {\n if (!options.runId.trim()) {\n throw new EditBatchError(\"[Sixb] recordEdits requires a non-empty runId.\")\n }\n\n const operations: EditOperation[] = []\n const valueTypesById = options.valueTypesById ?? EMPTY_VALUE_TYPES\n\n function objects(objectType: ObjectTypeWithPropertyTokens) {\n return {\n byId(primaryId: string) {\n return createObjectHandle(objectType, createRef(objectType.id, primaryId))\n },\n\n create(properties: unknown) {\n const operationPath = String(operations.length)\n const primaryProperty = getPrimaryProperty(objectType)\n const rawProperties = assertRecord(properties, `${objectType.id}.create.properties`)\n const primaryValue =\n rawProperties[primaryProperty.id] ??\n generatePrimaryId({\n runId: options.runId,\n operationPath,\n objectTypeId: objectType.id,\n })\n\n if (typeof primaryValue !== \"string\" || !primaryValue.trim()) {\n throw new EditBatchError(\n `[Sixb] EditBatch create '${objectType.id}' primary property '${primaryProperty.id}' must be a non-empty string.`\n )\n }\n\n const normalizedProperties = normalizeObjectEditProperties({\n objectType,\n properties: {\n ...rawProperties,\n [primaryProperty.id]: primaryValue,\n },\n valueTypesById,\n path: `${objectType.id}.create`,\n })\n assertRequiredProperties(objectType, normalizedProperties)\n\n operations.push({\n kind: \"object.create\",\n objectTypeId: objectType.id,\n primaryId: primaryValue,\n properties: withoutPrimaryProperty(normalizedProperties, primaryProperty.id),\n })\n return createObjectHandle(objectType, {\n objectTypeId: objectType.id,\n primaryId: primaryValue,\n })\n },\n }\n }\n\n function toEditBatch(): EditBatch {\n return { operations: [...operations] }\n }\n\n function createObjectHandle(\n objectType: ObjectTypeWithPropertyTokens,\n ref: EditObjectRef\n ): EditObjectHandle<ObjectTypeWithPropertyTokens> {\n const handle = {\n objectTypeId: ref.objectTypeId,\n primaryId: ref.primaryId,\n }\n\n Object.defineProperties(handle, {\n objectType: {\n value: objectType,\n },\n update: {\n value(properties: Readonly<Record<string, unknown>>) {\n const normalizedProperties = normalizeObjectEditProperties({\n objectType,\n properties: assertRecord(properties, `${objectType.id}.update.properties`),\n valueTypesById,\n path: `${objectType.id}.update`,\n })\n assertPrimaryPropertyNotUpdated(objectType, normalizedProperties)\n // An empty patch resolves to a null override and commits as `unchanged`, so a handler\n // that built its update conditionally would report a successful run that wrote nothing.\n if (Object.keys(normalizedProperties).length === 0) {\n throw new EditBatchError(\n `[Sixb] EditBatch update '${objectType.id}:${ref.primaryId}' must set at least one property.`\n )\n }\n\n operations.push({\n kind: \"object.update\",\n objectTypeId: ref.objectTypeId,\n primaryId: ref.primaryId,\n properties: normalizedProperties,\n })\n },\n },\n unset: {\n value(...propertyIds: readonly unknown[]) {\n operations.push({\n kind: \"object.unset\",\n objectTypeId: ref.objectTypeId,\n primaryId: ref.primaryId,\n propertyIds: normalizeEditablePropertyIds({\n objectType,\n propertyIds,\n operation: \"unset\",\n }),\n })\n },\n },\n reset: {\n value(...propertyIds: readonly unknown[]) {\n operations.push({\n kind: \"object.reset\",\n objectTypeId: ref.objectTypeId,\n primaryId: ref.primaryId,\n propertyIds: normalizeEditablePropertyIds({\n objectType,\n propertyIds,\n operation: \"reset\",\n }),\n })\n },\n },\n delete: {\n value() {\n operations.push({\n kind: \"object.delete\",\n objectTypeId: ref.objectTypeId,\n primaryId: ref.primaryId,\n })\n },\n },\n restore: {\n value() {\n operations.push({\n kind: \"object.restore\",\n objectTypeId: ref.objectTypeId,\n primaryId: ref.primaryId,\n })\n },\n },\n link: {\n value(\n link: { objectTypeId: string; id: string; link: ObjectLink },\n target: EditObjectRef,\n linkOptions?: { readonly properties?: Readonly<Record<string, unknown>> }\n ) {\n assertLinkTokenSource(ref, link)\n\n const properties =\n linkOptions?.properties === undefined\n ? undefined\n : normalizeLinkEditProperties({\n sourceObjectTypeId: ref.objectTypeId,\n linkId: link.id,\n linkDefinition: link.link,\n properties: linkOptions.properties,\n valueTypesById,\n })\n\n operations.push({\n kind: \"link.upsert\",\n source: toPlainRef(ref),\n linkId: link.id,\n target: toPlainRef(target),\n ...(properties !== undefined ? { properties } : {}),\n })\n },\n },\n unlink: {\n value(link: { objectTypeId: string; id: string; link: ObjectLink }, target: EditObjectRef) {\n assertLinkTokenSource(ref, link)\n\n operations.push({\n kind: \"link.delete\",\n source: toPlainRef(ref),\n linkId: link.id,\n target: toPlainRef(target),\n })\n },\n },\n resetLink: {\n value(link: { objectTypeId: string; id: string; link: ObjectLink }, target: EditObjectRef) {\n assertLinkTokenSource(ref, link)\n\n operations.push({\n kind: \"link.reset\",\n source: toPlainRef(ref),\n linkId: link.id,\n target: toPlainRef(target),\n })\n },\n },\n })\n\n return handle as EditObjectHandle<ObjectTypeWithPropertyTokens>\n }\n\n return {\n objects,\n toEditBatch,\n }\n}\n\nfunction assertLinkTokenSource(\n source: EditObjectRef,\n link: { readonly objectTypeId: string; readonly id: string }\n): void {\n if (source.objectTypeId !== link.objectTypeId) {\n throw new OntologyValidationError(\n `[Sixb] Link token ${link.objectTypeId}.${link.id} cannot be used with ${source.objectTypeId}`\n )\n }\n}\n\nfunction createRef<TObjectTypeId extends string>(\n objectTypeId: TObjectTypeId,\n primaryId: string\n): EditObjectRef<TObjectTypeId> {\n return {\n objectTypeId: assertNonEmptyString(objectTypeId, \"objectTypeId\") as TObjectTypeId,\n primaryId: assertNonEmptyString(primaryId, `${objectTypeId}.primaryId`),\n }\n}\n\nfunction generatePrimaryId(params: {\n readonly runId: string\n readonly operationPath: string\n readonly objectTypeId: string\n}): string {\n const hash = createHash(\"sha256\")\n .update(`${params.runId}:${params.operationPath}:${params.objectTypeId}`)\n .digest(\"hex\")\n .slice(0, 24)\n return `edit_${hash}`\n}\n\n/** Primary identity lives in the object ref; managed authority never stores it as a property. */\nfunction withoutPrimaryProperty(\n properties: EditObjectProperties,\n primaryPropertyId: string\n): EditObjectProperties {\n const { [primaryPropertyId]: _primary, ...rest } = properties\n return rest\n}\n\nfunction assertRecord(value: unknown, label: string): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new EditBatchError(`[Sixb] EditBatch ${label} must be an object.`)\n }\n return value as Record<string, unknown>\n}\n\nfunction assertNonEmptyString(value: unknown, label: string): string {\n if (typeof value !== \"string\" || !value.trim()) {\n throw new EditBatchError(`[Sixb] EditBatch ${label} must be a non-empty string.`)\n }\n return value\n}\n\nfunction toPlainRef(ref: EditObjectRef): EditObjectRef {\n return {\n objectTypeId: ref.objectTypeId,\n primaryId: ref.primaryId,\n }\n}\n",
6
- "import type { ObjectLink, Property, ValueType } from \"../ontology\"\nimport { OntologyValidationError } from \"../ontology/errors\"\nimport type { ObjectTypeWithPropertyTokens } from \"../ontology/tokens\"\nimport {\n assertKnownProperties,\n assertValidFileRefs,\n normalizeObjectProperties,\n validateObjectProperties,\n validatePropertyValue,\n} from \"../ontology/validation\"\nimport { EditBatchError } from \"./errors\"\nimport type { EditObjectProperties } from \"./types\"\n\nexport function normalizeObjectEditProperties(params: {\n readonly objectType: ObjectTypeWithPropertyTokens\n readonly properties: Record<string, unknown>\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n readonly path: string\n}): EditObjectProperties {\n const { objectType, properties, valueTypesById, path } = params\n assertKnownProperties(objectType, properties)\n assertNoTelemetryProperties(objectType.properties, properties, path)\n validateObjectProperties(objectType, properties, valueTypesById)\n assertValidFileRefs(properties, objectType.id)\n return normalizeObjectProperties(objectType.properties, properties, valueTypesById, path)\n}\n\nexport function normalizeLinkEditProperties(params: {\n readonly sourceObjectTypeId: string\n readonly linkId: string\n readonly linkDefinition: ObjectLink\n readonly properties: Readonly<Record<string, unknown>>\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): EditObjectProperties {\n const { sourceObjectTypeId, linkId, linkDefinition, properties, valueTypesById } = params\n const linkProperties = linkDefinition.properties ?? []\n\n if (linkProperties.length === 0 && Object.keys(properties).length > 0) {\n throw new OntologyValidationError(\n `[Sixb] Link ${sourceObjectTypeId}.${linkId} does not define link properties`\n )\n }\n\n const knownPropertyIds = new Set(linkProperties.map((property) => property.id))\n for (const propertyId of Object.keys(properties)) {\n if (!knownPropertyIds.has(propertyId)) {\n throw new OntologyValidationError(\n `[Sixb] Unknown link property '${propertyId}' for link '${sourceObjectTypeId}.${linkId}'`\n )\n }\n }\n\n assertNoTelemetryProperties(linkProperties, properties, `${sourceObjectTypeId}.${linkId}`)\n\n for (const [propertyId, value] of Object.entries(properties)) {\n const property = linkProperties.find((candidate) => candidate.id === propertyId)\n if (!property) continue\n validatePropertyValue(\n property,\n value,\n `${sourceObjectTypeId}.${linkId}.${propertyId}`,\n valueTypesById\n )\n }\n assertValidFileRefs(properties, `${sourceObjectTypeId}.${linkId}`)\n\n return normalizeObjectProperties(\n linkProperties,\n properties,\n valueTypesById,\n `${sourceObjectTypeId}.${linkId}`\n )\n}\n\nexport function getPrimaryProperty(objectType: ObjectTypeWithPropertyTokens): Property {\n const primaryProperty = objectType.properties.find((property) => property.primary)\n if (!primaryProperty) {\n throw new OntologyValidationError(\n `[Sixb] Object type '${objectType.id}' has no primary property`\n )\n }\n return primaryProperty\n}\n\nexport function assertPrimaryPropertyNotUpdated(\n objectType: ObjectTypeWithPropertyTokens,\n properties: EditObjectProperties\n): void {\n const primaryProperty = getPrimaryProperty(objectType)\n if (Object.hasOwn(properties, primaryProperty.id)) {\n throw new EditBatchError(\n `[Sixb] EditBatch cannot update primary property '${objectType.id}.${primaryProperty.id}'.`\n )\n }\n}\n\n/** Validates `unset`/`reset` targets: known, non-primary, and not telemetry-backed. */\nexport function normalizeEditablePropertyIds(params: {\n readonly objectType: ObjectTypeWithPropertyTokens\n readonly propertyIds: readonly unknown[]\n readonly operation: \"unset\" | \"reset\"\n}): readonly string[] {\n const { objectType, propertyIds, operation } = params\n const primaryProperty = getPrimaryProperty(objectType)\n const normalized: string[] = []\n const seen = new Set<string>()\n\n for (const propertyId of propertyIds) {\n if (typeof propertyId !== \"string\" || !propertyId.trim()) {\n throw new EditBatchError(\n `[Sixb] EditBatch ${objectType.id}.${operation} property id must be a non-empty string.`\n )\n }\n const property = objectType.properties.find((candidate) => candidate.id === propertyId)\n if (!property) {\n throw new EditBatchError(\n `[Sixb] EditBatch ${operation} references unknown property '${objectType.id}.${propertyId}'.`\n )\n }\n if (property.id === primaryProperty.id) {\n throw new EditBatchError(\n `[Sixb] EditBatch cannot ${operation} primary property '${objectType.id}.${propertyId}'.`\n )\n }\n if (property.mode === \"telemetry\") {\n throw new EditBatchError(\n `[Sixb] EditBatch cannot ${operation} telemetry property '${objectType.id}.${propertyId}'.`\n )\n }\n if (seen.has(propertyId)) continue\n seen.add(propertyId)\n normalized.push(propertyId)\n }\n\n if (normalized.length === 0) {\n throw new EditBatchError(\n `[Sixb] EditBatch ${objectType.id}.${operation} requires at least one property id.`\n )\n }\n return normalized\n}\n\nfunction assertNoTelemetryProperties(\n definitions: readonly Property[],\n properties: Readonly<Record<string, unknown>>,\n path: string\n): void {\n for (const propertyId of Object.keys(properties)) {\n const property = definitions.find((candidate) => candidate.id === propertyId)\n if (property?.mode === \"telemetry\") {\n throw new EditBatchError(\n `[Sixb] EditBatch cannot edit telemetry property '${path}.${propertyId}' in the MVP.`\n )\n }\n }\n}\n"
7
- ],
8
- "mappings": "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",
9
- "debugId": "C332D402574FA7A464756E2164756E21",
10
- "names": []
11
- }
@@ -1,12 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/queues/errors.ts", "../src/queues/in-memory.ts", "../src/queues/indexed-heap.ts"],
4
- "sourcesContent": [
5
- "/**\n * Error for queue invariants and invalid queue operations.\n */\nexport class QueueError extends Error {\n readonly name = \"QueueError\"\n}\n",
6
- "import { randomUUID } from \"node:crypto\"\nimport type { SixbErrorCode } from \"../errors/types\"\nimport { QueueError } from \"./errors\"\nimport { IndexedHeap } from \"./indexed-heap\"\nimport type {\n ActionQueueJobFailureCode,\n ActionRunRequestedQueueJob,\n AgentQueueJob,\n AgentQueueJobFailureCode,\n ClaimedQueueJob,\n NewQueueJob,\n PipelineQueueJobFailureCode,\n PipelineRunRequestedQueueJob,\n ProjectionQueueJobFailureCode,\n ProjectionRunRequestedQueueJob,\n Queue,\n QueueJob,\n QueueJobFailure,\n Queues,\n SubagentQueueJob,\n SyncQueueJobFailureCode,\n SyncRunRequestedQueueJob,\n VectorIndexingQueueJob,\n WorkflowQueueJob,\n WorkflowQueueJobFailureCode,\n} from \"./types\"\n\ntype QueueRecordState = \"queued\" | \"completed\" | \"failed\"\n\ninterface QueueRecord<TQueueJob extends QueueJob = QueueJob> {\n readonly sequence: number\n readonly queueId: string\n job: TQueueJob\n availableAtMs: number\n readonly createdAtMs: number\n leaseExpiryMs: number | null\n // A leased job stays \"queued\" until a worker completes or fails it.\n state: QueueRecordState\n failure: QueueJobFailure | null\n leaseId: string | null\n claimedAt: string | null\n leaseExpiresAt: string | null\n}\n\nfunction assertNonEmpty(value: string, fieldName: string): void {\n if (value.trim().length === 0) {\n throw new QueueError(`[Sixb] Queue ${fieldName} must not be empty`)\n }\n}\n\nfunction parseTimestamp(value: string, fieldName: string): number {\n const timestamp = Date.parse(value)\n\n if (Number.isNaN(timestamp)) {\n throw new QueueError(`[Sixb] Queue ${fieldName} must be a valid timestamp`)\n }\n\n return timestamp\n}\n\nfunction assertPositiveNumber(value: number, fieldName: string): void {\n if (!Number.isFinite(value) || value <= 0) {\n throw new QueueError(`[Sixb] Queue ${fieldName} must be greater than 0`)\n }\n}\n\nfunction clearLease(record: QueueRecord): void {\n record.leaseId = null\n record.claimedAt = null\n record.leaseExpiresAt = null\n record.leaseExpiryMs = null\n}\n\n// Best-effort ordering is part of the contract; this keeps the in-memory provider deterministic.\nfunction compareQueueRecords(left: QueueRecord, right: QueueRecord): number {\n const availableDifference = left.availableAtMs - right.availableAtMs\n if (availableDifference !== 0) return availableDifference\n const createdDifference = left.createdAtMs - right.createdAtMs\n if (createdDifference !== 0) return createdDifference\n\n return left.sequence - right.sequence\n}\n\nfunction createQueueJob<TQueueJob extends QueueJob>(\n projectId: string,\n newJob: NewQueueJob<TQueueJob>\n): TQueueJob {\n const createdAt = new Date().toISOString()\n const availableAt = newJob.availableAt ?? createdAt\n parseTimestamp(availableAt, \"availableAt\")\n\n return {\n id: newJob.id ?? randomUUID(),\n projectId,\n createdAt,\n availableAt,\n attempt: 0,\n metadata: newJob.metadata ? structuredClone(newJob.metadata) : undefined,\n type: newJob.type,\n payload: structuredClone(newJob.payload),\n } as TQueueJob\n}\n\nfunction leaseExpiresAtMs(record: QueueRecord): number | null {\n return record.leaseExpiryMs\n}\n\nfunction eligibleAt(record: QueueRecord): number {\n return Math.max(record.availableAtMs, record.leaseExpiryMs ?? -Infinity)\n}\n\n// Largest delay `setTimeout` accepts; a waiting claim that wakes early just waits again.\nconst MAX_TIMER_DELAY_MS = 2_147_483_647\n\ninterface QueueLane {\n // Terminal records remain here for caller-id deduplication, never in the delivery indexes.\n readonly records: Map<string, QueueRecord>\n readonly ready: IndexedHeap<QueueRecord>\n readonly waiting: IndexedHeap<QueueRecord>\n /** Wakes claims waiting on this lane. */\n readonly waiters: Set<() => void>\n}\n\nfunction toClaimedQueueJob<TQueueJob extends QueueJob>(\n record: QueueRecord<TQueueJob>\n): ClaimedQueueJob<TQueueJob> {\n if (!record.leaseId || !record.claimedAt || !record.leaseExpiresAt) {\n throw new QueueError(`[Sixb] Queue job '${record.job.id}' is not currently leased`)\n }\n\n return {\n leaseId: record.leaseId,\n claimedAt: record.claimedAt,\n leaseExpiresAt: record.leaseExpiresAt,\n job: structuredClone(record.job),\n }\n}\n\nclass InMemoryQueueStore {\n private readonly projects = new Map<string, Map<string, QueueLane>>()\n private nextSequence = 1\n\n add<TQueueJob extends QueueJob>(projectId: string, queueId: string, job: TQueueJob): void {\n const lane = this.lane(projectId, queueId)\n const record: QueueRecord = {\n sequence: this.nextSequence++,\n queueId,\n job,\n availableAtMs: parseTimestamp(job.availableAt, \"job.availableAt\"),\n createdAtMs: parseTimestamp(job.createdAt, \"job.createdAt\"),\n leaseExpiryMs: null,\n state: \"queued\",\n failure: null,\n leaseId: null,\n claimedAt: null,\n leaseExpiresAt: null,\n }\n lane.records.set(job.id, record)\n this.schedule(projectId, record, Date.now())\n }\n\n find<TQueueJob extends QueueJob>(\n projectId: string,\n queueId: string,\n jobId: string\n ): QueueRecord<TQueueJob> | null {\n return (this.projects.get(projectId)?.get(queueId)?.records.get(jobId) ??\n null) as QueueRecord<TQueueJob> | null\n }\n\n schedule(projectId: string, record: QueueRecord, now: number): void {\n const lane = this.lane(projectId, record.queueId)\n if (record.state !== \"queued\") {\n lane.ready.delete(record)\n lane.waiting.delete(record)\n } else if (eligibleAt(record) <= now) {\n lane.waiting.delete(record)\n lane.ready.set(record)\n } else {\n lane.ready.delete(record)\n lane.waiting.set(record)\n }\n // Any change can make a job claimable or move the next due time; waiters look again.\n for (const wake of lane.waiters) wake()\n }\n\n /** Resolves when the lane changes, its next delayed job or lease comes due, or `signal` aborts. */\n waitForWork(projectId: string, queueId: string, signal: AbortSignal): Promise<void> {\n const lane = this.lane(projectId, queueId)\n const next = lane.waiting.peek()\n const dueInMs = next ? eligibleAt(next) - Date.now() : MAX_TIMER_DELAY_MS\n return new Promise((resolve) => {\n // Always armed: like a blocking read on a socket, a waiting claim keeps its process alive.\n const timer = setTimeout(wake, Math.min(dueInMs, MAX_TIMER_DELAY_MS))\n function wake(): void {\n clearTimeout(timer)\n lane.waiters.delete(wake)\n signal.removeEventListener(\"abort\", wake)\n resolve()\n }\n lane.waiters.add(wake)\n signal.addEventListener(\"abort\", wake, { once: true })\n })\n }\n\n takeReady<TQueueJob extends QueueJob>(\n projectId: string,\n queueId: string,\n now: number,\n limit: number\n ): QueueRecord<TQueueJob>[] {\n const lane = this.projects.get(projectId)?.get(queueId)\n if (!lane) return []\n // Wake delayed jobs and expired leases, then order all ready jobs by the original contract.\n // A lease expiry controls eligibility, not the priority of a redelivered job.\n while (lane.waiting.peek() && eligibleAt(lane.waiting.peek()!) <= now) {\n lane.ready.set(lane.waiting.pop()!)\n }\n const selected: QueueRecord[] = []\n while (selected.length < limit) {\n const record = lane.ready.peek()\n if (!record || record.availableAtMs > now) break\n lane.ready.pop()\n // A backwards wall-clock adjustment can make a previously expired lease live again.\n if (eligibleAt(record) > now) lane.waiting.set(record)\n else selected.push(record)\n }\n return selected as QueueRecord<TQueueJob>[]\n }\n\n private lane(projectId: string, queueId: string): QueueLane {\n let queues = this.projects.get(projectId)\n if (!queues) {\n queues = new Map()\n this.projects.set(projectId, queues)\n }\n let lane = queues.get(queueId)\n if (!lane) {\n lane = {\n records: new Map(),\n ready: new IndexedHeap(compareQueueRecords),\n waiting: new IndexedHeap(\n (left, right) => eligibleAt(left) - eligibleAt(right) || left.sequence - right.sequence\n ),\n waiters: new Set(),\n }\n queues.set(queueId, lane)\n }\n return lane\n }\n}\n\nclass InMemoryQueue<TQueueJob extends QueueJob, TFailureCode extends SixbErrorCode>\n implements Queue<TQueueJob, TFailureCode>\n{\n constructor(\n private readonly store: InMemoryQueueStore,\n private readonly queueId: string\n ) {\n assertNonEmpty(queueId, \"queueId\")\n }\n\n async enqueue(params: {\n projectId: string\n jobs: readonly NewQueueJob<TQueueJob>[]\n }): Promise<readonly TQueueJob[]> {\n assertNonEmpty(params.projectId, \"projectId\")\n\n if (params.jobs.length === 0) {\n return []\n }\n\n const createdJobs = params.jobs.map((job) => {\n if (job.id !== undefined) assertNonEmpty(job.id, \"job.id\")\n const existing = job.id\n ? this.store.find<TQueueJob>(params.projectId, this.queueId, job.id)\n : null\n if (existing) return existing.job\n\n const created = createQueueJob(params.projectId, job)\n this.store.add(params.projectId, this.queueId, created)\n return created\n })\n\n return createdJobs.map((job) => structuredClone(job))\n }\n\n async claim(params: {\n projectId: string\n workerId: string\n limit?: number\n leaseMs?: number\n signal?: AbortSignal\n }): Promise<readonly ClaimedQueueJob<TQueueJob>[]> {\n assertNonEmpty(params.projectId, \"projectId\")\n assertNonEmpty(params.workerId, \"workerId\")\n\n const limit = Math.trunc(params.limit ?? 1)\n if (!(limit > 0)) {\n return []\n }\n\n const leaseMs = params.leaseMs ?? 30_000\n assertPositiveNumber(leaseMs, \"leaseMs\")\n\n for (;;) {\n if (params.signal?.aborted) return []\n const now = Date.now()\n const claimedAt = new Date(now).toISOString()\n // Validate before removing candidates, and cache the same millisecond precision we return.\n const leaseExpiry = new Date(now + leaseMs)\n const leaseExpiresAt = leaseExpiry.toISOString()\n const claimable = this.store.takeReady<TQueueJob>(params.projectId, this.queueId, now, limit)\n if (claimable.length === 0 && params.signal) {\n await this.store.waitForWork(params.projectId, this.queueId, params.signal)\n continue\n }\n\n return claimable.map((record) => {\n // Attempts count claims so redelivery after lease expiry or retry is visible to workers.\n record.job = {\n ...record.job,\n attempt: record.job.attempt + 1,\n }\n record.leaseId = randomUUID()\n record.claimedAt = claimedAt\n record.leaseExpiresAt = leaseExpiresAt\n record.leaseExpiryMs = leaseExpiry.getTime()\n this.store.schedule(params.projectId, record, now)\n\n return toClaimedQueueJob(record)\n })\n }\n }\n\n async complete(params: { projectId: string; jobId: string; leaseId: string }): Promise<void> {\n const record = this.requireActiveLease(params)\n record.state = \"completed\"\n clearLease(record)\n this.store.schedule(params.projectId, record, Date.now())\n }\n\n async retry(params: {\n projectId: string\n jobId: string\n leaseId: string\n availableAt?: string\n }): Promise<void> {\n const record = this.requireActiveLease(params)\n const availableAt = params.availableAt ?? new Date().toISOString()\n const availableAtMs = parseTimestamp(availableAt, \"availableAt\")\n\n record.availableAtMs = availableAtMs\n record.job = {\n ...record.job,\n availableAt,\n }\n clearLease(record)\n this.store.schedule(params.projectId, record, Date.now())\n }\n\n async fail(params: {\n projectId: string\n jobId: string\n leaseId: string\n failure: QueueJobFailure<TFailureCode>\n }): Promise<void> {\n const record = this.requireActiveLease(params)\n record.state = \"failed\"\n record.failure = structuredClone(params.failure)\n clearLease(record)\n this.store.schedule(params.projectId, record, Date.now())\n }\n\n async renewLease(params: {\n projectId: string\n jobId: string\n leaseId: string\n leaseMs: number\n }): Promise<ClaimedQueueJob<TQueueJob> | null> {\n assertPositiveNumber(params.leaseMs, \"leaseMs\")\n\n const record = this.store.find<TQueueJob>(params.projectId, this.queueId, params.jobId)\n if (!record || record.state !== \"queued\") {\n return null\n }\n\n const now = Date.now()\n const expiresAt = leaseExpiresAtMs(record)\n if (record.leaseId !== params.leaseId || expiresAt === null) {\n return null\n }\n\n if (expiresAt <= now) {\n return null\n }\n\n const leaseExpiry = new Date(now + params.leaseMs)\n record.leaseExpiresAt = leaseExpiry.toISOString()\n record.leaseExpiryMs = leaseExpiry.getTime()\n this.store.schedule(params.projectId, record, now)\n return toClaimedQueueJob(record)\n }\n\n private requireActiveLease(params: {\n projectId: string\n jobId: string\n leaseId: string\n }): QueueRecord<TQueueJob> {\n assertNonEmpty(params.projectId, \"projectId\")\n assertNonEmpty(params.jobId, \"jobId\")\n assertNonEmpty(params.leaseId, \"leaseId\")\n\n const record = this.store.find<TQueueJob>(params.projectId, this.queueId, params.jobId)\n\n if (!record) {\n throw new QueueError(`[Sixb] Unknown queue job '${params.jobId}'`)\n }\n\n if (record.state !== \"queued\") {\n throw new QueueError(`[Sixb] Queue job '${params.jobId}' is no longer active`)\n }\n\n if (record.leaseId !== params.leaseId || !record.leaseExpiresAt) {\n throw new QueueError(`[Sixb] Lease mismatch for queue job '${params.jobId}'`)\n }\n\n const expiresAt = leaseExpiresAtMs(record)\n if (expiresAt === null || expiresAt <= Date.now()) {\n throw new QueueError(`[Sixb] Lease for queue job '${params.jobId}' has expired`)\n }\n\n return record\n }\n}\n\nexport class InMemoryQueues implements Queues {\n readonly scope = \"process\" as const\n private readonly store = new InMemoryQueueStore()\n\n readonly vectorIndexing = new InMemoryQueue<\n VectorIndexingQueueJob,\n \"internal.unexpected\" | \"runtime.cancelled\"\n >(this.store, \"vector.indexing\")\n readonly syncRuns = new InMemoryQueue<SyncRunRequestedQueueJob, SyncQueueJobFailureCode>(\n this.store,\n \"sync.runs\"\n )\n readonly pipelines = new InMemoryQueue<PipelineRunRequestedQueueJob, PipelineQueueJobFailureCode>(\n this.store,\n \"pipeline.runs\"\n )\n readonly projections = new InMemoryQueue<\n ProjectionRunRequestedQueueJob,\n ProjectionQueueJobFailureCode\n >(this.store, \"projection.runs\")\n readonly workflows = new InMemoryQueue<WorkflowQueueJob, WorkflowQueueJobFailureCode>(\n this.store,\n \"workflow.runs\"\n )\n readonly actions = new InMemoryQueue<ActionRunRequestedQueueJob, ActionQueueJobFailureCode>(\n this.store,\n \"action.runs\"\n )\n readonly agents = new InMemoryQueue<AgentQueueJob, AgentQueueJobFailureCode>(\n this.store,\n \"agent.runs\"\n )\n readonly agentChildren = new InMemoryQueue<SubagentQueueJob, AgentQueueJobFailureCode>(\n this.store,\n \"agent.children\"\n )\n\n /** Nothing to reach: the store is a field of this object. */\n health(): Promise<void> {\n return Promise.resolve()\n }\n}\n",
7
- "/** Internal mutable priority index. Updating or removing an entry never leaves stale copies. */\nexport class IndexedHeap<T> {\n private readonly items: T[] = []\n private readonly positions = new Map<T, number>()\n\n constructor(private readonly compare: (left: T, right: T) => number) {}\n\n peek(): T | undefined {\n return this.items[0]\n }\n\n pop(): T | undefined {\n const first = this.peek()\n if (first !== undefined) this.delete(first)\n return first\n }\n\n set(item: T): void {\n const index = this.positions.get(item)\n if (index === undefined) {\n this.positions.set(item, this.items.length)\n this.items.push(item)\n this.up(this.items.length - 1)\n } else {\n this.down(this.up(index))\n }\n }\n\n delete(item: T): void {\n const index = this.positions.get(item)\n if (index === undefined) return\n const last = this.items.pop()!\n this.positions.delete(item)\n if (index === this.items.length) return\n this.items[index] = last\n this.positions.set(last, index)\n this.down(this.up(index))\n }\n\n private up(start: number): number {\n let index = start\n while (index > 0) {\n const parent = Math.floor((index - 1) / 2)\n if (this.compare(this.items[parent]!, this.items[index]!) <= 0) break\n this.swap(parent, index)\n index = parent\n }\n return index\n }\n\n private down(start: number): void {\n let index = start\n while (index * 2 + 1 < this.items.length) {\n const left = index * 2 + 1\n const right = left + 1\n const child =\n right < this.items.length && this.compare(this.items[right]!, this.items[left]!) < 0\n ? right\n : left\n if (this.compare(this.items[index]!, this.items[child]!) <= 0) break\n this.swap(index, child)\n index = child\n }\n }\n\n private swap(left: number, right: number): void {\n const a = this.items[left]!\n const b = this.items[right]!\n this.items[left] = b\n this.items[right] = a\n this.positions.set(a, right)\n this.positions.set(b, left)\n }\n}\n"
8
- ],
9
- "mappings": "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",
10
- "debugId": "5617F92D0BE33D5564756E2164756E21",
11
- "names": []
12
- }
@@ -1,51 +0,0 @@
1
- // @bun
2
- // src/runtime/ontology-mutations.ts
3
- var ontologyMutationRuntimeKey = Symbol("sixb.ontologyMutationRuntime");
4
- function registerOntologyMutationRuntime2(owner, runtime) {
5
- const registered = owner[ontologyMutationRuntimeKey];
6
- if (registered && registered !== runtime) {
7
- throw new Error("[Sixb] Ontology mutation runtime is already registered for this owner.");
8
- }
9
- Object.defineProperty(owner, ontologyMutationRuntimeKey, {
10
- configurable: false,
11
- enumerable: true,
12
- value: runtime,
13
- writable: false
14
- });
15
- }
16
- function getOntologyMutationRuntime2(owner) {
17
- const runtime = owner[ontologyMutationRuntimeKey];
18
- if (runtime)
19
- return runtime;
20
- throw new Error("[Sixb] Ontology mutation runtime is not registered for this runtime context.");
21
- }
22
- function shareOntologyMutationRuntime2(source, target) {
23
- registerOntologyMutationRuntime2(target, getOntologyMutationRuntime2(source));
24
- }
25
- function createOntologyMutationRuntime2(input) {
26
- const runtime = {
27
- getProjectionSource: (source) => input.materializer.projections.getActive(source),
28
- commitEdits: (command) => commitAndNotify(() => input.materializer.edits.commit(command), input.notifyCommittedFacts),
29
- replaceProjection: (command) => commitAndNotify(() => input.materializer.projections.replace(command), input.notifyCommittedFacts),
30
- finishProjection: (command) => input.materializer.projections.finishRun(command),
31
- appendTelemetry: (command) => commitAndNotify(() => input.materializer.telemetry.append(command), input.notifyCommittedFacts)
32
- };
33
- return Object.freeze(runtime);
34
- }
35
- async function commitAndNotify(commit, notify) {
36
- const result = await commit();
37
- if (result.eventCount > 0)
38
- notifyWithoutAffectingCommit(notify);
39
- return result;
40
- }
41
- function notifyWithoutAffectingCommit(notify) {
42
- try {
43
- notify();
44
- } catch (error) {
45
- console.error("[Sixb] Failed to wake the ontology outbox dispatcher:", error);
46
- }
47
- }
48
-
49
- export { registerOntologyMutationRuntime2, getOntologyMutationRuntime2, shareOntologyMutationRuntime2, createOntologyMutationRuntime2 };
50
-
51
- //# debugId=F32DD2FCEBE55F1A64756E2164756E21
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/runtime/ontology-mutations.ts"],
4
- "sourcesContent": [
5
- "import type {\n EditCommitResult,\n OntologyEditCommit,\n ProjectionCommitResult,\n ProjectionRunFinishInput,\n ProjectionSourceRef,\n ProjectionSourceReplacement,\n TelemetryAppend,\n TelemetryCommitResult,\n} from \"../materialization/model\"\nimport type { BoundOntologyMaterializer } from \"../materializer\"\nimport type { OntologySourceRecord } from \"../storage/ontology\"\n\nexport interface OntologyMutationRuntime {\n getProjectionSource?(source: ProjectionSourceRef): Promise<OntologySourceRecord | null>\n commitEdits(input: OntologyEditCommit): Promise<EditCommitResult>\n replaceProjection(input: ProjectionSourceReplacement): Promise<ProjectionCommitResult>\n finishProjection(input: ProjectionRunFinishInput): Promise<void>\n appendTelemetry(input: TelemetryAppend): Promise<TelemetryCommitResult>\n}\n\nconst ontologyMutationRuntimeKey: unique symbol = Symbol(\"sixb.ontologyMutationRuntime\")\n\ninterface OntologyMutationRuntimeOwner {\n readonly [ontologyMutationRuntimeKey]?: OntologyMutationRuntime\n}\n\nexport function registerOntologyMutationRuntime(\n owner: object,\n runtime: OntologyMutationRuntime\n): void {\n const registered = (owner as OntologyMutationRuntimeOwner)[ontologyMutationRuntimeKey]\n if (registered && registered !== runtime) {\n throw new Error(\"[Sixb] Ontology mutation runtime is already registered for this owner.\")\n }\n Object.defineProperty(owner, ontologyMutationRuntimeKey, {\n configurable: false,\n enumerable: true,\n value: runtime,\n writable: false,\n })\n}\n\nexport function getOntologyMutationRuntime(owner: object): OntologyMutationRuntime {\n const runtime = (owner as OntologyMutationRuntimeOwner)[ontologyMutationRuntimeKey]\n if (runtime) return runtime\n throw new Error(\"[Sixb] Ontology mutation runtime is not registered for this runtime context.\")\n}\n\n/** Copies the opaque capability when an internal runtime context is reconstructed. */\nexport function shareOntologyMutationRuntime(source: object, target: object): void {\n registerOntologyMutationRuntime(target, getOntologyMutationRuntime(source))\n}\n\n/** Adapt an already-bound Materializer to the internal ontology mutation runtime. */\nexport function createOntologyMutationRuntime(input: {\n readonly materializer: BoundOntologyMaterializer\n readonly notifyCommittedFacts: () => void\n}): OntologyMutationRuntime {\n const runtime: OntologyMutationRuntime = {\n getProjectionSource: (source) => input.materializer.projections.getActive(source),\n commitEdits: (command) =>\n commitAndNotify(() => input.materializer.edits.commit(command), input.notifyCommittedFacts),\n replaceProjection: (command) =>\n commitAndNotify(\n () => input.materializer.projections.replace(command),\n input.notifyCommittedFacts\n ),\n finishProjection: (command) => input.materializer.projections.finishRun(command),\n appendTelemetry: (command) =>\n commitAndNotify(\n () => input.materializer.telemetry.append(command),\n input.notifyCommittedFacts\n ),\n }\n return Object.freeze(runtime)\n}\n\nasync function commitAndNotify<TResult extends { readonly eventCount: number }>(\n commit: () => Promise<TResult>,\n notify: () => void\n): Promise<TResult> {\n const result = await commit()\n if (result.eventCount > 0) notifyWithoutAffectingCommit(notify)\n return result\n}\n\nfunction notifyWithoutAffectingCommit(notify: () => void): void {\n try {\n notify()\n } catch (error) {\n // The ontology commit is already durable. A wake-up failure must never turn it into an apparent\n // mutation failure; API-hosted ontology maintenance remains the correctness fallback.\n console.error(\"[Sixb] Failed to wake the ontology outbox dispatcher:\", error)\n }\n}\n"
6
- ],
7
- "mappings": ";;AAqBA,IAAM,6BAA4C,OAAO,8BAA8B;AAMhF,SAAS,gCAA+B,CAC7C,OACA,SACM;AAAA,EACN,MAAM,aAAc,MAAuC;AAAA,EAC3D,IAAI,cAAc,eAAe,SAAS;AAAA,IACxC,MAAM,IAAI,MAAM,wEAAwE;AAAA,EAC1F;AAAA,EACA,OAAO,eAAe,OAAO,4BAA4B;AAAA,IACvD,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,UAAU;AAAA,EACZ,CAAC;AAAA;AAGI,SAAS,2BAA0B,CAAC,OAAwC;AAAA,EACjF,MAAM,UAAW,MAAuC;AAAA,EACxD,IAAI;AAAA,IAAS,OAAO;AAAA,EACpB,MAAM,IAAI,MAAM,8EAA8E;AAAA;AAIzF,SAAS,6BAA4B,CAAC,QAAgB,QAAsB;AAAA,EACjF,iCAAgC,QAAQ,4BAA2B,MAAM,CAAC;AAAA;AAIrE,SAAS,8BAA6B,CAAC,OAGlB;AAAA,EAC1B,MAAM,UAAmC;AAAA,IACvC,qBAAqB,CAAC,WAAW,MAAM,aAAa,YAAY,UAAU,MAAM;AAAA,IAChF,aAAa,CAAC,YACZ,gBAAgB,MAAM,MAAM,aAAa,MAAM,OAAO,OAAO,GAAG,MAAM,oBAAoB;AAAA,IAC5F,mBAAmB,CAAC,YAClB,gBACE,MAAM,MAAM,aAAa,YAAY,QAAQ,OAAO,GACpD,MAAM,oBACR;AAAA,IACF,kBAAkB,CAAC,YAAY,MAAM,aAAa,YAAY,UAAU,OAAO;AAAA,IAC/E,iBAAiB,CAAC,YAChB,gBACE,MAAM,MAAM,aAAa,UAAU,OAAO,OAAO,GACjD,MAAM,oBACR;AAAA,EACJ;AAAA,EACA,OAAO,OAAO,OAAO,OAAO;AAAA;AAG9B,eAAe,eAAgE,CAC7E,QACA,QACkB;AAAA,EAClB,MAAM,SAAS,MAAM,OAAO;AAAA,EAC5B,IAAI,OAAO,aAAa;AAAA,IAAG,6BAA6B,MAAM;AAAA,EAC9D,OAAO;AAAA;AAGT,SAAS,4BAA4B,CAAC,QAA0B;AAAA,EAC9D,IAAI;AAAA,IACF,OAAO;AAAA,IACP,OAAO,OAAO;AAAA,IAGd,QAAQ,MAAM,yDAAyD,KAAK;AAAA;AAAA;",
8
- "debugId": "F32DD2FCEBE55F1A64756E2164756E21",
9
- "names": []
10
- }