@sixb/core 0.1.15 → 0.1.17

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 (585) hide show
  1. package/dist/actions/index.js +25 -25
  2. package/dist/actions/types/context.d.ts +2 -2
  3. package/dist/actions/types/context.d.ts.map +1 -1
  4. package/dist/actions/worker.js +1 -1
  5. package/dist/agents/index.js +41 -40
  6. package/dist/agents/index.js.map +1 -1
  7. package/dist/auth/index.js +5 -5
  8. package/dist/authorization/index.js +2 -2
  9. package/dist/blob-storage/download-urls.d.ts +41 -0
  10. package/dist/blob-storage/download-urls.d.ts.map +1 -0
  11. package/dist/blob-storage/execution.d.ts +9 -1
  12. package/dist/blob-storage/execution.d.ts.map +1 -1
  13. package/dist/blob-storage/index.js +5 -3
  14. package/dist/blob-storage/index.js.map +1 -1
  15. package/dist/blob-storage/internal.d.ts +2 -0
  16. package/dist/blob-storage/internal.d.ts.map +1 -0
  17. package/dist/blob-storage/internal.js +11 -0
  18. package/dist/blob-storage/internal.js.map +9 -0
  19. package/dist/bootstrap/index.js +45 -44
  20. package/dist/bootstrap/index.js.map +1 -1
  21. package/dist/{chunk-wem5vqjw.js → chunk-10styjgk.js} +18 -13
  22. package/dist/{chunk-wem5vqjw.js.map → chunk-10styjgk.js.map} +3 -3
  23. package/dist/{chunk-hgqpcmyr.js → chunk-1hqwggsn.js} +47 -19
  24. package/dist/chunk-1hqwggsn.js.map +12 -0
  25. package/dist/{chunk-q3grgzp1.js → chunk-23xs4qp9.js} +2 -2
  26. package/dist/{chunk-vef6qa14.js → chunk-2am3db31.js} +2 -2
  27. package/dist/{chunk-fj1dvp37.js → chunk-2vhg6ysa.js} +1 -1
  28. package/dist/{chunk-p0nbkys4.js → chunk-33saed7g.js} +1 -1
  29. package/dist/{chunk-mdnw7nj8.js → chunk-3rrezgyc.js} +33 -8
  30. package/dist/chunk-3rrezgyc.js.map +15 -0
  31. package/dist/{chunk-jgwb25gc.js → chunk-4as3wt1c.js} +13 -5
  32. package/dist/chunk-4as3wt1c.js.map +12 -0
  33. package/dist/chunk-4ra628t7.js +88 -0
  34. package/dist/chunk-4ra628t7.js.map +10 -0
  35. package/dist/{chunk-mmac1mp6.js → chunk-52c5zb0z.js} +2 -2
  36. package/dist/{chunk-8fjmqjyx.js → chunk-5be2ath4.js} +1 -1
  37. package/dist/{chunk-2fv8sajb.js → chunk-5thzcb8g.js} +2 -2
  38. package/dist/{chunk-fjw417jf.js → chunk-5yd8cchh.js} +1143 -784
  39. package/dist/chunk-5yd8cchh.js.map +66 -0
  40. package/dist/{chunk-2tz5vnvz.js → chunk-6wbm6ymz.js} +235 -41
  41. package/dist/{chunk-2tz5vnvz.js.map → chunk-6wbm6ymz.js.map} +8 -6
  42. package/dist/{chunk-py2dw8cw.js → chunk-7ecp4v7a.js} +26 -19
  43. package/dist/chunk-7ecp4v7a.js.map +17 -0
  44. package/dist/{chunk-f85hpqnm.js → chunk-99nd4rc1.js} +3 -3
  45. package/dist/{chunk-f85hpqnm.js.map → chunk-99nd4rc1.js.map} +3 -3
  46. package/dist/{chunk-1jvq82rp.js → chunk-9g6jz9kk.js} +5 -5
  47. package/dist/{chunk-39tqv9hz.js → chunk-9se093qz.js} +5 -6
  48. package/dist/{chunk-39tqv9hz.js.map → chunk-9se093qz.js.map} +3 -4
  49. package/dist/{chunk-8w27xf9e.js → chunk-a7er86jd.js} +1 -1
  50. package/dist/{chunk-zdkcdshk.js → chunk-aq39q04r.js} +41 -3
  51. package/dist/{chunk-zdkcdshk.js.map → chunk-aq39q04r.js.map} +4 -3
  52. package/dist/chunk-b9affek3.js +261 -0
  53. package/dist/chunk-b9affek3.js.map +12 -0
  54. package/dist/{chunk-bxx3ms5t.js → chunk-c2rga5cx.js} +2 -2
  55. package/dist/{chunk-dsfw1bdr.js → chunk-cnb5kv05.js} +2 -2
  56. package/dist/chunk-d62kjtbg.js.map +2 -2
  57. package/dist/{chunk-dqkd3kdj.js → chunk-dam456ve.js} +234 -35
  58. package/dist/{chunk-dqkd3kdj.js.map → chunk-dam456ve.js.map} +7 -5
  59. package/dist/{chunk-n5t4mq6z.js → chunk-e67ynxcr.js} +3 -3
  60. package/dist/{chunk-xnx96gfy.js → chunk-ere85b8y.js} +17 -8
  61. package/dist/chunk-ere85b8y.js.map +15 -0
  62. package/dist/{chunk-k4kkp58d.js → chunk-ewqa58h9.js} +12 -2
  63. package/dist/chunk-ewqa58h9.js.map +11 -0
  64. package/dist/{chunk-6q7c68yx.js → chunk-f1xh7a32.js} +3 -3
  65. package/dist/{chunk-z708gemf.js → chunk-fggq3d9k.js} +450 -799
  66. package/dist/chunk-fggq3d9k.js.map +49 -0
  67. package/dist/{chunk-7jc21943.js → chunk-gf7yht60.js} +4 -4
  68. package/dist/chunk-h8teetr0.js +9 -0
  69. package/dist/chunk-h8teetr0.js.map +10 -0
  70. package/dist/chunk-hn2r7z41.js.map +1 -1
  71. package/dist/{chunk-ffwvdgk1.js → chunk-jjrn5v0p.js} +1 -1
  72. package/dist/{chunk-r5sc1d2b.js → chunk-jnfxmr3f.js} +1 -1
  73. package/dist/{chunk-y0zmae99.js → chunk-k4g51s47.js} +3 -3
  74. package/dist/{chunk-a0073121.js → chunk-kpx7jrmn.js} +3 -1
  75. package/dist/chunk-kpx7jrmn.js.map +12 -0
  76. package/dist/{chunk-p1683c0v.js → chunk-kyjcwqz6.js} +5 -2
  77. package/dist/{chunk-p1683c0v.js.map → chunk-kyjcwqz6.js.map} +3 -3
  78. package/dist/{chunk-3c90jvfj.js → chunk-pja9jfz6.js} +742 -583
  79. package/dist/chunk-pja9jfz6.js.map +19 -0
  80. package/dist/chunk-pqajwytd.js.map +1 -1
  81. package/dist/{chunk-mr60an99.js → chunk-qczk96d9.js} +22 -2
  82. package/dist/{chunk-mr60an99.js.map → chunk-qczk96d9.js.map} +3 -3
  83. package/dist/{chunk-s3csryxe.js → chunk-rj69qcrd.js} +8 -2
  84. package/dist/chunk-rj69qcrd.js.map +11 -0
  85. package/dist/{chunk-d8yes9yx.js → chunk-rpxz486p.js} +32 -5
  86. package/dist/{chunk-d8yes9yx.js.map → chunk-rpxz486p.js.map} +4 -4
  87. package/dist/{chunk-drz59ve0.js → chunk-rx7h5fdx.js} +1 -1
  88. package/dist/{chunk-ky7zpbtt.js → chunk-s7ftxrdr.js} +106 -8
  89. package/dist/chunk-s7ftxrdr.js.map +22 -0
  90. package/dist/{chunk-yfppyaty.js → chunk-sk0hcjsz.js} +1 -1
  91. package/dist/{chunk-qne45xqq.js → chunk-svabwqdq.js} +2 -2
  92. package/dist/{chunk-xr7y35yj.js → chunk-t9shqx3w.js} +2 -2
  93. package/dist/{chunk-4jph1t3v.js → chunk-tjjgy3z4.js} +27 -24
  94. package/dist/{chunk-4jph1t3v.js.map → chunk-tjjgy3z4.js.map} +4 -4
  95. package/dist/{chunk-ex8s8wsk.js → chunk-vp3z1ckh.js} +42 -10
  96. package/dist/{chunk-ex8s8wsk.js.map → chunk-vp3z1ckh.js.map} +7 -6
  97. package/dist/{chunk-adbve9zt.js → chunk-vre348sb.js} +2 -2
  98. package/dist/{chunk-a4g5yjm0.js → chunk-w9yycd3t.js} +1 -1
  99. package/dist/{chunk-g4rbm4a6.js → chunk-wt4szfec.js} +379 -331
  100. package/dist/chunk-wt4szfec.js.map +14 -0
  101. package/dist/{chunk-wd34wnsy.js → chunk-xcy5ddha.js} +6 -6
  102. package/dist/{chunk-3nx8vj5a.js → chunk-xyvy73tj.js} +5 -3
  103. package/dist/chunk-xyvy73tj.js.map +12 -0
  104. package/dist/datasets/write.js +1 -1
  105. package/dist/execution/agent.js +38 -37
  106. package/dist/execution/agent.js.map +1 -1
  107. package/dist/execution/authorized-object-reader.d.ts +3 -1
  108. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  109. package/dist/execution/primitive.js +36 -35
  110. package/dist/execution/primitive.js.map +2 -2
  111. package/dist/execution/request.js +37 -36
  112. package/dist/execution/request.js.map +2 -2
  113. package/dist/index.d.ts +8 -4
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +62 -59
  116. package/dist/index.js.map +1 -1
  117. package/dist/lake-storage/in-memory.d.ts +5 -1
  118. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  119. package/dist/lake-storage/index.d.ts +1 -1
  120. package/dist/lake-storage/index.d.ts.map +1 -1
  121. package/dist/lake-storage/index.js +2 -2
  122. package/dist/lake-storage/types.d.ts +26 -0
  123. package/dist/lake-storage/types.d.ts.map +1 -1
  124. package/dist/maintenance/ontology-maintenance.d.ts +5 -1
  125. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  126. package/dist/maintenance/types.d.ts +1 -4
  127. package/dist/maintenance/types.d.ts.map +1 -1
  128. package/dist/materialization/event-envelopes.d.ts +20 -0
  129. package/dist/materialization/event-envelopes.d.ts.map +1 -0
  130. package/dist/materialization/events.d.ts +29 -3
  131. package/dist/materialization/events.d.ts.map +1 -1
  132. package/dist/materialization/index.d.ts +4 -1
  133. package/dist/materialization/index.d.ts.map +1 -1
  134. package/dist/materialization/index.js +9 -3
  135. package/dist/materialization/index.js.map +1 -1
  136. package/dist/materializer/edits/plan.d.ts +2 -10
  137. package/dist/materializer/edits/plan.d.ts.map +1 -1
  138. package/dist/materializer/effective/build-events.d.ts +5 -21
  139. package/dist/materializer/effective/build-events.d.ts.map +1 -1
  140. package/dist/materializer/effective/vector-indexing.d.ts +2 -3
  141. package/dist/materializer/effective/vector-indexing.d.ts.map +1 -1
  142. package/dist/materializer/effective/vectors.d.ts +2 -3
  143. package/dist/materializer/effective/vectors.d.ts.map +1 -1
  144. package/dist/materializer/execution/scope.d.ts +1 -11
  145. package/dist/materializer/execution/scope.d.ts.map +1 -1
  146. package/dist/materializer/execution/work-executor.d.ts +5 -7
  147. package/dist/materializer/execution/work-executor.d.ts.map +1 -1
  148. package/dist/materializer/execution/work-records.d.ts +1 -3
  149. package/dist/materializer/execution/work-records.d.ts.map +1 -1
  150. package/dist/materializer/index.js +31 -32
  151. package/dist/materializer/index.js.map +1 -1
  152. package/dist/materializer/projections/replace.d.ts.map +1 -1
  153. package/dist/materializer/projections/replacement-plan.d.ts +8 -11
  154. package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
  155. package/dist/materializer/shared/batching.d.ts +5 -0
  156. package/dist/materializer/shared/batching.d.ts.map +1 -1
  157. package/dist/materializer/telemetry/plan.d.ts +2 -8
  158. package/dist/materializer/telemetry/plan.d.ts.map +1 -1
  159. package/dist/models/audio/catalog.d.ts +20 -0
  160. package/dist/models/audio/catalog.d.ts.map +1 -0
  161. package/dist/models/audio/errors.d.ts +8 -0
  162. package/dist/models/audio/errors.d.ts.map +1 -0
  163. package/dist/models/audio/file.d.ts +9 -0
  164. package/dist/models/audio/file.d.ts.map +1 -0
  165. package/dist/models/audio/runtime.d.ts +8 -0
  166. package/dist/models/audio/runtime.d.ts.map +1 -0
  167. package/dist/models/audio/types.d.ts +60 -0
  168. package/dist/models/audio/types.d.ts.map +1 -0
  169. package/dist/models/catalog.d.ts +23 -1
  170. package/dist/models/catalog.d.ts.map +1 -1
  171. package/dist/models/definitions.d.ts +1 -1
  172. package/dist/models/definitions.d.ts.map +1 -1
  173. package/dist/models/embedding-model.d.ts +4 -0
  174. package/dist/models/embedding-model.d.ts.map +1 -1
  175. package/dist/models/events.d.ts +3 -0
  176. package/dist/models/events.d.ts.map +1 -1
  177. package/dist/models/execution/index.js +22 -22
  178. package/dist/models/execution/model-call-admission.d.ts +6 -1
  179. package/dist/models/execution/model-call-admission.d.ts.map +1 -1
  180. package/dist/models/execution/model-call-limits.d.ts.map +1 -1
  181. package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
  182. package/dist/models/execution/reranking.d.ts +4 -0
  183. package/dist/models/execution/reranking.d.ts.map +1 -0
  184. package/dist/models/execution/usage.d.ts.map +1 -1
  185. package/dist/models/execution.d.ts +2 -1
  186. package/dist/models/execution.d.ts.map +1 -1
  187. package/dist/models/generation-types.d.ts +2 -0
  188. package/dist/models/generation-types.d.ts.map +1 -1
  189. package/dist/models/index.d.ts +7 -1
  190. package/dist/models/index.d.ts.map +1 -1
  191. package/dist/models/index.js +7 -3
  192. package/dist/models/index.js.map +1 -1
  193. package/dist/models/pricing.d.ts +2 -2
  194. package/dist/models/pricing.d.ts.map +1 -1
  195. package/dist/models/reranking-model.d.ts +49 -0
  196. package/dist/models/reranking-model.d.ts.map +1 -0
  197. package/dist/objects/index.js +25 -25
  198. package/dist/objects/query/executor.d.ts +2 -1
  199. package/dist/objects/query/executor.d.ts.map +1 -1
  200. package/dist/objects/query/index.d.ts +1 -1
  201. package/dist/objects/query/index.d.ts.map +1 -1
  202. package/dist/objects/query/index.js +24 -24
  203. package/dist/objects/query/index.js.map +1 -1
  204. package/dist/objects/query/ir.d.ts +8 -1
  205. package/dist/objects/query/ir.d.ts.map +1 -1
  206. package/dist/objects/query/normalize.d.ts.map +1 -1
  207. package/dist/objects/query/planner.d.ts +1 -1
  208. package/dist/objects/query/planner.d.ts.map +1 -1
  209. package/dist/objects/query/primary-id.d.ts +7 -0
  210. package/dist/objects/query/primary-id.d.ts.map +1 -0
  211. package/dist/objects/query/reranking-executor.d.ts +13 -0
  212. package/dist/objects/query/reranking-executor.d.ts.map +1 -0
  213. package/dist/objects/query/reranking-limits.d.ts +3 -0
  214. package/dist/objects/query/reranking-limits.d.ts.map +1 -0
  215. package/dist/objects/query/reranking-query.d.ts +4 -0
  216. package/dist/objects/query/reranking-query.d.ts.map +1 -0
  217. package/dist/objects/query/validate.d.ts.map +1 -1
  218. package/dist/objects/sdk/query-builder.d.ts +8 -0
  219. package/dist/objects/sdk/query-builder.d.ts.map +1 -1
  220. package/dist/objects/sdk/query-executor.d.ts +2 -2
  221. package/dist/objects/sdk/query-executor.d.ts.map +1 -1
  222. package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
  223. package/dist/objects/vectors/indexing-dispatch.d.ts +21 -0
  224. package/dist/objects/vectors/indexing-dispatch.d.ts.map +1 -0
  225. package/dist/objects/vectors/indexing-generate.d.ts.map +1 -1
  226. package/dist/objects/vectors/profile.d.ts.map +1 -1
  227. package/dist/objects/vectors/query.d.ts +1 -1
  228. package/dist/objects/vectors/query.d.ts.map +1 -1
  229. package/dist/objects/vectors/resolve-query.d.ts.map +1 -1
  230. package/dist/objects/vectors/types.d.ts +1 -1
  231. package/dist/objects/vectors/types.d.ts.map +1 -1
  232. package/dist/ontology/builders.d.ts +13 -4
  233. package/dist/ontology/builders.d.ts.map +1 -1
  234. package/dist/ontology/index.d.ts +1 -1
  235. package/dist/ontology/index.d.ts.map +1 -1
  236. package/dist/ontology/index.js +3 -3
  237. package/dist/ontology/internal.js +2 -2
  238. package/dist/ontology/query-capabilities.d.ts +1 -0
  239. package/dist/ontology/query-capabilities.d.ts.map +1 -1
  240. package/dist/ontology/types.d.ts +20 -0
  241. package/dist/ontology/types.d.ts.map +1 -1
  242. package/dist/ontology/validation/query.d.ts.map +1 -1
  243. package/dist/ontology/vector-profiles.d.ts.map +1 -1
  244. package/dist/pipelines/index.js +23 -23
  245. package/dist/projections/internal.js +22 -22
  246. package/dist/query.d.ts +4 -2
  247. package/dist/query.d.ts.map +1 -1
  248. package/dist/query.js +2 -2
  249. package/dist/queues/in-memory.d.ts +3 -0
  250. package/dist/queues/in-memory.d.ts.map +1 -1
  251. package/dist/queues/index.js +1 -1
  252. package/dist/queues/types.d.ts +4 -0
  253. package/dist/queues/types.d.ts.map +1 -1
  254. package/dist/runtime/host.d.ts +1 -0
  255. package/dist/runtime/host.d.ts.map +1 -1
  256. package/dist/runtime/index.d.ts +1 -1
  257. package/dist/runtime/index.d.ts.map +1 -1
  258. package/dist/runtime/internal.d.ts +1 -0
  259. package/dist/runtime/internal.d.ts.map +1 -1
  260. package/dist/runtime/internal.js +28 -26
  261. package/dist/runtime/internal.js.map +1 -1
  262. package/dist/runtime/public-origin.d.ts +10 -0
  263. package/dist/runtime/public-origin.d.ts.map +1 -0
  264. package/dist/runtime/sixb.d.ts +1 -0
  265. package/dist/runtime/sixb.d.ts.map +1 -1
  266. package/dist/runtime/types.d.ts +12 -2
  267. package/dist/runtime/types.d.ts.map +1 -1
  268. package/dist/sandboxes/index.js +5 -5
  269. package/dist/shares/internal.js +19 -19
  270. package/dist/storage/agents/provider.js +2 -2
  271. package/dist/storage/ai-cost/analytics.d.ts +1 -0
  272. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  273. package/dist/storage/ai-cost/provider.js +3 -3
  274. package/dist/storage/ai-cost/types.d.ts +1 -1
  275. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  276. package/dist/storage/ai-cost/validation.d.ts.map +1 -1
  277. package/dist/storage/ai-limits/enforcement.js +2 -2
  278. package/dist/storage/ai-limits/in-memory.d.ts.map +1 -1
  279. package/dist/storage/ai-limits/provider.d.ts +7 -2
  280. package/dist/storage/ai-limits/provider.d.ts.map +1 -1
  281. package/dist/storage/ai-limits/provider.js +4 -2
  282. package/dist/storage/ai-limits/provider.js.map +1 -1
  283. package/dist/storage/ai-limits/types.d.ts +3 -0
  284. package/dist/storage/ai-limits/types.d.ts.map +1 -1
  285. package/dist/storage/ai-usage/record.d.ts.map +1 -1
  286. package/dist/storage/ai-usage/types.d.ts +8 -4
  287. package/dist/storage/ai-usage/types.d.ts.map +1 -1
  288. package/dist/storage/ai-usage/usage.d.ts.map +1 -1
  289. package/dist/storage/file-download-grants/in-memory.d.ts +11 -0
  290. package/dist/storage/file-download-grants/in-memory.d.ts.map +1 -0
  291. package/dist/storage/file-download-grants/index.d.ts +3 -0
  292. package/dist/storage/file-download-grants/index.d.ts.map +1 -0
  293. package/dist/storage/file-download-grants/record.d.ts +11 -0
  294. package/dist/storage/file-download-grants/record.d.ts.map +1 -0
  295. package/dist/storage/file-download-grants/types.d.ts +44 -0
  296. package/dist/storage/file-download-grants/types.d.ts.map +1 -0
  297. package/dist/storage/file-upload-sessions/provider.js +6 -6
  298. package/dist/storage/in-memory/index.d.ts +4 -0
  299. package/dist/storage/in-memory/index.d.ts.map +1 -1
  300. package/dist/storage/index.d.ts +5 -3
  301. package/dist/storage/index.d.ts.map +1 -1
  302. package/dist/storage/index.js +30 -30
  303. package/dist/storage/index.js.map +1 -1
  304. package/dist/storage/internal.d.ts +1 -0
  305. package/dist/storage/internal.d.ts.map +1 -1
  306. package/dist/storage/internal.js +8 -4
  307. package/dist/storage/internal.js.map +1 -1
  308. package/dist/storage/migrations/index.d.ts +1 -1
  309. package/dist/storage/migrations/index.d.ts.map +1 -1
  310. package/dist/storage/migrations/migrate-storage.d.ts +3 -3
  311. package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
  312. package/dist/storage/migrations/types.d.ts +7 -0
  313. package/dist/storage/migrations/types.d.ts.map +1 -1
  314. package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
  315. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
  316. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
  317. package/dist/storage/objects/query-preparation.d.ts +39 -0
  318. package/dist/storage/objects/query-preparation.d.ts.map +1 -0
  319. package/dist/storage/objects/types.d.ts +2 -0
  320. package/dist/storage/objects/types.d.ts.map +1 -1
  321. package/dist/storage/ontology/commits.d.ts +1 -6
  322. package/dist/storage/ontology/commits.d.ts.map +1 -1
  323. package/dist/storage/ontology/in-memory/index.d.ts +4 -2
  324. package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
  325. package/dist/storage/ontology/in-memory/materializations-state.d.ts +0 -2
  326. package/dist/storage/ontology/in-memory/materializations-state.d.ts.map +1 -1
  327. package/dist/storage/ontology/in-memory/materializations-work.d.ts +1 -3
  328. package/dist/storage/ontology/in-memory/materializations-work.d.ts.map +1 -1
  329. package/dist/storage/ontology/in-memory/materializations.d.ts +23 -57
  330. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  331. package/dist/storage/ontology/in-memory/outbox.d.ts +3 -2
  332. package/dist/storage/ontology/in-memory/outbox.d.ts.map +1 -1
  333. package/dist/storage/ontology/in-memory/replacement-plans.d.ts +104 -0
  334. package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -0
  335. package/dist/storage/ontology/in-memory/shared-state.d.ts +17 -2
  336. package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
  337. package/dist/storage/ontology/in-memory/source-roots.d.ts +3 -1
  338. package/dist/storage/ontology/in-memory/source-roots.d.ts.map +1 -1
  339. package/dist/storage/ontology/in-memory/sources.d.ts +1 -2
  340. package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
  341. package/dist/storage/ontology/in-memory/state-reader.d.ts +25 -0
  342. package/dist/storage/ontology/in-memory/state-reader.d.ts.map +1 -0
  343. package/dist/storage/ontology/index.d.ts +6 -3
  344. package/dist/storage/ontology/index.d.ts.map +1 -1
  345. package/dist/storage/ontology/materializations.d.ts +40 -59
  346. package/dist/storage/ontology/materializations.d.ts.map +1 -1
  347. package/dist/storage/ontology/outbox.d.ts +4 -6
  348. package/dist/storage/ontology/outbox.d.ts.map +1 -1
  349. package/dist/storage/ontology/provider-work.d.ts +114 -3
  350. package/dist/storage/ontology/provider-work.d.ts.map +1 -1
  351. package/dist/storage/ontology/provider.d.ts +14 -39
  352. package/dist/storage/ontology/provider.d.ts.map +1 -1
  353. package/dist/storage/ontology/provider.js +26 -12
  354. package/dist/storage/ontology/provider.js.map +1 -1
  355. package/dist/storage/ontology/replacement-plans.d.ts +103 -0
  356. package/dist/storage/ontology/replacement-plans.d.ts.map +1 -0
  357. package/dist/storage/ontology/sources.d.ts +0 -8
  358. package/dist/storage/ontology/sources.d.ts.map +1 -1
  359. package/dist/storage/operation-scope.d.ts.map +1 -1
  360. package/dist/storage/operation-scope.js +1 -1
  361. package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
  362. package/dist/storage/projection-runs/types.d.ts +2 -0
  363. package/dist/storage/projection-runs/types.d.ts.map +1 -1
  364. package/dist/storage/types.d.ts +2 -0
  365. package/dist/storage/types.d.ts.map +1 -1
  366. package/dist/storage/workflow-runs/provider.js +6 -6
  367. package/dist/syncs/index.js +24 -24
  368. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  369. package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
  370. package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
  371. package/dist/testing/file-download-grant-storage-contract.d.ts +9 -0
  372. package/dist/testing/file-download-grant-storage-contract.d.ts.map +1 -0
  373. package/dist/testing/index.d.ts +1 -0
  374. package/dist/testing/index.d.ts.map +1 -1
  375. package/dist/testing/index.js +2548 -1489
  376. package/dist/testing/index.js.map +14 -13
  377. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  378. package/dist/testing/materializer-storage-contract.d.ts +14 -0
  379. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  380. package/dist/testing/object-read-scope-contract.d.ts.map +1 -1
  381. package/dist/testing/ontology-contract-fixture.d.ts +5 -1
  382. package/dist/testing/ontology-contract-fixture.d.ts.map +1 -1
  383. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  384. package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
  385. package/dist/testing/queues-contract.d.ts.map +1 -1
  386. package/dist/webhooks/internal.js +20 -20
  387. package/dist/workers/index.js +15 -17
  388. package/dist/workers/index.js.map +3 -3
  389. package/dist/workers/queue-worker.d.ts +3 -2
  390. package/dist/workers/queue-worker.d.ts.map +1 -1
  391. package/dist/workflows/index.js +42 -41
  392. package/dist/workflows/index.js.map +1 -1
  393. package/package.json +7 -1
  394. package/src/actions/types/context.ts +5 -2
  395. package/src/blob-storage/download-urls.ts +138 -0
  396. package/src/blob-storage/execution.ts +32 -1
  397. package/src/blob-storage/internal.ts +1 -0
  398. package/src/execution/authorized-object-reader.ts +8 -1
  399. package/src/index.ts +25 -0
  400. package/src/lake-storage/in-memory.ts +38 -9
  401. package/src/lake-storage/index.ts +2 -0
  402. package/src/lake-storage/types.ts +30 -0
  403. package/src/maintenance/ontology-maintenance.ts +50 -23
  404. package/src/maintenance/types.ts +1 -4
  405. package/src/materialization/event-envelopes.ts +168 -0
  406. package/src/materialization/events.ts +40 -4
  407. package/src/materialization/index.ts +9 -1
  408. package/src/materializer/README.md +55 -10
  409. package/src/materializer/edits/commit.ts +3 -19
  410. package/src/materializer/edits/plan.ts +20 -71
  411. package/src/materializer/effective/build-events.ts +42 -136
  412. package/src/materializer/effective/vector-indexing.ts +2 -3
  413. package/src/materializer/effective/vectors.ts +2 -3
  414. package/src/materializer/execution/scope.ts +1 -38
  415. package/src/materializer/execution/work-executor.ts +21 -115
  416. package/src/materializer/execution/work-records.ts +0 -15
  417. package/src/materializer/projections/replace.ts +106 -63
  418. package/src/materializer/projections/replacement-plan.ts +73 -218
  419. package/src/materializer/shared/batching.ts +7 -0
  420. package/src/materializer/telemetry/append.ts +2 -14
  421. package/src/materializer/telemetry/plan.ts +6 -43
  422. package/src/models/audio/catalog.ts +90 -0
  423. package/src/models/audio/errors.ts +19 -0
  424. package/src/models/audio/file.ts +78 -0
  425. package/src/models/audio/runtime.ts +182 -0
  426. package/src/models/audio/types.ts +69 -0
  427. package/src/models/catalog.ts +52 -5
  428. package/src/models/definitions.ts +8 -1
  429. package/src/models/embedding-model.ts +12 -0
  430. package/src/models/events.ts +3 -0
  431. package/src/models/execution/README.md +20 -1
  432. package/src/models/execution/embedding.ts +5 -1
  433. package/src/models/execution/model-call-admission.ts +6 -1
  434. package/src/models/execution/model-call-limits.ts +21 -11
  435. package/src/models/execution/model-call-recorder.ts +1 -0
  436. package/src/models/execution/model-call-recovery.ts +1 -0
  437. package/src/models/execution/reranking.ts +137 -0
  438. package/src/models/execution/usage.ts +1 -0
  439. package/src/models/execution.ts +5 -1
  440. package/src/models/generation-types.ts +2 -0
  441. package/src/models/index.ts +32 -0
  442. package/src/models/pricing.ts +2 -1
  443. package/src/models/reranking-model.ts +114 -0
  444. package/src/objects/query/executor.ts +42 -2
  445. package/src/objects/query/explain.ts +8 -0
  446. package/src/objects/query/index.ts +1 -0
  447. package/src/objects/query/ir.ts +10 -0
  448. package/src/objects/query/normalize.ts +2 -0
  449. package/src/objects/query/planner.ts +12 -1
  450. package/src/objects/query/primary-id.ts +56 -0
  451. package/src/objects/query/reranking-executor.ts +91 -0
  452. package/src/objects/query/reranking-limits.ts +3 -0
  453. package/src/objects/query/reranking-query.ts +8 -0
  454. package/src/objects/query/validate.ts +33 -10
  455. package/src/objects/sdk/query-builder.ts +15 -2
  456. package/src/objects/sdk/query-executor.ts +2 -2
  457. package/src/objects/sdk/runtime-query-executor.ts +7 -4
  458. package/src/objects/vectors/README.md +14 -2
  459. package/src/objects/vectors/handle.ts +1 -1
  460. package/src/objects/vectors/indexing-dispatch.ts +83 -0
  461. package/src/objects/vectors/indexing-generate.ts +5 -1
  462. package/src/objects/vectors/profile.ts +2 -0
  463. package/src/objects/vectors/query.ts +21 -4
  464. package/src/objects/vectors/resolve-query.ts +9 -5
  465. package/src/objects/vectors/types.ts +3 -1
  466. package/src/ontology/builders.ts +22 -7
  467. package/src/ontology/index.ts +2 -0
  468. package/src/ontology/query-capabilities.ts +1 -1
  469. package/src/ontology/types.ts +21 -0
  470. package/src/ontology/validation/query.ts +57 -0
  471. package/src/ontology/vector-profiles.ts +1 -0
  472. package/src/query.ts +4 -0
  473. package/src/queues/in-memory.ts +54 -19
  474. package/src/queues/types.ts +4 -0
  475. package/src/runtime/host.ts +28 -1
  476. package/src/runtime/index.ts +1 -0
  477. package/src/runtime/internal.ts +1 -0
  478. package/src/runtime/public-origin.ts +33 -0
  479. package/src/runtime/sixb.ts +13 -2
  480. package/src/runtime/types.ts +12 -2
  481. package/src/storage/ai-cost/analytics.ts +2 -0
  482. package/src/storage/ai-cost/codec.ts +2 -1
  483. package/src/storage/ai-cost/types.ts +1 -0
  484. package/src/storage/ai-cost/validation.ts +21 -8
  485. package/src/storage/ai-limits/in-memory.ts +10 -2
  486. package/src/storage/ai-limits/provider.ts +29 -2
  487. package/src/storage/ai-limits/types.ts +3 -0
  488. package/src/storage/ai-usage/record.ts +9 -0
  489. package/src/storage/ai-usage/types.ts +8 -4
  490. package/src/storage/ai-usage/usage.ts +2 -0
  491. package/src/storage/file-download-grants/in-memory.ts +73 -0
  492. package/src/storage/file-download-grants/index.ts +8 -0
  493. package/src/storage/file-download-grants/record.ts +47 -0
  494. package/src/storage/file-download-grants/types.ts +48 -0
  495. package/src/storage/in-memory/index.ts +13 -2
  496. package/src/storage/index.ts +31 -13
  497. package/src/storage/internal.ts +1 -0
  498. package/src/storage/migrations/index.ts +1 -0
  499. package/src/storage/migrations/migrate-storage.ts +36 -12
  500. package/src/storage/migrations/types.ts +8 -0
  501. package/src/storage/objects/in-memory/query.ts +2 -0
  502. package/src/storage/objects/in-memory/selected-reader.ts +1 -0
  503. package/src/storage/objects/in-memory/storage.ts +1 -0
  504. package/src/storage/objects/query-preparation.ts +77 -0
  505. package/src/storage/objects/types.ts +2 -0
  506. package/src/storage/ontology/commits.ts +1 -6
  507. package/src/storage/ontology/in-memory/index.ts +28 -9
  508. package/src/storage/ontology/in-memory/materializations-finalization.ts +35 -68
  509. package/src/storage/ontology/in-memory/materializations-state.ts +0 -22
  510. package/src/storage/ontology/in-memory/materializations-work.ts +0 -45
  511. package/src/storage/ontology/in-memory/materializations.ts +172 -653
  512. package/src/storage/ontology/in-memory/outbox.ts +37 -29
  513. package/src/storage/ontology/in-memory/replacement-plans.ts +697 -0
  514. package/src/storage/ontology/in-memory/shared-state.ts +24 -2
  515. package/src/storage/ontology/in-memory/source-roots.ts +7 -2
  516. package/src/storage/ontology/in-memory/sources.ts +7 -33
  517. package/src/storage/ontology/in-memory/state-reader.ts +245 -0
  518. package/src/storage/ontology/index.ts +19 -13
  519. package/src/storage/ontology/materializations.ts +45 -74
  520. package/src/storage/ontology/outbox.ts +4 -7
  521. package/src/storage/ontology/provider-header-validation.ts +0 -57
  522. package/src/storage/ontology/provider-work.ts +381 -90
  523. package/src/storage/ontology/provider.ts +74 -171
  524. package/src/storage/ontology/replacement-plans.ts +117 -0
  525. package/src/storage/ontology/sources.ts +0 -12
  526. package/src/storage/operation-scope.ts +33 -1
  527. package/src/storage/projection-runs/in-memory.ts +7 -1
  528. package/src/storage/projection-runs/types.ts +2 -0
  529. package/src/storage/types.ts +2 -0
  530. package/src/testing/ai-cost-storage-contract.ts +1 -0
  531. package/src/testing/ai-limit-storage-contract.ts +62 -0
  532. package/src/testing/ai-usage-storage-contract.ts +31 -0
  533. package/src/testing/file-download-grant-storage-contract.ts +139 -0
  534. package/src/testing/index.ts +4 -0
  535. package/src/testing/lake-storage-contract.ts +87 -1
  536. package/src/testing/materializer-storage-contract.ts +1008 -1
  537. package/src/testing/object-read-scope-contract.ts +1 -0
  538. package/src/testing/ontology-contract-fixture.ts +11 -87
  539. package/src/testing/ontology-storage-contract.ts +70 -39
  540. package/src/testing/projection-run-storage-contract.ts +14 -0
  541. package/src/testing/queues-contract.ts +59 -0
  542. package/src/workers/queue-worker.ts +19 -16
  543. package/dist/chunk-3c90jvfj.js.map +0 -15
  544. package/dist/chunk-3nx8vj5a.js.map +0 -12
  545. package/dist/chunk-7ytf06d3.js +0 -113
  546. package/dist/chunk-7ytf06d3.js.map +0 -10
  547. package/dist/chunk-a0073121.js.map +0 -12
  548. package/dist/chunk-fjw417jf.js.map +0 -62
  549. package/dist/chunk-g4rbm4a6.js.map +0 -15
  550. package/dist/chunk-hgqpcmyr.js.map +0 -12
  551. package/dist/chunk-jgwb25gc.js.map +0 -12
  552. package/dist/chunk-k4kkp58d.js.map +0 -11
  553. package/dist/chunk-ky7zpbtt.js.map +0 -19
  554. package/dist/chunk-mdnw7nj8.js.map +0 -15
  555. package/dist/chunk-py2dw8cw.js.map +0 -17
  556. package/dist/chunk-s3csryxe.js.map +0 -11
  557. package/dist/chunk-xnx96gfy.js.map +0 -15
  558. package/dist/chunk-z708gemf.js.map +0 -50
  559. package/dist/materializer/execution/plan-stream.d.ts +0 -8
  560. package/dist/materializer/execution/plan-stream.d.ts.map +0 -1
  561. package/src/materializer/execution/plan-stream.ts +0 -121
  562. /package/dist/{chunk-q3grgzp1.js.map → chunk-23xs4qp9.js.map} +0 -0
  563. /package/dist/{chunk-vef6qa14.js.map → chunk-2am3db31.js.map} +0 -0
  564. /package/dist/{chunk-fj1dvp37.js.map → chunk-2vhg6ysa.js.map} +0 -0
  565. /package/dist/{chunk-p0nbkys4.js.map → chunk-33saed7g.js.map} +0 -0
  566. /package/dist/{chunk-mmac1mp6.js.map → chunk-52c5zb0z.js.map} +0 -0
  567. /package/dist/{chunk-8fjmqjyx.js.map → chunk-5be2ath4.js.map} +0 -0
  568. /package/dist/{chunk-2fv8sajb.js.map → chunk-5thzcb8g.js.map} +0 -0
  569. /package/dist/{chunk-1jvq82rp.js.map → chunk-9g6jz9kk.js.map} +0 -0
  570. /package/dist/{chunk-8w27xf9e.js.map → chunk-a7er86jd.js.map} +0 -0
  571. /package/dist/{chunk-bxx3ms5t.js.map → chunk-c2rga5cx.js.map} +0 -0
  572. /package/dist/{chunk-dsfw1bdr.js.map → chunk-cnb5kv05.js.map} +0 -0
  573. /package/dist/{chunk-n5t4mq6z.js.map → chunk-e67ynxcr.js.map} +0 -0
  574. /package/dist/{chunk-6q7c68yx.js.map → chunk-f1xh7a32.js.map} +0 -0
  575. /package/dist/{chunk-7jc21943.js.map → chunk-gf7yht60.js.map} +0 -0
  576. /package/dist/{chunk-ffwvdgk1.js.map → chunk-jjrn5v0p.js.map} +0 -0
  577. /package/dist/{chunk-r5sc1d2b.js.map → chunk-jnfxmr3f.js.map} +0 -0
  578. /package/dist/{chunk-y0zmae99.js.map → chunk-k4g51s47.js.map} +0 -0
  579. /package/dist/{chunk-drz59ve0.js.map → chunk-rx7h5fdx.js.map} +0 -0
  580. /package/dist/{chunk-yfppyaty.js.map → chunk-sk0hcjsz.js.map} +0 -0
  581. /package/dist/{chunk-qne45xqq.js.map → chunk-svabwqdq.js.map} +0 -0
  582. /package/dist/{chunk-xr7y35yj.js.map → chunk-t9shqx3w.js.map} +0 -0
  583. /package/dist/{chunk-adbve9zt.js.map → chunk-vre348sb.js.map} +0 -0
  584. /package/dist/{chunk-a4g5yjm0.js.map → chunk-w9yycd3t.js.map} +0 -0
  585. /package/dist/{chunk-wd34wnsy.js.map → chunk-xcy5ddha.js.map} +0 -0
@@ -18,20 +18,16 @@ import { linkRefKey, objectRefKey, projectionEntityKey } from "../../materializa
18
18
  import type { OntologyCommitOriginSelector, OntologyCommitWrite } from "./commits"
19
19
  import type {
20
20
  FinalizeMaterializationInput,
21
- MaterializationEventWorkRecord,
22
21
  MaterializationLinkScopeRevision,
23
- MaterializationPlanChunk,
24
22
  MaterializationPlanHeader,
25
- MaterializationPlanWorkItem,
26
23
  MaterializationSession,
27
24
  MaterializationWorkRecord,
28
25
  SourceActivationWrite,
29
26
  StageMaterializationWorkInput,
30
27
  StoredLinkSlotOverride,
31
- StreamMaterializationWorkInput,
32
28
  } from "./materializations"
33
29
  import { assertNonblank, assertTimestamp } from "./provider-validation"
34
- import { assertWorkRecord, workUniquenessKey } from "./provider-work"
30
+ import { assertWorkRecord, materializationPlanKindRank, workUniquenessKey } from "./provider-work"
35
31
  import type {
36
32
  AssertSourceMaterializationExecutionInput,
37
33
  BeginSourceMaterializationInput,
@@ -46,6 +42,7 @@ import type {
46
42
  * from `@sixb/core/storage` instead.
47
43
  */
48
44
 
45
+ export { materializationApplyPhase } from "./materializations"
49
46
  export { assertMaterializationHeader } from "./provider-header-validation"
50
47
  export {
51
48
  assertNonblank,
@@ -56,13 +53,28 @@ export {
56
53
  } from "./provider-validation"
57
54
  export {
58
55
  assertPageRows,
59
- assertPlanChunkCorrelations,
56
+ assertReplacementPlanCommit,
60
57
  assertWorkRecord,
58
+ type CardinalityValidator,
59
+ type ClaimedOutboxDraft,
60
+ cardinalityViolation,
61
+ claimedOutboxRows,
61
62
  compareCardinalityWork,
62
63
  compareEventWork,
63
64
  comparePlanWork,
65
+ createCardinalityValidator,
66
+ type ExactEffectiveWrites,
67
+ type ExactOverrideWrites,
68
+ type ExactTimeseriesWrites,
69
+ type MaterializationPlanChunk,
64
70
  materializationChunkRows,
65
- materializationPlanItems,
71
+ materializationOutboxWrite,
72
+ materializationPlanChunk,
73
+ materializationPlanKindRank,
74
+ type OntologyOutboxWrite,
75
+ type OutboxEventContext,
76
+ type PreparedReplacementIdentity,
77
+ prepareReplacementIdentities,
66
78
  workUniquenessKey,
67
79
  } from "./provider-work"
68
80
 
@@ -168,40 +180,15 @@ function isJsonValue(value: unknown): value is import("../../json").JsonValue {
168
180
  return isRecord(value) && Object.values(value).every(isJsonValue)
169
181
  }
170
182
 
171
- export interface ProviderReplacementSessionState {
172
- readonly incremental?: boolean
173
- readonly sourceId: string
174
- readonly candidateMaterializationId: string
175
- readonly previousMaterializationId: string | null
176
- readonly projectionKind: "object" | "link"
177
- objectStreamStarted: boolean
178
- objectStreamCompleted: boolean
179
- linkStreamStarted: boolean
180
- linkStreamCompleted: boolean
181
- }
182
-
183
- export interface ProviderMaterializationLaneState {
184
- started: boolean
185
- completed: boolean
186
- emittedCount: number
187
- }
188
-
189
183
  export class ProviderMaterializationSessionState {
190
184
  readonly id = randomUUID()
191
185
  readonly providerToken = {}
192
- readonly workStreams: Record<
193
- StreamMaterializationWorkInput["order"],
194
- ProviderMaterializationLaneState
195
- > = {
196
- apply: { started: false, completed: false, emittedCount: 0 },
197
- cardinality: { started: false, completed: false, emittedCount: 0 },
198
- event: { started: false, completed: false, emittedCount: 0 },
199
- }
200
186
  active = true
187
+ /** Staging closes once vector changes stream or the plan applies. */
201
188
  workSealed = false
202
- appliedPlanCount = 0
203
- appliedOutboxCount = 0
204
- replacement: ProviderReplacementSessionState | null = null
189
+ vectorChangesStreamed = false
190
+ applied = false
191
+ appliedEventCount = 0
205
192
 
206
193
  constructor(
207
194
  readonly header: MaterializationPlanHeader,
@@ -213,6 +200,37 @@ export class ProviderMaterializationSessionState {
213
200
  }
214
201
  }
215
202
 
203
+ /** Seals staging for the vector-change stream: once per session, before the plan applies. */
204
+ export function beginMaterializationVectorChanges(
205
+ state: Pick<
206
+ ProviderMaterializationSessionState,
207
+ "workSealed" | "vectorChangesStreamed" | "applied"
208
+ >
209
+ ): void {
210
+ if (state.vectorChangesStreamed || state.applied) {
211
+ throw new MaterializationConflictError(
212
+ "effective-state",
213
+ "Materialization vector changes stream once per session, before the plan applies."
214
+ )
215
+ }
216
+ state.vectorChangesStreamed = true
217
+ state.workSealed = true
218
+ }
219
+
220
+ /** Seals staging for the apply step: once per session. */
221
+ export function beginMaterializationApply(
222
+ state: Pick<ProviderMaterializationSessionState, "workSealed" | "applied">
223
+ ): void {
224
+ if (state.applied) {
225
+ throw new MaterializationConflictError(
226
+ "effective-state",
227
+ "A materialization plan applies once per session."
228
+ )
229
+ }
230
+ state.applied = true
231
+ state.workSealed = true
232
+ }
233
+
216
234
  /**
217
235
  * Tracks the materialization sessions owned by one storage transaction.
218
236
  *
@@ -258,13 +276,19 @@ export interface PreparedMaterializationWork {
258
276
  }
259
277
 
260
278
  export function prepareMaterializationWork(
261
- state: Pick<ProviderMaterializationSessionState, "header" | "workSealed" | "replacement">,
279
+ state: Pick<ProviderMaterializationSessionState, "header" | "workSealed">,
262
280
  input: StageMaterializationWorkInput
263
281
  ): readonly PreparedMaterializationWork[] {
282
+ if (state.header.plan) {
283
+ throw new MaterializationConflictError(
284
+ "effective-state",
285
+ "A plan-bound materialization session applies its plan and stages no work."
286
+ )
287
+ }
264
288
  if (state.workSealed) {
265
289
  throw new MaterializationConflictError(
266
290
  "effective-state",
267
- "Materialization work cannot be staged after draining begins."
291
+ "Materialization work cannot be staged once vector changes stream or the plan applies."
268
292
  )
269
293
  }
270
294
  const keys = new Set<string>()
@@ -275,13 +299,10 @@ export function prepareMaterializationWork(
275
299
  if (keys.has(record.recordKey) || uniqueKeys.has(uniqueKey)) {
276
300
  throw duplicateMaterializationWork(record.recordKey)
277
301
  }
278
- if (
279
- record.kind === "incident-object" &&
280
- (!state.replacement || state.replacement.linkStreamStarted)
281
- ) {
302
+ if (record.kind === "incident-object" || record.kind === "object-existence") {
282
303
  throw new MaterializationConflictError(
283
304
  "effective-state",
284
- "Incident replacement work must be staged before link state is streamed."
305
+ "Replacement work is staged on a replacement plan, not on a session."
285
306
  )
286
307
  }
287
308
  keys.add(record.recordKey)
@@ -290,75 +311,15 @@ export function prepareMaterializationWork(
290
311
  })
291
312
  }
292
313
 
293
- export interface MaterializationChunkSequenceState {
294
- readonly workStreams: ProviderMaterializationSessionState["workStreams"]
295
- readonly appliedPlanCount: number
296
- readonly appliedOutboxCount: number
297
- }
298
-
299
- export function correlateMaterializationChunk(
300
- state: MaterializationChunkSequenceState,
301
- chunk: MaterializationPlanChunk,
302
- actualItems: readonly MaterializationPlanWorkItem[],
303
- expectedItems: readonly MaterializationPlanWorkItem[],
304
- expectedEvents: readonly MaterializationEventWorkRecord[]
305
- ): { readonly appliedPlanCount: number; readonly appliedOutboxCount: number } {
306
- if (
307
- actualItems.length > 0 &&
308
- (!state.workStreams.apply.started ||
309
- state.appliedPlanCount + actualItems.length > state.workStreams.apply.emittedCount)
310
- ) {
311
- invalidMaterializationCorrelation(
312
- "Materialization plan items cannot be applied before they are streamed."
313
- )
314
- }
315
- for (let index = 0; index < actualItems.length; index += 1) {
316
- if (stableJsonStringify(actualItems[index]) !== stableJsonStringify(expectedItems[index])) {
317
- invalidMaterializationCorrelation(
318
- "Materialization plan items must be applied in exact streamed order."
319
- )
320
- }
321
- }
322
-
323
- if (
324
- chunk.outbox.length > 0 &&
325
- (!state.workStreams.event.started ||
326
- state.appliedOutboxCount + chunk.outbox.length > state.workStreams.event.emittedCount)
327
- ) {
328
- invalidMaterializationCorrelation(
329
- "Materialization events cannot be applied before they are streamed."
330
- )
331
- }
332
- for (let index = 0; index < chunk.outbox.length; index += 1) {
333
- const expected = expectedEvents[index]
334
- const actual = chunk.outbox[index]?.envelope
335
- if (!expected || !actual) {
336
- invalidMaterializationCorrelation(
337
- "Materialization outbox events must follow exact streamed order."
338
- )
339
- }
340
- const { id: _id, commitOrdinal, ...draft } = actual
341
- if (
342
- commitOrdinal !== state.appliedOutboxCount + index ||
343
- stableJsonStringify(draft) !== stableJsonStringify(expected.draft)
344
- ) {
345
- invalidMaterializationCorrelation(
346
- "Materialization outbox events must follow exact streamed order."
347
- )
348
- }
349
- }
350
- return {
351
- appliedPlanCount: state.appliedPlanCount + actualItems.length,
352
- appliedOutboxCount: state.appliedOutboxCount + chunk.outbox.length,
353
- }
354
- }
355
-
356
314
  export function assertMaterializationFinalizationCorrelation(
357
- state: Pick<ProviderMaterializationSessionState, "header" | "appliedOutboxCount">,
315
+ state: Pick<ProviderMaterializationSessionState, "header" | "applied" | "appliedEventCount">,
358
316
  input: FinalizeMaterializationInput
359
317
  ): void {
360
318
  const { commit } = state.header
361
319
  const { result, sourceActivations } = input.finalization
320
+ if (!state.applied) {
321
+ invalidMaterializationCorrelation("A materialization plan must apply before it finalizes.")
322
+ }
362
323
  if (
363
324
  result.commitId !== commit.id ||
364
325
  result.kind !== commit.intent.kind ||
@@ -366,7 +327,7 @@ export function assertMaterializationFinalizationCorrelation(
366
327
  result.created !== true ||
367
328
  !Number.isSafeInteger(result.eventCount) ||
368
329
  result.eventCount < 0 ||
369
- result.eventCount !== state.appliedOutboxCount
330
+ result.eventCount !== state.appliedEventCount
370
331
  ) {
371
332
  invalidMaterializationCorrelation(
372
333
  "Materialization result does not correlate with its commit intent."
@@ -392,34 +353,8 @@ export function assertMaterializationFinalizationCorrelation(
392
353
  }
393
354
  }
394
355
 
395
- export function assertMaterializationLaneCompletion(
396
- state: Pick<
397
- ProviderMaterializationSessionState,
398
- "workStreams" | "appliedPlanCount" | "appliedOutboxCount"
399
- >,
400
- counts: { readonly apply: number; readonly cardinality: number; readonly event: number }
401
- ): void {
402
- if (counts.apply > 0 && !state.workStreams.apply.completed) {
403
- invalidMaterializationCorrelation("Materialization plan work was not fully streamed.")
404
- }
405
- if (state.appliedPlanCount !== counts.apply) {
406
- invalidMaterializationCorrelation("Materialization plan work was not applied exactly once.")
407
- }
408
- if (counts.cardinality > 0 && !state.workStreams.cardinality.completed) {
409
- invalidMaterializationCorrelation("Materialization cardinality work was not fully validated.")
410
- }
411
- if (counts.event > 0 && !state.workStreams.event.completed) {
412
- invalidMaterializationCorrelation("Materialization event work was not fully drained.")
413
- }
414
- if (counts.event !== state.appliedOutboxCount) {
415
- invalidMaterializationCorrelation(
416
- "Materialization event work was not fully written to the outbox."
417
- )
418
- }
419
- }
420
-
421
356
  export function assertSourceActivationCorrelation(
422
- state: Pick<ProviderMaterializationSessionState, "header" | "replacement">,
357
+ state: Pick<ProviderMaterializationSessionState, "header">,
423
358
  activation: SourceActivationWrite
424
359
  ): void {
425
360
  const { commit } = state.header
@@ -445,18 +380,13 @@ export function assertSourceActivationCorrelation(
445
380
  "Source activation does not correlate with its projection commit."
446
381
  )
447
382
  }
448
- const replacement = state.replacement
449
383
  if (
450
- !replacement ||
451
- replacement.sourceId !== activation.source.projectionId ||
452
- replacement.candidateMaterializationId !== activation.materializationId ||
453
- replacement.projectionKind !== activation.projectionKind ||
454
- (activation.projectionKind === "object" &&
455
- (!replacement.objectStreamCompleted || !replacement.linkStreamCompleted)) ||
456
- (activation.projectionKind === "link" && !replacement.linkStreamCompleted)
384
+ !state.header.plan ||
385
+ state.header.plan.source.projectionId !== activation.source.projectionId ||
386
+ state.header.plan.materializationId !== activation.materializationId
457
387
  ) {
458
388
  invalidMaterializationCorrelation(
459
- "Source activation does not match fully streamed replacement state."
389
+ "Source activation does not match the replacement plan the session applies."
460
390
  )
461
391
  }
462
392
  }
@@ -582,33 +512,6 @@ export function materializationWorkColumns(record: MaterializationWorkRecord): {
582
512
  return { lane: "none", majorOrder: 0, minorOrder: 0, sortOne: "", sortTwo: "" }
583
513
  }
584
514
 
585
- function materializationPlanKindRank(kind: MaterializationPlanWorkItem["kind"]): number {
586
- switch (kind) {
587
- case "object-override-upsert":
588
- return 0
589
- case "object-override-delete":
590
- return 1
591
- case "link-override-upsert":
592
- return 2
593
- case "link-override-delete":
594
- return 3
595
- case "link-slot-override-upsert":
596
- return 4
597
- case "link-slot-override-delete":
598
- return 5
599
- case "point-upsert":
600
- return 6
601
- case "link-delete":
602
- return 7
603
- case "object-delete":
604
- return 8
605
- case "object-upsert":
606
- return 9
607
- case "link-upsert":
608
- return 10
609
- }
610
- }
611
-
612
515
  export function duplicateMaterializationWork(key?: string): MaterializationConflictError {
613
516
  return new MaterializationConflictError(
614
517
  "effective-state",
@@ -0,0 +1,117 @@
1
+ import type {
2
+ EffectiveChangeCounts,
3
+ ProjectionEntityRef,
4
+ ProjectionExecution,
5
+ ProjectionSourceRef,
6
+ } from "../../materialization/model"
7
+ import type { OntologyCommitWrite } from "./commits"
8
+ import type {
9
+ MaterializationObjectExistence,
10
+ MaterializationWorkRecord,
11
+ SourceReplacementLinkState,
12
+ SourceReplacementObjectState,
13
+ } from "./materializations"
14
+
15
+ /** A ready replacement candidate whose plan the calling execution builds or commits. */
16
+ export interface ReplacementPlanRef {
17
+ readonly projectId: string
18
+ readonly source: ProjectionSourceRef
19
+ readonly materializationId: string
20
+ readonly execution: ProjectionExecution
21
+ }
22
+
23
+ export interface OpenReplacementPlanInput extends ReplacementPlanRef {
24
+ /** The commit the plan's work will carry, timed for a plan opened now. */
25
+ readonly commit: OntologyCommitWrite
26
+ }
27
+
28
+ export interface OpenedReplacementPlan {
29
+ /**
30
+ * The time of the commit the plan's work carries: a resumed plan keeps the one it was opened
31
+ * with. Its work is staged, and its session begins, with the commit at exactly this time.
32
+ */
33
+ readonly committedAt: string
34
+ }
35
+
36
+ export interface StreamReplacementPlanStateInput extends ReplacementPlanRef {
37
+ /** Objects are planned before links: link state needs the planned existence of its endpoints. */
38
+ readonly entityKind: "object" | "link"
39
+ readonly pageRows: number
40
+ }
41
+
42
+ export interface ReplacementPlanStatePage {
43
+ readonly objects: readonly SourceReplacementObjectState[]
44
+ readonly links: readonly SourceReplacementLinkState[]
45
+ /** Existence of the endpoints of `links`: as this plan leaves them, else as effective. */
46
+ readonly endpoints: readonly MaterializationObjectExistence[]
47
+ }
48
+
49
+ export interface PlannedReplacementIdentity {
50
+ readonly identity: ProjectionEntityRef
51
+ /** Every work record this identity contributes, possibly none. */
52
+ readonly records: readonly MaterializationWorkRecord[]
53
+ }
54
+
55
+ export interface StageReplacementPlanInput extends ReplacementPlanRef {
56
+ /** The commit the plan carries, timed as `open` returned; every record is checked against it. */
57
+ readonly commit: OntologyCommitWrite
58
+ /** Identities of the page streamed last, each planned with the revision it was read at. */
59
+ readonly planned: readonly PlannedReplacementIdentity[]
60
+ }
61
+
62
+ export interface PurgeReplacementPlansInput {
63
+ readonly projectId: string
64
+ /** Maximum rows one call deletes. */
65
+ readonly limit: number
66
+ }
67
+
68
+ export type ReplacementPlanStatus =
69
+ | { readonly fresh: true; readonly counts: EffectiveChangeCounts }
70
+ /** Identities that changed since they were planned, and those planned from them, are planned again. */
71
+ | { readonly fresh: false; readonly unplanned: number }
72
+
73
+ /**
74
+ * The durable plan of a ready replacement candidate.
75
+ *
76
+ * It is built outside the commit transaction, one page at a time, and belongs to the candidate: a
77
+ * redelivery resumes it, and the candidate's end removes it. Every identity keeps the revision of
78
+ * the inputs its plan was read from. `refresh`, inside the commit transaction, plans again what
79
+ * changed since, so a commit only ever applies a plan that is still exact.
80
+ *
81
+ * Every commit records which entities' plan inputs it changed: the objects whose row, override or
82
+ * telemetry it wrote, the links whose row or edge override it wrote or whose live source assertion
83
+ * it activated or retired, and the link scopes whose slot override it wrote. `refresh` reads only
84
+ * what the commits since the plan was last fresh recorded, so its cost follows those commits, not
85
+ * the size of the plan.
86
+ */
87
+ export interface OntologyReplacementPlanStorage {
88
+ /**
89
+ * Opens the candidate's plan, or resumes the one an earlier execution of its run left. A plan
90
+ * decides the entities of the active source it replaces: once that moved, it starts over.
91
+ */
92
+ open(input: OpenReplacementPlanInput): Promise<OpenedReplacementPlan>
93
+ /**
94
+ * State of the identities still to plan, in canonical order; each page reads one snapshot. The
95
+ * link stream first adds the links that identities planned since the previous link stream reach:
96
+ * those incident to an object whose existence flips, and the members of every scope a planned
97
+ * link changes.
98
+ */
99
+ streamState(input: StreamReplacementPlanStateInput): AsyncIterable<ReplacementPlanStatePage>
100
+ /** Plans identities streamed since they were last unplanned; each is planned once. */
101
+ stage(input: StageReplacementPlanInput): Promise<void>
102
+ /**
103
+ * Within the commit transaction, before the plan-bound session begins: unplans every planned
104
+ * identity whose inputs a commit changed since the plan was last fresh, with every identity
105
+ * planned from it, and adds the links such a commit brought within the plan's reach. A plan
106
+ * older than the changes storage still records is checked whole. A fresh plan returns the
107
+ * change counts its commit reports.
108
+ */
109
+ refresh(input: ReplacementPlanRef): Promise<ReplacementPlanStatus>
110
+ /**
111
+ * Deletes what is left of plans whose candidate is no longer ready, and the changes commits
112
+ * recorded that no ready plan still needs, a bounded number of rows at a time, and returns how
113
+ * many it deleted. A commit or an abandon may leave its plan behind: the rows are a cache
114
+ * nothing reads once the candidate moved on.
115
+ */
116
+ purge(input: PurgeReplacementPlansInput): Promise<number>
117
+ }
@@ -185,15 +185,6 @@ export interface PurgeAbandonedSourceMaterializationsInput {
185
185
  readonly limit: number
186
186
  }
187
187
 
188
- export interface SummarizeTerminalSourceMaterializationsInput {
189
- readonly projectId: string
190
- }
191
-
192
- export interface TerminalSourceMaterializationSummary {
193
- readonly count: number
194
- readonly oldestTerminalAt: string | null
195
- }
196
-
197
188
  export interface AssertSourceMaterializationExecutionInput {
198
189
  readonly projectId: string
199
190
  readonly source: ProjectionSourceRef
@@ -234,7 +225,4 @@ export interface OntologySourceStorage {
234
225
  purgeAbandoned(
235
226
  input: PurgeAbandonedSourceMaterializationsInput
236
227
  ): Promise<CleanupTerminalSourceMaterializationsResult>
237
- summarizeTerminal(
238
- input: SummarizeTerminalSourceMaterializationsInput
239
- ): Promise<TerminalSourceMaterializationSummary>
240
228
  }
@@ -181,13 +181,44 @@ function scopeMethod(
181
181
  if (kind === "async-generator") {
182
182
  return (...args: unknown[]) => {
183
183
  scope.assertAvailable()
184
- return Reflect.apply(implementation, target, args)
184
+ return scopeSteps(
185
+ Reflect.apply(implementation, target, args) as AsyncIterable<unknown>,
186
+ scope
187
+ )
185
188
  }
186
189
  }
187
190
 
188
191
  return implementation.bind(target)
189
192
  }
190
193
 
194
+ /**
195
+ * Each step of a stream runs in its own operation scope, released between steps: a page holds the
196
+ * provider's lock while it reads, never while its consumer works on it.
197
+ */
198
+ function scopeSteps<T>(
199
+ stream: AsyncIterable<T>,
200
+ scope: StorageOperationScope
201
+ ): AsyncIterableIterator<T> {
202
+ let iterator: AsyncIterator<T> | undefined
203
+ const steps = () => {
204
+ iterator ??= stream[Symbol.asyncIterator]()
205
+ return iterator
206
+ }
207
+ const scoped: AsyncIterableIterator<T> = {
208
+ next: (...args) => scope.run(() => steps().next(...args)),
209
+ return: (value) =>
210
+ scope.run(async () => (await steps().return?.(value)) ?? { done: true, value }),
211
+ throw: (error) =>
212
+ scope.run(async () => {
213
+ const current = steps()
214
+ if (!current.throw) throw error
215
+ return current.throw(error)
216
+ }),
217
+ [Symbol.asyncIterator]: () => scoped,
218
+ }
219
+ return scoped
220
+ }
221
+
191
222
  export function createAuthOperationScope<T extends AuthStorage>(
192
223
  target: T,
193
224
  scope: StorageOperationScope
@@ -230,6 +261,7 @@ export function createOntologyOperationScope<T extends OntologyStorage>(
230
261
  commits: createOperationScopedFacade(target.commits, scope),
231
262
  sources: createOperationScopedFacade(target.sources, scope),
232
263
  materializations: createOperationScopedFacade(target.materializations, scope),
264
+ replacementPlans: createOperationScopedFacade(target.replacementPlans, scope),
233
265
  outbox: createOperationScopedFacade(target.outbox, scope),
234
266
  ...(target.vectors ? { vectors: createOperationScopedFacade(target.vectors, scope) } : {}),
235
267
  }) as T
@@ -285,13 +285,16 @@ export class InMemoryProjectionRunStorage implements ProjectionRunStorage {
285
285
  assertProjectionRunNonEmpty(input.projectId, "projectId")
286
286
  assertProjectionRunListWindow(input.limit, "limit")
287
287
  assertProjectionRunListWindow(input.offset, "offset")
288
- if (input.statuses?.length === 0) return { runs: [], hasMore: false, total: 0 }
288
+ if (input.statuses?.length === 0 || input.errorCodes?.length === 0) {
289
+ return { runs: [], hasMore: false, total: 0 }
290
+ }
289
291
 
290
292
  const order = input.order ?? "desc"
291
293
  const offset = input.offset ?? 0
292
294
  const limit = input.limit ?? this.rows.size
293
295
  const statuses = input.statuses ? new Set(input.statuses) : null
294
296
  const objectTypeIds = input.objectTypeIds ? new Set(input.objectTypeIds) : null
297
+ const errorCodes = input.errorCodes ? new Set(input.errorCodes) : null
295
298
  const filtered = [...this.rows.values()]
296
299
  .filter((record) => record.projectId === input.projectId)
297
300
  .filter((record) =>
@@ -314,6 +317,9 @@ export class InMemoryProjectionRunStorage implements ProjectionRunStorage {
314
317
  : true
315
318
  )
316
319
  .filter((record) => (statuses ? statuses.has(record.status) : true))
320
+ .filter((record) =>
321
+ errorCodes ? record.error !== undefined && errorCodes.has(record.error.code) : true
322
+ )
317
323
  .filter((record) =>
318
324
  matchesRunListDateFilters(record, {
319
325
  statuses,
@@ -241,6 +241,8 @@ export interface ListProjectionRunsInput {
241
241
  */
242
242
  readonly objectTypeIds?: readonly string[]
243
243
  readonly statuses?: readonly ProjectionRunStatus[]
244
+ /** Runs whose recorded `error` has one of these codes; an empty set matches no runs. */
245
+ readonly errorCodes?: readonly ProjectionRunFailureCode[]
244
246
  readonly startedAfter?: Date
245
247
  readonly startedBefore?: Date
246
248
  readonly limit?: number
@@ -6,6 +6,7 @@ import type { AiUsageStorage } from "./ai-usage"
6
6
  import type { AuthStorage } from "./auth"
7
7
  import type { ConnectorConnectionStorage } from "./connector-connections"
8
8
  import type { ExecutionStorage } from "./executions"
9
+ import type { FileDownloadGrantStorage } from "./file-download-grants"
9
10
  import type { FileUploadSessionStore } from "./file-upload-sessions"
10
11
  import type { ObjectStorage } from "./objects/types"
11
12
  import type { OntologyStorage } from "./ontology"
@@ -370,6 +371,7 @@ export interface Storage {
370
371
  shareGrants?: ShareGrantStorage
371
372
  shareSessions?: ShareSessionStorage
372
373
  fileUploadSessions?: FileUploadSessionStore
374
+ fileDownloadGrants?: FileDownloadGrantStorage
373
375
  connectorConnections?: ConnectorConnectionStorage
374
376
 
375
377
  /** Lightweight reachability probe. It must not open a write transaction or run migrations. */
@@ -250,6 +250,7 @@ export function runAiCostStorageContractSuite<TStorage extends AiCostStorage>(
250
250
  cacheWriteInputTokens: 0,
251
251
  textOutputTokens: 0,
252
252
  reasoningOutputTokens: 0,
253
+ audioDurationMs: 0,
253
254
  },
254
255
  },
255
256
  costs: {