@sixb/core 0.1.10 → 0.1.12

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 (702) hide show
  1. package/dist/actions/builders/params.d.ts +1 -22
  2. package/dist/actions/builders/params.d.ts.map +1 -1
  3. package/dist/actions/index.js +29 -28
  4. package/dist/actions/index.js.map +1 -1
  5. package/dist/actions/types/params.d.ts +10 -44
  6. package/dist/actions/types/params.d.ts.map +1 -1
  7. package/dist/actions/validation.d.ts.map +1 -1
  8. package/dist/actions/worker.js +3 -2
  9. package/dist/actions/worker.js.map +2 -2
  10. package/dist/agents/errors.d.ts +1 -1
  11. package/dist/agents/errors.d.ts.map +1 -1
  12. package/dist/agents/execution.d.ts +15 -9
  13. package/dist/agents/execution.d.ts.map +1 -1
  14. package/dist/agents/ids.d.ts +2 -0
  15. package/dist/agents/ids.d.ts.map +1 -1
  16. package/dist/agents/index.d.ts +1 -1
  17. package/dist/agents/index.d.ts.map +1 -1
  18. package/dist/agents/index.js +48 -42
  19. package/dist/agents/index.js.map +1 -1
  20. package/dist/agents/request.d.ts.map +1 -1
  21. package/dist/agents/sandbox.d.ts +5 -0
  22. package/dist/agents/sandbox.d.ts.map +1 -0
  23. package/dist/agents/streams/index.js +4 -3
  24. package/dist/agents/streams/index.js.map +1 -1
  25. package/dist/agents/streams/internal.js +4 -3
  26. package/dist/agents/streams/internal.js.map +1 -1
  27. package/dist/agents/validation.d.ts.map +1 -1
  28. package/dist/auth/index.js +8 -6
  29. package/dist/auth/index.js.map +1 -1
  30. package/dist/authorization/index.js +5 -4
  31. package/dist/authorization/index.js.map +1 -1
  32. package/dist/blob-storage/types.d.ts +4 -1
  33. package/dist/blob-storage/types.d.ts.map +1 -1
  34. package/dist/bootstrap/index.js +50 -46
  35. package/dist/bootstrap/index.js.map +1 -1
  36. package/dist/{chunk-17kfctj6.js → chunk-0mza4xb2.js} +2 -2
  37. package/dist/chunk-2c4j899j.js.map +1 -1
  38. package/dist/{chunk-g00bfdq6.js → chunk-2cxv584m.js} +12 -56
  39. package/dist/{chunk-g00bfdq6.js.map → chunk-2cxv584m.js.map} +3 -3
  40. package/dist/{chunk-e0d1rzef.js → chunk-2h63nrde.js} +380 -97
  41. package/dist/chunk-2h63nrde.js.map +20 -0
  42. package/dist/{chunk-rtk71jzp.js → chunk-3bnt2wna.js} +2 -2
  43. package/dist/{chunk-awbhdqyc.js → chunk-3ghw2t5q.js} +1 -1
  44. package/dist/{chunk-b19g04jk.js → chunk-3h7ctayx.js} +1 -1
  45. package/dist/{chunk-wjasrj67.js → chunk-3qpcrcj8.js} +1 -1
  46. package/dist/{chunk-5hz0fnca.js → chunk-4k53sm9e.js} +6 -2
  47. package/dist/chunk-4k53sm9e.js.map +12 -0
  48. package/dist/chunk-4ph94nhd.js +81 -0
  49. package/dist/chunk-4ph94nhd.js.map +10 -0
  50. package/dist/chunk-58geavnf.js +29 -0
  51. package/dist/chunk-58geavnf.js.map +10 -0
  52. package/dist/{chunk-0y39rgsb.js → chunk-5tetw4hn.js} +1 -1
  53. package/dist/{chunk-7bs40fe1.js → chunk-69266efg.js} +83 -2
  54. package/dist/chunk-69266efg.js.map +12 -0
  55. package/dist/{chunk-g7knyczr.js → chunk-6ma8dvzc.js} +121 -53
  56. package/dist/chunk-6ma8dvzc.js.map +15 -0
  57. package/dist/{chunk-skz0hst3.js → chunk-7c2g3sz9.js} +6 -86
  58. package/dist/{chunk-skz0hst3.js.map → chunk-7c2g3sz9.js.map} +3 -3
  59. package/dist/{chunk-976rxdpx.js → chunk-7qnvhtcd.js} +93 -17
  60. package/dist/{chunk-976rxdpx.js.map → chunk-7qnvhtcd.js.map} +7 -6
  61. package/dist/{chunk-c5rkjrgp.js → chunk-7ytf06d3.js} +1 -1
  62. package/dist/{chunk-mrp7k0pw.js → chunk-91kcnbf0.js} +9 -14
  63. package/dist/chunk-91kcnbf0.js.map +10 -0
  64. package/dist/{chunk-yv79ncbv.js → chunk-96yw3pwd.js} +3 -3
  65. package/dist/chunk-96yw3pwd.js.map +10 -0
  66. package/dist/chunk-98cw09sw.js.map +2 -2
  67. package/dist/{chunk-93csa55g.js → chunk-axndsymr.js} +10 -4
  68. package/dist/chunk-axndsymr.js.map +11 -0
  69. package/dist/{chunk-r7fj830t.js → chunk-b768c93y.js} +100 -29
  70. package/dist/chunk-b768c93y.js.map +36 -0
  71. package/dist/{chunk-dz5h08xv.js → chunk-bbaa1fet.js} +24 -9
  72. package/dist/{chunk-dz5h08xv.js.map → chunk-bbaa1fet.js.map} +4 -4
  73. package/dist/{chunk-7apz6hg4.js → chunk-bet1rb9h.js} +8 -4
  74. package/dist/chunk-bet1rb9h.js.map +10 -0
  75. package/dist/{chunk-358caqf5.js → chunk-bfjv1adk.js} +2 -2
  76. package/dist/{chunk-b0ec55a1.js → chunk-bg2bs62d.js} +5 -5
  77. package/dist/{chunk-860dwwy0.js → chunk-cd234ba4.js} +22 -12
  78. package/dist/chunk-cd234ba4.js.map +14 -0
  79. package/dist/chunk-d62kjtbg.js.map +1 -1
  80. package/dist/chunk-dmn70ztd.js.map +2 -2
  81. package/dist/{chunk-28ja2cjs.js → chunk-e1f1sqba.js} +39 -53
  82. package/dist/{chunk-28ja2cjs.js.map → chunk-e1f1sqba.js.map} +5 -6
  83. package/dist/{chunk-ap0g1g74.js → chunk-eyjzgav0.js} +39 -4
  84. package/dist/chunk-eyjzgav0.js.map +12 -0
  85. package/dist/{chunk-rb1xx120.js → chunk-f06sf7rr.js} +9 -5
  86. package/dist/chunk-f06sf7rr.js.map +11 -0
  87. package/dist/{chunk-g6cke204.js → chunk-f85hpqnm.js} +1 -1
  88. package/dist/{chunk-vsj3mdfj.js → chunk-fc5zfxy1.js} +1 -1
  89. package/dist/{chunk-38zv5rkr.js → chunk-g2gezsg5.js} +1 -1
  90. package/dist/{chunk-38zv5rkr.js.map → chunk-g2gezsg5.js.map} +2 -2
  91. package/dist/{chunk-nmbxcaqx.js → chunk-g50nxqs5.js} +53 -66
  92. package/dist/chunk-g50nxqs5.js.map +18 -0
  93. package/dist/{chunk-1824gssz.js → chunk-gswwr35f.js} +4 -4
  94. package/dist/{chunk-92vk7gta.js → chunk-gzt6v1ja.js} +1 -1
  95. package/dist/{chunk-aa6z4a19.js → chunk-hgqpcmyr.js} +2 -1
  96. package/dist/chunk-hgqpcmyr.js.map +12 -0
  97. package/dist/{chunk-gqh45d2n.js → chunk-hkw8rykk.js} +2 -2
  98. package/dist/{chunk-f4w3yp4f.js → chunk-hzw7yv5g.js} +104 -21
  99. package/dist/chunk-hzw7yv5g.js.map +13 -0
  100. package/dist/{chunk-5c7ga8zz.js → chunk-jjwhy3rs.js} +5 -5
  101. package/dist/chunk-kept9cdd.js +29 -0
  102. package/dist/chunk-kept9cdd.js.map +10 -0
  103. package/dist/{chunk-ftv470j8.js → chunk-m7cx05vp.js} +247 -16
  104. package/dist/{chunk-ftv470j8.js.map → chunk-m7cx05vp.js.map} +14 -10
  105. package/dist/{chunk-qyeptdyv.js → chunk-mdnw7nj8.js} +10 -6
  106. package/dist/chunk-mdnw7nj8.js.map +15 -0
  107. package/dist/{chunk-5p1v802y.js → chunk-nzsy3xrp.js} +253 -86
  108. package/dist/chunk-nzsy3xrp.js.map +46 -0
  109. package/dist/chunk-p1683c0v.js +104 -0
  110. package/dist/chunk-p1683c0v.js.map +11 -0
  111. package/dist/chunk-p6r1ex7t.js +93 -0
  112. package/dist/chunk-p6r1ex7t.js.map +10 -0
  113. package/dist/{chunk-p5vcsw9c.js → chunk-qm535afa.js} +10 -10
  114. package/dist/{chunk-p5vcsw9c.js.map → chunk-qm535afa.js.map} +4 -4
  115. package/dist/chunk-r5zythxp.js +552 -0
  116. package/dist/chunk-r5zythxp.js.map +17 -0
  117. package/dist/{chunk-9qsh3p5y.js → chunk-rb143ggb.js} +1 -1
  118. package/dist/{chunk-653vwrzr.js → chunk-rdghfsss.js} +1 -1
  119. package/dist/{chunk-t1f4f1ve.js → chunk-sfypc7mk.js} +18 -13
  120. package/dist/{chunk-t1f4f1ve.js.map → chunk-sfypc7mk.js.map} +3 -3
  121. package/dist/{chunk-f0rwz2vh.js → chunk-t6f3tdnr.js} +2 -54
  122. package/dist/chunk-t6f3tdnr.js.map +10 -0
  123. package/dist/{chunk-bn138h9w.js → chunk-t7dzd1tm.js} +3 -3
  124. package/dist/{chunk-pr2h4bv4.js → chunk-tg4g4zh0.js} +3 -3
  125. package/dist/chunk-vpxss818.js +56 -0
  126. package/dist/chunk-vpxss818.js.map +10 -0
  127. package/dist/{chunk-ms2tmn1k.js → chunk-vsg0g7h9.js} +53 -57
  128. package/dist/chunk-vsg0g7h9.js.map +17 -0
  129. package/dist/{chunk-8vj0rjgs.js → chunk-wjffn5m4.js} +1 -1
  130. package/dist/{chunk-nt99sxd6.js → chunk-x9tmx3fc.js} +18 -24
  131. package/dist/chunk-x9tmx3fc.js.map +14 -0
  132. package/dist/{chunk-agbbygvh.js → chunk-xn686q2e.js} +8 -8
  133. package/dist/{chunk-g53f0e4j.js → chunk-xnx96gfy.js} +45 -17
  134. package/dist/{chunk-g53f0e4j.js.map → chunk-xnx96gfy.js.map} +3 -3
  135. package/dist/{chunk-v2vcg0w6.js → chunk-xtfryrfb.js} +2 -2
  136. package/dist/chunk-y0v18c2j.js +363 -0
  137. package/dist/chunk-y0v18c2j.js.map +14 -0
  138. package/dist/{chunk-72w2pxk7.js → chunk-y1ahv8b7.js} +11 -3
  139. package/dist/{chunk-72w2pxk7.js.map → chunk-y1ahv8b7.js.map} +3 -3
  140. package/dist/chunk-y3ev53cq.js +84 -0
  141. package/dist/chunk-y3ev53cq.js.map +10 -0
  142. package/dist/{chunk-p6a4npdx.js → chunk-ybhz3j9g.js} +362 -60
  143. package/dist/chunk-ybhz3j9g.js.map +63 -0
  144. package/dist/{chunk-z30bv4ga.js → chunk-yxb4c62x.js} +3 -2
  145. package/dist/{chunk-z30bv4ga.js.map → chunk-yxb4c62x.js.map} +3 -3
  146. package/dist/chunk-z3y5kg1x.js +14 -0
  147. package/dist/chunk-z3y5kg1x.js.map +10 -0
  148. package/dist/connectors/connections/command-context.d.ts +2 -0
  149. package/dist/connectors/connections/command-context.d.ts.map +1 -1
  150. package/dist/connectors/connections/contracts.d.ts +1 -1
  151. package/dist/connectors/connections/contracts.d.ts.map +1 -1
  152. package/dist/connectors/connections/execution.d.ts +1 -0
  153. package/dist/connectors/connections/execution.d.ts.map +1 -1
  154. package/dist/connectors/connections/runs.d.ts +1 -0
  155. package/dist/connectors/connections/runs.d.ts.map +1 -1
  156. package/dist/connectors/connections/service.d.ts +2 -0
  157. package/dist/connectors/connections/service.d.ts.map +1 -1
  158. package/dist/datasets/validation.d.ts +4 -0
  159. package/dist/datasets/validation.d.ts.map +1 -1
  160. package/dist/datasets/write.d.ts.map +1 -1
  161. package/dist/datasets/write.js +5 -4
  162. package/dist/datasets/write.js.map +1 -1
  163. package/dist/error-reporting/capability.d.ts +3 -2
  164. package/dist/error-reporting/capability.d.ts.map +1 -1
  165. package/dist/error-reporting/internal.js +5 -4
  166. package/dist/error-reporting/internal.js.map +1 -1
  167. package/dist/error-reporting/reports.d.ts +10 -0
  168. package/dist/error-reporting/reports.d.ts.map +1 -1
  169. package/dist/error-reporting/types.d.ts +10 -2
  170. package/dist/error-reporting/types.d.ts.map +1 -1
  171. package/dist/errors/catalog.d.ts +12 -0
  172. package/dist/errors/catalog.d.ts.map +1 -1
  173. package/dist/errors/failure-message.d.ts +8 -0
  174. package/dist/errors/failure-message.d.ts.map +1 -0
  175. package/dist/errors/internal.d.ts.map +1 -1
  176. package/dist/errors/internal.js +3 -2
  177. package/dist/errors/internal.js.map +1 -1
  178. package/dist/events/index.js +5 -4
  179. package/dist/events/index.js.map +1 -1
  180. package/dist/events/outbox-dispatcher.d.ts +2 -2
  181. package/dist/events/outbox-dispatcher.d.ts.map +1 -1
  182. package/dist/execution/agent.js +44 -41
  183. package/dist/execution/agent.js.map +1 -1
  184. package/dist/execution/authorization.d.ts.map +1 -1
  185. package/dist/execution/authorized-object-reader.d.ts +3 -0
  186. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  187. package/dist/execution/kernel-operation.d.ts +4 -0
  188. package/dist/execution/kernel-operation.d.ts.map +1 -0
  189. package/dist/execution/primitive.js +44 -41
  190. package/dist/execution/primitive.js.map +2 -2
  191. package/dist/execution/request.js +45 -42
  192. package/dist/execution/request.js.map +2 -2
  193. package/dist/execution/types.d.ts +6 -0
  194. package/dist/execution/types.d.ts.map +1 -1
  195. package/dist/index.d.ts +15 -5
  196. package/dist/index.d.ts.map +1 -1
  197. package/dist/index.js +68 -59
  198. package/dist/index.js.map +1 -1
  199. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  200. package/dist/lake-storage/index.js +5 -4
  201. package/dist/lake-storage/index.js.map +1 -1
  202. package/dist/lake-storage/types.d.ts +2 -0
  203. package/dist/lake-storage/types.d.ts.map +1 -1
  204. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  205. package/dist/maintenance/types.d.ts +1 -1
  206. package/dist/maintenance/types.d.ts.map +1 -1
  207. package/dist/materialization/errors.d.ts +1 -1
  208. package/dist/materialization/errors.d.ts.map +1 -1
  209. package/dist/materialization/index.d.ts +1 -0
  210. package/dist/materialization/index.d.ts.map +1 -1
  211. package/dist/materialization/index.js +3 -3
  212. package/dist/materialization/model.d.ts +2 -0
  213. package/dist/materialization/model.d.ts.map +1 -1
  214. package/dist/materialization/vectors.d.ts +19 -0
  215. package/dist/materialization/vectors.d.ts.map +1 -0
  216. package/dist/materializer/context.d.ts.map +1 -1
  217. package/dist/materializer/edits/commit.d.ts.map +1 -1
  218. package/dist/materializer/edits/vector-authority.d.ts +6 -0
  219. package/dist/materializer/edits/vector-authority.d.ts.map +1 -0
  220. package/dist/materializer/edits/vectors.d.ts +6 -0
  221. package/dist/materializer/edits/vectors.d.ts.map +1 -0
  222. package/dist/materializer/effective/validate.d.ts.map +1 -1
  223. package/dist/materializer/effective/vector-indexing.d.ts +7 -0
  224. package/dist/materializer/effective/vector-indexing.d.ts.map +1 -0
  225. package/dist/materializer/effective/vectors.d.ts +6 -0
  226. package/dist/materializer/effective/vectors.d.ts.map +1 -0
  227. package/dist/materializer/execution/work-executor.d.ts +2 -1
  228. package/dist/materializer/execution/work-executor.d.ts.map +1 -1
  229. package/dist/materializer/index.js +26 -25
  230. package/dist/materializer/index.js.map +1 -1
  231. package/dist/materializer/shared/normalize.d.ts.map +1 -1
  232. package/dist/models/catalog-index.d.ts +15 -0
  233. package/dist/models/catalog-index.d.ts.map +1 -0
  234. package/dist/models/catalog.d.ts +27 -6
  235. package/dist/models/catalog.d.ts.map +1 -1
  236. package/dist/models/decision/catalog.d.ts +12 -0
  237. package/dist/models/decision/catalog.d.ts.map +1 -0
  238. package/dist/models/decision/errors.d.ts +7 -0
  239. package/dist/models/decision/errors.d.ts.map +1 -0
  240. package/dist/models/decision/output.d.ts +50 -0
  241. package/dist/models/decision/output.d.ts.map +1 -0
  242. package/dist/models/decision/questions.d.ts +14 -0
  243. package/dist/models/decision/questions.d.ts.map +1 -0
  244. package/dist/models/decision/runtime.d.ts +7 -0
  245. package/dist/models/decision/runtime.d.ts.map +1 -0
  246. package/dist/models/decision/types.d.ts +92 -0
  247. package/dist/models/decision/types.d.ts.map +1 -0
  248. package/dist/models/decision/validation.d.ts +7 -0
  249. package/dist/models/decision/validation.d.ts.map +1 -0
  250. package/dist/models/definitions.d.ts +8 -1
  251. package/dist/models/definitions.d.ts.map +1 -1
  252. package/dist/models/embedding-model.d.ts +60 -0
  253. package/dist/models/embedding-model.d.ts.map +1 -0
  254. package/dist/models/execution/binding.d.ts +2 -0
  255. package/dist/models/execution/binding.d.ts.map +1 -1
  256. package/dist/models/execution/embedding.d.ts +5 -0
  257. package/dist/models/execution/embedding.d.ts.map +1 -0
  258. package/dist/models/execution/index.js +29 -26
  259. package/dist/models/execution/index.js.map +1 -1
  260. package/dist/models/execution/model-call-recorder.d.ts +5 -1
  261. package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
  262. package/dist/models/execution/session.d.ts +21 -0
  263. package/dist/models/execution/session.d.ts.map +1 -0
  264. package/dist/models/execution.d.ts.map +1 -1
  265. package/dist/models/generation-types.d.ts +2 -0
  266. package/dist/models/generation-types.d.ts.map +1 -1
  267. package/dist/models/index.d.ts +9 -1
  268. package/dist/models/index.d.ts.map +1 -1
  269. package/dist/models/index.js +17 -7
  270. package/dist/models/index.js.map +1 -1
  271. package/dist/models/pricing.d.ts +3 -2
  272. package/dist/models/pricing.d.ts.map +1 -1
  273. package/dist/objects/authorized-ontology-view.d.ts.map +1 -1
  274. package/dist/objects/execution.d.ts +1 -0
  275. package/dist/objects/execution.d.ts.map +1 -1
  276. package/dist/objects/index.js +29 -28
  277. package/dist/objects/index.js.map +1 -1
  278. package/dist/objects/query/executor.d.ts +3 -0
  279. package/dist/objects/query/executor.d.ts.map +1 -1
  280. package/dist/objects/query/index.d.ts +2 -0
  281. package/dist/objects/query/index.d.ts.map +1 -1
  282. package/dist/objects/query/index.js +34 -24
  283. package/dist/objects/query/index.js.map +1 -1
  284. package/dist/objects/query/ir.d.ts +6 -2
  285. package/dist/objects/query/ir.d.ts.map +1 -1
  286. package/dist/objects/query/normalize.d.ts.map +1 -1
  287. package/dist/objects/query/validate.d.ts.map +1 -1
  288. package/dist/objects/sdk/object-handle.d.ts +5 -0
  289. package/dist/objects/sdk/object-handle.d.ts.map +1 -1
  290. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  291. package/dist/objects/sdk/query-executor.d.ts +2 -0
  292. package/dist/objects/sdk/query-executor.d.ts.map +1 -1
  293. package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
  294. package/dist/objects/vectors/handle.d.ts +4 -0
  295. package/dist/objects/vectors/handle.d.ts.map +1 -0
  296. package/dist/objects/vectors/indexing-batch.d.ts +6 -0
  297. package/dist/objects/vectors/indexing-batch.d.ts.map +1 -0
  298. package/dist/objects/vectors/indexing-generate.d.ts +11 -0
  299. package/dist/objects/vectors/indexing-generate.d.ts.map +1 -0
  300. package/dist/objects/vectors/indexing-runtime.d.ts +7 -0
  301. package/dist/objects/vectors/indexing-runtime.d.ts.map +1 -0
  302. package/dist/objects/vectors/indexing-shared.d.ts +17 -0
  303. package/dist/objects/vectors/indexing-shared.d.ts.map +1 -0
  304. package/dist/objects/vectors/indexing-single.d.ts +4 -0
  305. package/dist/objects/vectors/indexing-single.d.ts.map +1 -0
  306. package/dist/objects/vectors/indexing-store-batch.d.ts +6 -0
  307. package/dist/objects/vectors/indexing-store-batch.d.ts.map +1 -0
  308. package/dist/objects/vectors/indexing.d.ts +7 -0
  309. package/dist/objects/vectors/indexing.d.ts.map +1 -0
  310. package/dist/objects/vectors/profile.d.ts +13 -0
  311. package/dist/objects/vectors/profile.d.ts.map +1 -0
  312. package/dist/objects/vectors/query.d.ts +5 -0
  313. package/dist/objects/vectors/query.d.ts.map +1 -0
  314. package/dist/objects/vectors/resolve-query.d.ts +6 -0
  315. package/dist/objects/vectors/resolve-query.d.ts.map +1 -0
  316. package/dist/objects/vectors/types.d.ts +11 -0
  317. package/dist/objects/vectors/types.d.ts.map +1 -0
  318. package/dist/ontology/index.d.ts +2 -1
  319. package/dist/ontology/index.d.ts.map +1 -1
  320. package/dist/ontology/index.js +5 -5
  321. package/dist/ontology/index.js.map +1 -1
  322. package/dist/ontology/internal.js +5 -4
  323. package/dist/ontology/internal.js.map +1 -1
  324. package/dist/ontology/registry.d.ts.map +1 -1
  325. package/dist/ontology/types.d.ts +8 -9
  326. package/dist/ontology/types.d.ts.map +1 -1
  327. package/dist/ontology/validation/definition.d.ts +3 -0
  328. package/dist/ontology/validation/definition.d.ts.map +1 -0
  329. package/dist/ontology/validation/properties.d.ts.map +1 -1
  330. package/dist/ontology/validation/query.d.ts.map +1 -1
  331. package/dist/ontology/validation/schema.d.ts +1 -1
  332. package/dist/ontology/validation/schema.d.ts.map +1 -1
  333. package/dist/ontology/vector-profiles.d.ts +4 -0
  334. package/dist/ontology/vector-profiles.d.ts.map +1 -0
  335. package/dist/pipelines/index.js +28 -27
  336. package/dist/pipelines/index.js.map +1 -1
  337. package/dist/projections/internal.js +24 -23
  338. package/dist/projections/internal.js.map +1 -1
  339. package/dist/query.js +2 -2
  340. package/dist/queues/in-memory.d.ts +2 -1
  341. package/dist/queues/in-memory.d.ts.map +1 -1
  342. package/dist/queues/index.d.ts +1 -1
  343. package/dist/queues/index.d.ts.map +1 -1
  344. package/dist/queues/index.js +1 -1
  345. package/dist/queues/types.d.ts +5 -0
  346. package/dist/queues/types.d.ts.map +1 -1
  347. package/dist/runtime/create.d.ts +4 -3
  348. package/dist/runtime/create.d.ts.map +1 -1
  349. package/dist/runtime/host.d.ts +9 -6
  350. package/dist/runtime/host.d.ts.map +1 -1
  351. package/dist/runtime/internal.d.ts +3 -0
  352. package/dist/runtime/internal.d.ts.map +1 -1
  353. package/dist/runtime/internal.js +47 -1
  354. package/dist/runtime/internal.js.map +1 -1
  355. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  356. package/dist/runtime/sixb.d.ts +9 -4
  357. package/dist/runtime/sixb.d.ts.map +1 -1
  358. package/dist/runtime/types.d.ts +15 -3
  359. package/dist/runtime/types.d.ts.map +1 -1
  360. package/dist/sandboxes/auth.d.ts +16 -0
  361. package/dist/sandboxes/auth.d.ts.map +1 -0
  362. package/dist/sandboxes/config.d.ts +5 -0
  363. package/dist/sandboxes/config.d.ts.map +1 -0
  364. package/dist/sandboxes/configuration.d.ts +41 -0
  365. package/dist/sandboxes/configuration.d.ts.map +1 -0
  366. package/dist/sandboxes/environment.d.ts +13 -0
  367. package/dist/sandboxes/environment.d.ts.map +1 -0
  368. package/dist/sandboxes/errors.d.ts +1 -1
  369. package/dist/sandboxes/errors.d.ts.map +1 -1
  370. package/dist/sandboxes/index.d.ts +6 -1
  371. package/dist/sandboxes/index.d.ts.map +1 -1
  372. package/dist/sandboxes/index.js +16 -3
  373. package/dist/sandboxes/index.js.map +1 -1
  374. package/dist/sandboxes/sandbox.d.ts +35 -3
  375. package/dist/sandboxes/sandbox.d.ts.map +1 -1
  376. package/dist/shared/params/builders.d.ts +25 -0
  377. package/dist/shared/params/builders.d.ts.map +1 -0
  378. package/dist/shared/params/types.d.ts +47 -0
  379. package/dist/shared/params/types.d.ts.map +1 -0
  380. package/dist/shared/params/validation.d.ts +15 -0
  381. package/dist/shared/params/validation.d.ts.map +1 -0
  382. package/dist/shares/internal.js +23 -22
  383. package/dist/shares/internal.js.map +2 -2
  384. package/dist/storage/action-runs/failure.js +4 -3
  385. package/dist/storage/action-runs/failure.js.map +1 -1
  386. package/dist/storage/action-runs/provider.js +1 -1
  387. package/dist/storage/agents/in-memory.d.ts +2 -1
  388. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  389. package/dist/storage/agents/index.d.ts +1 -1
  390. package/dist/storage/agents/index.d.ts.map +1 -1
  391. package/dist/storage/agents/provider.d.ts +5 -1
  392. package/dist/storage/agents/provider.d.ts.map +1 -1
  393. package/dist/storage/agents/provider.js +8 -4
  394. package/dist/storage/agents/provider.js.map +1 -1
  395. package/dist/storage/agents/types.d.ts +49 -0
  396. package/dist/storage/agents/types.d.ts.map +1 -1
  397. package/dist/storage/ai-cost/analytics.d.ts +1 -0
  398. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  399. package/dist/storage/ai-cost/index.d.ts +1 -1
  400. package/dist/storage/ai-cost/index.d.ts.map +1 -1
  401. package/dist/storage/ai-cost/provider.js +2 -2
  402. package/dist/storage/ai-cost/types.d.ts +14 -2
  403. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  404. package/dist/storage/ai-limits/enforcement.js +4 -3
  405. package/dist/storage/ai-limits/enforcement.js.map +1 -1
  406. package/dist/storage/connector-connections/in-memory.d.ts +1 -0
  407. package/dist/storage/connector-connections/in-memory.d.ts.map +1 -1
  408. package/dist/storage/connector-connections/provider/connections.d.ts.map +1 -1
  409. package/dist/storage/connector-connections/provider/runs.d.ts +1 -0
  410. package/dist/storage/connector-connections/provider/runs.d.ts.map +1 -1
  411. package/dist/storage/connector-connections/provider/shared.d.ts +1 -0
  412. package/dist/storage/connector-connections/provider/shared.d.ts.map +1 -1
  413. package/dist/storage/connector-connections/provider.d.ts +1 -0
  414. package/dist/storage/connector-connections/provider.d.ts.map +1 -1
  415. package/dist/storage/connector-connections/provider.js +12 -17
  416. package/dist/storage/connector-connections/provider.js.map +6 -6
  417. package/dist/storage/connector-connections/types.d.ts +3 -1
  418. package/dist/storage/connector-connections/types.d.ts.map +1 -1
  419. package/dist/storage/executions/provider.d.ts +3 -3
  420. package/dist/storage/executions/provider.d.ts.map +1 -1
  421. package/dist/storage/executions/provider.js +13 -11
  422. package/dist/storage/executions/provider.js.map +3 -3
  423. package/dist/storage/executions/types.d.ts +3 -0
  424. package/dist/storage/executions/types.d.ts.map +1 -1
  425. package/dist/storage/executions/validation.d.ts.map +1 -1
  426. package/dist/storage/index.d.ts +5 -3
  427. package/dist/storage/index.d.ts.map +1 -1
  428. package/dist/storage/index.js +25 -22
  429. package/dist/storage/index.js.map +1 -1
  430. package/dist/storage/internal.js +2 -2
  431. package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
  432. package/dist/storage/objects/in-memory/read-source.d.ts +5 -0
  433. package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -1
  434. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
  435. package/dist/storage/objects/in-memory/storage.d.ts +7 -0
  436. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
  437. package/dist/storage/objects/types.d.ts +2 -0
  438. package/dist/storage/objects/types.d.ts.map +1 -1
  439. package/dist/storage/ontology/commits.d.ts +1 -0
  440. package/dist/storage/ontology/commits.d.ts.map +1 -1
  441. package/dist/storage/ontology/in-memory/index.d.ts +4 -0
  442. package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
  443. package/dist/storage/ontology/in-memory/materializations.d.ts +2 -0
  444. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  445. package/dist/storage/ontology/in-memory/shared-state.d.ts +7 -0
  446. package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
  447. package/dist/storage/ontology/in-memory/vector-indexing.d.ts +44 -0
  448. package/dist/storage/ontology/in-memory/vector-indexing.d.ts.map +1 -0
  449. package/dist/storage/ontology/in-memory/vectors.d.ts +31 -0
  450. package/dist/storage/ontology/in-memory/vectors.d.ts.map +1 -0
  451. package/dist/storage/ontology/index.d.ts +6 -0
  452. package/dist/storage/ontology/index.d.ts.map +1 -1
  453. package/dist/storage/ontology/outbox.d.ts +1 -0
  454. package/dist/storage/ontology/outbox.d.ts.map +1 -1
  455. package/dist/storage/ontology/provider.js +2 -2
  456. package/dist/storage/ontology/vector-indexing.d.ts +94 -0
  457. package/dist/storage/ontology/vector-indexing.d.ts.map +1 -0
  458. package/dist/storage/ontology/vectors.d.ts +56 -0
  459. package/dist/storage/ontology/vectors.d.ts.map +1 -0
  460. package/dist/storage/operation-scope.d.ts.map +1 -1
  461. package/dist/storage/operation-scope.js +1 -1
  462. package/dist/storage/projection-runs/provider.js +4 -3
  463. package/dist/storage/projection-runs/provider.js.map +1 -1
  464. package/dist/storage/types.d.ts +1 -1
  465. package/dist/storage/types.d.ts.map +1 -1
  466. package/dist/storage/workflow-runs/provider.js +9 -7
  467. package/dist/storage/workflow-runs/provider.js.map +1 -1
  468. package/dist/syncs/index.js +29 -28
  469. package/dist/syncs/index.js.map +1 -1
  470. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  471. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  472. package/dist/testing/index.js +488 -81
  473. package/dist/testing/index.js.map +10 -10
  474. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  475. package/dist/testing/object-query-contract.d.ts.map +1 -1
  476. package/dist/testing/object-read-scope-contract.d.ts.map +1 -1
  477. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  478. package/dist/testing/queues-contract.d.ts.map +1 -1
  479. package/dist/webhooks/internal.js +24 -23
  480. package/dist/webhooks/internal.js.map +2 -2
  481. package/dist/workers/index.js +3 -2
  482. package/dist/workers/index.js.map +2 -2
  483. package/dist/workflows/failure.d.ts.map +1 -1
  484. package/dist/workflows/index.js +47 -43
  485. package/dist/workflows/index.js.map +1 -1
  486. package/package.json +1 -1
  487. package/src/actions/builders/params.ts +1 -48
  488. package/src/actions/types/params.ts +14 -74
  489. package/src/actions/validation.ts +7 -84
  490. package/src/agents/errors.ts +3 -0
  491. package/src/agents/execution.ts +67 -15
  492. package/src/agents/ids.ts +8 -0
  493. package/src/agents/index.ts +1 -0
  494. package/src/agents/model-loop.ts +7 -0
  495. package/src/agents/request.ts +11 -0
  496. package/src/agents/sandbox.ts +44 -0
  497. package/src/agents/validation.ts +2 -108
  498. package/src/blob-storage/types.ts +4 -1
  499. package/src/connectors/connections/command-context.ts +21 -4
  500. package/src/connectors/connections/contracts.ts +4 -1
  501. package/src/connectors/connections/execution.ts +3 -0
  502. package/src/connectors/connections/runs.ts +38 -1
  503. package/src/connectors/connections/service.ts +6 -0
  504. package/src/datasets/validation.ts +40 -11
  505. package/src/datasets/write.ts +8 -11
  506. package/src/error-reporting/capability.ts +11 -0
  507. package/src/error-reporting/reports.ts +23 -0
  508. package/src/error-reporting/types.ts +12 -1
  509. package/src/errors/catalog.ts +12 -0
  510. package/src/errors/failure-message.ts +15 -0
  511. package/src/errors/internal.ts +57 -25
  512. package/src/events/outbox-dispatcher.ts +20 -26
  513. package/src/execution/authorization.ts +12 -5
  514. package/src/execution/authorized-object-reader.ts +37 -2
  515. package/src/execution/kernel-operation.ts +27 -0
  516. package/src/execution/scopes.ts +2 -0
  517. package/src/execution/types.ts +4 -4
  518. package/src/index.ts +60 -1
  519. package/src/lake-storage/in-memory.ts +7 -3
  520. package/src/lake-storage/types.ts +2 -0
  521. package/src/maintenance/ontology-maintenance.ts +6 -2
  522. package/src/maintenance/types.ts +1 -1
  523. package/src/materialization/errors.ts +2 -2
  524. package/src/materialization/index.ts +1 -0
  525. package/src/materialization/model.ts +2 -0
  526. package/src/materialization/vectors.ts +18 -0
  527. package/src/materializer/README.md +15 -1
  528. package/src/materializer/context.ts +10 -0
  529. package/src/materializer/edits/commit.ts +8 -1
  530. package/src/materializer/edits/vector-authority.ts +108 -0
  531. package/src/materializer/edits/vectors.ts +100 -0
  532. package/src/materializer/effective/validate.ts +10 -3
  533. package/src/materializer/effective/vector-indexing.ts +84 -0
  534. package/src/materializer/effective/vectors.ts +47 -0
  535. package/src/materializer/execution/work-executor.ts +11 -3
  536. package/src/materializer/projections/replace.ts +1 -1
  537. package/src/materializer/shared/normalize.ts +11 -0
  538. package/src/materializer/telemetry/append.ts +1 -1
  539. package/src/models/catalog-index.ts +38 -0
  540. package/src/models/catalog.ts +66 -38
  541. package/src/models/decision/catalog.ts +32 -0
  542. package/src/models/decision/errors.ts +18 -0
  543. package/src/models/decision/output.ts +101 -0
  544. package/src/models/decision/questions.ts +29 -0
  545. package/src/models/decision/runtime.ts +188 -0
  546. package/src/models/decision/types.ts +109 -0
  547. package/src/models/decision/validation.ts +335 -0
  548. package/src/models/definitions.ts +20 -1
  549. package/src/models/embedding-model.ts +129 -0
  550. package/src/models/execution/README.md +63 -0
  551. package/src/models/execution/binding.ts +2 -0
  552. package/src/models/execution/embedding.ts +133 -0
  553. package/src/models/execution/model-call-recorder.ts +42 -30
  554. package/src/models/execution/session.ts +81 -0
  555. package/src/models/execution.ts +10 -52
  556. package/src/models/generation-types.ts +2 -0
  557. package/src/models/index.ts +37 -0
  558. package/src/models/pricing.ts +7 -4
  559. package/src/objects/authorized-ontology-view.ts +12 -8
  560. package/src/objects/execution.ts +2 -0
  561. package/src/objects/query/executor.ts +13 -4
  562. package/src/objects/query/explain.ts +7 -2
  563. package/src/objects/query/index.ts +2 -0
  564. package/src/objects/query/ir.ts +6 -2
  565. package/src/objects/query/normalize.ts +5 -1
  566. package/src/objects/query/validate.ts +74 -73
  567. package/src/objects/sdk/object-handle.ts +3 -0
  568. package/src/objects/sdk/object-set.ts +1 -0
  569. package/src/objects/sdk/query-builder.ts +9 -3
  570. package/src/objects/sdk/query-executor.ts +2 -1
  571. package/src/objects/sdk/runtime-query-executor.ts +6 -2
  572. package/src/objects/vectors/README.md +59 -0
  573. package/src/objects/vectors/handle.ts +91 -0
  574. package/src/objects/vectors/indexing-batch.ts +163 -0
  575. package/src/objects/vectors/indexing-generate.ts +184 -0
  576. package/src/objects/vectors/indexing-runtime.ts +17 -0
  577. package/src/objects/vectors/indexing-shared.ts +188 -0
  578. package/src/objects/vectors/indexing-single.ts +51 -0
  579. package/src/objects/vectors/indexing-store-batch.ts +62 -0
  580. package/src/objects/vectors/indexing.ts +23 -0
  581. package/src/objects/vectors/profile.ts +64 -0
  582. package/src/objects/vectors/query.ts +16 -0
  583. package/src/objects/vectors/resolve-query.ts +89 -0
  584. package/src/objects/vectors/types.ts +10 -0
  585. package/src/ontology/index.ts +2 -0
  586. package/src/ontology/registry.ts +8 -0
  587. package/src/ontology/types.ts +9 -9
  588. package/src/ontology/validation/definition.ts +104 -0
  589. package/src/ontology/validation/properties.ts +14 -4
  590. package/src/ontology/validation/query.ts +34 -51
  591. package/src/ontology/validation/schema.ts +85 -23
  592. package/src/ontology/vector-profiles.ts +35 -0
  593. package/src/queues/in-memory.ts +5 -0
  594. package/src/queues/index.ts +1 -0
  595. package/src/queues/types.ts +10 -0
  596. package/src/runtime/create.ts +7 -6
  597. package/src/runtime/host.ts +42 -6
  598. package/src/runtime/internal.ts +3 -0
  599. package/src/runtime/resolve-definitions.ts +19 -1
  600. package/src/runtime/sixb.ts +27 -9
  601. package/src/runtime/types.ts +16 -4
  602. package/src/sandboxes/README.md +41 -0
  603. package/src/sandboxes/auth.ts +17 -0
  604. package/src/sandboxes/config.ts +37 -0
  605. package/src/sandboxes/configuration.ts +268 -0
  606. package/src/sandboxes/environment.ts +107 -0
  607. package/src/sandboxes/errors.ts +1 -1
  608. package/src/sandboxes/index.ts +15 -0
  609. package/src/sandboxes/sandbox.ts +38 -3
  610. package/src/shared/params/builders.ts +50 -0
  611. package/src/shared/params/types.ts +84 -0
  612. package/src/shared/params/validation.ts +114 -0
  613. package/src/storage/agents/in-memory.ts +25 -1
  614. package/src/storage/agents/index.ts +3 -0
  615. package/src/storage/agents/provider.ts +105 -0
  616. package/src/storage/agents/types.ts +54 -0
  617. package/src/storage/ai-cost/analytics.ts +59 -21
  618. package/src/storage/ai-cost/index.ts +1 -0
  619. package/src/storage/ai-cost/types.ts +19 -2
  620. package/src/storage/connector-connections/in-memory.ts +16 -18
  621. package/src/storage/connector-connections/provider/connections.ts +1 -15
  622. package/src/storage/connector-connections/provider/runs.ts +6 -0
  623. package/src/storage/connector-connections/provider/shared.ts +2 -3
  624. package/src/storage/connector-connections/provider.ts +6 -0
  625. package/src/storage/connector-connections/types.ts +5 -1
  626. package/src/storage/executions/provider.ts +24 -12
  627. package/src/storage/executions/types.ts +1 -0
  628. package/src/storage/executions/validation.ts +7 -3
  629. package/src/storage/index.ts +15 -1
  630. package/src/storage/objects/in-memory/query.ts +25 -11
  631. package/src/storage/objects/in-memory/read-scope.ts +9 -2
  632. package/src/storage/objects/in-memory/read-source.ts +5 -0
  633. package/src/storage/objects/in-memory/selected-reader.ts +5 -1
  634. package/src/storage/objects/in-memory/storage.ts +19 -1
  635. package/src/storage/objects/types.ts +2 -0
  636. package/src/storage/ontology/commits.ts +1 -0
  637. package/src/storage/ontology/in-memory/index.ts +20 -0
  638. package/src/storage/ontology/in-memory/materializations.ts +13 -0
  639. package/src/storage/ontology/in-memory/shared-state.ts +19 -3
  640. package/src/storage/ontology/in-memory/vector-indexing.ts +179 -0
  641. package/src/storage/ontology/in-memory/vectors.ts +73 -0
  642. package/src/storage/ontology/index.ts +14 -0
  643. package/src/storage/ontology/outbox.ts +1 -0
  644. package/src/storage/ontology/vector-indexing.ts +98 -0
  645. package/src/storage/ontology/vectors.ts +48 -0
  646. package/src/storage/operation-scope.ts +1 -0
  647. package/src/storage/types.ts +3 -0
  648. package/src/testing/agent-storage-contract.ts +246 -0
  649. package/src/testing/ai-cost-storage-contract.ts +134 -0
  650. package/src/testing/connector-connection-storage-contract.ts +11 -11
  651. package/src/testing/lake-storage-contract.ts +29 -0
  652. package/src/testing/object-query-contract.ts +41 -25
  653. package/src/testing/object-read-scope-contract.ts +1 -5
  654. package/src/testing/ontology-storage-contract.ts +8 -3
  655. package/src/testing/queues-contract.ts +31 -0
  656. package/src/workflows/failure.ts +10 -4
  657. package/src/workflows/validation.ts +2 -2
  658. package/dist/chunk-5hz0fnca.js.map +0 -12
  659. package/dist/chunk-5p1v802y.js.map +0 -44
  660. package/dist/chunk-7apz6hg4.js.map +0 -10
  661. package/dist/chunk-7bs40fe1.js.map +0 -12
  662. package/dist/chunk-860dwwy0.js.map +0 -14
  663. package/dist/chunk-93csa55g.js.map +0 -11
  664. package/dist/chunk-aa6z4a19.js.map +0 -12
  665. package/dist/chunk-ap0g1g74.js.map +0 -11
  666. package/dist/chunk-e0d1rzef.js.map +0 -15
  667. package/dist/chunk-f0rwz2vh.js.map +0 -11
  668. package/dist/chunk-f4w3yp4f.js.map +0 -12
  669. package/dist/chunk-g7knyczr.js.map +0 -14
  670. package/dist/chunk-mrp7k0pw.js.map +0 -10
  671. package/dist/chunk-ms2tmn1k.js.map +0 -17
  672. package/dist/chunk-nmbxcaqx.js.map +0 -19
  673. package/dist/chunk-nt99sxd6.js.map +0 -14
  674. package/dist/chunk-p6a4npdx.js.map +0 -58
  675. package/dist/chunk-qyeptdyv.js.map +0 -15
  676. package/dist/chunk-r7fj830t.js.map +0 -36
  677. package/dist/chunk-rb1xx120.js.map +0 -11
  678. package/dist/chunk-yv79ncbv.js.map +0 -10
  679. package/dist/chunk-z3y411fq.js +0 -99
  680. package/dist/chunk-z3y411fq.js.map +0 -11
  681. /package/dist/{chunk-17kfctj6.js.map → chunk-0mza4xb2.js.map} +0 -0
  682. /package/dist/{chunk-rtk71jzp.js.map → chunk-3bnt2wna.js.map} +0 -0
  683. /package/dist/{chunk-awbhdqyc.js.map → chunk-3ghw2t5q.js.map} +0 -0
  684. /package/dist/{chunk-b19g04jk.js.map → chunk-3h7ctayx.js.map} +0 -0
  685. /package/dist/{chunk-wjasrj67.js.map → chunk-3qpcrcj8.js.map} +0 -0
  686. /package/dist/{chunk-0y39rgsb.js.map → chunk-5tetw4hn.js.map} +0 -0
  687. /package/dist/{chunk-c5rkjrgp.js.map → chunk-7ytf06d3.js.map} +0 -0
  688. /package/dist/{chunk-358caqf5.js.map → chunk-bfjv1adk.js.map} +0 -0
  689. /package/dist/{chunk-b0ec55a1.js.map → chunk-bg2bs62d.js.map} +0 -0
  690. /package/dist/{chunk-g6cke204.js.map → chunk-f85hpqnm.js.map} +0 -0
  691. /package/dist/{chunk-vsj3mdfj.js.map → chunk-fc5zfxy1.js.map} +0 -0
  692. /package/dist/{chunk-1824gssz.js.map → chunk-gswwr35f.js.map} +0 -0
  693. /package/dist/{chunk-92vk7gta.js.map → chunk-gzt6v1ja.js.map} +0 -0
  694. /package/dist/{chunk-gqh45d2n.js.map → chunk-hkw8rykk.js.map} +0 -0
  695. /package/dist/{chunk-5c7ga8zz.js.map → chunk-jjwhy3rs.js.map} +0 -0
  696. /package/dist/{chunk-9qsh3p5y.js.map → chunk-rb143ggb.js.map} +0 -0
  697. /package/dist/{chunk-653vwrzr.js.map → chunk-rdghfsss.js.map} +0 -0
  698. /package/dist/{chunk-bn138h9w.js.map → chunk-t7dzd1tm.js.map} +0 -0
  699. /package/dist/{chunk-pr2h4bv4.js.map → chunk-tg4g4zh0.js.map} +0 -0
  700. /package/dist/{chunk-8vj0rjgs.js.map → chunk-wjffn5m4.js.map} +0 -0
  701. /package/dist/{chunk-agbbygvh.js.map → chunk-xn686q2e.js.map} +0 -0
  702. /package/dist/{chunk-v2vcg0w6.js.map → chunk-xtfryrfb.js.map} +0 -0
@@ -290,6 +290,252 @@ export function runAgentStorageContractSuite<TStorage extends AgentStorageContra
290
290
  }
291
291
 
292
292
  describe(label, () => {
293
+ test("replaces lost state only under its current execution fence", async () => {
294
+ // Regression proof: remove replace's name/owner guards; the stale attempts succeed.
295
+ await withStorage(async (storage, fixture) => {
296
+ await storage.threads.create(threadInput({ sandboxParams: {} }))
297
+ const run = runInput({ execution: execution("first", new Date("2099-01-01")) })
298
+ await createAndStartRun(storage, fixture, run)
299
+ const acquire = {
300
+ projectId,
301
+ id: "thr_1",
302
+ action: "acquire" as const,
303
+ runId: run.id,
304
+ executionToken: "first",
305
+ name: "name-1",
306
+ sourceFingerprint: "a".repeat(64),
307
+ }
308
+ await storage.threads.transitionSandbox(acquire)
309
+ const replace = { ...acquire, action: "replace" as const, nextName: "name-2" }
310
+ await expectAgentError(storage.threads.transitionSandbox(replace), "invalid_state")
311
+ await storage.threads.transitionSandbox({
312
+ ...acquire,
313
+ action: "settle",
314
+ status: "ready",
315
+ initialized: true,
316
+ })
317
+ await expectAgentError(storage.threads.transitionSandbox(replace), "invalid_state")
318
+ await storage.threads.transitionSandbox(acquire)
319
+ for (const nextName of ["name-1", "../invalid", ""]) {
320
+ await expectAgentError(
321
+ storage.threads.transitionSandbox({ ...replace, nextName }),
322
+ "invalid_state"
323
+ )
324
+ }
325
+ await expectAgentError(
326
+ storage.threads.transitionSandbox({ ...replace, executionToken: "stale" }),
327
+ "execution_lost"
328
+ )
329
+ const replacement = await storage.threads.transitionSandbox(replace)
330
+ const resetAt = replacement.resetAt
331
+ expect(replacement).toMatchObject({
332
+ name: "name-2",
333
+ status: "busy",
334
+ initialized: false,
335
+ owner: { runId: run.id, executionToken: "first" },
336
+ sourceFingerprint: acquire.sourceFingerprint,
337
+ resetAt: expect.any(String),
338
+ })
339
+ await expectAgentError(storage.threads.transitionSandbox(replace), "invalid_state")
340
+ await expectAgentError(
341
+ storage.threads.transitionSandbox({
342
+ ...acquire,
343
+ action: "settle",
344
+ status: "ready",
345
+ initialized: true,
346
+ }),
347
+ "invalid_state"
348
+ )
349
+ await storage.threads.transitionSandbox({
350
+ ...acquire,
351
+ name: "name-2",
352
+ action: "settle",
353
+ status: "ready",
354
+ initialized: true,
355
+ })
356
+ const resumed = await storage.threads.transitionSandbox({
357
+ ...acquire,
358
+ name: "name-2",
359
+ })
360
+ expect(resumed.resetAt).toBe(resetAt)
361
+ expect((await storage.threads.getById({ projectId, id: "thr_1" }))?.sandboxState).toEqual(
362
+ resumed
363
+ )
364
+ })
365
+ })
366
+
367
+ test("fences workspace ownership across reclamation and explicit recreation", async () => {
368
+ // Regression proof: remove the busy-state or owner-token checks in transitionAgentThreadSandbox.
369
+ await withStorage(async (storage, fixture) => {
370
+ await storage.threads.create(threadInput({ sandboxParams: {} }))
371
+ const input = runInput({ execution: execution("first", new Date("2099-01-01")) })
372
+ await createTestAgentExecution(fixture, {
373
+ projectId,
374
+ runId: input.id,
375
+ executionId: input.executionId,
376
+ authority: "inherited",
377
+ })
378
+ await storage.runs.create(input)
379
+ await storage.runs.start(input)
380
+ const acquire = {
381
+ projectId,
382
+ id: "thr_1",
383
+ action: "acquire" as const,
384
+ runId: input.id,
385
+ executionToken: "first",
386
+ name: "name-1",
387
+ sourceFingerprint: "a".repeat(64),
388
+ }
389
+ const attempts = await Promise.allSettled([
390
+ storage.threads.transitionSandbox(acquire),
391
+ storage.threads.transitionSandbox(acquire),
392
+ ])
393
+ expect(attempts.filter((attempt) => attempt.status === "fulfilled")).toHaveLength(1)
394
+ expect(
395
+ (await storage.threads.getById({ projectId, id: "thr_1" }))?.sandboxState
396
+ ).toMatchObject({ status: "busy", initialized: false })
397
+ await expectAgentError(storage.threads.transitionSandbox(acquire), "invalid_state")
398
+ await storage.runs.reclaim({
399
+ projectId,
400
+ id: input.id,
401
+ execution: execution("second", new Date("2099-01-01")),
402
+ })
403
+ await expectAgentError(
404
+ storage.threads.transitionSandbox({
405
+ ...acquire,
406
+ executionToken: "second",
407
+ }),
408
+ "invalid_state"
409
+ )
410
+ await expectAgentError(
411
+ storage.threads.transitionSandbox({
412
+ ...acquire,
413
+ action: "settle",
414
+ status: "ready",
415
+ initialized: true,
416
+ }),
417
+ "execution_lost"
418
+ )
419
+ const recreate = {
420
+ projectId,
421
+ id: "thr_1",
422
+ action: "recreate" as const,
423
+ expectedSandboxName: "name-1",
424
+ name: "name-2",
425
+ }
426
+ await expectAgentError(storage.threads.transitionSandbox(recreate), "invalid_state")
427
+ await storage.runs.finish({
428
+ projectId,
429
+ id: input.id,
430
+ executionToken: "second",
431
+ status: "failed",
432
+ })
433
+ expect(await storage.threads.transitionSandbox(recreate)).toEqual({
434
+ name: "name-2",
435
+ status: "new",
436
+ initialized: false,
437
+ resetAt: expect.any(String),
438
+ })
439
+ await expectAgentError(storage.threads.transitionSandbox(recreate), "invalid_state")
440
+ })
441
+ })
442
+
443
+ test("resumes only confirmed workspace state with the pinned source", async () => {
444
+ await withStorage(async (storage, fixture) => {
445
+ await storage.threads.create(threadInput({ sandboxParams: {} }))
446
+ const input = runInput({ execution: execution("owner", new Date("2099-01-01")) })
447
+ await createTestAgentExecution(fixture, {
448
+ projectId,
449
+ runId: input.id,
450
+ executionId: input.executionId,
451
+ authority: "inherited",
452
+ })
453
+ await storage.runs.create(input)
454
+ await storage.runs.start(input)
455
+ const acquire = {
456
+ projectId,
457
+ id: "thr_1",
458
+ action: "acquire" as const,
459
+ runId: input.id,
460
+ executionToken: "owner",
461
+ name: "name",
462
+ sourceFingerprint: "b".repeat(64),
463
+ }
464
+ await storage.threads.transitionSandbox(acquire)
465
+ await storage.threads.transitionSandbox({
466
+ ...acquire,
467
+ action: "settle",
468
+ status: "ready",
469
+ initialized: true,
470
+ })
471
+ await expectAgentError(
472
+ storage.threads.transitionSandbox({
473
+ ...acquire,
474
+ sourceFingerprint: "c".repeat(64),
475
+ }),
476
+ "invalid_state"
477
+ )
478
+ expect(await storage.threads.transitionSandbox(acquire)).toMatchObject({
479
+ status: "busy",
480
+ initialized: true,
481
+ })
482
+ })
483
+ })
484
+
485
+ test("snapshots workspace bindings without accepting runtime state or credentials", async () => {
486
+ // Regression proof: remove snapshotAgentThreadSandboxParams from a provider's thread create.
487
+ await withStorage(async (storage) => {
488
+ const sandboxParams = { clientId: "acme", nested: { branch: "main" } }
489
+ const record = await storage.threads.create(threadInput({ sandboxParams }))
490
+ sandboxParams.nested.branch = "changed"
491
+ const read = await storage.threads.getById({ projectId, id: record.id })
492
+ expect(read?.sandboxParams).toEqual({ clientId: "acme", nested: { branch: "main" } })
493
+ const mutable = record.sandboxParams?.nested
494
+ if (mutable && typeof mutable === "object" && !Array.isArray(mutable))
495
+ mutable.branch = "tampered"
496
+ expect((await storage.threads.list({ projectId })).threads[0]?.sandboxParams).toEqual(
497
+ read?.sandboxParams
498
+ )
499
+ await expectAgentError(
500
+ storage.threads.create(
501
+ threadInput({
502
+ id: "unsafe",
503
+ // @ts-expect-error storage requires a JSON object
504
+ sandboxParams: [],
505
+ })
506
+ ),
507
+ "invalid_input"
508
+ )
509
+ await expectAgentError(
510
+ storage.threads.create(
511
+ threadInput({
512
+ id: "non-json",
513
+ // @ts-expect-error storage accepts normalized JSON, not typed Dates
514
+ sandboxParams: { at: new Date() },
515
+ })
516
+ ),
517
+ "invalid_input"
518
+ )
519
+ })
520
+ })
521
+
522
+ test("keeps delimiter-containing project and sandbox thread ids distinct", async () => {
523
+ // Regression proof: change the memory store key back to projectId + ":" + id.
524
+ await withStorage(async (storage) => {
525
+ await storage.threads.create(
526
+ threadInput({ projectId: "a:b", id: "c", sandboxParams: { repo: "one" } })
527
+ )
528
+ await storage.threads.create(
529
+ threadInput({ projectId: "a", id: "b:c", sandboxParams: { repo: "two" } })
530
+ )
531
+ expect(
532
+ (await storage.threads.getById({ projectId: "a:b", id: "c" }))?.sandboxParams?.repo
533
+ ).toBe("one")
534
+ expect(
535
+ (await storage.threads.getById({ projectId: "a", id: "b:c" }))?.sandboxParams?.repo
536
+ ).toBe("two")
537
+ })
538
+ })
293
539
  // ── threads ───────────────────────────────────────────────────────────────────────────────
294
540
 
295
541
  test("creates threads, isolates projects, and rejects duplicate ids", async () => {
@@ -236,8 +236,22 @@ export function runAiCostStorageContractSuite<TStorage extends AiCostStorage>(
236
236
  inputTokens: 15,
237
237
  outputTokens: 12,
238
238
  totalTokens: 27,
239
+ uncachedInputTokens: 12,
240
+ cacheReadInputTokens: 0,
239
241
  reportingStatus: "complete",
240
242
  },
243
+ usageCoverage: {
244
+ completeCallCount: 3,
245
+ fieldCallCounts: {
246
+ inputTokens: 3,
247
+ outputTokens: 3,
248
+ uncachedInputTokens: 1,
249
+ cacheReadInputTokens: 1,
250
+ cacheWriteInputTokens: 0,
251
+ textOutputTokens: 0,
252
+ reasoningOutputTokens: 0,
253
+ },
254
+ },
241
255
  costs: {
242
256
  amounts: [{ currency: "USD", amountNanos: "95000" }],
243
257
  ratedCallCount: 1,
@@ -290,6 +304,85 @@ export function runAiCostStorageContractSuite<TStorage extends AiCostStorage>(
290
304
  }
291
305
  })
292
306
 
307
+ test("retains known tokens and coverage across incomplete periods", async () => {
308
+ // Removal proof: require presentCallCount === modelCallCount in finishAggregateUsage.
309
+ // Both the in-memory and SQL-backed contract runs then lose the Sep 16/18 totals.
310
+ const storage = await fixture()
311
+ try {
312
+ // Currency fragments must merge coverage and usage exactly once per call.
313
+ for (const [index, currency] of ["USD", "EUR"].entries()) {
314
+ await storage.recordModelCallCost(
315
+ ratedCost(`partial_16_${index}`, {
316
+ components: [],
317
+ money: { currency, amountNanos: "1" },
318
+ priceSource: { ...priceSource(`partial_${index}`), sourceId: "provider-reported" },
319
+ })
320
+ )
321
+ }
322
+ const overview = await storage.queryProjectOverview({
323
+ projectId,
324
+ from: new Date("2026-09-16"),
325
+ to: new Date("2026-09-19"),
326
+ bucket: "day",
327
+ })
328
+ expect(
329
+ overview.series.map((period) => ({
330
+ calls: period.modelCallCount,
331
+ total: period.usage.totalTokens,
332
+ complete: period.usageCoverage.completeCallCount,
333
+ }))
334
+ ).toEqual([
335
+ { calls: 87, total: 4_013_782, complete: 84 },
336
+ { calls: 0, total: undefined, complete: 0 },
337
+ { calls: 29, total: 334_815, complete: 28 },
338
+ ])
339
+ for (const aggregate of [overview.totals, ...overview.models, ...overview.workflows]) {
340
+ expect(aggregate.usage).toEqual({
341
+ inputTokens: 4_348_597,
342
+ outputTokens: 0,
343
+ totalTokens: 4_348_597,
344
+ reportingStatus: "partial",
345
+ })
346
+ expect(aggregate.usageCoverage).toMatchObject({
347
+ completeCallCount: 112,
348
+ fieldCallCounts: { inputTokens: 112, outputTokens: 112, cacheReadInputTokens: 0 },
349
+ })
350
+ }
351
+ expect(overview.totals.costs.amounts).toEqual([
352
+ { currency: "EUR", amountNanos: "1" },
353
+ { currency: "USD", amountNanos: "1" },
354
+ ])
355
+ const edges = await storage.queryProjectOverview({
356
+ projectId,
357
+ from: new Date("2026-09-19"),
358
+ to: new Date("2026-09-22"),
359
+ bucket: "day",
360
+ providerId: "gateway",
361
+ modelId: "partial/model",
362
+ })
363
+ expect(edges.series[0]).toMatchObject({
364
+ usage: { inputTokens: 3, outputTokens: 4, totalTokens: 7, reportingStatus: "partial" },
365
+ usageCoverage: {
366
+ completeCallCount: 0,
367
+ fieldCallCounts: { inputTokens: 1, outputTokens: 1 },
368
+ },
369
+ })
370
+ expect(edges.series[1]).toMatchObject({
371
+ modelCallCount: 1,
372
+ usage: { reportingStatus: "unavailable" },
373
+ usageCoverage: { completeCallCount: 0 },
374
+ })
375
+ expect(edges.series[1]?.usage.totalTokens).toBeUndefined()
376
+ expect(edges.series[2]).toMatchObject({
377
+ usage: { inputTokens: 0, totalTokens: 0, reportingStatus: "partial" },
378
+ usageCoverage: { completeCallCount: 0 },
379
+ })
380
+ expect(edges.series[2]?.usage.outputTokens).toBeUndefined()
381
+ } finally {
382
+ await options.cleanup?.(storage)
383
+ }
384
+ })
385
+
293
386
  test("rejects missing usage and mismatched billed quantities", async () => {
294
387
  const storage = await fixture()
295
388
  try {
@@ -405,4 +498,45 @@ export async function seedAiCostStorageContractUsage(
405
498
  occurredAt: new Date("2026-08-03T12:00:00.000Z"),
406
499
  recordedAt: new Date("2026-08-03T12:00:00.100Z"),
407
500
  })
501
+
502
+ for (const [day, calls, complete, tokens] of [
503
+ [16, 87, 84, 4_013_782],
504
+ [18, 29, 28, 334_815],
505
+ ] as const) {
506
+ for (let index = 0; index < calls; index++) {
507
+ await usage.recordModelCall({
508
+ id: `partial_${day}_${index}`,
509
+ projectId,
510
+ executionId: otherExecutionId,
511
+ attempt: 1,
512
+ callId: `partial_${day}_${index}`,
513
+ responseId: `response_partial_${day}_${index}`,
514
+ requesterGroupIds: [],
515
+ providerId: "gateway",
516
+ requestedModelId: "partial/model",
517
+ usage: index < complete ? { inputTokens: index === 0 ? tokens : 0, outputTokens: 0 } : {},
518
+ occurredAt: new Date(`2026-09-${day}T12:00:00Z`),
519
+ })
520
+ }
521
+ }
522
+ for (const [index, day, counts] of [
523
+ [0, 19, { inputTokens: 3 }],
524
+ [1, 19, { outputTokens: 4 }],
525
+ [2, 20, {}],
526
+ [3, 21, { inputTokens: 0 }],
527
+ ] as const) {
528
+ await usage.recordModelCall({
529
+ id: `edge_${index}`,
530
+ projectId,
531
+ executionId: otherExecutionId,
532
+ attempt: 1,
533
+ callId: `edge_${index}`,
534
+ responseId: `response_edge_${index}`,
535
+ requesterGroupIds: [],
536
+ providerId: "gateway",
537
+ requestedModelId: "partial/model",
538
+ usage: counts,
539
+ occurredAt: new Date(`2026-09-${day}T12:00:00Z`),
540
+ })
541
+ }
408
542
  }
@@ -486,25 +486,25 @@ export function runConnectorConnectionStorageContractSuite<
486
486
  })
487
487
  })
488
488
 
489
- test("commits expiry cleanup before rejecting account selection", async () => {
489
+ test("allows account selection after its legacy deadline", async () => {
490
490
  await withStorage(async (storage, root) => {
491
491
  const authorization = await createAuthorization(storage, "authorization-a", "account-a")
492
- await options.advanceTime(root, 60_000)
492
+ await options.advanceTime(root, 365 * 24 * 60 * 60_000)
493
493
 
494
- await expect(connect(storage, authorization, "connection-a", "account-a")).rejects.toThrow(
495
- "selectable authorization"
496
- )
494
+ await expect(
495
+ connect(storage, authorization, "connection-a", "account-a")
496
+ ).resolves.toMatchObject({ connection: { status: "connected" } })
497
497
  await expect(
498
498
  storage.getAuthorization(authorizationKey(authorization.id))
499
- ).resolves.toMatchObject({ status: "revocation_pending" })
499
+ ).resolves.toMatchObject({ status: "active" })
500
500
  })
501
501
  })
502
502
 
503
- test("commits lazy run expiry before rejecting a late selection", async () => {
503
+ test("keeps account-selection runs selectable after their legacy deadline", async () => {
504
504
  await withStorage(async (storage, root) => {
505
505
  const authorization = await createAuthorization(storage, "authorization-a", "account-a")
506
506
  await createSelectionRun(storage, authorization)
507
- await options.advanceTime(root, 60_000)
507
+ await options.advanceTime(root, 365 * 24 * 60 * 60_000)
508
508
 
509
509
  await expect(
510
510
  storage.putConnectionFromRun({
@@ -515,13 +515,13 @@ export function runConnectorConnectionStorageContractSuite<
515
515
  account: { id: "account-a", label: "Account A" },
516
516
  replace: false,
517
517
  })
518
- ).rejects.toThrow("invalid, expired, or already used")
518
+ ).resolves.toMatchObject({ run: { status: "succeeded" } })
519
519
  await expect(
520
520
  storage.getConnectionRun({ projectId, connectorId, runId: "run-a" })
521
- ).resolves.toMatchObject({ status: "expired" })
521
+ ).resolves.toMatchObject({ status: "succeeded" })
522
522
  await expect(
523
523
  storage.getAuthorization(authorizationKey(authorization.id))
524
- ).resolves.toMatchObject({ status: "revocation_pending" })
524
+ ).resolves.toMatchObject({ status: "active" })
525
525
  })
526
526
  })
527
527
 
@@ -285,6 +285,35 @@ export function runLakeStorageContractSuite<TStorage extends LakeStorage>(
285
285
  })
286
286
 
287
287
  describe("writes and reads", () => {
288
+ test("cancels reads before starting and between rows", async () => {
289
+ // Red check: remove readRows' signal checks in the provider under test.
290
+ await withStorage(async (storage) => {
291
+ await storage.createDataset(writeDataset)
292
+ const write = await storage.beginWrite({ dataset: writeDataset, mode: "snapshot" })
293
+ await write.writeRows([
294
+ { orderId: "1", customerName: "first" },
295
+ { orderId: "2", customerName: "second" },
296
+ ])
297
+ await write.commit()
298
+ const controller = new AbortController()
299
+ const rows = storage
300
+ .readRows({ datasetId: writeDataset.id, signal: controller.signal })
301
+ [Symbol.asyncIterator]()
302
+ try {
303
+ expect((await rows.next()).done).toBe(false)
304
+ controller.abort(new Error("cancel dataset read"))
305
+ await expect(rows.next()).rejects.toThrow("cancel dataset read")
306
+ await expect(
307
+ collectRows(
308
+ storage.readRows({ datasetId: writeDataset.id, signal: controller.signal })
309
+ )
310
+ ).rejects.toThrow("cancel dataset read")
311
+ } finally {
312
+ await rows.return?.()
313
+ }
314
+ })
315
+ })
316
+
288
317
  test("keeps immutable-version row order and offsets stable", async () => {
289
318
  await withStorage(async (storage) => {
290
319
  await storage.createDataset(writeDataset)
@@ -10,6 +10,7 @@ import {
10
10
  normalizeObjectQuery,
11
11
  type ObjectQuery,
12
12
  ObjectQueryPlanningError,
13
+ planObjectQuery,
13
14
  validateObjectQuery,
14
15
  } from "../objects/query"
15
16
  import { defineObjectType, link, OntologyRegistry, prop, stringEnum } from "../ontology"
@@ -85,16 +86,11 @@ const Room = defineObjectType({
85
86
  { type: "map", keySchema: "string", valueSchema: "string" },
86
87
  { query: { searchable: true, filterable: true } }
87
88
  ),
88
- prop(
89
- "embedding",
90
- { type: "array", items: "double" },
91
- { query: { searchable: true, vector: true } }
92
- ),
89
+ prop("embedding", { type: "array", items: "double" }, { query: { searchable: true } }),
93
90
  ],
94
91
  links: [link("hasDevice", Device)],
95
92
  search: {
96
93
  defaultText: ["name", "description"],
97
- vector: { property: "embedding", source: ["name", "description"] },
98
94
  },
99
95
  })
100
96
 
@@ -1174,34 +1170,54 @@ export function runObjectQueryProviderContractSuite<TStorage extends Storage>(
1174
1170
  })
1175
1171
  })
1176
1172
 
1177
- test("executes or rejects vector search according to provider capabilities", async () => {
1178
- await withStorage(async ({ objects: storage, fixture }) => {
1179
- await seedObjectQueryContractData(fixture)
1173
+ test("plans or rejects vector search according to provider capabilities", async () => {
1174
+ await withStorage(async ({ objects: storage }) => {
1175
+ // Keep generic fixture writes usable by providers without vector persistence.
1176
+ const ontology = new OntologyRegistry({
1177
+ sources: [
1178
+ Device,
1179
+ defineObjectType({
1180
+ ...Room,
1181
+ search: {
1182
+ vectors: {
1183
+ content: {
1184
+ source: ["name", "description"],
1185
+ model: {
1186
+ providerId: "test",
1187
+ modelId: "embedding",
1188
+ definition: {
1189
+ kind: "embedding",
1190
+ providerId: "test",
1191
+ modelId: "embedding",
1192
+ dimensions: 2,
1193
+ },
1194
+ },
1195
+ },
1196
+ },
1197
+ },
1198
+ }),
1199
+ ],
1200
+ })
1180
1201
  const query: ObjectQuery = {
1181
1202
  kind: "vector",
1182
- propertyId: "embedding",
1203
+ profile: "content",
1183
1204
  vector: [1, 0],
1184
1205
  k: 2,
1185
1206
  input: { kind: "start", objectTypeId: Room.id },
1186
1207
  }
1187
1208
 
1209
+ // Native vector execution is covered by the dedicated vector-search suite.
1210
+ const validated = validateObjectQuery(query, { ontology })
1211
+ const plan = planObjectQuery(validated.query, {
1212
+ capabilities: storage.queryCapabilities(),
1213
+ hasQueryObjects: typeof storage.queryObjects === "function",
1214
+ })
1188
1215
  if (storage.queryCapabilities().nodes?.vector === true) {
1189
- const result = await executeObjectQuery(
1190
- { projectId, query },
1191
- { ontology: objectQueryContractOntology, storage }
1192
- )
1193
- expect(result.plan.mode).toBe("pushdown")
1194
- expect(ids(result)).toEqual(["room-alpha", "room-beta"])
1195
- return
1216
+ expect(plan.mode).toBe("pushdown")
1217
+ } else {
1218
+ expect(plan.mode).toBe("rejected")
1219
+ expect(plan.issues.map((issue) => issue.code)).toContain("query_node_not_supported")
1196
1220
  }
1197
-
1198
- await expectPlanningIssue(
1199
- executeObjectQuery(
1200
- { projectId, query },
1201
- { ontology: objectQueryContractOntology, storage }
1202
- ),
1203
- "query_node_not_supported"
1204
- )
1205
1221
  })
1206
1222
  })
1207
1223
 
@@ -70,11 +70,7 @@ const Proposal = defineObjectType({
70
70
  }),
71
71
  prop("rank", "double", { query: { searchable: true, filterable: true, sortable: true } }),
72
72
  prop("category", "string", { query: { searchable: true, filterable: true, facet: true } }),
73
- prop(
74
- "embedding",
75
- { type: "array", items: "double" },
76
- { query: { searchable: true, vector: true } }
77
- ),
73
+ prop("embedding", { type: "array", items: "double" }, { query: { searchable: true } }),
78
74
  prop("secret", "string", { query: { searchable: true, filterable: true, facet: true } }),
79
75
  ],
80
76
  links: [
@@ -677,7 +677,10 @@ export function runOntologyStorageContractSuite<TStorage extends OntologyStorage
677
677
  })
678
678
  })
679
679
 
680
- test("keeps batch outbox settlement atomic when callers catch a stale lease", async () => {
680
+ test.each([
681
+ "root",
682
+ "transaction",
683
+ ] as const)("keeps %s batch outbox settlement atomic when callers catch a stale lease", async (boundary) => {
681
684
  await withStorage(async (storage) => {
682
685
  await commitExactObject(storage, "lease-atomic-a")
683
686
  await commitExactObject(storage, "lease-atomic-b")
@@ -699,7 +702,7 @@ export function runOntologyStorageContractSuite<TStorage extends OntologyStorage
699
702
  const untouched = claimed.find((row) => row.envelope.id !== reclaimed!.envelope.id)!
700
703
 
701
704
  let conflict: unknown
702
- await storage.transaction(async (tx) => {
705
+ const settle = async (tx: OntologyContractStorage) => {
703
706
  try {
704
707
  await tx.ontology.outbox.markPublished({
705
708
  projectId: "contract-project",
@@ -710,7 +713,9 @@ export function runOntologyStorageContractSuite<TStorage extends OntologyStorage
710
713
  } catch (error) {
711
714
  conflict = error
712
715
  }
713
- })
716
+ }
717
+ if (boundary === "transaction") await storage.transaction(settle)
718
+ else await settle(storage)
714
719
  expect(conflict).toMatchObject({ kind: "outbox-lease" })
715
720
 
716
721
  await storage.ontology.outbox.markPublished({
@@ -54,6 +54,37 @@ export function runQueueContractSuite(label: string, options: QueueContractSuite
54
54
  }
55
55
 
56
56
  describe(label, () => {
57
+ test("vector indexing has independent delivery capacity and idempotent generation ids", async () => {
58
+ await withQueues(async (queues) => {
59
+ const jobs = [
60
+ {
61
+ id: "generation-1",
62
+ type: "vector.index.requested" as const,
63
+ payload: { indexingId: "generation-1" },
64
+ },
65
+ ]
66
+ await queues.vectorIndexing.enqueue({ projectId: "project-a", jobs })
67
+ await queues.vectorIndexing.enqueue({ projectId: "project-a", jobs })
68
+ expect(
69
+ await queues.projections.claim({ projectId: "project-a", workerId: "projection" })
70
+ ).toHaveLength(0)
71
+ const claimed = await queues.vectorIndexing.claim({
72
+ projectId: "project-a",
73
+ workerId: "indexing",
74
+ limit: 2,
75
+ })
76
+ expect(claimed).toHaveLength(1)
77
+ expect(claimed[0]!.job.payload).toEqual({ indexingId: "generation-1" })
78
+ await queues.vectorIndexing.complete({
79
+ projectId: "project-a",
80
+ jobId: claimed[0]!.job.id,
81
+ leaseId: claimed[0]!.leaseId,
82
+ })
83
+ expect(
84
+ await queues.vectorIndexing.claim({ projectId: "project-a", workerId: "indexing" })
85
+ ).toHaveLength(0)
86
+ })
87
+ })
57
88
  describe("enqueue", () => {
58
89
  test("returns envelopes with generated id, createdAt, availableAt, attempt=0", async () => {
59
90
  await withQueues(async (queues) => {