@sixb/core 0.1.15 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (585) hide show
  1. package/dist/actions/index.js +25 -25
  2. package/dist/actions/types/context.d.ts +2 -2
  3. package/dist/actions/types/context.d.ts.map +1 -1
  4. package/dist/actions/worker.js +1 -1
  5. package/dist/agents/index.js +41 -40
  6. package/dist/agents/index.js.map +1 -1
  7. package/dist/auth/index.js +5 -5
  8. package/dist/authorization/index.js +2 -2
  9. package/dist/blob-storage/download-urls.d.ts +41 -0
  10. package/dist/blob-storage/download-urls.d.ts.map +1 -0
  11. package/dist/blob-storage/execution.d.ts +9 -1
  12. package/dist/blob-storage/execution.d.ts.map +1 -1
  13. package/dist/blob-storage/index.js +5 -3
  14. package/dist/blob-storage/index.js.map +1 -1
  15. package/dist/blob-storage/internal.d.ts +2 -0
  16. package/dist/blob-storage/internal.d.ts.map +1 -0
  17. package/dist/blob-storage/internal.js +11 -0
  18. package/dist/blob-storage/internal.js.map +9 -0
  19. package/dist/bootstrap/index.js +45 -44
  20. package/dist/bootstrap/index.js.map +1 -1
  21. package/dist/{chunk-wem5vqjw.js → chunk-10styjgk.js} +18 -13
  22. package/dist/{chunk-wem5vqjw.js.map → chunk-10styjgk.js.map} +3 -3
  23. package/dist/{chunk-hgqpcmyr.js → chunk-1hqwggsn.js} +47 -19
  24. package/dist/chunk-1hqwggsn.js.map +12 -0
  25. package/dist/{chunk-q3grgzp1.js → chunk-23xs4qp9.js} +2 -2
  26. package/dist/{chunk-vef6qa14.js → chunk-2am3db31.js} +2 -2
  27. package/dist/{chunk-fj1dvp37.js → chunk-2vhg6ysa.js} +1 -1
  28. package/dist/{chunk-p0nbkys4.js → chunk-33saed7g.js} +1 -1
  29. package/dist/{chunk-mdnw7nj8.js → chunk-3rrezgyc.js} +33 -8
  30. package/dist/chunk-3rrezgyc.js.map +15 -0
  31. package/dist/{chunk-jgwb25gc.js → chunk-4as3wt1c.js} +13 -5
  32. package/dist/chunk-4as3wt1c.js.map +12 -0
  33. package/dist/chunk-4ra628t7.js +88 -0
  34. package/dist/chunk-4ra628t7.js.map +10 -0
  35. package/dist/{chunk-mmac1mp6.js → chunk-52c5zb0z.js} +2 -2
  36. package/dist/{chunk-8fjmqjyx.js → chunk-5be2ath4.js} +1 -1
  37. package/dist/{chunk-2fv8sajb.js → chunk-5thzcb8g.js} +2 -2
  38. package/dist/{chunk-fjw417jf.js → chunk-5yd8cchh.js} +1143 -784
  39. package/dist/chunk-5yd8cchh.js.map +66 -0
  40. package/dist/{chunk-2tz5vnvz.js → chunk-6wbm6ymz.js} +235 -41
  41. package/dist/{chunk-2tz5vnvz.js.map → chunk-6wbm6ymz.js.map} +8 -6
  42. package/dist/{chunk-py2dw8cw.js → chunk-7ecp4v7a.js} +26 -19
  43. package/dist/chunk-7ecp4v7a.js.map +17 -0
  44. package/dist/{chunk-f85hpqnm.js → chunk-99nd4rc1.js} +3 -3
  45. package/dist/{chunk-f85hpqnm.js.map → chunk-99nd4rc1.js.map} +3 -3
  46. package/dist/{chunk-1jvq82rp.js → chunk-9g6jz9kk.js} +5 -5
  47. package/dist/{chunk-39tqv9hz.js → chunk-9se093qz.js} +5 -6
  48. package/dist/{chunk-39tqv9hz.js.map → chunk-9se093qz.js.map} +3 -4
  49. package/dist/{chunk-8w27xf9e.js → chunk-a7er86jd.js} +1 -1
  50. package/dist/{chunk-zdkcdshk.js → chunk-aq39q04r.js} +41 -3
  51. package/dist/{chunk-zdkcdshk.js.map → chunk-aq39q04r.js.map} +4 -3
  52. package/dist/chunk-b9affek3.js +261 -0
  53. package/dist/chunk-b9affek3.js.map +12 -0
  54. package/dist/{chunk-bxx3ms5t.js → chunk-c2rga5cx.js} +2 -2
  55. package/dist/{chunk-dsfw1bdr.js → chunk-cnb5kv05.js} +2 -2
  56. package/dist/chunk-d62kjtbg.js.map +2 -2
  57. package/dist/{chunk-dqkd3kdj.js → chunk-dam456ve.js} +234 -35
  58. package/dist/{chunk-dqkd3kdj.js.map → chunk-dam456ve.js.map} +7 -5
  59. package/dist/{chunk-n5t4mq6z.js → chunk-e67ynxcr.js} +3 -3
  60. package/dist/{chunk-xnx96gfy.js → chunk-ere85b8y.js} +17 -8
  61. package/dist/chunk-ere85b8y.js.map +15 -0
  62. package/dist/{chunk-k4kkp58d.js → chunk-ewqa58h9.js} +12 -2
  63. package/dist/chunk-ewqa58h9.js.map +11 -0
  64. package/dist/{chunk-6q7c68yx.js → chunk-f1xh7a32.js} +3 -3
  65. package/dist/{chunk-z708gemf.js → chunk-fggq3d9k.js} +450 -799
  66. package/dist/chunk-fggq3d9k.js.map +49 -0
  67. package/dist/{chunk-7jc21943.js → chunk-gf7yht60.js} +4 -4
  68. package/dist/chunk-h8teetr0.js +9 -0
  69. package/dist/chunk-h8teetr0.js.map +10 -0
  70. package/dist/chunk-hn2r7z41.js.map +1 -1
  71. package/dist/{chunk-ffwvdgk1.js → chunk-jjrn5v0p.js} +1 -1
  72. package/dist/{chunk-r5sc1d2b.js → chunk-jnfxmr3f.js} +1 -1
  73. package/dist/{chunk-y0zmae99.js → chunk-k4g51s47.js} +3 -3
  74. package/dist/{chunk-a0073121.js → chunk-kpx7jrmn.js} +3 -1
  75. package/dist/chunk-kpx7jrmn.js.map +12 -0
  76. package/dist/{chunk-p1683c0v.js → chunk-kyjcwqz6.js} +5 -2
  77. package/dist/{chunk-p1683c0v.js.map → chunk-kyjcwqz6.js.map} +3 -3
  78. package/dist/{chunk-3c90jvfj.js → chunk-pja9jfz6.js} +742 -583
  79. package/dist/chunk-pja9jfz6.js.map +19 -0
  80. package/dist/chunk-pqajwytd.js.map +1 -1
  81. package/dist/{chunk-mr60an99.js → chunk-qczk96d9.js} +22 -2
  82. package/dist/{chunk-mr60an99.js.map → chunk-qczk96d9.js.map} +3 -3
  83. package/dist/{chunk-s3csryxe.js → chunk-rj69qcrd.js} +8 -2
  84. package/dist/chunk-rj69qcrd.js.map +11 -0
  85. package/dist/{chunk-d8yes9yx.js → chunk-rpxz486p.js} +32 -5
  86. package/dist/{chunk-d8yes9yx.js.map → chunk-rpxz486p.js.map} +4 -4
  87. package/dist/{chunk-drz59ve0.js → chunk-rx7h5fdx.js} +1 -1
  88. package/dist/{chunk-ky7zpbtt.js → chunk-s7ftxrdr.js} +106 -8
  89. package/dist/chunk-s7ftxrdr.js.map +22 -0
  90. package/dist/{chunk-yfppyaty.js → chunk-sk0hcjsz.js} +1 -1
  91. package/dist/{chunk-qne45xqq.js → chunk-svabwqdq.js} +2 -2
  92. package/dist/{chunk-xr7y35yj.js → chunk-t9shqx3w.js} +2 -2
  93. package/dist/{chunk-4jph1t3v.js → chunk-tjjgy3z4.js} +27 -24
  94. package/dist/{chunk-4jph1t3v.js.map → chunk-tjjgy3z4.js.map} +4 -4
  95. package/dist/{chunk-ex8s8wsk.js → chunk-vp3z1ckh.js} +42 -10
  96. package/dist/{chunk-ex8s8wsk.js.map → chunk-vp3z1ckh.js.map} +7 -6
  97. package/dist/{chunk-adbve9zt.js → chunk-vre348sb.js} +2 -2
  98. package/dist/{chunk-a4g5yjm0.js → chunk-w9yycd3t.js} +1 -1
  99. package/dist/{chunk-g4rbm4a6.js → chunk-wt4szfec.js} +379 -331
  100. package/dist/chunk-wt4szfec.js.map +14 -0
  101. package/dist/{chunk-wd34wnsy.js → chunk-xcy5ddha.js} +6 -6
  102. package/dist/{chunk-3nx8vj5a.js → chunk-xyvy73tj.js} +5 -3
  103. package/dist/chunk-xyvy73tj.js.map +12 -0
  104. package/dist/datasets/write.js +1 -1
  105. package/dist/execution/agent.js +38 -37
  106. package/dist/execution/agent.js.map +1 -1
  107. package/dist/execution/authorized-object-reader.d.ts +3 -1
  108. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  109. package/dist/execution/primitive.js +36 -35
  110. package/dist/execution/primitive.js.map +2 -2
  111. package/dist/execution/request.js +37 -36
  112. package/dist/execution/request.js.map +2 -2
  113. package/dist/index.d.ts +8 -4
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +62 -59
  116. package/dist/index.js.map +1 -1
  117. package/dist/lake-storage/in-memory.d.ts +5 -1
  118. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  119. package/dist/lake-storage/index.d.ts +1 -1
  120. package/dist/lake-storage/index.d.ts.map +1 -1
  121. package/dist/lake-storage/index.js +2 -2
  122. package/dist/lake-storage/types.d.ts +26 -0
  123. package/dist/lake-storage/types.d.ts.map +1 -1
  124. package/dist/maintenance/ontology-maintenance.d.ts +5 -1
  125. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  126. package/dist/maintenance/types.d.ts +1 -4
  127. package/dist/maintenance/types.d.ts.map +1 -1
  128. package/dist/materialization/event-envelopes.d.ts +20 -0
  129. package/dist/materialization/event-envelopes.d.ts.map +1 -0
  130. package/dist/materialization/events.d.ts +29 -3
  131. package/dist/materialization/events.d.ts.map +1 -1
  132. package/dist/materialization/index.d.ts +4 -1
  133. package/dist/materialization/index.d.ts.map +1 -1
  134. package/dist/materialization/index.js +9 -3
  135. package/dist/materialization/index.js.map +1 -1
  136. package/dist/materializer/edits/plan.d.ts +2 -10
  137. package/dist/materializer/edits/plan.d.ts.map +1 -1
  138. package/dist/materializer/effective/build-events.d.ts +5 -21
  139. package/dist/materializer/effective/build-events.d.ts.map +1 -1
  140. package/dist/materializer/effective/vector-indexing.d.ts +2 -3
  141. package/dist/materializer/effective/vector-indexing.d.ts.map +1 -1
  142. package/dist/materializer/effective/vectors.d.ts +2 -3
  143. package/dist/materializer/effective/vectors.d.ts.map +1 -1
  144. package/dist/materializer/execution/scope.d.ts +1 -11
  145. package/dist/materializer/execution/scope.d.ts.map +1 -1
  146. package/dist/materializer/execution/work-executor.d.ts +5 -7
  147. package/dist/materializer/execution/work-executor.d.ts.map +1 -1
  148. package/dist/materializer/execution/work-records.d.ts +1 -3
  149. package/dist/materializer/execution/work-records.d.ts.map +1 -1
  150. package/dist/materializer/index.js +31 -32
  151. package/dist/materializer/index.js.map +1 -1
  152. package/dist/materializer/projections/replace.d.ts.map +1 -1
  153. package/dist/materializer/projections/replacement-plan.d.ts +8 -11
  154. package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
  155. package/dist/materializer/shared/batching.d.ts +5 -0
  156. package/dist/materializer/shared/batching.d.ts.map +1 -1
  157. package/dist/materializer/telemetry/plan.d.ts +2 -8
  158. package/dist/materializer/telemetry/plan.d.ts.map +1 -1
  159. package/dist/models/audio/catalog.d.ts +20 -0
  160. package/dist/models/audio/catalog.d.ts.map +1 -0
  161. package/dist/models/audio/errors.d.ts +8 -0
  162. package/dist/models/audio/errors.d.ts.map +1 -0
  163. package/dist/models/audio/file.d.ts +9 -0
  164. package/dist/models/audio/file.d.ts.map +1 -0
  165. package/dist/models/audio/runtime.d.ts +8 -0
  166. package/dist/models/audio/runtime.d.ts.map +1 -0
  167. package/dist/models/audio/types.d.ts +60 -0
  168. package/dist/models/audio/types.d.ts.map +1 -0
  169. package/dist/models/catalog.d.ts +23 -1
  170. package/dist/models/catalog.d.ts.map +1 -1
  171. package/dist/models/definitions.d.ts +1 -1
  172. package/dist/models/definitions.d.ts.map +1 -1
  173. package/dist/models/embedding-model.d.ts +4 -0
  174. package/dist/models/embedding-model.d.ts.map +1 -1
  175. package/dist/models/events.d.ts +3 -0
  176. package/dist/models/events.d.ts.map +1 -1
  177. package/dist/models/execution/index.js +22 -22
  178. package/dist/models/execution/model-call-admission.d.ts +6 -1
  179. package/dist/models/execution/model-call-admission.d.ts.map +1 -1
  180. package/dist/models/execution/model-call-limits.d.ts.map +1 -1
  181. package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
  182. package/dist/models/execution/reranking.d.ts +4 -0
  183. package/dist/models/execution/reranking.d.ts.map +1 -0
  184. package/dist/models/execution/usage.d.ts.map +1 -1
  185. package/dist/models/execution.d.ts +2 -1
  186. package/dist/models/execution.d.ts.map +1 -1
  187. package/dist/models/generation-types.d.ts +2 -0
  188. package/dist/models/generation-types.d.ts.map +1 -1
  189. package/dist/models/index.d.ts +7 -1
  190. package/dist/models/index.d.ts.map +1 -1
  191. package/dist/models/index.js +7 -3
  192. package/dist/models/index.js.map +1 -1
  193. package/dist/models/pricing.d.ts +2 -2
  194. package/dist/models/pricing.d.ts.map +1 -1
  195. package/dist/models/reranking-model.d.ts +49 -0
  196. package/dist/models/reranking-model.d.ts.map +1 -0
  197. package/dist/objects/index.js +25 -25
  198. package/dist/objects/query/executor.d.ts +2 -1
  199. package/dist/objects/query/executor.d.ts.map +1 -1
  200. package/dist/objects/query/index.d.ts +1 -1
  201. package/dist/objects/query/index.d.ts.map +1 -1
  202. package/dist/objects/query/index.js +24 -24
  203. package/dist/objects/query/index.js.map +1 -1
  204. package/dist/objects/query/ir.d.ts +8 -1
  205. package/dist/objects/query/ir.d.ts.map +1 -1
  206. package/dist/objects/query/normalize.d.ts.map +1 -1
  207. package/dist/objects/query/planner.d.ts +1 -1
  208. package/dist/objects/query/planner.d.ts.map +1 -1
  209. package/dist/objects/query/primary-id.d.ts +7 -0
  210. package/dist/objects/query/primary-id.d.ts.map +1 -0
  211. package/dist/objects/query/reranking-executor.d.ts +13 -0
  212. package/dist/objects/query/reranking-executor.d.ts.map +1 -0
  213. package/dist/objects/query/reranking-limits.d.ts +3 -0
  214. package/dist/objects/query/reranking-limits.d.ts.map +1 -0
  215. package/dist/objects/query/reranking-query.d.ts +4 -0
  216. package/dist/objects/query/reranking-query.d.ts.map +1 -0
  217. package/dist/objects/query/validate.d.ts.map +1 -1
  218. package/dist/objects/sdk/query-builder.d.ts +8 -0
  219. package/dist/objects/sdk/query-builder.d.ts.map +1 -1
  220. package/dist/objects/sdk/query-executor.d.ts +2 -2
  221. package/dist/objects/sdk/query-executor.d.ts.map +1 -1
  222. package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
  223. package/dist/objects/vectors/indexing-dispatch.d.ts +21 -0
  224. package/dist/objects/vectors/indexing-dispatch.d.ts.map +1 -0
  225. package/dist/objects/vectors/indexing-generate.d.ts.map +1 -1
  226. package/dist/objects/vectors/profile.d.ts.map +1 -1
  227. package/dist/objects/vectors/query.d.ts +1 -1
  228. package/dist/objects/vectors/query.d.ts.map +1 -1
  229. package/dist/objects/vectors/resolve-query.d.ts.map +1 -1
  230. package/dist/objects/vectors/types.d.ts +1 -1
  231. package/dist/objects/vectors/types.d.ts.map +1 -1
  232. package/dist/ontology/builders.d.ts +13 -4
  233. package/dist/ontology/builders.d.ts.map +1 -1
  234. package/dist/ontology/index.d.ts +1 -1
  235. package/dist/ontology/index.d.ts.map +1 -1
  236. package/dist/ontology/index.js +3 -3
  237. package/dist/ontology/internal.js +2 -2
  238. package/dist/ontology/query-capabilities.d.ts +1 -0
  239. package/dist/ontology/query-capabilities.d.ts.map +1 -1
  240. package/dist/ontology/types.d.ts +20 -0
  241. package/dist/ontology/types.d.ts.map +1 -1
  242. package/dist/ontology/validation/query.d.ts.map +1 -1
  243. package/dist/ontology/vector-profiles.d.ts.map +1 -1
  244. package/dist/pipelines/index.js +23 -23
  245. package/dist/projections/internal.js +22 -22
  246. package/dist/query.d.ts +4 -2
  247. package/dist/query.d.ts.map +1 -1
  248. package/dist/query.js +2 -2
  249. package/dist/queues/in-memory.d.ts +3 -0
  250. package/dist/queues/in-memory.d.ts.map +1 -1
  251. package/dist/queues/index.js +1 -1
  252. package/dist/queues/types.d.ts +4 -0
  253. package/dist/queues/types.d.ts.map +1 -1
  254. package/dist/runtime/host.d.ts +1 -0
  255. package/dist/runtime/host.d.ts.map +1 -1
  256. package/dist/runtime/index.d.ts +1 -1
  257. package/dist/runtime/index.d.ts.map +1 -1
  258. package/dist/runtime/internal.d.ts +1 -0
  259. package/dist/runtime/internal.d.ts.map +1 -1
  260. package/dist/runtime/internal.js +28 -26
  261. package/dist/runtime/internal.js.map +1 -1
  262. package/dist/runtime/public-origin.d.ts +10 -0
  263. package/dist/runtime/public-origin.d.ts.map +1 -0
  264. package/dist/runtime/sixb.d.ts +1 -0
  265. package/dist/runtime/sixb.d.ts.map +1 -1
  266. package/dist/runtime/types.d.ts +12 -2
  267. package/dist/runtime/types.d.ts.map +1 -1
  268. package/dist/sandboxes/index.js +5 -5
  269. package/dist/shares/internal.js +19 -19
  270. package/dist/storage/agents/provider.js +2 -2
  271. package/dist/storage/ai-cost/analytics.d.ts +1 -0
  272. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  273. package/dist/storage/ai-cost/provider.js +3 -3
  274. package/dist/storage/ai-cost/types.d.ts +1 -1
  275. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  276. package/dist/storage/ai-cost/validation.d.ts.map +1 -1
  277. package/dist/storage/ai-limits/enforcement.js +2 -2
  278. package/dist/storage/ai-limits/in-memory.d.ts.map +1 -1
  279. package/dist/storage/ai-limits/provider.d.ts +7 -2
  280. package/dist/storage/ai-limits/provider.d.ts.map +1 -1
  281. package/dist/storage/ai-limits/provider.js +4 -2
  282. package/dist/storage/ai-limits/provider.js.map +1 -1
  283. package/dist/storage/ai-limits/types.d.ts +3 -0
  284. package/dist/storage/ai-limits/types.d.ts.map +1 -1
  285. package/dist/storage/ai-usage/record.d.ts.map +1 -1
  286. package/dist/storage/ai-usage/types.d.ts +8 -4
  287. package/dist/storage/ai-usage/types.d.ts.map +1 -1
  288. package/dist/storage/ai-usage/usage.d.ts.map +1 -1
  289. package/dist/storage/file-download-grants/in-memory.d.ts +11 -0
  290. package/dist/storage/file-download-grants/in-memory.d.ts.map +1 -0
  291. package/dist/storage/file-download-grants/index.d.ts +3 -0
  292. package/dist/storage/file-download-grants/index.d.ts.map +1 -0
  293. package/dist/storage/file-download-grants/record.d.ts +11 -0
  294. package/dist/storage/file-download-grants/record.d.ts.map +1 -0
  295. package/dist/storage/file-download-grants/types.d.ts +44 -0
  296. package/dist/storage/file-download-grants/types.d.ts.map +1 -0
  297. package/dist/storage/file-upload-sessions/provider.js +6 -6
  298. package/dist/storage/in-memory/index.d.ts +4 -0
  299. package/dist/storage/in-memory/index.d.ts.map +1 -1
  300. package/dist/storage/index.d.ts +5 -3
  301. package/dist/storage/index.d.ts.map +1 -1
  302. package/dist/storage/index.js +30 -30
  303. package/dist/storage/index.js.map +1 -1
  304. package/dist/storage/internal.d.ts +1 -0
  305. package/dist/storage/internal.d.ts.map +1 -1
  306. package/dist/storage/internal.js +8 -4
  307. package/dist/storage/internal.js.map +1 -1
  308. package/dist/storage/migrations/index.d.ts +1 -1
  309. package/dist/storage/migrations/index.d.ts.map +1 -1
  310. package/dist/storage/migrations/migrate-storage.d.ts +3 -3
  311. package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
  312. package/dist/storage/migrations/types.d.ts +7 -0
  313. package/dist/storage/migrations/types.d.ts.map +1 -1
  314. package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
  315. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
  316. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
  317. package/dist/storage/objects/query-preparation.d.ts +39 -0
  318. package/dist/storage/objects/query-preparation.d.ts.map +1 -0
  319. package/dist/storage/objects/types.d.ts +2 -0
  320. package/dist/storage/objects/types.d.ts.map +1 -1
  321. package/dist/storage/ontology/commits.d.ts +1 -6
  322. package/dist/storage/ontology/commits.d.ts.map +1 -1
  323. package/dist/storage/ontology/in-memory/index.d.ts +4 -2
  324. package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
  325. package/dist/storage/ontology/in-memory/materializations-state.d.ts +0 -2
  326. package/dist/storage/ontology/in-memory/materializations-state.d.ts.map +1 -1
  327. package/dist/storage/ontology/in-memory/materializations-work.d.ts +1 -3
  328. package/dist/storage/ontology/in-memory/materializations-work.d.ts.map +1 -1
  329. package/dist/storage/ontology/in-memory/materializations.d.ts +23 -57
  330. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  331. package/dist/storage/ontology/in-memory/outbox.d.ts +3 -2
  332. package/dist/storage/ontology/in-memory/outbox.d.ts.map +1 -1
  333. package/dist/storage/ontology/in-memory/replacement-plans.d.ts +104 -0
  334. package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -0
  335. package/dist/storage/ontology/in-memory/shared-state.d.ts +17 -2
  336. package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
  337. package/dist/storage/ontology/in-memory/source-roots.d.ts +3 -1
  338. package/dist/storage/ontology/in-memory/source-roots.d.ts.map +1 -1
  339. package/dist/storage/ontology/in-memory/sources.d.ts +1 -2
  340. package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
  341. package/dist/storage/ontology/in-memory/state-reader.d.ts +25 -0
  342. package/dist/storage/ontology/in-memory/state-reader.d.ts.map +1 -0
  343. package/dist/storage/ontology/index.d.ts +6 -3
  344. package/dist/storage/ontology/index.d.ts.map +1 -1
  345. package/dist/storage/ontology/materializations.d.ts +40 -59
  346. package/dist/storage/ontology/materializations.d.ts.map +1 -1
  347. package/dist/storage/ontology/outbox.d.ts +4 -6
  348. package/dist/storage/ontology/outbox.d.ts.map +1 -1
  349. package/dist/storage/ontology/provider-work.d.ts +114 -3
  350. package/dist/storage/ontology/provider-work.d.ts.map +1 -1
  351. package/dist/storage/ontology/provider.d.ts +14 -39
  352. package/dist/storage/ontology/provider.d.ts.map +1 -1
  353. package/dist/storage/ontology/provider.js +26 -12
  354. package/dist/storage/ontology/provider.js.map +1 -1
  355. package/dist/storage/ontology/replacement-plans.d.ts +103 -0
  356. package/dist/storage/ontology/replacement-plans.d.ts.map +1 -0
  357. package/dist/storage/ontology/sources.d.ts +0 -8
  358. package/dist/storage/ontology/sources.d.ts.map +1 -1
  359. package/dist/storage/operation-scope.d.ts.map +1 -1
  360. package/dist/storage/operation-scope.js +1 -1
  361. package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
  362. package/dist/storage/projection-runs/types.d.ts +2 -0
  363. package/dist/storage/projection-runs/types.d.ts.map +1 -1
  364. package/dist/storage/types.d.ts +2 -0
  365. package/dist/storage/types.d.ts.map +1 -1
  366. package/dist/storage/workflow-runs/provider.js +6 -6
  367. package/dist/syncs/index.js +24 -24
  368. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  369. package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
  370. package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
  371. package/dist/testing/file-download-grant-storage-contract.d.ts +9 -0
  372. package/dist/testing/file-download-grant-storage-contract.d.ts.map +1 -0
  373. package/dist/testing/index.d.ts +1 -0
  374. package/dist/testing/index.d.ts.map +1 -1
  375. package/dist/testing/index.js +2548 -1489
  376. package/dist/testing/index.js.map +14 -13
  377. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  378. package/dist/testing/materializer-storage-contract.d.ts +14 -0
  379. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  380. package/dist/testing/object-read-scope-contract.d.ts.map +1 -1
  381. package/dist/testing/ontology-contract-fixture.d.ts +5 -1
  382. package/dist/testing/ontology-contract-fixture.d.ts.map +1 -1
  383. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  384. package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
  385. package/dist/testing/queues-contract.d.ts.map +1 -1
  386. package/dist/webhooks/internal.js +20 -20
  387. package/dist/workers/index.js +15 -17
  388. package/dist/workers/index.js.map +3 -3
  389. package/dist/workers/queue-worker.d.ts +3 -2
  390. package/dist/workers/queue-worker.d.ts.map +1 -1
  391. package/dist/workflows/index.js +42 -41
  392. package/dist/workflows/index.js.map +1 -1
  393. package/package.json +7 -1
  394. package/src/actions/types/context.ts +5 -2
  395. package/src/blob-storage/download-urls.ts +138 -0
  396. package/src/blob-storage/execution.ts +32 -1
  397. package/src/blob-storage/internal.ts +1 -0
  398. package/src/execution/authorized-object-reader.ts +8 -1
  399. package/src/index.ts +25 -0
  400. package/src/lake-storage/in-memory.ts +38 -9
  401. package/src/lake-storage/index.ts +2 -0
  402. package/src/lake-storage/types.ts +30 -0
  403. package/src/maintenance/ontology-maintenance.ts +50 -23
  404. package/src/maintenance/types.ts +1 -4
  405. package/src/materialization/event-envelopes.ts +168 -0
  406. package/src/materialization/events.ts +40 -4
  407. package/src/materialization/index.ts +9 -1
  408. package/src/materializer/README.md +55 -10
  409. package/src/materializer/edits/commit.ts +3 -19
  410. package/src/materializer/edits/plan.ts +20 -71
  411. package/src/materializer/effective/build-events.ts +42 -136
  412. package/src/materializer/effective/vector-indexing.ts +2 -3
  413. package/src/materializer/effective/vectors.ts +2 -3
  414. package/src/materializer/execution/scope.ts +1 -38
  415. package/src/materializer/execution/work-executor.ts +21 -115
  416. package/src/materializer/execution/work-records.ts +0 -15
  417. package/src/materializer/projections/replace.ts +106 -63
  418. package/src/materializer/projections/replacement-plan.ts +73 -218
  419. package/src/materializer/shared/batching.ts +7 -0
  420. package/src/materializer/telemetry/append.ts +2 -14
  421. package/src/materializer/telemetry/plan.ts +6 -43
  422. package/src/models/audio/catalog.ts +90 -0
  423. package/src/models/audio/errors.ts +19 -0
  424. package/src/models/audio/file.ts +78 -0
  425. package/src/models/audio/runtime.ts +182 -0
  426. package/src/models/audio/types.ts +69 -0
  427. package/src/models/catalog.ts +52 -5
  428. package/src/models/definitions.ts +8 -1
  429. package/src/models/embedding-model.ts +12 -0
  430. package/src/models/events.ts +3 -0
  431. package/src/models/execution/README.md +20 -1
  432. package/src/models/execution/embedding.ts +5 -1
  433. package/src/models/execution/model-call-admission.ts +6 -1
  434. package/src/models/execution/model-call-limits.ts +21 -11
  435. package/src/models/execution/model-call-recorder.ts +1 -0
  436. package/src/models/execution/model-call-recovery.ts +1 -0
  437. package/src/models/execution/reranking.ts +137 -0
  438. package/src/models/execution/usage.ts +1 -0
  439. package/src/models/execution.ts +5 -1
  440. package/src/models/generation-types.ts +2 -0
  441. package/src/models/index.ts +32 -0
  442. package/src/models/pricing.ts +2 -1
  443. package/src/models/reranking-model.ts +114 -0
  444. package/src/objects/query/executor.ts +42 -2
  445. package/src/objects/query/explain.ts +8 -0
  446. package/src/objects/query/index.ts +1 -0
  447. package/src/objects/query/ir.ts +10 -0
  448. package/src/objects/query/normalize.ts +2 -0
  449. package/src/objects/query/planner.ts +12 -1
  450. package/src/objects/query/primary-id.ts +56 -0
  451. package/src/objects/query/reranking-executor.ts +91 -0
  452. package/src/objects/query/reranking-limits.ts +3 -0
  453. package/src/objects/query/reranking-query.ts +8 -0
  454. package/src/objects/query/validate.ts +33 -10
  455. package/src/objects/sdk/query-builder.ts +15 -2
  456. package/src/objects/sdk/query-executor.ts +2 -2
  457. package/src/objects/sdk/runtime-query-executor.ts +7 -4
  458. package/src/objects/vectors/README.md +14 -2
  459. package/src/objects/vectors/handle.ts +1 -1
  460. package/src/objects/vectors/indexing-dispatch.ts +83 -0
  461. package/src/objects/vectors/indexing-generate.ts +5 -1
  462. package/src/objects/vectors/profile.ts +2 -0
  463. package/src/objects/vectors/query.ts +21 -4
  464. package/src/objects/vectors/resolve-query.ts +9 -5
  465. package/src/objects/vectors/types.ts +3 -1
  466. package/src/ontology/builders.ts +22 -7
  467. package/src/ontology/index.ts +2 -0
  468. package/src/ontology/query-capabilities.ts +1 -1
  469. package/src/ontology/types.ts +21 -0
  470. package/src/ontology/validation/query.ts +57 -0
  471. package/src/ontology/vector-profiles.ts +1 -0
  472. package/src/query.ts +4 -0
  473. package/src/queues/in-memory.ts +54 -19
  474. package/src/queues/types.ts +4 -0
  475. package/src/runtime/host.ts +28 -1
  476. package/src/runtime/index.ts +1 -0
  477. package/src/runtime/internal.ts +1 -0
  478. package/src/runtime/public-origin.ts +33 -0
  479. package/src/runtime/sixb.ts +13 -2
  480. package/src/runtime/types.ts +12 -2
  481. package/src/storage/ai-cost/analytics.ts +2 -0
  482. package/src/storage/ai-cost/codec.ts +2 -1
  483. package/src/storage/ai-cost/types.ts +1 -0
  484. package/src/storage/ai-cost/validation.ts +21 -8
  485. package/src/storage/ai-limits/in-memory.ts +10 -2
  486. package/src/storage/ai-limits/provider.ts +29 -2
  487. package/src/storage/ai-limits/types.ts +3 -0
  488. package/src/storage/ai-usage/record.ts +9 -0
  489. package/src/storage/ai-usage/types.ts +8 -4
  490. package/src/storage/ai-usage/usage.ts +2 -0
  491. package/src/storage/file-download-grants/in-memory.ts +73 -0
  492. package/src/storage/file-download-grants/index.ts +8 -0
  493. package/src/storage/file-download-grants/record.ts +47 -0
  494. package/src/storage/file-download-grants/types.ts +48 -0
  495. package/src/storage/in-memory/index.ts +13 -2
  496. package/src/storage/index.ts +31 -13
  497. package/src/storage/internal.ts +1 -0
  498. package/src/storage/migrations/index.ts +1 -0
  499. package/src/storage/migrations/migrate-storage.ts +36 -12
  500. package/src/storage/migrations/types.ts +8 -0
  501. package/src/storage/objects/in-memory/query.ts +2 -0
  502. package/src/storage/objects/in-memory/selected-reader.ts +1 -0
  503. package/src/storage/objects/in-memory/storage.ts +1 -0
  504. package/src/storage/objects/query-preparation.ts +77 -0
  505. package/src/storage/objects/types.ts +2 -0
  506. package/src/storage/ontology/commits.ts +1 -6
  507. package/src/storage/ontology/in-memory/index.ts +28 -9
  508. package/src/storage/ontology/in-memory/materializations-finalization.ts +35 -68
  509. package/src/storage/ontology/in-memory/materializations-state.ts +0 -22
  510. package/src/storage/ontology/in-memory/materializations-work.ts +0 -45
  511. package/src/storage/ontology/in-memory/materializations.ts +172 -653
  512. package/src/storage/ontology/in-memory/outbox.ts +37 -29
  513. package/src/storage/ontology/in-memory/replacement-plans.ts +697 -0
  514. package/src/storage/ontology/in-memory/shared-state.ts +24 -2
  515. package/src/storage/ontology/in-memory/source-roots.ts +7 -2
  516. package/src/storage/ontology/in-memory/sources.ts +7 -33
  517. package/src/storage/ontology/in-memory/state-reader.ts +245 -0
  518. package/src/storage/ontology/index.ts +19 -13
  519. package/src/storage/ontology/materializations.ts +45 -74
  520. package/src/storage/ontology/outbox.ts +4 -7
  521. package/src/storage/ontology/provider-header-validation.ts +0 -57
  522. package/src/storage/ontology/provider-work.ts +381 -90
  523. package/src/storage/ontology/provider.ts +74 -171
  524. package/src/storage/ontology/replacement-plans.ts +117 -0
  525. package/src/storage/ontology/sources.ts +0 -12
  526. package/src/storage/operation-scope.ts +33 -1
  527. package/src/storage/projection-runs/in-memory.ts +7 -1
  528. package/src/storage/projection-runs/types.ts +2 -0
  529. package/src/storage/types.ts +2 -0
  530. package/src/testing/ai-cost-storage-contract.ts +1 -0
  531. package/src/testing/ai-limit-storage-contract.ts +62 -0
  532. package/src/testing/ai-usage-storage-contract.ts +31 -0
  533. package/src/testing/file-download-grant-storage-contract.ts +139 -0
  534. package/src/testing/index.ts +4 -0
  535. package/src/testing/lake-storage-contract.ts +87 -1
  536. package/src/testing/materializer-storage-contract.ts +1008 -1
  537. package/src/testing/object-read-scope-contract.ts +1 -0
  538. package/src/testing/ontology-contract-fixture.ts +11 -87
  539. package/src/testing/ontology-storage-contract.ts +70 -39
  540. package/src/testing/projection-run-storage-contract.ts +14 -0
  541. package/src/testing/queues-contract.ts +59 -0
  542. package/src/workers/queue-worker.ts +19 -16
  543. package/dist/chunk-3c90jvfj.js.map +0 -15
  544. package/dist/chunk-3nx8vj5a.js.map +0 -12
  545. package/dist/chunk-7ytf06d3.js +0 -113
  546. package/dist/chunk-7ytf06d3.js.map +0 -10
  547. package/dist/chunk-a0073121.js.map +0 -12
  548. package/dist/chunk-fjw417jf.js.map +0 -62
  549. package/dist/chunk-g4rbm4a6.js.map +0 -15
  550. package/dist/chunk-hgqpcmyr.js.map +0 -12
  551. package/dist/chunk-jgwb25gc.js.map +0 -12
  552. package/dist/chunk-k4kkp58d.js.map +0 -11
  553. package/dist/chunk-ky7zpbtt.js.map +0 -19
  554. package/dist/chunk-mdnw7nj8.js.map +0 -15
  555. package/dist/chunk-py2dw8cw.js.map +0 -17
  556. package/dist/chunk-s3csryxe.js.map +0 -11
  557. package/dist/chunk-xnx96gfy.js.map +0 -15
  558. package/dist/chunk-z708gemf.js.map +0 -50
  559. package/dist/materializer/execution/plan-stream.d.ts +0 -8
  560. package/dist/materializer/execution/plan-stream.d.ts.map +0 -1
  561. package/src/materializer/execution/plan-stream.ts +0 -121
  562. /package/dist/{chunk-q3grgzp1.js.map → chunk-23xs4qp9.js.map} +0 -0
  563. /package/dist/{chunk-vef6qa14.js.map → chunk-2am3db31.js.map} +0 -0
  564. /package/dist/{chunk-fj1dvp37.js.map → chunk-2vhg6ysa.js.map} +0 -0
  565. /package/dist/{chunk-p0nbkys4.js.map → chunk-33saed7g.js.map} +0 -0
  566. /package/dist/{chunk-mmac1mp6.js.map → chunk-52c5zb0z.js.map} +0 -0
  567. /package/dist/{chunk-8fjmqjyx.js.map → chunk-5be2ath4.js.map} +0 -0
  568. /package/dist/{chunk-2fv8sajb.js.map → chunk-5thzcb8g.js.map} +0 -0
  569. /package/dist/{chunk-1jvq82rp.js.map → chunk-9g6jz9kk.js.map} +0 -0
  570. /package/dist/{chunk-8w27xf9e.js.map → chunk-a7er86jd.js.map} +0 -0
  571. /package/dist/{chunk-bxx3ms5t.js.map → chunk-c2rga5cx.js.map} +0 -0
  572. /package/dist/{chunk-dsfw1bdr.js.map → chunk-cnb5kv05.js.map} +0 -0
  573. /package/dist/{chunk-n5t4mq6z.js.map → chunk-e67ynxcr.js.map} +0 -0
  574. /package/dist/{chunk-6q7c68yx.js.map → chunk-f1xh7a32.js.map} +0 -0
  575. /package/dist/{chunk-7jc21943.js.map → chunk-gf7yht60.js.map} +0 -0
  576. /package/dist/{chunk-ffwvdgk1.js.map → chunk-jjrn5v0p.js.map} +0 -0
  577. /package/dist/{chunk-r5sc1d2b.js.map → chunk-jnfxmr3f.js.map} +0 -0
  578. /package/dist/{chunk-y0zmae99.js.map → chunk-k4g51s47.js.map} +0 -0
  579. /package/dist/{chunk-drz59ve0.js.map → chunk-rx7h5fdx.js.map} +0 -0
  580. /package/dist/{chunk-yfppyaty.js.map → chunk-sk0hcjsz.js.map} +0 -0
  581. /package/dist/{chunk-qne45xqq.js.map → chunk-svabwqdq.js.map} +0 -0
  582. /package/dist/{chunk-xr7y35yj.js.map → chunk-t9shqx3w.js.map} +0 -0
  583. /package/dist/{chunk-adbve9zt.js.map → chunk-vre348sb.js.map} +0 -0
  584. /package/dist/{chunk-a4g5yjm0.js.map → chunk-w9yycd3t.js.map} +0 -0
  585. /package/dist/{chunk-wd34wnsy.js.map → chunk-xcy5ddha.js.map} +0 -0
@@ -0,0 +1,114 @@
1
+ import type { ModelDefinition } from "./definitions"
2
+ import { ModelProviderError } from "./errors"
3
+ import type { ModelProviderIds, ModelRoute, ModelUsage } from "./events"
4
+ import type { ModelCostEstimator, ModelReportedCost } from "./pricing"
5
+
6
+ export interface RerankingModelDefinition extends ModelDefinition {
7
+ readonly kind: "reranking"
8
+ }
9
+
10
+ /** Serializable identity; the server resolves its own registered binding. */
11
+ export interface RerankingModelRef {
12
+ readonly providerId: string
13
+ readonly modelId: string
14
+ readonly definition: RerankingModelDefinition
15
+ }
16
+
17
+ export interface RerankingModelRequest {
18
+ readonly query: string
19
+ readonly documents: readonly string[]
20
+ readonly signal?: AbortSignal
21
+ }
22
+
23
+ export interface RerankingModelResponseMetadata {
24
+ readonly usage?: ModelUsage
25
+ readonly providerIds?: ModelProviderIds
26
+ readonly responseModelId?: string
27
+ readonly reportedCost?: ModelReportedCost
28
+ readonly route?: ModelRoute
29
+ }
30
+
31
+ export interface RerankingResult {
32
+ /** Position in the original documents array. */
33
+ readonly index: number
34
+ /** Provider relevance score, not a calibrated probability. */
35
+ readonly score: number
36
+ }
37
+
38
+ export interface RerankingModelResult extends RerankingModelResponseMetadata {
39
+ /** One result per input document; Sixb validates completeness and orders by score. */
40
+ readonly results: readonly RerankingResult[]
41
+ }
42
+
43
+ export interface RerankingModel extends RerankingModelRef {
44
+ readonly costEstimator?: ModelCostEstimator
45
+ resolve?(): Promise<RerankingModel>
46
+ rerank(request: RerankingModelRequest): Promise<RerankingModelResult>
47
+ }
48
+
49
+ export function assertRerankingModel(model: RerankingModel): void {
50
+ if (
51
+ !model ||
52
+ typeof model !== "object" ||
53
+ typeof model.rerank !== "function" ||
54
+ !validIdentifier(model.providerId) ||
55
+ !validIdentifier(model.modelId) ||
56
+ model.definition?.kind !== "reranking" ||
57
+ model.definition.providerId !== model.providerId ||
58
+ model.definition.modelId !== model.modelId
59
+ ) {
60
+ throw new TypeError("[Sixb] Expected a RerankingModel with a valid identity and rerank method.")
61
+ }
62
+ }
63
+
64
+ export function validateRerankingResults(
65
+ results: unknown,
66
+ documentCount: number
67
+ ): RerankingResult[] {
68
+ if (!Array.isArray(results) || results.length !== documentCount) {
69
+ throw new TypeError("[SixbModels] Reranking must return one result per document.")
70
+ }
71
+ const seen = new Set<number>()
72
+ const validated = results.map((result: unknown) => {
73
+ if (!result || typeof result !== "object") {
74
+ throw new TypeError("[SixbModels] Invalid reranking result.")
75
+ }
76
+ const index: unknown = Reflect.get(result, "index")
77
+ const score: unknown = Reflect.get(result, "score")
78
+ if (
79
+ typeof index !== "number" ||
80
+ !Number.isSafeInteger(index) ||
81
+ index < 0 ||
82
+ index >= documentCount ||
83
+ seen.has(index) ||
84
+ typeof score !== "number" ||
85
+ !Number.isFinite(score)
86
+ ) {
87
+ throw new TypeError("[SixbModels] Reranking requires unique valid indices and finite scores.")
88
+ }
89
+ seen.add(index)
90
+ return { index, score }
91
+ })
92
+ // Stable ties preserve candidate rank, independent of the provider's response ordering.
93
+ return validated.sort((left, right) => right.score - left.score || left.index - right.index)
94
+ }
95
+
96
+ function validIdentifier(value: unknown): value is string {
97
+ return typeof value === "string" && value.length > 0 && value.trim() === value
98
+ }
99
+
100
+ export class RerankingModelResponseError extends ModelProviderError {
101
+ constructor(
102
+ message: string,
103
+ providerId: string,
104
+ modelId: string,
105
+ readonly metadata: RerankingModelResponseMetadata,
106
+ options?: { cause?: unknown }
107
+ ) {
108
+ super(message, providerId, modelId, {
109
+ code: "invalid_reranking_response",
110
+ retryable: false,
111
+ cause: options?.cause,
112
+ })
113
+ }
114
+ }
@@ -1,6 +1,6 @@
1
1
  import { type AuthorizationContext, assertAuthorized } from "../../authorization"
2
2
  import type { RuntimeAuthorization } from "../../execution/types"
3
- import type { EmbeddingModelCatalog } from "../../models/catalog"
3
+ import type { EmbeddingModelCatalog, RerankingModelCatalog } from "../../models/catalog"
4
4
  import type { OntologyRegistry } from "../../ontology"
5
5
  import type {
6
6
  CountObjectsResult,
@@ -34,6 +34,9 @@ import type {
34
34
  } from "./ir"
35
35
  import { normalizeObjectQuery } from "./normalize"
36
36
  import { type ObjectQueryPlan, type ObjectQueryPlanningOptions, planObjectQuery } from "./planner"
37
+ import { usePrimaryIdLookups } from "./primary-id"
38
+ import { rerankObjectCandidates } from "./reranking-executor"
39
+ import { findQueryReranking } from "./reranking-query"
37
40
  import { compareQueryScalarValues, queryScalarValuesEqual } from "./scalar-values"
38
41
  import {
39
42
  type ObjectQueryValidationIssue,
@@ -54,6 +57,7 @@ export interface QueryExecutorOptions
54
57
  > {
55
58
  ontology: OntologyRegistry
56
59
  embeddingModels?: EmbeddingModelCatalog
60
+ rerankingModels?: RerankingModelCatalog
57
61
  storage: ObjectReadStorage
58
62
  maxLimit?: number
59
63
  maxPageSize?: number
@@ -178,6 +182,37 @@ export async function executeObjectQuery(
178
182
  throw new ObjectQueryPlanningError(plan.issues)
179
183
  }
180
184
 
185
+ if (plan.mode === "pipeline") {
186
+ const reranking = findQueryReranking(validated.query)
187
+ if (!reranking || reranking.input.kind !== "vector") {
188
+ throw new ObjectQueryExecutionError(
189
+ "invalid_rerank_input",
190
+ "Reranking requires vector candidates."
191
+ )
192
+ }
193
+ // Resolve the allowlisted server binding before paying for query embedding.
194
+ const model = options.rerankingModels?.getByRef(reranking.model)?.model
195
+ if (!model) {
196
+ throw new ObjectQueryExecutionError(
197
+ "reranking_model_unavailable",
198
+ `Reranking model '${reranking.model.provider}/${reranking.model.modelId}' is not configured in models.reranking.`
199
+ )
200
+ }
201
+ const candidates = await executeObjectQuery(
202
+ { ...input, query: reranking.input, includeTotal: false },
203
+ options
204
+ )
205
+ const result = await rerankObjectCandidates({
206
+ query: validated.query,
207
+ vector: reranking.input,
208
+ candidates: candidates.objects,
209
+ model,
210
+ signal: input.signal,
211
+ includeTotal: input.includeTotal,
212
+ })
213
+ return { ...result, plan }
214
+ }
215
+
181
216
  if (plan.mode === "pushdown") {
182
217
  if (!options.storage.queryObjects) {
183
218
  throw new ObjectQueryPlanningError(plan.providerIssues)
@@ -386,6 +421,7 @@ export async function facetObjects(
386
421
  const maxRows = options.maxFallbackRows ?? DEFAULT_MAX_FALLBACK_ROWS
387
422
  const evaluation = await evaluateFallbackQuery(input.projectId, aggregateQuery, options, maxRows)
388
423
  return {
424
+ total: evaluation.entries.length,
389
425
  facets: buildFacetResults(
390
426
  evaluation.entries.map((entry) => entry.row),
391
427
  facets
@@ -432,7 +468,7 @@ function expandPushdownQuery(
432
468
  // disagree) cleanly stays on the fallback.
433
469
  const ctx: ExpansionResolutionContext = { ontology, maxExpansionFanout }
434
470
  const annotated = resolveExpansions(query, ctx)
435
- const expanded = expandIncludeSubtypes(annotated, ontology)
471
+ const expanded = usePrimaryIdLookups(expandIncludeSubtypes(annotated, ontology), ontology)
436
472
  if (expanded === annotated) return annotated
437
473
 
438
474
  const plan = planObjectQuery(expanded, { ...planning, capabilities, allowFallback: false })
@@ -465,6 +501,7 @@ function resolveExpansions(query: ObjectQuery, ctx: ExpansionResolutionContext):
465
501
  case "filter":
466
502
  case "text":
467
503
  case "vector":
504
+ case "rerank":
468
505
  case "traverse":
469
506
  case "sort":
470
507
  case "limit":
@@ -581,6 +618,7 @@ function expandIncludeSubtypes(query: ObjectQuery, ontology: OntologyRegistry):
581
618
  case "filter":
582
619
  case "text":
583
620
  case "vector":
621
+ case "rerank":
584
622
  case "traverse":
585
623
  case "sort":
586
624
  case "limit":
@@ -688,6 +726,7 @@ async function evaluateFallbackQuery(
688
726
  }
689
727
  case "text":
690
728
  case "vector":
729
+ case "rerank":
691
730
  case "traverse":
692
731
  case "set":
693
732
  throw new ObjectQueryExecutionError(
@@ -1186,6 +1225,7 @@ function stripOuterRowShape(query: ObjectQuery): ObjectQuery {
1186
1225
  case "page":
1187
1226
  case "project":
1188
1227
  case "sort":
1228
+ case "rerank":
1189
1229
  // `expand` is output-shaping: it attaches links but does not change which
1190
1230
  // objects match, so aggregates (count/exists/facets) ignore it.
1191
1231
  case "expand":
@@ -145,6 +145,14 @@ function buildExplainNode(query: ObjectQuery, path: string): ObjectQueryExplainN
145
145
  },
146
146
  children: [buildExplainNode(query.input, `${path}.input`)],
147
147
  }
148
+ case "rerank":
149
+ return {
150
+ path,
151
+ kind: query.kind,
152
+ summary: `rerank ${query.model.provider}/${query.model.modelId}`,
153
+ details: { model: query.model },
154
+ children: [buildExplainNode(query.input, `${path}.input`)],
155
+ }
148
156
  case "set":
149
157
  return {
150
158
  path,
@@ -47,6 +47,7 @@ export type {
47
47
  ObjectQueryPredicateNot,
48
48
  ObjectQueryProject,
49
49
  ObjectQueryRefs,
50
+ ObjectQueryRerank,
50
51
  ObjectQueryResultShape,
51
52
  ObjectQuerySet,
52
53
  ObjectQuerySetOperation,
@@ -5,6 +5,8 @@
5
5
  * storage backend. Providers can push down the subset they support, while the
6
6
  * core planner decides whether a bounded fallback is acceptable.
7
7
  */
8
+
9
+ import type { ModelRef } from "../../models/catalog"
8
10
  import type { ObjectRef } from "../../ontology/refs"
9
11
 
10
12
  export type ObjectQueryDirection = "outgoing" | "incoming"
@@ -29,6 +31,7 @@ export type ObjectQuery =
29
31
  | ObjectQueryFilter
30
32
  | ObjectQueryText
31
33
  | ObjectQueryVector
34
+ | ObjectQueryRerank
32
35
  | ObjectQueryTraverse
33
36
  | ObjectQuerySet
34
37
  | ObjectQuerySort
@@ -102,6 +105,13 @@ export interface ObjectQueryTraverse {
102
105
  sourceObjectTypeId?: string
103
106
  }
104
107
 
108
+ /** Explicit server-side reordering of a bounded vector candidate set. */
109
+ export interface ObjectQueryRerank {
110
+ kind: "rerank"
111
+ input: ObjectQuery
112
+ model: ModelRef
113
+ }
114
+
105
115
  export interface ObjectQuerySet {
106
116
  kind: "set"
107
117
  op: ObjectQuerySetOperation
@@ -46,6 +46,8 @@ function normalizeNode(query: ObjectQuery): ObjectQuery {
46
46
  }
47
47
  case "traverse":
48
48
  return { ...query, input: normalizeObjectQuery(query.input) }
49
+ case "rerank":
50
+ return { ...query, model: { ...query.model }, input: normalizeObjectQuery(query.input) }
49
51
  case "set":
50
52
  return normalizeSet(query)
51
53
  case "sort":
@@ -1,8 +1,9 @@
1
1
  import type { ObjectQueryCapabilities, ObjectQueryScalarOperation } from "../../storage"
2
2
  import type { ObjectQueryPlanningIssue } from "./errors"
3
3
  import type { ObjectExpansion, ObjectQuery, ObjectQueryPredicate, ObjectQuerySortField } from "./ir"
4
+ import { findQueryReranking } from "./reranking-query"
4
5
 
5
- export type ObjectQueryPlanMode = "pushdown" | "fallback" | "rejected"
6
+ export type ObjectQueryPlanMode = "pushdown" | "fallback" | "pipeline" | "rejected"
6
7
  export type ObjectQueryProviderOperation =
7
8
  | "queryObjects"
8
9
  | "countObjects"
@@ -54,6 +55,15 @@ export function planObjectQuery(
54
55
  options: ObjectQueryPlanningOptions
55
56
  ): ObjectQueryPlan {
56
57
  const operation = options.operation ?? "queryObjects"
58
+ const reranking = findQueryReranking(query)
59
+ if (reranking) {
60
+ const candidatePlan = planObjectQuery(reranking.input, options)
61
+ return {
62
+ ...candidatePlan,
63
+ query,
64
+ mode: candidatePlan.mode === "rejected" ? "rejected" : "pipeline",
65
+ }
66
+ }
57
67
  // Providers get first refusal. Fallback is considered only after the provider
58
68
  // declares that pushdown is unavailable or incomplete for this query.
59
69
  const providerIssues = collectProviderIssues(query, options.capabilities, {
@@ -204,6 +214,7 @@ function collectNodeProviderIssues(
204
214
  return
205
215
  case "text":
206
216
  case "vector":
217
+ case "rerank":
207
218
  case "project":
208
219
  collectNodeProviderIssues(query.input, `${path}.input`, capabilities, issues)
209
220
  return
@@ -0,0 +1,56 @@
1
+ import type { OntologyDefinitionCatalog } from "../../ontology/registry"
2
+ import type { ObjectQuery, ObjectQueryPredicate } from "./ir"
3
+
4
+ /** Exact identity predicates can start from primary-key lookups. Keep the original filter:
5
+ * the optimization must not remove other conditions or expose a projected-out property.
6
+ * Only a direct start is rewritten; filters after bounds/projections keep their semantics. */
7
+ export function usePrimaryIdLookups(
8
+ query: ObjectQuery,
9
+ ontology: OntologyDefinitionCatalog
10
+ ): ObjectQuery {
11
+ if (query.kind === "set")
12
+ return { ...query, inputs: query.inputs.map((input) => usePrimaryIdLookups(input, ontology)) }
13
+ if (!("input" in query)) return query
14
+ const input = usePrimaryIdLookups(query.input, ontology)
15
+ if (query.kind === "filter" && input.kind === "start" && !input.includeSubtypes) {
16
+ const propertyId = ontology.getPrimaryPropertyId(input.objectTypeId)
17
+ const ids = primaryIds(query.predicate, propertyId)
18
+ if (ids?.length && ids.length <= 1000)
19
+ return {
20
+ ...query,
21
+ input: {
22
+ kind: "refs",
23
+ refs: [...new Set(ids)]
24
+ .sort()
25
+ .map((primaryId) => ({ objectTypeId: input.objectTypeId, primaryId })),
26
+ },
27
+ }
28
+ }
29
+ return input === query.input ? query : { ...query, input }
30
+ }
31
+
32
+ function primaryIds(
33
+ predicate: ObjectQueryPredicate,
34
+ propertyId: string
35
+ ): readonly string[] | undefined {
36
+ if (predicate.op === "and") {
37
+ for (const item of predicate.items) {
38
+ const ids = primaryIds(item, propertyId)
39
+ if (ids) return ids
40
+ }
41
+ return undefined
42
+ }
43
+ if (
44
+ predicate.op === "eq" &&
45
+ predicate.propertyId === propertyId &&
46
+ typeof predicate.value === "string"
47
+ )
48
+ return [predicate.value]
49
+ if (
50
+ predicate.op === "in" &&
51
+ predicate.propertyId === propertyId &&
52
+ predicate.values.every((value) => typeof value === "string")
53
+ )
54
+ return predicate.values as readonly string[]
55
+ return undefined
56
+ }
@@ -0,0 +1,91 @@
1
+ import type { RerankingModel } from "../../models/reranking-model"
2
+ import { validateRerankingResults } from "../../models/reranking-model"
3
+ import type { ObjectRow, QueryObjectsResult } from "../../storage"
4
+ import { vectorSources } from "../vectors/profile"
5
+ import { ObjectQueryExecutionError } from "./errors"
6
+ import type { ObjectQuery, ObjectQueryVector } from "./ir"
7
+ import { MAX_RERANK_INPUT_BYTES } from "./reranking-limits"
8
+
9
+ /** Receives only rows from the authorized reader; never rereads unmasked storage. */
10
+ export async function rerankObjectCandidates(input: {
11
+ readonly query: ObjectQuery
12
+ readonly vector: ObjectQueryVector
13
+ readonly candidates: readonly ObjectRow[]
14
+ readonly model: RerankingModel
15
+ readonly signal?: AbortSignal
16
+ readonly includeTotal?: boolean
17
+ }): Promise<QueryObjectsResult> {
18
+ const { vector, candidates, model, signal } = input
19
+ if (typeof vector.vector !== "string" || !vector.source) {
20
+ throw new ObjectQueryExecutionError(
21
+ "invalid_rerank_input",
22
+ "Reranking requires a validated text vector query."
23
+ )
24
+ }
25
+ signal?.throwIfAborted()
26
+ if (candidates.length > vector.k) {
27
+ throw new ObjectQueryExecutionError(
28
+ "rerank_candidate_limit_exceeded",
29
+ "Storage exceeded the admitted vector candidate bound."
30
+ )
31
+ }
32
+ const source = vector.source
33
+ const documents = candidates.map((row) => vectorSources(source, row.properties).text)
34
+ const encoder = new TextEncoder()
35
+ const bytes =
36
+ encoder.encode(vector.vector).byteLength +
37
+ documents.reduce((sum, text) => sum + encoder.encode(text).byteLength, 0)
38
+ if (bytes > MAX_RERANK_INPUT_BYTES) {
39
+ throw new ObjectQueryExecutionError(
40
+ "rerank_input_limit_exceeded",
41
+ "Reranking input exceeds 1 MiB. Use fewer candidates or shorter profile sources."
42
+ )
43
+ }
44
+
45
+ const results =
46
+ documents.length === 0
47
+ ? []
48
+ : (await model.rerank({ query: vector.vector, documents, signal })).results
49
+ signal?.throwIfAborted()
50
+ const ranking = validateRerankingResults(results, candidates.length)
51
+ const rows = ranking.map(({ index, score }) => ({ ...candidates[index]!, score }))
52
+ const shaped = shapeRerankedRows(input.query, rows)
53
+ return {
54
+ objects: shaped.rows,
55
+ hasMore: shaped.hasMore,
56
+ ...(input.includeTotal === false ? {} : { total: shaped.total }),
57
+ }
58
+ }
59
+
60
+ function shapeRerankedRows(
61
+ query: ObjectQuery,
62
+ rows: readonly ObjectRow[]
63
+ ): { rows: readonly ObjectRow[]; total: number; hasMore: boolean } {
64
+ if (query.kind === "rerank") return { rows, total: rows.length, hasMore: false }
65
+ if (query.kind === "limit") {
66
+ const input = shapeRerankedRows(query.input, rows)
67
+ return {
68
+ rows: input.rows.slice(0, query.limit),
69
+ total: input.total,
70
+ hasMore: input.hasMore || query.limit < input.rows.length,
71
+ }
72
+ }
73
+ if (query.kind === "project") {
74
+ const input = shapeRerankedRows(query.input, rows)
75
+ if (!query.properties) return input
76
+ const properties = new Set(query.properties)
77
+ return {
78
+ ...input,
79
+ rows: input.rows.map((row) => ({
80
+ ...row,
81
+ properties: Object.fromEntries(
82
+ Object.entries(row.properties).filter(([key]) => properties.has(key))
83
+ ),
84
+ })),
85
+ }
86
+ }
87
+ throw new ObjectQueryExecutionError(
88
+ "invalid_rerank_composition",
89
+ "Only limit and project may follow reranking."
90
+ )
91
+ }
@@ -0,0 +1,3 @@
1
+ // Bound synchronous inference independently of the storage's vector-search capacity.
2
+ export const MAX_RERANK_CANDIDATES = 100
3
+ export const MAX_RERANK_INPUT_BYTES = 1_048_576
@@ -0,0 +1,8 @@
1
+ import type { ObjectQuery, ObjectQueryRerank } from "./ir"
2
+
3
+ /** Validation permits output shaping only after the explicit reranking stage. */
4
+ export function findQueryReranking(query: ObjectQuery): ObjectQueryRerank | undefined {
5
+ if (query.kind === "rerank") return query
6
+ if (query.kind === "limit" || query.kind === "project") return findQueryReranking(query.input)
7
+ return undefined
8
+ }
@@ -31,6 +31,7 @@ import type {
31
31
  QueryScalarKind,
32
32
  } from "./ir"
33
33
  import { normalizeObjectQuery } from "./normalize"
34
+ import { MAX_RERANK_CANDIDATES } from "./reranking-limits"
34
35
 
35
36
  export interface ObjectQueryValidationIssue {
36
37
  path: string
@@ -223,7 +224,7 @@ function validateVectorComposition(query: ObjectQuery, ctx: QueryValidationConte
223
224
  path: "$",
224
225
  code: "vector.composition",
225
226
  message:
226
- "Vector profiles support one top-k over one concrete type, with filters before ranking and optional limit/project after it.",
227
+ "Vector profiles support one top-k over one concrete type, with filters, traversals or sets before ranking, optional reranking, then limit/project.",
227
228
  })
228
229
  }
229
230
 
@@ -373,6 +374,37 @@ function dispatchQueryNode(
373
374
  ),
374
375
  }
375
376
  }
377
+ case "rerank": {
378
+ const input = validateQueryNode(query.input, `${path}.input`, ctx)
379
+ if (
380
+ input.query.kind !== "vector" ||
381
+ typeof input.query.vector !== "string" ||
382
+ input.query.k > MAX_RERANK_CANDIDATES
383
+ ) {
384
+ addIssue(
385
+ ctx,
386
+ path,
387
+ "invalid_rerank_input",
388
+ `Reranking requires a text vector query with k at most ${MAX_RERANK_CANDIDATES}, before limit or project.`
389
+ )
390
+ }
391
+ if (
392
+ typeof query.model?.provider !== "string" ||
393
+ !query.model.provider.trim() ||
394
+ query.model.provider.trim() !== query.model.provider ||
395
+ typeof query.model.modelId !== "string" ||
396
+ !query.model.modelId.trim() ||
397
+ query.model.modelId.trim() !== query.model.modelId
398
+ ) {
399
+ addIssue(
400
+ ctx,
401
+ path,
402
+ "invalid_rerank_model",
403
+ "Reranking requires an explicit provider and model ID."
404
+ )
405
+ }
406
+ return { ...input, query: { ...query, model: { ...query.model }, input: input.query } }
407
+ }
376
408
  case "set":
377
409
  return validateSet(query.inputs, query.op, path, ctx)
378
410
  case "sort": {
@@ -923,15 +955,6 @@ function validateVectorProfileQuery(
923
955
  )
924
956
  return query
925
957
  }
926
- let input = query.input
927
- while (input.kind === "filter") input = input.input
928
- if (input.kind !== "start" || input.includeSubtypes)
929
- addIssue(
930
- ctx,
931
- path,
932
- "unsupported_vector_composition",
933
- "Vector profile input must be a type with optional filters."
934
- )
935
958
  const objectType = types[0]!
936
959
  const profile =
937
960
  query.profile === undefined ? undefined : objectType.search?.vectors?.[query.profile]
@@ -6,6 +6,8 @@
6
6
  * `ObjectQueryExecutor` — the server runtime executor or the HTTP client
7
7
  * executor — so the same builder serves both sides.
8
8
  */
9
+
10
+ import type { RerankingModelRef } from "../../models/reranking-model"
9
11
  import { OntologyValidationError } from "../../ontology/errors"
10
12
  import type { LinkToken, ObjectTypeWithPropertyTokens, PropertyToken } from "../../ontology/tokens"
11
13
  import { RuntimeError } from "../../runtime/errors"
@@ -16,7 +18,7 @@ import type {
16
18
  ObjectExpandOptions,
17
19
  ObjectQueryBuilder,
18
20
  ObjectQueryFacetInput,
19
- ObjectQueryFacetResult,
21
+ ObjectQueryFacetsResult,
20
22
  ObjectQueryListOptions,
21
23
  ObjectWhereBuilder,
22
24
  ObjectWhereClause,
@@ -118,6 +120,17 @@ class ObjectQueryBuilderImpl<TObjectType extends ObjectTypeWithPropertyTokens> {
118
120
  })
119
121
  }
120
122
 
123
+ rerank(options: { model: RerankingModelRef }): ObjectQueryBuilder<TObjectType> {
124
+ if (options.model?.definition?.kind !== "reranking") {
125
+ throw new TypeError("[Sixb] rerank() requires an explicit reranking model.")
126
+ }
127
+ return this.withQuery({
128
+ kind: "rerank",
129
+ input: this.ir,
130
+ model: { provider: options.model.providerId, modelId: options.model.modelId },
131
+ })
132
+ }
133
+
121
134
  traverse(
122
135
  link: LinkToken<TObjectType["id"], string, string>,
123
136
  options?: { direction?: "outgoing" }
@@ -269,7 +282,7 @@ class ObjectQueryBuilderImpl<TObjectType extends ObjectTypeWithPropertyTokens> {
269
282
 
270
283
  async facets(
271
284
  input: readonly ObjectQueryFacetInput<TObjectType>[]
272
- ): Promise<ObjectQueryFacetResult[]> {
285
+ ): Promise<ObjectQueryFacetsResult> {
273
286
  return this.params.executor.facets(
274
287
  this.ir,
275
288
  input.map((facet) => ({
@@ -5,7 +5,7 @@
5
5
  * runtime implements this against storage, and `@sixb/client` implements it
6
6
  * against the HTTP query routes, so both share one builder.
7
7
  */
8
- import type { ObjectQueryFacetResult } from "../../runtime/types"
8
+ import type { ObjectQueryFacetsResult } from "../../runtime/types"
9
9
  import type { ObjectQueryExplanation } from "../query/explain"
10
10
  import type { ObjectQuery } from "../query/ir"
11
11
  import type { ValidatedObjectQuery } from "../query/validate"
@@ -55,7 +55,7 @@ export interface ObjectQueryExecutor {
55
55
  facets(
56
56
  query: ObjectQuery,
57
57
  facets: readonly ObjectQueryExecutorFacetRequest[]
58
- ): Promise<ObjectQueryFacetResult[]>
58
+ ): Promise<ObjectQueryFacetsResult>
59
59
  /** Validation requires ontology access and is unavailable on remote executors. */
60
60
  validate?(query: ObjectQuery): ValidatedObjectQuery
61
61
  /** Explanation requires ontology access and is unavailable on remote executors. */
@@ -46,10 +46,13 @@ export function createRuntimeQueryExecutor(params: {
46
46
 
47
47
  async facets(query: ObjectQuery, facets: readonly ObjectQueryExecutorFacetRequest[]) {
48
48
  const result = await objectReader.facet({ query, facets })
49
- return result.facets.map((facet) => ({
50
- propertyId: facet.propertyId,
51
- buckets: [...facet.buckets],
52
- }))
49
+ return {
50
+ total: result.total,
51
+ facets: result.facets.map((facet) => ({
52
+ propertyId: facet.propertyId,
53
+ buckets: [...facet.buckets],
54
+ })),
55
+ }
53
56
  },
54
57
 
55
58
  validate(query: ObjectQuery) {
@@ -2,9 +2,18 @@
2
2
 
3
3
  A named profile identifies a derived representation, separate from object properties.
4
4
 
5
+ Indexing sends embedding purpose `document`; search sends `query`. The execution wrapper preserves
6
+ that role through model resolution, admission and accounting. Symmetric providers may ignore it.
7
+
8
+ Vector candidates may come from filters, traversals, explicit refs or set operations. Canonical
9
+ validation requires one concrete result type and admits every intermediate type, edge and source
10
+ property. Model lookup uses that resolved result type, not the query's initial type. SQL ranks the
11
+ eligible set after link and property authorization; it never filters a global top-k afterward.
12
+
5
13
  ```text
6
14
  Effective object change → invalidate stale vector + persist latest intent (one transaction)
7
- ProjectionWorker → durable queue → project AI admission → provider → save result → fenced commit
15
+ Commit wake-up (or API maintenance pass) → durable queue
16
+ ProjectionWorker → project AI admission → provider → save result → fenced commit
8
17
  ```
9
18
 
10
19
  `materializer/effective/vector-indexing.ts` compares effective source fingerprints after projection
@@ -14,7 +23,10 @@ There is no historical scan or configuration-only backfill.
14
23
 
15
24
  The queue owns delivery leases. Ontology storage owns intent keyed by project/object/profile, plus
16
25
  its generation id and `pending → running → ready` state. Dispatch has a separate due time so long
17
- queues cannot starve later entries. Reconciliation can enqueue the same generation safely.
26
+ queues cannot starve later entries. `indexing-dispatch.ts` enqueues due intent after every commit
27
+ in the committing process and pushes its due time 30 seconds out; the API's maintenance pass
28
+ drains the same path, so intent a crash left undispatched waits at most one pass. Enqueueing the
29
+ same generation twice is safe.
18
30
 
19
31
  `indexing.ts` exposes only a core-owned processing capability. Kernel authority cannot bind the
20
32
  public domain SDK. `ontology.indexVectors` authorizes only the persisted results of its work item or durable group.