@sixb/core 0.1.16 → 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 (563) 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-8x74221e.js → chunk-10styjgk.js} +18 -13
  22. package/dist/{chunk-8x74221e.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-zb47r1c8.js → chunk-23xs4qp9.js} +2 -2
  26. package/dist/{chunk-gmdvns8f.js → chunk-2am3db31.js} +2 -2
  27. package/dist/{chunk-fj1dvp37.js → chunk-2vhg6ysa.js} +1 -1
  28. package/dist/{chunk-dp7yk20b.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-chdg6eqq.js → chunk-52c5zb0z.js} +2 -2
  36. package/dist/{chunk-69kt9q43.js → chunk-5be2ath4.js} +1 -1
  37. package/dist/{chunk-qnd7ehe5.js → chunk-5thzcb8g.js} +2 -2
  38. package/dist/{chunk-6z1q7j19.js → chunk-5yd8cchh.js} +1126 -780
  39. package/dist/chunk-5yd8cchh.js.map +66 -0
  40. package/dist/{chunk-3q7z9hd4.js → chunk-6wbm6ymz.js} +234 -40
  41. package/dist/{chunk-3q7z9hd4.js.map → chunk-6wbm6ymz.js.map} +8 -6
  42. package/dist/{chunk-kvysp909.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-dsv8kdgk.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-7g2gjvah.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-b9y8hcm2.js → chunk-c2rga5cx.js} +1 -1
  55. package/dist/{chunk-f72rbvsb.js → chunk-cnb5kv05.js} +2 -2
  56. package/dist/chunk-d62kjtbg.js.map +2 -2
  57. package/dist/{chunk-vjqt7q3a.js → chunk-dam456ve.js} +233 -34
  58. package/dist/{chunk-vjqt7q3a.js.map → chunk-dam456ve.js.map} +7 -5
  59. package/dist/{chunk-sbcm1b92.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-cq44v1a6.js → chunk-f1xh7a32.js} +3 -3
  65. package/dist/{chunk-h4138ww2.js → chunk-fggq3d9k.js} +450 -799
  66. package/dist/chunk-fggq3d9k.js.map +49 -0
  67. package/dist/{chunk-kttr5ftm.js → chunk-gf7yht60.js} +3 -3
  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-nj0020ay.js → chunk-jjrn5v0p.js} +1 -1
  72. package/dist/{chunk-nvymebc1.js → chunk-jnfxmr3f.js} +1 -1
  73. package/dist/{chunk-nkbev3tr.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-h044jb97.js → chunk-pja9jfz6.js} +172 -10
  77. package/dist/chunk-pja9jfz6.js.map +19 -0
  78. package/dist/chunk-pqajwytd.js.map +1 -1
  79. package/dist/{chunk-mr60an99.js → chunk-qczk96d9.js} +22 -2
  80. package/dist/{chunk-mr60an99.js.map → chunk-qczk96d9.js.map} +3 -3
  81. package/dist/{chunk-s3csryxe.js → chunk-rj69qcrd.js} +8 -2
  82. package/dist/chunk-rj69qcrd.js.map +11 -0
  83. package/dist/{chunk-swxzncrv.js → chunk-rpxz486p.js} +32 -5
  84. package/dist/{chunk-swxzncrv.js.map → chunk-rpxz486p.js.map} +4 -4
  85. package/dist/{chunk-tkdbge6v.js → chunk-rx7h5fdx.js} +1 -1
  86. package/dist/{chunk-tnvafr7g.js → chunk-s7ftxrdr.js} +105 -7
  87. package/dist/chunk-s7ftxrdr.js.map +22 -0
  88. package/dist/{chunk-h866d223.js → chunk-sk0hcjsz.js} +1 -1
  89. package/dist/{chunk-2xvgy3x5.js → chunk-svabwqdq.js} +2 -2
  90. package/dist/{chunk-667x4drs.js → chunk-t9shqx3w.js} +2 -2
  91. package/dist/{chunk-40qb8wpe.js → chunk-tjjgy3z4.js} +26 -23
  92. package/dist/{chunk-40qb8wpe.js.map → chunk-tjjgy3z4.js.map} +3 -3
  93. package/dist/{chunk-gkxsenvp.js → chunk-vp3z1ckh.js} +31 -7
  94. package/dist/{chunk-gkxsenvp.js.map → chunk-vp3z1ckh.js.map} +5 -4
  95. package/dist/{chunk-cxj8y8t0.js → chunk-vre348sb.js} +2 -2
  96. package/dist/{chunk-vsvrv7n8.js → chunk-w9yycd3t.js} +1 -1
  97. package/dist/{chunk-g4rbm4a6.js → chunk-wt4szfec.js} +379 -331
  98. package/dist/chunk-wt4szfec.js.map +14 -0
  99. package/dist/{chunk-a7ne02hk.js → chunk-xcy5ddha.js} +6 -6
  100. package/dist/{chunk-zvmr2hqk.js → chunk-xyvy73tj.js} +4 -3
  101. package/dist/{chunk-zvmr2hqk.js.map → chunk-xyvy73tj.js.map} +3 -3
  102. package/dist/datasets/write.js +1 -1
  103. package/dist/execution/agent.js +38 -37
  104. package/dist/execution/agent.js.map +1 -1
  105. package/dist/execution/authorized-object-reader.d.ts +3 -1
  106. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  107. package/dist/execution/primitive.js +36 -35
  108. package/dist/execution/primitive.js.map +2 -2
  109. package/dist/execution/request.js +37 -36
  110. package/dist/execution/request.js.map +2 -2
  111. package/dist/index.d.ts +8 -4
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +62 -59
  114. package/dist/index.js.map +1 -1
  115. package/dist/lake-storage/in-memory.d.ts +5 -1
  116. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  117. package/dist/lake-storage/index.d.ts +1 -1
  118. package/dist/lake-storage/index.d.ts.map +1 -1
  119. package/dist/lake-storage/index.js +2 -2
  120. package/dist/lake-storage/types.d.ts +26 -0
  121. package/dist/lake-storage/types.d.ts.map +1 -1
  122. package/dist/maintenance/ontology-maintenance.d.ts +5 -1
  123. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  124. package/dist/maintenance/types.d.ts +1 -4
  125. package/dist/maintenance/types.d.ts.map +1 -1
  126. package/dist/materialization/event-envelopes.d.ts +20 -0
  127. package/dist/materialization/event-envelopes.d.ts.map +1 -0
  128. package/dist/materialization/events.d.ts +29 -3
  129. package/dist/materialization/events.d.ts.map +1 -1
  130. package/dist/materialization/index.d.ts +4 -1
  131. package/dist/materialization/index.d.ts.map +1 -1
  132. package/dist/materialization/index.js +9 -3
  133. package/dist/materialization/index.js.map +1 -1
  134. package/dist/materializer/edits/plan.d.ts +2 -10
  135. package/dist/materializer/edits/plan.d.ts.map +1 -1
  136. package/dist/materializer/effective/build-events.d.ts +5 -21
  137. package/dist/materializer/effective/build-events.d.ts.map +1 -1
  138. package/dist/materializer/effective/vector-indexing.d.ts +2 -3
  139. package/dist/materializer/effective/vector-indexing.d.ts.map +1 -1
  140. package/dist/materializer/effective/vectors.d.ts +2 -3
  141. package/dist/materializer/effective/vectors.d.ts.map +1 -1
  142. package/dist/materializer/execution/scope.d.ts +1 -11
  143. package/dist/materializer/execution/scope.d.ts.map +1 -1
  144. package/dist/materializer/execution/work-executor.d.ts +5 -7
  145. package/dist/materializer/execution/work-executor.d.ts.map +1 -1
  146. package/dist/materializer/execution/work-records.d.ts +1 -3
  147. package/dist/materializer/execution/work-records.d.ts.map +1 -1
  148. package/dist/materializer/index.js +31 -32
  149. package/dist/materializer/index.js.map +1 -1
  150. package/dist/materializer/projections/replace.d.ts.map +1 -1
  151. package/dist/materializer/projections/replacement-plan.d.ts +8 -11
  152. package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
  153. package/dist/materializer/shared/batching.d.ts +5 -0
  154. package/dist/materializer/shared/batching.d.ts.map +1 -1
  155. package/dist/materializer/telemetry/plan.d.ts +2 -8
  156. package/dist/materializer/telemetry/plan.d.ts.map +1 -1
  157. package/dist/models/audio/catalog.d.ts +20 -0
  158. package/dist/models/audio/catalog.d.ts.map +1 -0
  159. package/dist/models/audio/errors.d.ts +8 -0
  160. package/dist/models/audio/errors.d.ts.map +1 -0
  161. package/dist/models/audio/file.d.ts +9 -0
  162. package/dist/models/audio/file.d.ts.map +1 -0
  163. package/dist/models/audio/runtime.d.ts +8 -0
  164. package/dist/models/audio/runtime.d.ts.map +1 -0
  165. package/dist/models/audio/types.d.ts +60 -0
  166. package/dist/models/audio/types.d.ts.map +1 -0
  167. package/dist/models/catalog.d.ts +23 -1
  168. package/dist/models/catalog.d.ts.map +1 -1
  169. package/dist/models/definitions.d.ts +1 -1
  170. package/dist/models/definitions.d.ts.map +1 -1
  171. package/dist/models/events.d.ts +3 -0
  172. package/dist/models/events.d.ts.map +1 -1
  173. package/dist/models/execution/index.js +22 -22
  174. package/dist/models/execution/model-call-admission.d.ts +6 -1
  175. package/dist/models/execution/model-call-admission.d.ts.map +1 -1
  176. package/dist/models/execution/model-call-limits.d.ts.map +1 -1
  177. package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
  178. package/dist/models/execution/reranking.d.ts +4 -0
  179. package/dist/models/execution/reranking.d.ts.map +1 -0
  180. package/dist/models/execution/usage.d.ts.map +1 -1
  181. package/dist/models/execution.d.ts +2 -1
  182. package/dist/models/execution.d.ts.map +1 -1
  183. package/dist/models/generation-types.d.ts +2 -0
  184. package/dist/models/generation-types.d.ts.map +1 -1
  185. package/dist/models/index.d.ts +7 -1
  186. package/dist/models/index.d.ts.map +1 -1
  187. package/dist/models/index.js +6 -2
  188. package/dist/models/index.js.map +1 -1
  189. package/dist/models/pricing.d.ts +2 -2
  190. package/dist/models/pricing.d.ts.map +1 -1
  191. package/dist/models/reranking-model.d.ts +49 -0
  192. package/dist/models/reranking-model.d.ts.map +1 -0
  193. package/dist/objects/index.js +25 -25
  194. package/dist/objects/query/executor.d.ts +2 -1
  195. package/dist/objects/query/executor.d.ts.map +1 -1
  196. package/dist/objects/query/index.d.ts +1 -1
  197. package/dist/objects/query/index.d.ts.map +1 -1
  198. package/dist/objects/query/index.js +22 -22
  199. package/dist/objects/query/ir.d.ts +8 -1
  200. package/dist/objects/query/ir.d.ts.map +1 -1
  201. package/dist/objects/query/normalize.d.ts.map +1 -1
  202. package/dist/objects/query/planner.d.ts +1 -1
  203. package/dist/objects/query/planner.d.ts.map +1 -1
  204. package/dist/objects/query/primary-id.d.ts +7 -0
  205. package/dist/objects/query/primary-id.d.ts.map +1 -0
  206. package/dist/objects/query/reranking-executor.d.ts +13 -0
  207. package/dist/objects/query/reranking-executor.d.ts.map +1 -0
  208. package/dist/objects/query/reranking-limits.d.ts +3 -0
  209. package/dist/objects/query/reranking-limits.d.ts.map +1 -0
  210. package/dist/objects/query/reranking-query.d.ts +4 -0
  211. package/dist/objects/query/reranking-query.d.ts.map +1 -0
  212. package/dist/objects/query/validate.d.ts.map +1 -1
  213. package/dist/objects/sdk/query-builder.d.ts +8 -0
  214. package/dist/objects/sdk/query-builder.d.ts.map +1 -1
  215. package/dist/objects/sdk/query-executor.d.ts +2 -2
  216. package/dist/objects/sdk/query-executor.d.ts.map +1 -1
  217. package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
  218. package/dist/objects/vectors/indexing-dispatch.d.ts +21 -0
  219. package/dist/objects/vectors/indexing-dispatch.d.ts.map +1 -0
  220. package/dist/objects/vectors/query.d.ts.map +1 -1
  221. package/dist/ontology/builders.d.ts.map +1 -1
  222. package/dist/ontology/index.d.ts +1 -1
  223. package/dist/ontology/index.d.ts.map +1 -1
  224. package/dist/ontology/index.js +3 -3
  225. package/dist/ontology/internal.js +2 -2
  226. package/dist/ontology/query-capabilities.d.ts +1 -0
  227. package/dist/ontology/query-capabilities.d.ts.map +1 -1
  228. package/dist/ontology/types.d.ts +20 -0
  229. package/dist/ontology/types.d.ts.map +1 -1
  230. package/dist/ontology/validation/query.d.ts.map +1 -1
  231. package/dist/pipelines/index.js +23 -23
  232. package/dist/projections/internal.js +22 -22
  233. package/dist/query.d.ts +4 -2
  234. package/dist/query.d.ts.map +1 -1
  235. package/dist/query.js +2 -2
  236. package/dist/queues/in-memory.d.ts +3 -0
  237. package/dist/queues/in-memory.d.ts.map +1 -1
  238. package/dist/queues/index.js +1 -1
  239. package/dist/queues/types.d.ts +4 -0
  240. package/dist/queues/types.d.ts.map +1 -1
  241. package/dist/runtime/host.d.ts +1 -0
  242. package/dist/runtime/host.d.ts.map +1 -1
  243. package/dist/runtime/index.d.ts +1 -1
  244. package/dist/runtime/index.d.ts.map +1 -1
  245. package/dist/runtime/internal.d.ts +1 -0
  246. package/dist/runtime/internal.d.ts.map +1 -1
  247. package/dist/runtime/internal.js +28 -26
  248. package/dist/runtime/internal.js.map +1 -1
  249. package/dist/runtime/public-origin.d.ts +10 -0
  250. package/dist/runtime/public-origin.d.ts.map +1 -0
  251. package/dist/runtime/sixb.d.ts +1 -0
  252. package/dist/runtime/sixb.d.ts.map +1 -1
  253. package/dist/runtime/types.d.ts +12 -2
  254. package/dist/runtime/types.d.ts.map +1 -1
  255. package/dist/sandboxes/index.js +5 -5
  256. package/dist/shares/internal.js +19 -19
  257. package/dist/storage/agents/provider.js +2 -2
  258. package/dist/storage/ai-cost/analytics.d.ts +1 -0
  259. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  260. package/dist/storage/ai-cost/provider.js +3 -3
  261. package/dist/storage/ai-cost/types.d.ts +1 -1
  262. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  263. package/dist/storage/ai-cost/validation.d.ts.map +1 -1
  264. package/dist/storage/ai-limits/enforcement.js +2 -2
  265. package/dist/storage/ai-limits/in-memory.d.ts.map +1 -1
  266. package/dist/storage/ai-limits/provider.d.ts +7 -2
  267. package/dist/storage/ai-limits/provider.d.ts.map +1 -1
  268. package/dist/storage/ai-limits/provider.js +4 -2
  269. package/dist/storage/ai-limits/provider.js.map +1 -1
  270. package/dist/storage/ai-limits/types.d.ts +3 -0
  271. package/dist/storage/ai-limits/types.d.ts.map +1 -1
  272. package/dist/storage/ai-usage/record.d.ts.map +1 -1
  273. package/dist/storage/ai-usage/types.d.ts +8 -4
  274. package/dist/storage/ai-usage/types.d.ts.map +1 -1
  275. package/dist/storage/ai-usage/usage.d.ts.map +1 -1
  276. package/dist/storage/file-download-grants/in-memory.d.ts +11 -0
  277. package/dist/storage/file-download-grants/in-memory.d.ts.map +1 -0
  278. package/dist/storage/file-download-grants/index.d.ts +3 -0
  279. package/dist/storage/file-download-grants/index.d.ts.map +1 -0
  280. package/dist/storage/file-download-grants/record.d.ts +11 -0
  281. package/dist/storage/file-download-grants/record.d.ts.map +1 -0
  282. package/dist/storage/file-download-grants/types.d.ts +44 -0
  283. package/dist/storage/file-download-grants/types.d.ts.map +1 -0
  284. package/dist/storage/file-upload-sessions/provider.js +6 -6
  285. package/dist/storage/in-memory/index.d.ts +4 -0
  286. package/dist/storage/in-memory/index.d.ts.map +1 -1
  287. package/dist/storage/index.d.ts +5 -3
  288. package/dist/storage/index.d.ts.map +1 -1
  289. package/dist/storage/index.js +30 -30
  290. package/dist/storage/index.js.map +1 -1
  291. package/dist/storage/internal.d.ts +1 -0
  292. package/dist/storage/internal.d.ts.map +1 -1
  293. package/dist/storage/internal.js +8 -4
  294. package/dist/storage/internal.js.map +1 -1
  295. package/dist/storage/migrations/index.d.ts +1 -1
  296. package/dist/storage/migrations/index.d.ts.map +1 -1
  297. package/dist/storage/migrations/migrate-storage.d.ts +3 -3
  298. package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
  299. package/dist/storage/migrations/types.d.ts +7 -0
  300. package/dist/storage/migrations/types.d.ts.map +1 -1
  301. package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
  302. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
  303. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
  304. package/dist/storage/objects/query-preparation.d.ts +39 -0
  305. package/dist/storage/objects/query-preparation.d.ts.map +1 -0
  306. package/dist/storage/objects/types.d.ts +2 -0
  307. package/dist/storage/objects/types.d.ts.map +1 -1
  308. package/dist/storage/ontology/commits.d.ts +1 -6
  309. package/dist/storage/ontology/commits.d.ts.map +1 -1
  310. package/dist/storage/ontology/in-memory/index.d.ts +4 -2
  311. package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
  312. package/dist/storage/ontology/in-memory/materializations-state.d.ts +0 -2
  313. package/dist/storage/ontology/in-memory/materializations-state.d.ts.map +1 -1
  314. package/dist/storage/ontology/in-memory/materializations-work.d.ts +1 -3
  315. package/dist/storage/ontology/in-memory/materializations-work.d.ts.map +1 -1
  316. package/dist/storage/ontology/in-memory/materializations.d.ts +23 -57
  317. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  318. package/dist/storage/ontology/in-memory/outbox.d.ts +3 -2
  319. package/dist/storage/ontology/in-memory/outbox.d.ts.map +1 -1
  320. package/dist/storage/ontology/in-memory/replacement-plans.d.ts +104 -0
  321. package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -0
  322. package/dist/storage/ontology/in-memory/shared-state.d.ts +17 -2
  323. package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
  324. package/dist/storage/ontology/in-memory/source-roots.d.ts +3 -1
  325. package/dist/storage/ontology/in-memory/source-roots.d.ts.map +1 -1
  326. package/dist/storage/ontology/in-memory/sources.d.ts +1 -2
  327. package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
  328. package/dist/storage/ontology/in-memory/state-reader.d.ts +25 -0
  329. package/dist/storage/ontology/in-memory/state-reader.d.ts.map +1 -0
  330. package/dist/storage/ontology/index.d.ts +6 -3
  331. package/dist/storage/ontology/index.d.ts.map +1 -1
  332. package/dist/storage/ontology/materializations.d.ts +40 -59
  333. package/dist/storage/ontology/materializations.d.ts.map +1 -1
  334. package/dist/storage/ontology/outbox.d.ts +4 -6
  335. package/dist/storage/ontology/outbox.d.ts.map +1 -1
  336. package/dist/storage/ontology/provider-work.d.ts +114 -3
  337. package/dist/storage/ontology/provider-work.d.ts.map +1 -1
  338. package/dist/storage/ontology/provider.d.ts +14 -39
  339. package/dist/storage/ontology/provider.d.ts.map +1 -1
  340. package/dist/storage/ontology/provider.js +26 -12
  341. package/dist/storage/ontology/provider.js.map +1 -1
  342. package/dist/storage/ontology/replacement-plans.d.ts +103 -0
  343. package/dist/storage/ontology/replacement-plans.d.ts.map +1 -0
  344. package/dist/storage/ontology/sources.d.ts +0 -8
  345. package/dist/storage/ontology/sources.d.ts.map +1 -1
  346. package/dist/storage/operation-scope.d.ts.map +1 -1
  347. package/dist/storage/operation-scope.js +1 -1
  348. package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
  349. package/dist/storage/projection-runs/types.d.ts +2 -0
  350. package/dist/storage/projection-runs/types.d.ts.map +1 -1
  351. package/dist/storage/types.d.ts +2 -0
  352. package/dist/storage/types.d.ts.map +1 -1
  353. package/dist/storage/workflow-runs/provider.js +6 -6
  354. package/dist/syncs/index.js +24 -24
  355. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  356. package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
  357. package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
  358. package/dist/testing/file-download-grant-storage-contract.d.ts +9 -0
  359. package/dist/testing/file-download-grant-storage-contract.d.ts.map +1 -0
  360. package/dist/testing/index.d.ts +1 -0
  361. package/dist/testing/index.d.ts.map +1 -1
  362. package/dist/testing/index.js +2549 -1490
  363. package/dist/testing/index.js.map +14 -13
  364. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  365. package/dist/testing/materializer-storage-contract.d.ts +14 -0
  366. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  367. package/dist/testing/object-read-scope-contract.d.ts.map +1 -1
  368. package/dist/testing/ontology-contract-fixture.d.ts +5 -1
  369. package/dist/testing/ontology-contract-fixture.d.ts.map +1 -1
  370. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  371. package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
  372. package/dist/testing/queues-contract.d.ts.map +1 -1
  373. package/dist/webhooks/internal.js +20 -20
  374. package/dist/workers/index.js +15 -17
  375. package/dist/workers/index.js.map +3 -3
  376. package/dist/workers/queue-worker.d.ts +3 -2
  377. package/dist/workers/queue-worker.d.ts.map +1 -1
  378. package/dist/workflows/index.js +42 -41
  379. package/dist/workflows/index.js.map +1 -1
  380. package/package.json +7 -1
  381. package/src/actions/types/context.ts +5 -2
  382. package/src/blob-storage/download-urls.ts +138 -0
  383. package/src/blob-storage/execution.ts +32 -1
  384. package/src/blob-storage/internal.ts +1 -0
  385. package/src/execution/authorized-object-reader.ts +8 -1
  386. package/src/index.ts +25 -0
  387. package/src/lake-storage/in-memory.ts +38 -9
  388. package/src/lake-storage/index.ts +2 -0
  389. package/src/lake-storage/types.ts +30 -0
  390. package/src/maintenance/ontology-maintenance.ts +50 -23
  391. package/src/maintenance/types.ts +1 -4
  392. package/src/materialization/event-envelopes.ts +168 -0
  393. package/src/materialization/events.ts +40 -4
  394. package/src/materialization/index.ts +9 -1
  395. package/src/materializer/README.md +55 -10
  396. package/src/materializer/edits/commit.ts +3 -19
  397. package/src/materializer/edits/plan.ts +20 -71
  398. package/src/materializer/effective/build-events.ts +42 -136
  399. package/src/materializer/effective/vector-indexing.ts +2 -3
  400. package/src/materializer/effective/vectors.ts +2 -3
  401. package/src/materializer/execution/scope.ts +1 -38
  402. package/src/materializer/execution/work-executor.ts +21 -115
  403. package/src/materializer/execution/work-records.ts +0 -15
  404. package/src/materializer/projections/replace.ts +106 -63
  405. package/src/materializer/projections/replacement-plan.ts +73 -218
  406. package/src/materializer/shared/batching.ts +7 -0
  407. package/src/materializer/telemetry/append.ts +2 -14
  408. package/src/materializer/telemetry/plan.ts +6 -43
  409. package/src/models/audio/catalog.ts +90 -0
  410. package/src/models/audio/errors.ts +19 -0
  411. package/src/models/audio/file.ts +78 -0
  412. package/src/models/audio/runtime.ts +182 -0
  413. package/src/models/audio/types.ts +69 -0
  414. package/src/models/catalog.ts +52 -5
  415. package/src/models/definitions.ts +8 -1
  416. package/src/models/events.ts +3 -0
  417. package/src/models/execution/README.md +20 -1
  418. package/src/models/execution/model-call-admission.ts +6 -1
  419. package/src/models/execution/model-call-limits.ts +21 -11
  420. package/src/models/execution/model-call-recorder.ts +1 -0
  421. package/src/models/execution/model-call-recovery.ts +1 -0
  422. package/src/models/execution/reranking.ts +137 -0
  423. package/src/models/execution/usage.ts +1 -0
  424. package/src/models/execution.ts +5 -1
  425. package/src/models/generation-types.ts +2 -0
  426. package/src/models/index.ts +32 -0
  427. package/src/models/pricing.ts +2 -1
  428. package/src/models/reranking-model.ts +114 -0
  429. package/src/objects/query/executor.ts +42 -2
  430. package/src/objects/query/explain.ts +8 -0
  431. package/src/objects/query/index.ts +1 -0
  432. package/src/objects/query/ir.ts +10 -0
  433. package/src/objects/query/normalize.ts +2 -0
  434. package/src/objects/query/planner.ts +12 -1
  435. package/src/objects/query/primary-id.ts +56 -0
  436. package/src/objects/query/reranking-executor.ts +91 -0
  437. package/src/objects/query/reranking-limits.ts +3 -0
  438. package/src/objects/query/reranking-query.ts +8 -0
  439. package/src/objects/query/validate.ts +33 -1
  440. package/src/objects/sdk/query-builder.ts +15 -2
  441. package/src/objects/sdk/query-executor.ts +2 -2
  442. package/src/objects/sdk/runtime-query-executor.ts +7 -4
  443. package/src/objects/vectors/README.md +6 -2
  444. package/src/objects/vectors/indexing-dispatch.ts +83 -0
  445. package/src/objects/vectors/query.ts +3 -0
  446. package/src/ontology/builders.ts +1 -0
  447. package/src/ontology/index.ts +2 -0
  448. package/src/ontology/query-capabilities.ts +1 -1
  449. package/src/ontology/types.ts +21 -0
  450. package/src/ontology/validation/query.ts +57 -0
  451. package/src/query.ts +4 -0
  452. package/src/queues/in-memory.ts +54 -19
  453. package/src/queues/types.ts +4 -0
  454. package/src/runtime/host.ts +28 -1
  455. package/src/runtime/index.ts +1 -0
  456. package/src/runtime/internal.ts +1 -0
  457. package/src/runtime/public-origin.ts +33 -0
  458. package/src/runtime/sixb.ts +13 -2
  459. package/src/runtime/types.ts +12 -2
  460. package/src/storage/ai-cost/analytics.ts +2 -0
  461. package/src/storage/ai-cost/codec.ts +2 -1
  462. package/src/storage/ai-cost/types.ts +1 -0
  463. package/src/storage/ai-cost/validation.ts +21 -8
  464. package/src/storage/ai-limits/in-memory.ts +10 -2
  465. package/src/storage/ai-limits/provider.ts +29 -2
  466. package/src/storage/ai-limits/types.ts +3 -0
  467. package/src/storage/ai-usage/record.ts +9 -0
  468. package/src/storage/ai-usage/types.ts +8 -4
  469. package/src/storage/ai-usage/usage.ts +2 -0
  470. package/src/storage/file-download-grants/in-memory.ts +73 -0
  471. package/src/storage/file-download-grants/index.ts +8 -0
  472. package/src/storage/file-download-grants/record.ts +47 -0
  473. package/src/storage/file-download-grants/types.ts +48 -0
  474. package/src/storage/in-memory/index.ts +13 -2
  475. package/src/storage/index.ts +31 -13
  476. package/src/storage/internal.ts +1 -0
  477. package/src/storage/migrations/index.ts +1 -0
  478. package/src/storage/migrations/migrate-storage.ts +36 -12
  479. package/src/storage/migrations/types.ts +8 -0
  480. package/src/storage/objects/in-memory/query.ts +2 -0
  481. package/src/storage/objects/in-memory/selected-reader.ts +1 -0
  482. package/src/storage/objects/in-memory/storage.ts +1 -0
  483. package/src/storage/objects/query-preparation.ts +77 -0
  484. package/src/storage/objects/types.ts +2 -0
  485. package/src/storage/ontology/commits.ts +1 -6
  486. package/src/storage/ontology/in-memory/index.ts +28 -9
  487. package/src/storage/ontology/in-memory/materializations-finalization.ts +35 -68
  488. package/src/storage/ontology/in-memory/materializations-state.ts +0 -22
  489. package/src/storage/ontology/in-memory/materializations-work.ts +0 -45
  490. package/src/storage/ontology/in-memory/materializations.ts +172 -653
  491. package/src/storage/ontology/in-memory/outbox.ts +37 -29
  492. package/src/storage/ontology/in-memory/replacement-plans.ts +697 -0
  493. package/src/storage/ontology/in-memory/shared-state.ts +24 -2
  494. package/src/storage/ontology/in-memory/source-roots.ts +7 -2
  495. package/src/storage/ontology/in-memory/sources.ts +7 -33
  496. package/src/storage/ontology/in-memory/state-reader.ts +245 -0
  497. package/src/storage/ontology/index.ts +19 -13
  498. package/src/storage/ontology/materializations.ts +45 -74
  499. package/src/storage/ontology/outbox.ts +4 -7
  500. package/src/storage/ontology/provider-header-validation.ts +0 -57
  501. package/src/storage/ontology/provider-work.ts +381 -90
  502. package/src/storage/ontology/provider.ts +74 -171
  503. package/src/storage/ontology/replacement-plans.ts +117 -0
  504. package/src/storage/ontology/sources.ts +0 -12
  505. package/src/storage/operation-scope.ts +33 -1
  506. package/src/storage/projection-runs/in-memory.ts +7 -1
  507. package/src/storage/projection-runs/types.ts +2 -0
  508. package/src/storage/types.ts +2 -0
  509. package/src/testing/ai-cost-storage-contract.ts +1 -0
  510. package/src/testing/ai-limit-storage-contract.ts +62 -0
  511. package/src/testing/ai-usage-storage-contract.ts +31 -0
  512. package/src/testing/file-download-grant-storage-contract.ts +139 -0
  513. package/src/testing/index.ts +4 -0
  514. package/src/testing/lake-storage-contract.ts +87 -1
  515. package/src/testing/materializer-storage-contract.ts +1008 -1
  516. package/src/testing/object-read-scope-contract.ts +1 -0
  517. package/src/testing/ontology-contract-fixture.ts +11 -87
  518. package/src/testing/ontology-storage-contract.ts +70 -39
  519. package/src/testing/projection-run-storage-contract.ts +14 -0
  520. package/src/testing/queues-contract.ts +59 -0
  521. package/src/workers/queue-worker.ts +19 -16
  522. package/dist/chunk-6z1q7j19.js.map +0 -62
  523. package/dist/chunk-7ytf06d3.js +0 -113
  524. package/dist/chunk-7ytf06d3.js.map +0 -10
  525. package/dist/chunk-a0073121.js.map +0 -12
  526. package/dist/chunk-g4rbm4a6.js.map +0 -15
  527. package/dist/chunk-h044jb97.js.map +0 -15
  528. package/dist/chunk-h4138ww2.js.map +0 -50
  529. package/dist/chunk-hgqpcmyr.js.map +0 -12
  530. package/dist/chunk-jgwb25gc.js.map +0 -12
  531. package/dist/chunk-k4kkp58d.js.map +0 -11
  532. package/dist/chunk-kvysp909.js.map +0 -17
  533. package/dist/chunk-mdnw7nj8.js.map +0 -15
  534. package/dist/chunk-s3csryxe.js.map +0 -11
  535. package/dist/chunk-tnvafr7g.js.map +0 -19
  536. package/dist/chunk-xnx96gfy.js.map +0 -15
  537. package/dist/materializer/execution/plan-stream.d.ts +0 -8
  538. package/dist/materializer/execution/plan-stream.d.ts.map +0 -1
  539. package/src/materializer/execution/plan-stream.ts +0 -121
  540. /package/dist/{chunk-zb47r1c8.js.map → chunk-23xs4qp9.js.map} +0 -0
  541. /package/dist/{chunk-gmdvns8f.js.map → chunk-2am3db31.js.map} +0 -0
  542. /package/dist/{chunk-fj1dvp37.js.map → chunk-2vhg6ysa.js.map} +0 -0
  543. /package/dist/{chunk-dp7yk20b.js.map → chunk-33saed7g.js.map} +0 -0
  544. /package/dist/{chunk-chdg6eqq.js.map → chunk-52c5zb0z.js.map} +0 -0
  545. /package/dist/{chunk-69kt9q43.js.map → chunk-5be2ath4.js.map} +0 -0
  546. /package/dist/{chunk-qnd7ehe5.js.map → chunk-5thzcb8g.js.map} +0 -0
  547. /package/dist/{chunk-dsv8kdgk.js.map → chunk-9g6jz9kk.js.map} +0 -0
  548. /package/dist/{chunk-7g2gjvah.js.map → chunk-a7er86jd.js.map} +0 -0
  549. /package/dist/{chunk-b9y8hcm2.js.map → chunk-c2rga5cx.js.map} +0 -0
  550. /package/dist/{chunk-f72rbvsb.js.map → chunk-cnb5kv05.js.map} +0 -0
  551. /package/dist/{chunk-sbcm1b92.js.map → chunk-e67ynxcr.js.map} +0 -0
  552. /package/dist/{chunk-cq44v1a6.js.map → chunk-f1xh7a32.js.map} +0 -0
  553. /package/dist/{chunk-kttr5ftm.js.map → chunk-gf7yht60.js.map} +0 -0
  554. /package/dist/{chunk-nj0020ay.js.map → chunk-jjrn5v0p.js.map} +0 -0
  555. /package/dist/{chunk-nvymebc1.js.map → chunk-jnfxmr3f.js.map} +0 -0
  556. /package/dist/{chunk-nkbev3tr.js.map → chunk-k4g51s47.js.map} +0 -0
  557. /package/dist/{chunk-tkdbge6v.js.map → chunk-rx7h5fdx.js.map} +0 -0
  558. /package/dist/{chunk-h866d223.js.map → chunk-sk0hcjsz.js.map} +0 -0
  559. /package/dist/{chunk-2xvgy3x5.js.map → chunk-svabwqdq.js.map} +0 -0
  560. /package/dist/{chunk-667x4drs.js.map → chunk-t9shqx3w.js.map} +0 -0
  561. /package/dist/{chunk-cxj8y8t0.js.map → chunk-vre348sb.js.map} +0 -0
  562. /package/dist/{chunk-vsvrv7n8.js.map → chunk-w9yycd3t.js.map} +0 -0
  563. /package/dist/{chunk-a7ne02hk.js.map → chunk-xcy5ddha.js.map} +0 -0
@@ -1,3 +1,5 @@
1
+ import type { OntologyDefinitionCatalog } from "../../ontology/registry"
2
+ import type { ObjectQueryPreparationResult } from "../objects/query-preparation"
1
3
  import type { Storage } from "../types"
2
4
 
3
5
  export interface MigrationStepInfo {
@@ -123,7 +125,13 @@ export interface MigrationCapableStorage extends Storage {
123
125
  readonly migrators: readonly StorageMigrator[]
124
126
  }
125
127
 
128
+ export interface StorageMigrationOptions {
129
+ readonly projectId: string
130
+ readonly ontology: OntologyDefinitionCatalog
131
+ }
132
+
126
133
  export interface StorageMigrationResult {
134
+ readonly queries?: ObjectQueryPreparationResult
127
135
  readonly status: "migrated" | "current" | "skipped"
128
136
  readonly reports: readonly MigrationReport[]
129
137
  }
@@ -117,6 +117,8 @@ export function evaluateObjectQuery(
117
117
  source: InMemoryReadSource
118
118
  ): QueryEvaluation {
119
119
  switch (query.kind) {
120
+ case "rerank":
121
+ throw new Error("[Sixb] Reranking must execute in the model runtime, not storage.")
120
122
  case "start":
121
123
  return evaluateStart(query.objectTypeId, source)
122
124
  case "refs":
@@ -105,6 +105,7 @@ export function createInMemorySelectedReader(
105
105
  const result = evaluateObjectQuery(stripOuterRowShape(input.query), universe)
106
106
  return visible(
107
107
  structuredClone({
108
+ total: result.entries.length,
108
109
  facets: buildFacetResults(
109
110
  result.entries.map((entry) => entry.row),
110
111
  input.facets
@@ -305,6 +305,7 @@ export class InMemoryObjectStorage implements ObjectStorage {
305
305
  this.readSource(params.projectId)
306
306
  )
307
307
  return {
308
+ total: result.entries.length,
308
309
  facets: buildFacetResults(
309
310
  result.entries.map((entry) => entry.row),
310
311
  params.facets
@@ -0,0 +1,77 @@
1
+ import type { QueryScalarKind } from "../../objects/query/ir"
2
+ import {
3
+ queryScalarKindForSchema,
4
+ resolvePropertyQueryCapabilities,
5
+ resolveQuerySchema,
6
+ } from "../../ontology/query-capabilities"
7
+ import type { OntologyDefinitionCatalog } from "../../ontology/registry"
8
+ import type { ObjectQueryIndexDefinition } from "../../ontology/types"
9
+ import type { Storage } from "../types"
10
+
11
+ export interface ObjectQueryPreparationPlan {
12
+ readonly projectId: string
13
+ readonly objectTypes: readonly {
14
+ readonly objectTypeId: string
15
+ readonly properties: readonly {
16
+ readonly propertyId: string
17
+ readonly scalarKind?: QueryScalarKind
18
+ readonly filterable: boolean
19
+ readonly sortable: boolean
20
+ readonly text: boolean
21
+ }[]
22
+ readonly indexes: readonly ObjectQueryIndexDefinition[]
23
+ }[]
24
+ }
25
+
26
+ export interface ObjectQueryPreparationResult {
27
+ readonly status: "prepared" | "current"
28
+ readonly objectTypes: number
29
+ readonly indexes: number
30
+ readonly warnings: readonly string[]
31
+ }
32
+
33
+ /** Optional maintenance capability, separate from object reads and writes. */
34
+ export interface QueryPreparationCapableStorage extends Storage {
35
+ /** Coordinate concurrent callers and skip completed plans. Backfills may block writes. */
36
+ prepareObjectQueries(plan: ObjectQueryPreparationPlan): Promise<ObjectQueryPreparationResult>
37
+ }
38
+
39
+ export function isQueryPreparationCapableStorage(
40
+ storage: Storage
41
+ ): storage is QueryPreparationCapableStorage {
42
+ return "prepareObjectQueries" in storage && typeof storage.prepareObjectQueries === "function"
43
+ }
44
+
45
+ /** Prepare declared query access paths after schema migration. Providers own physical layout;
46
+ * applications describe their ontology, not PostgreSQL expressions or generated columns.
47
+ * This is maintenance: backfills may block writes and must not run in a request handler. */
48
+ export async function prepareObjectQueries(input: {
49
+ projectId: string
50
+ ontology: OntologyDefinitionCatalog
51
+ storage: Storage
52
+ }): Promise<ObjectQueryPreparationResult> {
53
+ if (!isQueryPreparationCapableStorage(input.storage)) {
54
+ throw new Error("[Sixb] This storage provider does not support object query preparation")
55
+ }
56
+
57
+ const values = input.ontology.getValueTypesById()
58
+ const objectTypes = input.ontology.listObjectTypes().map((type) => ({
59
+ objectTypeId: type.id,
60
+ properties: type.properties
61
+ .filter((property) => property.mode !== "telemetry" && !property.primary)
62
+ .map((property) => {
63
+ const capabilities = resolvePropertyQueryCapabilities(property, values)
64
+ const schema = resolveQuerySchema(property.schema, values)
65
+ return {
66
+ propertyId: property.id,
67
+ scalarKind: schema ? queryScalarKindForSchema(schema) : undefined,
68
+ filterable: capabilities.operators.includes("eq"),
69
+ sortable: capabilities.sortable,
70
+ text: capabilities.text,
71
+ }
72
+ })
73
+ .filter((property) => property.filterable || property.sortable || property.text),
74
+ indexes: type.query?.indexes ?? [],
75
+ }))
76
+ return input.storage.prepareObjectQueries({ projectId: input.projectId, objectTypes })
77
+ }
@@ -261,6 +261,8 @@ export interface FacetObjectsInput {
261
261
  }
262
262
 
263
263
  export interface FacetObjectsResult {
264
+ /** Exact matching rows, including absent facet values and buckets beyond the limit. */
265
+ total: number
264
266
  facets: readonly ObjectFacetResult[]
265
267
  }
266
268
 
@@ -1,5 +1,3 @@
1
- import type { AuthorizablePrincipal } from "../../execution/types"
2
- import type { EventExecutor } from "../../materialization/events"
3
1
  import type {
4
2
  EditCommitResult,
5
3
  OntologyMaterializationOrigin,
@@ -56,12 +54,9 @@ interface OntologyCommitFields {
56
54
  readonly id: string
57
55
  readonly idempotencyKey: string
58
56
  readonly requestHash: string
57
+ /** The execution the commit ran under: who asked for it and what wrote it live there. */
59
58
  readonly executionId: string
60
59
  readonly origin: OntologyMaterializationOrigin
61
- /** Principal on whose behalf the execution ran, copied from `ExecutionRecord.requestedBy`. */
62
- readonly requestedBy?: AuthorizablePrincipal
63
- /** Workload that wrote the commit, copied from its execution. */
64
- readonly executor: EventExecutor
65
60
  readonly ontologyRevision: string
66
61
  readonly projectionRevision?: string
67
62
  readonly ownershipHash?: string
@@ -7,14 +7,17 @@ import type { AssertSourceMaterializationExecution } from "../sources"
7
7
  import { InMemoryOntologyCommitStorage } from "./commits"
8
8
  import { InMemoryOntologyMaterializationStorage } from "./materializations"
9
9
  import { InMemoryOntologyOutboxStorage } from "./outbox"
10
+ import { InMemoryOntologyReplacementPlanStorage } from "./replacement-plans"
10
11
  import {
11
12
  cloneOntologyState,
12
13
  createInMemoryOntologyState,
14
+ type InMemoryExecutionReader,
13
15
  type InMemoryOntologyState,
14
16
  type InMemoryOntologyStorageTestHooks,
15
17
  restoreOntologyState,
16
18
  } from "./shared-state"
17
19
  import { InMemoryOntologySourceStorage } from "./sources"
20
+ import { InMemoryMaterializationStateReader } from "./state-reader"
18
21
  import {
19
22
  type InMemoryOntologyStorageTestingAdapter,
20
23
  registerInMemoryOntologyStorageTestingAdapter,
@@ -27,7 +30,7 @@ interface InMemoryOntologyStorageOptions {
27
30
  readonly getTransactionToken: () => object | null
28
31
  readonly getMaterializationLifecycle: () => ProviderMaterializationTransactionLifecycle | null
29
32
  readonly assertSourceMaterializationExecution: AssertSourceMaterializationExecution
30
- readonly executionExists: (projectId: string, executionId: string) => Promise<boolean>
33
+ readonly readExecution: InMemoryExecutionReader
31
34
  }
32
35
 
33
36
  import { InMemoryVectorIndexingStorage } from "./vector-indexing"
@@ -40,6 +43,7 @@ export class InMemoryOntologyStorage implements OntologyStorage {
40
43
  readonly commits: InMemoryOntologyCommitStorage
41
44
  readonly sources: InMemoryOntologySourceStorage
42
45
  readonly materializations: InMemoryOntologyMaterializationStorage
46
+ readonly replacementPlans: InMemoryOntologyReplacementPlanStorage
43
47
  readonly outbox: InMemoryOntologyOutboxStorage
44
48
  private testHooks: InMemoryOntologyStorageTestHooks = {}
45
49
  private readonly testingAdapter: InMemoryOntologyStorageTestingAdapter = {
@@ -72,20 +76,35 @@ export class InMemoryOntologyStorage implements OntologyStorage {
72
76
  options.runRootOperation,
73
77
  options.assertSourceMaterializationExecution
74
78
  )
75
- this.outbox = new InMemoryOntologyOutboxStorage(this.state, options.runRootOperation)
79
+ this.outbox = new InMemoryOntologyOutboxStorage(
80
+ this.state,
81
+ options.runRootOperation,
82
+ options.readExecution
83
+ )
84
+ const hooks: InMemoryOntologyStorageTestHooks = {
85
+ beforeRead: (boundary) => this.testHooks.beforeRead?.(boundary),
86
+ beforeWrite: (boundary, ordinal) => this.testHooks.beforeWrite?.(boundary, ordinal),
87
+ observeBuffer: (boundary, rows) => this.testHooks.observeBuffer?.(boundary, rows),
88
+ observeWork: (records) => this.testHooks.observeWork?.(records),
89
+ }
90
+ const reader = new InMemoryMaterializationStateReader(this.state, objects, timeseries, hooks)
76
91
  this.materializations = new InMemoryOntologyMaterializationStorage(
77
92
  this.state,
78
93
  objects,
79
94
  timeseries,
95
+ reader,
80
96
  options.getTransactionToken,
81
97
  options.getMaterializationLifecycle,
82
- options.executionExists,
83
- {
84
- beforeRead: (boundary) => this.testHooks.beforeRead?.(boundary),
85
- beforeWrite: (boundary, ordinal) => this.testHooks.beforeWrite?.(boundary, ordinal),
86
- observeBuffer: (boundary, rows) => this.testHooks.observeBuffer?.(boundary, rows),
87
- observeWork: (records) => this.testHooks.observeWork?.(records),
88
- }
98
+ options.readExecution,
99
+ hooks
100
+ )
101
+ this.replacementPlans = new InMemoryOntologyReplacementPlanStorage(
102
+ this.state,
103
+ objects,
104
+ reader,
105
+ options.runRootOperation,
106
+ options.assertSourceMaterializationExecution,
107
+ hooks
89
108
  )
90
109
  registerInMemoryOntologyStorageTestingAdapter(this, this.testingAdapter)
91
110
  }
@@ -8,7 +8,7 @@ import type {
8
8
  PinnedDatasetVersion,
9
9
  TelemetryCommitResult,
10
10
  } from "../../../materialization/model"
11
- import { linkRefSortKey } from "../../../materialization/refs"
11
+ import { linkRefKey, linkRefSortKey, objectRefKey } from "../../../materialization/refs"
12
12
  import {
13
13
  getInMemoryObjectMaterializerAdapter,
14
14
  type InMemoryObjectStorage,
@@ -34,12 +34,12 @@ export function assertFinalizationCorrelations(
34
34
  result.created !== true ||
35
35
  !Number.isSafeInteger(result.eventCount) ||
36
36
  result.eventCount < 0 ||
37
- result.eventCount !== session.outboxEnvelopes.size
37
+ result.eventCount !== session.outboxWrites.size
38
38
  ) {
39
39
  invalidCorrelation("Materialization result does not correlate with its commit intent.")
40
40
  }
41
41
  for (let ordinal = 0; ordinal < result.eventCount; ordinal += 1) {
42
- if (!session.outboxEnvelopes.has(ordinal)) {
42
+ if (!session.outboxWrites.has(ordinal)) {
43
43
  invalidCorrelation("Outbox event ordinals must be contiguous from zero.")
44
44
  }
45
45
  }
@@ -63,7 +63,7 @@ export function assertFinalizationCorrelations(
63
63
  assertSourceActivationCorrelation(activation, session, state)
64
64
  }
65
65
  if (sourceActivations[0]) {
66
- assertReplacementFullyStreamed(session, sourceActivations[0])
66
+ assertPlanCoverage(session, sourceActivations[0])
67
67
  }
68
68
  assertFinalizedWork(session, state, objects)
69
69
  if (commit.intent.kind === "projection") {
@@ -317,16 +317,8 @@ function assertFinalizedWork(
317
317
  state: InMemoryOntologyState,
318
318
  objects: InMemoryObjectStorage
319
319
  ): void {
320
- const expectedPlanItems = session.applyWork.map((record) => stableJsonStringify(record.item))
321
- const appliedPlanItems = session.appliedPlanItems
322
- if (expectedPlanItems.length > 0 && !session.workStreams.apply.completed) {
323
- invalidCorrelation("Materialization plan work was not fully streamed.")
324
- }
325
- if (stableJsonStringify(appliedPlanItems) !== stableJsonStringify(expectedPlanItems)) {
326
- invalidCorrelation("Materialization plan work was not applied exactly once.")
327
- }
328
- if (session.cardinalityWork.length > 0 && !session.workStreams.cardinality.completed) {
329
- invalidCorrelation("Materialization cardinality work was not fully validated.")
320
+ if (!session.applied) {
321
+ invalidCorrelation("A materialization plan must apply before it finalizes.")
330
322
  }
331
323
  assertFinalCardinality(session.cardinalityWork, session.header.commit.projectId, objects)
332
324
  if (session.header.commit.intent.kind === "telemetry") {
@@ -339,28 +331,25 @@ function assertFinalizedWork(
339
331
  }
340
332
 
341
333
  const expectedEvents = [...session.eventWork].sort(compareEventWork)
342
- if (expectedEvents.length > 0 && !session.workStreams.event.completed) {
343
- invalidCorrelation("Materialization event work was not fully drained.")
344
- }
345
- if (session.outboxEnvelopes.size !== expectedEvents.length) {
334
+ if (session.outboxWrites.size !== expectedEvents.length) {
346
335
  invalidCorrelation("Materialization event work was not fully written to the outbox.")
347
336
  }
348
337
  for (let ordinal = 0; ordinal < expectedEvents.length; ordinal += 1) {
349
338
  const expected = expectedEvents[ordinal]
350
- const actual = session.outboxEnvelopes.get(ordinal)
339
+ const actual = session.outboxWrites.get(ordinal)
351
340
  if (!expected || !actual) {
352
341
  invalidCorrelation("Materialization event work was not fully written to the outbox.")
353
342
  }
354
- const { id, commitOrdinal, ...actualDraft } = actual
355
343
  if (
356
- commitOrdinal !== ordinal ||
357
- id !== createEventId(session.header.commit.projectId, session.header.commit.id, ordinal) ||
358
- stableJsonStringify(actualDraft) !== stableJsonStringify(expected.draft)
344
+ actual.commitOrdinal !== ordinal ||
345
+ actual.id !==
346
+ createEventId(session.header.commit.projectId, session.header.commit.id, ordinal) ||
347
+ stableJsonStringify(actual.event) !== stableJsonStringify(expected.draft)
359
348
  ) {
360
349
  invalidCorrelation("Materialization outbox event does not match its staged event work.")
361
350
  }
362
351
  const persisted = state.outbox.get(outboxKey(session.header.commit.projectId, actual.id))
363
- if (!persisted || stableJsonStringify(persisted.envelope) !== stableJsonStringify(actual)) {
352
+ if (!persisted || stableJsonStringify(persisted.event) !== stableJsonStringify(actual.event)) {
364
353
  invalidCorrelation("Materialization outbox event was not persisted.")
365
354
  }
366
355
  }
@@ -380,26 +369,15 @@ function assertFinalCardinality(
380
369
  readonly occupiedLinkKeys: Set<string>
381
370
  }
382
371
  >()
383
- let currentScope: string | null = null
384
- let occupiedCount = 0
372
+ // Apply already rejected a scope with two staged occupants; this checks what it wrote.
385
373
  for (const record of effectiveOccupants) {
386
- if (record.scopeSortKey !== currentScope) {
387
- currentScope = record.scopeSortKey
388
- occupiedCount = 0
389
- }
390
374
  const scope = scopes.get(record.scopeSortKey) ?? {
391
375
  source: structuredClone(record.ref.source),
392
376
  linkId: record.ref.linkId,
393
377
  occupiedLinkKeys: new Set<string>(),
394
378
  }
395
379
  scopes.set(record.scopeSortKey, scope)
396
- if (record.occupied) {
397
- occupiedCount += 1
398
- scope.occupiedLinkKeys.add(record.linkSortKey)
399
- if (occupiedCount > 1) {
400
- invalidCorrelation("Materialization cardinality work violates cardinality-one.")
401
- }
402
- }
380
+ if (record.occupied) scope.occupiedLinkKeys.add(record.linkSortKey)
403
381
  }
404
382
 
405
383
  const adapter = getInMemoryObjectMaterializerAdapter(objects)
@@ -422,48 +400,37 @@ function assertFinalCardinality(
422
400
  }
423
401
  }
424
402
 
425
- function assertReplacementFullyStreamed(
403
+ /** Every identity the plan decides with a diff is classified once, and nothing else is. */
404
+ function assertPlanCoverage(
426
405
  session: SessionState,
427
406
  activation: import("../materializations").SourceActivationWrite
428
407
  ): void {
429
- const replacement = session.replacement
408
+ const plan = session.plan
430
409
  if (
431
- !replacement ||
432
- replacement.sourceId !== activation.source.projectionId ||
433
- replacement.candidateMaterializationId !== activation.materializationId ||
434
- replacement.candidate.materializationId !== activation.materializationId ||
435
- replacement.candidate.projectionKind !== activation.projectionKind ||
436
- replacement.candidate.protocol !== activation.protocol
410
+ !plan ||
411
+ plan.sourceId !== activation.source.projectionId ||
412
+ plan.materializationId !== activation.materializationId ||
413
+ plan.projectionKind !== activation.projectionKind
437
414
  ) {
438
- invalidCorrelation(
439
- "Source activation does not match the replacement candidate opened by the session."
440
- )
415
+ invalidCorrelation("Source activation does not match the replacement plan the session applies.")
441
416
  }
442
- if (
443
- activation.projectionKind === "object" &&
444
- (!replacement.objectStreamCompleted || !replacement.linkStreamCompleted)
445
- ) {
446
- invalidCorrelation("Object projection replacement state was not fully streamed.")
447
- }
448
- if (activation.projectionKind === "link" && !replacement.linkStreamCompleted) {
449
- invalidCorrelation("Link projection replacement state was not fully streamed.")
450
- }
451
- const expectedObjectKeys =
452
- activation.projectionKind === "object" ? [...replacement.objects.keys()].sort() : []
453
- const expectedLinkKeys = [...replacement.links.entries()]
454
- .filter(([, value]) => value.diffRequired)
455
- .map(([key]) => key)
456
- .sort()
417
+ const expected = (kind: "object" | "link") =>
418
+ [...plan.identities.values()]
419
+ .filter((identity) => identity.entity.kind === kind && identity.diffRequired)
420
+ .map((identity) =>
421
+ identity.entity.kind === "object"
422
+ ? objectRefKey(identity.entity.ref)
423
+ : linkRefKey(identity.entity.ref)
424
+ )
425
+ .sort()
457
426
  if (
458
427
  stableJsonStringify(classificationKeys(session, "object")) !==
459
- stableJsonStringify(expectedObjectKeys) ||
428
+ stableJsonStringify(expected("object")) ||
460
429
  stableJsonStringify(classificationKeys(session, "link")) !==
461
- stableJsonStringify(expectedLinkKeys) ||
430
+ stableJsonStringify(expected("link")) ||
462
431
  classificationKeys(session, "point").length > 0
463
432
  ) {
464
- invalidCorrelation(
465
- "Projection replacement classification coverage does not match its streamed state."
466
- )
433
+ invalidCorrelation("Projection replacement classification coverage does not match its plan.")
467
434
  }
468
435
  }
469
436
 
@@ -4,7 +4,6 @@ import type {
4
4
  EffectiveObjectSnapshot,
5
5
  OntologyLinkRef,
6
6
  } from "../../../materialization/model"
7
- import { linkRefKey, linkRefSortKey, linkScopeSortKey } from "../../../materialization/refs"
8
7
  import type { ObjectLinkRow, ObjectRow } from "../../objects/types"
9
8
  import type { TimeseriesPoint } from "../../timeseries/types"
10
9
  import type {
@@ -19,7 +18,6 @@ import type {
19
18
  StoredSourceLinkAssertion,
20
19
  StoredSourceObjectAssertion,
21
20
  } from "../sources"
22
- import type { ReplacementSessionState } from "./materializations"
23
21
  import type {
24
22
  InMemoryOntologyState,
25
23
  InMemorySourceMaterialization,
@@ -158,23 +156,3 @@ export function storedSourceLink(
158
156
  if (!materializationId || !row || row.assertion.kind !== "link") return null
159
157
  return storedSource(sourceId, materializationId, row) as StoredSourceLinkAssertion
160
158
  }
161
-
162
- export function addReplacementLink(
163
- replacement: ReplacementSessionState,
164
- ref: OntologyLinkRef,
165
- diffRequired: boolean
166
- ): void {
167
- const key = linkRefKey(ref)
168
- const existing = replacement.links.get(key)
169
- if (existing) {
170
- existing.diffRequired ||= diffRequired
171
- if (diffRequired) replacement.affectedScopes.add(linkScopeSortKey(ref.source, ref.linkId))
172
- return
173
- }
174
- replacement.links.set(key, {
175
- ref: structuredClone(ref),
176
- sortKey: linkRefSortKey(ref),
177
- diffRequired,
178
- })
179
- if (diffRequired) replacement.affectedScopes.add(linkScopeSortKey(ref.source, ref.linkId))
180
- }
@@ -1,57 +1,12 @@
1
- import { stableJsonStringify } from "../../../json"
2
1
  import { MaterializationConflictError } from "../../../materialization/errors"
3
2
  import type {
4
- MaterializationPlanChunk,
5
3
  StoredLinkOverride,
6
4
  StoredLinkSlotOverride,
7
5
  StoredObjectOverride,
8
6
  } from "../materializations"
9
- import { invalidCorrelation, materializationPlanItems } from "../provider-work"
10
- import type { SessionState } from "./materializations"
11
7
 
12
8
  export * from "../provider-work"
13
9
 
14
- export function assertChunkSequence(session: SessionState, chunk: MaterializationPlanChunk): void {
15
- const planItems = materializationPlanItems(chunk)
16
- const applyStream = session.workStreams.apply
17
- const appliedStart = session.appliedPlanItems.length
18
- if (
19
- planItems.length > 0 &&
20
- (!applyStream.started || appliedStart + planItems.length > applyStream.emittedCount)
21
- ) {
22
- invalidCorrelation("Materialization plan items cannot be applied before they are streamed.")
23
- }
24
- for (let offset = 0; offset < planItems.length; offset += 1) {
25
- const expected = session.applyWork[appliedStart + offset]?.item
26
- if (!expected || stableJsonStringify(planItems[offset]) !== stableJsonStringify(expected)) {
27
- invalidCorrelation("Materialization plan items must be applied in exact streamed order.")
28
- }
29
- }
30
-
31
- const eventStream = session.workStreams.event
32
- const appliedOutboxCount = session.outboxEnvelopes.size
33
- if (
34
- chunk.outbox.length > 0 &&
35
- (!eventStream.started || appliedOutboxCount + chunk.outbox.length > eventStream.emittedCount)
36
- ) {
37
- invalidCorrelation("Materialization events cannot be applied before they are streamed.")
38
- }
39
- for (let offset = 0; offset < chunk.outbox.length; offset += 1) {
40
- const expected = session.eventWork[appliedOutboxCount + offset]
41
- const actual = chunk.outbox[offset]?.envelope
42
- if (!expected || !actual) {
43
- invalidCorrelation("Materialization outbox events must follow exact streamed order.")
44
- }
45
- const { id: _id, commitOrdinal, ...actualDraft } = actual
46
- if (
47
- commitOrdinal !== appliedOutboxCount + offset ||
48
- stableJsonStringify(actualDraft) !== stableJsonStringify(expected.draft)
49
- ) {
50
- invalidCorrelation("Materialization outbox events must follow exact streamed order.")
51
- }
52
- }
53
- }
54
-
55
10
  export function assertLastCommit(
56
11
  value: StoredObjectOverride | StoredLinkOverride | StoredLinkSlotOverride | undefined,
57
12
  expected: string | null,