@sixb/core 0.1.18 → 0.1.20

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 (523) 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/cookies.d.ts +2 -4
  51. package/dist/auth/cookies.d.ts.map +1 -1
  52. package/dist/auth/index.d.ts +0 -2
  53. package/dist/auth/index.d.ts.map +1 -1
  54. package/dist/auth/index.js +15 -21
  55. package/dist/auth/index.js.map +1 -1
  56. package/dist/auth/runtime.d.ts +8 -10
  57. package/dist/auth/runtime.d.ts.map +1 -1
  58. package/dist/auth/session-cache.d.ts +1 -5
  59. package/dist/auth/session-cache.d.ts.map +1 -1
  60. package/dist/auth/strategy.js +1 -1
  61. package/dist/auth/types.d.ts +4 -8
  62. package/dist/auth/types.d.ts.map +1 -1
  63. package/dist/auth/validation.d.ts +0 -1
  64. package/dist/auth/validation.d.ts.map +1 -1
  65. package/dist/authorization/decision.d.ts +0 -4
  66. package/dist/authorization/decision.d.ts.map +1 -1
  67. package/dist/authorization/event-visibility.d.ts.map +1 -1
  68. package/dist/authorization/grant-kinds.d.ts +6 -8
  69. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  70. package/dist/authorization/index.d.ts +0 -1
  71. package/dist/authorization/index.d.ts.map +1 -1
  72. package/dist/authorization/index.js +5 -9
  73. package/dist/authorization/index.js.map +1 -1
  74. package/dist/authorization/resolve.d.ts +1 -1
  75. package/dist/authorization/resolve.d.ts.map +1 -1
  76. package/dist/bootstrap/index.js +50 -53
  77. package/dist/bootstrap/index.js.map +2 -2
  78. package/dist/{chunk-vz3gc1tm.js → chunk-0rbyz4qy.js} +67 -69
  79. package/dist/{chunk-vz3gc1tm.js.map → chunk-0rbyz4qy.js.map} +4 -4
  80. package/dist/{chunk-rz53yb4v.js → chunk-0yh890a4.js} +1 -1
  81. package/dist/{chunk-vgk3hknm.js → chunk-1k89ecfr.js} +1 -1
  82. package/dist/{chunk-ny3xyvcn.js → chunk-1zq2p6g0.js} +3 -3
  83. package/dist/{chunk-dnmadg9k.js → chunk-3t2hgbgd.js} +2 -2
  84. package/dist/{chunk-k6hrnf35.js → chunk-4vyr1j8f.js} +51 -4
  85. package/dist/chunk-4vyr1j8f.js.map +11 -0
  86. package/dist/{chunk-22v5bpz3.js → chunk-5e43w60z.js} +1 -1
  87. package/dist/{chunk-de4z2bj6.js → chunk-5j58wjct.js} +17 -17
  88. package/dist/chunk-5j58wjct.js.map +18 -0
  89. package/dist/{chunk-fe52eczz.js → chunk-6c6sn0bh.js} +6352 -2127
  90. package/dist/chunk-6c6sn0bh.js.map +106 -0
  91. package/dist/{chunk-7hpdd6r9.js → chunk-6p49a5cq.js} +4 -4
  92. package/dist/{chunk-b9affek3.js → chunk-7n440zgt.js} +30 -30
  93. package/dist/{chunk-b9affek3.js.map → chunk-7n440zgt.js.map} +4 -4
  94. package/dist/{chunk-kkqwzy6h.js → chunk-7t429e3f.js} +1 -1
  95. package/dist/{chunk-6fsr7y93.js → chunk-8mx7qw3y.js} +14 -13
  96. package/dist/{chunk-6fsr7y93.js.map → chunk-8mx7qw3y.js.map} +4 -4
  97. package/dist/{chunk-kpx7jrmn.js → chunk-91mg3nj9.js} +59 -59
  98. package/dist/{chunk-kpx7jrmn.js.map → chunk-91mg3nj9.js.map} +5 -5
  99. package/dist/{chunk-ex496vct.js → chunk-9dmt152s.js} +1 -1
  100. package/dist/{chunk-48e3cn2d.js → chunk-9gyp8hg1.js} +2 -2
  101. package/dist/{chunk-ewqa58h9.js → chunk-9k93ah50.js} +4 -4
  102. package/dist/{chunk-ewqa58h9.js.map → chunk-9k93ah50.js.map} +1 -1
  103. package/dist/{chunk-zxawp1n2.js → chunk-9w055r5b.js} +1 -1
  104. package/dist/{chunk-4wn7bxxa.js → chunk-9ybhtmg4.js} +1 -1
  105. package/dist/{chunk-fc5zfxy1.js → chunk-a40ad1ft.js} +5 -13
  106. package/dist/chunk-a40ad1ft.js.map +10 -0
  107. package/dist/{chunk-y2aq6ag9.js → chunk-b38szspf.js} +5 -14
  108. package/dist/chunk-b38szspf.js.map +11 -0
  109. package/dist/{chunk-r2y23egw.js → chunk-bkpke1sg.js} +1 -10
  110. package/dist/chunk-bkpke1sg.js.map +10 -0
  111. package/dist/{chunk-htr6wjmv.js → chunk-bx9q3cwv.js} +22 -22
  112. package/dist/{chunk-htr6wjmv.js.map → chunk-bx9q3cwv.js.map} +1 -1
  113. package/dist/{chunk-vx2yp45y.js → chunk-c85m1hyj.js} +2 -2
  114. package/dist/{chunk-bs7sqkre.js → chunk-d09tj99x.js} +2 -2
  115. package/dist/{chunk-qkbx3tf6.js → chunk-d0bqz29d.js} +27 -47
  116. package/dist/chunk-d0bqz29d.js.map +23 -0
  117. package/dist/{chunk-zb77kjth.js → chunk-dk8tkk5f.js} +4 -4
  118. package/dist/{chunk-xt1zt7gv.js → chunk-es1gxsbf.js} +24 -15
  119. package/dist/chunk-es1gxsbf.js.map +13 -0
  120. package/dist/{chunk-vjcd8d27.js → chunk-fa02jy15.js} +1 -1
  121. package/dist/{chunk-za5yd58j.js → chunk-fkgc1wt8.js} +2 -2
  122. package/dist/{chunk-enpsx8k5.js → chunk-gsjm1wms.js} +16 -20
  123. package/dist/chunk-gsjm1wms.js.map +10 -0
  124. package/dist/{chunk-2jntasmh.js → chunk-hcbyfxbe.js} +25 -49
  125. package/dist/chunk-hcbyfxbe.js.map +12 -0
  126. package/dist/{chunk-p0dqwj3n.js → chunk-hjzdd750.js} +66 -47
  127. package/dist/{chunk-p0dqwj3n.js.map → chunk-hjzdd750.js.map} +4 -4
  128. package/dist/chunk-hkc3jct7.js.map +1 -1
  129. package/dist/{chunk-y05543x6.js → chunk-hvsb78a1.js} +4 -4
  130. package/dist/{chunk-y05543x6.js.map → chunk-hvsb78a1.js.map} +1 -1
  131. package/dist/{chunk-1b1f2d5f.js → chunk-k6q3n2sc.js} +9 -9
  132. package/dist/{chunk-1b1f2d5f.js.map → chunk-k6q3n2sc.js.map} +1 -1
  133. package/dist/{chunk-wr8qp979.js → chunk-m427qgq0.js} +9 -5
  134. package/dist/{chunk-wr8qp979.js.map → chunk-m427qgq0.js.map} +4 -3
  135. package/dist/{chunk-qq90g05n.js → chunk-n33z5bjw.js} +50 -240
  136. package/dist/{chunk-qq90g05n.js.map → chunk-n33z5bjw.js.map} +4 -4
  137. package/dist/{chunk-e1c18xjx.js → chunk-nq6gpjt7.js} +4 -45
  138. package/dist/{chunk-e1c18xjx.js.map → chunk-nq6gpjt7.js.map} +5 -5
  139. package/dist/{chunk-1hqwggsn.js → chunk-nzapm6p0.js} +1 -2
  140. package/dist/chunk-nzapm6p0.js.map +12 -0
  141. package/dist/{chunk-wt4szfec.js → chunk-pbcbn83d.js} +4 -4
  142. package/dist/{chunk-wt4szfec.js.map → chunk-pbcbn83d.js.map} +1 -1
  143. package/dist/{chunk-s4jhg8a3.js → chunk-ren4kg2j.js} +15 -15
  144. package/dist/{chunk-s4jhg8a3.js.map → chunk-ren4kg2j.js.map} +1 -1
  145. package/dist/{chunk-d0eb5yy6.js → chunk-rrzt8jdy.js} +5 -5
  146. package/dist/{chunk-d0eb5yy6.js.map → chunk-rrzt8jdy.js.map} +1 -1
  147. package/dist/{chunk-y9jmd7e5.js → chunk-s16apyk9.js} +102 -16
  148. package/dist/chunk-s16apyk9.js.map +16 -0
  149. package/dist/{chunk-6gmfggss.js → chunk-t7x8dmn0.js} +2 -2
  150. package/dist/{chunk-f1zxad2t.js → chunk-tg2cw67r.js} +6 -6
  151. package/dist/{chunk-f1zxad2t.js.map → chunk-tg2cw67r.js.map} +1 -1
  152. package/dist/{chunk-p844e0rn.js → chunk-tpn40322.js} +2 -2
  153. package/dist/{chunk-rt9p8m9t.js → chunk-v9xd5wzd.js} +1 -1
  154. package/dist/{chunk-6h5m9xjx.js → chunk-vpq4shxz.js} +49 -113
  155. package/dist/chunk-vpq4shxz.js.map +39 -0
  156. package/dist/{chunk-2vhg6ysa.js → chunk-vyf9kfqf.js} +1 -1
  157. package/dist/{chunk-bwjcehza.js → chunk-way52z4h.js} +1 -1
  158. package/dist/{chunk-qkvz64nd.js → chunk-x6m907x7.js} +3 -3
  159. package/dist/{chunk-yv9czyfr.js → chunk-xfs8x8m9.js} +5 -5
  160. package/dist/chunk-y0c4e6ex.js +16 -0
  161. package/dist/chunk-y0c4e6ex.js.map +10 -0
  162. package/dist/{chunk-v6xpd60t.js → chunk-yevzdx4y.js} +5 -5
  163. package/dist/{chunk-dfm066qg.js → chunk-yxd3nnqt.js} +2 -29
  164. package/dist/chunk-yxd3nnqt.js.map +11 -0
  165. package/dist/{chunk-70jmg2zx.js → chunk-yzwja0mj.js} +4 -19
  166. package/dist/{chunk-70jmg2zx.js.map → chunk-yzwja0mj.js.map} +3 -3
  167. package/dist/{chunk-qmnnhde6.js → chunk-z4m0yz8c.js} +1 -1
  168. package/dist/datasets/write.js +5 -5
  169. package/dist/deploy/index.d.ts +1 -1
  170. package/dist/deploy/index.d.ts.map +1 -1
  171. package/dist/deploy/internal.js +13 -10
  172. package/dist/deploy/internal.js.map +4 -4
  173. package/dist/deploy/services.d.ts +1 -2
  174. package/dist/deploy/services.d.ts.map +1 -1
  175. package/dist/deploy/types.d.ts +7 -7
  176. package/dist/deploy/types.d.ts.map +1 -1
  177. package/dist/deploy/validation.d.ts.map +1 -1
  178. package/dist/edits/index.js +3 -5
  179. package/dist/edits/index.js.map +1 -1
  180. package/dist/error-reporting/internal.js +3 -3
  181. package/dist/error-reporting/types.d.ts +2 -9
  182. package/dist/error-reporting/types.d.ts.map +1 -1
  183. package/dist/errors/catalog.d.ts +12 -0
  184. package/dist/errors/catalog.d.ts.map +1 -1
  185. package/dist/errors/internal.js +1 -1
  186. package/dist/events/definitions.d.ts +0 -5
  187. package/dist/events/definitions.d.ts.map +1 -1
  188. package/dist/events/index.d.ts +3 -3
  189. package/dist/events/index.d.ts.map +1 -1
  190. package/dist/events/index.js +6 -8
  191. package/dist/events/index.js.map +1 -1
  192. package/dist/events/scope.d.ts +0 -1
  193. package/dist/events/scope.d.ts.map +1 -1
  194. package/dist/events/scope.js +1 -1
  195. package/dist/events/selectors/builder.d.ts +1 -8
  196. package/dist/events/selectors/builder.d.ts.map +1 -1
  197. package/dist/events/selectors/index.d.ts +2 -2
  198. package/dist/events/selectors/index.d.ts.map +1 -1
  199. package/dist/events/selectors/index.js +2 -2
  200. package/dist/events/selectors/predicate.d.ts.map +1 -1
  201. package/dist/events/selectors/types.d.ts +2 -33
  202. package/dist/events/selectors/types.d.ts.map +1 -1
  203. package/dist/events/types/index.d.ts +1 -12
  204. package/dist/events/types/index.d.ts.map +1 -1
  205. package/dist/execution/agent.js +41 -44
  206. package/dist/execution/agent.js.map +1 -1
  207. package/dist/execution/authorization.d.ts.map +1 -1
  208. package/dist/execution/primitive.js +60 -91
  209. package/dist/execution/primitive.js.map +3 -4
  210. package/dist/execution/request.js +40 -43
  211. package/dist/execution/request.js.map +2 -2
  212. package/dist/index.d.ts +8 -8
  213. package/dist/index.d.ts.map +1 -1
  214. package/dist/index.js +105 -127
  215. package/dist/index.js.map +1 -1
  216. package/dist/lake-storage/index.js +5 -5
  217. package/dist/materialization/index.js +3 -3
  218. package/dist/materialization/index.js.map +1 -1
  219. package/dist/materialization/model.d.ts +19 -6
  220. package/dist/materialization/model.d.ts.map +1 -1
  221. package/dist/materializer/index.js +31 -31
  222. package/dist/materializer/index.js.map +1 -1
  223. package/dist/materializer/shared/normalize.d.ts.map +1 -1
  224. package/dist/models/execution/index.js +21 -21
  225. package/dist/objects/action/errors.d.ts +0 -9
  226. package/dist/objects/action/errors.d.ts.map +1 -1
  227. package/dist/objects/action/index.d.ts +3 -3
  228. package/dist/objects/action/index.d.ts.map +1 -1
  229. package/dist/objects/action/request.d.ts +2 -8
  230. package/dist/objects/action/request.d.ts.map +1 -1
  231. package/dist/objects/execution.d.ts +0 -2
  232. package/dist/objects/execution.d.ts.map +1 -1
  233. package/dist/objects/index.js +44 -29
  234. package/dist/objects/index.js.map +1 -1
  235. package/dist/objects/query/index.js +29 -29
  236. package/dist/objects/query/index.js.map +1 -1
  237. package/dist/objects/sdk/object-handle.d.ts.map +1 -1
  238. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  239. package/dist/objects/service/index.d.ts +0 -1
  240. package/dist/objects/service/index.d.ts.map +1 -1
  241. package/dist/objects/vectors/handle.d.ts.map +1 -1
  242. package/dist/objects/vectors/profile.d.ts +5 -0
  243. package/dist/objects/vectors/profile.d.ts.map +1 -1
  244. package/dist/ontology/index.js +6 -6
  245. package/dist/ontology/index.js.map +1 -1
  246. package/dist/ontology/internal.js +2 -2
  247. package/dist/pipelines/index.js +28 -28
  248. package/dist/projections/internal.js +22 -22
  249. package/dist/projections/internal.js.map +1 -1
  250. package/dist/query.js +2 -2
  251. package/dist/queues/in-memory.d.ts +1 -2
  252. package/dist/queues/in-memory.d.ts.map +1 -1
  253. package/dist/queues/index.d.ts +1 -1
  254. package/dist/queues/index.d.ts.map +1 -1
  255. package/dist/queues/index.js +1 -1
  256. package/dist/queues/types.d.ts +0 -7
  257. package/dist/queues/types.d.ts.map +1 -1
  258. package/dist/runtime/host.d.ts.map +1 -1
  259. package/dist/runtime/internal.js +27 -28
  260. package/dist/runtime/internal.js.map +1 -1
  261. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  262. package/dist/runtime/types.d.ts +16 -36
  263. package/dist/runtime/types.d.ts.map +1 -1
  264. package/dist/sandboxes/index.js +5 -5
  265. package/dist/schedules/builders.d.ts.map +1 -1
  266. package/dist/schedules/index.js +3 -3
  267. package/dist/schedules/runtime.d.ts.map +1 -1
  268. package/dist/schedules/validation.d.ts +0 -1
  269. package/dist/schedules/validation.d.ts.map +1 -1
  270. package/dist/security/builders.d.ts.map +1 -1
  271. package/dist/security/every.d.ts +2 -5
  272. package/dist/security/every.d.ts.map +1 -1
  273. package/dist/security/grants.d.ts +2 -4
  274. package/dist/security/grants.d.ts.map +1 -1
  275. package/dist/security/index.d.ts +1 -2
  276. package/dist/security/index.d.ts.map +1 -1
  277. package/dist/security/membership-policies.d.ts.map +1 -1
  278. package/dist/security/public.d.ts +10 -0
  279. package/dist/security/public.d.ts.map +1 -0
  280. package/dist/security/public.js +10 -0
  281. package/dist/security/public.js.map +9 -0
  282. package/dist/security/registry.d.ts +0 -1
  283. package/dist/security/registry.d.ts.map +1 -1
  284. package/dist/security/types.d.ts +13 -18
  285. package/dist/security/types.d.ts.map +1 -1
  286. package/dist/security/validation.d.ts +0 -6
  287. package/dist/security/validation.d.ts.map +1 -1
  288. package/dist/shares/internal.js +20 -20
  289. package/dist/storage/action-runs/failure.js +2 -2
  290. package/dist/storage/action-runs/idempotency.d.ts +3 -4
  291. package/dist/storage/action-runs/idempotency.d.ts.map +1 -1
  292. package/dist/storage/action-runs/in-memory.d.ts +2 -9
  293. package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
  294. package/dist/storage/action-runs/index.d.ts +1 -3
  295. package/dist/storage/action-runs/index.d.ts.map +1 -1
  296. package/dist/storage/action-runs/provider.js +1 -1
  297. package/dist/storage/action-runs/record.d.ts +20 -0
  298. package/dist/storage/action-runs/record.d.ts.map +1 -0
  299. package/dist/storage/action-runs/types.d.ts +39 -68
  300. package/dist/storage/action-runs/types.d.ts.map +1 -1
  301. package/dist/storage/agents/types.d.ts +1 -1
  302. package/dist/storage/ai-limits/enforcement.js +2 -2
  303. package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
  304. package/dist/storage/auth/in-memory/magic-links.d.ts.map +1 -1
  305. package/dist/storage/auth/in-memory/oidc-attempts.d.ts.map +1 -1
  306. package/dist/storage/auth/in-memory/sessions.d.ts +0 -10
  307. package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -1
  308. package/dist/storage/auth/in-memory/shared.d.ts +1 -2
  309. package/dist/storage/auth/in-memory/shared.d.ts.map +1 -1
  310. package/dist/storage/auth/types.d.ts +1 -17
  311. package/dist/storage/auth/types.d.ts.map +1 -1
  312. package/dist/storage/connector-connections/provider.js +1 -1
  313. package/dist/storage/file-upload-sessions/provider.js +10 -10
  314. package/dist/storage/index.d.ts +2 -2
  315. package/dist/storage/index.d.ts.map +1 -1
  316. package/dist/storage/index.js +21 -22
  317. package/dist/storage/index.js.map +1 -1
  318. package/dist/storage/internal.d.ts +1 -1
  319. package/dist/storage/internal.d.ts.map +1 -1
  320. package/dist/storage/internal.js +9 -12
  321. package/dist/storage/internal.js.map +1 -1
  322. package/dist/storage/objects/execution-limits.d.ts +1 -1
  323. package/dist/storage/objects/execution-limits.d.ts.map +1 -1
  324. package/dist/storage/ontology/provider.js +2 -2
  325. package/dist/storage/projection-runs/provider.js +2 -2
  326. package/dist/storage/types.d.ts +1 -1
  327. package/dist/storage/types.d.ts.map +1 -1
  328. package/dist/storage/workflow-runs/provider.js +10 -10
  329. package/dist/syncs/index.js +29 -29
  330. package/dist/testing/action-execution.d.ts +34 -4
  331. package/dist/testing/action-execution.d.ts.map +1 -1
  332. package/dist/testing/action-run-storage-contract.d.ts +11 -0
  333. package/dist/testing/action-run-storage-contract.d.ts.map +1 -0
  334. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  335. package/dist/testing/index.d.ts +2 -1
  336. package/dist/testing/index.d.ts.map +1 -1
  337. package/dist/testing/index.js +3205 -2946
  338. package/dist/testing/index.js.map +9 -8
  339. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  340. package/dist/testing/queues-contract.d.ts.map +1 -1
  341. package/dist/webhooks/internal.js +26 -26
  342. package/dist/webhooks/internal.js.map +1 -1
  343. package/dist/workers/index.js +1 -1
  344. package/dist/workflows/index.js +48 -51
  345. package/dist/workflows/index.js.map +1 -1
  346. package/package.json +8 -8
  347. package/src/actions/commit-edits.ts +9 -37
  348. package/src/actions/errors.ts +0 -4
  349. package/src/actions/execution.ts +10 -10
  350. package/src/actions/index.ts +5 -24
  351. package/src/actions/request.ts +157 -295
  352. package/src/actions/run/context.ts +193 -0
  353. package/src/actions/run/edits-commit.ts +102 -0
  354. package/src/actions/run/effects.ts +105 -0
  355. package/src/actions/run/execute.ts +113 -0
  356. package/src/actions/run/executor.ts +314 -0
  357. package/src/actions/run/normalize.ts +142 -0
  358. package/src/actions/run/phase-types.ts +20 -0
  359. package/src/actions/run/phases.ts +150 -0
  360. package/src/actions/run/run-action.ts +170 -0
  361. package/src/actions/run/signals.ts +118 -0
  362. package/src/actions/run/state.ts +95 -0
  363. package/src/actions/run/types.ts +61 -0
  364. package/src/actions/run/writeback.ts +79 -0
  365. package/src/actions/run-authorization.ts +1 -1
  366. package/src/actions/run-persistence.ts +105 -0
  367. package/src/actions/types/context.ts +10 -0
  368. package/src/auth/cookies.ts +3 -20
  369. package/src/auth/index.ts +0 -6
  370. package/src/auth/runtime.ts +59 -76
  371. package/src/auth/session-cache.ts +2 -9
  372. package/src/auth/types.ts +4 -8
  373. package/src/auth/validation.ts +0 -2
  374. package/src/authorization/decision.ts +8 -23
  375. package/src/authorization/event-visibility.ts +0 -12
  376. package/src/authorization/grant-kinds.ts +20 -27
  377. package/src/authorization/index.ts +0 -1
  378. package/src/authorization/resolve.ts +10 -6
  379. package/src/deploy/index.ts +0 -1
  380. package/src/deploy/services.ts +2 -12
  381. package/src/deploy/types.ts +7 -8
  382. package/src/deploy/validation.ts +15 -7
  383. package/src/error-reporting/types.ts +2 -10
  384. package/src/errors/catalog.ts +13 -0
  385. package/src/events/definitions.ts +0 -17
  386. package/src/events/index.ts +0 -14
  387. package/src/events/scope.ts +0 -12
  388. package/src/events/selectors/builder.ts +0 -51
  389. package/src/events/selectors/index.ts +0 -6
  390. package/src/events/selectors/predicate.ts +0 -2
  391. package/src/events/selectors/types.ts +7 -65
  392. package/src/events/types/index.ts +0 -11
  393. package/src/execution/authorization.ts +11 -5
  394. package/src/index.ts +2 -33
  395. package/src/materialization/model.ts +26 -9
  396. package/src/materializer/README.md +6 -1
  397. package/src/materializer/edits/commit.ts +42 -32
  398. package/src/materializer/shared/normalize.ts +25 -14
  399. package/src/models/execution/embedding.ts +6 -6
  400. package/src/objects/action/errors.ts +0 -12
  401. package/src/objects/action/index.ts +3 -3
  402. package/src/objects/action/request.ts +2 -29
  403. package/src/objects/execution.ts +2 -2
  404. package/src/objects/sdk/object-handle.ts +3 -29
  405. package/src/objects/sdk/object-set.ts +5 -30
  406. package/src/objects/service/index.ts +0 -1
  407. package/src/objects/vectors/README.md +4 -0
  408. package/src/objects/vectors/handle.ts +11 -2
  409. package/src/objects/vectors/indexing-generate.ts +2 -2
  410. package/src/objects/vectors/profile.ts +5 -0
  411. package/src/queues/in-memory.ts +0 -6
  412. package/src/queues/index.ts +0 -2
  413. package/src/queues/types.ts +0 -11
  414. package/src/runtime/host.ts +5 -0
  415. package/src/runtime/resolve-definitions.ts +0 -1
  416. package/src/runtime/types.ts +16 -45
  417. package/src/schedules/builders.ts +1 -4
  418. package/src/schedules/runtime.ts +0 -41
  419. package/src/schedules/validation.ts +2 -16
  420. package/src/security/builders.ts +7 -2
  421. package/src/security/every.ts +1 -5
  422. package/src/security/grants.ts +5 -25
  423. package/src/security/index.ts +0 -3
  424. package/src/security/membership-policies.ts +3 -1
  425. package/src/security/public.ts +10 -0
  426. package/src/security/registry.ts +0 -8
  427. package/src/security/types.ts +19 -25
  428. package/src/security/validation.ts +19 -17
  429. package/src/storage/action-runs/idempotency.ts +13 -41
  430. package/src/storage/action-runs/in-memory.ts +20 -311
  431. package/src/storage/action-runs/index.ts +1 -16
  432. package/src/storage/action-runs/record.ts +130 -0
  433. package/src/storage/action-runs/types.ts +37 -92
  434. package/src/storage/agents/types.ts +1 -1
  435. package/src/storage/auth/in-memory/auth-storage.ts +0 -18
  436. package/src/storage/auth/in-memory/magic-links.ts +0 -3
  437. package/src/storage/auth/in-memory/oidc-attempts.ts +0 -3
  438. package/src/storage/auth/in-memory/sessions.ts +1 -25
  439. package/src/storage/auth/in-memory/shared.ts +1 -10
  440. package/src/storage/auth/types.ts +2 -18
  441. package/src/storage/index.ts +1 -9
  442. package/src/storage/internal.ts +1 -7
  443. package/src/storage/objects/execution-limits.ts +3 -2
  444. package/src/storage/types.ts +2 -4
  445. package/src/testing/action-execution.ts +73 -13
  446. package/src/testing/action-run-storage-contract.ts +335 -0
  447. package/src/testing/auth-storage-contract.ts +14 -107
  448. package/src/testing/execution-storage-contract.ts +0 -2
  449. package/src/testing/index.ts +8 -1
  450. package/src/testing/materializer-storage-contract.ts +174 -18
  451. package/src/testing/queues-contract.ts +0 -18
  452. package/dist/actions/run-dispatch.d.ts +0 -25
  453. package/dist/actions/run-dispatch.d.ts.map +0 -1
  454. package/dist/actions/worker.d.ts +0 -3
  455. package/dist/actions/worker.d.ts.map +0 -1
  456. package/dist/actions/worker.js +0 -325
  457. package/dist/actions/worker.js.map +0 -11
  458. package/dist/auth/audience.d.ts +0 -8
  459. package/dist/auth/audience.d.ts.map +0 -1
  460. package/dist/authorization/application-access.d.ts +0 -18
  461. package/dist/authorization/application-access.d.ts.map +0 -1
  462. package/dist/chunk-1hqwggsn.js.map +0 -12
  463. package/dist/chunk-2jntasmh.js.map +0 -13
  464. package/dist/chunk-6h5m9xjx.js.map +0 -40
  465. package/dist/chunk-85cd7e8c.js +0 -51
  466. package/dist/chunk-85cd7e8c.js.map +0 -10
  467. package/dist/chunk-de4z2bj6.js.map +0 -18
  468. package/dist/chunk-dfm066qg.js.map +0 -11
  469. package/dist/chunk-enpsx8k5.js.map +0 -10
  470. package/dist/chunk-fc5zfxy1.js.map +0 -11
  471. package/dist/chunk-fe52eczz.js.map +0 -49
  472. package/dist/chunk-fx93hd2n.js +0 -1614
  473. package/dist/chunk-fx93hd2n.js.map +0 -20
  474. package/dist/chunk-k6hrnf35.js.map +0 -10
  475. package/dist/chunk-qkbx3tf6.js.map +0 -24
  476. package/dist/chunk-qxvp5epv.js +0 -1329
  477. package/dist/chunk-qxvp5epv.js.map +0 -36
  478. package/dist/chunk-r2y23egw.js.map +0 -10
  479. package/dist/chunk-tffvfy6s.js +0 -593
  480. package/dist/chunk-tffvfy6s.js.map +0 -15
  481. package/dist/chunk-xt1zt7gv.js.map +0 -13
  482. package/dist/chunk-y2aq6ag9.js.map +0 -11
  483. package/dist/chunk-y9jmd7e5.js.map +0 -15
  484. package/dist/chunk-zvx7h87b.js +0 -12
  485. package/dist/chunk-zvx7h87b.js.map +0 -10
  486. package/dist/events/types/actions.d.ts +0 -39
  487. package/dist/events/types/actions.d.ts.map +0 -1
  488. package/dist/objects/service/action-service.d.ts +0 -13
  489. package/dist/objects/service/action-service.d.ts.map +0 -1
  490. package/dist/security/applications.d.ts +0 -15
  491. package/dist/security/applications.d.ts.map +0 -1
  492. package/src/actions/run-dispatch.ts +0 -282
  493. package/src/actions/worker.ts +0 -2
  494. package/src/auth/audience.ts +0 -28
  495. package/src/authorization/application-access.ts +0 -34
  496. package/src/events/types/actions.ts +0 -42
  497. package/src/objects/service/action-service.ts +0 -43
  498. package/src/security/applications.ts +0 -11
  499. /package/dist/{chunk-rz53yb4v.js.map → chunk-0yh890a4.js.map} +0 -0
  500. /package/dist/{chunk-vgk3hknm.js.map → chunk-1k89ecfr.js.map} +0 -0
  501. /package/dist/{chunk-ny3xyvcn.js.map → chunk-1zq2p6g0.js.map} +0 -0
  502. /package/dist/{chunk-dnmadg9k.js.map → chunk-3t2hgbgd.js.map} +0 -0
  503. /package/dist/{chunk-22v5bpz3.js.map → chunk-5e43w60z.js.map} +0 -0
  504. /package/dist/{chunk-7hpdd6r9.js.map → chunk-6p49a5cq.js.map} +0 -0
  505. /package/dist/{chunk-kkqwzy6h.js.map → chunk-7t429e3f.js.map} +0 -0
  506. /package/dist/{chunk-ex496vct.js.map → chunk-9dmt152s.js.map} +0 -0
  507. /package/dist/{chunk-48e3cn2d.js.map → chunk-9gyp8hg1.js.map} +0 -0
  508. /package/dist/{chunk-zxawp1n2.js.map → chunk-9w055r5b.js.map} +0 -0
  509. /package/dist/{chunk-4wn7bxxa.js.map → chunk-9ybhtmg4.js.map} +0 -0
  510. /package/dist/{chunk-vx2yp45y.js.map → chunk-c85m1hyj.js.map} +0 -0
  511. /package/dist/{chunk-bs7sqkre.js.map → chunk-d09tj99x.js.map} +0 -0
  512. /package/dist/{chunk-zb77kjth.js.map → chunk-dk8tkk5f.js.map} +0 -0
  513. /package/dist/{chunk-vjcd8d27.js.map → chunk-fa02jy15.js.map} +0 -0
  514. /package/dist/{chunk-za5yd58j.js.map → chunk-fkgc1wt8.js.map} +0 -0
  515. /package/dist/{chunk-6gmfggss.js.map → chunk-t7x8dmn0.js.map} +0 -0
  516. /package/dist/{chunk-p844e0rn.js.map → chunk-tpn40322.js.map} +0 -0
  517. /package/dist/{chunk-rt9p8m9t.js.map → chunk-v9xd5wzd.js.map} +0 -0
  518. /package/dist/{chunk-2vhg6ysa.js.map → chunk-vyf9kfqf.js.map} +0 -0
  519. /package/dist/{chunk-bwjcehza.js.map → chunk-way52z4h.js.map} +0 -0
  520. /package/dist/{chunk-qkvz64nd.js.map → chunk-x6m907x7.js.map} +0 -0
  521. /package/dist/{chunk-yv9czyfr.js.map → chunk-xfs8x8m9.js.map} +0 -0
  522. /package/dist/{chunk-v6xpd60t.js.map → chunk-yevzdx4y.js.map} +0 -0
  523. /package/dist/{chunk-qmnnhde6.js.map → chunk-z4m0yz8c.js.map} +0 -0
@@ -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
- }
@@ -1,18 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/objects/vectors/indexing-shared.ts", "../src/models/execution/embedding.ts", "../src/objects/vectors/indexing-generate.ts", "../src/objects/vectors/indexing-single.ts", "../src/objects/vectors/indexing-store-batch.ts", "../src/objects/vectors/indexing-batch.ts", "../src/objects/vectors/indexing.ts", "../src/objects/vectors/indexing-runtime.ts", "../src/runtime/public-origin.ts"],
4
- "sourcesContent": [
5
- "import { randomUUID } from \"node:crypto\"\nimport { reportVectorIndexingFailure } from \"../../error-reporting/capability\"\nimport { captureSixbFailure } from \"../../errors/internal\"\nimport { createKernelRuntimeAuthorization } from \"../../execution/authorization\"\nimport { ensureExecutionRecord, executionRecordInputFromRuntime } from \"../../execution/durable\"\nimport type { ExecutionContext, ExecutionScope } from \"../../execution/types\"\nimport { MaterializationConflictError } from \"../../materialization/errors\"\nimport type { ObjectVectorWrite, PreparedObjectVector } from \"../../materialization/vectors\"\nimport type { OntologyMaterializerContract } from \"../../materializer/materializer\"\nimport type { SixbHostContext } from \"../../runtime/types\"\nimport {\n type OntologyVectorIndexingStorage,\n VECTOR_INDEXING_FAILURE_CODES,\n type VectorIndexingWork,\n} from \"../../storage/ontology/vector-indexing\"\nimport { vectorConfiguration, vectorSources } from \"./profile\"\n\n/** Return null when the requested representation is obsolete or already stored. */\nexport async function prepare(\n runtime: SixbHostContext,\n work: VectorIndexingWork\n): Promise<PreparedObjectVector | null> {\n const profile = runtime.ontology.getObjectTypeById(work.ref.objectTypeId)?.search?.vectors?.[\n work.profile\n ]\n if (!profile || vectorConfiguration(profile) !== work.configuration) return null\n\n const row = await runtime.storage.objects.getByPrimaryId({\n projectId: runtime.projectId,\n ...work.ref,\n })\n if (!row) return null\n\n const sources = vectorSources(profile.source, row.properties)\n if (sources.sourceFingerprint !== work.sourceFingerprint) return null\n\n const storedVectors = await runtime.storage.ontology.vectors!.list({\n projectId: runtime.projectId,\n ref: work.ref,\n })\n const currentVector = storedVectors.find((entry) => entry.profile === work.profile)\n const alreadyIndexed =\n currentVector?.configuration === work.configuration &&\n currentVector.sourceFingerprint === work.sourceFingerprint\n\n if (alreadyIndexed) return null\n\n return {\n projectId: runtime.projectId,\n ref: work.ref,\n profile: work.profile,\n configuration: work.configuration,\n ...sources,\n expectedObject: {\n ref: work.ref,\n exists: true,\n version: row.version,\n lastCommitId: row.lastCommitId,\n },\n expectedVectorCommitId: currentVector?.lastCommitId ?? null,\n }\n}\n\nexport async function storeVector(\n runtime: SixbHostContext,\n materializer: OntologyMaterializerContract,\n work: VectorIndexingWork,\n scope: ExecutionScope,\n signal: AbortSignal\n): Promise<void> {\n const indexing = runtime.storage.ontology.vectorIndexing!\n const identity = { projectId: runtime.projectId, id: work.id }\n\n // Unrelated property changes renew the object fence without repeating a paid inference.\n for (let attempt = 0; attempt < 3; attempt++) {\n signal.throwIfAborted()\n const prepared = await prepare(runtime, work)\n\n if (!prepared) {\n await indexing.remove(identity)\n return\n }\n\n try {\n await commitPreparedVectors(materializer, scope, [{ input: prepared, values: work.values! }])\n await indexing.remove(identity)\n return\n } catch (error) {\n if (!(error instanceof MaterializationConflictError)) throw error\n\n const currentWork = await indexing.get(identity)\n if (!currentWork) return\n }\n }\n\n throw new VectorIndexingDeferred(new Date(Date.now() + 1000).toISOString())\n}\n\nexport async function commitPreparedVectors(\n materializer: OntologyMaterializerContract,\n scope: ExecutionScope,\n writes: readonly ObjectVectorWrite[]\n): Promise<void> {\n await materializer.edits.commit({\n scope,\n input: {\n mode: \"atomic\",\n source: { kind: \"runtime\", requestId: randomUUID() },\n operations: [],\n vectorWrites: writes,\n expectedObjects: writes.map((write) => write.input.expectedObject),\n expectedLinks: [],\n expectedLinkScopes: [],\n },\n })\n}\n\nexport async function indexingScope(\n runtime: SixbHostContext,\n work: VectorIndexingWork,\n indexingId = work.id\n): Promise<ExecutionScope> {\n const operation = { type: \"ontology.indexVectors\", indexingId } as const\n const execution: ExecutionContext = {\n id: `exec_vector_${indexingId}`,\n projectId: runtime.projectId,\n executor: { type: \"kernel\", operation },\n source: { type: \"ontologyCommit\", commitId: work.sourceCommitId },\n correlationId: `vector_${indexingId}`,\n }\n const authorization = createKernelRuntimeAuthorization({ execution, operation })\n\n await ensureExecutionRecord(runtime.storage.executions, {\n ...executionRecordInputFromRuntime({ execution, runtimeAuthorization: authorization }),\n requesterGroupIds: [],\n })\n\n return { execution, authorization }\n}\n\nexport async function fail(\n runtime: SixbHostContext,\n indexing: OntologyVectorIndexingStorage,\n work: VectorIndexingWork,\n error: unknown\n): Promise<void> {\n const failure = captureSixbFailure(error, {\n allowedCodes: VECTOR_INDEXING_FAILURE_CODES,\n defaultCode: \"internal.unexpected\",\n })\n\n const recorded = await indexing.update({\n projectId: runtime.projectId,\n id: work.id,\n expectedStatus: work.status,\n status: \"failed\",\n availableAt: new Date().toISOString(),\n error: failure,\n })\n\n if (!recorded) return\n\n reportVectorIndexingFailure(runtime, error, {\n projectId: runtime.projectId,\n indexingId: work.id,\n failure,\n ...work.ref,\n profile: work.profile,\n })\n}\n\nexport function retryAt(details: unknown): string {\n const resetAt =\n details && typeof details === \"object\" && \"resetAt\" in details ? details.resetAt : undefined\n const resetTimestamp = typeof resetAt === \"string\" ? Date.parse(resetAt) : Number.NaN\n\n const minimumRetryTimestamp = Date.now() + 60_000\n const budgetResetTimestamp = Number.isFinite(resetTimestamp) ? resetTimestamp : 0\n const retryTimestamp = Math.max(minimumRetryTimestamp, budgetResetTimestamp)\n\n return new Date(retryTimestamp).toISOString()\n}\n\nexport class VectorIndexingDeferred extends Error {\n constructor(readonly availableAt: string) {\n super(\"[Sixb] Vector indexing is deferred.\")\n }\n}\n",
6
- "import { randomUUID } from \"node:crypto\"\nimport type { EmbeddingModelCatalog, EmbeddingModelEntry, ModelRef } from \"../catalog\"\nimport {\n assertEmbeddingModel,\n type EmbeddingModel,\n type EmbeddingModelRequest,\n EmbeddingModelResponseError,\n type EmbeddingModelResponseMetadata,\n type EmbeddingModelResult,\n sameEmbeddingModel,\n} from \"../embedding-model\"\nimport { estimateModelCall } from \"../pricing\"\nimport type { AiModelCallRecorder } from \"./model-call-recorder\"\nimport type { ModelExecutionSession } from \"./session\"\n\n/** Scope the configured bindings without changing profile identity or object permissions. */\nexport function bindEmbeddingModels(\n catalog: EmbeddingModelCatalog | undefined,\n session: ModelExecutionSession\n): EmbeddingModelCatalog | undefined {\n if (!catalog) return undefined\n const entries: readonly EmbeddingModelEntry[] = Object.freeze(\n catalog.list().map((entry) =>\n Object.freeze({\n ...entry,\n model: Object.freeze({\n providerId: entry.model.providerId,\n modelId: entry.model.modelId,\n definition: entry.model.definition,\n batching: entry.model.batching && Object.freeze({ ...entry.model.batching }),\n embed: (input: EmbeddingModelRequest) => executeEmbedding(session, entry.model, input),\n }),\n })\n )\n )\n const byRef = new Map(\n entries.map((entry) => [JSON.stringify([entry.provider, entry.modelId]), entry])\n )\n return Object.freeze({\n list: () => entries,\n getByRef: (ref: ModelRef) => byRef.get(JSON.stringify([ref.provider, ref.modelId])) ?? null,\n })\n}\n\nasync function executeEmbedding(\n session: ModelExecutionSession,\n binding: EmbeddingModel,\n input: EmbeddingModelRequest\n) {\n if (\n !Array.isArray(input.texts) ||\n input.texts.some((text) => typeof text !== \"string\" || !text.trim())\n ) {\n throw new TypeError(\"[SixbModels] Embedding inputs must be nonempty strings.\")\n }\n const texts = [...input.texts]\n const purpose = input.purpose\n if (purpose !== undefined && purpose !== \"document\" && purpose !== \"query\") {\n throw new TypeError(\"[SixbModels] Embedding purpose must be 'document' or 'query'.\")\n }\n const signal = session.signal(input.signal)\n const requestSignal = AbortSignal.any([signal, AbortSignal.timeout(30_000)])\n requestSignal.throwIfAborted()\n if (!texts.length) return { vectors: [] }\n\n const accounting = await session.accounting()\n accounting.assertHealthy()\n const model = (await binding.resolve?.()) ?? binding\n assertEmbeddingModel(model)\n if (!sameEmbeddingModel(model, binding)) {\n throw new TypeError(\n \"[SixbModels] Resolved embedding model identity does not match the selected model.\"\n )\n }\n requestSignal.throwIfAborted()\n const callId = `call_${randomUUID()}`\n const tokens = texts.reduce(\n (sum, text) => sum + Math.ceil(new TextEncoder().encode(text).byteLength / 4),\n 0\n )\n await session.admitEmbeddingCall(() =>\n accounting.admitCall({\n callId,\n providerId: model.providerId,\n modelId: model.modelId,\n costEstimator: model.costEstimator,\n inputTokens: { status: \"estimated\", tokens, method: \"utf8BytesDividedByFour\" },\n outputTokenAllowance: 0,\n estimatedTotalTokens: tokens,\n })\n )\n\n let result: EmbeddingModelResult\n try {\n requestSignal.throwIfAborted()\n result = await model.embed({ texts, purpose, signal: requestSignal })\n } catch (error) {\n if (error instanceof EmbeddingModelResponseError) {\n await recordEmbedding(accounting, model, callId, error.metadata)\n } else {\n // The provider may have accepted the request. Never retry inference or release its budget.\n await recordEmbedding(accounting, model, callId, {})\n }\n throw error\n }\n // Account before cancellation, vector validation or the materializer's optimistic write.\n await recordEmbedding(accounting, model, callId, result ?? {})\n requestSignal.throwIfAborted()\n return result\n}\n\nasync function recordEmbedding(\n accounting: AiModelCallRecorder,\n model: EmbeddingModel,\n callId: string,\n metadata: EmbeddingModelResponseMetadata\n): Promise<void> {\n // Embeddings produce no output tokens; missing INPUT usage must remain unknown.\n const usage = { ...metadata.usage, outputTokens: 0 }\n const estimate = estimateModelCall(model, {\n usage,\n route: metadata.route,\n responseModelId: metadata.responseModelId,\n })\n await accounting.onModelCallEnd({\n callId,\n providerId: model.providerId,\n modelId: model.modelId,\n responseId: metadata.providerIds?.responseId ?? callId,\n responseModelId: metadata.responseModelId,\n providerIds: metadata.providerIds,\n usage,\n cost: metadata.reportedCost ? { status: \"reported\", ...metadata.reportedCost } : estimate,\n ...(metadata.reportedCost ? { estimate } : {}),\n route: metadata.route,\n })\n}\n",
7
- "import { createSixbError, isSixbError } from \"../../errors/internal\"\nimport type { ExecutionScope } from \"../../execution/types\"\nimport type { PreparedObjectVector } from \"../../materialization/vectors\"\nimport {\n EmbeddingModelResponseError,\n type EmbeddingModelResult,\n sameEmbeddingModel,\n} from \"../../models/embedding-model\"\nimport { bindEmbeddingModels } from \"../../models/execution/embedding\"\nimport { ModelExecutionSession } from \"../../models/execution/session\"\nimport type { SixbHostContext } from \"../../runtime/types\"\nimport type { VectorIndexingWork } from \"../../storage/ontology/vector-indexing\"\nimport { fail, retryAt, VectorIndexingDeferred } from \"./indexing-shared\"\nimport { normalizeVector } from \"./profile\"\n\nexport interface PreparedIndexingWork {\n readonly work: VectorIndexingWork\n readonly input: PreparedObjectVector\n}\n\ninterface GenerationAttempt {\n readonly runtime: SixbHostContext\n readonly entries: readonly PreparedIndexingWork[]\n readonly signal: AbortSignal\n /** Running means the durable claim succeeded; budget admission may still be pending. */\n phase: \"pending\" | \"claiming\" | \"running\"\n}\n\n/** One accounted provider call, with durable admission and atomic result persistence. */\nexport async function generateVectors(\n runtime: SixbHostContext,\n entries: readonly PreparedIndexingWork[],\n scope: ExecutionScope,\n attempt: number,\n signal: AbortSignal\n): Promise<void> {\n const first = entries[0]!\n const profile = runtime.ontology.resolveObjectType(first.work.ref.objectTypeId).search!.vectors![\n first.work.profile\n ]!\n const generation: GenerationAttempt = { runtime, entries, signal, phase: \"pending\" }\n\n const session = new ModelExecutionSession(\n { ...runtime, runtimeAuthorization: scope.authorization },\n scope.execution\n )\n session.bind({\n attempt,\n signal,\n embeddingAdmission: (admit) => admitGeneration(generation, admit),\n })\n\n try {\n const model = bindEmbeddingModels(runtime.embeddingModels, session)?.getByRef({\n provider: profile.model.providerId,\n modelId: profile.model.modelId,\n })?.model\n\n if (!model || !sameEmbeddingModel(model, profile.model)) {\n throw createSixbError(\n \"vector.model_unavailable\",\n \"[Sixb] Vector indexing requires the profile's configured embedding model.\"\n )\n }\n\n const result = await model.embed({\n texts: entries.map((entry) => entry.input.text),\n purpose: \"document\",\n signal,\n })\n const values = normalizeEmbeddingResult(\n result,\n entries.length,\n profile.model.definition.dimensions\n )\n\n // Persist every surviving result atomically before any vector is published.\n await runtime.storage.ontology.vectorIndexing!.updateBatch({\n projectId: runtime.projectId,\n updates: entries.map(({ work }, index) => ({\n id: work.id,\n expectedStatus: \"running\",\n status: \"ready\",\n values: values[index]!,\n availableAt: new Date().toISOString(),\n })),\n })\n } catch (error) {\n await handleGenerationFailure(generation, error)\n }\n}\n\nasync function admitGeneration(\n generation: GenerationAttempt,\n admit: () => Promise<void>\n): Promise<void> {\n generation.signal.throwIfAborted()\n generation.phase = \"claiming\"\n\n const claimed = await transitionWork(generation, \"pending\", \"running\", { requireAll: true })\n generation.phase = claimed ? \"running\" : \"pending\"\n\n if (!claimed) {\n if (generation.entries.length === 1) {\n throw new Error(\"[Sixb] Vector indexing request was superseded.\")\n }\n throw new VectorIndexingDeferred(new Date().toISOString())\n }\n\n try {\n await admit()\n } catch (error) {\n await transitionWork(generation, \"running\", \"pending\")\n generation.phase = \"pending\"\n throw error\n }\n}\n\nfunction normalizeEmbeddingResult(\n result: EmbeddingModelResult,\n count: number,\n dimensions: number\n): readonly (readonly number[])[] {\n try {\n if (!Array.isArray(result?.vectors) || result.vectors.length !== count) {\n throw new Error(\"Unexpected vector count\")\n }\n\n return result.vectors.map((vector) => normalizeVector(vector, dimensions))\n } catch (cause) {\n throw createSixbError(\"vector.response_invalid\", \"[Sixb] Invalid embedding batch response.\", {\n cause,\n })\n }\n}\n\nasync function handleGenerationFailure(\n generation: GenerationAttempt,\n error: unknown\n): Promise<void> {\n // No provider call can start while the storage claim is unresolved. Retry delivery,\n // not inference; an ambiguously committed claim will be fenced as running on redelivery.\n if (generation.phase === \"claiming\" || error instanceof VectorIndexingDeferred) {\n throw error\n }\n\n if (generation.phase === \"pending\") {\n if (\n isSixbError(error) &&\n (error.code === \"ai.usage_limit_exceeded\" || error.code === \"ai.usage_limit_unavailable\")\n ) {\n const availableAt = retryAt(error.details)\n await transitionWork(generation, \"pending\", \"pending\", { availableAt })\n throw new VectorIndexingDeferred(availableAt)\n }\n\n if (generation.signal.aborted) throw error\n }\n\n const failure =\n error instanceof EmbeddingModelResponseError\n ? createSixbError(\"vector.response_invalid\", \"[Sixb] Invalid embedding batch response.\", {\n cause: error,\n })\n : error\n const { runtime, entries } = generation\n const indexing = runtime.storage.ontology.vectorIndexing!\n\n for (const { work } of entries) {\n await fail(runtime, indexing, { ...work, status: generation.phase }, failure)\n }\n}\n\nfunction transitionWork(\n generation: GenerationAttempt,\n expectedStatus: VectorIndexingWork[\"status\"],\n status: VectorIndexingWork[\"status\"],\n options: { availableAt?: string; requireAll?: boolean } = {}\n): Promise<boolean> {\n const { runtime, entries } = generation\n const availableAt = options.availableAt ?? new Date().toISOString()\n\n return runtime.storage.ontology.vectorIndexing!.updateBatch({\n projectId: runtime.projectId,\n requireAll: options.requireAll ?? false,\n updates: entries.map(({ work }) => ({ id: work.id, expectedStatus, status, availableAt })),\n })\n}\n",
8
- "import { createSixbError } from \"../../errors/internal\"\nimport type { OntologyMaterializerContract } from \"../../materializer/materializer\"\nimport type { SixbHostContext } from \"../../runtime/types\"\nimport { generateVectors } from \"./indexing-generate\"\nimport {\n fail,\n indexingScope,\n prepare,\n storeVector,\n VectorIndexingDeferred,\n} from \"./indexing-shared\"\n\nexport async function processVector(\n runtime: SixbHostContext,\n materializer: OntologyMaterializerContract,\n id: string,\n attempt: number,\n signal: AbortSignal\n): Promise<void> {\n const indexing = runtime.storage.ontology.vectorIndexing\n if (!indexing) throw new Error(\"[Sixb] Storage does not support automatic vector indexing.\")\n const projectId = runtime.projectId\n const work = await indexing.get({ projectId, id })\n if (!work || work.status === \"failed\") return\n if (work.status === \"running\") {\n await fail(\n runtime,\n indexing,\n work,\n createSixbError(\n \"vector.outcome_unknown\",\n \"[Sixb] Interrupted embedding call has an unknown outcome; inference was not repeated.\"\n )\n )\n return\n }\n if (Date.parse(work.availableAt) > Date.now()) throw new VectorIndexingDeferred(work.availableAt)\n const prepared = await prepare(runtime, work)\n if (!prepared) {\n await indexing.remove({ projectId, id })\n return\n }\n const scope = await indexingScope(runtime, work, work.batchId ?? work.id)\n if (work.status === \"ready\") {\n await storeVector(runtime, materializer, work, scope, signal)\n return\n }\n await generateVectors(runtime, [{ work, input: prepared }], scope, attempt, signal)\n const ready = await indexing.get({ projectId, id })\n if (ready?.status === \"ready\") await storeVector(runtime, materializer, ready, scope, signal)\n}\n",
9
- "import type { ExecutionScope } from \"../../execution/types\"\nimport { MaterializationConflictError } from \"../../materialization/errors\"\nimport type { ObjectVectorWrite } from \"../../materialization/vectors\"\nimport type { OntologyMaterializerContract } from \"../../materializer/materializer\"\nimport type { SixbHostContext } from \"../../runtime/types\"\nimport {\n commitPreparedVectors,\n prepare,\n storeVector,\n VectorIndexingDeferred,\n} from \"./indexing-shared\"\n\n/** Publish a current subset atomically; reprepare conflicts without repeating inference. */\nexport async function storeVectorBatch(\n runtime: SixbHostContext,\n materializer: OntologyMaterializerContract,\n batchId: string,\n scope: ExecutionScope,\n signal: AbortSignal\n): Promise<void> {\n const indexing = runtime.storage.ontology.vectorIndexing!\n const identity = { projectId: runtime.projectId, batchId }\n\n for (let attempt = 0; attempt < 3; attempt++) {\n const ready = (await indexing.getBatch(identity)).filter((work) => work.status === \"ready\")\n const writes: ObjectVectorWrite[] = []\n\n for (const work of ready) {\n signal.throwIfAborted()\n const input = await prepare(runtime, work)\n if (input) {\n writes.push({ input, values: work.values! })\n } else {\n await indexing.remove({ projectId: runtime.projectId, id: work.id })\n }\n }\n\n if (!writes.length) return\n\n try {\n signal.throwIfAborted()\n await commitPreparedVectors(materializer, scope, writes)\n return\n } catch (error) {\n if (!(error instanceof MaterializationConflictError)) throw error\n }\n }\n\n // A continuously changing object must not keep stable peers from becoming searchable.\n let deferred = false\n for (const work of await indexing.getBatch(identity)) {\n if (work.status !== \"ready\") continue\n try {\n await storeVector(runtime, materializer, work, scope, signal)\n } catch (error) {\n if (!(error instanceof VectorIndexingDeferred)) throw error\n deferred = true\n }\n }\n\n if (deferred) throw new VectorIndexingDeferred(new Date(Date.now() + 1000).toISOString())\n}\n",
10
- "import type { OntologyMaterializerContract } from \"../../materializer/materializer\"\nimport type { EmbeddingBatchLimits } from \"../../models/embedding-model\"\nimport type { SixbHostContext } from \"../../runtime/types\"\nimport type { VectorIndexingWork } from \"../../storage/ontology/vector-indexing\"\nimport { generateVectors, type PreparedIndexingWork } from \"./indexing-generate\"\nimport { indexingScope, prepare, VectorIndexingDeferred } from \"./indexing-shared\"\nimport { processVector } from \"./indexing-single\"\nimport { storeVectorBatch } from \"./indexing-store-batch\"\n\n/** Membership was persisted by one projection commit; there is no fill timer or memory queue. */\nexport async function processVectorBatch(\n runtime: SixbHostContext,\n materializer: OntologyMaterializerContract,\n batchId: string,\n batch: readonly VectorIndexingWork[],\n attempt: number,\n signal: AbortSignal\n): Promise<void> {\n if (batch.some((work) => work.status !== \"pending\")) {\n await resumeBatch(runtime, materializer, batchId, batch, attempt, signal)\n return\n }\n\n const entries = await prepareBatch(runtime, batch, signal)\n const first = entries[0]\n if (!first) return\n\n const limits = getBatchLimits(runtime, first.work)\n if (!limits) {\n // Unknown provider batch limits: embed each object/profile individually.\n for (const { work } of entries) {\n await processVector(runtime, materializer, work.id, attempt, signal)\n }\n return\n }\n\n assertCompatibleEntries(entries, first.work)\n const scope = await indexingScope(runtime, first.work, batchId)\n\n for (const group of partition(entries, limits)) {\n if (group.length === 1) {\n await processVector(runtime, materializer, group[0]!.work.id, attempt, signal)\n } else {\n await generateVectors(runtime, group, scope, attempt, signal)\n }\n }\n\n await storeVectorBatch(runtime, materializer, batchId, scope, signal)\n}\n\n/** Resume storage or terminalize interrupted calls; never repeat paid inference. */\nasync function resumeBatch(\n runtime: SixbHostContext,\n materializer: OntologyMaterializerContract,\n batchId: string,\n batch: readonly VectorIndexingWork[],\n attempt: number,\n signal: AbortSignal\n): Promise<void> {\n const ready = batch.find((work) => work.status === \"ready\")\n if (ready) {\n const scope = await indexingScope(runtime, ready, batchId)\n await storeVectorBatch(runtime, materializer, batchId, scope, signal)\n }\n\n for (const work of batch) {\n if (work.status !== \"ready\") {\n await processVector(runtime, materializer, work.id, attempt, signal)\n }\n }\n}\n\nasync function prepareBatch(\n runtime: SixbHostContext,\n batch: readonly VectorIndexingWork[],\n signal: AbortSignal\n): Promise<PreparedIndexingWork[]> {\n const availableAt = batch.reduce(\n (latest, work) => (work.availableAt > latest ? work.availableAt : latest),\n \"\"\n )\n if (Date.parse(availableAt) > Date.now()) {\n throw new VectorIndexingDeferred(availableAt)\n }\n\n const entries: PreparedIndexingWork[] = []\n const indexing = runtime.storage.ontology.vectorIndexing!\n\n for (const work of batch) {\n signal.throwIfAborted()\n const input = await prepare(runtime, work)\n\n if (input) {\n entries.push({ work, input })\n } else {\n await indexing.remove({ projectId: runtime.projectId, id: work.id })\n }\n }\n\n return entries\n}\n\nfunction getBatchLimits(\n runtime: SixbHostContext,\n work: VectorIndexingWork\n): EmbeddingBatchLimits | undefined {\n const profile = runtime.ontology.resolveObjectType(work.ref.objectTypeId).search!.vectors![\n work.profile\n ]!\n\n return runtime.embeddingModels?.getByRef({\n provider: profile.model.providerId,\n modelId: profile.model.modelId,\n })?.model.batching\n}\n\n/** Do not mix commits or configurations, even with malformed storage membership. */\nfunction assertCompatibleEntries(\n entries: readonly PreparedIndexingWork[],\n reference: VectorIndexingWork\n): void {\n const incompatible = entries.some(\n ({ work }) =>\n work.sourceCommitId !== reference.sourceCommitId ||\n work.ref.objectTypeId !== reference.ref.objectTypeId ||\n work.profile !== reference.profile ||\n work.configuration !== reference.configuration\n )\n\n if (incompatible) {\n throw new Error(\"[Sixb] Incompatible vector batch membership.\")\n }\n}\n\n/** Split an already durable, bounded page; never wait for more work or truncate input. */\nfunction* partition(entries: readonly PreparedIndexingWork[], limits: EmbeddingBatchLimits) {\n let group: PreparedIndexingWork[] = []\n let bytes = 0\n\n for (const entry of entries) {\n const size = Buffer.byteLength(entry.input.text)\n const exceedsGroupLimit =\n group.length >= limits.maxInputs ||\n bytes + size > limits.maxTotalInputBytes ||\n size > limits.maxInputBytes\n\n if (group.length > 0 && exceedsGroupLimit) {\n yield group\n group = []\n bytes = 0\n }\n\n if (size > limits.maxInputBytes || size > limits.maxTotalInputBytes) {\n yield [entry]\n continue\n }\n\n group.push(entry)\n bytes += size\n }\n\n if (group.length > 0) yield group\n}\n",
11
- "import type { OntologyMaterializerContract } from \"../../materializer/materializer\"\nimport type { SixbHostContext } from \"../../runtime/types\"\nimport { processVectorBatch } from \"./indexing-batch\"\nimport type { VectorIndexingRuntime } from \"./indexing-runtime\"\nimport { processVector } from \"./indexing-single\"\n\nexport { VectorIndexingDeferred } from \"./indexing-shared\"\n\n/** Internal processing port; durable projection groups and individual requests share delivery. */\nexport function createVectorIndexingRuntime(\n runtime: SixbHostContext,\n materializer: OntologyMaterializerContract\n): VectorIndexingRuntime {\n return {\n async process(id, attempt, signal) {\n const indexing = runtime.storage.ontology.vectorIndexing\n if (!indexing) throw new Error(\"[Sixb] Storage does not support automatic vector indexing.\")\n const batch = await indexing.getBatch({ projectId: runtime.projectId, batchId: id })\n if (batch.length) await processVectorBatch(runtime, materializer, id, batch, attempt, signal)\n else await processVector(runtime, materializer, id, attempt, signal)\n },\n }\n}\n",
12
- "/** Internal worker entry point; it does not expose the host context or domain SDK. */\nexport interface VectorIndexingRuntime {\n process(id: string, attempt: number, signal: AbortSignal): Promise<void>\n}\n\n// Associates each host with its service. Durable work lives in ontology storage, not this map.\nconst runtimes = new WeakMap<object, VectorIndexingRuntime>()\n\nexport function registerVectorIndexingRuntime(host: object, runtime: VectorIndexingRuntime): void {\n runtimes.set(host, runtime)\n}\n\nexport function getVectorIndexingRuntime(host: object): VectorIndexingRuntime {\n const runtime = runtimes.get(host)\n if (!runtime) throw new Error(\"[Sixb] Vector indexing requires a configured Sixb host.\")\n return runtime\n}\n",
13
- "/**\n * The origin the API is reachable at from outside, for features that hand out absolute URLs a\n * third party will fetch. It is deployment topology, not app configuration: the API server\n * records the `publicOrigin` it was started with, and the CLI records `SIXB_API_PUBLIC_ORIGIN`\n * for worker processes. A process that never learns it cannot issue such URLs.\n */\n\nconst apiPublicOrigins = new WeakMap<object, string>()\n\n/** Record where the API is reachable. A host served by several servers keeps the latest one. */\nexport function setApiPublicOrigin(host: object, origin: string): void {\n apiPublicOrigins.set(host, normalizeOrigin(origin))\n}\n\nexport function getApiPublicOrigin(host: object): string | undefined {\n return apiPublicOrigins.get(host)\n}\n\nfunction normalizeOrigin(value: string): string {\n let url: URL\n try {\n url = new URL(value)\n } catch {\n throw new Error(`[Sixb] Invalid API public origin: '${value}'.`)\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n throw new Error(\"[Sixb] The API public origin must use http or https.\")\n }\n if (url.pathname !== \"/\" || url.search || url.hash) {\n throw new Error(\"[Sixb] The API public origin must be an origin, not a full URL.\")\n }\n return url.origin\n}\n"
14
- ],
15
- "mappings": "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",
16
- "debugId": "2C71EF9B86846F7764756E2164756E21",
17
- "names": []
18
- }
@@ -1,11 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/events/selectors/builder.ts", "../src/events/selectors/predicate.ts"],
4
- "sourcesContent": [
5
- "import type { ActionDefinition } from \"../../actions\"\nimport type { LinkToken, ObjectTypeWithTokens, Property, PropertyToken } from \"../../ontology\"\nimport type { RuleDefinition } from \"../../rules\"\nimport type { DomainEvent } from \"../types\"\nimport type {\n ActionEventSelectorContext,\n ActionEventToken,\n ActionEventTokenOf,\n DatasetEventSelectorContext,\n DatasetEventToken,\n EventSelectorSpec,\n LinkEventSelectorContext,\n ObjectEventSelectorContext,\n PipelineEventSelectorContext,\n PipelineEventToken,\n RuleEventSelectorContext,\n RunEventSelectorOperation,\n SyncEventSelectorContext,\n SyncEventToken,\n} from \"./types\"\n\ntype EventPropertySelectorMap<TTokens, TContext> = {\n readonly [K in keyof TTokens]: TTokens[K] extends PropertyToken\n ? EventPropertySelector<TContext>\n : never\n}\n\ntype LinkPropertyTokens<TLink extends LinkToken> =\n NonNullable<TLink[\"link\"][\"properties\"]> extends readonly Property[]\n ? {\n readonly [P in NonNullable<TLink[\"link\"][\"properties\"]>[number] as P[\"id\"]]: PropertyToken<\n TLink[\"objectTypeId\"],\n P[\"id\"],\n P\n >\n }\n : Record<never, never>\n\nexport interface ObjectEventSelectorBuilder<TObjectType extends ObjectTypeWithTokens>\n extends EventSelectorSpec<ObjectEventSelectorContext<TObjectType>> {\n readonly p: EventPropertySelectorMap<TObjectType[\"p\"], ObjectEventSelectorContext<TObjectType>>\n\n /** Scope to a single object instance. */\n byId(primaryId: string): ObjectEventSelectorBuilder<TObjectType>\n\n upserted(): EventSelectorSpec<ObjectEventSelectorContext<TObjectType>>\n created(): EventSelectorSpec<ObjectEventSelectorContext<TObjectType>>\n updated(): EventSelectorSpec<ObjectEventSelectorContext<TObjectType>>\n deleted(): EventSelectorSpec<ObjectEventSelectorContext<TObjectType>>\n\n link<TLink extends LinkToken<TObjectType[\"id\"]>>(\n link: TLink\n ): LinkEventSelectorBuilder<TObjectType, TLink>\n}\n\nexport interface LinkEventSelectorBuilder<\n TObjectType extends ObjectTypeWithTokens,\n TLink extends LinkToken<TObjectType[\"id\"]>,\n> extends EventSelectorSpec<LinkEventSelectorContext<TObjectType, TLink>> {\n readonly p: EventPropertySelectorMap<\n LinkPropertyTokens<TLink>,\n LinkEventSelectorContext<TObjectType, TLink>\n >\n\n created(): EventSelectorSpec<LinkEventSelectorContext<TObjectType, TLink>>\n updated(): EventSelectorSpec<LinkEventSelectorContext<TObjectType, TLink>>\n deleted(): EventSelectorSpec<LinkEventSelectorContext<TObjectType, TLink>>\n}\n\nexport interface EventPropertySelector<TContext = unknown> extends EventSelectorSpec<TContext> {\n created(): EventSelectorSpec<TContext>\n updated(): EventSelectorSpec<TContext>\n cleared(): EventSelectorSpec<TContext>\n}\n\nexport interface RuleEventSelectorBuilder<TRule extends RuleDefinition>\n extends EventSelectorSpec<RuleEventSelectorContext<TRule>> {\n triggered(): EventSelectorSpec<RuleEventSelectorContext<TRule, \"triggered\">>\n resolved(): EventSelectorSpec<RuleEventSelectorContext<TRule, \"resolved\">>\n}\n\nexport interface ActionEventSelectorBuilder<TAction extends ActionEventToken>\n extends EventSelectorSpec<ActionEventSelectorContext<TAction>> {\n requested(): EventSelectorSpec<ActionEventSelectorContext<TAction, \"requested\">>\n completed(): EventSelectorSpec<ActionEventSelectorContext<TAction, \"completed\">>\n failed(): EventSelectorSpec<ActionEventSelectorContext<TAction, \"failed\">>\n}\n\nexport interface DatasetEventSelectorBuilder<TDataset extends DatasetEventToken>\n extends EventSelectorSpec<DatasetEventSelectorContext<TDataset>> {\n updated(): EventSelectorSpec<DatasetEventSelectorContext<TDataset>>\n}\n\nexport interface SyncEventSelectorBuilder<TSync extends SyncEventToken>\n extends EventSelectorSpec<SyncEventSelectorContext<TSync>> {\n succeeded(): EventSelectorSpec<SyncEventSelectorContext<TSync, \"succeeded\">>\n failed(): EventSelectorSpec<SyncEventSelectorContext<TSync, \"failed\">>\n cancelled(): EventSelectorSpec<SyncEventSelectorContext<TSync, \"cancelled\">>\n}\n\nexport interface PipelineEventSelectorBuilder<TPipeline extends PipelineEventToken>\n extends EventSelectorSpec<PipelineEventSelectorContext<TPipeline>> {\n succeeded(): EventSelectorSpec<PipelineEventSelectorContext<TPipeline, \"succeeded\">>\n failed(): EventSelectorSpec<PipelineEventSelectorContext<TPipeline, \"failed\">>\n cancelled(): EventSelectorSpec<PipelineEventSelectorContext<TPipeline, \"cancelled\">>\n}\n\nabstract class EventSelectorSpecView<TContext> implements EventSelectorSpec<TContext> {\n constructor(protected readonly spec: EventSelectorSpec<TContext>) {}\n\n get topic(): EventSelectorSpec[\"topic\"] {\n return this.spec.topic\n }\n\n get types(): EventSelectorSpec[\"types\"] {\n return this.spec.types\n }\n\n get objectTypeId(): EventSelectorSpec[\"objectTypeId\"] {\n return this.spec.objectTypeId\n }\n\n get primaryId(): EventSelectorSpec[\"primaryId\"] {\n return this.spec.primaryId\n }\n\n get propertyId(): EventSelectorSpec[\"propertyId\"] {\n return this.spec.propertyId\n }\n\n get propertyOperation(): EventSelectorSpec[\"propertyOperation\"] {\n return this.spec.propertyOperation\n }\n\n get linkId(): EventSelectorSpec[\"linkId\"] {\n return this.spec.linkId\n }\n\n get ruleId(): EventSelectorSpec[\"ruleId\"] {\n return this.spec.ruleId\n }\n\n get actionId(): EventSelectorSpec[\"actionId\"] {\n return this.spec.actionId\n }\n\n get datasetId(): EventSelectorSpec[\"datasetId\"] {\n return this.spec.datasetId\n }\n\n get syncId(): EventSelectorSpec[\"syncId\"] {\n return this.spec.syncId\n }\n\n get pipelineId(): EventSelectorSpec[\"pipelineId\"] {\n return this.spec.pipelineId\n }\n\n get runStatus(): EventSelectorSpec[\"runStatus\"] {\n return this.spec.runStatus\n }\n\n get runId(): EventSelectorSpec[\"runId\"] {\n return this.spec.runId\n }\n}\n\nclass ObjectEventSelectorBuilderImpl<TObjectType extends ObjectTypeWithTokens>\n extends EventSelectorSpecView<ObjectEventSelectorContext<TObjectType>>\n implements ObjectEventSelectorBuilder<TObjectType>\n{\n constructor(\n private readonly objectType: TObjectType,\n spec: EventSelectorSpec<ObjectEventSelectorContext<TObjectType>>\n ) {\n super(spec)\n }\n\n get p(): EventPropertySelectorMap<TObjectType[\"p\"], ObjectEventSelectorContext<TObjectType>> {\n return createPropertySelectorMap(\n this.objectType.p,\n (property) =>\n new EventPropertySelectorImpl({\n ...this.spec,\n topic: \"objects\",\n propertyId: property.id,\n })\n ) as EventPropertySelectorMap<TObjectType[\"p\"], ObjectEventSelectorContext<TObjectType>>\n }\n\n byId(primaryId: string): ObjectEventSelectorBuilder<TObjectType> {\n return new ObjectEventSelectorBuilderImpl(this.objectType, {\n ...this.spec,\n primaryId,\n })\n }\n\n created(): EventSelectorSpec<ObjectEventSelectorContext<TObjectType>> {\n return this.withObjectEventType(\"object.created\")\n }\n\n upserted(): EventSelectorSpec<ObjectEventSelectorContext<TObjectType>> {\n return {\n ...this.spec,\n topic: \"objects\",\n types: [\"object.created\", \"object.updated\"],\n }\n }\n\n updated(): EventSelectorSpec<ObjectEventSelectorContext<TObjectType>> {\n return this.withObjectEventType(\"object.updated\")\n }\n\n deleted(): EventSelectorSpec<ObjectEventSelectorContext<TObjectType>> {\n return this.withObjectEventType(\"object.deleted\")\n }\n\n link<TLink extends LinkToken<TObjectType[\"id\"]>>(\n link: TLink\n ): LinkEventSelectorBuilder<TObjectType, TLink> {\n const spec = {\n ...this.spec,\n topic: \"links\",\n linkId: link.id,\n } as EventSelectorSpec<LinkEventSelectorContext<TObjectType, TLink>>\n\n return new LinkEventSelectorBuilderImpl(link, spec)\n }\n\n private withObjectEventType(\n type: \"object.created\" | \"object.updated\" | \"object.deleted\"\n ): EventSelectorSpec<ObjectEventSelectorContext<TObjectType>> {\n const spec: EventSelectorSpec<ObjectEventSelectorContext<TObjectType>> = {\n ...this.spec,\n topic: \"objects\",\n types: [type],\n }\n return spec\n }\n}\n\nclass LinkEventSelectorBuilderImpl<\n TObjectType extends ObjectTypeWithTokens,\n TLink extends LinkToken<TObjectType[\"id\"]>,\n >\n extends EventSelectorSpecView<LinkEventSelectorContext<TObjectType, TLink>>\n implements LinkEventSelectorBuilder<TObjectType, TLink>\n{\n constructor(\n private readonly linkToken: TLink,\n spec: EventSelectorSpec<LinkEventSelectorContext<TObjectType, TLink>>\n ) {\n super(spec)\n }\n\n get p(): EventPropertySelectorMap<\n LinkPropertyTokens<TLink>,\n LinkEventSelectorContext<TObjectType, TLink>\n > {\n return createPropertySelectorMap(\n createLinkPropertyTokens(this.linkToken),\n (property) =>\n new EventPropertySelectorImpl({\n ...this.spec,\n topic: \"links\",\n propertyId: property.id,\n })\n ) as EventPropertySelectorMap<\n LinkPropertyTokens<TLink>,\n LinkEventSelectorContext<TObjectType, TLink>\n >\n }\n\n created(): EventSelectorSpec<LinkEventSelectorContext<TObjectType, TLink>> {\n return this.withLinkEventType(\"link.created\")\n }\n\n updated(): EventSelectorSpec<LinkEventSelectorContext<TObjectType, TLink>> {\n return this.withLinkEventType(\"link.updated\")\n }\n\n deleted(): EventSelectorSpec<LinkEventSelectorContext<TObjectType, TLink>> {\n return this.withLinkEventType(\"link.deleted\")\n }\n\n private withLinkEventType(\n type: \"link.created\" | \"link.updated\" | \"link.deleted\"\n ): EventSelectorSpec<LinkEventSelectorContext<TObjectType, TLink>> {\n const spec: EventSelectorSpec<LinkEventSelectorContext<TObjectType, TLink>> = {\n ...this.spec,\n topic: \"links\",\n types: [type],\n }\n return spec\n }\n}\n\nclass EventPropertySelectorImpl<TContext>\n extends EventSelectorSpecView<TContext>\n implements EventPropertySelector<TContext>\n{\n created(): EventSelectorSpec<TContext> {\n return this.withPropertyOperation(\"created\")\n }\n\n updated(): EventSelectorSpec<TContext> {\n return this.withPropertyOperation(\"updated\")\n }\n\n cleared(): EventSelectorSpec<TContext> {\n return this.withPropertyOperation(\"cleared\")\n }\n\n private withPropertyOperation(\n propertyOperation: EventSelectorSpec[\"propertyOperation\"]\n ): EventSelectorSpec<TContext> {\n const types = eventTypesForPropertyOperation(this.spec.topic, propertyOperation)\n return {\n ...this.spec,\n ...(types ? { types } : {}),\n propertyOperation,\n }\n }\n}\n\nclass RuleEventSelectorBuilderImpl<TRule extends RuleDefinition>\n extends EventSelectorSpecView<RuleEventSelectorContext<TRule>>\n implements RuleEventSelectorBuilder<TRule>\n{\n triggered(): EventSelectorSpec<RuleEventSelectorContext<TRule, \"triggered\">> {\n return this.withType(\"rule.triggered\")\n }\n\n resolved(): EventSelectorSpec<RuleEventSelectorContext<TRule, \"resolved\">> {\n return this.withType(\"rule.resolved\")\n }\n\n private withType<TOperation extends \"triggered\" | \"resolved\">(\n type: `rule.${TOperation}`\n ): EventSelectorSpec<RuleEventSelectorContext<TRule, TOperation>> {\n return { ...this.spec, types: [type] } as EventSelectorSpec<\n RuleEventSelectorContext<TRule, TOperation>\n >\n }\n}\n\nclass ActionEventSelectorBuilderImpl<TAction extends ActionEventToken>\n extends EventSelectorSpecView<ActionEventSelectorContext<TAction>>\n implements ActionEventSelectorBuilder<TAction>\n{\n requested(): EventSelectorSpec<ActionEventSelectorContext<TAction, \"requested\">> {\n return this.withType(\"action.requested\")\n }\n\n completed(): EventSelectorSpec<ActionEventSelectorContext<TAction, \"completed\">> {\n return this.withType(\"action.completed\")\n }\n\n failed(): EventSelectorSpec<ActionEventSelectorContext<TAction, \"failed\">> {\n return this.withType(\"action.failed\")\n }\n\n private withType<TOperation extends \"requested\" | \"completed\" | \"failed\">(\n type: `action.${TOperation}`\n ): EventSelectorSpec<ActionEventSelectorContext<TAction, TOperation>> {\n return { ...this.spec, types: [type] } as EventSelectorSpec<\n ActionEventSelectorContext<TAction, TOperation>\n >\n }\n}\n\nclass DatasetEventSelectorBuilderImpl<TDataset extends DatasetEventToken>\n extends EventSelectorSpecView<DatasetEventSelectorContext<TDataset>>\n implements DatasetEventSelectorBuilder<TDataset>\n{\n updated(): EventSelectorSpec<DatasetEventSelectorContext<TDataset>> {\n return { ...this.spec, types: [\"dataset.version.committed\"] }\n }\n}\n\nclass SyncEventSelectorBuilderImpl<TSync extends SyncEventToken>\n extends EventSelectorSpecView<SyncEventSelectorContext<TSync>>\n implements SyncEventSelectorBuilder<TSync>\n{\n succeeded(): EventSelectorSpec<SyncEventSelectorContext<TSync, \"succeeded\">> {\n return this.withStatus(\"succeeded\")\n }\n\n failed(): EventSelectorSpec<SyncEventSelectorContext<TSync, \"failed\">> {\n return this.withStatus(\"failed\")\n }\n\n cancelled(): EventSelectorSpec<SyncEventSelectorContext<TSync, \"cancelled\">> {\n return this.withStatus(\"cancelled\")\n }\n\n private withStatus<TOperation extends RunEventSelectorOperation>(\n runStatus: TOperation\n ): EventSelectorSpec<SyncEventSelectorContext<TSync, TOperation>> {\n return {\n ...this.spec,\n types: [\"sync.run.finished\"],\n runStatus,\n } as EventSelectorSpec<SyncEventSelectorContext<TSync, TOperation>>\n }\n}\n\nclass PipelineEventSelectorBuilderImpl<TPipeline extends PipelineEventToken>\n extends EventSelectorSpecView<PipelineEventSelectorContext<TPipeline>>\n implements PipelineEventSelectorBuilder<TPipeline>\n{\n succeeded(): EventSelectorSpec<PipelineEventSelectorContext<TPipeline, \"succeeded\">> {\n return this.withStatus(\"succeeded\")\n }\n\n failed(): EventSelectorSpec<PipelineEventSelectorContext<TPipeline, \"failed\">> {\n return this.withStatus(\"failed\")\n }\n\n cancelled(): EventSelectorSpec<PipelineEventSelectorContext<TPipeline, \"cancelled\">> {\n return this.withStatus(\"cancelled\")\n }\n\n private withStatus<TOperation extends RunEventSelectorOperation>(\n runStatus: TOperation\n ): EventSelectorSpec<PipelineEventSelectorContext<TPipeline, TOperation>> {\n return {\n ...this.spec,\n types: [\"pipeline.run.finished\"],\n runStatus,\n } as EventSelectorSpec<PipelineEventSelectorContext<TPipeline, TOperation>>\n }\n}\n\nexport interface EventSelectors {\n object<TObjectType extends ObjectTypeWithTokens>(\n objectType: TObjectType\n ): ObjectEventSelectorBuilder<TObjectType>\n rule<TRule extends RuleDefinition>(rule: TRule): RuleEventSelectorBuilder<TRule>\n action<TAction extends ActionDefinition>(\n action: TAction\n ): ActionEventSelectorBuilder<ActionEventTokenOf<TAction>>\n dataset<TDataset extends DatasetEventToken>(\n dataset: TDataset\n ): DatasetEventSelectorBuilder<TDataset>\n sync<TSync extends SyncEventToken>(sync: TSync): SyncEventSelectorBuilder<TSync>\n pipeline<TPipeline extends PipelineEventToken>(\n pipeline: TPipeline\n ): PipelineEventSelectorBuilder<TPipeline>\n}\n\nexport const events: EventSelectors = {\n object<TObjectType extends ObjectTypeWithTokens>(\n objectType: TObjectType\n ): ObjectEventSelectorBuilder<TObjectType> {\n return new ObjectEventSelectorBuilderImpl(objectType, { objectTypeId: objectType.id })\n },\n rule<TRule extends RuleDefinition>(rule: TRule): RuleEventSelectorBuilder<TRule> {\n return new RuleEventSelectorBuilderImpl({\n topic: \"rules\",\n ruleId: rule.id,\n } as EventSelectorSpec<RuleEventSelectorContext<TRule>>)\n },\n action<TAction extends ActionDefinition>(\n action: TAction\n ): ActionEventSelectorBuilder<ActionEventTokenOf<TAction>> {\n return new ActionEventSelectorBuilderImpl({\n topic: \"actions\",\n actionId: action.id,\n } as EventSelectorSpec<ActionEventSelectorContext<ActionEventTokenOf<TAction>>>)\n },\n dataset<TDataset extends DatasetEventToken>(\n dataset: TDataset\n ): DatasetEventSelectorBuilder<TDataset> {\n return new DatasetEventSelectorBuilderImpl({\n topic: \"datasets\",\n datasetId: dataset.id,\n } as EventSelectorSpec<DatasetEventSelectorContext<TDataset>>)\n },\n sync<TSync extends SyncEventToken>(sync: TSync): SyncEventSelectorBuilder<TSync> {\n return new SyncEventSelectorBuilderImpl({\n topic: \"syncs\",\n syncId: sync.id,\n } as EventSelectorSpec<SyncEventSelectorContext<TSync>>)\n },\n pipeline<TPipeline extends PipelineEventToken>(\n pipeline: TPipeline\n ): PipelineEventSelectorBuilder<TPipeline> {\n return new PipelineEventSelectorBuilderImpl({\n topic: \"pipelines\",\n pipelineId: pipeline.id,\n } as EventSelectorSpec<PipelineEventSelectorContext<TPipeline>>)\n },\n}\n\nfunction createPropertySelectorMap(\n tokens: Record<string, PropertyToken>,\n createSelector: (property: PropertyToken) => EventPropertySelector<unknown>\n): Record<string, EventPropertySelector<unknown>> {\n return Object.fromEntries(\n Object.entries(tokens).map(([propertyId, token]) => [propertyId, createSelector(token)])\n )\n}\n\nfunction createLinkPropertyTokens(linkToken: LinkToken): Record<string, PropertyToken> {\n return Object.fromEntries(\n (linkToken.link.properties ?? []).map((property) => [\n property.id,\n {\n objectTypeId: linkToken.objectTypeId,\n id: property.id,\n property,\n } satisfies PropertyToken,\n ])\n )\n}\n\nfunction eventTypesForPropertyOperation(\n topic: EventSelectorSpec[\"topic\"],\n propertyOperation: EventSelectorSpec[\"propertyOperation\"]\n): readonly DomainEvent[\"type\"][] | undefined {\n if (topic === \"objects\") {\n return propertyOperation === \"created\"\n ? [\"object.created\", \"object.updated\"]\n : [\"object.updated\"]\n }\n if (topic === \"links\") {\n return propertyOperation === \"created\" ? [\"link.created\", \"link.updated\"] : [\"link.updated\"]\n }\n return undefined\n}\n",
6
- "import { scopeKeysForEvent } from \"../scope\"\nimport type { DomainEvent } from \"../types\"\nimport type { EventSelectorSpec } from \"./types\"\n\nexport function eventSelectorSpec(selector: EventSelectorSpec<unknown>): EventSelectorSpec {\n return {\n ...(selector.topic !== undefined ? { topic: selector.topic } : {}),\n ...(selector.types !== undefined ? { types: selector.types } : {}),\n ...(selector.objectTypeId !== undefined ? { objectTypeId: selector.objectTypeId } : {}),\n ...(selector.primaryId !== undefined ? { primaryId: selector.primaryId } : {}),\n ...(selector.propertyId !== undefined ? { propertyId: selector.propertyId } : {}),\n ...(selector.propertyOperation !== undefined\n ? { propertyOperation: selector.propertyOperation }\n : {}),\n ...(selector.linkId !== undefined ? { linkId: selector.linkId } : {}),\n ...(selector.ruleId !== undefined ? { ruleId: selector.ruleId } : {}),\n ...(selector.actionId !== undefined ? { actionId: selector.actionId } : {}),\n ...(selector.datasetId !== undefined ? { datasetId: selector.datasetId } : {}),\n ...(selector.syncId !== undefined ? { syncId: selector.syncId } : {}),\n ...(selector.pipelineId !== undefined ? { pipelineId: selector.pipelineId } : {}),\n ...(selector.runStatus !== undefined ? { runStatus: selector.runStatus } : {}),\n ...(selector.runId !== undefined ? { runId: selector.runId } : {}),\n }\n}\n\nexport function buildEventSelectorPredicate(\n selector: EventSelectorSpec<unknown>\n): (event: DomainEvent) => boolean {\n const filter = eventSelectorSpec(selector)\n\n return (event) => {\n if (filter.topic && event.topic !== filter.topic) return false\n if (filter.types && filter.types.length > 0 && !filter.types.includes(event.type)) return false\n\n const scope = scopeKeysForEvent(event)\n\n if (filter.objectTypeId !== undefined && scope.objectTypeId !== filter.objectTypeId)\n return false\n if (filter.primaryId !== undefined && scope.primaryId !== filter.primaryId) return false\n if (filter.linkId !== undefined && scope.linkId !== filter.linkId) return false\n if (filter.ruleId !== undefined && scope.ruleId !== filter.ruleId) return false\n if (filter.runId !== undefined && scope.runId !== filter.runId) return false\n if (filter.actionId !== undefined && scope.actionId !== filter.actionId) return false\n if (filter.datasetId !== undefined && scope.datasetId !== filter.datasetId) return false\n if (filter.syncId !== undefined && scope.syncId !== filter.syncId) return false\n if (filter.pipelineId !== undefined && scope.pipelineId !== filter.pipelineId) return false\n if (filter.runStatus !== undefined && !matchesRunStatus(event, filter.runStatus)) return false\n\n if (!matchesPropertyChange(event, filter)) return false\n\n return true\n }\n}\n\nfunction matchesRunStatus(\n event: DomainEvent,\n status: NonNullable<EventSelectorSpec[\"runStatus\"]>\n): boolean {\n return (\n (event.type === \"sync.run.finished\" || event.type === \"pipeline.run.finished\") &&\n event.payload.status === status\n )\n}\n\nfunction matchesPropertyChange(event: DomainEvent, filter: EventSelectorSpec): boolean {\n if (filter.propertyId === undefined) {\n return filter.propertyOperation === undefined\n }\n\n if (!hasPropertyChanges(event)) {\n const scope = scopeKeysForEvent(event)\n return filter.propertyOperation === undefined && scope.propertyId === filter.propertyId\n }\n\n const change = event.payload.propertyChanges[filter.propertyId]\n if (!change) {\n return false\n }\n\n return filter.propertyOperation === undefined || change.operation === filter.propertyOperation\n}\n\nfunction hasPropertyChanges(event: DomainEvent): event is DomainEvent & {\n payload: { propertyChanges: Record<string, { operation: string }> }\n} {\n return (\n event.payload !== null &&\n typeof event.payload === \"object\" &&\n \"propertyChanges\" in event.payload\n )\n}\n"
7
- ],
8
- "mappings": "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",
9
- "debugId": "FA82749A1A75436A64756E2164756E21",
10
- "names": []
11
- }
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/authorization/grant-kinds.ts"],
4
- "sourcesContent": [
5
- "/**\n * Grant kinds: the single source of truth for the (capability, target) space.\n *\n * Every grant collapses to one `GrantKind` discriminant — the same\n * `capability:target` string the decision engine uses as a grant key (e.g.\n * `view:object`, `run:sync`). Resolution, validation, enforcement, and the\n * resolved `GrantIndex` all key off it, so adding a grant family is a single\n * entry in `GRANT_KINDS` plus the compile errors that forces at every consumer.\n */\n\nimport type { AgentRunGrant, GrantDefinition } from \"../security/types\"\n\nexport type GrantKind =\n | \"access:application\"\n | \"view:object\"\n | \"view:dataset\"\n | \"edit:object\"\n | \"append:telemetry\"\n | \"apply:action\"\n | \"share:share\"\n | \"run:workflow\"\n | \"run:sync\"\n | \"run:pipeline\"\n | \"run:agent\"\n | \"observe:logs\"\n | \"observe:aiUsage\"\n | \"manage:connector\"\n | \"manage:aiUsage\"\n\nexport type SingletonGrantKind = \"run:agent\"\nexport type TargetedGrantKind = Exclude<GrantKind, SingletonGrantKind>\n\n/** Registered id universes a grant kind ranges over, plus subtype expansion. */\nexport interface GrantUniverse {\n readonly applicationIds: ReadonlySet<string>\n readonly objectTypeIds: ReadonlySet<string>\n readonly datasetIds: ReadonlySet<string>\n readonly actionIds: ReadonlySet<string>\n readonly shareIds: ReadonlySet<string>\n readonly workflowIds: ReadonlySet<string>\n readonly syncIds: ReadonlySet<string>\n readonly pipelineIds: ReadonlySet<string>\n readonly observableIds: ReadonlySet<string>\n readonly connectorIds: ReadonlySet<string>\n readonly manageableIds: ReadonlySet<string>\n readonly getSubTypes: (objectTypeId: string) => readonly string[]\n}\n\n/** The registered-id sets a grant kind validates against (no subtype hook). */\nexport type GrantUniverseKey = Exclude<keyof GrantUniverse, \"getSubTypes\">\n\ninterface TargetedGrantKindSpec {\n /** Registered universe the grant's ids must belong to. */\n readonly universeKey: GrantUniverseKey\n /** Subject noun used in validation errors (\"unknown <subject> '<id>'\"). */\n readonly subject: string\n /** Actionable hint appended to the \"unknown <subject>\" error. */\n readonly fix: string\n /** Only object-type grants also expand to subtypes. */\n readonly expandsSubtypes?: true\n}\n\ninterface SingletonGrantKindSpec {\n /** Project-wide capability with no resource selection; resolves to a boolean. */\n readonly singleton: true\n readonly subject: string\n readonly fix: string\n}\n\n/**\n * The exhaustive grant-kind table. A new grant family is one entry here; the\n * mapped type makes every omission a compile error.\n */\nexport const GRANT_KINDS: {\n readonly [TKind in GrantKind]: TKind extends SingletonGrantKind\n ? SingletonGrantKindSpec\n : TargetedGrantKindSpec\n} = {\n \"access:application\": {\n universeKey: \"applicationIds\",\n subject: \"application\",\n fix: \"Use an application exported from '@sixb/core'.\",\n },\n \"view:object\": {\n universeKey: \"objectTypeIds\",\n subject: \"object type\",\n fix: \"Register it in 'ontology/' or pass it to createSixb({ ontologies }).\",\n expandsSubtypes: true,\n },\n \"view:dataset\": {\n universeKey: \"datasetIds\",\n subject: \"dataset\",\n fix: \"Add it to 'datasets/' or pass it to createSixb({ datasets }).\",\n },\n // Deliberately no `expandsSubtypes`: granting writes on a parent type must not\n // silently extend to types added under it later. `view:object` expands because\n // a read of a subtype reveals nothing the parent's grant did not already cover.\n \"edit:object\": {\n universeKey: \"objectTypeIds\",\n subject: \"object type\",\n fix: \"Register it in 'ontology/' or pass it to createSixb({ ontologies }).\",\n },\n \"append:telemetry\": {\n universeKey: \"objectTypeIds\",\n subject: \"object type\",\n fix: \"Register it in 'ontology/' or pass it to createSixb({ ontologies }).\",\n },\n \"apply:action\": {\n universeKey: \"actionIds\",\n subject: \"action\",\n fix: \"Add it to 'actions/' or pass it to createSixb({ actions }).\",\n },\n \"share:share\": {\n universeKey: \"shareIds\",\n subject: \"share\",\n fix: \"Add it to 'shares/' or pass it to createSixb({ shares }).\",\n },\n \"run:workflow\": {\n universeKey: \"workflowIds\",\n subject: \"workflow\",\n fix: \"Add it to 'workflows/' or pass it to createSixb({ workflows }).\",\n },\n \"run:sync\": {\n universeKey: \"syncIds\",\n subject: \"sync\",\n fix: \"Add it to 'syncs/' or pass it to createSixb({ syncs }).\",\n },\n \"run:pipeline\": {\n universeKey: \"pipelineIds\",\n subject: \"pipeline\",\n fix: \"Add it to 'pipelines/' or pass it to createSixb({ pipelines }).\",\n },\n \"run:agent\": {\n singleton: true,\n subject: \"agent\",\n fix: \"Configure models.language and use the exported agent reference in can.run(agent).\",\n },\n \"observe:logs\": {\n universeKey: \"observableIds\",\n subject: \"observability surface\",\n fix: 'Use can.observe(\"logs\").',\n },\n \"observe:aiUsage\": {\n universeKey: \"observableIds\",\n subject: \"observability surface\",\n fix: \"Use can.observe(agent.usage).\",\n },\n \"manage:connector\": {\n universeKey: \"connectorIds\",\n subject: \"connector\",\n fix: \"Add it to 'connectors/' or pass it to createSixb({ connectors }).\",\n },\n \"manage:aiUsage\": {\n universeKey: \"manageableIds\",\n subject: \"management surface\",\n fix: \"Use can.manage(agent.usage).\",\n },\n}\n\nexport const GRANT_KIND_KEYS = Object.keys(GRANT_KINDS) as readonly GrantKind[]\nexport const TARGETED_GRANT_KIND_KEYS = GRANT_KIND_KEYS.filter(\n (kind): kind is TargetedGrantKind => kind !== \"run:agent\"\n)\n\n/** The grant kind a stored grant resolves to. */\nexport function grantKindOf(grant: AgentRunGrant): SingletonGrantKind\nexport function grantKindOf(grant: Exclude<GrantDefinition, AgentRunGrant>): TargetedGrantKind\nexport function grantKindOf(grant: GrantDefinition): GrantKind\nexport function grantKindOf(grant: GrantDefinition): GrantKind {\n switch (grant.capability) {\n case \"access\":\n return \"access:application\"\n case \"view\":\n return `view:${grant.target}`\n case \"edit\":\n return \"edit:object\"\n case \"append\":\n return \"append:telemetry\"\n case \"apply\":\n return \"apply:action\"\n case \"share\":\n return \"share:share\"\n case \"run\":\n return `run:${grant.target}`\n case \"observe\":\n return `observe:${grant.target}`\n case \"manage\":\n return `manage:${grant.target}`\n }\n}\n\n/** Mutable grant index: booleans for singleton capabilities, id sets for selected resources. */\nexport type MutableGrantIndex = {\n [TKind in GrantKind]: TKind extends SingletonGrantKind ? boolean : Set<string>\n}\n\nexport function emptyGrantSets(): MutableGrantIndex {\n return {\n \"access:application\": new Set(),\n \"view:object\": new Set(),\n \"view:dataset\": new Set(),\n \"edit:object\": new Set(),\n \"append:telemetry\": new Set(),\n \"apply:action\": new Set(),\n \"share:share\": new Set(),\n \"run:workflow\": new Set(),\n \"run:sync\": new Set(),\n \"run:pipeline\": new Set(),\n \"run:agent\": false,\n \"observe:logs\": new Set(),\n \"observe:aiUsage\": new Set(),\n \"manage:connector\": new Set(),\n \"manage:aiUsage\": new Set(),\n }\n}\n"
6
- ],
7
- "mappings": ";;AAyEO,IAAM,cAIT;AAAA,EACF,sBAAsB;AAAA,IACpB,aAAa;AAAA,IACb,SAAS;AAAA,IACT,KAAK;AAAA,EACP;AAAA,EACA,eAAe;AAAA,IACb,aAAa;AAAA,IACb,SAAS;AAAA,IACT,KAAK;AAAA,IACL,iBAAiB;AAAA,EACnB;AAAA,EACA,gBAAgB;AAAA,IACd,aAAa;AAAA,IACb,SAAS;AAAA,IACT,KAAK;AAAA,EACP;AAAA,EAIA,eAAe;AAAA,IACb,aAAa;AAAA,IACb,SAAS;AAAA,IACT,KAAK;AAAA,EACP;AAAA,EACA,oBAAoB;AAAA,IAClB,aAAa;AAAA,IACb,SAAS;AAAA,IACT,KAAK;AAAA,EACP;AAAA,EACA,gBAAgB;AAAA,IACd,aAAa;AAAA,IACb,SAAS;AAAA,IACT,KAAK;AAAA,EACP;AAAA,EACA,eAAe;AAAA,IACb,aAAa;AAAA,IACb,SAAS;AAAA,IACT,KAAK;AAAA,EACP;AAAA,EACA,gBAAgB;AAAA,IACd,aAAa;AAAA,IACb,SAAS;AAAA,IACT,KAAK;AAAA,EACP;AAAA,EACA,YAAY;AAAA,IACV,aAAa;AAAA,IACb,SAAS;AAAA,IACT,KAAK;AAAA,EACP;AAAA,EACA,gBAAgB;AAAA,IACd,aAAa;AAAA,IACb,SAAS;AAAA,IACT,KAAK;AAAA,EACP;AAAA,EACA,aAAa;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,KAAK;AAAA,EACP;AAAA,EACA,gBAAgB;AAAA,IACd,aAAa;AAAA,IACb,SAAS;AAAA,IACT,KAAK;AAAA,EACP;AAAA,EACA,mBAAmB;AAAA,IACjB,aAAa;AAAA,IACb,SAAS;AAAA,IACT,KAAK;AAAA,EACP;AAAA,EACA,oBAAoB;AAAA,IAClB,aAAa;AAAA,IACb,SAAS;AAAA,IACT,KAAK;AAAA,EACP;AAAA,EACA,kBAAkB;AAAA,IAChB,aAAa;AAAA,IACb,SAAS;AAAA,IACT,KAAK;AAAA,EACP;AACF;AAEO,IAAM,kBAAkB,OAAO,KAAK,WAAW;AAC/C,IAAM,2BAA2B,gBAAgB,OACtD,CAAC,SAAoC,SAAS,WAChD;AAMO,SAAS,WAAW,CAAC,OAAmC;AAAA,EAC7D,QAAQ,MAAM;AAAA,SACP;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO,QAAQ,MAAM;AAAA,SAClB;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO,OAAO,MAAM;AAAA,SACjB;AAAA,MACH,OAAO,WAAW,MAAM;AAAA,SACrB;AAAA,MACH,OAAO,UAAU,MAAM;AAAA;AAAA;AAStB,SAAS,cAAc,GAAsB;AAAA,EAClD,OAAO;AAAA,IACL,sBAAsB,IAAI;AAAA,IAC1B,eAAe,IAAI;AAAA,IACnB,gBAAgB,IAAI;AAAA,IACpB,eAAe,IAAI;AAAA,IACnB,oBAAoB,IAAI;AAAA,IACxB,gBAAgB,IAAI;AAAA,IACpB,eAAe,IAAI;AAAA,IACnB,gBAAgB,IAAI;AAAA,IACpB,YAAY,IAAI;AAAA,IAChB,gBAAgB,IAAI;AAAA,IACpB,aAAa;AAAA,IACb,gBAAgB,IAAI;AAAA,IACpB,mBAAmB,IAAI;AAAA,IACvB,oBAAoB,IAAI;AAAA,IACxB,kBAAkB,IAAI;AAAA,EACxB;AAAA;",
8
- "debugId": "C6044AB9EC3A569764756E2164756E21",
9
- "names": []
10
- }
@@ -1,11 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/storage/action-runs/errors.ts", "../src/storage/action-runs/provider.ts"],
4
- "sourcesContent": [
5
- "import { MaterializationConflictError } from \"../../materialization/errors\"\n\n/**\n * Base error for action-run storage operations. Callers can use this to catch\n * domain-specific failures without relying on message text.\n */\nexport class ActionRunError extends MaterializationConflictError {\n readonly name = \"ActionRunError\"\n\n constructor(message: string) {\n super(\"run-correlation\", message)\n }\n}\n",
6
- "import type { ExecutionStorage } from \"../executions\"\nimport { findPrimitiveRunExecution } from \"../executions/run-link\"\nimport { ActionRunError } from \"./errors\"\n\n/** Validate the semantic link between a durable Action run and its immutable execution. */\nexport async function assertActionRunExecution(input: {\n readonly executions: ExecutionStorage\n readonly projectId: string\n readonly executionId: string\n readonly runId: string\n readonly actionId: string\n}): Promise<void> {\n const execution = await findPrimitiveRunExecution({\n executions: input.executions,\n projectId: input.projectId,\n executionId: input.executionId,\n primitive: { kind: \"action\", id: input.actionId, runId: input.runId },\n sourceTypes: [\"execution\"],\n })\n if (!execution) {\n throw new ActionRunError(\n `[Sixb] Execution '${input.executionId}' does not authorize Action run '${input.runId}'.`\n )\n }\n}\n"
7
- ],
8
- "mappings": ";;;;;;;;;AAMO,MAAM,wBAAuB,8BAA6B;AAAA,EACtD,OAAO;AAAA,EAEhB,WAAW,CAAC,SAAiB;AAAA,IAC3B,MAAM,mBAAmB,OAAO;AAAA;AAEpC;;;ACPA,eAAsB,yBAAwB,CAAC,OAM7B;AAAA,EAChB,MAAM,YAAY,MAAM,0BAA0B;AAAA,IAChD,YAAY,MAAM;AAAA,IAClB,WAAW,MAAM;AAAA,IACjB,aAAa,MAAM;AAAA,IACnB,WAAW,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,OAAO,MAAM,MAAM;AAAA,IACpE,aAAa,CAAC,WAAW;AAAA,EAC3B,CAAC;AAAA,EACD,IAAI,CAAC,WAAW;AAAA,IACd,MAAM,IAAI,gBACR,qBAAqB,MAAM,+CAA+C,MAAM,SAClF;AAAA,EACF;AAAA;",
9
- "debugId": "F6830BF3F5251E6764756E2164756E21",
10
- "names": []
11
- }