@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
@@ -360,6 +360,25 @@ export interface Interface {
360
360
  links: ObjectLink[]
361
361
  }
362
362
 
363
+ /** Compound query shapes prepared by the storage provider, in addition to property flags. */
364
+ export type ObjectQueryIndexDefinition =
365
+ | {
366
+ kind: "sort"
367
+ fields: readonly { propertyId: string; direction?: "asc" | "desc" }[]
368
+ /** String equality filters preceding the ordered fields. */
369
+ filters?: readonly string[]
370
+ }
371
+ | {
372
+ kind: "text"
373
+ propertyId: string
374
+ /** String filters/facets commonly combined with this substring search. */
375
+ filters?: readonly string[]
376
+ }
377
+
378
+ export interface ObjectTypeQueryMetadata {
379
+ indexes?: readonly ObjectQueryIndexDefinition[]
380
+ }
381
+
363
382
  /**
364
383
  * Canonical ontology node for a real-world asset, system, concept, or process.
365
384
  *
@@ -413,6 +432,8 @@ export interface ObjectType {
413
432
 
414
433
  properties: Property[]
415
434
  links: ObjectLink[]
435
+ /** Query index declarations, prepared automatically after storage migrations. */
436
+ query?: ObjectTypeQueryMetadata
416
437
  /** Search profile for this object type. */
417
438
  search?: ObjectTypeSearchMetadata
418
439
  }
@@ -7,6 +7,8 @@ import {
7
7
  isFilterableSchema,
8
8
  isSortableSchema,
9
9
  isTextSchema,
10
+ queryScalarKindForSchema,
11
+ resolveQuerySchema,
10
12
  } from "../query-capabilities"
11
13
 
12
14
  type QueryFeature = "filterable" | "sortable" | "text" | "exact" | "facet"
@@ -27,6 +29,7 @@ export function validateQueryMetadata(
27
29
  }
28
30
 
29
31
  validateObjectSearchMetadata(typeId, objectType, valueTypesById)
32
+ validateQueryIndexes(typeId, objectType, valueTypesById)
30
33
  }
31
34
  }
32
35
 
@@ -250,3 +253,57 @@ function resolveSchema(
250
253
  seenValueTypeIds.add(schema.valueTypeId)
251
254
  return resolveSchema(resolved, valueTypesById, path, seenValueTypeIds)
252
255
  }
256
+
257
+ function validateQueryIndexes(
258
+ typeId: string,
259
+ objectType: ObjectType,
260
+ valueTypes: ReadonlyMap<string, ValueType>
261
+ ): void {
262
+ for (const index of objectType.query?.indexes ?? []) {
263
+ const fields =
264
+ index.kind === "sort" ? index.fields.map((field) => field.propertyId) : [index.propertyId]
265
+ const filters = index.filters ?? []
266
+ if (
267
+ !fields.length ||
268
+ fields.length + filters.length > 8 ||
269
+ new Set([...fields, ...filters]).size !== fields.length + filters.length
270
+ )
271
+ throw new OntologyValidationError(
272
+ `[Sixb] Query index on '${typeId}' requires one to eight distinct properties`
273
+ )
274
+ if (index.kind === "text" && filters.length > 4)
275
+ throw new OntologyValidationError(
276
+ `[Sixb] Text query index on '${typeId}' accepts at most four filters`
277
+ )
278
+ for (const id of [...fields, ...filters]) {
279
+ const property = objectType.properties.find((property) => property.id === id)
280
+ if (!property)
281
+ throw new OntologyValidationError(
282
+ `[Sixb] Query index on '${typeId}' references unknown property '${id}'`
283
+ )
284
+ if (property.mode === "telemetry")
285
+ throw new OntologyValidationError(
286
+ `[Sixb] Query indexes cannot include telemetry property '${typeId}.${id}'`
287
+ )
288
+ const flag = filters.includes(id) ? "filterable" : index.kind === "sort" ? "sortable" : "text"
289
+ assertPropertyQueryFlag(typeId, property, flag, "query.indexes")
290
+ if (filters.includes(id)) {
291
+ const schema = resolveQuerySchema(property.schema, valueTypes)
292
+ if (!schema || queryScalarKindForSchema(schema) !== "string")
293
+ throw new OntologyValidationError(
294
+ `[Sixb] Query index filters must be strings: '${typeId}.${id}'`
295
+ )
296
+ }
297
+ }
298
+ if (
299
+ index.kind === "sort" &&
300
+ index.fields.some(
301
+ (field) =>
302
+ field.direction !== undefined && field.direction !== "asc" && field.direction !== "desc"
303
+ )
304
+ )
305
+ throw new OntologyValidationError(
306
+ `[Sixb] Query index direction must be asc or desc on '${typeId}'`
307
+ )
308
+ }
309
+ }
package/src/query.ts CHANGED
@@ -6,6 +6,8 @@
6
6
  * top of this module.
7
7
  */
8
8
 
9
+ export type { ModelRef } from "./models/catalog"
10
+ export type { RerankingModelDefinition, RerankingModelRef } from "./models/reranking-model"
9
11
  export type { ObjectQueryPlanningIssue } from "./objects/query/errors"
10
12
  export {
11
13
  ObjectQueryExecutionError,
@@ -29,6 +31,7 @@ export type {
29
31
  ObjectQueryPredicateNot,
30
32
  ObjectQueryProject,
31
33
  ObjectQueryRefs,
34
+ ObjectQueryRerank,
32
35
  ObjectQueryResultShape,
33
36
  ObjectQuerySet,
34
37
  ObjectQuerySetOperation,
@@ -68,6 +71,7 @@ export type {
68
71
  ObjectQueryFacetBucket,
69
72
  ObjectQueryFacetInput,
70
73
  ObjectQueryFacetResult,
74
+ ObjectQueryFacetsResult,
71
75
  ObjectQueryListOptions,
72
76
  ObjectQueryRow,
73
77
  ObjectWhereBuilder,
@@ -109,11 +109,16 @@ function eligibleAt(record: QueueRecord): number {
109
109
  return Math.max(record.availableAtMs, record.leaseExpiryMs ?? -Infinity)
110
110
  }
111
111
 
112
+ // Largest delay `setTimeout` accepts; a waiting claim that wakes early just waits again.
113
+ const MAX_TIMER_DELAY_MS = 2_147_483_647
114
+
112
115
  interface QueueLane {
113
116
  // Terminal records remain here for caller-id deduplication, never in the delivery indexes.
114
117
  readonly records: Map<string, QueueRecord>
115
118
  readonly ready: IndexedHeap<QueueRecord>
116
119
  readonly waiting: IndexedHeap<QueueRecord>
120
+ /** Wakes claims waiting on this lane. */
121
+ readonly waiters: Set<() => void>
117
122
  }
118
123
 
119
124
  function toClaimedQueueJob<TQueueJob extends QueueJob>(
@@ -175,6 +180,27 @@ class InMemoryQueueStore {
175
180
  lane.ready.delete(record)
176
181
  lane.waiting.set(record)
177
182
  }
183
+ // Any change can make a job claimable or move the next due time; waiters look again.
184
+ for (const wake of lane.waiters) wake()
185
+ }
186
+
187
+ /** Resolves when the lane changes, its next delayed job or lease comes due, or `signal` aborts. */
188
+ waitForWork(projectId: string, queueId: string, signal: AbortSignal): Promise<void> {
189
+ const lane = this.lane(projectId, queueId)
190
+ const next = lane.waiting.peek()
191
+ const dueInMs = next ? eligibleAt(next) - Date.now() : MAX_TIMER_DELAY_MS
192
+ return new Promise((resolve) => {
193
+ // Always armed: like a blocking read on a socket, a waiting claim keeps its process alive.
194
+ const timer = setTimeout(wake, Math.min(dueInMs, MAX_TIMER_DELAY_MS))
195
+ function wake(): void {
196
+ clearTimeout(timer)
197
+ lane.waiters.delete(wake)
198
+ signal.removeEventListener("abort", wake)
199
+ resolve()
200
+ }
201
+ lane.waiters.add(wake)
202
+ signal.addEventListener("abort", wake, { once: true })
203
+ })
178
204
  }
179
205
 
180
206
  takeReady<TQueueJob extends QueueJob>(
@@ -216,6 +242,7 @@ class InMemoryQueueStore {
216
242
  waiting: new IndexedHeap(
217
243
  (left, right) => eligibleAt(left) - eligibleAt(right) || left.sequence - right.sequence
218
244
  ),
245
+ waiters: new Set(),
219
246
  }
220
247
  queues.set(queueId, lane)
221
248
  }
@@ -263,6 +290,7 @@ class InMemoryQueue<TQueueJob extends QueueJob, TFailureCode extends SixbErrorCo
263
290
  workerId: string
264
291
  limit?: number
265
292
  leaseMs?: number
293
+ signal?: AbortSignal
266
294
  }): Promise<readonly ClaimedQueueJob<TQueueJob>[]> {
267
295
  assertNonEmpty(params.projectId, "projectId")
268
296
  assertNonEmpty(params.workerId, "workerId")
@@ -275,27 +303,34 @@ class InMemoryQueue<TQueueJob extends QueueJob, TFailureCode extends SixbErrorCo
275
303
  const leaseMs = params.leaseMs ?? 30_000
276
304
  assertPositiveNumber(leaseMs, "leaseMs")
277
305
 
278
- const now = Date.now()
279
- const claimedAt = new Date(now).toISOString()
280
- // Validate before removing candidates, and cache the same millisecond precision we return.
281
- const leaseExpiry = new Date(now + leaseMs)
282
- const leaseExpiresAt = leaseExpiry.toISOString()
283
- const claimable = this.store.takeReady<TQueueJob>(params.projectId, this.queueId, now, limit)
284
-
285
- return claimable.map((record) => {
286
- // Attempts count claims so redelivery after lease expiry or retry is visible to workers.
287
- record.job = {
288
- ...record.job,
289
- attempt: record.job.attempt + 1,
306
+ for (;;) {
307
+ if (params.signal?.aborted) return []
308
+ const now = Date.now()
309
+ const claimedAt = new Date(now).toISOString()
310
+ // Validate before removing candidates, and cache the same millisecond precision we return.
311
+ const leaseExpiry = new Date(now + leaseMs)
312
+ const leaseExpiresAt = leaseExpiry.toISOString()
313
+ const claimable = this.store.takeReady<TQueueJob>(params.projectId, this.queueId, now, limit)
314
+ if (claimable.length === 0 && params.signal) {
315
+ await this.store.waitForWork(params.projectId, this.queueId, params.signal)
316
+ continue
290
317
  }
291
- record.leaseId = randomUUID()
292
- record.claimedAt = claimedAt
293
- record.leaseExpiresAt = leaseExpiresAt
294
- record.leaseExpiryMs = leaseExpiry.getTime()
295
- this.store.schedule(params.projectId, record, now)
296
318
 
297
- return toClaimedQueueJob(record)
298
- })
319
+ return claimable.map((record) => {
320
+ // Attempts count claims so redelivery after lease expiry or retry is visible to workers.
321
+ record.job = {
322
+ ...record.job,
323
+ attempt: record.job.attempt + 1,
324
+ }
325
+ record.leaseId = randomUUID()
326
+ record.claimedAt = claimedAt
327
+ record.leaseExpiresAt = leaseExpiresAt
328
+ record.leaseExpiryMs = leaseExpiry.getTime()
329
+ this.store.schedule(params.projectId, record, now)
330
+
331
+ return toClaimedQueueJob(record)
332
+ })
333
+ }
299
334
  }
300
335
 
301
336
  async complete(params: { projectId: string; jobId: string; leaseId: string }): Promise<void> {
@@ -82,12 +82,16 @@ export interface Queue<
82
82
  *
83
83
  * `leaseMs` is the visibility timeout for this claim. If the lease expires
84
84
  * before the job is acknowledged, the job may be delivered again.
85
+ *
86
+ * Without `signal`, returns at once, possibly empty. With `signal`, waits for work instead:
87
+ * it resolves once it claims at least one job, and empty only after `signal` aborts.
85
88
  */
86
89
  claim(params: {
87
90
  projectId: string
88
91
  workerId: string
89
92
  limit?: number
90
93
  leaseMs?: number
94
+ signal?: AbortSignal
91
95
  }): Promise<readonly ClaimedQueueJob<TQueueJob>[]>
92
96
 
93
97
  /** Acknowledges successful processing and removes the claimed job from delivery. */
@@ -54,8 +54,10 @@ import {
54
54
  import { createOntologyMaterializer, type OntologyMaterializerContract } from "../materializer"
55
55
  import type { ModelCatalogInput } from "../models"
56
56
  import { bindEmbeddingModels } from "../models/execution/embedding"
57
+ import { bindRerankingModels } from "../models/execution/reranking"
57
58
  import { ModelExecutionSession } from "../models/execution/session"
58
59
  import { createVectorIndexingRuntime } from "../objects/vectors/indexing"
60
+ import { VectorIndexingDispatcher } from "../objects/vectors/indexing-dispatch"
59
61
  import { registerVectorIndexingRuntime } from "../objects/vectors/indexing-runtime"
60
62
  import type { PipelineDefinition } from "../pipelines/types"
61
63
  import { registerProjectionRegistry } from "../projections/internal"
@@ -88,6 +90,7 @@ import {
88
90
  createOntologyMutationRuntime,
89
91
  registerOntologyMutationRuntime,
90
92
  } from "./ontology-mutations"
93
+ import { getApiPublicOrigin } from "./public-origin"
91
94
  import { resolveDefinitions } from "./resolve-definitions"
92
95
  import { createBoundSixb, type Sixb, type SixbDependencies } from "./sixb"
93
96
  import { StorageReadiness } from "./storage-readiness"
@@ -141,6 +144,7 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
141
144
  private readonly webhookRegistry: WebhookRegistry
142
145
  private readonly hostContext: SixbHostContext
143
146
  private readonly committedFacts: OntologyOutboxDispatcher
147
+ private readonly vectorIndexing?: VectorIndexingDispatcher
144
148
  private readonly eventService: DomainEventService
145
149
  private readonly ontologyMaintenance: OntologyMaintenance
146
150
  private readonly storageReadiness: StorageReadiness
@@ -234,16 +238,31 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
234
238
  ...failure,
235
239
  }),
236
240
  })
241
+ const vectorIndexing = this.storage.ontology.vectorIndexing
242
+ if (
243
+ vectorIndexing &&
244
+ definitions.ontology
245
+ .listObjectTypes()
246
+ .some((type) => Object.keys(type.search?.vectors ?? {}).length > 0)
247
+ ) {
248
+ this.vectorIndexing = new VectorIndexingDispatcher(
249
+ this.projectId,
250
+ vectorIndexing,
251
+ this.queues.vectorIndexing
252
+ )
253
+ }
237
254
  this.ontologyMaintenance = new OntologyMaintenance({
238
255
  projectId: this.projectId,
239
256
  storage: this.storage,
240
257
  dispatcher: this.committedFacts,
258
+ vectorIndexing: this.vectorIndexing,
241
259
  blobStorage: this.blobStorage,
242
260
  options: options.ontologyMaintenance,
243
261
  })
244
262
 
245
263
  this.hostContext = {
246
264
  embeddingModels: definitions.models?.embedding,
265
+ rerankingModels: definitions.models?.reranking,
247
266
  projectId: this.projectId,
248
267
  broker: this.broker,
249
268
  ontology: definitions.ontology,
@@ -277,16 +296,19 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
277
296
  capturedScope.execution
278
297
  )
279
298
  const embeddingModels = bindEmbeddingModels(this.hostContext.embeddingModels, modelExecution)
299
+ const rerankingModels = bindRerankingModels(this.hostContext.rerankingModels, modelExecution)
280
300
  const objectReader = createAuthorizedObjectReader({
281
301
  scope: capturedScope,
282
302
  ontology: this.hostContext.ontology,
283
303
  objectStorage: this.storage.objects,
284
304
  embeddingModels,
305
+ rerankingModels,
285
306
  })
286
307
 
287
308
  const runtime: SixbRuntimeContext = {
288
309
  ...this.hostContext,
289
310
  embeddingModels,
311
+ rerankingModels,
290
312
  modelExecution,
291
313
  runtimeAuthorization: capturedScope.authorization,
292
314
  objectReader,
@@ -296,7 +318,10 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
296
318
  runtime,
297
319
  createOntologyMutationRuntime({
298
320
  materializer: this.materializer.withScope(capturedScope),
299
- notifyCommittedFacts: () => this.committedFacts.notify(),
321
+ notifyCommittedFacts: () => {
322
+ this.committedFacts.notify()
323
+ this.vectorIndexing?.notify()
324
+ },
300
325
  })
301
326
  )
302
327
  return createBoundSixb<InferSandboxParams<TParams>>(
@@ -352,6 +377,7 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
352
377
  /** Close the runtime broker provider if it owns external resources. */
353
378
  async closeBroker(): Promise<void> {
354
379
  await this.committedFacts.stop()
380
+ await this.vectorIndexing?.stop()
355
381
  await this.ontologyMaintenance.stop()
356
382
  await this.broker.close?.()
357
383
  }
@@ -369,6 +395,7 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
369
395
  ? {}
370
396
  : { connectorConnections: this.connectorService.connectionProcess }),
371
397
  blobStorage: this.blobStorage,
398
+ apiPublicOrigin: () => getApiPublicOrigin(this),
372
399
  lakeStorage: this.lakeStorage,
373
400
  }
374
401
  }
@@ -40,6 +40,7 @@ export type {
40
40
  ObjectQueryFacetBucket,
41
41
  ObjectQueryFacetInput,
42
42
  ObjectQueryFacetResult,
43
+ ObjectQueryFacetsResult,
43
44
  ObjectQueryListOptions,
44
45
  ObjectQueryRow,
45
46
  ObjectReadByIdHandle,
@@ -20,4 +20,5 @@ export {
20
20
  registerOntologyMutationRuntime,
21
21
  shareOntologyMutationRuntime,
22
22
  } from "./ontology-mutations"
23
+ export { setApiPublicOrigin } from "./public-origin"
23
24
  export type { SixbHostContext, SixbRuntimeContext } from "./types"
@@ -0,0 +1,33 @@
1
+ /**
2
+ * The origin the API is reachable at from outside, for features that hand out absolute URLs a
3
+ * third party will fetch. It is deployment topology, not app configuration: the API server
4
+ * records the `publicOrigin` it was started with, and the CLI records `SIXB_API_PUBLIC_ORIGIN`
5
+ * for worker processes. A process that never learns it cannot issue such URLs.
6
+ */
7
+
8
+ const apiPublicOrigins = new WeakMap<object, string>()
9
+
10
+ /** Record where the API is reachable. A host served by several servers keeps the latest one. */
11
+ export function setApiPublicOrigin(host: object, origin: string): void {
12
+ apiPublicOrigins.set(host, normalizeOrigin(origin))
13
+ }
14
+
15
+ export function getApiPublicOrigin(host: object): string | undefined {
16
+ return apiPublicOrigins.get(host)
17
+ }
18
+
19
+ function normalizeOrigin(value: string): string {
20
+ let url: URL
21
+ try {
22
+ url = new URL(value)
23
+ } catch {
24
+ throw new Error(`[Sixb] Invalid API public origin: '${value}'.`)
25
+ }
26
+ if (url.protocol !== "http:" && url.protocol !== "https:") {
27
+ throw new Error("[Sixb] The API public origin must use http or https.")
28
+ }
29
+ if (url.pathname !== "/" || url.search || url.hash) {
30
+ throw new Error("[Sixb] The API public origin must be an origin, not a full URL.")
31
+ }
32
+ return url.origin
33
+ }
@@ -65,6 +65,7 @@ export interface SixbDependencies {
65
65
  readonly connectorService: ConnectorService
66
66
  readonly connectorConnections?: ConnectorConnectionProcess
67
67
  readonly blobStorage: BlobStorage
68
+ readonly apiPublicOrigin: () => string | undefined
68
69
  readonly lakeStorage: LakeStorage
69
70
  }
70
71
 
@@ -129,13 +130,23 @@ function createExecutionFacades<TParams extends Record<string, unknown>>(
129
130
  dependencies.definitions.models,
130
131
  dependencies.sandbox
131
132
  ),
132
- models: createModelsRuntime(runtime, execution, dependencies.definitions.models),
133
+ models: createModelsRuntime(
134
+ runtime,
135
+ execution,
136
+ dependencies.definitions.models,
137
+ dependencies.blobStorage
138
+ ),
133
139
  aiUsage: createAiUsageRuntime(runtime, dependencies.definitions.security),
134
140
  events: createEventsRuntime(runtime),
135
141
  logs: createLogsRuntime(runtime, dependencies.logging),
136
142
  schedules: createSchedulesRuntime(runtime, dependencies.definitions.schedules),
137
143
  shares: createSharesRuntime(runtime, execution, dependencies.definitions.shares),
138
144
  connector: createConnectorRuntime(runtime, execution, dependencies.connectorService),
139
- blobs: createBlobsRuntime(runtime, execution, dependencies.blobStorage),
145
+ blobs: createBlobsRuntime(
146
+ runtime,
147
+ execution,
148
+ dependencies.blobStorage,
149
+ dependencies.apiPublicOrigin
150
+ ),
140
151
  }
141
152
  }
@@ -16,7 +16,7 @@ import type { Broker } from "../broker"
16
16
  import type { DomainEventLog } from "../events"
17
17
  import type { RuntimeAuthorization } from "../execution"
18
18
  import type { AuthorizedObjectReader } from "../execution/authorized-object-reader"
19
- import type { EmbeddingModelCatalog } from "../models"
19
+ import type { EmbeddingModelCatalog, RerankingModelCatalog, RerankingModelRef } from "../models"
20
20
  import type { ModelExecutionSession } from "../models/execution/session"
21
21
  import type {
22
22
  ObjectQuery,
@@ -58,6 +58,7 @@ import type { ActionRunRecord, ObjectLinkRow, Storage } from "../storage"
58
58
  */
59
59
  export interface SixbHostContext {
60
60
  readonly embeddingModels?: EmbeddingModelCatalog
61
+ readonly rerankingModels?: RerankingModelCatalog
61
62
  readonly projectId: string
62
63
  readonly broker: Broker
63
64
  readonly ontology: OntologyRegistry
@@ -414,6 +415,12 @@ export type ObjectQueryFacetBucket = {
414
415
  count: number
415
416
  }
416
417
 
418
+ /** Total and facet buckets are calculated from the same matching set. */
419
+ export type ObjectQueryFacetsResult = {
420
+ total: number
421
+ facets: ObjectQueryFacetResult[]
422
+ }
423
+
417
424
  export type ObjectQueryFacetResult = {
418
425
  propertyId: string
419
426
  buckets: ObjectQueryFacetBucket[]
@@ -669,6 +676,9 @@ export interface ObjectQueryBuilder<
669
676
  options: { k: number }
670
677
  ): ObjectQueryBuilder<TObjectType, TRow>
671
678
 
679
+ /** Reorder up to 100 vector candidates with an explicitly registered server-side model. */
680
+ rerank(options: { model: RerankingModelRef }): ObjectQueryBuilder<TObjectType, TRow>
681
+
672
682
  /** Follow an outgoing link and make the linked object type the current result type. */
673
683
  traverse<TLinkToken extends LinkToken<TObjectType["id"], string, LinkTargetObjectTypeIdValue>>(
674
684
  link: TLinkToken,
@@ -750,7 +760,7 @@ export interface ObjectQueryBuilder<
750
760
  exists(): Promise<boolean>
751
761
 
752
762
  /** Count matching objects by configured facetable properties. */
753
- facets(input: readonly ObjectQueryFacetInput<TObjectType>[]): Promise<ObjectQueryFacetResult[]>
763
+ facets(input: readonly ObjectQueryFacetInput<TObjectType>[]): Promise<ObjectQueryFacetsResult>
754
764
 
755
765
  /** Execute this query with an outer limit of one and return the first object. */
756
766
  first(): Promise<Simplify<TRow> | null>
@@ -68,6 +68,7 @@ export interface AiAccountingAggregateFragment {
68
68
  readonly cacheWriteInputTokens: AiAccountingUsageMeterFragment
69
69
  readonly textOutputTokens: AiAccountingUsageMeterFragment
70
70
  readonly reasoningOutputTokens: AiAccountingUsageMeterFragment
71
+ readonly audioDurationMs: AiAccountingUsageMeterFragment
71
72
  }
72
73
  readonly costs: {
73
74
  readonly amount?: AiMoney
@@ -406,6 +407,7 @@ const AGGREGATE_USAGE_FIELDS = [
406
407
  "cacheWriteInputTokens",
407
408
  "textOutputTokens",
408
409
  "reasoningOutputTokens",
410
+ "audioDurationMs",
409
411
  ] as const
410
412
 
411
413
  type AggregateUsageField = (typeof AGGREGATE_USAGE_FIELDS)[number]
@@ -110,7 +110,8 @@ function billableMeter(value: unknown): AiBillableMeter {
110
110
  value !== "tokens.input.cacheWrite1h" &&
111
111
  value !== "tokens.output.total" &&
112
112
  value !== "tokens.output.text" &&
113
- value !== "tokens.output.reasoning"
113
+ value !== "tokens.output.reasoning" &&
114
+ value !== "audio.input.milliseconds"
114
115
  ) {
115
116
  throw invalidDetails()
116
117
  }
@@ -6,6 +6,7 @@ import type {
6
6
 
7
7
  /** Token meters supported by deterministic local rate cards. */
8
8
  export type AiBillableMeter =
9
+ | "audio.input.milliseconds"
9
10
  | "tokens.input.total"
10
11
  | "tokens.input.uncached"
11
12
  | "tokens.input.cacheRead"
@@ -15,8 +15,8 @@ import type {
15
15
  } from "./types"
16
16
 
17
17
  const SIGNED_INT64_MAX = 9_223_372_036_854_775_807n
18
- const TOKENS_PER_MILLION = 1_000_000n
19
- const HALF_MILLION = TOKENS_PER_MILLION / 2n
18
+ const UNITS_PER_MILLION = 1_000_000n
19
+ const HALF_MILLION = UNITS_PER_MILLION / 2n
20
20
  const MAX_NUMERIC_TEXT_LENGTH = 128
21
21
  const METER_ORDER: Readonly<Record<AiBillableMeter, number>> = {
22
22
  "tokens.input.total": 0,
@@ -28,6 +28,7 @@ const METER_ORDER: Readonly<Record<AiBillableMeter, number>> = {
28
28
  "tokens.output.total": 6,
29
29
  "tokens.output.text": 7,
30
30
  "tokens.output.reasoning": 8,
31
+ "audio.input.milliseconds": 9,
31
32
  }
32
33
  const METERS = new Set(Object.keys(METER_ORDER) as AiBillableMeter[])
33
34
  const UNPRICEABLE_REASONS = new Set<AiUnpriceableReason>([
@@ -120,11 +121,7 @@ export function aiModelCallCostMatchesUsage(
120
121
  const components = new Map(
121
122
  record.estimate.components.map((component) => [component.meter, component])
122
123
  )
123
- if (
124
- !inputComponentsMatchUsage(components, usage) ||
125
- !outputComponentsMatchUsage(components, usage)
126
- )
127
- return false
124
+ if (!componentsMatchUsage(components, usage)) return false
128
125
  }
129
126
  if (record.status === "unpriceable") return true
130
127
  if (record.components.length === 0 && isExternalValuationSource(record.priceSource.sourceId)) {
@@ -133,6 +130,22 @@ export function aiModelCallCostMatchesUsage(
133
130
 
134
131
  const usage = normalizeAiModelCallUsage(usageRecord.usage)
135
132
  const components = new Map(record.components.map((component) => [component.meter, component]))
133
+ return componentsMatchUsage(components, usage)
134
+ }
135
+
136
+ function componentsMatchUsage(
137
+ components: ReadonlyMap<AiBillableMeter, AiCostComponent>,
138
+ usage: AiModelCallUsage
139
+ ): boolean {
140
+ const audio = components.get("audio.input.milliseconds")
141
+ if (audio) {
142
+ return (
143
+ components.size === 1 &&
144
+ usage.audioDurationMs !== undefined &&
145
+ BigInt(audio.quantity) === BigInt(usage.audioDurationMs)
146
+ )
147
+ }
148
+
136
149
  return (
137
150
  inputComponentsMatchUsage(components, usage) && outputComponentsMatchUsage(components, usage)
138
151
  )
@@ -362,7 +375,7 @@ function calculateComponent(
362
375
  ): AiCostComponent {
363
376
  const normalizedQuantity = parseQuantity(quantity, `${meter} quantity`)
364
377
  const rate = parseNonnegativeInt64(rateAmountNanosPerMillion, `${meter} rate`)
365
- const charge = (normalizedQuantity * rate + HALF_MILLION) / TOKENS_PER_MILLION
378
+ const charge = (normalizedQuantity * rate + HALF_MILLION) / UNITS_PER_MILLION
366
379
  assertSignedInt64(charge, `${meter} charge`)
367
380
  return {
368
381
  meter,
@@ -8,6 +8,7 @@ import {
8
8
  AiLimitOperationLock,
9
9
  aiLimitAccountingEntryAppliesToSubject,
10
10
  aiLimitAmountKey,
11
+ aiLimitMeterApplies,
11
12
  aiLimitPolicyDimensionKey,
12
13
  aiLimitQuantityFromAmount,
13
14
  aiLimitReservationBuckets,
@@ -227,7 +228,12 @@ export class InMemoryAiLimitStorage implements AiLimitStorage {
227
228
  const unavailablePolicies: AiLimitPolicyStatus[] = []
228
229
  const unavailableReasons = new Set<"missingEstimate" | "incompleteAccounting">()
229
230
  for (const policy of enabledPolicies) {
230
- if (!subjectKeys.has(aiLimitSubjectKey(policy.subject))) continue
231
+ if (
232
+ !subjectKeys.has(aiLimitSubjectKey(policy.subject)) ||
233
+ !aiLimitMeterApplies(policy.limit.meter, request.modelKind)
234
+ ) {
235
+ continue
236
+ }
231
237
  const limit = normalizeAiLimitAmount(policy.limit)
232
238
  const estimate = estimates.get(aiLimitAmountKey(limit))
233
239
  const status = await this.policyStatus(policy, request.period)
@@ -268,7 +274,8 @@ export class InMemoryAiLimitStorage implements AiLimitStorage {
268
274
  const buckets = aiLimitReservationBuckets(
269
275
  enabledPolicies,
270
276
  request.subjects,
271
- request.estimates
277
+ request.estimates,
278
+ request.modelKind
272
279
  )
273
280
  if (buckets.length === 0) return { status: "notRequired" }
274
281
  for (const bucket of buckets) {
@@ -601,6 +608,7 @@ export class InMemoryAiLimitStorage implements AiLimitStorage {
601
608
  attempt: record.attempt,
602
609
  callId: record.callId,
603
610
  occurredAt: new Date(record.occurredAt),
611
+ ...(record.modelKind === undefined ? {} : { modelKind: record.modelKind }),
604
612
  ...(record.usage.totalTokens === undefined ? {} : { totalTokens: record.usage.totalTokens }),
605
613
  requesterGroupIds: [...record.requesterGroupIds],
606
614
  ...(requester?.type === "user" || requester?.type === "serviceAccount"