@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
@@ -65,7 +65,7 @@ export function createObjectVectorHandle(
65
65
  }
66
66
 
67
67
  // Network work never holds a storage transaction or retries an obsolete computation.
68
- const result = await model.embed({ texts: [input.text] })
68
+ const result = await model.embed({ texts: [input.text], purpose: "document" })
69
69
  if (!Array.isArray(result?.vectors) || result.vectors.length !== 1) {
70
70
  throw new MaterializationValidationError(
71
71
  "Embedding model must return exactly one vector for one input text."
@@ -0,0 +1,83 @@
1
+ import type { Queues } from "../../queues"
2
+ import type { OntologyVectorIndexingStorage } from "../../storage/ontology/vector-indexing"
3
+
4
+ const PAGE_SIZE = 100
5
+ /** A dispatched request becomes due again only if its job has not completed it by then. */
6
+ const REDISPATCH_DELAY_MS = 30_000
7
+
8
+ /**
9
+ * Hands durable indexing intent to the vector queue. Each commit wakes it in the committing
10
+ * process; ontology maintenance drains it as the repair path for a wake-up that never finished.
11
+ */
12
+ export class VectorIndexingDispatcher {
13
+ private running: Promise<void> | null = null
14
+ private next: Promise<void> | null = null
15
+ private stopped = false
16
+
17
+ constructor(
18
+ private readonly projectId: string,
19
+ private readonly indexing: OntologyVectorIndexingStorage,
20
+ private readonly queue: Queues["vectorIndexing"]
21
+ ) {}
22
+
23
+ notify(): void {
24
+ this.drain().catch((error) =>
25
+ console.error("[Sixb] Could not dispatch vector indexing; maintenance will retry:", error)
26
+ )
27
+ }
28
+
29
+ /** Callers share one pass plus at most one follow-up, which sees every earlier commit. */
30
+ drain(): Promise<void> {
31
+ this.next ??= settled(this.running).then(() => {
32
+ this.next = null
33
+ if (this.stopped) return
34
+ this.running = this.pass().finally(() => {
35
+ this.running = null
36
+ })
37
+ return this.running
38
+ })
39
+ return this.next
40
+ }
41
+
42
+ async stop(): Promise<void> {
43
+ this.stopped = true
44
+ await settled(this.next)
45
+ await settled(this.running)
46
+ }
47
+
48
+ private async pass(): Promise<void> {
49
+ for (;;) {
50
+ const now = new Date()
51
+ const work = await this.indexing.listDue({
52
+ projectId: this.projectId,
53
+ now: now.toISOString(),
54
+ limit: PAGE_SIZE,
55
+ })
56
+ if (work.length) {
57
+ const jobs = [...new Map(work.map((item) => [item.batchId ?? item.id, item])).entries()]
58
+ await this.queue.enqueue({
59
+ projectId: this.projectId,
60
+ jobs: jobs.map(([id, item]) => ({
61
+ id,
62
+ type: "vector.index.requested",
63
+ payload: { indexingId: id },
64
+ availableAt: item.availableAt,
65
+ })),
66
+ })
67
+ await this.indexing.dispatched({
68
+ projectId: this.projectId,
69
+ ids: work.map((item) => item.id),
70
+ nextDispatchAt: new Date(now.getTime() + REDISPATCH_DELAY_MS).toISOString(),
71
+ })
72
+ }
73
+ if (work.length < PAGE_SIZE || this.stopped) return
74
+ }
75
+ }
76
+ }
77
+
78
+ function settled(promise: Promise<void> | null): Promise<void> {
79
+ return (promise ?? Promise.resolve()).then(
80
+ () => undefined,
81
+ () => undefined
82
+ )
83
+ }
@@ -63,7 +63,11 @@ export async function generateVectors(
63
63
  )
64
64
  }
65
65
 
66
- const result = await model.embed({ texts: entries.map((entry) => entry.input.text), signal })
66
+ const result = await model.embed({
67
+ texts: entries.map((entry) => entry.input.text),
68
+ purpose: "document",
69
+ signal,
70
+ })
67
71
  const values = normalizeEmbeddingResult(
68
72
  result,
69
73
  entries.length,
@@ -13,6 +13,8 @@ export function vectorConfiguration(profile: ObjectVectorSearchProfile): string
13
13
  model: profile.model.modelId,
14
14
  representation: profile.model.definition.representation ?? { name: profile.model.modelId },
15
15
  dimensions: profile.model.definition.dimensions,
16
+ // Include retrieval preparation without changing existing symmetric identities.
17
+ ...(profile.model.definition.inputMode === "asymmetric" ? { inputMode: "asymmetric" } : {}),
16
18
  metric: "cosine",
17
19
  precision: "float32",
18
20
  normalization: "l2-v1",
@@ -6,11 +6,28 @@ export function hasVectorProfile(query: ObjectQuery): boolean {
6
6
  return "input" in query && hasVectorProfile(query.input)
7
7
  }
8
8
 
9
- /** V1 supports one exact top-k, with filters applied before ranking. */
9
+ /** Rank one eligible object set; validation resolves its type and admits every traversed edge. */
10
10
  export function isVectorProfileQuery(query: ObjectQuery): boolean {
11
11
  if (query.kind === "limit" || query.kind === "project") return isVectorProfileQuery(query.input)
12
+ if (query.kind === "rerank") {
13
+ return query.input.kind === "vector" && isVectorProfileQuery(query.input)
14
+ }
12
15
  if (query.kind !== "vector" || !query.profile) return false
13
- let input = query.input
14
- while (input.kind === "filter") input = input.input
15
- return input.kind === "start" && !input.includeSubtypes
16
+ return isVectorCandidateQuery(query.input)
17
+ }
18
+
19
+ function isVectorCandidateQuery(query: ObjectQuery): boolean {
20
+ switch (query.kind) {
21
+ case "start":
22
+ return !query.includeSubtypes
23
+ case "refs":
24
+ return true
25
+ case "filter":
26
+ case "traverse":
27
+ return isVectorCandidateQuery(query.input)
28
+ case "set":
29
+ return query.inputs.every(isVectorCandidateQuery)
30
+ default:
31
+ return false
32
+ }
16
33
  }
@@ -3,6 +3,7 @@ import { type EmbeddingModel, sameEmbeddingModel } from "../../models/embedding-
3
3
  import type { OntologyRegistry } from "../../ontology"
4
4
  import { ObjectQueryExecutionError } from "../query/errors"
5
5
  import type { ObjectQuery, ObjectQueryVector } from "../query/ir"
6
+ import { resolveObjectQueryResultShape } from "../query/validate"
6
7
  import { normalizeVector } from "./profile"
7
8
 
8
9
  const QUERY_EMBEDDING_TIMEOUT_MS = 30_000
@@ -30,16 +31,19 @@ function resolveProfileEmbeddingModel(
30
31
  ontology: OntologyRegistry,
31
32
  models: EmbeddingModelCatalog | undefined
32
33
  ): EmbeddingModel {
33
- let input = query.input
34
- while (input.kind === "filter") input = input.input
35
- if (input.kind !== "start" || !query.profile) {
34
+ const { objectTypeIds } = resolveObjectQueryResultShape(query.input, {
35
+ ontology,
36
+ normalize: false,
37
+ })
38
+ const objectTypeId = objectTypeIds.length === 1 ? objectTypeIds[0] : undefined
39
+ if (!objectTypeId || !query.profile) {
36
40
  throw new ObjectQueryExecutionError(
37
41
  "embedding_model_unavailable",
38
42
  "Vector search requires the embedding model registered for its profile."
39
43
  )
40
44
  }
41
45
 
42
- const profile = ontology.resolveObjectType(input.objectTypeId).search?.vectors?.[query.profile]
46
+ const profile = ontology.resolveObjectType(objectTypeId).search?.vectors?.[query.profile]
43
47
  if (!profile) {
44
48
  throw new ObjectQueryExecutionError(
45
49
  "embedding_model_unavailable",
@@ -69,7 +73,7 @@ async function embedSearchText(
69
73
  const timeout = AbortSignal.timeout(QUERY_EMBEDDING_TIMEOUT_MS)
70
74
  const requestSignal = signal ? AbortSignal.any([signal, timeout]) : timeout
71
75
  requestSignal.throwIfAborted()
72
- const result = await model.embed({ texts: [text], signal: requestSignal })
76
+ const result = await model.embed({ texts: [text], purpose: "query", signal: requestSignal })
73
77
  requestSignal.throwIfAborted()
74
78
 
75
79
  if (!Array.isArray(result?.vectors) || result.vectors.length !== 1) {
@@ -2,7 +2,9 @@ import type { ObjectType } from "../../ontology"
2
2
 
3
3
  export type VectorProfileName<T extends ObjectType> = T extends { search: { vectors: infer P } }
4
4
  ? Extract<keyof P, string>
5
- : never
5
+ : string extends T["id"]
6
+ ? string
7
+ : never
6
8
 
7
9
  export interface ObjectVectorHandle {
8
10
  /** Generate and atomically store this profile using its configured model. Conflicts are not retried. */
@@ -35,6 +35,7 @@ import type {
35
35
  ObjectLink,
36
36
  ObjectLinkTargetMetadata,
37
37
  ObjectType,
38
+ ObjectVectorSearchProfile,
38
39
  Ontology,
39
40
  Property,
40
41
  PropertyMode,
@@ -231,6 +232,7 @@ export function defineObjectType(input: DefineObjectTypeInput): ObjectTypeWithTo
231
232
  properties,
232
233
  links,
233
234
  search: input.search,
235
+ query: input.query,
234
236
  }
235
237
 
236
238
  return {
@@ -446,19 +448,32 @@ export type DirectLinkResult<
446
448
  > = LinkResult<TId, TTargetObjectTypeId, TOptions> & ObjectLinkTargetMetadata<TTarget>
447
449
 
448
450
  type ObjectTypeIdArray<TTargets extends readonly ObjectType[]> = Array<TTargets[number]["id"]>
451
+ /** Keep profile names without carrying provider types through every linked declaration. */
449
452
  export type DirectLinkTarget<
450
453
  TId extends string,
451
454
  TName extends string,
452
455
  TProperties extends Property[],
453
- > = ObjectTypeWithPropertyTokens<{
454
- id: TId
455
- name: TName
456
- properties: TProperties
457
- links: ObjectLink[]
458
- }>
456
+ TVectorProfiles extends string = never,
457
+ > = ObjectTypeWithPropertyTokens<
458
+ {
459
+ id: TId
460
+ name: TName
461
+ properties: TProperties
462
+ links: ObjectLink[]
463
+ } & ([TVectorProfiles] extends [never]
464
+ ? unknown
465
+ : { search: { vectors: Record<TVectorProfiles, ObjectVectorSearchProfile> } })
466
+ >
459
467
 
460
468
  type DirectLinkTargetFor<TTarget extends ObjectType> = TTarget extends ObjectTypeWithPropertyTokens
461
- ? DirectLinkTarget<TTarget["id"], TTarget["name"], TTarget["properties"]>
469
+ ? DirectLinkTarget<
470
+ TTarget["id"],
471
+ TTarget["name"],
472
+ TTarget["properties"],
473
+ TTarget extends { search: { vectors: infer TProfiles } }
474
+ ? Extract<keyof TProfiles, string>
475
+ : never
476
+ >
462
477
  : TTarget
463
478
 
464
479
  /**
@@ -47,8 +47,10 @@ export type {
47
47
  ObjectLink,
48
48
  ObjectLinkTargetMetadata,
49
49
  ObjectLinkTargetType,
50
+ ObjectQueryIndexDefinition,
50
51
  ObjectSchema,
51
52
  ObjectType,
53
+ ObjectTypeQueryMetadata,
52
54
  ObjectTypeSearchMetadata,
53
55
  ObjectVectorSearchProfile,
54
56
  Ontology,
@@ -123,7 +123,7 @@ export function resolvePropertyQueryCapabilities(
123
123
  }
124
124
  }
125
125
 
126
- function resolveQuerySchema(
126
+ export function resolveQuerySchema(
127
127
  schema: Schema,
128
128
  valueTypesById: ReadonlyMap<string, ValueType>,
129
129
  seen = new Set<string>()
@@ -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
+ }
@@ -17,6 +17,7 @@ export function snapshotVectorProfiles(
17
17
  providerId,
18
18
  modelId,
19
19
  dimensions: definition.dimensions,
20
+ ...(definition.inputMode ? { inputMode: definition.inputMode } : {}),
20
21
  ...(definition.representation
21
22
  ? {
22
23
  representation: Object.freeze({
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,