@sixb/core 0.1.16 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (563) hide show
  1. package/dist/actions/index.js +25 -25
  2. package/dist/actions/types/context.d.ts +2 -2
  3. package/dist/actions/types/context.d.ts.map +1 -1
  4. package/dist/actions/worker.js +1 -1
  5. package/dist/agents/index.js +41 -40
  6. package/dist/agents/index.js.map +1 -1
  7. package/dist/auth/index.js +5 -5
  8. package/dist/authorization/index.js +2 -2
  9. package/dist/blob-storage/download-urls.d.ts +41 -0
  10. package/dist/blob-storage/download-urls.d.ts.map +1 -0
  11. package/dist/blob-storage/execution.d.ts +9 -1
  12. package/dist/blob-storage/execution.d.ts.map +1 -1
  13. package/dist/blob-storage/index.js +5 -3
  14. package/dist/blob-storage/index.js.map +1 -1
  15. package/dist/blob-storage/internal.d.ts +2 -0
  16. package/dist/blob-storage/internal.d.ts.map +1 -0
  17. package/dist/blob-storage/internal.js +11 -0
  18. package/dist/blob-storage/internal.js.map +9 -0
  19. package/dist/bootstrap/index.js +45 -44
  20. package/dist/bootstrap/index.js.map +1 -1
  21. package/dist/{chunk-8x74221e.js → chunk-10styjgk.js} +18 -13
  22. package/dist/{chunk-8x74221e.js.map → chunk-10styjgk.js.map} +3 -3
  23. package/dist/{chunk-hgqpcmyr.js → chunk-1hqwggsn.js} +47 -19
  24. package/dist/chunk-1hqwggsn.js.map +12 -0
  25. package/dist/{chunk-zb47r1c8.js → chunk-23xs4qp9.js} +2 -2
  26. package/dist/{chunk-gmdvns8f.js → chunk-2am3db31.js} +2 -2
  27. package/dist/{chunk-fj1dvp37.js → chunk-2vhg6ysa.js} +1 -1
  28. package/dist/{chunk-dp7yk20b.js → chunk-33saed7g.js} +1 -1
  29. package/dist/{chunk-mdnw7nj8.js → chunk-3rrezgyc.js} +33 -8
  30. package/dist/chunk-3rrezgyc.js.map +15 -0
  31. package/dist/{chunk-jgwb25gc.js → chunk-4as3wt1c.js} +13 -5
  32. package/dist/chunk-4as3wt1c.js.map +12 -0
  33. package/dist/chunk-4ra628t7.js +88 -0
  34. package/dist/chunk-4ra628t7.js.map +10 -0
  35. package/dist/{chunk-chdg6eqq.js → chunk-52c5zb0z.js} +2 -2
  36. package/dist/{chunk-69kt9q43.js → chunk-5be2ath4.js} +1 -1
  37. package/dist/{chunk-qnd7ehe5.js → chunk-5thzcb8g.js} +2 -2
  38. package/dist/{chunk-6z1q7j19.js → chunk-5yd8cchh.js} +1126 -780
  39. package/dist/chunk-5yd8cchh.js.map +66 -0
  40. package/dist/{chunk-3q7z9hd4.js → chunk-6wbm6ymz.js} +234 -40
  41. package/dist/{chunk-3q7z9hd4.js.map → chunk-6wbm6ymz.js.map} +8 -6
  42. package/dist/{chunk-kvysp909.js → chunk-7ecp4v7a.js} +26 -19
  43. package/dist/chunk-7ecp4v7a.js.map +17 -0
  44. package/dist/{chunk-f85hpqnm.js → chunk-99nd4rc1.js} +3 -3
  45. package/dist/{chunk-f85hpqnm.js.map → chunk-99nd4rc1.js.map} +3 -3
  46. package/dist/{chunk-dsv8kdgk.js → chunk-9g6jz9kk.js} +5 -5
  47. package/dist/{chunk-39tqv9hz.js → chunk-9se093qz.js} +5 -6
  48. package/dist/{chunk-39tqv9hz.js.map → chunk-9se093qz.js.map} +3 -4
  49. package/dist/{chunk-7g2gjvah.js → chunk-a7er86jd.js} +1 -1
  50. package/dist/{chunk-zdkcdshk.js → chunk-aq39q04r.js} +41 -3
  51. package/dist/{chunk-zdkcdshk.js.map → chunk-aq39q04r.js.map} +4 -3
  52. package/dist/chunk-b9affek3.js +261 -0
  53. package/dist/chunk-b9affek3.js.map +12 -0
  54. package/dist/{chunk-b9y8hcm2.js → chunk-c2rga5cx.js} +1 -1
  55. package/dist/{chunk-f72rbvsb.js → chunk-cnb5kv05.js} +2 -2
  56. package/dist/chunk-d62kjtbg.js.map +2 -2
  57. package/dist/{chunk-vjqt7q3a.js → chunk-dam456ve.js} +233 -34
  58. package/dist/{chunk-vjqt7q3a.js.map → chunk-dam456ve.js.map} +7 -5
  59. package/dist/{chunk-sbcm1b92.js → chunk-e67ynxcr.js} +3 -3
  60. package/dist/{chunk-xnx96gfy.js → chunk-ere85b8y.js} +17 -8
  61. package/dist/chunk-ere85b8y.js.map +15 -0
  62. package/dist/{chunk-k4kkp58d.js → chunk-ewqa58h9.js} +12 -2
  63. package/dist/chunk-ewqa58h9.js.map +11 -0
  64. package/dist/{chunk-cq44v1a6.js → chunk-f1xh7a32.js} +3 -3
  65. package/dist/{chunk-h4138ww2.js → chunk-fggq3d9k.js} +450 -799
  66. package/dist/chunk-fggq3d9k.js.map +49 -0
  67. package/dist/{chunk-kttr5ftm.js → chunk-gf7yht60.js} +3 -3
  68. package/dist/chunk-h8teetr0.js +9 -0
  69. package/dist/chunk-h8teetr0.js.map +10 -0
  70. package/dist/chunk-hn2r7z41.js.map +1 -1
  71. package/dist/{chunk-nj0020ay.js → chunk-jjrn5v0p.js} +1 -1
  72. package/dist/{chunk-nvymebc1.js → chunk-jnfxmr3f.js} +1 -1
  73. package/dist/{chunk-nkbev3tr.js → chunk-k4g51s47.js} +3 -3
  74. package/dist/{chunk-a0073121.js → chunk-kpx7jrmn.js} +3 -1
  75. package/dist/chunk-kpx7jrmn.js.map +12 -0
  76. package/dist/{chunk-h044jb97.js → chunk-pja9jfz6.js} +172 -10
  77. package/dist/chunk-pja9jfz6.js.map +19 -0
  78. package/dist/chunk-pqajwytd.js.map +1 -1
  79. package/dist/{chunk-mr60an99.js → chunk-qczk96d9.js} +22 -2
  80. package/dist/{chunk-mr60an99.js.map → chunk-qczk96d9.js.map} +3 -3
  81. package/dist/{chunk-s3csryxe.js → chunk-rj69qcrd.js} +8 -2
  82. package/dist/chunk-rj69qcrd.js.map +11 -0
  83. package/dist/{chunk-swxzncrv.js → chunk-rpxz486p.js} +32 -5
  84. package/dist/{chunk-swxzncrv.js.map → chunk-rpxz486p.js.map} +4 -4
  85. package/dist/{chunk-tkdbge6v.js → chunk-rx7h5fdx.js} +1 -1
  86. package/dist/{chunk-tnvafr7g.js → chunk-s7ftxrdr.js} +105 -7
  87. package/dist/chunk-s7ftxrdr.js.map +22 -0
  88. package/dist/{chunk-h866d223.js → chunk-sk0hcjsz.js} +1 -1
  89. package/dist/{chunk-2xvgy3x5.js → chunk-svabwqdq.js} +2 -2
  90. package/dist/{chunk-667x4drs.js → chunk-t9shqx3w.js} +2 -2
  91. package/dist/{chunk-40qb8wpe.js → chunk-tjjgy3z4.js} +26 -23
  92. package/dist/{chunk-40qb8wpe.js.map → chunk-tjjgy3z4.js.map} +3 -3
  93. package/dist/{chunk-gkxsenvp.js → chunk-vp3z1ckh.js} +31 -7
  94. package/dist/{chunk-gkxsenvp.js.map → chunk-vp3z1ckh.js.map} +5 -4
  95. package/dist/{chunk-cxj8y8t0.js → chunk-vre348sb.js} +2 -2
  96. package/dist/{chunk-vsvrv7n8.js → chunk-w9yycd3t.js} +1 -1
  97. package/dist/{chunk-g4rbm4a6.js → chunk-wt4szfec.js} +379 -331
  98. package/dist/chunk-wt4szfec.js.map +14 -0
  99. package/dist/{chunk-a7ne02hk.js → chunk-xcy5ddha.js} +6 -6
  100. package/dist/{chunk-zvmr2hqk.js → chunk-xyvy73tj.js} +4 -3
  101. package/dist/{chunk-zvmr2hqk.js.map → chunk-xyvy73tj.js.map} +3 -3
  102. package/dist/datasets/write.js +1 -1
  103. package/dist/execution/agent.js +38 -37
  104. package/dist/execution/agent.js.map +1 -1
  105. package/dist/execution/authorized-object-reader.d.ts +3 -1
  106. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  107. package/dist/execution/primitive.js +36 -35
  108. package/dist/execution/primitive.js.map +2 -2
  109. package/dist/execution/request.js +37 -36
  110. package/dist/execution/request.js.map +2 -2
  111. package/dist/index.d.ts +8 -4
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +62 -59
  114. package/dist/index.js.map +1 -1
  115. package/dist/lake-storage/in-memory.d.ts +5 -1
  116. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  117. package/dist/lake-storage/index.d.ts +1 -1
  118. package/dist/lake-storage/index.d.ts.map +1 -1
  119. package/dist/lake-storage/index.js +2 -2
  120. package/dist/lake-storage/types.d.ts +26 -0
  121. package/dist/lake-storage/types.d.ts.map +1 -1
  122. package/dist/maintenance/ontology-maintenance.d.ts +5 -1
  123. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  124. package/dist/maintenance/types.d.ts +1 -4
  125. package/dist/maintenance/types.d.ts.map +1 -1
  126. package/dist/materialization/event-envelopes.d.ts +20 -0
  127. package/dist/materialization/event-envelopes.d.ts.map +1 -0
  128. package/dist/materialization/events.d.ts +29 -3
  129. package/dist/materialization/events.d.ts.map +1 -1
  130. package/dist/materialization/index.d.ts +4 -1
  131. package/dist/materialization/index.d.ts.map +1 -1
  132. package/dist/materialization/index.js +9 -3
  133. package/dist/materialization/index.js.map +1 -1
  134. package/dist/materializer/edits/plan.d.ts +2 -10
  135. package/dist/materializer/edits/plan.d.ts.map +1 -1
  136. package/dist/materializer/effective/build-events.d.ts +5 -21
  137. package/dist/materializer/effective/build-events.d.ts.map +1 -1
  138. package/dist/materializer/effective/vector-indexing.d.ts +2 -3
  139. package/dist/materializer/effective/vector-indexing.d.ts.map +1 -1
  140. package/dist/materializer/effective/vectors.d.ts +2 -3
  141. package/dist/materializer/effective/vectors.d.ts.map +1 -1
  142. package/dist/materializer/execution/scope.d.ts +1 -11
  143. package/dist/materializer/execution/scope.d.ts.map +1 -1
  144. package/dist/materializer/execution/work-executor.d.ts +5 -7
  145. package/dist/materializer/execution/work-executor.d.ts.map +1 -1
  146. package/dist/materializer/execution/work-records.d.ts +1 -3
  147. package/dist/materializer/execution/work-records.d.ts.map +1 -1
  148. package/dist/materializer/index.js +31 -32
  149. package/dist/materializer/index.js.map +1 -1
  150. package/dist/materializer/projections/replace.d.ts.map +1 -1
  151. package/dist/materializer/projections/replacement-plan.d.ts +8 -11
  152. package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
  153. package/dist/materializer/shared/batching.d.ts +5 -0
  154. package/dist/materializer/shared/batching.d.ts.map +1 -1
  155. package/dist/materializer/telemetry/plan.d.ts +2 -8
  156. package/dist/materializer/telemetry/plan.d.ts.map +1 -1
  157. package/dist/models/audio/catalog.d.ts +20 -0
  158. package/dist/models/audio/catalog.d.ts.map +1 -0
  159. package/dist/models/audio/errors.d.ts +8 -0
  160. package/dist/models/audio/errors.d.ts.map +1 -0
  161. package/dist/models/audio/file.d.ts +9 -0
  162. package/dist/models/audio/file.d.ts.map +1 -0
  163. package/dist/models/audio/runtime.d.ts +8 -0
  164. package/dist/models/audio/runtime.d.ts.map +1 -0
  165. package/dist/models/audio/types.d.ts +60 -0
  166. package/dist/models/audio/types.d.ts.map +1 -0
  167. package/dist/models/catalog.d.ts +23 -1
  168. package/dist/models/catalog.d.ts.map +1 -1
  169. package/dist/models/definitions.d.ts +1 -1
  170. package/dist/models/definitions.d.ts.map +1 -1
  171. package/dist/models/events.d.ts +3 -0
  172. package/dist/models/events.d.ts.map +1 -1
  173. package/dist/models/execution/index.js +22 -22
  174. package/dist/models/execution/model-call-admission.d.ts +6 -1
  175. package/dist/models/execution/model-call-admission.d.ts.map +1 -1
  176. package/dist/models/execution/model-call-limits.d.ts.map +1 -1
  177. package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
  178. package/dist/models/execution/reranking.d.ts +4 -0
  179. package/dist/models/execution/reranking.d.ts.map +1 -0
  180. package/dist/models/execution/usage.d.ts.map +1 -1
  181. package/dist/models/execution.d.ts +2 -1
  182. package/dist/models/execution.d.ts.map +1 -1
  183. package/dist/models/generation-types.d.ts +2 -0
  184. package/dist/models/generation-types.d.ts.map +1 -1
  185. package/dist/models/index.d.ts +7 -1
  186. package/dist/models/index.d.ts.map +1 -1
  187. package/dist/models/index.js +6 -2
  188. package/dist/models/index.js.map +1 -1
  189. package/dist/models/pricing.d.ts +2 -2
  190. package/dist/models/pricing.d.ts.map +1 -1
  191. package/dist/models/reranking-model.d.ts +49 -0
  192. package/dist/models/reranking-model.d.ts.map +1 -0
  193. package/dist/objects/index.js +25 -25
  194. package/dist/objects/query/executor.d.ts +2 -1
  195. package/dist/objects/query/executor.d.ts.map +1 -1
  196. package/dist/objects/query/index.d.ts +1 -1
  197. package/dist/objects/query/index.d.ts.map +1 -1
  198. package/dist/objects/query/index.js +22 -22
  199. package/dist/objects/query/ir.d.ts +8 -1
  200. package/dist/objects/query/ir.d.ts.map +1 -1
  201. package/dist/objects/query/normalize.d.ts.map +1 -1
  202. package/dist/objects/query/planner.d.ts +1 -1
  203. package/dist/objects/query/planner.d.ts.map +1 -1
  204. package/dist/objects/query/primary-id.d.ts +7 -0
  205. package/dist/objects/query/primary-id.d.ts.map +1 -0
  206. package/dist/objects/query/reranking-executor.d.ts +13 -0
  207. package/dist/objects/query/reranking-executor.d.ts.map +1 -0
  208. package/dist/objects/query/reranking-limits.d.ts +3 -0
  209. package/dist/objects/query/reranking-limits.d.ts.map +1 -0
  210. package/dist/objects/query/reranking-query.d.ts +4 -0
  211. package/dist/objects/query/reranking-query.d.ts.map +1 -0
  212. package/dist/objects/query/validate.d.ts.map +1 -1
  213. package/dist/objects/sdk/query-builder.d.ts +8 -0
  214. package/dist/objects/sdk/query-builder.d.ts.map +1 -1
  215. package/dist/objects/sdk/query-executor.d.ts +2 -2
  216. package/dist/objects/sdk/query-executor.d.ts.map +1 -1
  217. package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
  218. package/dist/objects/vectors/indexing-dispatch.d.ts +21 -0
  219. package/dist/objects/vectors/indexing-dispatch.d.ts.map +1 -0
  220. package/dist/objects/vectors/query.d.ts.map +1 -1
  221. package/dist/ontology/builders.d.ts.map +1 -1
  222. package/dist/ontology/index.d.ts +1 -1
  223. package/dist/ontology/index.d.ts.map +1 -1
  224. package/dist/ontology/index.js +3 -3
  225. package/dist/ontology/internal.js +2 -2
  226. package/dist/ontology/query-capabilities.d.ts +1 -0
  227. package/dist/ontology/query-capabilities.d.ts.map +1 -1
  228. package/dist/ontology/types.d.ts +20 -0
  229. package/dist/ontology/types.d.ts.map +1 -1
  230. package/dist/ontology/validation/query.d.ts.map +1 -1
  231. package/dist/pipelines/index.js +23 -23
  232. package/dist/projections/internal.js +22 -22
  233. package/dist/query.d.ts +4 -2
  234. package/dist/query.d.ts.map +1 -1
  235. package/dist/query.js +2 -2
  236. package/dist/queues/in-memory.d.ts +3 -0
  237. package/dist/queues/in-memory.d.ts.map +1 -1
  238. package/dist/queues/index.js +1 -1
  239. package/dist/queues/types.d.ts +4 -0
  240. package/dist/queues/types.d.ts.map +1 -1
  241. package/dist/runtime/host.d.ts +1 -0
  242. package/dist/runtime/host.d.ts.map +1 -1
  243. package/dist/runtime/index.d.ts +1 -1
  244. package/dist/runtime/index.d.ts.map +1 -1
  245. package/dist/runtime/internal.d.ts +1 -0
  246. package/dist/runtime/internal.d.ts.map +1 -1
  247. package/dist/runtime/internal.js +28 -26
  248. package/dist/runtime/internal.js.map +1 -1
  249. package/dist/runtime/public-origin.d.ts +10 -0
  250. package/dist/runtime/public-origin.d.ts.map +1 -0
  251. package/dist/runtime/sixb.d.ts +1 -0
  252. package/dist/runtime/sixb.d.ts.map +1 -1
  253. package/dist/runtime/types.d.ts +12 -2
  254. package/dist/runtime/types.d.ts.map +1 -1
  255. package/dist/sandboxes/index.js +5 -5
  256. package/dist/shares/internal.js +19 -19
  257. package/dist/storage/agents/provider.js +2 -2
  258. package/dist/storage/ai-cost/analytics.d.ts +1 -0
  259. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  260. package/dist/storage/ai-cost/provider.js +3 -3
  261. package/dist/storage/ai-cost/types.d.ts +1 -1
  262. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  263. package/dist/storage/ai-cost/validation.d.ts.map +1 -1
  264. package/dist/storage/ai-limits/enforcement.js +2 -2
  265. package/dist/storage/ai-limits/in-memory.d.ts.map +1 -1
  266. package/dist/storage/ai-limits/provider.d.ts +7 -2
  267. package/dist/storage/ai-limits/provider.d.ts.map +1 -1
  268. package/dist/storage/ai-limits/provider.js +4 -2
  269. package/dist/storage/ai-limits/provider.js.map +1 -1
  270. package/dist/storage/ai-limits/types.d.ts +3 -0
  271. package/dist/storage/ai-limits/types.d.ts.map +1 -1
  272. package/dist/storage/ai-usage/record.d.ts.map +1 -1
  273. package/dist/storage/ai-usage/types.d.ts +8 -4
  274. package/dist/storage/ai-usage/types.d.ts.map +1 -1
  275. package/dist/storage/ai-usage/usage.d.ts.map +1 -1
  276. package/dist/storage/file-download-grants/in-memory.d.ts +11 -0
  277. package/dist/storage/file-download-grants/in-memory.d.ts.map +1 -0
  278. package/dist/storage/file-download-grants/index.d.ts +3 -0
  279. package/dist/storage/file-download-grants/index.d.ts.map +1 -0
  280. package/dist/storage/file-download-grants/record.d.ts +11 -0
  281. package/dist/storage/file-download-grants/record.d.ts.map +1 -0
  282. package/dist/storage/file-download-grants/types.d.ts +44 -0
  283. package/dist/storage/file-download-grants/types.d.ts.map +1 -0
  284. package/dist/storage/file-upload-sessions/provider.js +6 -6
  285. package/dist/storage/in-memory/index.d.ts +4 -0
  286. package/dist/storage/in-memory/index.d.ts.map +1 -1
  287. package/dist/storage/index.d.ts +5 -3
  288. package/dist/storage/index.d.ts.map +1 -1
  289. package/dist/storage/index.js +30 -30
  290. package/dist/storage/index.js.map +1 -1
  291. package/dist/storage/internal.d.ts +1 -0
  292. package/dist/storage/internal.d.ts.map +1 -1
  293. package/dist/storage/internal.js +8 -4
  294. package/dist/storage/internal.js.map +1 -1
  295. package/dist/storage/migrations/index.d.ts +1 -1
  296. package/dist/storage/migrations/index.d.ts.map +1 -1
  297. package/dist/storage/migrations/migrate-storage.d.ts +3 -3
  298. package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
  299. package/dist/storage/migrations/types.d.ts +7 -0
  300. package/dist/storage/migrations/types.d.ts.map +1 -1
  301. package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
  302. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
  303. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
  304. package/dist/storage/objects/query-preparation.d.ts +39 -0
  305. package/dist/storage/objects/query-preparation.d.ts.map +1 -0
  306. package/dist/storage/objects/types.d.ts +2 -0
  307. package/dist/storage/objects/types.d.ts.map +1 -1
  308. package/dist/storage/ontology/commits.d.ts +1 -6
  309. package/dist/storage/ontology/commits.d.ts.map +1 -1
  310. package/dist/storage/ontology/in-memory/index.d.ts +4 -2
  311. package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
  312. package/dist/storage/ontology/in-memory/materializations-state.d.ts +0 -2
  313. package/dist/storage/ontology/in-memory/materializations-state.d.ts.map +1 -1
  314. package/dist/storage/ontology/in-memory/materializations-work.d.ts +1 -3
  315. package/dist/storage/ontology/in-memory/materializations-work.d.ts.map +1 -1
  316. package/dist/storage/ontology/in-memory/materializations.d.ts +23 -57
  317. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  318. package/dist/storage/ontology/in-memory/outbox.d.ts +3 -2
  319. package/dist/storage/ontology/in-memory/outbox.d.ts.map +1 -1
  320. package/dist/storage/ontology/in-memory/replacement-plans.d.ts +104 -0
  321. package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -0
  322. package/dist/storage/ontology/in-memory/shared-state.d.ts +17 -2
  323. package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
  324. package/dist/storage/ontology/in-memory/source-roots.d.ts +3 -1
  325. package/dist/storage/ontology/in-memory/source-roots.d.ts.map +1 -1
  326. package/dist/storage/ontology/in-memory/sources.d.ts +1 -2
  327. package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
  328. package/dist/storage/ontology/in-memory/state-reader.d.ts +25 -0
  329. package/dist/storage/ontology/in-memory/state-reader.d.ts.map +1 -0
  330. package/dist/storage/ontology/index.d.ts +6 -3
  331. package/dist/storage/ontology/index.d.ts.map +1 -1
  332. package/dist/storage/ontology/materializations.d.ts +40 -59
  333. package/dist/storage/ontology/materializations.d.ts.map +1 -1
  334. package/dist/storage/ontology/outbox.d.ts +4 -6
  335. package/dist/storage/ontology/outbox.d.ts.map +1 -1
  336. package/dist/storage/ontology/provider-work.d.ts +114 -3
  337. package/dist/storage/ontology/provider-work.d.ts.map +1 -1
  338. package/dist/storage/ontology/provider.d.ts +14 -39
  339. package/dist/storage/ontology/provider.d.ts.map +1 -1
  340. package/dist/storage/ontology/provider.js +26 -12
  341. package/dist/storage/ontology/provider.js.map +1 -1
  342. package/dist/storage/ontology/replacement-plans.d.ts +103 -0
  343. package/dist/storage/ontology/replacement-plans.d.ts.map +1 -0
  344. package/dist/storage/ontology/sources.d.ts +0 -8
  345. package/dist/storage/ontology/sources.d.ts.map +1 -1
  346. package/dist/storage/operation-scope.d.ts.map +1 -1
  347. package/dist/storage/operation-scope.js +1 -1
  348. package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
  349. package/dist/storage/projection-runs/types.d.ts +2 -0
  350. package/dist/storage/projection-runs/types.d.ts.map +1 -1
  351. package/dist/storage/types.d.ts +2 -0
  352. package/dist/storage/types.d.ts.map +1 -1
  353. package/dist/storage/workflow-runs/provider.js +6 -6
  354. package/dist/syncs/index.js +24 -24
  355. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  356. package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
  357. package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
  358. package/dist/testing/file-download-grant-storage-contract.d.ts +9 -0
  359. package/dist/testing/file-download-grant-storage-contract.d.ts.map +1 -0
  360. package/dist/testing/index.d.ts +1 -0
  361. package/dist/testing/index.d.ts.map +1 -1
  362. package/dist/testing/index.js +2549 -1490
  363. package/dist/testing/index.js.map +14 -13
  364. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  365. package/dist/testing/materializer-storage-contract.d.ts +14 -0
  366. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  367. package/dist/testing/object-read-scope-contract.d.ts.map +1 -1
  368. package/dist/testing/ontology-contract-fixture.d.ts +5 -1
  369. package/dist/testing/ontology-contract-fixture.d.ts.map +1 -1
  370. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  371. package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
  372. package/dist/testing/queues-contract.d.ts.map +1 -1
  373. package/dist/webhooks/internal.js +20 -20
  374. package/dist/workers/index.js +15 -17
  375. package/dist/workers/index.js.map +3 -3
  376. package/dist/workers/queue-worker.d.ts +3 -2
  377. package/dist/workers/queue-worker.d.ts.map +1 -1
  378. package/dist/workflows/index.js +42 -41
  379. package/dist/workflows/index.js.map +1 -1
  380. package/package.json +7 -1
  381. package/src/actions/types/context.ts +5 -2
  382. package/src/blob-storage/download-urls.ts +138 -0
  383. package/src/blob-storage/execution.ts +32 -1
  384. package/src/blob-storage/internal.ts +1 -0
  385. package/src/execution/authorized-object-reader.ts +8 -1
  386. package/src/index.ts +25 -0
  387. package/src/lake-storage/in-memory.ts +38 -9
  388. package/src/lake-storage/index.ts +2 -0
  389. package/src/lake-storage/types.ts +30 -0
  390. package/src/maintenance/ontology-maintenance.ts +50 -23
  391. package/src/maintenance/types.ts +1 -4
  392. package/src/materialization/event-envelopes.ts +168 -0
  393. package/src/materialization/events.ts +40 -4
  394. package/src/materialization/index.ts +9 -1
  395. package/src/materializer/README.md +55 -10
  396. package/src/materializer/edits/commit.ts +3 -19
  397. package/src/materializer/edits/plan.ts +20 -71
  398. package/src/materializer/effective/build-events.ts +42 -136
  399. package/src/materializer/effective/vector-indexing.ts +2 -3
  400. package/src/materializer/effective/vectors.ts +2 -3
  401. package/src/materializer/execution/scope.ts +1 -38
  402. package/src/materializer/execution/work-executor.ts +21 -115
  403. package/src/materializer/execution/work-records.ts +0 -15
  404. package/src/materializer/projections/replace.ts +106 -63
  405. package/src/materializer/projections/replacement-plan.ts +73 -218
  406. package/src/materializer/shared/batching.ts +7 -0
  407. package/src/materializer/telemetry/append.ts +2 -14
  408. package/src/materializer/telemetry/plan.ts +6 -43
  409. package/src/models/audio/catalog.ts +90 -0
  410. package/src/models/audio/errors.ts +19 -0
  411. package/src/models/audio/file.ts +78 -0
  412. package/src/models/audio/runtime.ts +182 -0
  413. package/src/models/audio/types.ts +69 -0
  414. package/src/models/catalog.ts +52 -5
  415. package/src/models/definitions.ts +8 -1
  416. package/src/models/events.ts +3 -0
  417. package/src/models/execution/README.md +20 -1
  418. package/src/models/execution/model-call-admission.ts +6 -1
  419. package/src/models/execution/model-call-limits.ts +21 -11
  420. package/src/models/execution/model-call-recorder.ts +1 -0
  421. package/src/models/execution/model-call-recovery.ts +1 -0
  422. package/src/models/execution/reranking.ts +137 -0
  423. package/src/models/execution/usage.ts +1 -0
  424. package/src/models/execution.ts +5 -1
  425. package/src/models/generation-types.ts +2 -0
  426. package/src/models/index.ts +32 -0
  427. package/src/models/pricing.ts +2 -1
  428. package/src/models/reranking-model.ts +114 -0
  429. package/src/objects/query/executor.ts +42 -2
  430. package/src/objects/query/explain.ts +8 -0
  431. package/src/objects/query/index.ts +1 -0
  432. package/src/objects/query/ir.ts +10 -0
  433. package/src/objects/query/normalize.ts +2 -0
  434. package/src/objects/query/planner.ts +12 -1
  435. package/src/objects/query/primary-id.ts +56 -0
  436. package/src/objects/query/reranking-executor.ts +91 -0
  437. package/src/objects/query/reranking-limits.ts +3 -0
  438. package/src/objects/query/reranking-query.ts +8 -0
  439. package/src/objects/query/validate.ts +33 -1
  440. package/src/objects/sdk/query-builder.ts +15 -2
  441. package/src/objects/sdk/query-executor.ts +2 -2
  442. package/src/objects/sdk/runtime-query-executor.ts +7 -4
  443. package/src/objects/vectors/README.md +6 -2
  444. package/src/objects/vectors/indexing-dispatch.ts +83 -0
  445. package/src/objects/vectors/query.ts +3 -0
  446. package/src/ontology/builders.ts +1 -0
  447. package/src/ontology/index.ts +2 -0
  448. package/src/ontology/query-capabilities.ts +1 -1
  449. package/src/ontology/types.ts +21 -0
  450. package/src/ontology/validation/query.ts +57 -0
  451. package/src/query.ts +4 -0
  452. package/src/queues/in-memory.ts +54 -19
  453. package/src/queues/types.ts +4 -0
  454. package/src/runtime/host.ts +28 -1
  455. package/src/runtime/index.ts +1 -0
  456. package/src/runtime/internal.ts +1 -0
  457. package/src/runtime/public-origin.ts +33 -0
  458. package/src/runtime/sixb.ts +13 -2
  459. package/src/runtime/types.ts +12 -2
  460. package/src/storage/ai-cost/analytics.ts +2 -0
  461. package/src/storage/ai-cost/codec.ts +2 -1
  462. package/src/storage/ai-cost/types.ts +1 -0
  463. package/src/storage/ai-cost/validation.ts +21 -8
  464. package/src/storage/ai-limits/in-memory.ts +10 -2
  465. package/src/storage/ai-limits/provider.ts +29 -2
  466. package/src/storage/ai-limits/types.ts +3 -0
  467. package/src/storage/ai-usage/record.ts +9 -0
  468. package/src/storage/ai-usage/types.ts +8 -4
  469. package/src/storage/ai-usage/usage.ts +2 -0
  470. package/src/storage/file-download-grants/in-memory.ts +73 -0
  471. package/src/storage/file-download-grants/index.ts +8 -0
  472. package/src/storage/file-download-grants/record.ts +47 -0
  473. package/src/storage/file-download-grants/types.ts +48 -0
  474. package/src/storage/in-memory/index.ts +13 -2
  475. package/src/storage/index.ts +31 -13
  476. package/src/storage/internal.ts +1 -0
  477. package/src/storage/migrations/index.ts +1 -0
  478. package/src/storage/migrations/migrate-storage.ts +36 -12
  479. package/src/storage/migrations/types.ts +8 -0
  480. package/src/storage/objects/in-memory/query.ts +2 -0
  481. package/src/storage/objects/in-memory/selected-reader.ts +1 -0
  482. package/src/storage/objects/in-memory/storage.ts +1 -0
  483. package/src/storage/objects/query-preparation.ts +77 -0
  484. package/src/storage/objects/types.ts +2 -0
  485. package/src/storage/ontology/commits.ts +1 -6
  486. package/src/storage/ontology/in-memory/index.ts +28 -9
  487. package/src/storage/ontology/in-memory/materializations-finalization.ts +35 -68
  488. package/src/storage/ontology/in-memory/materializations-state.ts +0 -22
  489. package/src/storage/ontology/in-memory/materializations-work.ts +0 -45
  490. package/src/storage/ontology/in-memory/materializations.ts +172 -653
  491. package/src/storage/ontology/in-memory/outbox.ts +37 -29
  492. package/src/storage/ontology/in-memory/replacement-plans.ts +697 -0
  493. package/src/storage/ontology/in-memory/shared-state.ts +24 -2
  494. package/src/storage/ontology/in-memory/source-roots.ts +7 -2
  495. package/src/storage/ontology/in-memory/sources.ts +7 -33
  496. package/src/storage/ontology/in-memory/state-reader.ts +245 -0
  497. package/src/storage/ontology/index.ts +19 -13
  498. package/src/storage/ontology/materializations.ts +45 -74
  499. package/src/storage/ontology/outbox.ts +4 -7
  500. package/src/storage/ontology/provider-header-validation.ts +0 -57
  501. package/src/storage/ontology/provider-work.ts +381 -90
  502. package/src/storage/ontology/provider.ts +74 -171
  503. package/src/storage/ontology/replacement-plans.ts +117 -0
  504. package/src/storage/ontology/sources.ts +0 -12
  505. package/src/storage/operation-scope.ts +33 -1
  506. package/src/storage/projection-runs/in-memory.ts +7 -1
  507. package/src/storage/projection-runs/types.ts +2 -0
  508. package/src/storage/types.ts +2 -0
  509. package/src/testing/ai-cost-storage-contract.ts +1 -0
  510. package/src/testing/ai-limit-storage-contract.ts +62 -0
  511. package/src/testing/ai-usage-storage-contract.ts +31 -0
  512. package/src/testing/file-download-grant-storage-contract.ts +139 -0
  513. package/src/testing/index.ts +4 -0
  514. package/src/testing/lake-storage-contract.ts +87 -1
  515. package/src/testing/materializer-storage-contract.ts +1008 -1
  516. package/src/testing/object-read-scope-contract.ts +1 -0
  517. package/src/testing/ontology-contract-fixture.ts +11 -87
  518. package/src/testing/ontology-storage-contract.ts +70 -39
  519. package/src/testing/projection-run-storage-contract.ts +14 -0
  520. package/src/testing/queues-contract.ts +59 -0
  521. package/src/workers/queue-worker.ts +19 -16
  522. package/dist/chunk-6z1q7j19.js.map +0 -62
  523. package/dist/chunk-7ytf06d3.js +0 -113
  524. package/dist/chunk-7ytf06d3.js.map +0 -10
  525. package/dist/chunk-a0073121.js.map +0 -12
  526. package/dist/chunk-g4rbm4a6.js.map +0 -15
  527. package/dist/chunk-h044jb97.js.map +0 -15
  528. package/dist/chunk-h4138ww2.js.map +0 -50
  529. package/dist/chunk-hgqpcmyr.js.map +0 -12
  530. package/dist/chunk-jgwb25gc.js.map +0 -12
  531. package/dist/chunk-k4kkp58d.js.map +0 -11
  532. package/dist/chunk-kvysp909.js.map +0 -17
  533. package/dist/chunk-mdnw7nj8.js.map +0 -15
  534. package/dist/chunk-s3csryxe.js.map +0 -11
  535. package/dist/chunk-tnvafr7g.js.map +0 -19
  536. package/dist/chunk-xnx96gfy.js.map +0 -15
  537. package/dist/materializer/execution/plan-stream.d.ts +0 -8
  538. package/dist/materializer/execution/plan-stream.d.ts.map +0 -1
  539. package/src/materializer/execution/plan-stream.ts +0 -121
  540. /package/dist/{chunk-zb47r1c8.js.map → chunk-23xs4qp9.js.map} +0 -0
  541. /package/dist/{chunk-gmdvns8f.js.map → chunk-2am3db31.js.map} +0 -0
  542. /package/dist/{chunk-fj1dvp37.js.map → chunk-2vhg6ysa.js.map} +0 -0
  543. /package/dist/{chunk-dp7yk20b.js.map → chunk-33saed7g.js.map} +0 -0
  544. /package/dist/{chunk-chdg6eqq.js.map → chunk-52c5zb0z.js.map} +0 -0
  545. /package/dist/{chunk-69kt9q43.js.map → chunk-5be2ath4.js.map} +0 -0
  546. /package/dist/{chunk-qnd7ehe5.js.map → chunk-5thzcb8g.js.map} +0 -0
  547. /package/dist/{chunk-dsv8kdgk.js.map → chunk-9g6jz9kk.js.map} +0 -0
  548. /package/dist/{chunk-7g2gjvah.js.map → chunk-a7er86jd.js.map} +0 -0
  549. /package/dist/{chunk-b9y8hcm2.js.map → chunk-c2rga5cx.js.map} +0 -0
  550. /package/dist/{chunk-f72rbvsb.js.map → chunk-cnb5kv05.js.map} +0 -0
  551. /package/dist/{chunk-sbcm1b92.js.map → chunk-e67ynxcr.js.map} +0 -0
  552. /package/dist/{chunk-cq44v1a6.js.map → chunk-f1xh7a32.js.map} +0 -0
  553. /package/dist/{chunk-kttr5ftm.js.map → chunk-gf7yht60.js.map} +0 -0
  554. /package/dist/{chunk-nj0020ay.js.map → chunk-jjrn5v0p.js.map} +0 -0
  555. /package/dist/{chunk-nvymebc1.js.map → chunk-jnfxmr3f.js.map} +0 -0
  556. /package/dist/{chunk-nkbev3tr.js.map → chunk-k4g51s47.js.map} +0 -0
  557. /package/dist/{chunk-tkdbge6v.js.map → chunk-rx7h5fdx.js.map} +0 -0
  558. /package/dist/{chunk-h866d223.js.map → chunk-sk0hcjsz.js.map} +0 -0
  559. /package/dist/{chunk-2xvgy3x5.js.map → chunk-svabwqdq.js.map} +0 -0
  560. /package/dist/{chunk-667x4drs.js.map → chunk-t9shqx3w.js.map} +0 -0
  561. /package/dist/{chunk-cxj8y8t0.js.map → chunk-vre348sb.js.map} +0 -0
  562. /package/dist/{chunk-vsvrv7n8.js.map → chunk-w9yycd3t.js.map} +0 -0
  563. /package/dist/{chunk-a7ne02hk.js.map → chunk-xcy5ddha.js.map} +0 -0
@@ -1,4 +1,9 @@
1
1
  import { RuntimeError } from "../runtime/errors"
2
+ import {
3
+ type AudioModelCatalog,
4
+ type AudioModelCatalogInput,
5
+ createAudioCatalog,
6
+ } from "./audio/catalog"
2
7
  import { indexModelBindings } from "./catalog-index"
3
8
  import { createDecisionCatalog, type DecisionModelCatalog } from "./decision/catalog"
4
9
  import type { DecisionModel } from "./decision/types"
@@ -9,6 +14,7 @@ import {
9
14
  } from "./definitions"
10
15
  import { assertEmbeddingModel, type EmbeddingModel } from "./embedding-model"
11
16
  import type { LanguageModel } from "./language-model"
17
+ import { assertRerankingModel, type RerankingModel } from "./reranking-model"
12
18
 
13
19
  /** Stable identity of a configured provider binding. */
14
20
  export interface ModelRef {
@@ -27,6 +33,15 @@ export interface EmbeddingModelCatalog {
27
33
  getByRef(ref: ModelRef): EmbeddingModelEntry | null
28
34
  }
29
35
 
36
+ export interface RerankingModelEntry extends ModelRef {
37
+ readonly model: RerankingModel
38
+ }
39
+
40
+ export interface RerankingModelCatalog {
41
+ list(): readonly RerankingModelEntry[]
42
+ getByRef(ref: ModelRef): RerankingModelEntry | null
43
+ }
44
+
30
45
  /** The configured language models, with the project default. */
31
46
  export interface LanguageModelCatalog {
32
47
  readonly default: LanguageModelEntry
@@ -47,17 +62,22 @@ export interface LanguageModelEntry extends LanguageModelRef {
47
62
 
48
63
  /** Models a project allows Sixb to use, organized by technical model kind. */
49
64
  export interface ModelCatalog {
65
+ readonly audio?: AudioModelCatalog
50
66
  readonly language?: LanguageModelCatalog
51
67
  readonly decision?: DecisionModelCatalog
52
68
  readonly embedding: EmbeddingModelCatalog
69
+ readonly reranking?: RerankingModelCatalog
53
70
  }
54
71
 
55
72
  export interface ModelCatalogInput {
73
+ readonly audio?: AudioModelCatalogInput
56
74
  /** Ordered; the first entry is the project default. */
57
75
  readonly language?: readonly LanguageModel[]
58
76
  /** Ordered; the first entry is the project default decision model. */
59
77
  readonly decision?: readonly DecisionModel[]
60
78
  readonly embedding?: readonly EmbeddingModel[]
79
+ /** Available rerankers; no default model and no automatic activation. */
80
+ readonly reranking?: readonly RerankingModel[]
61
81
  }
62
82
 
63
83
  // Only statically required inputs make their corresponding catalogs required.
@@ -66,7 +86,14 @@ type ConfiguredModelKinds<TInput> = {
66
86
  }[keyof ModelCatalog]
67
87
 
68
88
  export type ModelCatalogFor<TInput extends ModelCatalogInput> = ModelCatalog &
69
- Required<Pick<ModelCatalog, ConfiguredModelKinds<TInput>>>
89
+ Required<Pick<ModelCatalog, ConfiguredModelKinds<TInput>>> &
90
+ ([TInput] extends [{ readonly audio: { readonly transcription: readonly unknown[] } }]
91
+ ? {
92
+ readonly audio: AudioModelCatalog & {
93
+ readonly transcription: NonNullable<AudioModelCatalog["transcription"]>
94
+ }
95
+ }
96
+ : unknown)
70
97
 
71
98
  /** Build an immutable catalog while preserving each family's default and empty-list rules. */
72
99
  export function createModelCatalog<TInput extends ModelCatalogInput>(
@@ -80,12 +107,32 @@ export function createModelCatalog(input: ModelCatalogInput): ModelCatalog {
80
107
  const language = createLanguageCatalog(input.language)
81
108
  const embedding = createEmbeddingCatalog(input.embedding)
82
109
  const decision = createDecisionCatalog(input.decision)
83
-
84
- if (!language && !decision && embedding.list().length === 0) {
85
- throw new RuntimeError("[Sixb] Configure at least one language, embedding or decision model.")
110
+ const audio = createAudioCatalog(input.audio)
111
+ const reranking = createRerankingCatalog(input.reranking)
112
+
113
+ if (
114
+ !language &&
115
+ !decision &&
116
+ !audio &&
117
+ embedding.list().length === 0 &&
118
+ !reranking?.list().length
119
+ ) {
120
+ throw new RuntimeError(
121
+ "[Sixb] Configure at least one language, embedding, decision, audio or reranking model."
122
+ )
86
123
  }
87
124
 
88
- return Object.freeze({ language, embedding, decision })
125
+ return Object.freeze({ language, embedding, decision, audio, reranking })
126
+ }
127
+
128
+ function createRerankingCatalog(
129
+ models: readonly RerankingModel[] | undefined
130
+ ): RerankingModelCatalog | undefined {
131
+ if (models === undefined) return undefined
132
+ if (!Array.isArray(models)) {
133
+ throw new RuntimeError("[Sixb] models.reranking must be an array of reranking models.")
134
+ }
135
+ return indexModelBindings(models, "reranking", assertRerankingModel)
89
136
  }
90
137
 
91
138
  function createLanguageCatalog(
@@ -5,7 +5,14 @@ import {
5
5
  type ModelReasoningCapabilities,
6
6
  } from "./language-model"
7
7
 
8
- export type ModelKind = "language" | "image" | "video" | "embedding" | "decision"
8
+ export type ModelKind =
9
+ | "language"
10
+ | "image"
11
+ | "video"
12
+ | "embedding"
13
+ | "decision"
14
+ | "transcription"
15
+ | "reranking"
9
16
 
10
17
  /** Common catalog identity shared by every present and future model runtime. */
11
18
  export interface ModelDefinition {
@@ -46,6 +46,8 @@ export type ModelFinishReason =
46
46
  | "unknown"
47
47
 
48
48
  export interface ModelUsage {
49
+ /** Audio content duration in milliseconds, rounded to the nearest millisecond. Not billed duration. */
50
+ readonly audioDurationMs?: number
49
51
  readonly inputTokens?: number
50
52
  readonly outputTokens?: number
51
53
  readonly uncachedInputTokens?: number
@@ -168,6 +170,7 @@ export type ModelUiChunk =
168
170
  | { readonly type: "error"; readonly errorText: string }
169
171
 
170
172
  export interface ModelCallEndEvent {
173
+ readonly modelKind?: import("./definitions").ModelKind
171
174
  readonly providerIds?: ModelProviderIds
172
175
  /** Retained independently when the selected display cost is provider-reported. */
173
176
  readonly estimate?: ModelCostEstimate
@@ -1,6 +1,6 @@
1
1
  # Model execution accounting
2
2
 
3
- Internal execution and accounting shared by language, embedding and decision calls. Application usage is
3
+ Internal execution and accounting shared by language, embedding, decision and reranking calls. Application usage is
4
4
  documented in [Usage and limits](../../../../../docs/models/usage-and-limits.md).
5
5
 
6
6
  ## Execution boundary
@@ -47,6 +47,25 @@ Direct provider calls bypass this session. Webhook handlers have no bound model
47
47
  they must dispatch an action for accounted calls. A process crash before accounting is captured
48
48
  can still leave provider billing outside the ledger.
49
49
 
50
+ ## Reranking flow
51
+
52
+ `reranking.ts` binds the registered catalog to the same session. Object queries resolve only that
53
+ catalog, after semantic authorization and before query embedding. The query executor retrieves
54
+ authorized vector candidates first and sends only profile source text; inference holds no storage
55
+ transaction. Outer limits and property selection apply after ranking.
56
+
57
+ Admission estimates the UTF-8 bytes of each query/document pair divided by four, rounded up, with
58
+ zero output allowance. Actual provider meters are preserved. This is a heuristic, not a tokenizer or provider context guarantee. Calls have
59
+ the shared 30-second cancellation bound, with no inference retry. Accounting precedes cancellation
60
+ and ranking validation. A complete permutation with finite scores is required; ties preserve the
61
+ candidate order. `RerankingModelResponseError` carries metadata from malformed billable responses.
62
+
63
+ Provider charges remain distinct from token usage: absent tokens stay unknown. Token limits
64
+ neither admit nor count reranking or transcription calls (`aiLimitMeterApplies` in the limit
65
+ storage helpers), so their unmetered records cannot make a token meter unavailable. Reported
66
+ costs reconcile monetary reservations; missing tariffs fail admission under cost limits. Recovery
67
+ remains the existing accounting-only replay.
68
+
50
69
  ## Decision flow
51
70
 
52
71
  Decision evaluation in `../decision/runtime.ts` uses the same session and recorder. It snapshots JSON input/questions
@@ -1,5 +1,6 @@
1
1
  import type { AiModelCallReservationIdentity } from "../../storage"
2
- import type { ModelCostEstimator } from "../pricing"
2
+ import type { ModelKind } from "../definitions"
3
+ import type { ModelCostEstimator, ModelMoney } from "../pricing"
3
4
 
4
5
  /** Default output ceiling when a call and its resolved model supply no limit. */
5
6
  export const AI_MODEL_CALL_OUTPUT_TOKEN_ALLOWANCE = 4_096
@@ -24,7 +25,11 @@ export interface AiModelCallAdmissionInput {
24
25
  readonly callId: string
25
26
  readonly providerId: string
26
27
  readonly modelId: string
28
+ /** Selects the applicable limit meters; transcription and reranking skip token limits. */
29
+ readonly modelKind?: ModelKind
27
30
  readonly costEstimator?: ModelCostEstimator
31
+ /** A non-token estimate, computed by the resolved binding before inference. */
32
+ readonly reservationCost?: ModelMoney
28
33
  readonly inputTokens: AiModelCallInputTokenEstimate
29
34
  readonly outputTokenAllowance: number
30
35
  readonly estimatedTotalTokens?: number
@@ -12,6 +12,7 @@ import {
12
12
  aiUsageLimitUnavailableError,
13
13
  applicableAiLimitPolicies,
14
14
  } from "../../storage/ai-limits/enforcement"
15
+ import { aiLimitMeterApplies } from "../../storage/ai-limits/provider"
15
16
  import type {
16
17
  AiModelCallAdmissionDecision,
17
18
  AiModelCallAdmissionInput,
@@ -41,7 +42,9 @@ export function createAiModelCallLimitController(input: {
41
42
  const policies = await input.storage.aiLimits.listPolicies({
42
43
  projectId: input.projectId,
43
44
  })
44
- applicable = applicableAiLimitPolicies(policies, subjects)
45
+ applicable = applicableAiLimitPolicies(policies, subjects).filter((policy) =>
46
+ aiLimitMeterApplies(policy.limit.meter, admission.modelKind)
47
+ )
45
48
  } catch (error) {
46
49
  throw limitStorageUnavailable(error)
47
50
  }
@@ -63,6 +66,7 @@ export function createAiModelCallLimitController(input: {
63
66
  ...reservationIdentity(admission),
64
67
  subjects,
65
68
  estimates,
69
+ ...(admission.modelKind === undefined ? {} : { modelKind: admission.modelKind }),
66
70
  })
67
71
  } catch (error) {
68
72
  throw limitStorageUnavailable(error)
@@ -94,24 +98,30 @@ function reservationEstimates(
94
98
  input: AiModelCallAdmissionInput,
95
99
  needsCost: boolean
96
100
  ): readonly AiLimitQuantity[] {
97
- if (input.inputTokens.status !== "estimated" || input.estimatedTotalTokens === undefined) {
98
- return []
101
+ const estimates: AiLimitQuantity[] = []
102
+ if (input.inputTokens.status === "estimated" && input.estimatedTotalTokens !== undefined) {
103
+ estimates.push({ meter: "tokens.total", amount: input.estimatedTotalTokens })
99
104
  }
100
- const estimates: AiLimitQuantity[] = [
101
- { meter: "tokens.total", amount: input.estimatedTotalTokens },
102
- ]
105
+
103
106
  if (needsCost) {
104
107
  try {
105
- const money = input.costEstimator?.estimateReservation?.({
106
- inputTokens: input.inputTokens.tokens,
107
- outputTokens: input.outputTokenAllowance,
108
- })
109
- if (money) estimates.push({ meter: "cost.catalogEstimated", amount: money })
108
+ let money = input.reservationCost
109
+ if (money == null && input.inputTokens.status === "estimated") {
110
+ money = input.costEstimator?.estimateReservation?.({
111
+ inputTokens: input.inputTokens.tokens,
112
+ outputTokens: input.outputTokenAllowance,
113
+ })
114
+ }
115
+
116
+ if (money) {
117
+ estimates.push({ meter: "cost.catalogEstimated", amount: money })
118
+ }
110
119
  } catch {
111
120
  // An unavailable price must not prevent a token-only policy from being evaluated.
112
121
  return estimates
113
122
  }
114
123
  }
124
+
115
125
  return estimates
116
126
  }
117
127
 
@@ -157,6 +157,7 @@ export class AiModelCallRecorder {
157
157
  providerId: event.providerId,
158
158
  ...(event.providerIds === undefined ? {} : { providerIds: event.providerIds }),
159
159
  requestedModelId: event.modelId,
160
+ ...(event.modelKind === undefined ? {} : { modelKind: event.modelKind }),
160
161
  ...(event.requestedReasoning === undefined
161
162
  ? {}
162
163
  : { requestedReasoning: event.requestedReasoning }),
@@ -73,6 +73,7 @@ function toQueuePayload(record: RecordAiModelCallInput): AiModelCallRecordPayloa
73
73
  ? {}
74
74
  : { providerIds: structuredClone(record.providerIds) }),
75
75
  requestedModelId: record.requestedModelId,
76
+ ...(record.modelKind === undefined ? {} : { modelKind: record.modelKind }),
76
77
  ...(record.requestedReasoning === undefined
77
78
  ? {}
78
79
  : { requestedReasoning: structuredClone(record.requestedReasoning) }),
@@ -0,0 +1,137 @@
1
+ import { randomUUID } from "node:crypto"
2
+ import type { RerankingModelCatalog } from "../catalog"
3
+ import { indexModelBindings } from "../catalog-index"
4
+ import { estimateModelCall } from "../pricing"
5
+ import {
6
+ assertRerankingModel,
7
+ type RerankingModel,
8
+ type RerankingModelRequest,
9
+ RerankingModelResponseError,
10
+ type RerankingModelResponseMetadata,
11
+ type RerankingModelResult,
12
+ validateRerankingResults,
13
+ } from "../reranking-model"
14
+ import type { AiModelCallRecorder } from "./model-call-recorder"
15
+ import type { ModelExecutionSession } from "./session"
16
+
17
+ export function bindRerankingModels(
18
+ catalog: RerankingModelCatalog | undefined,
19
+ session: ModelExecutionSession
20
+ ): RerankingModelCatalog | undefined {
21
+ if (!catalog) return undefined
22
+ return indexModelBindings(
23
+ catalog.list().map(({ model }) =>
24
+ Object.freeze({
25
+ providerId: model.providerId,
26
+ modelId: model.modelId,
27
+ definition: model.definition,
28
+ rerank: (input: RerankingModelRequest) => executeReranking(session, model, input),
29
+ })
30
+ ),
31
+ "reranking",
32
+ assertRerankingModel
33
+ )
34
+ }
35
+
36
+ async function executeReranking(
37
+ session: ModelExecutionSession,
38
+ binding: RerankingModel,
39
+ input: RerankingModelRequest
40
+ ): Promise<RerankingModelResult> {
41
+ const query = input.query
42
+ if (
43
+ typeof query !== "string" ||
44
+ !query.trim() ||
45
+ !Array.isArray(input.documents) ||
46
+ input.documents.some((text) => typeof text !== "string" || !text.trim())
47
+ ) {
48
+ throw new TypeError("[SixbModels] Reranking requires a query and nonempty document strings.")
49
+ }
50
+ const documents = [...input.documents]
51
+ const signal = AbortSignal.any([session.signal(input.signal), AbortSignal.timeout(30_000)])
52
+ signal.throwIfAborted()
53
+ if (documents.length === 0) return { results: [] }
54
+
55
+ const accounting = await session.accounting()
56
+ accounting.assertHealthy()
57
+ const model = (await binding.resolve?.()) ?? binding
58
+ assertRerankingModel(model)
59
+ if (model.providerId !== binding.providerId || model.modelId !== binding.modelId) {
60
+ throw new TypeError(
61
+ "[SixbModels] Resolved reranking model identity does not match its binding."
62
+ )
63
+ }
64
+ signal.throwIfAborted()
65
+
66
+ // Rerankers compare each document with the query. Count the query for each pair;
67
+ // this is the shared admission heuristic, never a substitute for reported usage.
68
+ const encoder = new TextEncoder()
69
+ const queryBytes = encoder.encode(query).byteLength
70
+ const tokens = documents.reduce(
71
+ (sum, text) => sum + Math.ceil((queryBytes + encoder.encode(text).byteLength) / 4),
72
+ 0
73
+ )
74
+ const callId = `call_${randomUUID()}`
75
+ await accounting.admitCall({
76
+ callId,
77
+ providerId: model.providerId,
78
+ modelId: model.modelId,
79
+ modelKind: "reranking",
80
+ costEstimator: model.costEstimator,
81
+ inputTokens: { status: "estimated", tokens, method: "utf8BytesDividedByFour" },
82
+ outputTokenAllowance: 0,
83
+ estimatedTotalTokens: tokens,
84
+ })
85
+
86
+ let result: RerankingModelResult
87
+ try {
88
+ signal.throwIfAborted()
89
+ result = await model.rerank({ query, documents, signal })
90
+ } catch (error) {
91
+ const metadata = error instanceof RerankingModelResponseError ? error.metadata : {}
92
+ await recordReranking(accounting, model, callId, metadata)
93
+ throw error
94
+ }
95
+
96
+ // A malformed or cancelled response can still be billable.
97
+ await recordReranking(accounting, model, callId, result ?? {})
98
+ signal.throwIfAborted()
99
+ try {
100
+ return { ...result, results: validateRerankingResults(result?.results, documents.length) }
101
+ } catch (cause) {
102
+ throw new RerankingModelResponseError(
103
+ "[SixbModels] Invalid reranking response.",
104
+ model.providerId,
105
+ model.modelId,
106
+ result ?? {},
107
+ { cause }
108
+ )
109
+ }
110
+ }
111
+
112
+ async function recordReranking(
113
+ accounting: AiModelCallRecorder,
114
+ model: RerankingModel,
115
+ callId: string,
116
+ metadata: RerankingModelResponseMetadata
117
+ ): Promise<void> {
118
+ const usage = { ...metadata.usage, outputTokens: metadata.usage?.outputTokens ?? 0 }
119
+ const estimate = estimateModelCall(model, {
120
+ usage,
121
+ route: metadata.route,
122
+ responseModelId: metadata.responseModelId,
123
+ })
124
+ await accounting.onModelCallEnd({
125
+ callId,
126
+ modelKind: "reranking",
127
+ providerId: model.providerId,
128
+ modelId: model.modelId,
129
+ responseId: metadata.providerIds?.responseId ?? callId,
130
+ responseModelId: metadata.responseModelId,
131
+ providerIds: metadata.providerIds,
132
+ usage,
133
+ cost: metadata.reportedCost ? { status: "reported", ...metadata.reportedCost } : estimate,
134
+ ...(metadata.reportedCost ? { estimate } : {}),
135
+ route: metadata.route,
136
+ })
137
+ }
@@ -4,6 +4,7 @@ import type { ModelUsage } from "../events"
4
4
  /** Map one provider-neutral model call into Sixb's durable accounting vocabulary. */
5
5
  export function aiModelCallUsageFromModel(usage: ModelUsage): AiModelCallUsageInput {
6
6
  return {
7
+ ...(usage.audioDurationMs === undefined ? {} : { audioDurationMs: usage.audioDurationMs }),
7
8
  ...(usage.inputTokens === undefined ? {} : { inputTokens: usage.inputTokens }),
8
9
  ...(usage.outputTokens === undefined ? {} : { outputTokens: usage.outputTokens }),
9
10
  ...(usage.uncachedInputTokens === undefined
@@ -1,7 +1,9 @@
1
1
  import { runModelLoop } from "../agents/model-loop"
2
2
  import { assertProviderAccess } from "../authorization"
3
+ import type { BlobStorage } from "../blob-storage/types"
3
4
  import type { ExecutionContext } from "../execution"
4
5
  import type { SixbRuntimeContext } from "../runtime/types"
6
+ import { createAudioRuntime } from "./audio/runtime"
5
7
  import type { ModelCatalog } from "./catalog"
6
8
  import { createDecisionRuntime } from "./decision/runtime"
7
9
  import { ModelProviderError, ModelStreamError, UnsupportedModelFeatureError } from "./errors"
@@ -24,7 +26,8 @@ import { resolveLanguageModel } from "./resolve"
24
26
  export function createModelsRuntime(
25
27
  runtime: SixbRuntimeContext,
26
28
  execution: ExecutionContext,
27
- catalog: ModelCatalog | undefined
29
+ catalog: ModelCatalog | undefined,
30
+ blobs?: BlobStorage
28
31
  ): ModelsRuntime {
29
32
  const session = runtime.modelExecution ?? new ModelExecutionSession(runtime, execution)
30
33
 
@@ -123,6 +126,7 @@ export function createModelsRuntime(
123
126
  const models: ModelsRuntime = {
124
127
  language: { generate },
125
128
  decision: createDecisionRuntime(runtime, execution, catalog, session),
129
+ audio: createAudioRuntime(runtime, execution, catalog, session, blobs),
126
130
  }
127
131
  registerModelExecutionBinding(models, (input) => {
128
132
  session.bind(input)
@@ -1,4 +1,5 @@
1
1
  import type { InferSchemaOrRef, SchemaOrRef } from "../ontology"
2
+ import type { AudioModelsRuntime } from "./audio/types"
2
3
  import type { DecisionModelsRuntime } from "./decision/types"
3
4
  import type { ModelFinishReason, ModelUsage } from "./events"
4
5
  import type { LanguageModel, ModelReasoning } from "./language-model"
@@ -47,6 +48,7 @@ export interface LanguageModelsRuntime {
47
48
  }
48
49
 
49
50
  export interface ModelsRuntime {
51
+ readonly audio: AudioModelsRuntime
50
52
  readonly language: LanguageModelsRuntime
51
53
  readonly decision: DecisionModelsRuntime
52
54
  }
@@ -1,5 +1,25 @@
1
+ export type { FileRef } from "../blob-storage/types"
1
2
  export type { JsonObject, JsonPrimitive, JsonValue } from "../json"
2
3
  export { assertJsonObject, assertJsonValue, isJsonObject, isJsonValue } from "../json"
4
+ export type {
5
+ AudioModelCatalog,
6
+ AudioModelCatalogInput,
7
+ TranscriptionModelCatalog,
8
+ TranscriptionModelEntry,
9
+ } from "./audio/catalog"
10
+ export { TranscriptionModelResponseError } from "./audio/errors"
11
+ export type {
12
+ AudioModelsRuntime,
13
+ AudioTranscribeInput,
14
+ AudioTranscribeResult,
15
+ TranscriptionCostEstimator,
16
+ TranscriptionModel,
17
+ TranscriptionModelDefinition,
18
+ TranscriptionModelRequest,
19
+ TranscriptionModelResponseMetadata,
20
+ TranscriptionModelResult,
21
+ TranscriptionOutput,
22
+ } from "./audio/types"
3
23
  export type {
4
24
  EmbeddingModelCatalog,
5
25
  EmbeddingModelEntry,
@@ -12,6 +32,8 @@ export type {
12
32
  ModelCatalogInput,
13
33
  ModelDefinitionCatalog,
14
34
  ModelRef,
35
+ RerankingModelCatalog,
36
+ RerankingModelEntry,
15
37
  } from "./catalog"
16
38
  export { createModelCatalog } from "./catalog"
17
39
  export type { DecisionModelCatalog, DecisionModelEntry } from "./decision/catalog"
@@ -131,4 +153,14 @@ export type {
131
153
  ModelUnitPrice,
132
154
  } from "./rate-card"
133
155
  export { defineModelRateCard } from "./rate-card"
156
+ export type {
157
+ RerankingModel,
158
+ RerankingModelDefinition,
159
+ RerankingModelRef,
160
+ RerankingModelRequest,
161
+ RerankingModelResponseMetadata,
162
+ RerankingModelResult,
163
+ RerankingResult,
164
+ } from "./reranking-model"
165
+ export { RerankingModelResponseError } from "./reranking-model"
134
166
  export type { ModelOutput, ModelTool, ModelToolExecutionContext } from "./tools"
@@ -3,7 +3,7 @@ import type { LanguageModelRateCard, ModelTokenPrice } from "./rate-card"
3
3
 
4
4
  /** Optional local financial enrichment cannot discard a completed, billable call. */
5
5
  export function estimateModelCall(
6
- model: { readonly costEstimator?: ModelCostEstimator },
6
+ model: { readonly costEstimator?: Pick<ModelCostEstimator, "estimate"> },
7
7
  input: Parameters<ModelCostEstimator["estimate"]>[0]
8
8
  ): ModelCostEstimate {
9
9
  try {
@@ -46,6 +46,7 @@ export interface ModelCostEstimator {
46
46
  }
47
47
 
48
48
  export type ModelCostMeter =
49
+ | "audio.input.milliseconds"
49
50
  | "tokens.input.total"
50
51
  | "tokens.input.uncached"
51
52
  | "tokens.input.cacheRead"
@@ -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
+ }