@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,7 +1,9 @@
1
+ import type { ModelKind } from "../../models/definitions"
1
2
  import type { AiMoney } from "../ai-cost"
2
3
  import { AiLimitStorageError } from "./errors"
3
4
  import { aiLimitCalendarMonth } from "./period"
4
5
  import type {
6
+ AiLimitMeter,
5
7
  AiLimitPeriod,
6
8
  AiLimitPolicy,
7
9
  AiLimitQuantity,
@@ -16,6 +18,20 @@ import type {
16
18
 
17
19
  const SIGNED_INT64_MAX = 9_223_372_036_854_775_807n
18
20
 
21
+ // These calls are billed per audio second or per search, and their providers report no tokens.
22
+ // Token limits neither admit nor count them; cost limits still do.
23
+ const TOKENLESS_MODEL_KINDS: ReadonlySet<ModelKind> = new Set(["transcription", "reranking"])
24
+
25
+ /** @internal Whether a limit meter governs calls of this kind. Unclassified calls are metered. */
26
+ export function aiLimitMeterApplies(
27
+ meter: AiLimitMeter,
28
+ modelKind: ModelKind | undefined
29
+ ): boolean {
30
+ return (
31
+ meter !== "tokens.total" || modelKind === undefined || !TOKENLESS_MODEL_KINDS.has(modelKind)
32
+ )
33
+ }
34
+
19
35
  /** @internal Serialize compound limit operations, including within an existing transaction. */
20
36
  export class AiLimitOperationLock {
21
37
  private tail: Promise<void> = Promise.resolve()
@@ -55,6 +71,7 @@ export interface AiLimitAccountingEntry {
55
71
  readonly attempt: number
56
72
  readonly callId: string
57
73
  readonly occurredAt: Date
74
+ readonly modelKind?: ModelKind
58
75
  readonly totalTokens?: number
59
76
  readonly requesterGroupIds: readonly string[]
60
77
  readonly requester?:
@@ -228,6 +245,7 @@ export function normalizeReserveAiModelCall(input: ReserveAiModelCallInput): {
228
245
  readonly identity: AiModelCallReservationIdentity
229
246
  readonly subjects: readonly AiLimitSubject[]
230
247
  readonly estimates: readonly AiLimitQuantity[]
248
+ readonly modelKind?: ModelKind
231
249
  readonly period: AiLimitPeriod
232
250
  readonly reservedAt: Date
233
251
  } {
@@ -237,6 +255,7 @@ export function normalizeReserveAiModelCall(input: ReserveAiModelCallInput): {
237
255
  identity,
238
256
  subjects: normalizeAiLimitSubjects(input.subjects),
239
257
  estimates: normalizeAiLimitQuantities(input.estimates, "estimates"),
258
+ ...(input.modelKind === undefined ? {} : { modelKind: input.modelKind }),
240
259
  period: aiLimitCalendarMonth(reservedAt),
241
260
  reservedAt,
242
261
  }
@@ -297,13 +316,16 @@ export function aiLimitReservationRequestKey(
297
316
  const amount = normalizeAiLimitAmount(quantity)
298
317
  return [amount.meter, amount.currency, amount.amount.toString()]
299
318
  }),
319
+ // Appended only when present, so keys of reservations made before model kinds stay valid.
320
+ ...(request.modelKind === undefined ? [] : [request.modelKind]),
300
321
  ])
301
322
  }
302
323
 
303
324
  export function aiLimitReservationBuckets(
304
325
  policies: readonly AiLimitPolicy[],
305
326
  subjects: readonly AiLimitSubject[],
306
- estimates: readonly AiLimitQuantity[]
327
+ estimates: readonly AiLimitQuantity[],
328
+ modelKind?: ModelKind
307
329
  ): readonly AiLimitReservationBucket[] {
308
330
  const subjectKeys = new Set(subjects.map(aiLimitSubjectKey))
309
331
  const estimatesByDimension = new Map(
@@ -313,7 +335,11 @@ export function aiLimitReservationBuckets(
313
335
  })
314
336
  )
315
337
  return policies
316
- .filter((policy) => subjectKeys.has(aiLimitSubjectKey(policy.subject)))
338
+ .filter(
339
+ (policy) =>
340
+ subjectKeys.has(aiLimitSubjectKey(policy.subject)) &&
341
+ aiLimitMeterApplies(policy.limit.meter, modelKind)
342
+ )
317
343
  .flatMap((policy) => {
318
344
  const estimate = estimatesByDimension.get(
319
345
  aiLimitAmountKey(normalizeAiLimitAmount(policy.limit))
@@ -357,6 +383,7 @@ export function resolveAiLimitActual(
357
383
  let accountingStatus: ResolvedAiLimitActual["accountingStatus"] = "complete"
358
384
  for (const entry of entries) {
359
385
  if (dimension.meter === "tokens.total") {
386
+ if (!aiLimitMeterApplies(dimension.meter, entry.modelKind)) continue
360
387
  if (entry.totalTokens === undefined) {
361
388
  accountingStatus = "unavailable"
362
389
  } else {
@@ -1,3 +1,4 @@
1
+ import type { ModelKind } from "../../models/definitions"
1
2
  import type { AiMoney } from "../ai-cost"
2
3
 
3
4
  /** A project-wide, group, or durable requester identity charged for AI model calls. */
@@ -129,6 +130,8 @@ export interface ReserveAiModelCallInput extends AiModelCallReservationIdentity
129
130
  /** The project subject is always added, even when omitted here. */
130
131
  readonly subjects: readonly AiLimitSubject[]
131
132
  readonly estimates: readonly AiLimitQuantity[]
133
+ /** Transcription and reranking calls are outside token limits; see `aiLimitMeterApplies`. */
134
+ readonly modelKind?: ModelKind
132
135
  readonly reservedAt?: Date
133
136
  }
134
137
 
@@ -19,6 +19,14 @@ export function normalizeAiModelCallRecord(input: RecordAiModelCallInput): AiMod
19
19
  }
20
20
  assertNonBlank(input.responseId, "responseId")
21
21
 
22
+ if (
23
+ input.modelKind !== undefined &&
24
+ !["language", "image", "video", "embedding", "decision", "transcription", "reranking"].includes(
25
+ input.modelKind
26
+ )
27
+ ) {
28
+ throw new TypeError("[Sixb] AI model kind is invalid.")
29
+ }
22
30
  const occurredAt = cloneValidDate(input.occurredAt, "occurredAt")
23
31
  const recordedAt = cloneValidDate(input.recordedAt ?? new Date(), "recordedAt")
24
32
  const requesterGroupIds = normalizeRequesterGroupIds(input.requesterGroupIds)
@@ -37,6 +45,7 @@ export function normalizeAiModelCallRecord(input: RecordAiModelCallInput): AiMod
37
45
  ? {}
38
46
  : { providerIds: normalizeModelProviderIds(input.providerIds) }),
39
47
  requestedModelId: input.requestedModelId,
48
+ ...(input.modelKind === undefined ? {} : { modelKind: input.modelKind }),
40
49
  ...(requestedReasoning === undefined ? {} : { requestedReasoning }),
41
50
  ...(input.responseModelId === undefined ? {} : { responseModelId: input.responseModelId }),
42
51
  responseId: input.responseId,
@@ -1,11 +1,13 @@
1
1
  import type { ReadonlyJsonObject } from "../../json"
2
2
  import type { ModelReasoning } from "../../models/language-model"
3
3
 
4
- /** How much normalized token usage a provider reported for one model call. */
4
+ /** Coverage of normalized usage. Complete means both token totals are known; duration alone is partial. */
5
5
  export type AiUsageReportingStatus = "complete" | "partial" | "unavailable"
6
6
 
7
- /** Provider-neutral token counts accepted at the model-call boundary. */
7
+ /** Provider-neutral usage accepted at the model-call boundary. */
8
8
  export interface AiModelCallUsageInput {
9
+ /** Audio content duration in milliseconds, rounded to the nearest millisecond. Not billed duration. */
10
+ readonly audioDurationMs?: number
9
11
  readonly inputTokens?: number
10
12
  readonly outputTokens?: number
11
13
  readonly uncachedInputTokens?: number
@@ -15,7 +17,7 @@ export interface AiModelCallUsageInput {
15
17
  readonly reasoningOutputTokens?: number
16
18
  }
17
19
 
18
- /** Normalized token counts for one completed model call. Details overlap their input/output totals. */
20
+ /** Normalized usage for one completed model call. Token details overlap their input/output totals. */
19
21
  export interface AiModelCallUsage extends AiModelCallUsageInput {
20
22
  /** Present only when both input and output totals are known. */
21
23
  readonly totalTokens?: number
@@ -32,6 +34,8 @@ export interface AiUsageExecutionSummary {
32
34
 
33
35
  /** Input for an idempotent model-call ledger append. */
34
36
  export interface RecordAiModelCallInput {
37
+ /** Absent for historical calls whose kind was not captured. */
38
+ readonly modelKind?: import("../../models/definitions").ModelKind
35
39
  readonly providerIds?: import("../../models/events").ModelProviderIds
36
40
  readonly id: string
37
41
  readonly projectId: string
@@ -89,7 +93,7 @@ export interface GetLatestAiModelCallForExecutionInput {
89
93
  readonly executionId: string
90
94
  }
91
95
 
92
- /** Durable, provider-neutral accounting for completed language-model calls. */
96
+ /** Durable, provider-neutral accounting for completed model calls. */
93
97
  export interface AiUsageStorage {
94
98
  /**
95
99
  * Append one model-call record idempotently. The identity is project, execution ID, attempt, call
@@ -8,6 +8,7 @@ const USAGE_FIELDS = [
8
8
  "cacheWriteInputTokens",
9
9
  "textOutputTokens",
10
10
  "reasoningOutputTokens",
11
+ "audioDurationMs",
11
12
  ] as const
12
13
 
13
14
  type AiUsageField = (typeof USAGE_FIELDS)[number]
@@ -30,6 +31,7 @@ export function normalizeAiModelCallUsage(input: AiModelCallUsageInput): AiModel
30
31
  : "unavailable"
31
32
 
32
33
  return {
34
+ ...(input.audioDurationMs === undefined ? {} : { audioDurationMs: input.audioDurationMs }),
33
35
  ...(input.inputTokens === undefined ? {} : { inputTokens: input.inputTokens }),
34
36
  ...(input.outputTokens === undefined ? {} : { outputTokens: input.outputTokens }),
35
37
  ...(totalTokens === undefined ? {} : { totalTokens }),
@@ -0,0 +1,73 @@
1
+ import { cloneFileDownloadGrantRecord } from "./record"
2
+ import type {
3
+ DeleteExpiredFileDownloadGrantsInput,
4
+ FileDownloadGrantRecord,
5
+ FileDownloadGrantStorage,
6
+ FindFileDownloadGrantInput,
7
+ RevokeFileDownloadGrantInput,
8
+ } from "./types"
9
+
10
+ export class InMemoryFileDownloadGrantStorage implements FileDownloadGrantStorage {
11
+ private rows = new Map<string, FileDownloadGrantRecord>()
12
+
13
+ async create(record: FileDownloadGrantRecord): Promise<void> {
14
+ const duplicate = [...this.rows.values()].some(
15
+ (current) =>
16
+ current.projectId === record.projectId &&
17
+ (current.id === record.id || current.tokenHash === record.tokenHash)
18
+ )
19
+ if (duplicate) {
20
+ throw new Error(`[Sixb] File download grant '${record.id}' conflicts with an existing one.`)
21
+ }
22
+ this.rows.set(rowKey(record.projectId, record.id), cloneFileDownloadGrantRecord(record))
23
+ }
24
+
25
+ async findByTokenHash(
26
+ input: FindFileDownloadGrantInput
27
+ ): Promise<FileDownloadGrantRecord | null> {
28
+ for (const record of this.rows.values()) {
29
+ if (record.projectId === input.projectId && record.tokenHash === input.tokenHash) {
30
+ return cloneFileDownloadGrantRecord(record)
31
+ }
32
+ }
33
+ return null
34
+ }
35
+
36
+ async revoke(input: RevokeFileDownloadGrantInput): Promise<FileDownloadGrantRecord | null> {
37
+ const key = rowKey(input.projectId, input.id)
38
+ const current = this.rows.get(key)
39
+ if (!current) return null
40
+ if (!current.revokedAt) {
41
+ this.rows.set(key, { ...current, revokedAt: new Date(input.revokedAt) })
42
+ }
43
+ return cloneFileDownloadGrantRecord(this.rows.get(key) as FileDownloadGrantRecord)
44
+ }
45
+
46
+ async deleteExpired(input: DeleteExpiredFileDownloadGrantsInput): Promise<number> {
47
+ const expired = [...this.rows.entries()]
48
+ .filter(
49
+ ([, record]) =>
50
+ record.projectId === input.projectId &&
51
+ record.expiresAt.getTime() < input.expiredBefore.getTime()
52
+ )
53
+ .slice(0, input.limit)
54
+ for (const [key] of expired) this.rows.delete(key)
55
+ return expired.length
56
+ }
57
+
58
+ snapshot(): ReadonlyMap<string, FileDownloadGrantRecord> {
59
+ return new Map(
60
+ [...this.rows].map(([key, record]) => [key, cloneFileDownloadGrantRecord(record)])
61
+ )
62
+ }
63
+
64
+ restore(snapshot: ReadonlyMap<string, FileDownloadGrantRecord>): void {
65
+ this.rows = new Map(
66
+ [...snapshot].map(([key, record]) => [key, cloneFileDownloadGrantRecord(record)])
67
+ )
68
+ }
69
+ }
70
+
71
+ function rowKey(projectId: string, id: string): string {
72
+ return `${projectId}\0${id}`
73
+ }
@@ -0,0 +1,8 @@
1
+ export { InMemoryFileDownloadGrantStorage } from "./in-memory"
2
+ export type {
3
+ DeleteExpiredFileDownloadGrantsInput,
4
+ FileDownloadGrantRecord,
5
+ FileDownloadGrantStorage,
6
+ FindFileDownloadGrantInput,
7
+ RevokeFileDownloadGrantInput,
8
+ } from "./types"
@@ -0,0 +1,47 @@
1
+ import { isFileRef } from "../../blob-storage"
2
+ import type { FileDownloadGrantRecord } from "./types"
3
+
4
+ /**
5
+ * Rebuilds a grant from a provider row with camelCase keys. `file` may arrive parsed (jsonb) or
6
+ * as text (SQLite), and timestamps as `Date` or ISO text. Fails closed on corruption: a grant that
7
+ * cannot be read must not serve a file.
8
+ */
9
+ export function parseFileDownloadGrantRow(row: {
10
+ readonly [column: string]: unknown
11
+ }): FileDownloadGrantRecord {
12
+ const id = text(row.id, "id", String(row.id))
13
+ const file = typeof row.file === "string" ? JSON.parse(row.file) : row.file
14
+ if (!isFileRef(file)) throw corrupt(id, "file is not a file reference")
15
+
16
+ return {
17
+ id,
18
+ projectId: text(row.projectId, "projectId", id),
19
+ tokenHash: text(row.tokenHash, "tokenHash", id),
20
+ file,
21
+ executionId: text(row.executionId, "executionId", id),
22
+ createdAt: date(row.createdAt, "createdAt", id),
23
+ expiresAt: date(row.expiresAt, "expiresAt", id),
24
+ ...(row.revokedAt == null ? {} : { revokedAt: date(row.revokedAt, "revokedAt", id) }),
25
+ }
26
+ }
27
+
28
+ export function cloneFileDownloadGrantRecord(
29
+ record: FileDownloadGrantRecord
30
+ ): FileDownloadGrantRecord {
31
+ return structuredClone(record)
32
+ }
33
+
34
+ function text(value: unknown, column: string, id: string): string {
35
+ if (typeof value !== "string" || value.length === 0) throw corrupt(id, `${column} is not text`)
36
+ return value
37
+ }
38
+
39
+ function date(value: unknown, column: string, id: string): Date {
40
+ const parsed = value instanceof Date || typeof value === "string" ? new Date(value) : null
41
+ if (!parsed || !Number.isFinite(parsed.getTime())) throw corrupt(id, `${column} is not a date`)
42
+ return parsed
43
+ }
44
+
45
+ function corrupt(id: string, reason: string): Error {
46
+ return new Error(`[Sixb] Stored file download grant '${id}' is invalid: ${reason}.`)
47
+ }
@@ -0,0 +1,48 @@
1
+ import type { FileRef } from "../../blob-storage"
2
+
3
+ /**
4
+ * One download URL issued by `blobs.createDownloadUrl()`. Each call issues its own grant, so URLs
5
+ * for the same file expire and are revoked independently.
6
+ */
7
+ export interface FileDownloadGrantRecord {
8
+ readonly id: string
9
+ readonly projectId: string
10
+ /** SHA-256 hex of the URL token. The token itself is never stored. */
11
+ readonly tokenHash: string
12
+ /** The file the URL serves, without `logicalPath`: serving the bytes does not need it. */
13
+ readonly file: FileRef
14
+ /** The execution that issued the URL, so an exposure can be traced back to its cause. */
15
+ readonly executionId: string
16
+ readonly createdAt: Date
17
+ readonly expiresAt: Date
18
+ readonly revokedAt?: Date
19
+ }
20
+
21
+ export interface FindFileDownloadGrantInput {
22
+ readonly projectId: string
23
+ readonly tokenHash: string
24
+ }
25
+
26
+ export interface RevokeFileDownloadGrantInput {
27
+ readonly projectId: string
28
+ readonly id: string
29
+ readonly revokedAt: Date
30
+ }
31
+
32
+ export interface DeleteExpiredFileDownloadGrantsInput {
33
+ readonly projectId: string
34
+ readonly expiredBefore: Date
35
+ readonly limit: number
36
+ }
37
+
38
+ /** Persistence only: token generation, expiry, and revocation checks live in Core. */
39
+ export interface FileDownloadGrantStorage {
40
+ /** `(projectId, id)` and `(projectId, tokenHash)` are each unique. */
41
+ create(record: FileDownloadGrantRecord): Promise<void>
42
+ /** Returns expired and revoked grants too; the caller decides whether one still serves. */
43
+ findByTokenHash(input: FindFileDownloadGrantInput): Promise<FileDownloadGrantRecord | null>
44
+ /** Keeps the first revocation. Returns the grant, or `null` when it does not exist. */
45
+ revoke(input: RevokeFileDownloadGrantInput): Promise<FileDownloadGrantRecord | null>
46
+ /** Deletes up to `limit` grants that expired before `expiredBefore`, and returns the count. */
47
+ deleteExpired(input: DeleteExpiredFileDownloadGrantsInput): Promise<number>
48
+ }
@@ -13,6 +13,10 @@ import {
13
13
  import { StorageTransactionError } from "../errors"
14
14
  import { InMemoryExecutionStorage } from "../executions/in-memory"
15
15
  import type { ExecutionStorage } from "../executions/types"
16
+ import {
17
+ type FileDownloadGrantStorage,
18
+ InMemoryFileDownloadGrantStorage,
19
+ } from "../file-download-grants"
16
20
  import { type FileUploadSessionStore, InMemoryFileUploadSessions } from "../file-upload-sessions"
17
21
  import type { ObjectStorage } from "../objects"
18
22
  import { InMemoryObjectStorage } from "../objects/in-memory"
@@ -116,6 +120,7 @@ export class InMemoryStorage implements Storage {
116
120
  private readonly webhookRunStorage = new InMemoryWebhookRunStorage(this.executionStorage)
117
121
  private readonly rulesStorage = new InMemoryRulesStorage()
118
122
  private readonly fileUploadSessionStorage = new InMemoryFileUploadSessions()
123
+ private readonly fileDownloadGrantStorage = new InMemoryFileDownloadGrantStorage()
119
124
  private readonly connectorConnectionStorage: InMemoryConnectorConnectionStorage
120
125
  readonly auth: AuthStorage
121
126
  readonly executions: ExecutionStorage
@@ -134,6 +139,7 @@ export class InMemoryStorage implements Storage {
134
139
  readonly shareGrants: ShareGrantStorage
135
140
  readonly shareSessions: ShareSessionStorage
136
141
  readonly fileUploadSessions: FileUploadSessionStore
142
+ readonly fileDownloadGrants: FileDownloadGrantStorage
137
143
  readonly connectorConnections: ConnectorConnectionStorage
138
144
 
139
145
  constructor(options: InMemoryStorageOptions = {}) {
@@ -166,6 +172,7 @@ export class InMemoryStorage implements Storage {
166
172
  this.shareGrants = createOperationScopedFacade(this.shareGrantStorage, scope)
167
173
  this.shareSessions = createOperationScopedFacade(this.shareSessionStorage, scope)
168
174
  this.fileUploadSessions = createOperationScopedFacade(this.fileUploadSessionStorage, scope)
175
+ this.fileDownloadGrants = createOperationScopedFacade(this.fileDownloadGrantStorage, scope)
169
176
  this.connectorConnections = createOperationScopedFacade(this.connectorConnectionStorage, scope)
170
177
  this.ontologyStorage = new InMemoryOntologyStorage(this.objectStorage, this.timeseriesStorage, {
171
178
  runRootOperation: async (run) => run(),
@@ -173,8 +180,8 @@ export class InMemoryStorage implements Storage {
173
180
  getMaterializationLifecycle: () => this.getActiveMaterializationLifecycle(),
174
181
  assertSourceMaterializationExecution: (input) =>
175
182
  this.projectionRunStorage.assertSourceMaterializationExecutionUnlocked(input),
176
- executionExists: async (projectId, executionId) =>
177
- (await this.executionStorage.getById({ projectId, id: executionId })) !== null,
183
+ readExecution: (projectId, executionId) =>
184
+ this.executionStorage.getById({ projectId, id: executionId }),
178
185
  })
179
186
  this.ontology = createOntologyOperationScope(this.ontologyStorage, scope)
180
187
  this.ontologyStorage.registerTestingAlias(this.ontology)
@@ -375,6 +382,7 @@ export class InMemoryStorage implements Storage {
375
382
  shareGrants: this.shareGrantStorage,
376
383
  shareSessions: this.shareSessionStorage,
377
384
  fileUploadSessions: this.fileUploadSessionStorage,
385
+ fileDownloadGrants: this.fileDownloadGrantStorage,
378
386
  connectorConnections: this.connectorConnectionStorage,
379
387
  ping: async () => undefined,
380
388
  transaction: async <T>(): Promise<T> => {
@@ -405,6 +413,7 @@ export class InMemoryStorage implements Storage {
405
413
  shareGrants: this.shareGrantStorage.snapshot(),
406
414
  shareSessions: this.shareSessionStorage.snapshot(),
407
415
  fileUploadSessions: this.fileUploadSessionStorage.snapshot(),
416
+ fileDownloadGrants: this.fileDownloadGrantStorage.snapshot(),
408
417
  connectorConnections: this.connectorConnectionStorage.snapshot(),
409
418
  }
410
419
  }
@@ -430,6 +439,7 @@ export class InMemoryStorage implements Storage {
430
439
  this.shareGrantStorage.restore(snapshot.shareGrants)
431
440
  this.shareSessionStorage.restore(snapshot.shareSessions)
432
441
  this.fileUploadSessionStorage.restore(snapshot.fileUploadSessions)
442
+ this.fileDownloadGrantStorage.restore(snapshot.fileDownloadGrants)
433
443
  this.connectorConnectionStorage.restore(snapshot.connectorConnections)
434
444
  }
435
445
  }
@@ -455,5 +465,6 @@ export interface InMemoryStorageSnapshot {
455
465
  readonly shareGrants: ReturnType<InMemoryShareGrantStorage["snapshot"]>
456
466
  readonly shareSessions: ReturnType<InMemoryShareSessionStorage["snapshot"]>
457
467
  readonly fileUploadSessions: ReturnType<InMemoryFileUploadSessions["snapshot"]>
468
+ readonly fileDownloadGrants: ReturnType<InMemoryFileDownloadGrantStorage["snapshot"]>
458
469
  readonly connectorConnections: ReturnType<InMemoryConnectorConnectionStorage["snapshot"]>
459
470
  }
@@ -12,9 +12,12 @@ export type { StoredRuleResolvedEvent, StoredRuleTriggeredEvent } from "../event
12
12
  export type { ReadonlyJsonObject } from "../json"
13
13
  export { stableJsonStringify } from "../json"
14
14
  export type {
15
+ EffectiveChangeCounts,
15
16
  PinnedDatasetVersion,
17
+ ProjectionEntityRef,
16
18
  ProjectionExecution,
17
19
  ProjectionMaterializationIdentity,
20
+ ProjectionSourceRef,
18
21
  } from "../materialization/model"
19
22
  export type { ModelProviderIds } from "../models/events"
20
23
  export type { ObjectRef } from "../ontology"
@@ -351,6 +354,13 @@ export type {
351
354
  TrustedPrimitiveRef,
352
355
  } from "./executions"
353
356
  export { ExecutionStorageError } from "./executions"
357
+ export type {
358
+ DeleteExpiredFileDownloadGrantsInput,
359
+ FileDownloadGrantRecord,
360
+ FileDownloadGrantStorage,
361
+ FindFileDownloadGrantInput,
362
+ RevokeFileDownloadGrantInput,
363
+ } from "./file-download-grants"
354
364
  export type {
355
365
  CreateFileUploadSessionInput,
356
366
  FileUploadSession,
@@ -380,6 +390,7 @@ export type {
380
390
  MigrationStep,
381
391
  MigrationStepInfo,
382
392
  MigrationStepOptions,
393
+ StorageMigrationOptions,
383
394
  StorageMigrationResult,
384
395
  StorageMigrator,
385
396
  StorageSchemaCheck,
@@ -448,13 +459,19 @@ export {
448
459
  objectLinkCursor,
449
460
  snapshotObjectReadExecutionLimits,
450
461
  } from "./objects"
462
+ export type {
463
+ ObjectQueryPreparationPlan,
464
+ ObjectQueryPreparationResult,
465
+ QueryPreparationCapableStorage,
466
+ } from "./objects/query-preparation"
451
467
  export type {
452
468
  AbandonRunSourceMaterializationInput,
453
469
  AbandonSourceMaterializationCandidateInput,
454
470
  AbandonSourceMaterializationInput,
455
471
  AdoptedSourceMaterialization,
456
472
  AdoptSourceMaterializationInput,
457
- ApplyMaterializationChunkInput,
473
+ AppliedMaterialization,
474
+ ApplyMaterializationInput,
458
475
  ApplyMaterializationResult,
459
476
  AssertSourceMaterializationExecution,
460
477
  AssertSourceMaterializationExecutionInput,
@@ -469,16 +486,13 @@ export type {
469
486
  ExactEffectiveLinkWrite,
470
487
  ExactEffectiveObjectDelete,
471
488
  ExactEffectiveObjectWrite,
472
- ExactEffectiveWrites,
473
489
  ExactLinkOverrideDelete,
474
490
  ExactLinkOverrideWrite,
475
491
  ExactLinkSlotOverrideDelete,
476
492
  ExactLinkSlotOverrideWrite,
477
493
  ExactObjectOverrideDelete,
478
494
  ExactObjectOverrideWrite,
479
- ExactOverrideWrites,
480
495
  ExactTimeseriesPointWrite,
481
- ExactTimeseriesWrites,
482
496
  ExpectedSourceRevision,
483
497
  ExpectedTimeseriesPointRevision,
484
498
  FinalizeMaterializationInput,
@@ -501,7 +515,6 @@ export type {
501
515
  MaterializationObjectExistence,
502
516
  MaterializationObjectExistenceWorkRecord,
503
517
  MaterializationObjectState,
504
- MaterializationPlanChunk,
505
518
  MaterializationPlanFinalization,
506
519
  MaterializationPlanHeader,
507
520
  MaterializationPlanWorkItem,
@@ -509,8 +522,9 @@ export type {
509
522
  MaterializationSession,
510
523
  MaterializationStatePage,
511
524
  MaterializationStateRequestChunk,
525
+ MaterializationVectorChange,
526
+ MaterializationVectorChangePage,
512
527
  MaterializationWorkEntityKind,
513
- MaterializationWorkPage,
514
528
  MaterializationWorkRecord,
515
529
  ObjectVectorState,
516
530
  OntologyCommitOriginSelector,
@@ -526,22 +540,28 @@ export type {
526
540
  OntologyOutboxRecord,
527
541
  OntologyOutboxStorage,
528
542
  OntologyOutboxSummary,
529
- OntologyOutboxWrite,
543
+ OntologyReplacementPlanStorage,
530
544
  OntologySourceMaterializationStatus,
531
545
  OntologySourceRecord,
532
546
  OntologySourceStorage,
533
547
  OntologyStorage,
534
548
  OntologyVectorStorage,
549
+ OpenedReplacementPlan,
550
+ OpenReplacementPlanInput,
551
+ PlannedReplacementIdentity,
535
552
  ProjectionOntologyCommitIntent,
536
553
  PurgeAbandonedSourceMaterializationsInput,
537
554
  PurgePublishedOntologyOutboxInput,
538
- ReadMaterializationObjectExistenceInput,
555
+ PurgeReplacementPlansInput,
556
+ ReplacementPlanRef,
557
+ ReplacementPlanStatePage,
558
+ ReplacementPlanStatus,
539
559
  RescheduleOntologyOutboxLeaseInput,
540
560
  SourceActivationWrite,
541
561
  SourceReplacementLinkState,
542
562
  SourceReplacementObjectState,
543
- SourceReplacementStatePage,
544
563
  StageMaterializationWorkInput,
564
+ StageReplacementPlanInput,
545
565
  StageSourceAssertion,
546
566
  StageSourceRoot,
547
567
  StageSourceRowsInput,
@@ -555,12 +575,10 @@ export type {
555
575
  StoredSourceObjectAssertion,
556
576
  StoredTelemetryPoint,
557
577
  StreamMaterializationStateInput,
558
- StreamMaterializationWorkInput,
559
- StreamSourceReplacementStateInput,
578
+ StreamMaterializationVectorChangesInput,
579
+ StreamReplacementPlanStateInput,
560
580
  SummarizeOntologyOutboxInput,
561
- SummarizeTerminalSourceMaterializationsInput,
562
581
  TelemetryOntologyCommitIntent,
563
- TerminalSourceMaterializationSummary,
564
582
  } from "./ontology"
565
583
  export { ONTOLOGY_OUTBOX_FAILURE_CODES } from "./ontology"
566
584
  export type {
@@ -9,6 +9,7 @@ export {
9
9
  } from "./action-runs/idempotency"
10
10
  export { assertAiUsageExecutionId, normalizeAiModelCallRecord } from "./ai-usage/record"
11
11
  export { normalizeAiModelCallUsage } from "./ai-usage/usage"
12
+ export { parseFileDownloadGrantRow } from "./file-download-grants/record"
12
13
  export { createFileUploadId, createUploadExpiresAt } from "./file-upload-sessions/utils"
13
14
  export { canRequeuePipelineRunAfterEnqueueFailure } from "./pipeline-runs/idempotency"
14
15
  export { projectionRunObjectTypesVisible, zeroProjectionRunProgress } from "./projection-runs/types"
@@ -18,6 +18,7 @@ export type {
18
18
  MigrationStep,
19
19
  MigrationStepInfo,
20
20
  MigrationStepOptions,
21
+ StorageMigrationOptions,
21
22
  StorageMigrationResult,
22
23
  StorageMigrator,
23
24
  } from "./types"
@@ -1,24 +1,48 @@
1
+ import {
2
+ isQueryPreparationCapableStorage,
3
+ type ObjectQueryPreparationResult,
4
+ prepareObjectQueries,
5
+ } from "../objects/query-preparation"
1
6
  import type { Storage } from "../types"
2
- import type { MigrationCapableStorage, MigrationReport, StorageMigrationResult } from "./types"
7
+ import type {
8
+ MigrationCapableStorage,
9
+ MigrationReport,
10
+ StorageMigrationOptions,
11
+ StorageMigrationResult,
12
+ } from "./types"
3
13
 
4
14
  export function isMigrationCapableStorage(storage: Storage): storage is MigrationCapableStorage {
5
15
  return Array.isArray((storage as { migrators?: unknown }).migrators)
6
16
  }
7
17
 
8
- /** Runs storage adapter migrators when the configured storage exposes them. */
9
- export async function migrateStorage(storage: Storage): Promise<StorageMigrationResult> {
10
- if (!isMigrationCapableStorage(storage) || storage.migrators.length === 0) {
11
- return { status: "skipped", reports: [] }
12
- }
13
-
18
+ /** Run schema migrations, then prepare query indexes when the provider supports it. */
19
+ export async function migrateStorage(
20
+ storage: Storage,
21
+ options?: StorageMigrationOptions
22
+ ): Promise<StorageMigrationResult> {
14
23
  const reports: MigrationReport[] = []
24
+ if (isMigrationCapableStorage(storage)) {
25
+ for (const migrator of storage.migrators) {
26
+ reports.push(await migrator.migrate())
27
+ }
28
+ }
15
29
 
16
- for (const migrator of storage.migrators) {
17
- reports.push(await migrator.migrate())
30
+ let queries: ObjectQueryPreparationResult | undefined
31
+ if (options && isQueryPreparationCapableStorage(storage)) {
32
+ queries = await prepareObjectQueries({ ...options, storage })
33
+ for (const warning of queries.warnings) {
34
+ console.warn(`[Sixb] ${warning}`)
35
+ }
18
36
  }
19
37
 
20
- return {
21
- status: reports.some((report) => report.status === "migrated") ? "migrated" : "current",
22
- reports,
38
+ let status: StorageMigrationResult["status"] = "skipped"
39
+ if (reports.length > 0 || queries) {
40
+ status = "current"
23
41
  }
42
+ if (reports.some((report) => report.status === "migrated") || queries?.status === "prepared") {
43
+ status = "migrated"
44
+ }
45
+
46
+ if (queries) return { status, reports, queries }
47
+ return { status, reports }
24
48
  }