@sixb/core 0.1.16 → 0.1.18

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 (844) hide show
  1. package/dist/actions/index.js +30 -27
  2. package/dist/actions/index.js.map +1 -1
  3. package/dist/actions/read-facade.d.ts +1 -1
  4. package/dist/actions/types/context.d.ts +2 -2
  5. package/dist/actions/types/context.d.ts.map +1 -1
  6. package/dist/actions/validation.d.ts.map +1 -1
  7. package/dist/actions/worker.js +6 -2
  8. package/dist/actions/worker.js.map +3 -3
  9. package/dist/agents/adapters.d.ts +7 -0
  10. package/dist/agents/adapters.d.ts.map +1 -1
  11. package/dist/agents/authority.d.ts +7 -0
  12. package/dist/agents/authority.d.ts.map +1 -1
  13. package/dist/agents/context/entries.d.ts +10 -1
  14. package/dist/agents/context/entries.d.ts.map +1 -1
  15. package/dist/agents/context/index.d.ts +1 -1
  16. package/dist/agents/context/index.d.ts.map +1 -1
  17. package/dist/agents/context/index.js +4 -2
  18. package/dist/agents/context/index.js.map +1 -1
  19. package/dist/agents/context-compaction.d.ts.map +1 -1
  20. package/dist/agents/errors.d.ts +1 -1
  21. package/dist/agents/errors.d.ts.map +1 -1
  22. package/dist/agents/index.d.ts +6 -4
  23. package/dist/agents/index.d.ts.map +1 -1
  24. package/dist/agents/index.js +54 -46
  25. package/dist/agents/index.js.map +1 -1
  26. package/dist/agents/message.d.ts +8 -1
  27. package/dist/agents/message.d.ts.map +1 -1
  28. package/dist/agents/request.d.ts +19 -5
  29. package/dist/agents/request.d.ts.map +1 -1
  30. package/dist/agents/skills.d.ts +41 -0
  31. package/dist/agents/skills.d.ts.map +1 -0
  32. package/dist/agents/streams/index.js +1 -1
  33. package/dist/agents/streams/internal.js +1 -1
  34. package/dist/agents/types.d.ts +33 -4
  35. package/dist/agents/types.d.ts.map +1 -1
  36. package/dist/auth/index.js +9 -6
  37. package/dist/auth/index.js.map +1 -1
  38. package/dist/auth/runtime.d.ts.map +1 -1
  39. package/dist/auth/types.d.ts +6 -0
  40. package/dist/auth/types.d.ts.map +1 -1
  41. package/dist/authorization/index.js +5 -3
  42. package/dist/authorization/index.js.map +1 -1
  43. package/dist/authorization/resolve.d.ts +1 -1
  44. package/dist/authorization/resolve.d.ts.map +1 -1
  45. package/dist/authorization/types.d.ts +7 -0
  46. package/dist/authorization/types.d.ts.map +1 -1
  47. package/dist/blob-storage/browser.js +1 -1
  48. package/dist/blob-storage/download-urls.d.ts +41 -0
  49. package/dist/blob-storage/download-urls.d.ts.map +1 -0
  50. package/dist/blob-storage/execution.d.ts +9 -1
  51. package/dist/blob-storage/execution.d.ts.map +1 -1
  52. package/dist/blob-storage/file-content.d.ts +18 -0
  53. package/dist/blob-storage/file-content.d.ts.map +1 -0
  54. package/dist/blob-storage/index.d.ts +1 -1
  55. package/dist/blob-storage/index.d.ts.map +1 -1
  56. package/dist/blob-storage/index.js +6 -4
  57. package/dist/blob-storage/index.js.map +1 -1
  58. package/dist/blob-storage/internal.d.ts +4 -0
  59. package/dist/blob-storage/internal.d.ts.map +1 -0
  60. package/dist/blob-storage/internal.js +23 -0
  61. package/dist/blob-storage/internal.js.map +9 -0
  62. package/dist/blob-storage/media-type.d.ts +8 -0
  63. package/dist/blob-storage/media-type.d.ts.map +1 -0
  64. package/dist/blob-storage/types.d.ts +12 -1
  65. package/dist/blob-storage/types.d.ts.map +1 -1
  66. package/dist/blob-storage/validation.d.ts +6 -0
  67. package/dist/blob-storage/validation.d.ts.map +1 -1
  68. package/dist/bootstrap/agent-context.d.ts +33 -0
  69. package/dist/bootstrap/agent-context.d.ts.map +1 -0
  70. package/dist/bootstrap/discovery.d.ts +23 -3
  71. package/dist/bootstrap/discovery.d.ts.map +1 -1
  72. package/dist/bootstrap/index.d.ts +2 -1
  73. package/dist/bootstrap/index.d.ts.map +1 -1
  74. package/dist/bootstrap/index.js +287 -75
  75. package/dist/bootstrap/index.js.map +4 -3
  76. package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
  77. package/dist/{chunk-kttr5ftm.js → chunk-1b1f2d5f.js} +23 -6
  78. package/dist/chunk-1b1f2d5f.js.map +12 -0
  79. package/dist/{chunk-hgqpcmyr.js → chunk-1hqwggsn.js} +47 -19
  80. package/dist/chunk-1hqwggsn.js.map +12 -0
  81. package/dist/{chunk-9vx5e9g1.js → chunk-1sr8ryzk.js} +3 -3
  82. package/dist/chunk-1sr8ryzk.js.map +11 -0
  83. package/dist/{chunk-4gmng3vf.js → chunk-22v5bpz3.js} +1 -1
  84. package/dist/{chunk-tnvafr7g.js → chunk-29yx306f.js} +124 -9
  85. package/dist/chunk-29yx306f.js.map +22 -0
  86. package/dist/{chunk-fj1dvp37.js → chunk-2vhg6ysa.js} +1 -1
  87. package/dist/chunk-3zxk45er.js +152 -0
  88. package/dist/chunk-3zxk45er.js.map +11 -0
  89. package/dist/{chunk-gmdvns8f.js → chunk-48e3cn2d.js} +2 -2
  90. package/dist/{chunk-jgwb25gc.js → chunk-4as3wt1c.js} +13 -5
  91. package/dist/chunk-4as3wt1c.js.map +12 -0
  92. package/dist/{chunk-91kcnbf0.js → chunk-6gmfggss.js} +22 -9
  93. package/dist/chunk-6gmfggss.js.map +10 -0
  94. package/dist/{chunk-2xvgy3x5.js → chunk-6h5m9xjx.js} +43 -415
  95. package/dist/{chunk-2xvgy3x5.js.map → chunk-6h5m9xjx.js.map} +7 -11
  96. package/dist/{chunk-cq44v1a6.js → chunk-7hpdd6r9.js} +3 -3
  97. package/dist/{chunk-f85hpqnm.js → chunk-99nd4rc1.js} +3 -3
  98. package/dist/{chunk-f85hpqnm.js.map → chunk-99nd4rc1.js.map} +3 -3
  99. package/dist/chunk-b9affek3.js +261 -0
  100. package/dist/chunk-b9affek3.js.map +12 -0
  101. package/dist/{chunk-zvmr2hqk.js → chunk-bs7sqkre.js} +10 -4
  102. package/dist/chunk-bs7sqkre.js.map +12 -0
  103. package/dist/{chunk-rb143ggb.js → chunk-bwjcehza.js} +1 -1
  104. package/dist/{chunk-667x4drs.js → chunk-d0eb5yy6.js} +143 -7
  105. package/dist/chunk-d0eb5yy6.js.map +14 -0
  106. package/dist/chunk-d62kjtbg.js.map +2 -2
  107. package/dist/{chunk-gkxsenvp.js → chunk-de4z2bj6.js} +31 -7
  108. package/dist/{chunk-gkxsenvp.js.map → chunk-de4z2bj6.js.map} +5 -4
  109. package/dist/{chunk-mdnw7nj8.js → chunk-dnmadg9k.js} +35 -10
  110. package/dist/chunk-dnmadg9k.js.map +15 -0
  111. package/dist/chunk-enpsx8k5.js +127 -0
  112. package/dist/chunk-enpsx8k5.js.map +10 -0
  113. package/dist/{chunk-xnx96gfy.js → chunk-ere85b8y.js} +17 -8
  114. package/dist/chunk-ere85b8y.js.map +15 -0
  115. package/dist/{chunk-k4kkp58d.js → chunk-ewqa58h9.js} +12 -2
  116. package/dist/chunk-ewqa58h9.js.map +11 -0
  117. package/dist/{chunk-7g2gjvah.js → chunk-ex496vct.js} +1 -1
  118. package/dist/{chunk-nvymebc1.js → chunk-f1zxad2t.js} +1 -1
  119. package/dist/{chunk-3q7z9hd4.js → chunk-fe52eczz.js} +483 -101
  120. package/dist/chunk-fe52eczz.js.map +49 -0
  121. package/dist/{chunk-8x74221e.js → chunk-fx93hd2n.js} +79 -32
  122. package/dist/chunk-fx93hd2n.js.map +20 -0
  123. package/dist/{chunk-39tqv9hz.js → chunk-gc4ntf7d.js} +6 -7
  124. package/dist/{chunk-39tqv9hz.js.map → chunk-gc4ntf7d.js.map} +3 -4
  125. package/dist/chunk-h8teetr0.js +9 -0
  126. package/dist/chunk-h8teetr0.js.map +10 -0
  127. package/dist/{chunk-98cw09sw.js → chunk-hkc3jct7.js} +4 -2
  128. package/dist/chunk-hkc3jct7.js.map +10 -0
  129. package/dist/chunk-hn2r7z41.js.map +1 -1
  130. package/dist/{chunk-h044jb97.js → chunk-htr6wjmv.js} +282 -58
  131. package/dist/chunk-htr6wjmv.js.map +19 -0
  132. package/dist/{chunk-h3v76ams.js → chunk-jhm3zsa7.js} +25 -2
  133. package/dist/chunk-jhm3zsa7.js.map +12 -0
  134. package/dist/{chunk-chdg6eqq.js → chunk-k6hrnf35.js} +5 -5
  135. package/dist/chunk-k6hrnf35.js.map +10 -0
  136. package/dist/{chunk-a0073121.js → chunk-kpx7jrmn.js} +3 -1
  137. package/dist/chunk-kpx7jrmn.js.map +12 -0
  138. package/dist/{chunk-b9y8hcm2.js → chunk-mfs23znk.js} +1 -1
  139. package/dist/{chunk-kvysp909.js → chunk-ny3xyvcn.js} +32 -19
  140. package/dist/chunk-ny3xyvcn.js.map +17 -0
  141. package/dist/{chunk-h4138ww2.js → chunk-p0dqwj3n.js} +450 -799
  142. package/dist/chunk-p0dqwj3n.js.map +49 -0
  143. package/dist/{chunk-f72rbvsb.js → chunk-p844e0rn.js} +23 -8
  144. package/dist/chunk-p844e0rn.js.map +19 -0
  145. package/dist/{chunk-dmn70ztd.js → chunk-pfp1txq2.js} +25 -6
  146. package/dist/chunk-pfp1txq2.js.map +11 -0
  147. package/dist/chunk-pqajwytd.js.map +3 -3
  148. package/dist/{chunk-mr60an99.js → chunk-qczk96d9.js} +22 -2
  149. package/dist/{chunk-mr60an99.js.map → chunk-qczk96d9.js.map} +3 -3
  150. package/dist/{chunk-69kt9q43.js → chunk-qkbx3tf6.js} +17 -128
  151. package/dist/{chunk-69kt9q43.js.map → chunk-qkbx3tf6.js.map} +6 -7
  152. package/dist/{chunk-h866d223.js → chunk-qkvz64nd.js} +2 -2
  153. package/dist/{chunk-vsvrv7n8.js → chunk-qmnnhde6.js} +4 -8
  154. package/dist/{chunk-vsvrv7n8.js.map → chunk-qmnnhde6.js.map} +3 -3
  155. package/dist/{chunk-6z1q7j19.js → chunk-qq90g05n.js} +1128 -782
  156. package/dist/chunk-qq90g05n.js.map +66 -0
  157. package/dist/{chunk-40qb8wpe.js → chunk-qxvp5epv.js} +84 -29
  158. package/dist/{chunk-40qb8wpe.js.map → chunk-qxvp5epv.js.map} +10 -9
  159. package/dist/chunk-rdghfsss.js.map +2 -2
  160. package/dist/{chunk-s3csryxe.js → chunk-rj69qcrd.js} +8 -2
  161. package/dist/chunk-rj69qcrd.js.map +11 -0
  162. package/dist/{chunk-tkdbge6v.js → chunk-rt9p8m9t.js} +1 -1
  163. package/dist/{chunk-cd234ba4.js → chunk-rz53yb4v.js} +10 -5
  164. package/dist/chunk-rz53yb4v.js.map +14 -0
  165. package/dist/{chunk-a7ne02hk.js → chunk-s4jhg8a3.js} +351 -296
  166. package/dist/chunk-s4jhg8a3.js.map +15 -0
  167. package/dist/{chunk-69266efg.js → chunk-s54c868q.js} +12 -4
  168. package/dist/chunk-s54c868q.js.map +12 -0
  169. package/dist/{chunk-dsv8kdgk.js → chunk-tffvfy6s.js} +8 -7
  170. package/dist/{chunk-dsv8kdgk.js.map → chunk-tffvfy6s.js.map} +3 -3
  171. package/dist/{chunk-sbcm1b92.js → chunk-v6xpd60t.js} +3 -3
  172. package/dist/{chunk-nj0020ay.js → chunk-vgk3hknm.js} +1 -1
  173. package/dist/{chunk-qnd7ehe5.js → chunk-vx2yp45y.js} +2 -2
  174. package/dist/{chunk-vjqt7q3a.js → chunk-vz3gc1tm.js} +607 -45
  175. package/dist/chunk-vz3gc1tm.js.map +41 -0
  176. package/dist/{chunk-g4rbm4a6.js → chunk-wt4szfec.js} +379 -331
  177. package/dist/chunk-wt4szfec.js.map +14 -0
  178. package/dist/chunk-xt1zt7gv.js +471 -0
  179. package/dist/chunk-xt1zt7gv.js.map +13 -0
  180. package/dist/{chunk-swxzncrv.js → chunk-y05543x6.js} +51 -8
  181. package/dist/{chunk-swxzncrv.js.map → chunk-y05543x6.js.map} +5 -5
  182. package/dist/{chunk-zdkcdshk.js → chunk-y9jmd7e5.js} +41 -3
  183. package/dist/{chunk-zdkcdshk.js.map → chunk-y9jmd7e5.js.map} +4 -3
  184. package/dist/{chunk-nkbev3tr.js → chunk-yv9czyfr.js} +3 -3
  185. package/dist/{chunk-z5rnrmz1.js → chunk-yw9pyg66.js} +5 -3
  186. package/dist/chunk-yw9pyg66.js.map +11 -0
  187. package/dist/{chunk-cxj8y8t0.js → chunk-za5yd58j.js} +2 -2
  188. package/dist/{chunk-zb47r1c8.js → chunk-zb77kjth.js} +3 -3
  189. package/dist/{chunk-dp7yk20b.js → chunk-zxawp1n2.js} +1 -1
  190. package/dist/datasets/builders.d.ts +12 -1
  191. package/dist/datasets/builders.d.ts.map +1 -1
  192. package/dist/datasets/execution.d.ts +27 -1
  193. package/dist/datasets/execution.d.ts.map +1 -1
  194. package/dist/datasets/index.d.ts +1 -1
  195. package/dist/datasets/index.d.ts.map +1 -1
  196. package/dist/datasets/types.d.ts +2 -0
  197. package/dist/datasets/types.d.ts.map +1 -1
  198. package/dist/datasets/write.d.ts +5 -0
  199. package/dist/datasets/write.d.ts.map +1 -1
  200. package/dist/datasets/write.js +10 -5
  201. package/dist/datasets/write.js.map +1 -1
  202. package/dist/edits/properties.d.ts.map +1 -1
  203. package/dist/events/execution.d.ts +2 -1
  204. package/dist/events/execution.d.ts.map +1 -1
  205. package/dist/events/types/objects.d.ts +5 -0
  206. package/dist/events/types/objects.d.ts.map +1 -1
  207. package/dist/execution/agent.d.ts +10 -0
  208. package/dist/execution/agent.d.ts.map +1 -1
  209. package/dist/execution/agent.js +49 -43
  210. package/dist/execution/agent.js.map +1 -1
  211. package/dist/execution/authorized-object-reader.d.ts +9 -2
  212. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  213. package/dist/execution/primitive.js +45 -41
  214. package/dist/execution/primitive.js.map +2 -2
  215. package/dist/execution/request.js +46 -42
  216. package/dist/execution/request.js.map +2 -2
  217. package/dist/http/api-routes.d.ts.map +1 -1
  218. package/dist/http/index.js +1 -1
  219. package/dist/index.d.ts +16 -11
  220. package/dist/index.d.ts.map +1 -1
  221. package/dist/index.js +79 -71
  222. package/dist/index.js.map +1 -1
  223. package/dist/lake-storage/in-memory.d.ts +5 -1
  224. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  225. package/dist/lake-storage/index.d.ts +1 -1
  226. package/dist/lake-storage/index.d.ts.map +1 -1
  227. package/dist/lake-storage/index.js +8 -5
  228. package/dist/lake-storage/index.js.map +1 -1
  229. package/dist/lake-storage/types.d.ts +26 -0
  230. package/dist/lake-storage/types.d.ts.map +1 -1
  231. package/dist/maintenance/ontology-maintenance.d.ts +5 -1
  232. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  233. package/dist/maintenance/types.d.ts +1 -4
  234. package/dist/maintenance/types.d.ts.map +1 -1
  235. package/dist/materialization/event-envelopes.d.ts +20 -0
  236. package/dist/materialization/event-envelopes.d.ts.map +1 -0
  237. package/dist/materialization/events.d.ts +29 -3
  238. package/dist/materialization/events.d.ts.map +1 -1
  239. package/dist/materialization/index.d.ts +4 -1
  240. package/dist/materialization/index.d.ts.map +1 -1
  241. package/dist/materialization/index.js +9 -3
  242. package/dist/materialization/index.js.map +1 -1
  243. package/dist/materializer/edits/plan.d.ts +2 -10
  244. package/dist/materializer/edits/plan.d.ts.map +1 -1
  245. package/dist/materializer/effective/build-events.d.ts +5 -21
  246. package/dist/materializer/effective/build-events.d.ts.map +1 -1
  247. package/dist/materializer/effective/vector-indexing.d.ts +2 -3
  248. package/dist/materializer/effective/vector-indexing.d.ts.map +1 -1
  249. package/dist/materializer/effective/vectors.d.ts +2 -3
  250. package/dist/materializer/effective/vectors.d.ts.map +1 -1
  251. package/dist/materializer/execution/scope.d.ts +1 -11
  252. package/dist/materializer/execution/scope.d.ts.map +1 -1
  253. package/dist/materializer/execution/work-executor.d.ts +5 -7
  254. package/dist/materializer/execution/work-executor.d.ts.map +1 -1
  255. package/dist/materializer/execution/work-records.d.ts +1 -3
  256. package/dist/materializer/execution/work-records.d.ts.map +1 -1
  257. package/dist/materializer/index.js +35 -33
  258. package/dist/materializer/index.js.map +1 -1
  259. package/dist/materializer/projections/replace.d.ts.map +1 -1
  260. package/dist/materializer/projections/replacement-plan.d.ts +8 -11
  261. package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
  262. package/dist/materializer/shared/batching.d.ts +5 -0
  263. package/dist/materializer/shared/batching.d.ts.map +1 -1
  264. package/dist/materializer/telemetry/plan.d.ts +2 -8
  265. package/dist/materializer/telemetry/plan.d.ts.map +1 -1
  266. package/dist/models/audio/catalog.d.ts +20 -0
  267. package/dist/models/audio/catalog.d.ts.map +1 -0
  268. package/dist/models/audio/errors.d.ts +8 -0
  269. package/dist/models/audio/errors.d.ts.map +1 -0
  270. package/dist/models/audio/file.d.ts +9 -0
  271. package/dist/models/audio/file.d.ts.map +1 -0
  272. package/dist/models/audio/runtime.d.ts +8 -0
  273. package/dist/models/audio/runtime.d.ts.map +1 -0
  274. package/dist/models/audio/types.d.ts +60 -0
  275. package/dist/models/audio/types.d.ts.map +1 -0
  276. package/dist/models/catalog.d.ts +24 -2
  277. package/dist/models/catalog.d.ts.map +1 -1
  278. package/dist/models/definitions.d.ts +1 -1
  279. package/dist/models/definitions.d.ts.map +1 -1
  280. package/dist/models/events.d.ts +3 -0
  281. package/dist/models/events.d.ts.map +1 -1
  282. package/dist/models/execution/binding.d.ts +6 -0
  283. package/dist/models/execution/binding.d.ts.map +1 -1
  284. package/dist/models/execution/index.js +27 -24
  285. package/dist/models/execution/index.js.map +1 -1
  286. package/dist/models/execution/model-call-admission.d.ts +6 -1
  287. package/dist/models/execution/model-call-admission.d.ts.map +1 -1
  288. package/dist/models/execution/model-call-limits.d.ts.map +1 -1
  289. package/dist/models/execution/model-call-recorder.d.ts +4 -0
  290. package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
  291. package/dist/models/execution/reranking.d.ts +4 -0
  292. package/dist/models/execution/reranking.d.ts.map +1 -0
  293. package/dist/models/execution/usage.d.ts.map +1 -1
  294. package/dist/models/execution.d.ts +2 -1
  295. package/dist/models/execution.d.ts.map +1 -1
  296. package/dist/models/generation-types.d.ts +2 -0
  297. package/dist/models/generation-types.d.ts.map +1 -1
  298. package/dist/models/index.d.ts +7 -1
  299. package/dist/models/index.d.ts.map +1 -1
  300. package/dist/models/index.js +6 -2
  301. package/dist/models/index.js.map +1 -1
  302. package/dist/models/language-model.d.ts +6 -0
  303. package/dist/models/language-model.d.ts.map +1 -1
  304. package/dist/models/pricing.d.ts +2 -2
  305. package/dist/models/pricing.d.ts.map +1 -1
  306. package/dist/models/reranking-model.d.ts +49 -0
  307. package/dist/models/reranking-model.d.ts.map +1 -0
  308. package/dist/objects/context/index.d.ts +1 -1
  309. package/dist/objects/context/index.d.ts.map +1 -1
  310. package/dist/objects/context/types.d.ts +6 -0
  311. package/dist/objects/context/types.d.ts.map +1 -1
  312. package/dist/objects/execution.d.ts +2 -1
  313. package/dist/objects/execution.d.ts.map +1 -1
  314. package/dist/objects/index.js +31 -27
  315. package/dist/objects/index.js.map +1 -1
  316. package/dist/objects/materializer-adapter.d.ts.map +1 -1
  317. package/dist/objects/object/upsert-batch.d.ts.map +1 -1
  318. package/dist/objects/object/upsert.d.ts.map +1 -1
  319. package/dist/objects/property-clearance.d.ts +41 -0
  320. package/dist/objects/property-clearance.d.ts.map +1 -0
  321. package/dist/objects/query/executor.d.ts +5 -1
  322. package/dist/objects/query/executor.d.ts.map +1 -1
  323. package/dist/objects/query/index.d.ts +1 -1
  324. package/dist/objects/query/index.d.ts.map +1 -1
  325. package/dist/objects/query/index.js +27 -24
  326. package/dist/objects/query/index.js.map +1 -1
  327. package/dist/objects/query/ir.d.ts +8 -1
  328. package/dist/objects/query/ir.d.ts.map +1 -1
  329. package/dist/objects/query/normalize.d.ts.map +1 -1
  330. package/dist/objects/query/planner.d.ts +1 -1
  331. package/dist/objects/query/planner.d.ts.map +1 -1
  332. package/dist/objects/query/primary-id.d.ts +7 -0
  333. package/dist/objects/query/primary-id.d.ts.map +1 -0
  334. package/dist/objects/query/reranking-executor.d.ts +13 -0
  335. package/dist/objects/query/reranking-executor.d.ts.map +1 -0
  336. package/dist/objects/query/reranking-limits.d.ts +3 -0
  337. package/dist/objects/query/reranking-limits.d.ts.map +1 -0
  338. package/dist/objects/query/reranking-query.d.ts +4 -0
  339. package/dist/objects/query/reranking-query.d.ts.map +1 -0
  340. package/dist/objects/query/validate.d.ts +10 -1
  341. package/dist/objects/query/validate.d.ts.map +1 -1
  342. package/dist/objects/sdk/file-handle.d.ts +6 -0
  343. package/dist/objects/sdk/file-handle.d.ts.map +1 -0
  344. package/dist/objects/sdk/object-handle.d.ts +2 -2
  345. package/dist/objects/sdk/object-handle.d.ts.map +1 -1
  346. package/dist/objects/sdk/object-set.d.ts +2 -0
  347. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  348. package/dist/objects/sdk/query-builder.d.ts +8 -0
  349. package/dist/objects/sdk/query-builder.d.ts.map +1 -1
  350. package/dist/objects/sdk/query-executor.d.ts +2 -2
  351. package/dist/objects/sdk/query-executor.d.ts.map +1 -1
  352. package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
  353. package/dist/objects/vectors/indexing-dispatch.d.ts +21 -0
  354. package/dist/objects/vectors/indexing-dispatch.d.ts.map +1 -0
  355. package/dist/objects/vectors/query.d.ts.map +1 -1
  356. package/dist/ontology/builders.d.ts +12 -1
  357. package/dist/ontology/builders.d.ts.map +1 -1
  358. package/dist/ontology/docs-markdown.d.ts +35 -0
  359. package/dist/ontology/docs-markdown.d.ts.map +1 -0
  360. package/dist/ontology/docs.d.ts +50 -0
  361. package/dist/ontology/docs.d.ts.map +1 -0
  362. package/dist/ontology/index.d.ts +1 -1
  363. package/dist/ontology/index.d.ts.map +1 -1
  364. package/dist/ontology/index.js +7 -4
  365. package/dist/ontology/index.js.map +1 -1
  366. package/dist/ontology/inference/index.d.ts +19 -0
  367. package/dist/ontology/inference/index.d.ts.map +1 -1
  368. package/dist/ontology/internal.d.ts +3 -1
  369. package/dist/ontology/internal.d.ts.map +1 -1
  370. package/dist/ontology/internal.js +276 -3
  371. package/dist/ontology/internal.js.map +4 -3
  372. package/dist/ontology/query-capabilities.d.ts +1 -0
  373. package/dist/ontology/query-capabilities.d.ts.map +1 -1
  374. package/dist/ontology/tokens.d.ts +8 -1
  375. package/dist/ontology/tokens.d.ts.map +1 -1
  376. package/dist/ontology/types.d.ts +25 -0
  377. package/dist/ontology/types.d.ts.map +1 -1
  378. package/dist/ontology/validation/index.d.ts +1 -1
  379. package/dist/ontology/validation/index.d.ts.map +1 -1
  380. package/dist/ontology/validation/query.d.ts.map +1 -1
  381. package/dist/ontology/validation/schema.d.ts +7 -0
  382. package/dist/ontology/validation/schema.d.ts.map +1 -1
  383. package/dist/pipelines/index.js +29 -26
  384. package/dist/pipelines/index.js.map +1 -1
  385. package/dist/projections/internal.js +27 -24
  386. package/dist/projections/internal.js.map +1 -1
  387. package/dist/query.d.ts +4 -2
  388. package/dist/query.d.ts.map +1 -1
  389. package/dist/query.js +2 -2
  390. package/dist/queues/in-memory.d.ts +3 -0
  391. package/dist/queues/in-memory.d.ts.map +1 -1
  392. package/dist/queues/index.js +1 -1
  393. package/dist/queues/types.d.ts +4 -0
  394. package/dist/queues/types.d.ts.map +1 -1
  395. package/dist/runtime/create.d.ts +11 -2
  396. package/dist/runtime/create.d.ts.map +1 -1
  397. package/dist/runtime/definitions.d.ts +3 -1
  398. package/dist/runtime/definitions.d.ts.map +1 -1
  399. package/dist/runtime/host.d.ts +14 -2
  400. package/dist/runtime/host.d.ts.map +1 -1
  401. package/dist/runtime/index.d.ts +1 -1
  402. package/dist/runtime/index.d.ts.map +1 -1
  403. package/dist/runtime/internal.d.ts +1 -0
  404. package/dist/runtime/internal.d.ts.map +1 -1
  405. package/dist/runtime/internal.js +32 -27
  406. package/dist/runtime/internal.js.map +1 -1
  407. package/dist/runtime/locale.d.ts +9 -0
  408. package/dist/runtime/locale.d.ts.map +1 -0
  409. package/dist/runtime/public-origin.d.ts +10 -0
  410. package/dist/runtime/public-origin.d.ts.map +1 -0
  411. package/dist/runtime/resolve-definitions.d.ts +4 -2
  412. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  413. package/dist/runtime/sixb.d.ts +1 -0
  414. package/dist/runtime/sixb.d.ts.map +1 -1
  415. package/dist/runtime/types.d.ts +42 -5
  416. package/dist/runtime/types.d.ts.map +1 -1
  417. package/dist/sandboxes/index.js +7 -6
  418. package/dist/sandboxes/index.js.map +1 -1
  419. package/dist/scheduler/index.js +1 -1
  420. package/dist/scheduler/runtime.d.ts +3 -0
  421. package/dist/scheduler/runtime.d.ts.map +1 -1
  422. package/dist/security/builders.d.ts +11 -2
  423. package/dist/security/builders.d.ts.map +1 -1
  424. package/dist/security/index.d.ts +4 -4
  425. package/dist/security/index.d.ts.map +1 -1
  426. package/dist/security/markings.d.ts +19 -0
  427. package/dist/security/markings.d.ts.map +1 -0
  428. package/dist/security/redactions.d.ts +4 -0
  429. package/dist/security/redactions.d.ts.map +1 -0
  430. package/dist/security/registry.d.ts +7 -1
  431. package/dist/security/registry.d.ts.map +1 -1
  432. package/dist/security/types.d.ts +25 -0
  433. package/dist/security/types.d.ts.map +1 -1
  434. package/dist/security/validation.d.ts +4 -1
  435. package/dist/security/validation.d.ts.map +1 -1
  436. package/dist/shares/internal.js +24 -21
  437. package/dist/shares/internal.js.map +2 -2
  438. package/dist/storage/agents/provider.d.ts.map +1 -1
  439. package/dist/storage/agents/provider.js +5 -4
  440. package/dist/storage/agents/provider.js.map +1 -1
  441. package/dist/storage/agents/types.d.ts +15 -9
  442. package/dist/storage/agents/types.d.ts.map +1 -1
  443. package/dist/storage/ai-cost/analytics.d.ts +1 -0
  444. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  445. package/dist/storage/ai-cost/provider.js +3 -3
  446. package/dist/storage/ai-cost/types.d.ts +1 -1
  447. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  448. package/dist/storage/ai-cost/validation.d.ts.map +1 -1
  449. package/dist/storage/ai-limits/enforcement.js +2 -2
  450. package/dist/storage/ai-limits/in-memory.d.ts.map +1 -1
  451. package/dist/storage/ai-limits/provider.d.ts +7 -2
  452. package/dist/storage/ai-limits/provider.d.ts.map +1 -1
  453. package/dist/storage/ai-limits/provider.js +4 -2
  454. package/dist/storage/ai-limits/provider.js.map +1 -1
  455. package/dist/storage/ai-limits/types.d.ts +3 -0
  456. package/dist/storage/ai-limits/types.d.ts.map +1 -1
  457. package/dist/storage/ai-usage/record.d.ts.map +1 -1
  458. package/dist/storage/ai-usage/types.d.ts +8 -4
  459. package/dist/storage/ai-usage/types.d.ts.map +1 -1
  460. package/dist/storage/ai-usage/usage.d.ts.map +1 -1
  461. package/dist/storage/file-download-grants/in-memory.d.ts +11 -0
  462. package/dist/storage/file-download-grants/in-memory.d.ts.map +1 -0
  463. package/dist/storage/file-download-grants/index.d.ts +3 -0
  464. package/dist/storage/file-download-grants/index.d.ts.map +1 -0
  465. package/dist/storage/file-download-grants/record.d.ts +11 -0
  466. package/dist/storage/file-download-grants/record.d.ts.map +1 -0
  467. package/dist/storage/file-download-grants/types.d.ts +44 -0
  468. package/dist/storage/file-download-grants/types.d.ts.map +1 -0
  469. package/dist/storage/file-upload-sessions/provider.js +10 -7
  470. package/dist/storage/file-upload-sessions/provider.js.map +1 -1
  471. package/dist/storage/in-memory/index.d.ts +4 -0
  472. package/dist/storage/in-memory/index.d.ts.map +1 -1
  473. package/dist/storage/index.d.ts +6 -3
  474. package/dist/storage/index.d.ts.map +1 -1
  475. package/dist/storage/index.js +35 -32
  476. package/dist/storage/index.js.map +1 -1
  477. package/dist/storage/internal.d.ts +1 -0
  478. package/dist/storage/internal.d.ts.map +1 -1
  479. package/dist/storage/internal.js +9 -4
  480. package/dist/storage/internal.js.map +1 -1
  481. package/dist/storage/migrations/index.d.ts +1 -1
  482. package/dist/storage/migrations/index.d.ts.map +1 -1
  483. package/dist/storage/migrations/migrate-storage.d.ts +3 -3
  484. package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
  485. package/dist/storage/migrations/types.d.ts +7 -0
  486. package/dist/storage/migrations/types.d.ts.map +1 -1
  487. package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
  488. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
  489. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
  490. package/dist/storage/objects/query-preparation.d.ts +39 -0
  491. package/dist/storage/objects/query-preparation.d.ts.map +1 -0
  492. package/dist/storage/objects/types.d.ts +9 -0
  493. package/dist/storage/objects/types.d.ts.map +1 -1
  494. package/dist/storage/ontology/commits.d.ts +1 -6
  495. package/dist/storage/ontology/commits.d.ts.map +1 -1
  496. package/dist/storage/ontology/in-memory/index.d.ts +4 -2
  497. package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
  498. package/dist/storage/ontology/in-memory/materializations-state.d.ts +0 -2
  499. package/dist/storage/ontology/in-memory/materializations-state.d.ts.map +1 -1
  500. package/dist/storage/ontology/in-memory/materializations-work.d.ts +1 -3
  501. package/dist/storage/ontology/in-memory/materializations-work.d.ts.map +1 -1
  502. package/dist/storage/ontology/in-memory/materializations.d.ts +23 -57
  503. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  504. package/dist/storage/ontology/in-memory/outbox.d.ts +3 -2
  505. package/dist/storage/ontology/in-memory/outbox.d.ts.map +1 -1
  506. package/dist/storage/ontology/in-memory/replacement-plans.d.ts +104 -0
  507. package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -0
  508. package/dist/storage/ontology/in-memory/shared-state.d.ts +17 -2
  509. package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
  510. package/dist/storage/ontology/in-memory/source-roots.d.ts +3 -1
  511. package/dist/storage/ontology/in-memory/source-roots.d.ts.map +1 -1
  512. package/dist/storage/ontology/in-memory/sources.d.ts +1 -2
  513. package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
  514. package/dist/storage/ontology/in-memory/state-reader.d.ts +25 -0
  515. package/dist/storage/ontology/in-memory/state-reader.d.ts.map +1 -0
  516. package/dist/storage/ontology/index.d.ts +6 -3
  517. package/dist/storage/ontology/index.d.ts.map +1 -1
  518. package/dist/storage/ontology/materializations.d.ts +40 -59
  519. package/dist/storage/ontology/materializations.d.ts.map +1 -1
  520. package/dist/storage/ontology/outbox.d.ts +4 -6
  521. package/dist/storage/ontology/outbox.d.ts.map +1 -1
  522. package/dist/storage/ontology/provider-work.d.ts +114 -3
  523. package/dist/storage/ontology/provider-work.d.ts.map +1 -1
  524. package/dist/storage/ontology/provider.d.ts +14 -39
  525. package/dist/storage/ontology/provider.d.ts.map +1 -1
  526. package/dist/storage/ontology/provider.js +26 -12
  527. package/dist/storage/ontology/provider.js.map +1 -1
  528. package/dist/storage/ontology/replacement-plans.d.ts +103 -0
  529. package/dist/storage/ontology/replacement-plans.d.ts.map +1 -0
  530. package/dist/storage/ontology/sources.d.ts +0 -8
  531. package/dist/storage/ontology/sources.d.ts.map +1 -1
  532. package/dist/storage/operation-scope.d.ts.map +1 -1
  533. package/dist/storage/operation-scope.js +1 -1
  534. package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
  535. package/dist/storage/projection-runs/types.d.ts +2 -0
  536. package/dist/storage/projection-runs/types.d.ts.map +1 -1
  537. package/dist/storage/types.d.ts +2 -0
  538. package/dist/storage/types.d.ts.map +1 -1
  539. package/dist/storage/workflow-runs/provider.js +10 -7
  540. package/dist/storage/workflow-runs/provider.js.map +1 -1
  541. package/dist/syncs/index.js +30 -27
  542. package/dist/syncs/index.js.map +1 -1
  543. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  544. package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
  545. package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
  546. package/dist/testing/file-download-grant-storage-contract.d.ts +9 -0
  547. package/dist/testing/file-download-grant-storage-contract.d.ts.map +1 -0
  548. package/dist/testing/index.d.ts +1 -0
  549. package/dist/testing/index.d.ts.map +1 -1
  550. package/dist/testing/index.js +2556 -1495
  551. package/dist/testing/index.js.map +14 -13
  552. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  553. package/dist/testing/materializer-storage-contract.d.ts +14 -0
  554. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  555. package/dist/testing/object-read-scope-contract.d.ts.map +1 -1
  556. package/dist/testing/ontology-contract-fixture.d.ts +5 -1
  557. package/dist/testing/ontology-contract-fixture.d.ts.map +1 -1
  558. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  559. package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
  560. package/dist/testing/queues-contract.d.ts.map +1 -1
  561. package/dist/webhooks/internal.js +25 -22
  562. package/dist/webhooks/internal.js.map +2 -2
  563. package/dist/workers/index.js +15 -17
  564. package/dist/workers/index.js.map +3 -3
  565. package/dist/workers/queue-worker.d.ts +3 -2
  566. package/dist/workers/queue-worker.d.ts.map +1 -1
  567. package/dist/workflows/builders.d.ts.map +1 -1
  568. package/dist/workflows/index.js +51 -47
  569. package/dist/workflows/index.js.map +1 -1
  570. package/dist/workflows/request.d.ts.map +1 -1
  571. package/dist/workflows/types.d.ts +6 -3
  572. package/dist/workflows/types.d.ts.map +1 -1
  573. package/dist/workflows/validation.d.ts +2 -1
  574. package/dist/workflows/validation.d.ts.map +1 -1
  575. package/package.json +7 -1
  576. package/src/actions/read-facade.ts +2 -1
  577. package/src/actions/types/context.ts +5 -2
  578. package/src/actions/validation.ts +4 -1
  579. package/src/agents/adapters.ts +15 -0
  580. package/src/agents/authority.ts +15 -0
  581. package/src/agents/context/entries.ts +48 -4
  582. package/src/agents/context/index.ts +1 -0
  583. package/src/agents/context-compaction.ts +6 -0
  584. package/src/agents/errors.ts +3 -0
  585. package/src/agents/index.ts +13 -1
  586. package/src/agents/message.ts +9 -0
  587. package/src/agents/request.ts +178 -22
  588. package/src/agents/skills.ts +63 -0
  589. package/src/agents/types.ts +35 -5
  590. package/src/auth/runtime.ts +14 -0
  591. package/src/auth/types.ts +6 -0
  592. package/src/authorization/resolve.ts +6 -1
  593. package/src/authorization/types.ts +7 -0
  594. package/src/blob-storage/download-urls.ts +138 -0
  595. package/src/blob-storage/execution.ts +44 -1
  596. package/src/blob-storage/file-content.ts +106 -0
  597. package/src/blob-storage/index.ts +1 -0
  598. package/src/blob-storage/internal.ts +8 -0
  599. package/src/blob-storage/media-type.ts +29 -0
  600. package/src/blob-storage/types.ts +13 -1
  601. package/src/blob-storage/validation.ts +13 -0
  602. package/src/bootstrap/agent-context.ts +356 -0
  603. package/src/bootstrap/discovery.ts +100 -33
  604. package/src/bootstrap/index.ts +1 -1
  605. package/src/bootstrap/ontology-type-manifest.ts +3 -38
  606. package/src/datasets/builders.ts +17 -1
  607. package/src/datasets/execution.ts +110 -2
  608. package/src/datasets/index.ts +7 -1
  609. package/src/datasets/types.ts +2 -0
  610. package/src/datasets/write.ts +21 -2
  611. package/src/edits/properties.ts +3 -0
  612. package/src/events/execution.ts +15 -16
  613. package/src/events/types/objects.ts +5 -0
  614. package/src/execution/agent.ts +27 -0
  615. package/src/execution/authorization.ts +1 -0
  616. package/src/execution/authorized-object-reader.ts +104 -35
  617. package/src/execution/scopes.ts +2 -6
  618. package/src/http/api-routes.ts +4 -3
  619. package/src/index.ts +52 -2
  620. package/src/lake-storage/in-memory.ts +38 -9
  621. package/src/lake-storage/index.ts +2 -0
  622. package/src/lake-storage/types.ts +30 -0
  623. package/src/maintenance/ontology-maintenance.ts +50 -23
  624. package/src/maintenance/types.ts +1 -4
  625. package/src/materialization/event-envelopes.ts +168 -0
  626. package/src/materialization/events.ts +40 -4
  627. package/src/materialization/index.ts +9 -1
  628. package/src/materializer/README.md +55 -10
  629. package/src/materializer/edits/commit.ts +3 -19
  630. package/src/materializer/edits/plan.ts +20 -71
  631. package/src/materializer/effective/build-events.ts +42 -136
  632. package/src/materializer/effective/vector-indexing.ts +2 -3
  633. package/src/materializer/effective/vectors.ts +2 -3
  634. package/src/materializer/execution/scope.ts +1 -38
  635. package/src/materializer/execution/work-executor.ts +21 -115
  636. package/src/materializer/execution/work-records.ts +0 -15
  637. package/src/materializer/projections/replace.ts +106 -63
  638. package/src/materializer/projections/replacement-plan.ts +73 -218
  639. package/src/materializer/shared/batching.ts +7 -0
  640. package/src/materializer/telemetry/append.ts +2 -14
  641. package/src/materializer/telemetry/plan.ts +6 -43
  642. package/src/models/audio/catalog.ts +90 -0
  643. package/src/models/audio/errors.ts +19 -0
  644. package/src/models/audio/file.ts +78 -0
  645. package/src/models/audio/runtime.ts +182 -0
  646. package/src/models/audio/types.ts +69 -0
  647. package/src/models/catalog.ts +78 -7
  648. package/src/models/definitions.ts +8 -1
  649. package/src/models/events.ts +3 -0
  650. package/src/models/execution/README.md +24 -4
  651. package/src/models/execution/binding.ts +6 -0
  652. package/src/models/execution/model-call-admission.ts +6 -1
  653. package/src/models/execution/model-call-limits.ts +21 -11
  654. package/src/models/execution/model-call-recorder.ts +11 -0
  655. package/src/models/execution/model-call-recovery.ts +1 -0
  656. package/src/models/execution/reranking.ts +137 -0
  657. package/src/models/execution/session.ts +2 -2
  658. package/src/models/execution/usage.ts +1 -0
  659. package/src/models/execution.ts +11 -3
  660. package/src/models/generation-types.ts +2 -0
  661. package/src/models/index.ts +32 -0
  662. package/src/models/language-model.ts +6 -0
  663. package/src/models/pricing.ts +2 -1
  664. package/src/models/reranking-model.ts +114 -0
  665. package/src/objects/context/index.ts +1 -0
  666. package/src/objects/context/types.ts +7 -0
  667. package/src/objects/execution.ts +4 -1
  668. package/src/objects/materializer-adapter.ts +3 -0
  669. package/src/objects/object/upsert-batch.ts +4 -1
  670. package/src/objects/object/upsert.ts +3 -1
  671. package/src/objects/property-clearance.ts +209 -0
  672. package/src/objects/query/executor.ts +85 -38
  673. package/src/objects/query/explain.ts +8 -0
  674. package/src/objects/query/index.ts +1 -0
  675. package/src/objects/query/ir.ts +10 -0
  676. package/src/objects/query/normalize.ts +2 -0
  677. package/src/objects/query/planner.ts +12 -1
  678. package/src/objects/query/primary-id.ts +56 -0
  679. package/src/objects/query/reranking-executor.ts +91 -0
  680. package/src/objects/query/reranking-limits.ts +3 -0
  681. package/src/objects/query/reranking-query.ts +8 -0
  682. package/src/objects/query/validate.ts +166 -15
  683. package/src/objects/sdk/file-handle.ts +77 -0
  684. package/src/objects/sdk/object-handle.ts +8 -4
  685. package/src/objects/sdk/object-set.ts +5 -2
  686. package/src/objects/sdk/query-builder.ts +15 -2
  687. package/src/objects/sdk/query-executor.ts +2 -2
  688. package/src/objects/sdk/runtime-query-executor.ts +7 -4
  689. package/src/objects/vectors/README.md +6 -2
  690. package/src/objects/vectors/indexing-dispatch.ts +83 -0
  691. package/src/objects/vectors/query.ts +3 -0
  692. package/src/ontology/builders.ts +19 -2
  693. package/src/ontology/docs-markdown.ts +394 -0
  694. package/src/ontology/docs.ts +196 -0
  695. package/src/ontology/index.ts +2 -0
  696. package/src/ontology/inference/index.ts +25 -0
  697. package/src/ontology/internal.ts +7 -0
  698. package/src/ontology/query-capabilities.ts +1 -1
  699. package/src/ontology/tokens.ts +13 -2
  700. package/src/ontology/types.ts +26 -0
  701. package/src/ontology/validation/index.ts +1 -0
  702. package/src/ontology/validation/query.ts +57 -0
  703. package/src/ontology/validation/schema.ts +26 -1
  704. package/src/query.ts +4 -0
  705. package/src/queues/in-memory.ts +54 -19
  706. package/src/queues/types.ts +4 -0
  707. package/src/runtime/create.ts +34 -4
  708. package/src/runtime/definitions.ts +3 -1
  709. package/src/runtime/host.ts +73 -2
  710. package/src/runtime/index.ts +4 -0
  711. package/src/runtime/internal.ts +1 -0
  712. package/src/runtime/locale.ts +26 -0
  713. package/src/runtime/public-origin.ts +33 -0
  714. package/src/runtime/resolve-definitions.ts +28 -1
  715. package/src/runtime/sixb.ts +14 -3
  716. package/src/runtime/types.ts +51 -5
  717. package/src/scheduler/runtime.ts +11 -2
  718. package/src/security/builders.ts +49 -5
  719. package/src/security/index.ts +6 -1
  720. package/src/security/markings.ts +313 -0
  721. package/src/security/redactions.ts +6 -0
  722. package/src/security/registry.ts +21 -1
  723. package/src/security/types.ts +26 -0
  724. package/src/security/validation.ts +59 -2
  725. package/src/storage/agents/provider.ts +11 -0
  726. package/src/storage/agents/types.ts +15 -7
  727. package/src/storage/ai-cost/analytics.ts +2 -0
  728. package/src/storage/ai-cost/codec.ts +2 -1
  729. package/src/storage/ai-cost/types.ts +1 -0
  730. package/src/storage/ai-cost/validation.ts +21 -8
  731. package/src/storage/ai-limits/in-memory.ts +10 -2
  732. package/src/storage/ai-limits/provider.ts +29 -2
  733. package/src/storage/ai-limits/types.ts +3 -0
  734. package/src/storage/ai-usage/record.ts +9 -0
  735. package/src/storage/ai-usage/types.ts +8 -4
  736. package/src/storage/ai-usage/usage.ts +2 -0
  737. package/src/storage/file-download-grants/in-memory.ts +73 -0
  738. package/src/storage/file-download-grants/index.ts +8 -0
  739. package/src/storage/file-download-grants/record.ts +47 -0
  740. package/src/storage/file-download-grants/types.ts +48 -0
  741. package/src/storage/in-memory/index.ts +13 -2
  742. package/src/storage/index.ts +32 -13
  743. package/src/storage/internal.ts +1 -0
  744. package/src/storage/migrations/index.ts +1 -0
  745. package/src/storage/migrations/migrate-storage.ts +36 -12
  746. package/src/storage/migrations/types.ts +8 -0
  747. package/src/storage/objects/in-memory/query.ts +2 -0
  748. package/src/storage/objects/in-memory/selected-reader.ts +1 -0
  749. package/src/storage/objects/in-memory/storage.ts +1 -0
  750. package/src/storage/objects/query-preparation.ts +77 -0
  751. package/src/storage/objects/types.ts +9 -0
  752. package/src/storage/ontology/commits.ts +1 -6
  753. package/src/storage/ontology/in-memory/index.ts +28 -9
  754. package/src/storage/ontology/in-memory/materializations-finalization.ts +35 -68
  755. package/src/storage/ontology/in-memory/materializations-state.ts +0 -22
  756. package/src/storage/ontology/in-memory/materializations-work.ts +0 -45
  757. package/src/storage/ontology/in-memory/materializations.ts +172 -653
  758. package/src/storage/ontology/in-memory/outbox.ts +37 -29
  759. package/src/storage/ontology/in-memory/replacement-plans.ts +697 -0
  760. package/src/storage/ontology/in-memory/shared-state.ts +24 -2
  761. package/src/storage/ontology/in-memory/source-roots.ts +7 -2
  762. package/src/storage/ontology/in-memory/sources.ts +7 -33
  763. package/src/storage/ontology/in-memory/state-reader.ts +245 -0
  764. package/src/storage/ontology/index.ts +19 -13
  765. package/src/storage/ontology/materializations.ts +45 -74
  766. package/src/storage/ontology/outbox.ts +4 -7
  767. package/src/storage/ontology/provider-header-validation.ts +0 -57
  768. package/src/storage/ontology/provider-work.ts +381 -90
  769. package/src/storage/ontology/provider.ts +74 -171
  770. package/src/storage/ontology/replacement-plans.ts +117 -0
  771. package/src/storage/ontology/sources.ts +0 -12
  772. package/src/storage/operation-scope.ts +33 -1
  773. package/src/storage/projection-runs/in-memory.ts +7 -1
  774. package/src/storage/projection-runs/types.ts +2 -0
  775. package/src/storage/types.ts +2 -0
  776. package/src/testing/ai-cost-storage-contract.ts +1 -0
  777. package/src/testing/ai-limit-storage-contract.ts +62 -0
  778. package/src/testing/ai-usage-storage-contract.ts +31 -0
  779. package/src/testing/file-download-grant-storage-contract.ts +139 -0
  780. package/src/testing/index.ts +4 -0
  781. package/src/testing/lake-storage-contract.ts +87 -1
  782. package/src/testing/materializer-storage-contract.ts +1008 -1
  783. package/src/testing/object-read-scope-contract.ts +1 -0
  784. package/src/testing/ontology-contract-fixture.ts +11 -87
  785. package/src/testing/ontology-storage-contract.ts +70 -39
  786. package/src/testing/projection-run-storage-contract.ts +14 -0
  787. package/src/testing/queues-contract.ts +59 -0
  788. package/src/workers/queue-worker.ts +19 -16
  789. package/src/workflows/builders.ts +24 -1
  790. package/src/workflows/request.ts +3 -0
  791. package/src/workflows/types.ts +6 -3
  792. package/src/workflows/validation.ts +32 -4
  793. package/dist/chunk-3q7z9hd4.js.map +0 -46
  794. package/dist/chunk-667x4drs.js.map +0 -12
  795. package/dist/chunk-69266efg.js.map +0 -12
  796. package/dist/chunk-6z1q7j19.js.map +0 -62
  797. package/dist/chunk-7ytf06d3.js +0 -113
  798. package/dist/chunk-7ytf06d3.js.map +0 -10
  799. package/dist/chunk-8x74221e.js.map +0 -20
  800. package/dist/chunk-91kcnbf0.js.map +0 -10
  801. package/dist/chunk-98cw09sw.js.map +0 -10
  802. package/dist/chunk-9vx5e9g1.js.map +0 -11
  803. package/dist/chunk-a0073121.js.map +0 -12
  804. package/dist/chunk-a7ne02hk.js.map +0 -15
  805. package/dist/chunk-cd234ba4.js.map +0 -14
  806. package/dist/chunk-chdg6eqq.js.map +0 -10
  807. package/dist/chunk-dmn70ztd.js.map +0 -11
  808. package/dist/chunk-f72rbvsb.js.map +0 -19
  809. package/dist/chunk-g4rbm4a6.js.map +0 -15
  810. package/dist/chunk-h044jb97.js.map +0 -15
  811. package/dist/chunk-h3v76ams.js.map +0 -11
  812. package/dist/chunk-h4138ww2.js.map +0 -50
  813. package/dist/chunk-hgqpcmyr.js.map +0 -12
  814. package/dist/chunk-jgwb25gc.js.map +0 -12
  815. package/dist/chunk-k4kkp58d.js.map +0 -11
  816. package/dist/chunk-kttr5ftm.js.map +0 -12
  817. package/dist/chunk-kvysp909.js.map +0 -17
  818. package/dist/chunk-mdnw7nj8.js.map +0 -15
  819. package/dist/chunk-s3csryxe.js.map +0 -11
  820. package/dist/chunk-tnvafr7g.js.map +0 -19
  821. package/dist/chunk-vjqt7q3a.js.map +0 -36
  822. package/dist/chunk-xnx96gfy.js.map +0 -15
  823. package/dist/chunk-z5rnrmz1.js.map +0 -11
  824. package/dist/chunk-zvmr2hqk.js.map +0 -12
  825. package/dist/materializer/execution/plan-stream.d.ts +0 -8
  826. package/dist/materializer/execution/plan-stream.d.ts.map +0 -1
  827. package/src/materializer/execution/plan-stream.ts +0 -121
  828. /package/dist/{chunk-4gmng3vf.js.map → chunk-22v5bpz3.js.map} +0 -0
  829. /package/dist/{chunk-fj1dvp37.js.map → chunk-2vhg6ysa.js.map} +0 -0
  830. /package/dist/{chunk-gmdvns8f.js.map → chunk-48e3cn2d.js.map} +0 -0
  831. /package/dist/{chunk-cq44v1a6.js.map → chunk-7hpdd6r9.js.map} +0 -0
  832. /package/dist/{chunk-rb143ggb.js.map → chunk-bwjcehza.js.map} +0 -0
  833. /package/dist/{chunk-7g2gjvah.js.map → chunk-ex496vct.js.map} +0 -0
  834. /package/dist/{chunk-nvymebc1.js.map → chunk-f1zxad2t.js.map} +0 -0
  835. /package/dist/{chunk-b9y8hcm2.js.map → chunk-mfs23znk.js.map} +0 -0
  836. /package/dist/{chunk-h866d223.js.map → chunk-qkvz64nd.js.map} +0 -0
  837. /package/dist/{chunk-tkdbge6v.js.map → chunk-rt9p8m9t.js.map} +0 -0
  838. /package/dist/{chunk-sbcm1b92.js.map → chunk-v6xpd60t.js.map} +0 -0
  839. /package/dist/{chunk-nj0020ay.js.map → chunk-vgk3hknm.js.map} +0 -0
  840. /package/dist/{chunk-qnd7ehe5.js.map → chunk-vx2yp45y.js.map} +0 -0
  841. /package/dist/{chunk-nkbev3tr.js.map → chunk-yv9czyfr.js.map} +0 -0
  842. /package/dist/{chunk-cxj8y8t0.js.map → chunk-za5yd58j.js.map} +0 -0
  843. /package/dist/{chunk-zb47r1c8.js.map → chunk-zb77kjth.js.map} +0 -0
  844. /package/dist/{chunk-dp7yk20b.js.map → chunk-zxawp1n2.js.map} +0 -0
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/blob-storage/derive.ts", "../src/blob-storage/media-type.ts", "../src/blob-storage/validation.ts"],
4
+ "sourcesContent": [
5
+ "import type { BlobDigest } from \"./types\"\n\n// Pure, crypto-free derivations of blob identity from a digest. Kept out of\n// `utils.ts` (which imports `node:crypto`) so the browser-safe `./browser`\n// barrel can reuse them without dragging Node crypto into the client bundle.\n\nexport function blobDigestHex(digest: BlobDigest): string {\n return digest.slice(\"sha256:\".length)\n}\n\nexport function blobIdFromDigest(digest: BlobDigest): string {\n return `blob_${blobDigestHex(digest)}`\n}\n",
6
+ "// One media type as RFC 9110 defines it: `type/subtype`, each a token, then optional\n// `;name=value` parameters whose value is a token or a quoted string. Stricter than the RFC where\n// leniency only invites a second reading: no surrounding whitespace, no empty parameters, no\n// escapes, and no comma anywhere. Browsers read a comma-separated value as a list of types and\n// use the last valid one, so a value with a comma can mean something other than its first type.\nconst TOKEN = \"[!#$%&'*+.^_`|~0-9A-Za-z-]+\"\nconst QUOTED_STRING = '\"[\\\\t\\\\x20\\\\x21\\\\x23-\\\\x2b\\\\x2d-\\\\x5b\\\\x5d-\\\\x7e]*\"'\nconst PARAMETER = `[\\\\t ]*;[\\\\t ]*(${TOKEN})=(${TOKEN}|${QUOTED_STRING})`\nconst MEDIA_TYPE_PATTERN = new RegExp(`^(${TOKEN})/(${TOKEN})((?:${PARAMETER})*)$`)\nconst PARAMETER_PATTERN = new RegExp(PARAMETER, \"g\")\n\n/**\n * The canonical form of a single well-formed media type, or `null` for anything else.\n *\n * Type, subtype, and parameter names are case-insensitive, so they are lowercased; parameter\n * values keep their case. `\"Text/Plain; Charset=UTF-8\"` becomes `\"text/plain;charset=UTF-8\"`.\n */\nexport function canonicalMediaType(value: unknown): string | null {\n if (typeof value !== \"string\") return null\n const match = MEDIA_TYPE_PATTERN.exec(value)\n if (!match) return null\n\n const [, type, subtype, parameters] = match\n let canonical = `${type.toLowerCase()}/${subtype.toLowerCase()}`\n for (const [, name, parameterValue] of parameters.matchAll(PARAMETER_PATTERN)) {\n canonical += `;${name.toLowerCase()}=${parameterValue}`\n }\n return canonical\n}\n",
7
+ "import { isPlainRecord } from \"../json\"\nimport { blobIdFromDigest } from \"./derive\"\nimport { canonicalMediaType } from \"./media-type\"\nimport type {\n BlobDigest,\n BlobStorage,\n DirectUploadBlobStorage,\n FileRef,\n RangeReadableBlobStorage,\n} from \"./types\"\n\nexport function isBlobDigest(value: unknown): value is BlobDigest {\n return typeof value === \"string\" && value.startsWith(\"sha256:\") && value.length > \"sha256:\".length\n}\n\nexport function isFileRef(value: unknown): value is FileRef {\n return (\n isPlainRecord(value) &&\n typeof value.blobId === \"string\" &&\n value.blobId.trim().length > 0 &&\n isBlobDigest(value.digest) &&\n // Blob identity is content-addressed: the id must be derivable from the digest.\n // Rejecting a mismatch guards against tampered or malformed references.\n value.blobId === blobIdFromDigest(value.digest) &&\n typeof value.sizeBytes === \"number\" &&\n Number.isInteger(value.sizeBytes) &&\n value.sizeBytes >= 0 &&\n (value.fileName === undefined || typeof value.fileName === \"string\") &&\n (value.mediaType === undefined || typeof value.mediaType === \"string\") &&\n (value.logicalPath === undefined || typeof value.logicalPath === \"string\")\n )\n}\n\n/**\n * `isFileRef`, plus a `mediaType` that, when present, is exactly one media type. Paths that store\n * a reference a caller hands them use this. Reads keep `isFileRef`, so references stored before\n * the rule still load; file routes re-parse the type before serving it.\n */\nexport function isValidFileRef(value: unknown): value is FileRef {\n return (\n isFileRef(value) &&\n (value.mediaType === undefined || canonicalMediaType(value.mediaType) !== null)\n )\n}\n\nexport function supportsDirectUpload(\n storage: BlobStorage\n): storage is BlobStorage & DirectUploadBlobStorage {\n const candidate = storage as Partial<DirectUploadBlobStorage>\n return (\n typeof candidate.createUpload === \"function\" &&\n typeof candidate.signUploadPart === \"function\" &&\n typeof candidate.completeUpload === \"function\" &&\n typeof candidate.abortUpload === \"function\"\n )\n}\n\nexport function supportsRangeRead(\n storage: BlobStorage\n): storage is BlobStorage & RangeReadableBlobStorage {\n const candidate = storage as Partial<RangeReadableBlobStorage>\n return typeof candidate.openRange === \"function\"\n}\n"
8
+ ],
9
+ "mappings": ";;;;;;AAMO,SAAS,cAAa,CAAC,QAA4B;AAAA,EACxD,OAAO,OAAO,MAAM,UAAU,MAAM;AAAA;AAG/B,SAAS,iBAAgB,CAAC,QAA4B;AAAA,EAC3D,OAAO,QAAQ,eAAc,MAAM;AAAA;;;ACNrC,IAAM,QAAQ;AACd,IAAM,gBAAgB;AACtB,IAAM,YAAY,mBAAmB,WAAW,SAAS;AACzD,IAAM,qBAAqB,IAAI,OAAO,KAAK,WAAW,aAAa,eAAe;AAClF,IAAM,oBAAoB,IAAI,OAAO,WAAW,GAAG;AAQ5C,SAAS,mBAAkB,CAAC,OAA+B;AAAA,EAChE,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EACtC,MAAM,QAAQ,mBAAmB,KAAK,KAAK;AAAA,EAC3C,IAAI,CAAC;AAAA,IAAO,OAAO;AAAA,EAEnB,SAAS,MAAM,SAAS,cAAc;AAAA,EACtC,IAAI,YAAY,GAAG,KAAK,YAAY,KAAK,QAAQ,YAAY;AAAA,EAC7D,cAAc,MAAM,mBAAmB,WAAW,SAAS,iBAAiB,GAAG;AAAA,IAC7E,aAAa,IAAI,KAAK,YAAY,KAAK;AAAA,EACzC;AAAA,EACA,OAAO;AAAA;;;AChBF,SAAS,aAAY,CAAC,OAAqC;AAAA,EAChE,OAAO,OAAO,UAAU,YAAY,MAAM,WAAW,SAAS,KAAK,MAAM,SAAS,UAAU;AAAA;AAGvF,SAAS,UAAS,CAAC,OAAkC;AAAA,EAC1D,OACE,cAAc,KAAK,KACnB,OAAO,MAAM,WAAW,YACxB,MAAM,OAAO,KAAK,EAAE,SAAS,KAC7B,cAAa,MAAM,MAAM,KAGzB,MAAM,WAAW,kBAAiB,MAAM,MAAM,KAC9C,OAAO,MAAM,cAAc,YAC3B,OAAO,UAAU,MAAM,SAAS,KAChC,MAAM,aAAa,MAClB,MAAM,aAAa,aAAa,OAAO,MAAM,aAAa,cAC1D,MAAM,cAAc,aAAa,OAAO,MAAM,cAAc,cAC5D,MAAM,gBAAgB,aAAa,OAAO,MAAM,gBAAgB;AAAA;AAS9D,SAAS,cAAc,CAAC,OAAkC;AAAA,EAC/D,OACE,WAAU,KAAK,MACd,MAAM,cAAc,aAAa,oBAAmB,MAAM,SAAS,MAAM;AAAA;AAIvE,SAAS,qBAAoB,CAClC,SACkD;AAAA,EAClD,MAAM,YAAY;AAAA,EAClB,OACE,OAAO,UAAU,iBAAiB,cAClC,OAAO,UAAU,mBAAmB,cACpC,OAAO,UAAU,mBAAmB,cACpC,OAAO,UAAU,gBAAgB;AAAA;AAI9B,SAAS,kBAAiB,CAC/B,SACmD;AAAA,EACnD,MAAM,YAAY;AAAA,EAClB,OAAO,OAAO,UAAU,cAAc;AAAA;",
10
+ "debugId": "91CB77087AB7E2E164756E2164756E21",
11
+ "names": []
12
+ }
@@ -4,11 +4,11 @@ import {
4
4
  createAiModelCallLimitController2,
5
5
  AiModelCallRecorder2,
6
6
  enqueueAiModelCallRecovery2
7
- } from "./chunk-kvysp909.js";
7
+ } from "./chunk-ny3xyvcn.js";
8
8
  import {
9
9
  executionRecordInputFromRuntime,
10
10
  ensureExecutionRecord2
11
- } from "./chunk-7g2gjvah.js";
11
+ } from "./chunk-ex496vct.js";
12
12
 
13
13
  // src/models/execution/session.ts
14
14
  class ModelExecutionSession {
@@ -37,8 +37,8 @@ class ModelExecutionSession {
37
37
  await admit();
38
38
  }
39
39
  accounting() {
40
- this.requireBinding();
41
- this.recorder ??= this.createRecorder();
40
+ const { accounting } = this.requireBinding();
41
+ this.recorder ??= accounting ? Promise.resolve(accounting) : this.createRecorder();
42
42
  return this.recorder;
43
43
  }
44
44
  requireBinding() {
@@ -78,4 +78,4 @@ class ModelExecutionSession {
78
78
 
79
79
  export { ModelExecutionSession };
80
80
 
81
- //# debugId=B4533BBBCE49A1B164756E2164756E21
81
+ //# debugId=10658A85B28EF50464756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/models/execution/session.ts"],
4
+ "sourcesContent": [
5
+ "import type { ExecutionContext, RuntimeAuthorization } from \"../../execution\"\nimport { ensureExecutionRecord, executionRecordInputFromRuntime } from \"../../execution/durable\"\nimport type { SixbHostContext } from \"../../runtime/types\"\nimport type { ModelExecutionAttempt } from \"./binding\"\nimport { requireAccountingCapabilities } from \"./model-call-accounting\"\nimport { createAiModelCallLimitController } from \"./model-call-limits\"\nimport { AiModelCallRecorder } from \"./model-call-recorder\"\nimport { enqueueAiModelCallRecovery } from \"./recovery-queue\"\n\n/** One accounting boundary shared by all model protocols in a bound execution. */\nexport class ModelExecutionSession {\n private binding?: ModelExecutionAttempt\n private recorder?: Promise<AiModelCallRecorder>\n\n constructor(\n private readonly runtime: SixbHostContext & { runtimeAuthorization: RuntimeAuthorization },\n private readonly execution: ExecutionContext\n ) {}\n\n bind(input: ModelExecutionAttempt): void {\n if (this.binding) throw new Error(\"[SixbModels] Execution attempt is already bound.\")\n this.binding = { ...input }\n }\n\n signal(signal?: AbortSignal): AbortSignal {\n const binding = this.requireBinding()\n return signal ? AbortSignal.any([binding.signal, signal]) : binding.signal\n }\n\n async admitEmbeddingCall(admit: () => Promise<void>): Promise<void> {\n const admission = this.requireBinding().embeddingAdmission\n if (admission) await admission(admit)\n else await admit()\n }\n\n accounting(): Promise<AiModelCallRecorder> {\n const { accounting } = this.requireBinding()\n this.recorder ??= accounting ? Promise.resolve(accounting) : this.createRecorder()\n return this.recorder\n }\n\n private requireBinding(): ModelExecutionAttempt {\n if (!this.binding) {\n throw new Error(\n \"[SixbModels] Model calls require a bound request or worker execution attempt.\"\n )\n }\n return this.binding\n }\n\n private async createRecorder(): Promise<AiModelCallRecorder> {\n const runtime = this.runtime\n const execution = this.execution\n const { attempt } = this.requireBinding()\n const storage = {\n ...requireAccountingCapabilities(runtime.storage),\n transaction: runtime.storage.transaction.bind(runtime.storage),\n }\n const { requesterGroupIds } = await ensureExecutionRecord(\n runtime.storage.executions,\n executionRecordInputFromRuntime({\n execution,\n runtimeAuthorization: runtime.runtimeAuthorization,\n })\n )\n return new AiModelCallRecorder({\n storage,\n projectId: runtime.projectId,\n executionId: execution.id,\n attempt,\n requesterGroupIds,\n limits: createAiModelCallLimitController({\n storage,\n projectId: runtime.projectId,\n requestedBy: execution.requestedBy,\n requesterGroupIds,\n }),\n recoverAiModelCall: (input) => enqueueAiModelCallRecovery(runtime.queues.agents, input),\n })\n }\n}\n"
6
+ ],
7
+ "mappings": ";;;;;;;;;;;;;AAUO,MAAM,sBAAsB;AAAA,EAKd;AAAA,EACA;AAAA,EALX;AAAA,EACA;AAAA,EAER,WAAW,CACQ,SACA,WACjB;AAAA,IAFiB;AAAA,IACA;AAAA;AAAA,EAGnB,IAAI,CAAC,OAAoC;AAAA,IACvC,IAAI,KAAK;AAAA,MAAS,MAAM,IAAI,MAAM,kDAAkD;AAAA,IACpF,KAAK,UAAU,KAAK,MAAM;AAAA;AAAA,EAG5B,MAAM,CAAC,QAAmC;AAAA,IACxC,MAAM,UAAU,KAAK,eAAe;AAAA,IACpC,OAAO,SAAS,YAAY,IAAI,CAAC,QAAQ,QAAQ,MAAM,CAAC,IAAI,QAAQ;AAAA;AAAA,OAGhE,mBAAkB,CAAC,OAA2C;AAAA,IAClE,MAAM,YAAY,KAAK,eAAe,EAAE;AAAA,IACxC,IAAI;AAAA,MAAW,MAAM,UAAU,KAAK;AAAA,IAC/B;AAAA,YAAM,MAAM;AAAA;AAAA,EAGnB,UAAU,GAAiC;AAAA,IACzC,QAAQ,eAAe,KAAK,eAAe;AAAA,IAC3C,KAAK,aAAa,aAAa,QAAQ,QAAQ,UAAU,IAAI,KAAK,eAAe;AAAA,IACjF,OAAO,KAAK;AAAA;AAAA,EAGN,cAAc,GAA0B;AAAA,IAC9C,IAAI,CAAC,KAAK,SAAS;AAAA,MACjB,MAAM,IAAI,MACR,+EACF;AAAA,IACF;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,OAGA,eAAc,GAAiC;AAAA,IAC3D,MAAM,UAAU,KAAK;AAAA,IACrB,MAAM,YAAY,KAAK;AAAA,IACvB,QAAQ,YAAY,KAAK,eAAe;AAAA,IACxC,MAAM,UAAU;AAAA,SACX,8BAA8B,QAAQ,OAAO;AAAA,MAChD,aAAa,QAAQ,QAAQ,YAAY,KAAK,QAAQ,OAAO;AAAA,IAC/D;AAAA,IACA,QAAQ,sBAAsB,MAAM,uBAClC,QAAQ,QAAQ,YAChB,gCAAgC;AAAA,MAC9B;AAAA,MACA,sBAAsB,QAAQ;AAAA,IAChC,CAAC,CACH;AAAA,IACA,OAAO,IAAI,qBAAoB;AAAA,MAC7B;AAAA,MACA,WAAW,QAAQ;AAAA,MACnB,aAAa,UAAU;AAAA,MACvB;AAAA,MACA;AAAA,MACA,QAAQ,kCAAiC;AAAA,QACvC;AAAA,QACA,WAAW,QAAQ;AAAA,QACnB,aAAa,UAAU;AAAA,QACvB;AAAA,MACF,CAAC;AAAA,MACD,oBAAoB,CAAC,UAAU,4BAA2B,QAAQ,OAAO,QAAQ,KAAK;AAAA,IACxF,CAAC;AAAA;AAEL;",
8
+ "debugId": "10658A85B28EF50464756E2164756E21",
9
+ "names": []
10
+ }
@@ -52,6 +52,8 @@ function normalizeNode(query) {
52
52
  };
53
53
  case "traverse":
54
54
  return { ...query, input: normalizeObjectQuery2(query.input) };
55
+ case "rerank":
56
+ return { ...query, model: { ...query.model }, input: normalizeObjectQuery2(query.input) };
55
57
  case "set":
56
58
  return normalizeSet(query);
57
59
  case "sort":
@@ -282,4 +284,4 @@ function formatQueryPlanningMessage(issues) {
282
284
 
283
285
  export { formatObjectQueryExplanation2, normalizeObjectQuery2, normalizeObjectQueryPredicate2, ObjectQueryValidationError2, ObjectQueryPlanningError2, ObjectQueryExecutionError2 };
284
286
 
285
- //# debugId=D43510D30ECBDBA564756E2164756E21
287
+ //# debugId=F89B013FA810BE5464756E2164756E21
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/objects/query/explain-format.ts", "../src/objects/query/normalize.ts", "../src/objects/query/errors.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Formatting for object query explanations.\n *\n * Lives apart from `explain.ts` so the fluent builder (and browser bundles\n * built on it) can import the formatter without pulling in the explanation\n * builder and its validation machinery.\n */\nimport type { ObjectQueryExplainNode, ObjectQueryExplanation } from \"./explain\"\n\nexport function formatObjectQueryExplanation(explanation: ObjectQueryExplanation): string {\n const lines: string[] = []\n const status =\n explanation.valid === undefined ? \"not validated\" : explanation.valid ? \"valid\" : \"invalid\"\n const result = explanation.result ? ` result=${explanation.result.objectTypeIds.join(\" | \")}` : \"\"\n\n lines.push(`ObjectQuery ${status}${result}`)\n appendNodeLines(explanation.tree, lines, 0)\n\n if (explanation.issues.length > 0) {\n lines.push(\"Issues:\")\n for (const issue of explanation.issues) {\n lines.push(`- ${issue.path} [${issue.code}] ${issue.message}`)\n }\n }\n\n return lines.join(\"\\n\")\n}\n\nfunction appendNodeLines(node: ObjectQueryExplainNode, lines: string[], depth: number): void {\n lines.push(`${\" \".repeat(depth)}- ${node.path} ${node.summary}`)\n for (const child of node.children) {\n appendNodeLines(child, lines, depth + 1)\n }\n}\n",
6
+ "import type {\n ObjectExpansion,\n ObjectQuery,\n ObjectQueryPredicate,\n ObjectQuerySet,\n ObjectQuerySortField,\n} from \"./ir\"\n\n/**\n * Canonicalizes query trees before validation/planning so providers see a\n * stable shape regardless of how the typed builder assembled the query.\n *\n * `expand` is output-shaping, so it is hoisted to the outermost layer here: two\n * queries that differ only in where `.expand(...)` was chained normalize to the\n * same tree (and therefore the same cache key).\n */\nexport function normalizeObjectQuery(query: ObjectQuery): ObjectQuery {\n return hoistExpand(normalizeNode(query))\n}\n\nfunction normalizeNode(query: ObjectQuery): ObjectQuery {\n switch (query.kind) {\n case \"start\":\n return { ...query }\n case \"refs\":\n return {\n kind: \"refs\",\n refs: uniqueRefs(query.refs),\n }\n case \"filter\":\n return normalizeFilter(query.input, query.predicate)\n case \"text\":\n return {\n ...query,\n input: normalizeObjectQuery(query.input),\n fields: query.fields ? uniqueStrings(query.fields) : undefined,\n fieldsByObjectType: query.fieldsByObjectType\n ? uniqueStringRecord(query.fieldsByObjectType)\n : undefined,\n }\n case \"vector\":\n return {\n ...query,\n input: normalizeObjectQuery(query.input),\n vector: typeof query.vector === \"string\" ? query.vector : [...query.vector],\n }\n case \"traverse\":\n return { ...query, input: normalizeObjectQuery(query.input) }\n case \"rerank\":\n return { ...query, model: { ...query.model }, input: normalizeObjectQuery(query.input) }\n case \"set\":\n return normalizeSet(query)\n case \"sort\":\n return normalizeSort(query.input, query.fields)\n case \"limit\":\n return normalizeLimit(query.input, query.limit)\n case \"page\":\n return { ...query, input: normalizeObjectQuery(query.input) }\n case \"project\":\n return {\n ...query,\n input: normalizeObjectQuery(query.input),\n properties: query.properties ? uniqueStrings(query.properties) : undefined,\n }\n case \"expand\":\n return normalizeExpand(query.input, query.expansions)\n }\n}\n\n/**\n * Keeps `expand` at the outermost layer. A single-input wrapper sitting above an\n * `expand` is swapped so the `expand` wraps the (re-normalized) wrapper subtree;\n * re-normalizing collapses any nodes that became adjacent, and a wrapper that\n * lands above another `expand` is merged into one.\n */\nfunction hoistExpand(query: ObjectQuery): ObjectQuery {\n if (\n query.kind === \"start\" ||\n query.kind === \"refs\" ||\n query.kind === \"set\" ||\n query.kind === \"expand\"\n ) {\n return query\n }\n if (query.input.kind !== \"expand\") return query\n\n const inner = query.input\n const rebuilt = normalizeObjectQuery({ ...query, input: inner.input })\n if (rebuilt.kind === \"expand\") {\n return {\n kind: \"expand\",\n input: rebuilt.input,\n expansions: normalizeExpansions([...inner.expansions, ...rebuilt.expansions]),\n }\n }\n return { kind: \"expand\", input: rebuilt, expansions: inner.expansions }\n}\n\nfunction normalizeExpand(input: ObjectQuery, expansions: readonly ObjectExpansion[]): ObjectQuery {\n const normalizedInput = normalizeObjectQuery(input)\n const normalizedExpansions = normalizeExpansions(expansions)\n\n // A directly-nested expand (`a.expand(X).expand(Y)` builds\n // `expand(expand(start, [X]), [Y])`) collapses into one outermost expand.\n if (normalizedInput.kind === \"expand\") {\n return {\n kind: \"expand\",\n input: normalizedInput.input,\n expansions: normalizeExpansions([...normalizedInput.expansions, ...normalizedExpansions]),\n }\n }\n\n return { kind: \"expand\", input: normalizedInput, expansions: normalizedExpansions }\n}\n\nfunction normalizeExpansions(expansions: readonly ObjectExpansion[]): ObjectExpansion[] {\n const byKey = new Map<string, ObjectExpansion>()\n for (const expansion of expansions) {\n const normalized = normalizeExpansion(expansion)\n const key = expansionKey(normalized)\n const existing = byKey.get(key)\n byKey.set(key, existing ? mergeExpansion(existing, normalized) : normalized)\n }\n\n return [...byKey.values()].sort((a, b) => {\n const left = expansionKey(a)\n const right = expansionKey(b)\n return left < right ? -1 : left > right ? 1 : 0\n })\n}\n\nfunction normalizeExpansion(expansion: ObjectExpansion): ObjectExpansion {\n const nested = expansion.expand ? normalizeExpansions(expansion.expand) : []\n return {\n linkId: expansion.linkId,\n direction: expansion.direction,\n ...(expansion.sourceObjectTypeId !== undefined\n ? { sourceObjectTypeId: expansion.sourceObjectTypeId }\n : {}),\n ...(expansion.limit !== undefined ? { limit: expansion.limit } : {}),\n ...(expansion.orderBy ? { orderBy: expansion.orderBy.map((field) => ({ ...field })) } : {}),\n ...(nested.length > 0 ? { expand: nested } : {}),\n }\n}\n\n// Two expansions of the same link in the same direction are one hydration; their\n// nested expansions merge so the normalized tree never double-hydrates a link.\nfunction mergeExpansion(a: ObjectExpansion, b: ObjectExpansion): ObjectExpansion {\n const nested = normalizeExpansions([...(a.expand ?? []), ...(b.expand ?? [])])\n const { expand: _existing, ...base } = a\n return nested.length > 0 ? { ...base, expand: nested } : base\n}\n\nfunction expansionKey(expansion: ObjectExpansion): string {\n return `${expansion.direction}\\0${expansion.linkId}\\0${expansion.sourceObjectTypeId ?? \"\"}`\n}\n\nexport function normalizeObjectQueryPredicate(\n predicate: ObjectQueryPredicate\n): ObjectQueryPredicate {\n switch (predicate.op) {\n case \"and\":\n case \"or\": {\n const items = predicate.items.flatMap((item) => {\n const normalized = normalizeObjectQueryPredicate(item)\n if (normalized.op === predicate.op) return normalized.items\n return [normalized]\n })\n return items.length === 1 ? items[0] : { op: predicate.op, items }\n }\n case \"not\":\n return { op: \"not\", item: normalizeObjectQueryPredicate(predicate.item) }\n case \"in\":\n return { ...predicate, values: [...predicate.values] }\n default:\n return { ...predicate }\n }\n}\n\nfunction normalizeFilter(input: ObjectQuery, predicate: ObjectQueryPredicate): ObjectQuery {\n const normalizedInput = normalizeObjectQuery(input)\n const normalizedPredicate = normalizeObjectQueryPredicate(predicate)\n\n // Adjacent filters are equivalent to a single conjunction and are easier for\n // capability checks and providers to inspect.\n if (normalizedInput.kind === \"filter\") {\n return normalizeObjectQuery({\n kind: \"filter\",\n input: normalizedInput.input,\n predicate: {\n op: \"and\",\n items: [normalizedInput.predicate, normalizedPredicate],\n },\n })\n }\n\n return {\n kind: \"filter\",\n input: normalizedInput,\n predicate: normalizedPredicate,\n }\n}\n\nfunction normalizeSet(query: ObjectQuerySet): ObjectQuery {\n const inputs = query.inputs.flatMap((input) => {\n const normalized = normalizeObjectQuery(input)\n if (normalized.kind === \"set\" && normalized.op === query.op) return normalized.inputs\n return [normalized]\n })\n\n return { ...query, inputs }\n}\n\nfunction normalizeSort(input: ObjectQuery, fields: readonly ObjectQuerySortField[]): ObjectQuery {\n const normalizedInput = normalizeObjectQuery(input)\n const normalizedFields = fields.map((field) => ({ ...field }))\n\n // A later sort fully determines result order, so it replaces an adjacent sort.\n if (normalizedInput.kind === \"sort\") {\n return {\n kind: \"sort\",\n input: normalizedInput.input,\n fields: normalizedFields,\n }\n }\n\n return {\n kind: \"sort\",\n input: normalizedInput,\n fields: normalizedFields,\n }\n}\n\nfunction normalizeLimit(input: ObjectQuery, limit: number): ObjectQuery {\n const normalizedInput = normalizeObjectQuery(input)\n\n // Adjacent limits collapse to the stricter bound.\n if (normalizedInput.kind === \"limit\") {\n return {\n kind: \"limit\",\n input: normalizedInput.input,\n limit: Math.min(normalizedInput.limit, limit),\n }\n }\n\n return {\n kind: \"limit\",\n input: normalizedInput,\n limit,\n }\n}\n\nfunction uniqueStrings(values: readonly string[]): string[] {\n return [...new Set(values)]\n}\n\nfunction uniqueRefs(\n refs: readonly { objectTypeId: string; primaryId: string }[]\n): { objectTypeId: string; primaryId: string }[] {\n const seen = new Set<string>()\n const unique = refs.flatMap((ref) => {\n const key = JSON.stringify([ref.objectTypeId, ref.primaryId])\n if (seen.has(key)) return []\n seen.add(key)\n return [{ ...ref }]\n })\n\n // `refs` is an object-set source, not a positional batch response. Canonical\n // identity order makes equivalent sets normalize identically and matches the\n // default ordering used by provider query sources.\n return unique.sort(\n (left, right) =>\n compareStrings(left.objectTypeId, right.objectTypeId) ||\n compareStrings(left.primaryId, right.primaryId)\n )\n}\n\nfunction compareStrings(left: string, right: string): number {\n if (left < right) return -1\n if (left > right) return 1\n return 0\n}\n\nfunction uniqueStringRecord(\n record: Readonly<Record<string, readonly string[]>>\n): Record<string, string[]> {\n return Object.fromEntries(\n Object.entries(record).map(([objectTypeId, fields]) => [objectTypeId, uniqueStrings(fields)])\n )\n}\n",
7
+ "import type { ObjectQueryValidationIssue } from \"./validate\"\n\nexport interface ObjectQueryPlanningIssue {\n path: string\n code: string\n message: string\n}\n\nexport class ObjectQueryValidationError extends Error {\n readonly name = \"ObjectQueryValidationError\"\n readonly issues: readonly ObjectQueryValidationIssue[]\n\n constructor(issues: readonly ObjectQueryValidationIssue[]) {\n super(formatQueryValidationMessage(issues))\n this.issues = issues\n }\n}\n\nexport class ObjectQueryPlanningError extends Error {\n readonly name = \"ObjectQueryPlanningError\"\n readonly issues: readonly ObjectQueryPlanningIssue[]\n\n constructor(issues: readonly ObjectQueryPlanningIssue[]) {\n super(formatQueryPlanningMessage(issues))\n this.issues = issues\n }\n}\n\nexport class ObjectQueryExecutionError extends Error {\n readonly name = \"ObjectQueryExecutionError\"\n readonly code: string\n readonly path?: string\n\n constructor(code: string, message: string, path?: string) {\n super(`[Sixb] Object query execution failed: ${message}`)\n this.code = code\n this.path = path\n }\n}\n\nfunction formatQueryValidationMessage(issues: readonly ObjectQueryValidationIssue[]): string {\n if (issues.length === 0) return \"[Sixb] Object query validation failed\"\n if (issues.length === 1) return `[Sixb] Object query validation failed: ${issues[0].message}`\n return `[Sixb] Object query validation failed with ${issues.length} issues: ${issues\n .map((issue) => issue.message)\n .join(\"; \")}`\n}\n\nfunction formatQueryPlanningMessage(issues: readonly ObjectQueryPlanningIssue[]): string {\n if (issues.length === 0) return \"[Sixb] Object query planning failed\"\n if (issues.length === 1) return `[Sixb] Object query planning failed: ${issues[0].message}`\n return `[Sixb] Object query planning failed with ${issues.length} issues: ${issues\n .map((issue) => issue.message)\n .join(\"; \")}`\n}\n"
8
+ ],
9
+ "mappings": "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",
10
+ "debugId": "F89B013FA810BE5464756E2164756E21",
11
+ "names": []
12
+ }
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  defineLanguageModel2
4
- } from "./chunk-tnvafr7g.js";
4
+ } from "./chunk-29yx306f.js";
5
5
  import {
6
6
  ModelCatalogUnavailableError2
7
7
  } from "./chunk-kyjcwqz6.js";
@@ -4,25 +4,26 @@ import {
4
4
  isSixbError2
5
5
  } from "./chunk-6fsr7y93.js";
6
6
  import {
7
- AiLimitStorageError2
8
- } from "./chunk-jgwb25gc.js";
7
+ AiLimitStorageError2,
8
+ aiLimitMeterApplies2
9
+ } from "./chunk-4as3wt1c.js";
9
10
  import {
10
11
  aiLimitSubjectsFromAttribution2,
11
12
  applicableAiLimitPolicies2,
12
13
  aiUsageLimitExceededError2,
13
14
  aiUsageLimitUnavailableError2
14
- } from "./chunk-fj1dvp37.js";
15
+ } from "./chunk-2vhg6ysa.js";
15
16
  import {
16
17
  AiUsageStorageError2,
17
18
  normalizeAiModelCallCostRecord2,
18
19
  aiModelCallCostMatchesUsage2
19
- } from "./chunk-xnx96gfy.js";
20
+ } from "./chunk-ere85b8y.js";
20
21
  import {
21
22
  AiCostStorageError2
22
- } from "./chunk-6z1q7j19.js";
23
+ } from "./chunk-qq90g05n.js";
23
24
  import {
24
25
  normalizeAiModelCallRecord2
25
- } from "./chunk-s3csryxe.js";
26
+ } from "./chunk-rj69qcrd.js";
26
27
  import {
27
28
  assertJsonObject2
28
29
  } from "./chunk-wy0qdqfm.js";
@@ -37,7 +38,7 @@ function createAiModelCallLimitController2(input) {
37
38
  const policies = await input.storage.aiLimits.listPolicies({
38
39
  projectId: input.projectId
39
40
  });
40
- applicable = applicableAiLimitPolicies2(policies, subjects);
41
+ applicable = applicableAiLimitPolicies2(policies, subjects).filter((policy) => aiLimitMeterApplies2(policy.limit.meter, admission.modelKind));
41
42
  } catch (error) {
42
43
  throw limitStorageUnavailable(error);
43
44
  }
@@ -52,7 +53,8 @@ function createAiModelCallLimitController2(input) {
52
53
  result = await input.storage.aiLimits.reserveModelCall({
53
54
  ...reservationIdentity(admission),
54
55
  subjects,
55
- estimates
56
+ estimates,
57
+ ...admission.modelKind === undefined ? {} : { modelKind: admission.modelKind }
56
58
  });
57
59
  } catch (error) {
58
60
  throw limitStorageUnavailable(error);
@@ -80,20 +82,22 @@ function createAiModelCallLimitController2(input) {
80
82
  };
81
83
  }
82
84
  function reservationEstimates(input, needsCost) {
83
- if (input.inputTokens.status !== "estimated" || input.estimatedTotalTokens === undefined) {
84
- return [];
85
+ const estimates = [];
86
+ if (input.inputTokens.status === "estimated" && input.estimatedTotalTokens !== undefined) {
87
+ estimates.push({ meter: "tokens.total", amount: input.estimatedTotalTokens });
85
88
  }
86
- const estimates = [
87
- { meter: "tokens.total", amount: input.estimatedTotalTokens }
88
- ];
89
89
  if (needsCost) {
90
90
  try {
91
- const money = input.costEstimator?.estimateReservation?.({
92
- inputTokens: input.inputTokens.tokens,
93
- outputTokens: input.outputTokenAllowance
94
- });
95
- if (money)
91
+ let money = input.reservationCost;
92
+ if (money == null && input.inputTokens.status === "estimated") {
93
+ money = input.costEstimator?.estimateReservation?.({
94
+ inputTokens: input.inputTokens.tokens,
95
+ outputTokens: input.outputTokenAllowance
96
+ });
97
+ }
98
+ if (money) {
96
99
  estimates.push({ meter: "cost.catalogEstimated", amount: money });
100
+ }
97
101
  } catch {
98
102
  return estimates;
99
103
  }
@@ -263,6 +267,7 @@ function requireAccountingCapabilities(storage) {
263
267
  // src/models/execution/usage.ts
264
268
  function aiModelCallUsageFromModel(usage) {
265
269
  return {
270
+ ...usage.audioDurationMs === undefined ? {} : { audioDurationMs: usage.audioDurationMs },
266
271
  ...usage.inputTokens === undefined ? {} : { inputTokens: usage.inputTokens },
267
272
  ...usage.outputTokens === undefined ? {} : { outputTokens: usage.outputTokens },
268
273
  ...usage.uncachedInputTokens === undefined ? {} : { uncachedInputTokens: usage.uncachedInputTokens },
@@ -305,6 +310,7 @@ function toQueuePayload(record) {
305
310
  providerId: record.providerId,
306
311
  ...record.providerIds === undefined ? {} : { providerIds: structuredClone(record.providerIds) },
307
312
  requestedModelId: record.requestedModelId,
313
+ ...record.modelKind === undefined ? {} : { modelKind: record.modelKind },
308
314
  ...record.requestedReasoning === undefined ? {} : { requestedReasoning: structuredClone(record.requestedReasoning) },
309
315
  ...record.responseModelId === undefined ? {} : { responseModelId: record.responseModelId },
310
316
  responseId: record.responseId,
@@ -428,6 +434,12 @@ class AiModelCallRecorder2 {
428
434
  await recordAiModelCallAccounting({ storage: this.input.storage, ...recovery });
429
435
  });
430
436
  }
437
+ get executionId() {
438
+ return this.input.executionId;
439
+ }
440
+ get attempt() {
441
+ return this.input.attempt;
442
+ }
431
443
  wrapModel(model) {
432
444
  return {
433
445
  providerId: model.providerId,
@@ -501,6 +513,7 @@ class AiModelCallRecorder2 {
501
513
  providerId: event.providerId,
502
514
  ...event.providerIds === undefined ? {} : { providerIds: event.providerIds },
503
515
  requestedModelId: event.modelId,
516
+ ...event.modelKind === undefined ? {} : { modelKind: event.modelKind },
504
517
  ...event.requestedReasoning === undefined ? {} : { requestedReasoning: event.requestedReasoning },
505
518
  ...event.responseModelId === undefined ? {} : { responseModelId: event.responseModelId },
506
519
  responseId: event.responseId,
@@ -585,4 +598,4 @@ async function enqueueAiModelCallRecovery2(queue, input) {
585
598
 
586
599
  export { AI_MODEL_CALL_OUTPUT_TOKEN_ALLOWANCE, aiModelCallOutputTokenAllowance, requireAccountingCapabilities, createAiModelCallLimitController2, ModelUsageRecordingError2, recordRecoveredAiModelCall2, isPermanentAiUsageRecoveryError2, AiModelCallRecorder2, enqueueAiModelCallRecovery2 };
587
600
 
588
- //# debugId=2551F06B44879D0464756E2164756E21
601
+ //# debugId=4BD85BF64D5B7A3564756E2164756E21
@@ -0,0 +1,17 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/models/execution/model-call-limits.ts", "../src/models/execution/errors.ts", "../src/models/execution/model-call-accounting.ts", "../src/models/execution/usage.ts", "../src/models/execution/model-call-recovery.ts", "../src/models/execution/model-call-recorder.ts", "../src/models/execution/model-call-admission.ts", "../src/models/execution/recovery-queue.ts"],
4
+ "sourcesContent": [
5
+ "import { isSixbError } from \"../../errors/internal\"\nimport type { AuthorizablePrincipal } from \"../../execution\"\nimport type {\n AiLimitPolicy,\n AiLimitQuantity,\n AiModelCallReservationIdentity,\n ReserveAiModelCallResult,\n} from \"../../storage\"\nimport {\n aiLimitSubjectsFromAttribution,\n aiUsageLimitExceededError,\n aiUsageLimitUnavailableError,\n applicableAiLimitPolicies,\n} from \"../../storage/ai-limits/enforcement\"\nimport { aiLimitMeterApplies } from \"../../storage/ai-limits/provider\"\nimport type {\n AiModelCallAdmissionDecision,\n AiModelCallAdmissionInput,\n BeforeAiModelCall,\n MarkAiModelCallUnknown,\n} from \"./model-call-admission\"\nimport type { ModelCallAccountingStorage } from \"./types\"\n\nexport interface AiModelCallLimitController {\n readonly beforeModelCall: BeforeAiModelCall\n readonly markModelCallUnknown: MarkAiModelCallUnknown\n}\n\n/** Build the reservation lifecycle for model calls from any execution. */\nexport function createAiModelCallLimitController(input: {\n readonly storage: Pick<ModelCallAccountingStorage, \"aiLimits\">\n readonly projectId: string\n readonly requestedBy?: AuthorizablePrincipal\n readonly requesterGroupIds: readonly string[]\n}): AiModelCallLimitController {\n const subjects = aiLimitSubjectsFromAttribution(input.requestedBy, input.requesterGroupIds)\n\n return {\n beforeModelCall: async (admission) => {\n let applicable: readonly AiLimitPolicy[]\n try {\n const policies = await input.storage.aiLimits.listPolicies({\n projectId: input.projectId,\n })\n applicable = applicableAiLimitPolicies(policies, subjects).filter((policy) =>\n aiLimitMeterApplies(policy.limit.meter, admission.modelKind)\n )\n } catch (error) {\n throw limitStorageUnavailable(error)\n }\n // This read is the fast no-policy path. A concurrently created policy linearizes after it;\n // every later call will see it, while existing policies always continue to atomic reserve.\n if (applicable.length === 0) return { reservation: \"none\" }\n\n const estimates = reservationEstimates(\n admission,\n applicable.some((policy) => policy.limit.meter === \"cost.catalogEstimated\")\n )\n if (estimates.length === 0) {\n throw aiUsageLimitUnavailableError([\"missingEstimate\"])\n }\n\n let result: ReserveAiModelCallResult\n try {\n result = await input.storage.aiLimits.reserveModelCall({\n ...reservationIdentity(admission),\n subjects,\n estimates,\n ...(admission.modelKind === undefined ? {} : { modelKind: admission.modelKind }),\n })\n } catch (error) {\n throw limitStorageUnavailable(error)\n }\n switch (result.status) {\n case \"reserved\":\n return { reservation: \"active\" } satisfies AiModelCallAdmissionDecision\n case \"notRequired\":\n return { reservation: \"none\" } satisfies AiModelCallAdmissionDecision\n case \"denied\":\n throw aiUsageLimitExceededError(result.resetAt)\n case \"unavailable\":\n throw aiUsageLimitUnavailableError(result.reasons)\n case \"terminal\":\n throw aiUsageLimitUnavailableError([\"terminalReservationReplay\"])\n }\n },\n markModelCallUnknown: async (identity) => {\n try {\n await input.storage.aiLimits.markReservationUnknown(identity)\n } catch (error) {\n throw limitStorageUnavailable(error)\n }\n },\n }\n}\n\nfunction reservationEstimates(\n input: AiModelCallAdmissionInput,\n needsCost: boolean\n): readonly AiLimitQuantity[] {\n const estimates: AiLimitQuantity[] = []\n if (input.inputTokens.status === \"estimated\" && input.estimatedTotalTokens !== undefined) {\n estimates.push({ meter: \"tokens.total\", amount: input.estimatedTotalTokens })\n }\n\n if (needsCost) {\n try {\n let money = input.reservationCost\n if (money == null && input.inputTokens.status === \"estimated\") {\n money = input.costEstimator?.estimateReservation?.({\n inputTokens: input.inputTokens.tokens,\n outputTokens: input.outputTokenAllowance,\n })\n }\n\n if (money) {\n estimates.push({ meter: \"cost.catalogEstimated\", amount: money })\n }\n } catch {\n // An unavailable price must not prevent a token-only policy from being evaluated.\n return estimates\n }\n }\n\n return estimates\n}\n\nfunction reservationIdentity(input: AiModelCallAdmissionInput): AiModelCallReservationIdentity {\n return {\n projectId: input.projectId,\n executionId: input.executionId,\n attempt: input.attempt,\n callId: input.callId,\n }\n}\n\nfunction limitStorageUnavailable(error: unknown): unknown {\n if (\n isSixbError(error) &&\n (error.code === \"ai.usage_limit_exceeded\" || error.code === \"ai.usage_limit_unavailable\")\n ) {\n return error\n }\n return aiUsageLimitUnavailableError([\"limitStorageUnavailable\"])\n}\n",
6
+ "/** A provider call was not recorded synchronously, so its execution must stop. */\nexport class ModelUsageRecordingError extends Error {\n readonly name = \"ModelUsageRecordingError\"\n\n constructor(\n readonly executionId: string,\n readonly callId: string,\n readonly recoveryScheduled: boolean,\n options?: ErrorOptions\n ) {\n super(\n recoveryScheduled\n ? `[SixbModels] AI usage for call '${callId}' in execution '${executionId}' was deferred to durable recovery.`\n : `[SixbModels] Could not preserve AI usage for call '${callId}' in execution '${executionId}'.`,\n options\n )\n }\n}\n",
7
+ "import { createHash } from \"node:crypto\"\nimport { assertJsonObject } from \"../../json\"\nimport type {\n AiBillableMeter,\n AiCostStorage,\n AiLimitStorage,\n AiModelCallCostRecord,\n AiModelCallUsageRecord,\n AiPricingContext,\n AiUsageStorage,\n RecordAiModelCallResult,\n Storage,\n} from \"../../storage\"\nimport {\n aiModelCallCostMatchesUsage,\n normalizeAiModelCallCostRecord,\n} from \"../../storage/ai-cost/provider\"\nimport { normalizeAiModelCallRecord } from \"../../storage/ai-usage/record\"\nimport type { ModelCostEstimate } from \"../pricing\"\nimport type { ModelCallAccountingStorage, RecoverAiModelCallInput } from \"./types\"\n\ninterface RecordAiModelCallAccountingInput extends RecoverAiModelCallInput {\n readonly storage: Pick<ModelCallAccountingStorage, \"transaction\">\n}\n\ninterface AiAccountingCapabilities {\n readonly aiUsage: AiUsageStorage\n readonly aiCosts: AiCostStorage\n readonly aiLimits: AiLimitStorage\n}\n\n/** Atomically append one provider call's usage and the valuation captured by the model runtime. */\nexport async function recordAiModelCallAccounting(\n input: RecordAiModelCallAccountingInput\n): Promise<RecordAiModelCallResult> {\n return input.storage.transaction(async (tx) => {\n const { aiUsage, aiCosts, aiLimits } = requireAccountingCapabilities(tx)\n const usage = await aiUsage.recordModelCall(input.usage)\n // Usage deduplicates provider lifecycle replays by execution/call identity. Always attach the\n // valuation to the canonical row it returns, not the fresh candidate ID from a replay.\n const canonical = normalizeModelCallAccounting({\n ...input,\n usage: usage.record,\n ratedAt: usage.record.recordedAt,\n })\n const record = modelCostRecord(canonical, usage.record.id)\n const estimate =\n canonical.cost.status !== \"reported\" || canonical.estimate === undefined\n ? undefined\n : modelCostRecord({ ...canonical, cost: canonical.estimate }, usage.record.id)\n await aiCosts.recordModelCallCost({\n ...record,\n ...(estimate === undefined\n ? {}\n : {\n estimate:\n estimate.status === \"rated\"\n ? { status: \"rated\", money: estimate.money, components: estimate.components }\n : {\n status: \"unpriceable\",\n reason: estimate.reason,\n ...(estimate.missingMeters === undefined\n ? {}\n : { missingMeters: estimate.missingMeters }),\n },\n }),\n })\n if (usage.created) {\n await aiLimits.recordModelCallActuals({\n projectId: usage.record.projectId,\n usageRecordId: usage.record.id,\n recordedAt: input.ratedAt,\n })\n }\n if (input.reconcileLimitReservation) {\n await aiLimits.reconcileModelCall({\n projectId: usage.record.projectId,\n executionId: usage.record.executionId,\n attempt: usage.record.attempt,\n callId: usage.record.callId,\n usageRecordId: usage.record.id,\n reconciledAt: input.ratedAt,\n })\n }\n return usage\n })\n}\n\n/** Sanitize optional enrichment before either persistence or a JSON-safe recovery handoff. */\nexport function normalizeModelCallAccounting(\n input: RecoverAiModelCallInput\n): RecoverAiModelCallInput {\n const usage = normalizeAiModelCallRecord(input.usage)\n return {\n ...input,\n cost:\n input.cost.status === \"reported\" ? input.cost : validatedEstimate(input.cost, input, usage),\n ...(input.estimate === undefined\n ? {}\n : { estimate: validatedEstimate(input.estimate, input, usage) }),\n }\n}\n\nfunction validatedEstimate(\n cost: ModelCostEstimate,\n input: RecoverAiModelCallInput,\n usage: AiModelCallUsageRecord\n): ModelCostEstimate {\n try {\n assertJsonObject(cost, \"model cost estimate\")\n const record = normalizeAiModelCallCostRecord(modelCostRecord({ ...input, cost }, usage.id))\n if (!aiModelCallCostMatchesUsage(record, usage)) {\n throw new TypeError(\"Estimate quantities do not match recorded usage.\")\n }\n return structuredClone(cost)\n } catch {\n console.warn(\n \"[SixbModels] Invalid model cost estimate; preserving call usage and provider cost.\"\n )\n return { status: \"unpriceable\", reason: \"inconsistent-usage\" }\n }\n}\n\nfunction modelCostRecord(\n input: RecoverAiModelCallInput,\n usageRecordId: string\n): AiModelCallCostRecord {\n const billingIdentity = {\n providerId: input.usage.providerId,\n modelId: input.usage.requestedModelId,\n }\n const pricingContext: AiPricingContext = {\n ...(input.route?.providerId === undefined ? {} : { routedProviderId: input.route.providerId }),\n ...(input.route?.modelId === undefined ? {} : { routedModelId: input.route.modelId }),\n }\n if (input.cost.status === \"reported\" || input.cost.status === \"rated\") {\n return {\n projectId: input.usage.projectId,\n usageRecordId,\n status: \"rated\",\n billingIdentity,\n pricingContext,\n priceSource: costPriceSource(input.usage, input.cost),\n money: input.cost.money,\n components: input.cost.status === \"rated\" ? input.cost.components : [],\n ratedAt: new Date(input.ratedAt),\n }\n }\n\n const reason =\n input.cost.reason === \"missing-rate-card\"\n ? \"missingRateCard\"\n : input.cost.reason === \"missing-usage\"\n ? \"missingUsageMeter\"\n : \"invalidUsageForFormula\"\n const missingMeters =\n reason === \"missingUsageMeter\" ? normalizeMissingMeters(input.cost.missingMeters) : undefined\n return {\n projectId: input.usage.projectId,\n usageRecordId,\n status: \"unpriceable\",\n billingIdentity,\n pricingContext,\n reason,\n ...(missingMeters === undefined ? {} : { missingMeters }),\n ratedAt: new Date(input.ratedAt),\n }\n}\n\nfunction costPriceSource(\n usage: RecoverAiModelCallInput[\"usage\"],\n cost: Extract<RecoverAiModelCallInput[\"cost\"], { status: \"reported\" | \"rated\" }>\n) {\n if (cost.status === \"reported\") {\n return {\n sourceId: \"provider-reported\",\n sourceEntryId: `${usage.providerId}/${usage.responseId}`,\n sourceVersion: \"response-v1\",\n observedAt: new Date(usage.occurredAt),\n }\n }\n const rates = cost.components.map(({ meter, rateAmountNanosPerMillion }) => ({\n meter,\n rateAmountNanosPerMillion,\n }))\n const version = createHash(\"sha256\").update(JSON.stringify(rates)).digest(\"hex\")\n return {\n sourceId: \"model-rate-card\",\n sourceEntryId: `${usage.providerId}/${usage.requestedModelId}`,\n sourceVersion: `sha256:${version}`,\n observedAt: new Date(usage.occurredAt),\n }\n}\n\nfunction normalizeMissingMeters(\n meters: Extract<RecoverAiModelCallInput[\"cost\"], { status: \"unpriceable\" }>[\"missingMeters\"]\n): readonly AiBillableMeter[] {\n const fallback: readonly AiBillableMeter[] = [\"tokens.input.total\", \"tokens.output.total\"]\n return [...new Set<AiBillableMeter>(meters ?? fallback)]\n}\n\nexport function requireAccountingCapabilities(\n storage: Pick<Storage, \"aiUsage\" | \"aiCosts\" | \"aiLimits\">\n): AiAccountingCapabilities {\n if (!storage.aiUsage || !storage.aiCosts || !storage.aiLimits) {\n throw new Error(\n \"[SixbModels] AI model-call accounting requires storage.aiUsage, storage.aiCosts, and storage.aiLimits.\"\n )\n }\n return { aiUsage: storage.aiUsage, aiCosts: storage.aiCosts, aiLimits: storage.aiLimits }\n}\n",
8
+ "import type { AiModelCallUsageInput } from \"../../storage\"\nimport type { ModelUsage } from \"../events\"\n\n/** Map one provider-neutral model call into Sixb's durable accounting vocabulary. */\nexport function aiModelCallUsageFromModel(usage: ModelUsage): AiModelCallUsageInput {\n return {\n ...(usage.audioDurationMs === undefined ? {} : { audioDurationMs: usage.audioDurationMs }),\n ...(usage.inputTokens === undefined ? {} : { inputTokens: usage.inputTokens }),\n ...(usage.outputTokens === undefined ? {} : { outputTokens: usage.outputTokens }),\n ...(usage.uncachedInputTokens === undefined\n ? {}\n : { uncachedInputTokens: usage.uncachedInputTokens }),\n ...(usage.cacheReadInputTokens === undefined\n ? {}\n : { cacheReadInputTokens: usage.cacheReadInputTokens }),\n ...(usage.cacheWriteInputTokens === undefined\n ? {}\n : { cacheWriteInputTokens: usage.cacheWriteInputTokens }),\n ...(usage.textOutputTokens === undefined ? {} : { textOutputTokens: usage.textOutputTokens }),\n ...(usage.reasoningOutputTokens === undefined\n ? {}\n : { reasoningOutputTokens: usage.reasoningOutputTokens }),\n }\n}\n",
9
+ "import type { RecordAiModelCallInput, RecordAiModelCallResult } from \"../../storage\"\nimport { AiCostStorageError, AiLimitStorageError, AiUsageStorageError } from \"../../storage\"\nimport { normalizeAiModelCallRecord } from \"../../storage/ai-usage/record\"\nimport { recordAiModelCallAccounting } from \"./model-call-accounting\"\nimport type {\n AiModelCallAccountingPayload,\n AiModelCallRecordPayload,\n AiModelCallRecoveryRecord,\n ModelCallAccountingStorage,\n RecoverAiModelCallInput,\n} from \"./types\"\nimport { aiModelCallUsageFromModel } from \"./usage\"\n\nclass InvalidAiUsageRecoveryJobError extends Error {\n readonly name = \"InvalidAiUsageRecoveryJobError\"\n\n constructor(message: string, options?: ErrorOptions) {\n super(`[SixbModels] ${message}`, options)\n }\n}\n\n/** Encode one failed accounting transaction for a durable, JSON-safe handoff. */\nexport function modelCallRecoveryPayload(input: RecoverAiModelCallInput): {\n readonly record: AiModelCallRecordPayload\n readonly accounting: AiModelCallAccountingPayload\n} {\n normalizeAiModelCallRecord(input.usage)\n return {\n record: toQueuePayload(input.usage),\n accounting: toAccountingPayload(input),\n }\n}\n\n/** Replay one durable handoff through the idempotent atomic accounting boundary. */\nexport async function recordRecoveredAiModelCall(\n storage: Pick<ModelCallAccountingStorage, \"transaction\">,\n job: AiModelCallRecoveryRecord\n): Promise<RecordAiModelCallResult> {\n const usage = fromQueuePayload(job)\n const accounting = accountingFromQueuePayload(job)\n return recordAiModelCallAccounting({ storage, usage, ...accounting })\n}\n\n/** Validation and referential-integrity failures cannot become valid through queue redelivery. */\nexport function isPermanentAiUsageRecoveryError(error: unknown): boolean {\n return (\n error instanceof InvalidAiUsageRecoveryJobError ||\n error instanceof TypeError ||\n (error instanceof AiUsageStorageError &&\n (error.code === \"duplicate_id\" || error.code === \"missing_execution\")) ||\n (error instanceof AiCostStorageError &&\n (error.code === \"missing_usage\" || error.code === \"cost_mismatch\")) ||\n (error instanceof AiLimitStorageError &&\n (error.code === \"missing_execution\" ||\n error.code === \"missing_reservation\" ||\n error.code === \"missing_usage_record\" ||\n error.code === \"usage_mismatch\" ||\n error.code === \"reservation_conflict\" ||\n error.code === \"reconciliation_conflict\" ||\n error.code === \"invalid_reservation_state\"))\n )\n}\n\nfunction toQueuePayload(record: RecordAiModelCallInput): AiModelCallRecordPayload {\n return {\n id: record.id,\n executionId: record.executionId,\n attempt: record.attempt,\n callId: record.callId,\n requesterGroupIds: [...record.requesterGroupIds],\n providerId: record.providerId,\n ...(record.providerIds === undefined\n ? {}\n : { providerIds: structuredClone(record.providerIds) }),\n requestedModelId: record.requestedModelId,\n ...(record.modelKind === undefined ? {} : { modelKind: record.modelKind }),\n ...(record.requestedReasoning === undefined\n ? {}\n : { requestedReasoning: structuredClone(record.requestedReasoning) }),\n ...(record.responseModelId === undefined ? {} : { responseModelId: record.responseModelId }),\n responseId: record.responseId,\n usage: aiModelCallUsageFromModel(record.usage),\n ...(record.rawUsage === undefined ? {} : { rawUsage: structuredClone(record.rawUsage) }),\n occurredAt: record.occurredAt.toISOString(),\n }\n}\n\nfunction toAccountingPayload(input: RecoverAiModelCallInput): AiModelCallAccountingPayload {\n return {\n cost: structuredClone(input.cost),\n ...(input.estimate === undefined ? {} : { estimate: structuredClone(input.estimate) }),\n ...(input.route === undefined ? {} : { route: structuredClone(input.route) }),\n ratedAt: input.ratedAt.toISOString(),\n ...(input.reconcileLimitReservation ? { reconcileLimitReservation: true } : {}),\n }\n}\n\nfunction fromQueuePayload(job: AiModelCallRecoveryRecord): RecordAiModelCallInput {\n const occurredAt = parseDate(job.payload.record.occurredAt, job.id, \"occurredAt\")\n return { ...job.payload.record, projectId: job.projectId, occurredAt }\n}\n\nfunction accountingFromQueuePayload(\n job: AiModelCallRecoveryRecord\n): Omit<RecoverAiModelCallInput, \"usage\"> {\n const accounting = job.payload.accounting\n return {\n cost: structuredClone(accounting.cost),\n ...(accounting.estimate === undefined\n ? {}\n : { estimate: structuredClone(accounting.estimate) }),\n ...(accounting.route === undefined ? {} : { route: structuredClone(accounting.route) }),\n ratedAt: parseDate(accounting.ratedAt, job.id, \"ratedAt\"),\n reconcileLimitReservation: accounting.reconcileLimitReservation === true,\n }\n}\n\nfunction parseDate(value: string, jobId: string, field: string): Date {\n const date = new Date(value)\n if (!Number.isFinite(date.getTime())) {\n throw new InvalidAiUsageRecoveryJobError(\n `AI usage recovery job '${jobId}' has an invalid ${field} timestamp.`\n )\n }\n return date\n}\n",
10
+ "import { randomUUID } from \"node:crypto\"\nimport type { ReadonlyJsonObject, RecordAiModelCallInput } from \"../../storage\"\nimport type { ModelCallEndEvent, ModelUsage } from \"../events\"\nimport type { LanguageModel } from \"../language-model\"\nimport { ModelUsageRecordingError } from \"./errors\"\nimport {\n normalizeModelCallAccounting,\n recordAiModelCallAccounting,\n requireAccountingCapabilities,\n} from \"./model-call-accounting\"\nimport {\n type AiModelCallAdmissionInput,\n aiModelCallOutputTokenAllowance,\n estimateAiModelCallInputTokens,\n estimatedAiModelCallTotalTokens,\n} from \"./model-call-admission\"\nimport type { AiModelCallLimitController } from \"./model-call-limits\"\nimport { isPermanentAiUsageRecoveryError } from \"./model-call-recovery\"\nimport type {\n ModelCallAccountingStorage,\n RecoverAiModelCall,\n RecoverAiModelCallInput,\n} from \"./types\"\nimport { aiModelCallUsageFromModel } from \"./usage\"\n\nconst STORAGE_RETRY_DELAYS_MS = [50, 200, 600] as const\n\nexport interface AiModelCallRecorderInput {\n readonly storage: ModelCallAccountingStorage\n readonly projectId: string\n readonly executionId: string\n readonly attempt: number\n readonly requesterGroupIds: readonly string[]\n readonly limits: AiModelCallLimitController\n readonly recoverAiModelCall: RecoverAiModelCall\n}\n\ninterface AiModelCallRecorderInternals {\n readonly generateId?: () => string\n readonly now?: () => Date\n readonly retryDelaysMs?: readonly number[]\n readonly sleep?: (ms: number) => Promise<void>\n readonly recordAccounting?: (input: RecoverAiModelCallInput) => Promise<void>\n}\n\n/** Persist every completed provider call before another billable loop step can start. */\nexport class AiModelCallRecorder {\n private readonly generateId: () => string\n private readonly now: () => Date\n private readonly retryDelaysMs: readonly number[]\n private readonly sleep: (ms: number) => Promise<void>\n private readonly recordAccounting: (input: RecoverAiModelCallInput) => Promise<void>\n private readonly reservations = new Set<string>()\n private admissionError: unknown\n private recordingError: ModelUsageRecordingError | undefined\n\n constructor(\n private readonly input: AiModelCallRecorderInput,\n internals: AiModelCallRecorderInternals = {}\n ) {\n requireAccountingCapabilities(input.storage)\n this.generateId = internals.generateId ?? (() => `ai_usage_${randomUUID()}`)\n this.now = internals.now ?? (() => new Date())\n this.retryDelaysMs = internals.retryDelaysMs ?? STORAGE_RETRY_DELAYS_MS\n this.sleep = internals.sleep ?? sleep\n this.recordAccounting =\n internals.recordAccounting ??\n (async (recovery) => {\n await recordAiModelCallAccounting({ storage: this.input.storage, ...recovery })\n })\n }\n\n /** The execution every call this recorder admits is attributed to. */\n get executionId(): string {\n return this.input.executionId\n }\n\n /** The execution attempt every call this recorder admits is attributed to. */\n get attempt(): number {\n return this.input.attempt\n }\n\n /** Wrap the resolved model so all calls in an execution share admission. */\n wrapModel(model: LanguageModel): LanguageModel {\n return {\n providerId: model.providerId,\n modelId: model.modelId,\n definition: model.definition,\n costEstimator: model.costEstimator,\n ...(model.validateResponseFormat === undefined\n ? {}\n : { validateResponseFormat: model.validateResponseFormat.bind(model) }),\n stream: async (request) => {\n this.assertHealthy()\n const inputTokens = estimateAiModelCallInputTokens({\n prompt: request.messages,\n tools: request.tools,\n responseFormat: request.responseFormat,\n })\n const outputTokenAllowance = aiModelCallOutputTokenAllowance(request.maxOutputTokens)\n await this.admitCall({\n callId: request.callId,\n providerId: model.providerId,\n modelId: model.modelId,\n costEstimator: model.costEstimator,\n inputTokens,\n outputTokenAllowance,\n estimatedTotalTokens: estimatedAiModelCallTotalTokens(inputTokens, outputTokenAllowance),\n })\n try {\n return await model.stream(request)\n } catch (error) {\n await this.markCallUnknown(request.callId)\n throw error\n }\n },\n }\n }\n\n /** Admit one provider attempt, independently of its language or embedding protocol. */\n async admitCall(\n call: Omit<\n AiModelCallAdmissionInput,\n \"projectId\" | \"executionId\" | \"attempt\" | \"requesterGroupIds\"\n >\n ): Promise<void> {\n this.assertHealthy()\n try {\n const decision = await this.input.limits.beforeModelCall({\n ...call,\n projectId: this.input.projectId,\n executionId: this.input.executionId,\n attempt: this.input.attempt,\n requesterGroupIds: this.input.requesterGroupIds,\n })\n if (decision.reservation === \"active\") this.reservations.add(call.callId)\n } catch (error) {\n // Execution boundaries must retain the original coded admission failure.\n this.admissionError = error\n throw error\n }\n }\n\n /** Keep an unresolved reservation when an attempted call's billable outcome is unknown. */\n private async markCallUnknown(callId: string): Promise<void> {\n if (!this.reservations.has(callId)) return\n await this.input.limits.markModelCallUnknown({\n projectId: this.input.projectId,\n executionId: this.input.executionId,\n attempt: this.input.attempt,\n callId,\n })\n }\n\n readonly onModelCallEnd = async (event: ModelCallEndEvent): Promise<void> => {\n // Calls already in flight still need their own accounting after another call fails.\n // Only admission is gated by the execution's sticky failure.\n try {\n const occurredAt = this.now()\n const record: RecordAiModelCallInput = {\n id: this.generateId(),\n projectId: this.input.projectId,\n executionId: this.input.executionId,\n attempt: this.input.attempt,\n callId: event.callId,\n requesterGroupIds: this.input.requesterGroupIds,\n providerId: event.providerId,\n ...(event.providerIds === undefined ? {} : { providerIds: event.providerIds }),\n requestedModelId: event.modelId,\n ...(event.modelKind === undefined ? {} : { modelKind: event.modelKind }),\n ...(event.requestedReasoning === undefined\n ? {}\n : { requestedReasoning: event.requestedReasoning }),\n ...(event.responseModelId === undefined ? {} : { responseModelId: event.responseModelId }),\n responseId: event.responseId,\n usage: aiModelCallUsageFromModel(event.usage),\n ...(event.usage.raw === undefined ? {} : { rawUsage: rawUsage(event.usage) }),\n occurredAt,\n }\n const recoveryInput = normalizeModelCallAccounting({\n usage: record,\n cost: event.cost,\n ...(event.estimate === undefined ? {} : { estimate: event.estimate }),\n ...(event.route === undefined ? {} : { route: event.route }),\n ratedAt: new Date(occurredAt),\n ...(this.reservations.has(event.callId) ? { reconcileLimitReservation: true } : {}),\n })\n\n try {\n await retryOperation(\n () => this.recordAccounting(recoveryInput),\n this.retryDelaysMs,\n this.sleep,\n (error) => !isPermanentAiUsageRecoveryError(error)\n )\n } catch (storageError) {\n if (isPermanentAiUsageRecoveryError(storageError)) throw storageError\n\n try {\n await retryOperation(\n () => this.input.recoverAiModelCall(recoveryInput),\n this.retryDelaysMs,\n this.sleep,\n (error) => !isPermanentAiUsageRecoveryError(error)\n )\n } catch (recoveryError) {\n throw new AggregateError(\n [storageError, recoveryError],\n \"Direct AI accounting and durable recovery both failed.\"\n )\n }\n throw new ModelUsageRecordingError(this.input.executionId, event.callId, true, {\n cause: storageError,\n })\n }\n } catch (error) {\n const recordingError =\n error instanceof ModelUsageRecordingError\n ? error\n : new ModelUsageRecordingError(this.input.executionId, event.callId, false, {\n cause: error,\n })\n this.recordingError ??= recordingError\n throw recordingError\n }\n }\n\n assertHealthy(): void {\n if (this.admissionError !== undefined) throw this.admissionError\n if (this.recordingError) throw this.recordingError\n }\n}\n\nfunction rawUsage(usage: ModelUsage): ReadonlyJsonObject {\n return structuredClone(usage.raw ?? {})\n}\n\nasync function retryOperation<TResult>(\n operation: () => Promise<TResult>,\n retryDelaysMs: readonly number[],\n wait: (ms: number) => Promise<void>,\n shouldRetry: (error: unknown) => boolean\n): Promise<TResult> {\n for (let attempt = 0; ; attempt += 1) {\n try {\n return await operation()\n } catch (error) {\n if (!shouldRetry(error)) throw error\n const delay = retryDelaysMs[attempt]\n if (delay === undefined) throw error\n await wait(delay)\n }\n }\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n",
11
+ "import type { AiModelCallReservationIdentity } from \"../../storage\"\nimport type { ModelKind } from \"../definitions\"\nimport type { ModelCostEstimator, ModelMoney } from \"../pricing\"\n\n/** Default output ceiling when a call and its resolved model supply no limit. */\nexport const AI_MODEL_CALL_OUTPUT_TOKEN_ALLOWANCE = 4_096\n\nexport type AiModelCallInputTokenEstimate =\n | {\n readonly status: \"estimated\"\n readonly tokens: number\n readonly method: \"utf8BytesDividedByFour\"\n }\n | {\n readonly status: \"unavailable\"\n readonly reason: \"nonTextInput\" | \"unserializableInput\"\n }\n\n/** Provider-neutral snapshot passed to aggregate-budget admission before a provider request. */\nexport interface AiModelCallAdmissionInput {\n readonly projectId: string\n readonly executionId: string\n readonly attempt: number\n readonly requesterGroupIds: readonly string[]\n readonly callId: string\n readonly providerId: string\n readonly modelId: string\n /** Selects the applicable limit meters; transcription and reranking skip token limits. */\n readonly modelKind?: ModelKind\n readonly costEstimator?: ModelCostEstimator\n /** A non-token estimate, computed by the resolved binding before inference. */\n readonly reservationCost?: ModelMoney\n readonly inputTokens: AiModelCallInputTokenEstimate\n readonly outputTokenAllowance: number\n readonly estimatedTotalTokens?: number\n}\n\nexport interface AiModelCallAdmissionDecision {\n /** Active means accounting must reconcile the reservation for this provider attempt. */\n readonly reservation: \"active\" | \"none\"\n}\n\nexport type BeforeAiModelCall = (\n input: AiModelCallAdmissionInput\n) => AiModelCallAdmissionDecision | Promise<AiModelCallAdmissionDecision>\n\nexport type MarkAiModelCallUnknown = (input: AiModelCallReservationIdentity) => void | Promise<void>\n\n/**\n * Estimate the exact, prepared provider request without requiring a provider-specific tokenizer.\n *\n * The heuristic is intentionally explicit so reservations are reproducible. Non-text inputs are\n * reported as unavailable; an enforced token or cost policy can then fail closed instead of\n * pretending that an image, file, or provider-defined payload has no token cost.\n */\nexport function estimateAiModelCallInputTokens(input: {\n readonly prompt: unknown\n readonly tools: unknown\n readonly responseFormat: unknown\n}): AiModelCallInputTokenEstimate {\n if (containsNonTextInput(input.prompt)) {\n return { status: \"unavailable\", reason: \"nonTextInput\" }\n }\n\n let serialized: string | undefined\n try {\n serialized = JSON.stringify(input)\n } catch {\n return { status: \"unavailable\", reason: \"unserializableInput\" }\n }\n if (serialized === undefined) {\n return { status: \"unavailable\", reason: \"unserializableInput\" }\n }\n\n const bytes = new TextEncoder().encode(serialized).byteLength\n return {\n status: \"estimated\",\n tokens: Math.ceil(bytes / 4),\n method: \"utf8BytesDividedByFour\",\n }\n}\n\nexport function aiModelCallOutputTokenAllowance(maxOutputTokens: number | undefined): number {\n if (maxOutputTokens === undefined) return AI_MODEL_CALL_OUTPUT_TOKEN_ALLOWANCE\n if (!Number.isSafeInteger(maxOutputTokens) || maxOutputTokens <= 0) {\n throw new TypeError(\n \"[SixbModels] AI model-call maxOutputTokens must be a positive safe integer.\"\n )\n }\n return maxOutputTokens\n}\n\nexport function estimatedAiModelCallTotalTokens(\n inputTokens: AiModelCallInputTokenEstimate,\n outputTokenAllowance: number\n): number | undefined {\n if (inputTokens.status !== \"estimated\") return undefined\n const total = inputTokens.tokens + outputTokenAllowance\n if (!Number.isSafeInteger(total)) {\n throw new TypeError(\"[SixbModels] AI model-call token estimate exceeds the safe range.\")\n }\n return total\n}\n\nfunction containsNonTextInput(value: unknown, seen = new WeakSet<object>()): boolean {\n if (value === null || typeof value !== \"object\") return false\n if (\n value instanceof URL ||\n value instanceof ArrayBuffer ||\n ArrayBuffer.isView(value) ||\n (typeof Blob !== \"undefined\" && value instanceof Blob)\n ) {\n return true\n }\n if (seen.has(value)) return false\n seen.add(value)\n\n if (!Array.isArray(value)) {\n const type = Reflect.get(value, \"type\")\n if (\n type === \"image\" ||\n type === \"file\" ||\n type === \"reasoning-file\" ||\n type === \"custom\" ||\n type === \"provider-state\"\n ) {\n return true\n }\n }\n\n return Object.values(value).some((entry) => containsNonTextInput(entry, seen))\n}\n",
12
+ "import { createSixbError } from \"../../errors/internal\"\nimport type { AgentQueueJob, Queue } from \"../../queues\"\nimport { modelCallRecoveryPayload } from \"./model-call-recovery\"\nimport type { RecoverAiModelCallInput } from \"./types\"\n\n/** Stable queue identity: a lost enqueue response can safely retry the same accounting handoff. */\nfunction agentAiUsageRecoveryJobId(recordId: string): string {\n return `agt_usage_job_${recordId}`\n}\n\n/** Transport adapter for the agent worker's existing durable recovery lane. */\nexport async function enqueueAiModelCallRecovery(\n queue: Pick<Queue<AgentQueueJob>, \"enqueue\">,\n input: RecoverAiModelCallInput\n): Promise<void> {\n const payload = modelCallRecoveryPayload(input)\n const record = input.usage\n const jobId = agentAiUsageRecoveryJobId(record.id)\n const [job] = await queue.enqueue({\n projectId: record.projectId,\n jobs: [{ id: jobId, type: \"agent.ai-usage.record.requested\", payload }],\n })\n\n if (job?.id !== jobId || job.type !== \"agent.ai-usage.record.requested\") {\n throw createSixbError(\n \"internal.unexpected\",\n `[SixbModels] Agent queue did not confirm AI usage recovery job '${jobId}'.`,\n { details: { jobId } }\n )\n }\n}\n"
13
+ ],
14
+ "mappings": "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",
15
+ "debugId": "4BD85BF64D5B7A3564756E2164756E21",
16
+ "names": []
17
+ }