@sixb/core 0.1.16 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (563) hide show
  1. package/dist/actions/index.js +25 -25
  2. package/dist/actions/types/context.d.ts +2 -2
  3. package/dist/actions/types/context.d.ts.map +1 -1
  4. package/dist/actions/worker.js +1 -1
  5. package/dist/agents/index.js +41 -40
  6. package/dist/agents/index.js.map +1 -1
  7. package/dist/auth/index.js +5 -5
  8. package/dist/authorization/index.js +2 -2
  9. package/dist/blob-storage/download-urls.d.ts +41 -0
  10. package/dist/blob-storage/download-urls.d.ts.map +1 -0
  11. package/dist/blob-storage/execution.d.ts +9 -1
  12. package/dist/blob-storage/execution.d.ts.map +1 -1
  13. package/dist/blob-storage/index.js +5 -3
  14. package/dist/blob-storage/index.js.map +1 -1
  15. package/dist/blob-storage/internal.d.ts +2 -0
  16. package/dist/blob-storage/internal.d.ts.map +1 -0
  17. package/dist/blob-storage/internal.js +11 -0
  18. package/dist/blob-storage/internal.js.map +9 -0
  19. package/dist/bootstrap/index.js +45 -44
  20. package/dist/bootstrap/index.js.map +1 -1
  21. package/dist/{chunk-8x74221e.js → chunk-10styjgk.js} +18 -13
  22. package/dist/{chunk-8x74221e.js.map → chunk-10styjgk.js.map} +3 -3
  23. package/dist/{chunk-hgqpcmyr.js → chunk-1hqwggsn.js} +47 -19
  24. package/dist/chunk-1hqwggsn.js.map +12 -0
  25. package/dist/{chunk-zb47r1c8.js → chunk-23xs4qp9.js} +2 -2
  26. package/dist/{chunk-gmdvns8f.js → chunk-2am3db31.js} +2 -2
  27. package/dist/{chunk-fj1dvp37.js → chunk-2vhg6ysa.js} +1 -1
  28. package/dist/{chunk-dp7yk20b.js → chunk-33saed7g.js} +1 -1
  29. package/dist/{chunk-mdnw7nj8.js → chunk-3rrezgyc.js} +33 -8
  30. package/dist/chunk-3rrezgyc.js.map +15 -0
  31. package/dist/{chunk-jgwb25gc.js → chunk-4as3wt1c.js} +13 -5
  32. package/dist/chunk-4as3wt1c.js.map +12 -0
  33. package/dist/chunk-4ra628t7.js +88 -0
  34. package/dist/chunk-4ra628t7.js.map +10 -0
  35. package/dist/{chunk-chdg6eqq.js → chunk-52c5zb0z.js} +2 -2
  36. package/dist/{chunk-69kt9q43.js → chunk-5be2ath4.js} +1 -1
  37. package/dist/{chunk-qnd7ehe5.js → chunk-5thzcb8g.js} +2 -2
  38. package/dist/{chunk-6z1q7j19.js → chunk-5yd8cchh.js} +1126 -780
  39. package/dist/chunk-5yd8cchh.js.map +66 -0
  40. package/dist/{chunk-3q7z9hd4.js → chunk-6wbm6ymz.js} +234 -40
  41. package/dist/{chunk-3q7z9hd4.js.map → chunk-6wbm6ymz.js.map} +8 -6
  42. package/dist/{chunk-kvysp909.js → chunk-7ecp4v7a.js} +26 -19
  43. package/dist/chunk-7ecp4v7a.js.map +17 -0
  44. package/dist/{chunk-f85hpqnm.js → chunk-99nd4rc1.js} +3 -3
  45. package/dist/{chunk-f85hpqnm.js.map → chunk-99nd4rc1.js.map} +3 -3
  46. package/dist/{chunk-dsv8kdgk.js → chunk-9g6jz9kk.js} +5 -5
  47. package/dist/{chunk-39tqv9hz.js → chunk-9se093qz.js} +5 -6
  48. package/dist/{chunk-39tqv9hz.js.map → chunk-9se093qz.js.map} +3 -4
  49. package/dist/{chunk-7g2gjvah.js → chunk-a7er86jd.js} +1 -1
  50. package/dist/{chunk-zdkcdshk.js → chunk-aq39q04r.js} +41 -3
  51. package/dist/{chunk-zdkcdshk.js.map → chunk-aq39q04r.js.map} +4 -3
  52. package/dist/chunk-b9affek3.js +261 -0
  53. package/dist/chunk-b9affek3.js.map +12 -0
  54. package/dist/{chunk-b9y8hcm2.js → chunk-c2rga5cx.js} +1 -1
  55. package/dist/{chunk-f72rbvsb.js → chunk-cnb5kv05.js} +2 -2
  56. package/dist/chunk-d62kjtbg.js.map +2 -2
  57. package/dist/{chunk-vjqt7q3a.js → chunk-dam456ve.js} +233 -34
  58. package/dist/{chunk-vjqt7q3a.js.map → chunk-dam456ve.js.map} +7 -5
  59. package/dist/{chunk-sbcm1b92.js → chunk-e67ynxcr.js} +3 -3
  60. package/dist/{chunk-xnx96gfy.js → chunk-ere85b8y.js} +17 -8
  61. package/dist/chunk-ere85b8y.js.map +15 -0
  62. package/dist/{chunk-k4kkp58d.js → chunk-ewqa58h9.js} +12 -2
  63. package/dist/chunk-ewqa58h9.js.map +11 -0
  64. package/dist/{chunk-cq44v1a6.js → chunk-f1xh7a32.js} +3 -3
  65. package/dist/{chunk-h4138ww2.js → chunk-fggq3d9k.js} +450 -799
  66. package/dist/chunk-fggq3d9k.js.map +49 -0
  67. package/dist/{chunk-kttr5ftm.js → chunk-gf7yht60.js} +3 -3
  68. package/dist/chunk-h8teetr0.js +9 -0
  69. package/dist/chunk-h8teetr0.js.map +10 -0
  70. package/dist/chunk-hn2r7z41.js.map +1 -1
  71. package/dist/{chunk-nj0020ay.js → chunk-jjrn5v0p.js} +1 -1
  72. package/dist/{chunk-nvymebc1.js → chunk-jnfxmr3f.js} +1 -1
  73. package/dist/{chunk-nkbev3tr.js → chunk-k4g51s47.js} +3 -3
  74. package/dist/{chunk-a0073121.js → chunk-kpx7jrmn.js} +3 -1
  75. package/dist/chunk-kpx7jrmn.js.map +12 -0
  76. package/dist/{chunk-h044jb97.js → chunk-pja9jfz6.js} +172 -10
  77. package/dist/chunk-pja9jfz6.js.map +19 -0
  78. package/dist/chunk-pqajwytd.js.map +1 -1
  79. package/dist/{chunk-mr60an99.js → chunk-qczk96d9.js} +22 -2
  80. package/dist/{chunk-mr60an99.js.map → chunk-qczk96d9.js.map} +3 -3
  81. package/dist/{chunk-s3csryxe.js → chunk-rj69qcrd.js} +8 -2
  82. package/dist/chunk-rj69qcrd.js.map +11 -0
  83. package/dist/{chunk-swxzncrv.js → chunk-rpxz486p.js} +32 -5
  84. package/dist/{chunk-swxzncrv.js.map → chunk-rpxz486p.js.map} +4 -4
  85. package/dist/{chunk-tkdbge6v.js → chunk-rx7h5fdx.js} +1 -1
  86. package/dist/{chunk-tnvafr7g.js → chunk-s7ftxrdr.js} +105 -7
  87. package/dist/chunk-s7ftxrdr.js.map +22 -0
  88. package/dist/{chunk-h866d223.js → chunk-sk0hcjsz.js} +1 -1
  89. package/dist/{chunk-2xvgy3x5.js → chunk-svabwqdq.js} +2 -2
  90. package/dist/{chunk-667x4drs.js → chunk-t9shqx3w.js} +2 -2
  91. package/dist/{chunk-40qb8wpe.js → chunk-tjjgy3z4.js} +26 -23
  92. package/dist/{chunk-40qb8wpe.js.map → chunk-tjjgy3z4.js.map} +3 -3
  93. package/dist/{chunk-gkxsenvp.js → chunk-vp3z1ckh.js} +31 -7
  94. package/dist/{chunk-gkxsenvp.js.map → chunk-vp3z1ckh.js.map} +5 -4
  95. package/dist/{chunk-cxj8y8t0.js → chunk-vre348sb.js} +2 -2
  96. package/dist/{chunk-vsvrv7n8.js → chunk-w9yycd3t.js} +1 -1
  97. package/dist/{chunk-g4rbm4a6.js → chunk-wt4szfec.js} +379 -331
  98. package/dist/chunk-wt4szfec.js.map +14 -0
  99. package/dist/{chunk-a7ne02hk.js → chunk-xcy5ddha.js} +6 -6
  100. package/dist/{chunk-zvmr2hqk.js → chunk-xyvy73tj.js} +4 -3
  101. package/dist/{chunk-zvmr2hqk.js.map → chunk-xyvy73tj.js.map} +3 -3
  102. package/dist/datasets/write.js +1 -1
  103. package/dist/execution/agent.js +38 -37
  104. package/dist/execution/agent.js.map +1 -1
  105. package/dist/execution/authorized-object-reader.d.ts +3 -1
  106. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  107. package/dist/execution/primitive.js +36 -35
  108. package/dist/execution/primitive.js.map +2 -2
  109. package/dist/execution/request.js +37 -36
  110. package/dist/execution/request.js.map +2 -2
  111. package/dist/index.d.ts +8 -4
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +62 -59
  114. package/dist/index.js.map +1 -1
  115. package/dist/lake-storage/in-memory.d.ts +5 -1
  116. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  117. package/dist/lake-storage/index.d.ts +1 -1
  118. package/dist/lake-storage/index.d.ts.map +1 -1
  119. package/dist/lake-storage/index.js +2 -2
  120. package/dist/lake-storage/types.d.ts +26 -0
  121. package/dist/lake-storage/types.d.ts.map +1 -1
  122. package/dist/maintenance/ontology-maintenance.d.ts +5 -1
  123. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  124. package/dist/maintenance/types.d.ts +1 -4
  125. package/dist/maintenance/types.d.ts.map +1 -1
  126. package/dist/materialization/event-envelopes.d.ts +20 -0
  127. package/dist/materialization/event-envelopes.d.ts.map +1 -0
  128. package/dist/materialization/events.d.ts +29 -3
  129. package/dist/materialization/events.d.ts.map +1 -1
  130. package/dist/materialization/index.d.ts +4 -1
  131. package/dist/materialization/index.d.ts.map +1 -1
  132. package/dist/materialization/index.js +9 -3
  133. package/dist/materialization/index.js.map +1 -1
  134. package/dist/materializer/edits/plan.d.ts +2 -10
  135. package/dist/materializer/edits/plan.d.ts.map +1 -1
  136. package/dist/materializer/effective/build-events.d.ts +5 -21
  137. package/dist/materializer/effective/build-events.d.ts.map +1 -1
  138. package/dist/materializer/effective/vector-indexing.d.ts +2 -3
  139. package/dist/materializer/effective/vector-indexing.d.ts.map +1 -1
  140. package/dist/materializer/effective/vectors.d.ts +2 -3
  141. package/dist/materializer/effective/vectors.d.ts.map +1 -1
  142. package/dist/materializer/execution/scope.d.ts +1 -11
  143. package/dist/materializer/execution/scope.d.ts.map +1 -1
  144. package/dist/materializer/execution/work-executor.d.ts +5 -7
  145. package/dist/materializer/execution/work-executor.d.ts.map +1 -1
  146. package/dist/materializer/execution/work-records.d.ts +1 -3
  147. package/dist/materializer/execution/work-records.d.ts.map +1 -1
  148. package/dist/materializer/index.js +31 -32
  149. package/dist/materializer/index.js.map +1 -1
  150. package/dist/materializer/projections/replace.d.ts.map +1 -1
  151. package/dist/materializer/projections/replacement-plan.d.ts +8 -11
  152. package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
  153. package/dist/materializer/shared/batching.d.ts +5 -0
  154. package/dist/materializer/shared/batching.d.ts.map +1 -1
  155. package/dist/materializer/telemetry/plan.d.ts +2 -8
  156. package/dist/materializer/telemetry/plan.d.ts.map +1 -1
  157. package/dist/models/audio/catalog.d.ts +20 -0
  158. package/dist/models/audio/catalog.d.ts.map +1 -0
  159. package/dist/models/audio/errors.d.ts +8 -0
  160. package/dist/models/audio/errors.d.ts.map +1 -0
  161. package/dist/models/audio/file.d.ts +9 -0
  162. package/dist/models/audio/file.d.ts.map +1 -0
  163. package/dist/models/audio/runtime.d.ts +8 -0
  164. package/dist/models/audio/runtime.d.ts.map +1 -0
  165. package/dist/models/audio/types.d.ts +60 -0
  166. package/dist/models/audio/types.d.ts.map +1 -0
  167. package/dist/models/catalog.d.ts +23 -1
  168. package/dist/models/catalog.d.ts.map +1 -1
  169. package/dist/models/definitions.d.ts +1 -1
  170. package/dist/models/definitions.d.ts.map +1 -1
  171. package/dist/models/events.d.ts +3 -0
  172. package/dist/models/events.d.ts.map +1 -1
  173. package/dist/models/execution/index.js +22 -22
  174. package/dist/models/execution/model-call-admission.d.ts +6 -1
  175. package/dist/models/execution/model-call-admission.d.ts.map +1 -1
  176. package/dist/models/execution/model-call-limits.d.ts.map +1 -1
  177. package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
  178. package/dist/models/execution/reranking.d.ts +4 -0
  179. package/dist/models/execution/reranking.d.ts.map +1 -0
  180. package/dist/models/execution/usage.d.ts.map +1 -1
  181. package/dist/models/execution.d.ts +2 -1
  182. package/dist/models/execution.d.ts.map +1 -1
  183. package/dist/models/generation-types.d.ts +2 -0
  184. package/dist/models/generation-types.d.ts.map +1 -1
  185. package/dist/models/index.d.ts +7 -1
  186. package/dist/models/index.d.ts.map +1 -1
  187. package/dist/models/index.js +6 -2
  188. package/dist/models/index.js.map +1 -1
  189. package/dist/models/pricing.d.ts +2 -2
  190. package/dist/models/pricing.d.ts.map +1 -1
  191. package/dist/models/reranking-model.d.ts +49 -0
  192. package/dist/models/reranking-model.d.ts.map +1 -0
  193. package/dist/objects/index.js +25 -25
  194. package/dist/objects/query/executor.d.ts +2 -1
  195. package/dist/objects/query/executor.d.ts.map +1 -1
  196. package/dist/objects/query/index.d.ts +1 -1
  197. package/dist/objects/query/index.d.ts.map +1 -1
  198. package/dist/objects/query/index.js +22 -22
  199. package/dist/objects/query/ir.d.ts +8 -1
  200. package/dist/objects/query/ir.d.ts.map +1 -1
  201. package/dist/objects/query/normalize.d.ts.map +1 -1
  202. package/dist/objects/query/planner.d.ts +1 -1
  203. package/dist/objects/query/planner.d.ts.map +1 -1
  204. package/dist/objects/query/primary-id.d.ts +7 -0
  205. package/dist/objects/query/primary-id.d.ts.map +1 -0
  206. package/dist/objects/query/reranking-executor.d.ts +13 -0
  207. package/dist/objects/query/reranking-executor.d.ts.map +1 -0
  208. package/dist/objects/query/reranking-limits.d.ts +3 -0
  209. package/dist/objects/query/reranking-limits.d.ts.map +1 -0
  210. package/dist/objects/query/reranking-query.d.ts +4 -0
  211. package/dist/objects/query/reranking-query.d.ts.map +1 -0
  212. package/dist/objects/query/validate.d.ts.map +1 -1
  213. package/dist/objects/sdk/query-builder.d.ts +8 -0
  214. package/dist/objects/sdk/query-builder.d.ts.map +1 -1
  215. package/dist/objects/sdk/query-executor.d.ts +2 -2
  216. package/dist/objects/sdk/query-executor.d.ts.map +1 -1
  217. package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
  218. package/dist/objects/vectors/indexing-dispatch.d.ts +21 -0
  219. package/dist/objects/vectors/indexing-dispatch.d.ts.map +1 -0
  220. package/dist/objects/vectors/query.d.ts.map +1 -1
  221. package/dist/ontology/builders.d.ts.map +1 -1
  222. package/dist/ontology/index.d.ts +1 -1
  223. package/dist/ontology/index.d.ts.map +1 -1
  224. package/dist/ontology/index.js +3 -3
  225. package/dist/ontology/internal.js +2 -2
  226. package/dist/ontology/query-capabilities.d.ts +1 -0
  227. package/dist/ontology/query-capabilities.d.ts.map +1 -1
  228. package/dist/ontology/types.d.ts +20 -0
  229. package/dist/ontology/types.d.ts.map +1 -1
  230. package/dist/ontology/validation/query.d.ts.map +1 -1
  231. package/dist/pipelines/index.js +23 -23
  232. package/dist/projections/internal.js +22 -22
  233. package/dist/query.d.ts +4 -2
  234. package/dist/query.d.ts.map +1 -1
  235. package/dist/query.js +2 -2
  236. package/dist/queues/in-memory.d.ts +3 -0
  237. package/dist/queues/in-memory.d.ts.map +1 -1
  238. package/dist/queues/index.js +1 -1
  239. package/dist/queues/types.d.ts +4 -0
  240. package/dist/queues/types.d.ts.map +1 -1
  241. package/dist/runtime/host.d.ts +1 -0
  242. package/dist/runtime/host.d.ts.map +1 -1
  243. package/dist/runtime/index.d.ts +1 -1
  244. package/dist/runtime/index.d.ts.map +1 -1
  245. package/dist/runtime/internal.d.ts +1 -0
  246. package/dist/runtime/internal.d.ts.map +1 -1
  247. package/dist/runtime/internal.js +28 -26
  248. package/dist/runtime/internal.js.map +1 -1
  249. package/dist/runtime/public-origin.d.ts +10 -0
  250. package/dist/runtime/public-origin.d.ts.map +1 -0
  251. package/dist/runtime/sixb.d.ts +1 -0
  252. package/dist/runtime/sixb.d.ts.map +1 -1
  253. package/dist/runtime/types.d.ts +12 -2
  254. package/dist/runtime/types.d.ts.map +1 -1
  255. package/dist/sandboxes/index.js +5 -5
  256. package/dist/shares/internal.js +19 -19
  257. package/dist/storage/agents/provider.js +2 -2
  258. package/dist/storage/ai-cost/analytics.d.ts +1 -0
  259. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  260. package/dist/storage/ai-cost/provider.js +3 -3
  261. package/dist/storage/ai-cost/types.d.ts +1 -1
  262. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  263. package/dist/storage/ai-cost/validation.d.ts.map +1 -1
  264. package/dist/storage/ai-limits/enforcement.js +2 -2
  265. package/dist/storage/ai-limits/in-memory.d.ts.map +1 -1
  266. package/dist/storage/ai-limits/provider.d.ts +7 -2
  267. package/dist/storage/ai-limits/provider.d.ts.map +1 -1
  268. package/dist/storage/ai-limits/provider.js +4 -2
  269. package/dist/storage/ai-limits/provider.js.map +1 -1
  270. package/dist/storage/ai-limits/types.d.ts +3 -0
  271. package/dist/storage/ai-limits/types.d.ts.map +1 -1
  272. package/dist/storage/ai-usage/record.d.ts.map +1 -1
  273. package/dist/storage/ai-usage/types.d.ts +8 -4
  274. package/dist/storage/ai-usage/types.d.ts.map +1 -1
  275. package/dist/storage/ai-usage/usage.d.ts.map +1 -1
  276. package/dist/storage/file-download-grants/in-memory.d.ts +11 -0
  277. package/dist/storage/file-download-grants/in-memory.d.ts.map +1 -0
  278. package/dist/storage/file-download-grants/index.d.ts +3 -0
  279. package/dist/storage/file-download-grants/index.d.ts.map +1 -0
  280. package/dist/storage/file-download-grants/record.d.ts +11 -0
  281. package/dist/storage/file-download-grants/record.d.ts.map +1 -0
  282. package/dist/storage/file-download-grants/types.d.ts +44 -0
  283. package/dist/storage/file-download-grants/types.d.ts.map +1 -0
  284. package/dist/storage/file-upload-sessions/provider.js +6 -6
  285. package/dist/storage/in-memory/index.d.ts +4 -0
  286. package/dist/storage/in-memory/index.d.ts.map +1 -1
  287. package/dist/storage/index.d.ts +5 -3
  288. package/dist/storage/index.d.ts.map +1 -1
  289. package/dist/storage/index.js +30 -30
  290. package/dist/storage/index.js.map +1 -1
  291. package/dist/storage/internal.d.ts +1 -0
  292. package/dist/storage/internal.d.ts.map +1 -1
  293. package/dist/storage/internal.js +8 -4
  294. package/dist/storage/internal.js.map +1 -1
  295. package/dist/storage/migrations/index.d.ts +1 -1
  296. package/dist/storage/migrations/index.d.ts.map +1 -1
  297. package/dist/storage/migrations/migrate-storage.d.ts +3 -3
  298. package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
  299. package/dist/storage/migrations/types.d.ts +7 -0
  300. package/dist/storage/migrations/types.d.ts.map +1 -1
  301. package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
  302. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
  303. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
  304. package/dist/storage/objects/query-preparation.d.ts +39 -0
  305. package/dist/storage/objects/query-preparation.d.ts.map +1 -0
  306. package/dist/storage/objects/types.d.ts +2 -0
  307. package/dist/storage/objects/types.d.ts.map +1 -1
  308. package/dist/storage/ontology/commits.d.ts +1 -6
  309. package/dist/storage/ontology/commits.d.ts.map +1 -1
  310. package/dist/storage/ontology/in-memory/index.d.ts +4 -2
  311. package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
  312. package/dist/storage/ontology/in-memory/materializations-state.d.ts +0 -2
  313. package/dist/storage/ontology/in-memory/materializations-state.d.ts.map +1 -1
  314. package/dist/storage/ontology/in-memory/materializations-work.d.ts +1 -3
  315. package/dist/storage/ontology/in-memory/materializations-work.d.ts.map +1 -1
  316. package/dist/storage/ontology/in-memory/materializations.d.ts +23 -57
  317. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  318. package/dist/storage/ontology/in-memory/outbox.d.ts +3 -2
  319. package/dist/storage/ontology/in-memory/outbox.d.ts.map +1 -1
  320. package/dist/storage/ontology/in-memory/replacement-plans.d.ts +104 -0
  321. package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -0
  322. package/dist/storage/ontology/in-memory/shared-state.d.ts +17 -2
  323. package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
  324. package/dist/storage/ontology/in-memory/source-roots.d.ts +3 -1
  325. package/dist/storage/ontology/in-memory/source-roots.d.ts.map +1 -1
  326. package/dist/storage/ontology/in-memory/sources.d.ts +1 -2
  327. package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
  328. package/dist/storage/ontology/in-memory/state-reader.d.ts +25 -0
  329. package/dist/storage/ontology/in-memory/state-reader.d.ts.map +1 -0
  330. package/dist/storage/ontology/index.d.ts +6 -3
  331. package/dist/storage/ontology/index.d.ts.map +1 -1
  332. package/dist/storage/ontology/materializations.d.ts +40 -59
  333. package/dist/storage/ontology/materializations.d.ts.map +1 -1
  334. package/dist/storage/ontology/outbox.d.ts +4 -6
  335. package/dist/storage/ontology/outbox.d.ts.map +1 -1
  336. package/dist/storage/ontology/provider-work.d.ts +114 -3
  337. package/dist/storage/ontology/provider-work.d.ts.map +1 -1
  338. package/dist/storage/ontology/provider.d.ts +14 -39
  339. package/dist/storage/ontology/provider.d.ts.map +1 -1
  340. package/dist/storage/ontology/provider.js +26 -12
  341. package/dist/storage/ontology/provider.js.map +1 -1
  342. package/dist/storage/ontology/replacement-plans.d.ts +103 -0
  343. package/dist/storage/ontology/replacement-plans.d.ts.map +1 -0
  344. package/dist/storage/ontology/sources.d.ts +0 -8
  345. package/dist/storage/ontology/sources.d.ts.map +1 -1
  346. package/dist/storage/operation-scope.d.ts.map +1 -1
  347. package/dist/storage/operation-scope.js +1 -1
  348. package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
  349. package/dist/storage/projection-runs/types.d.ts +2 -0
  350. package/dist/storage/projection-runs/types.d.ts.map +1 -1
  351. package/dist/storage/types.d.ts +2 -0
  352. package/dist/storage/types.d.ts.map +1 -1
  353. package/dist/storage/workflow-runs/provider.js +6 -6
  354. package/dist/syncs/index.js +24 -24
  355. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  356. package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
  357. package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
  358. package/dist/testing/file-download-grant-storage-contract.d.ts +9 -0
  359. package/dist/testing/file-download-grant-storage-contract.d.ts.map +1 -0
  360. package/dist/testing/index.d.ts +1 -0
  361. package/dist/testing/index.d.ts.map +1 -1
  362. package/dist/testing/index.js +2549 -1490
  363. package/dist/testing/index.js.map +14 -13
  364. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  365. package/dist/testing/materializer-storage-contract.d.ts +14 -0
  366. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  367. package/dist/testing/object-read-scope-contract.d.ts.map +1 -1
  368. package/dist/testing/ontology-contract-fixture.d.ts +5 -1
  369. package/dist/testing/ontology-contract-fixture.d.ts.map +1 -1
  370. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  371. package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
  372. package/dist/testing/queues-contract.d.ts.map +1 -1
  373. package/dist/webhooks/internal.js +20 -20
  374. package/dist/workers/index.js +15 -17
  375. package/dist/workers/index.js.map +3 -3
  376. package/dist/workers/queue-worker.d.ts +3 -2
  377. package/dist/workers/queue-worker.d.ts.map +1 -1
  378. package/dist/workflows/index.js +42 -41
  379. package/dist/workflows/index.js.map +1 -1
  380. package/package.json +7 -1
  381. package/src/actions/types/context.ts +5 -2
  382. package/src/blob-storage/download-urls.ts +138 -0
  383. package/src/blob-storage/execution.ts +32 -1
  384. package/src/blob-storage/internal.ts +1 -0
  385. package/src/execution/authorized-object-reader.ts +8 -1
  386. package/src/index.ts +25 -0
  387. package/src/lake-storage/in-memory.ts +38 -9
  388. package/src/lake-storage/index.ts +2 -0
  389. package/src/lake-storage/types.ts +30 -0
  390. package/src/maintenance/ontology-maintenance.ts +50 -23
  391. package/src/maintenance/types.ts +1 -4
  392. package/src/materialization/event-envelopes.ts +168 -0
  393. package/src/materialization/events.ts +40 -4
  394. package/src/materialization/index.ts +9 -1
  395. package/src/materializer/README.md +55 -10
  396. package/src/materializer/edits/commit.ts +3 -19
  397. package/src/materializer/edits/plan.ts +20 -71
  398. package/src/materializer/effective/build-events.ts +42 -136
  399. package/src/materializer/effective/vector-indexing.ts +2 -3
  400. package/src/materializer/effective/vectors.ts +2 -3
  401. package/src/materializer/execution/scope.ts +1 -38
  402. package/src/materializer/execution/work-executor.ts +21 -115
  403. package/src/materializer/execution/work-records.ts +0 -15
  404. package/src/materializer/projections/replace.ts +106 -63
  405. package/src/materializer/projections/replacement-plan.ts +73 -218
  406. package/src/materializer/shared/batching.ts +7 -0
  407. package/src/materializer/telemetry/append.ts +2 -14
  408. package/src/materializer/telemetry/plan.ts +6 -43
  409. package/src/models/audio/catalog.ts +90 -0
  410. package/src/models/audio/errors.ts +19 -0
  411. package/src/models/audio/file.ts +78 -0
  412. package/src/models/audio/runtime.ts +182 -0
  413. package/src/models/audio/types.ts +69 -0
  414. package/src/models/catalog.ts +52 -5
  415. package/src/models/definitions.ts +8 -1
  416. package/src/models/events.ts +3 -0
  417. package/src/models/execution/README.md +20 -1
  418. package/src/models/execution/model-call-admission.ts +6 -1
  419. package/src/models/execution/model-call-limits.ts +21 -11
  420. package/src/models/execution/model-call-recorder.ts +1 -0
  421. package/src/models/execution/model-call-recovery.ts +1 -0
  422. package/src/models/execution/reranking.ts +137 -0
  423. package/src/models/execution/usage.ts +1 -0
  424. package/src/models/execution.ts +5 -1
  425. package/src/models/generation-types.ts +2 -0
  426. package/src/models/index.ts +32 -0
  427. package/src/models/pricing.ts +2 -1
  428. package/src/models/reranking-model.ts +114 -0
  429. package/src/objects/query/executor.ts +42 -2
  430. package/src/objects/query/explain.ts +8 -0
  431. package/src/objects/query/index.ts +1 -0
  432. package/src/objects/query/ir.ts +10 -0
  433. package/src/objects/query/normalize.ts +2 -0
  434. package/src/objects/query/planner.ts +12 -1
  435. package/src/objects/query/primary-id.ts +56 -0
  436. package/src/objects/query/reranking-executor.ts +91 -0
  437. package/src/objects/query/reranking-limits.ts +3 -0
  438. package/src/objects/query/reranking-query.ts +8 -0
  439. package/src/objects/query/validate.ts +33 -1
  440. package/src/objects/sdk/query-builder.ts +15 -2
  441. package/src/objects/sdk/query-executor.ts +2 -2
  442. package/src/objects/sdk/runtime-query-executor.ts +7 -4
  443. package/src/objects/vectors/README.md +6 -2
  444. package/src/objects/vectors/indexing-dispatch.ts +83 -0
  445. package/src/objects/vectors/query.ts +3 -0
  446. package/src/ontology/builders.ts +1 -0
  447. package/src/ontology/index.ts +2 -0
  448. package/src/ontology/query-capabilities.ts +1 -1
  449. package/src/ontology/types.ts +21 -0
  450. package/src/ontology/validation/query.ts +57 -0
  451. package/src/query.ts +4 -0
  452. package/src/queues/in-memory.ts +54 -19
  453. package/src/queues/types.ts +4 -0
  454. package/src/runtime/host.ts +28 -1
  455. package/src/runtime/index.ts +1 -0
  456. package/src/runtime/internal.ts +1 -0
  457. package/src/runtime/public-origin.ts +33 -0
  458. package/src/runtime/sixb.ts +13 -2
  459. package/src/runtime/types.ts +12 -2
  460. package/src/storage/ai-cost/analytics.ts +2 -0
  461. package/src/storage/ai-cost/codec.ts +2 -1
  462. package/src/storage/ai-cost/types.ts +1 -0
  463. package/src/storage/ai-cost/validation.ts +21 -8
  464. package/src/storage/ai-limits/in-memory.ts +10 -2
  465. package/src/storage/ai-limits/provider.ts +29 -2
  466. package/src/storage/ai-limits/types.ts +3 -0
  467. package/src/storage/ai-usage/record.ts +9 -0
  468. package/src/storage/ai-usage/types.ts +8 -4
  469. package/src/storage/ai-usage/usage.ts +2 -0
  470. package/src/storage/file-download-grants/in-memory.ts +73 -0
  471. package/src/storage/file-download-grants/index.ts +8 -0
  472. package/src/storage/file-download-grants/record.ts +47 -0
  473. package/src/storage/file-download-grants/types.ts +48 -0
  474. package/src/storage/in-memory/index.ts +13 -2
  475. package/src/storage/index.ts +31 -13
  476. package/src/storage/internal.ts +1 -0
  477. package/src/storage/migrations/index.ts +1 -0
  478. package/src/storage/migrations/migrate-storage.ts +36 -12
  479. package/src/storage/migrations/types.ts +8 -0
  480. package/src/storage/objects/in-memory/query.ts +2 -0
  481. package/src/storage/objects/in-memory/selected-reader.ts +1 -0
  482. package/src/storage/objects/in-memory/storage.ts +1 -0
  483. package/src/storage/objects/query-preparation.ts +77 -0
  484. package/src/storage/objects/types.ts +2 -0
  485. package/src/storage/ontology/commits.ts +1 -6
  486. package/src/storage/ontology/in-memory/index.ts +28 -9
  487. package/src/storage/ontology/in-memory/materializations-finalization.ts +35 -68
  488. package/src/storage/ontology/in-memory/materializations-state.ts +0 -22
  489. package/src/storage/ontology/in-memory/materializations-work.ts +0 -45
  490. package/src/storage/ontology/in-memory/materializations.ts +172 -653
  491. package/src/storage/ontology/in-memory/outbox.ts +37 -29
  492. package/src/storage/ontology/in-memory/replacement-plans.ts +697 -0
  493. package/src/storage/ontology/in-memory/shared-state.ts +24 -2
  494. package/src/storage/ontology/in-memory/source-roots.ts +7 -2
  495. package/src/storage/ontology/in-memory/sources.ts +7 -33
  496. package/src/storage/ontology/in-memory/state-reader.ts +245 -0
  497. package/src/storage/ontology/index.ts +19 -13
  498. package/src/storage/ontology/materializations.ts +45 -74
  499. package/src/storage/ontology/outbox.ts +4 -7
  500. package/src/storage/ontology/provider-header-validation.ts +0 -57
  501. package/src/storage/ontology/provider-work.ts +381 -90
  502. package/src/storage/ontology/provider.ts +74 -171
  503. package/src/storage/ontology/replacement-plans.ts +117 -0
  504. package/src/storage/ontology/sources.ts +0 -12
  505. package/src/storage/operation-scope.ts +33 -1
  506. package/src/storage/projection-runs/in-memory.ts +7 -1
  507. package/src/storage/projection-runs/types.ts +2 -0
  508. package/src/storage/types.ts +2 -0
  509. package/src/testing/ai-cost-storage-contract.ts +1 -0
  510. package/src/testing/ai-limit-storage-contract.ts +62 -0
  511. package/src/testing/ai-usage-storage-contract.ts +31 -0
  512. package/src/testing/file-download-grant-storage-contract.ts +139 -0
  513. package/src/testing/index.ts +4 -0
  514. package/src/testing/lake-storage-contract.ts +87 -1
  515. package/src/testing/materializer-storage-contract.ts +1008 -1
  516. package/src/testing/object-read-scope-contract.ts +1 -0
  517. package/src/testing/ontology-contract-fixture.ts +11 -87
  518. package/src/testing/ontology-storage-contract.ts +70 -39
  519. package/src/testing/projection-run-storage-contract.ts +14 -0
  520. package/src/testing/queues-contract.ts +59 -0
  521. package/src/workers/queue-worker.ts +19 -16
  522. package/dist/chunk-6z1q7j19.js.map +0 -62
  523. package/dist/chunk-7ytf06d3.js +0 -113
  524. package/dist/chunk-7ytf06d3.js.map +0 -10
  525. package/dist/chunk-a0073121.js.map +0 -12
  526. package/dist/chunk-g4rbm4a6.js.map +0 -15
  527. package/dist/chunk-h044jb97.js.map +0 -15
  528. package/dist/chunk-h4138ww2.js.map +0 -50
  529. package/dist/chunk-hgqpcmyr.js.map +0 -12
  530. package/dist/chunk-jgwb25gc.js.map +0 -12
  531. package/dist/chunk-k4kkp58d.js.map +0 -11
  532. package/dist/chunk-kvysp909.js.map +0 -17
  533. package/dist/chunk-mdnw7nj8.js.map +0 -15
  534. package/dist/chunk-s3csryxe.js.map +0 -11
  535. package/dist/chunk-tnvafr7g.js.map +0 -19
  536. package/dist/chunk-xnx96gfy.js.map +0 -15
  537. package/dist/materializer/execution/plan-stream.d.ts +0 -8
  538. package/dist/materializer/execution/plan-stream.d.ts.map +0 -1
  539. package/src/materializer/execution/plan-stream.ts +0 -121
  540. /package/dist/{chunk-zb47r1c8.js.map → chunk-23xs4qp9.js.map} +0 -0
  541. /package/dist/{chunk-gmdvns8f.js.map → chunk-2am3db31.js.map} +0 -0
  542. /package/dist/{chunk-fj1dvp37.js.map → chunk-2vhg6ysa.js.map} +0 -0
  543. /package/dist/{chunk-dp7yk20b.js.map → chunk-33saed7g.js.map} +0 -0
  544. /package/dist/{chunk-chdg6eqq.js.map → chunk-52c5zb0z.js.map} +0 -0
  545. /package/dist/{chunk-69kt9q43.js.map → chunk-5be2ath4.js.map} +0 -0
  546. /package/dist/{chunk-qnd7ehe5.js.map → chunk-5thzcb8g.js.map} +0 -0
  547. /package/dist/{chunk-dsv8kdgk.js.map → chunk-9g6jz9kk.js.map} +0 -0
  548. /package/dist/{chunk-7g2gjvah.js.map → chunk-a7er86jd.js.map} +0 -0
  549. /package/dist/{chunk-b9y8hcm2.js.map → chunk-c2rga5cx.js.map} +0 -0
  550. /package/dist/{chunk-f72rbvsb.js.map → chunk-cnb5kv05.js.map} +0 -0
  551. /package/dist/{chunk-sbcm1b92.js.map → chunk-e67ynxcr.js.map} +0 -0
  552. /package/dist/{chunk-cq44v1a6.js.map → chunk-f1xh7a32.js.map} +0 -0
  553. /package/dist/{chunk-kttr5ftm.js.map → chunk-gf7yht60.js.map} +0 -0
  554. /package/dist/{chunk-nj0020ay.js.map → chunk-jjrn5v0p.js.map} +0 -0
  555. /package/dist/{chunk-nvymebc1.js.map → chunk-jnfxmr3f.js.map} +0 -0
  556. /package/dist/{chunk-nkbev3tr.js.map → chunk-k4g51s47.js.map} +0 -0
  557. /package/dist/{chunk-tkdbge6v.js.map → chunk-rx7h5fdx.js.map} +0 -0
  558. /package/dist/{chunk-h866d223.js.map → chunk-sk0hcjsz.js.map} +0 -0
  559. /package/dist/{chunk-2xvgy3x5.js.map → chunk-svabwqdq.js.map} +0 -0
  560. /package/dist/{chunk-667x4drs.js.map → chunk-t9shqx3w.js.map} +0 -0
  561. /package/dist/{chunk-cxj8y8t0.js.map → chunk-vre348sb.js.map} +0 -0
  562. /package/dist/{chunk-vsvrv7n8.js.map → chunk-w9yycd3t.js.map} +0 -0
  563. /package/dist/{chunk-a7ne02hk.js.map → chunk-xcy5ddha.js.map} +0 -0
@@ -3,7 +3,7 @@
3
3
  "sources": ["../src/models/language-model.ts", "../src/models/events.ts"],
4
4
  "sourcesContent": [
5
5
  "import type { JsonObject, ReadonlyJsonObject } from \"../json\"\nimport type { LanguageModelDefinitionCatalog, ModelDefinitionCatalog } from \"./catalog\"\nimport type { LanguageModelDefinition } from \"./definitions\"\nimport type { LanguageModelStreamEvent } from \"./events\"\nimport type { ModelMessage } from \"./messages\"\nimport type { ModelCostEstimator } from \"./pricing\"\n\nexport const MODEL_REASONING_EFFORTS = [\"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"] as const\n\nexport type ModelReasoningEffort = (typeof MODEL_REASONING_EFFORTS)[number]\n\nexport const MODEL_REASONING_LEVELS = [\n \"provider-default\",\n \"none\",\n ...MODEL_REASONING_EFFORTS,\n] as const\n\nexport type ModelReasoningLevel = (typeof MODEL_REASONING_LEVELS)[number]\n\n/** Exact provider-native reasoning budget, expressed in tokens. */\nexport interface ModelReasoningBudget extends ReadonlyJsonObject {\n readonly budgetTokens: number\n}\n\n/** Provider-neutral reasoning preference accepted by every language-model runtime. */\nexport type ModelReasoning = ModelReasoningLevel | ModelReasoningBudget\n\nexport interface ModelReasoningBudgetCapabilities {\n readonly min?: number\n readonly max?: number\n}\n\n/** Controls exposed by one concrete model offering through one provider. */\nexport interface ModelReasoningCapabilities {\n readonly canDisable?: boolean\n readonly efforts?: readonly ModelReasoningEffort[]\n readonly budgetTokens?: ModelReasoningBudgetCapabilities\n}\n\nexport interface ModelCapabilities {\n readonly inputMediaTypes?: readonly string[] | \"any\"\n /** `undefined` is unknown, `false` is unsupported, and an object describes supported controls. */\n readonly reasoning?: false | ModelReasoningCapabilities\n readonly localTools?: boolean\n readonly parallelToolCalls?: boolean\n /** `undefined` is unknown, not an assertion that schema-constrained output is unsupported. */\n readonly nativeStructuredOutput?: boolean\n readonly providerExecutedTools?: boolean\n}\n\nexport interface ModelToolSpecification {\n readonly name: string\n readonly description: string\n readonly inputSchema: JsonObject\n}\n\nexport interface ModelResponseFormat {\n readonly type: \"json\"\n readonly name: string\n readonly description?: string\n readonly schema: JsonObject\n}\n\nexport interface LanguageModelRequest {\n readonly callId: string\n readonly messages: readonly ModelMessage[]\n readonly tools: readonly ModelToolSpecification[]\n readonly reasoning?: ModelReasoning\n /** Per-call output ceiling; providers must not exceed a stricter configured model limit. */\n readonly maxOutputTokens?: number\n /** Disable automatic prompt caching without overriding explicit provider configuration. */\n readonly caching?: \"auto\" | \"off\"\n readonly responseFormat?: ModelResponseFormat\n readonly signal: AbortSignal\n}\n\nexport interface LanguageModelStream {\n readonly events: AsyncIterable<LanguageModelStreamEvent>\n}\n\nexport interface LanguageModel {\n readonly providerId: string\n readonly modelId: string\n readonly definition: LanguageModelDefinition\n readonly costEstimator?: ModelCostEstimator\n /**\n * Return an executable model pinned to operational metadata, preserving model identity.\n * `offline` requires a local snapshot without catalog I/O. Workers retain this model\n * for generation and compaction; later catalog refreshes must not change its capabilities/limits.\n * Throw ModelCatalogUnavailableError for catalog transport/access failures to allow workers to\n * retry with an offline snapshot. Invalid definitions and other resolver errors remain fatal.\n */\n resolve?(options?: { readonly offline?: boolean }): Promise<LanguageModel>\n /** Validate known output constraints without inference. Success does not certify endpoint support. */\n validateResponseFormat?(format: ModelResponseFormat): void | Promise<void>\n stream(request: LanguageModelRequest): Promise<LanguageModelStream>\n}\n\n/** The common callable provider shape. Provider packages may accept additional model options. */\nexport interface ModelProvider<TCatalog extends ModelDefinitionCatalog = ModelDefinitionCatalog> {\n readonly providerId: string\n readonly catalog: TCatalog\n}\n\nexport interface LanguageModelProvider extends ModelProvider<LanguageModelDefinitionCatalog> {\n (modelId: string): LanguageModel\n}\n\nexport function isModelReasoning(value: unknown): value is ModelReasoning {\n if (typeof value === \"string\") {\n return (MODEL_REASONING_LEVELS as readonly string[]).includes(value)\n }\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return false\n if (Object.keys(value).length !== 1) return false\n const budgetTokens = (value as { readonly budgetTokens?: unknown }).budgetTokens\n return typeof budgetTokens === \"number\" && Number.isSafeInteger(budgetTokens) && budgetTokens >= 0\n}\n\n/** Explain why a request cannot be represented by known model capabilities. Unknown is allowed. */\nexport function modelReasoningSupportIssue(\n capabilities: ModelCapabilities[\"reasoning\"],\n reasoning: unknown\n): string | undefined {\n if (reasoning === undefined) return undefined\n if (!isModelReasoning(reasoning)) return \"the reasoning preference is invalid\"\n if (reasoning === \"provider-default\") return undefined\n if (capabilities === undefined) return undefined\n if (capabilities === false) return \"reasoning is not supported\"\n if (reasoning === \"none\") {\n return capabilities.canDisable === true ? undefined : \"reasoning cannot be disabled\"\n }\n if (typeof reasoning === \"string\") {\n return capabilities.efforts?.includes(reasoning) === true\n ? undefined\n : `reasoning effort '${reasoning}' is not supported`\n }\n const budget = capabilities.budgetTokens\n if (budget === undefined) return \"reasoning token budgets are not supported\"\n if (budget.min !== undefined && reasoning.budgetTokens < budget.min) {\n return `reasoning token budget must be at least ${budget.min}`\n }\n if (budget.max !== undefined && reasoning.budgetTokens > budget.max) {\n return `reasoning token budget must not exceed ${budget.max}`\n }\n return undefined\n}\n",
6
- "import type { JsonObject, JsonValue } from \"../json\"\nimport type { ModelReasoning } from \"./language-model\"\nimport type {\n ModelAssistantPart,\n ModelToolCallPart,\n ModelToolResultPart,\n ProviderData,\n} from \"./messages\"\nimport type { ModelCallCost, ModelCostEstimate, ModelReportedCost } from \"./pricing\"\n\nexport interface ModelRoute {\n /** Provider selected by a routing gateway, when it differs from the provider being called. */\n readonly providerId?: string\n readonly modelId?: string\n}\n\n/** Only identifiers supplied by the provider. Internal call/response fallback IDs never belong here. */\nexport type ModelProviderIds = {\n readonly requestId?: string\n readonly responseId?: string\n readonly generationId?: string\n}\n\nexport function normalizeModelProviderIds(value: unknown): ModelProviderIds {\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n throw new TypeError(\"[Sixb] Provider identifiers must be an object.\")\n const result: { requestId?: string; responseId?: string; generationId?: string } = {}\n for (const [key, id] of Object.entries(value)) {\n if (key !== \"requestId\" && key !== \"responseId\" && key !== \"generationId\") continue\n if (id === undefined) continue\n if (typeof id !== \"string\" || !id.trim())\n throw new TypeError(`[Sixb] Provider ${key} must be nonblank.`)\n result[key] = id\n }\n return Object.freeze(result)\n}\n\nexport type ModelFinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"pause\"\n | \"error\"\n | \"other\"\n | \"unknown\"\n\nexport interface ModelUsage {\n readonly inputTokens?: number\n readonly outputTokens?: number\n readonly uncachedInputTokens?: number\n readonly cacheReadInputTokens?: number\n readonly cacheWriteInputTokens?: number\n readonly cacheWrite5mInputTokens?: number\n readonly cacheWrite1hInputTokens?: number\n readonly textOutputTokens?: number\n readonly reasoningOutputTokens?: number\n readonly raw?: JsonObject\n}\n\nexport type LanguageModelStreamEvent =\n | { readonly type: \"stream-start\" }\n | {\n readonly type: \"response-metadata\"\n readonly providerIds?: ModelProviderIds\n readonly id?: string\n readonly modelId?: string\n }\n | { readonly type: \"text-start\"; readonly id: string; readonly providerData?: ProviderData }\n | { readonly type: \"text-delta\"; readonly id: string; readonly delta: string }\n | { readonly type: \"text-end\"; readonly id: string; readonly providerData?: ProviderData }\n | {\n readonly type: \"reasoning-start\"\n readonly id: string\n readonly providerData?: ProviderData\n }\n | { readonly type: \"reasoning-delta\"; readonly id: string; readonly delta: string }\n | { readonly type: \"reasoning-end\"; readonly id: string; readonly providerData?: ProviderData }\n | {\n readonly type: \"tool-input-start\"\n readonly id: string\n readonly toolName: string\n readonly providerData?: ProviderData\n readonly providerExecuted?: boolean\n readonly dynamic?: boolean\n }\n | { readonly type: \"tool-input-delta\"; readonly id: string; readonly delta: string }\n | { readonly type: \"tool-input-end\"; readonly id: string; readonly providerData?: ProviderData }\n | {\n readonly type: \"tool-call\"\n readonly toolCallId: string\n readonly toolName: string\n readonly input: string\n readonly providerData?: ProviderData\n readonly providerExecuted?: boolean\n readonly dynamic?: boolean\n }\n | {\n readonly type: \"tool-result\"\n readonly toolCallId: string\n readonly toolName: string\n readonly output: JsonValue\n readonly isError?: boolean\n readonly providerData?: ProviderData\n readonly providerExecuted?: boolean\n readonly dynamic?: boolean\n }\n | {\n readonly type: \"provider-state\"\n readonly providerId: string\n readonly data: JsonValue\n }\n | {\n readonly type: \"finish\"\n readonly finishReason: ModelFinishReason\n readonly rawFinishReason?: string\n readonly usage: ModelUsage\n readonly providerData?: ProviderData\n readonly reportedCost?: ModelReportedCost\n readonly route?: ModelRoute\n }\n | { readonly type: \"error\"; readonly error: unknown }\n\nexport type ModelUiChunk =\n | { readonly type: \"start-step\" }\n | { readonly type: \"text-start\"; readonly id: string }\n | { readonly type: \"text-delta\"; readonly id: string; readonly delta: string }\n | { readonly type: \"text-end\"; readonly id: string }\n | { readonly type: \"reasoning-start\"; readonly id: string }\n | { readonly type: \"reasoning-delta\"; readonly id: string; readonly delta: string }\n | { readonly type: \"reasoning-end\"; readonly id: string }\n | {\n readonly type: \"tool-input-start\"\n readonly toolCallId: string\n readonly toolName: string\n }\n | {\n readonly type: \"tool-input-delta\"\n readonly toolCallId: string\n readonly toolName: string\n readonly inputTextDelta: string\n }\n | {\n readonly type: \"tool-input-available\"\n readonly toolCallId: string\n readonly toolName: string\n readonly input: JsonValue\n }\n | {\n readonly type: \"tool-input-error\"\n readonly toolCallId: string\n readonly toolName: string\n readonly input: JsonValue\n readonly errorText: string\n }\n | {\n readonly type: \"tool-output-available\"\n readonly toolCallId: string\n readonly toolName: string\n readonly output: JsonValue\n }\n | {\n readonly type: \"tool-output-error\"\n readonly toolCallId: string\n readonly toolName: string\n readonly errorText: string\n }\n | { readonly type: \"error\"; readonly errorText: string }\n\nexport interface ModelCallEndEvent {\n readonly providerIds?: ModelProviderIds\n /** Retained independently when the selected display cost is provider-reported. */\n readonly estimate?: ModelCostEstimate\n readonly callId: string\n readonly providerId: string\n readonly modelId: string\n readonly responseId: string\n readonly responseModelId?: string\n readonly usage: ModelUsage\n readonly cost: ModelCallCost\n readonly requestedReasoning?: ModelReasoning\n readonly route?: ModelRoute\n}\n\nexport interface ModelStep {\n readonly content: readonly (ModelAssistantPart | ModelToolResultPart)[]\n readonly finishReason: ModelFinishReason\n readonly rawFinishReason?: string\n readonly usage: ModelUsage\n readonly responseId: string\n readonly responseModelId?: string\n readonly cost: ModelCallCost\n readonly route?: ModelRoute\n}\n\nexport interface ModelLoopPartial {\n readonly content: readonly (ModelAssistantPart | ModelToolCallPart | ModelToolResultPart)[]\n}\n"
6
+ "import type { JsonObject, JsonValue } from \"../json\"\nimport type { ModelReasoning } from \"./language-model\"\nimport type {\n ModelAssistantPart,\n ModelToolCallPart,\n ModelToolResultPart,\n ProviderData,\n} from \"./messages\"\nimport type { ModelCallCost, ModelCostEstimate, ModelReportedCost } from \"./pricing\"\n\nexport interface ModelRoute {\n /** Provider selected by a routing gateway, when it differs from the provider being called. */\n readonly providerId?: string\n readonly modelId?: string\n}\n\n/** Only identifiers supplied by the provider. Internal call/response fallback IDs never belong here. */\nexport type ModelProviderIds = {\n readonly requestId?: string\n readonly responseId?: string\n readonly generationId?: string\n}\n\nexport function normalizeModelProviderIds(value: unknown): ModelProviderIds {\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n throw new TypeError(\"[Sixb] Provider identifiers must be an object.\")\n const result: { requestId?: string; responseId?: string; generationId?: string } = {}\n for (const [key, id] of Object.entries(value)) {\n if (key !== \"requestId\" && key !== \"responseId\" && key !== \"generationId\") continue\n if (id === undefined) continue\n if (typeof id !== \"string\" || !id.trim())\n throw new TypeError(`[Sixb] Provider ${key} must be nonblank.`)\n result[key] = id\n }\n return Object.freeze(result)\n}\n\nexport type ModelFinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"pause\"\n | \"error\"\n | \"other\"\n | \"unknown\"\n\nexport interface ModelUsage {\n /** Audio content duration in milliseconds, rounded to the nearest millisecond. Not billed duration. */\n readonly audioDurationMs?: number\n readonly inputTokens?: number\n readonly outputTokens?: number\n readonly uncachedInputTokens?: number\n readonly cacheReadInputTokens?: number\n readonly cacheWriteInputTokens?: number\n readonly cacheWrite5mInputTokens?: number\n readonly cacheWrite1hInputTokens?: number\n readonly textOutputTokens?: number\n readonly reasoningOutputTokens?: number\n readonly raw?: JsonObject\n}\n\nexport type LanguageModelStreamEvent =\n | { readonly type: \"stream-start\" }\n | {\n readonly type: \"response-metadata\"\n readonly providerIds?: ModelProviderIds\n readonly id?: string\n readonly modelId?: string\n }\n | { readonly type: \"text-start\"; readonly id: string; readonly providerData?: ProviderData }\n | { readonly type: \"text-delta\"; readonly id: string; readonly delta: string }\n | { readonly type: \"text-end\"; readonly id: string; readonly providerData?: ProviderData }\n | {\n readonly type: \"reasoning-start\"\n readonly id: string\n readonly providerData?: ProviderData\n }\n | { readonly type: \"reasoning-delta\"; readonly id: string; readonly delta: string }\n | { readonly type: \"reasoning-end\"; readonly id: string; readonly providerData?: ProviderData }\n | {\n readonly type: \"tool-input-start\"\n readonly id: string\n readonly toolName: string\n readonly providerData?: ProviderData\n readonly providerExecuted?: boolean\n readonly dynamic?: boolean\n }\n | { readonly type: \"tool-input-delta\"; readonly id: string; readonly delta: string }\n | { readonly type: \"tool-input-end\"; readonly id: string; readonly providerData?: ProviderData }\n | {\n readonly type: \"tool-call\"\n readonly toolCallId: string\n readonly toolName: string\n readonly input: string\n readonly providerData?: ProviderData\n readonly providerExecuted?: boolean\n readonly dynamic?: boolean\n }\n | {\n readonly type: \"tool-result\"\n readonly toolCallId: string\n readonly toolName: string\n readonly output: JsonValue\n readonly isError?: boolean\n readonly providerData?: ProviderData\n readonly providerExecuted?: boolean\n readonly dynamic?: boolean\n }\n | {\n readonly type: \"provider-state\"\n readonly providerId: string\n readonly data: JsonValue\n }\n | {\n readonly type: \"finish\"\n readonly finishReason: ModelFinishReason\n readonly rawFinishReason?: string\n readonly usage: ModelUsage\n readonly providerData?: ProviderData\n readonly reportedCost?: ModelReportedCost\n readonly route?: ModelRoute\n }\n | { readonly type: \"error\"; readonly error: unknown }\n\nexport type ModelUiChunk =\n | { readonly type: \"start-step\" }\n | { readonly type: \"text-start\"; readonly id: string }\n | { readonly type: \"text-delta\"; readonly id: string; readonly delta: string }\n | { readonly type: \"text-end\"; readonly id: string }\n | { readonly type: \"reasoning-start\"; readonly id: string }\n | { readonly type: \"reasoning-delta\"; readonly id: string; readonly delta: string }\n | { readonly type: \"reasoning-end\"; readonly id: string }\n | {\n readonly type: \"tool-input-start\"\n readonly toolCallId: string\n readonly toolName: string\n }\n | {\n readonly type: \"tool-input-delta\"\n readonly toolCallId: string\n readonly toolName: string\n readonly inputTextDelta: string\n }\n | {\n readonly type: \"tool-input-available\"\n readonly toolCallId: string\n readonly toolName: string\n readonly input: JsonValue\n }\n | {\n readonly type: \"tool-input-error\"\n readonly toolCallId: string\n readonly toolName: string\n readonly input: JsonValue\n readonly errorText: string\n }\n | {\n readonly type: \"tool-output-available\"\n readonly toolCallId: string\n readonly toolName: string\n readonly output: JsonValue\n }\n | {\n readonly type: \"tool-output-error\"\n readonly toolCallId: string\n readonly toolName: string\n readonly errorText: string\n }\n | { readonly type: \"error\"; readonly errorText: string }\n\nexport interface ModelCallEndEvent {\n readonly modelKind?: import(\"./definitions\").ModelKind\n readonly providerIds?: ModelProviderIds\n /** Retained independently when the selected display cost is provider-reported. */\n readonly estimate?: ModelCostEstimate\n readonly callId: string\n readonly providerId: string\n readonly modelId: string\n readonly responseId: string\n readonly responseModelId?: string\n readonly usage: ModelUsage\n readonly cost: ModelCallCost\n readonly requestedReasoning?: ModelReasoning\n readonly route?: ModelRoute\n}\n\nexport interface ModelStep {\n readonly content: readonly (ModelAssistantPart | ModelToolResultPart)[]\n readonly finishReason: ModelFinishReason\n readonly rawFinishReason?: string\n readonly usage: ModelUsage\n readonly responseId: string\n readonly responseModelId?: string\n readonly cost: ModelCallCost\n readonly route?: ModelRoute\n}\n\nexport interface ModelLoopPartial {\n readonly content: readonly (ModelAssistantPart | ModelToolCallPart | ModelToolResultPart)[]\n}\n"
7
7
  ],
8
8
  "mappings": ";;AAOO,IAAM,2BAA0B,CAAC,WAAW,OAAO,UAAU,QAAQ,SAAS,KAAK;AAInF,IAAM,0BAAyB;AAAA,EACpC;AAAA,EACA;AAAA,EACA,GAAG;AACL;AA6FO,SAAS,iBAAgB,CAAC,OAAyC;AAAA,EACxE,IAAI,OAAO,UAAU,UAAU;AAAA,IAC7B,OAAQ,wBAA6C,SAAS,KAAK;AAAA,EACrE;AAAA,EACA,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO;AAAA,EAChF,IAAI,OAAO,KAAK,KAAK,EAAE,WAAW;AAAA,IAAG,OAAO;AAAA,EAC5C,MAAM,eAAgB,MAA8C;AAAA,EACpE,OAAO,OAAO,iBAAiB,YAAY,OAAO,cAAc,YAAY,KAAK,gBAAgB;AAAA;AAI5F,SAAS,2BAA0B,CACxC,cACA,WACoB;AAAA,EACpB,IAAI,cAAc;AAAA,IAAW;AAAA,EAC7B,IAAI,CAAC,kBAAiB,SAAS;AAAA,IAAG,OAAO;AAAA,EACzC,IAAI,cAAc;AAAA,IAAoB;AAAA,EACtC,IAAI,iBAAiB;AAAA,IAAW;AAAA,EAChC,IAAI,iBAAiB;AAAA,IAAO,OAAO;AAAA,EACnC,IAAI,cAAc,QAAQ;AAAA,IACxB,OAAO,aAAa,eAAe,OAAO,YAAY;AAAA,EACxD;AAAA,EACA,IAAI,OAAO,cAAc,UAAU;AAAA,IACjC,OAAO,aAAa,SAAS,SAAS,SAAS,MAAM,OACjD,YACA,qBAAqB;AAAA,EAC3B;AAAA,EACA,MAAM,SAAS,aAAa;AAAA,EAC5B,IAAI,WAAW;AAAA,IAAW,OAAO;AAAA,EACjC,IAAI,OAAO,QAAQ,aAAa,UAAU,eAAe,OAAO,KAAK;AAAA,IACnE,OAAO,2CAA2C,OAAO;AAAA,EAC3D;AAAA,EACA,IAAI,OAAO,QAAQ,aAAa,UAAU,eAAe,OAAO,KAAK;AAAA,IACnE,OAAO,0CAA0C,OAAO;AAAA,EAC1D;AAAA,EACA;AAAA;;;ACzHK,SAAS,0BAAyB,CAAC,OAAkC;AAAA,EAC1E,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK;AAAA,IACpE,MAAM,IAAI,UAAU,gDAAgD;AAAA,EACtE,MAAM,SAA6E,CAAC;AAAA,EACpF,YAAY,KAAK,OAAO,OAAO,QAAQ,KAAK,GAAG;AAAA,IAC7C,IAAI,QAAQ,eAAe,QAAQ,gBAAgB,QAAQ;AAAA,MAAgB;AAAA,IAC3E,IAAI,OAAO;AAAA,MAAW;AAAA,IACtB,IAAI,OAAO,OAAO,YAAY,CAAC,GAAG,KAAK;AAAA,MACrC,MAAM,IAAI,UAAU,mBAAmB,uBAAuB;AAAA,IAChE,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,OAAO,OAAO,OAAO,MAAM;AAAA;",
9
9
  "debugId": "1D80C81FE1B8244564756E2164756E21",
@@ -157,11 +157,30 @@ function scopeMethod(implementation, kind, target, scope) {
157
157
  if (kind === "async-generator") {
158
158
  return (...args) => {
159
159
  scope.assertAvailable();
160
- return Reflect.apply(implementation, target, args);
160
+ return scopeSteps(Reflect.apply(implementation, target, args), scope);
161
161
  };
162
162
  }
163
163
  return implementation.bind(target);
164
164
  }
165
+ function scopeSteps(stream, scope) {
166
+ let iterator;
167
+ const steps = () => {
168
+ iterator ??= stream[Symbol.asyncIterator]();
169
+ return iterator;
170
+ };
171
+ const scoped = {
172
+ next: (...args) => scope.run(() => steps().next(...args)),
173
+ return: (value) => scope.run(async () => await steps().return?.(value) ?? { done: true, value }),
174
+ throw: (error) => scope.run(async () => {
175
+ const current = steps();
176
+ if (!current.throw)
177
+ throw error;
178
+ return current.throw(error);
179
+ }),
180
+ [Symbol.asyncIterator]: () => scoped
181
+ };
182
+ return scoped;
183
+ }
165
184
  function createAuthOperationScope2(target, scope) {
166
185
  return createOperationScopedFacade2(target, scope, {
167
186
  users: createOperationScopedFacade2(target.users, scope),
@@ -190,6 +209,7 @@ function createOntologyOperationScope2(target, scope) {
190
209
  commits: createOperationScopedFacade2(target.commits, scope),
191
210
  sources: createOperationScopedFacade2(target.sources, scope),
192
211
  materializations: createOperationScopedFacade2(target.materializations, scope),
212
+ replacementPlans: createOperationScopedFacade2(target.replacementPlans, scope),
193
213
  outbox: createOperationScopedFacade2(target.outbox, scope),
194
214
  ...target.vectors ? { vectors: createOperationScopedFacade2(target.vectors, scope) } : {}
195
215
  });
@@ -218,4 +238,4 @@ function isAsyncGeneratorFunction(value) {
218
238
 
219
239
  export { createStorageOperationScope2, createOperationScopedFacade2, decorateOperationScopedMethodForTesting2, createAuthOperationScope2, createAgentOperationScope2, createOntologyOperationScope2, createObjectOperationScope2, createWorkflowRunOperationScope2 };
220
240
 
221
- //# debugId=2CC4E14F86F3010764756E2164756E21
241
+ //# debugId=C932764A8A1B095764756E2164756E21
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/storage/operation-scope.ts", "../src/storage/objects/guard.ts"],
4
4
  "sourcesContent": [
5
- "import { AsyncLocalStorage } from \"node:async_hooks\"\nimport type { AgentStorage } from \"./agents\"\nimport type { AuthStorage } from \"./auth\"\nimport type { ObjectStorage } from \"./objects\"\nimport { createGuardedObjectReadStorage, requireObjectReadScopeFactory } from \"./objects/guard\"\nimport type { OntologyStorage } from \"./ontology\"\nimport type { WorkflowRunStorage } from \"./workflow-runs\"\n\nexport type StorageOperationRunner = <TResult>(\n run: () => Promise<TResult> | TResult\n) => Promise<TResult>\n\n/** Provider-owned execution boundary for root storage operations. */\nexport interface StorageOperationScope {\n assertAvailable(): void\n run<TResult>(operation: () => Promise<TResult> | TResult): Promise<TResult>\n}\n\nexport function createStorageOperationScope(\n run: StorageOperationRunner,\n assertAvailable: () => void = () => undefined\n): StorageOperationScope {\n const executions = new AsyncLocalStorage<{ active: boolean }>()\n return {\n assertAvailable,\n async run(operation) {\n const inherited = executions.getStore()\n if (inherited?.active) {\n assertAvailable()\n return operation()\n }\n\n const execution = { active: true }\n try {\n return await executions.run(execution, () => run(operation))\n } finally {\n execution.active = false\n }\n },\n }\n}\n\nconst operationScopeTargets = new WeakMap<object, object>()\n\n/**\n * Give every async operation exposed by a store one provider-owned execution scope.\n *\n * Storage contracts use `async` methods for I/O and reserve synchronous methods for local\n * capabilities such as `queryCapabilities()`. Discovering the former from their implementation\n * removes the second, manually synchronized method registry that previously coupled every storage\n * primitive to the SQLite/InMemory lock.\n */\nexport function createOperationScopedFacade<T extends object>(\n target: T,\n scope: StorageOperationScope,\n propertyOverrides: Partial<T> = {}\n): T {\n const methodKinds = discoverMethodKinds(target)\n const overrideKeys = new Set(Reflect.ownKeys(propertyOverrides))\n const methodCache = new Map<\n PropertyKey,\n { implementation: (...args: unknown[]) => unknown; exposed: (...args: unknown[]) => unknown }\n >()\n\n const facade = new Proxy(target, {\n get(current, property) {\n if (overrideKeys.has(property)) {\n return Reflect.get(propertyOverrides, property, propertyOverrides)\n }\n\n const value = Reflect.get(current, property, current)\n const kind = methodKinds.get(property)\n if (!kind || typeof value !== \"function\") return value\n const implementation = value as (...args: unknown[]) => unknown\n\n const cached = methodCache.get(property)\n if (cached?.implementation === implementation) return cached.exposed\n\n const exposed = scopeMethod(implementation, kind, current, scope)\n methodCache.set(property, { implementation, exposed })\n return exposed\n },\n set(current, property, value) {\n if (overrideKeys.has(property)) return false\n return Reflect.set(current, property, value, current)\n },\n defineProperty(current, property, attributes) {\n if (overrideKeys.has(property)) return false\n return Reflect.defineProperty(current, property, attributes)\n },\n deleteProperty(current, property) {\n if (overrideKeys.has(property)) return false\n return Reflect.deleteProperty(current, property)\n },\n })\n operationScopeTargets.set(facade, target)\n return facade\n}\n\ntype StorageMethod = (...args: never[]) => unknown\ntype StorageMethodKey<T> = {\n [TKey in keyof T]-?: T[TKey] extends StorageMethod ? TKey : never\n}[keyof T]\n\n/** Replace a provider method behind its scoped facade without exposing the raw provider. */\nexport function decorateOperationScopedMethodForTesting<\n T extends object,\n TKey extends StorageMethodKey<T>,\n>(\n facade: T,\n property: TKey,\n decorate: (implementation: Extract<T[TKey], StorageMethod>) => Extract<T[TKey], StorageMethod>\n): () => void {\n const target = operationScopeTargets.get(facade)\n if (!target) throw new Error(\"[Sixb] Expected an operation-scoped storage facade.\")\n\n const previousDescriptor = Reflect.getOwnPropertyDescriptor(target, property)\n const implementation = Reflect.get(target, property, target)\n if (typeof implementation !== \"function\") {\n throw new Error(`[Sixb] Storage property '${String(property)}' is not a method.`)\n }\n\n const boundImplementation = ((...args: never[]) =>\n Reflect.apply(implementation, target, args)) as Extract<T[TKey], StorageMethod>\n const decorated = decorate(boundImplementation)\n Reflect.defineProperty(target, property, {\n configurable: true,\n enumerable: previousDescriptor?.enumerable ?? false,\n writable: true,\n value: decorated,\n })\n\n return () => {\n if (previousDescriptor) {\n Reflect.defineProperty(target, property, previousDescriptor)\n } else {\n Reflect.deleteProperty(target, property)\n }\n }\n}\n\ntype StorageMethodKind = \"async\" | \"async-generator\" | \"sync\"\n\nfunction discoverMethodKinds(target: object): ReadonlyMap<PropertyKey, StorageMethodKind> {\n const methodKeys = new Set<PropertyKey>()\n for (\n let current: object | null = target;\n current && current !== Object.prototype;\n current = Object.getPrototypeOf(current)\n ) {\n for (const property of Reflect.ownKeys(current)) {\n if (property !== \"constructor\") methodKeys.add(property)\n }\n }\n\n const methodKinds = new Map<PropertyKey, StorageMethodKind>()\n for (const property of methodKeys) {\n const implementation = Reflect.get(target, property, target)\n if (typeof implementation !== \"function\") continue\n methodKinds.set(property, methodKind(implementation))\n }\n return methodKinds\n}\n\nfunction methodKind(implementation: (...args: unknown[]) => unknown): StorageMethodKind {\n if (isAsyncFunction(implementation)) return \"async\"\n if (isAsyncGeneratorFunction(implementation)) return \"async-generator\"\n return \"sync\"\n}\n\nfunction scopeMethod(\n implementation: (...args: unknown[]) => unknown,\n kind: StorageMethodKind,\n target: object,\n scope: StorageOperationScope\n): (...args: unknown[]) => unknown {\n if (kind === \"async\") {\n return (...args: unknown[]) => scope.run(() => Reflect.apply(implementation, target, args))\n }\n\n if (kind === \"async-generator\") {\n return (...args: unknown[]) => {\n scope.assertAvailable()\n return Reflect.apply(implementation, target, args)\n }\n }\n\n return implementation.bind(target)\n}\n\nexport function createAuthOperationScope<T extends AuthStorage>(\n target: T,\n scope: StorageOperationScope\n): T {\n return createOperationScopedFacade<AuthStorage>(target, scope, {\n users: createOperationScopedFacade(target.users, scope),\n identities: createOperationScopedFacade(target.identities, scope),\n serviceAccounts: createOperationScopedFacade(target.serviceAccounts, scope),\n serviceAccountGroupMemberships: createOperationScopedFacade(\n target.serviceAccountGroupMemberships,\n scope\n ),\n sessions: createOperationScopedFacade(target.sessions, scope),\n accessTokens: createOperationScopedFacade(target.accessTokens, scope),\n invitations: createOperationScopedFacade(target.invitations, scope),\n groupMemberships: createOperationScopedFacade(target.groupMemberships, scope),\n magicLinks: createOperationScopedFacade(target.magicLinks, scope),\n oidcAuthorizationAttempts: createOperationScopedFacade(target.oidcAuthorizationAttempts, scope),\n deviceAuthorizations: createOperationScopedFacade(target.deviceAuthorizations, scope),\n }) as T\n}\n\nexport function createAgentOperationScope<T extends AgentStorage>(\n target: T,\n scope: StorageOperationScope\n): T {\n return createOperationScopedFacade<AgentStorage>(target, scope, {\n threads: createOperationScopedFacade(target.threads, scope),\n runs: createOperationScopedFacade(target.runs, scope),\n messages: createOperationScopedFacade(target.messages, scope),\n checkpoints: createOperationScopedFacade(target.checkpoints, scope),\n }) as T\n}\n\nexport function createOntologyOperationScope<T extends OntologyStorage>(\n target: T,\n scope: StorageOperationScope\n): T {\n return createOperationScopedFacade<OntologyStorage>(target, scope, {\n commits: createOperationScopedFacade(target.commits, scope),\n sources: createOperationScopedFacade(target.sources, scope),\n materializations: createOperationScopedFacade(target.materializations, scope),\n outbox: createOperationScopedFacade(target.outbox, scope),\n ...(target.vectors ? { vectors: createOperationScopedFacade(target.vectors, scope) } : {}),\n }) as T\n}\n\n/** Keep synchronously created selected readers inside the provider's root operation scope. */\nexport function createObjectOperationScope<T extends ObjectStorage>(\n target: T,\n scope: StorageOperationScope\n): T {\n const factory = requireObjectReadScopeFactory(target)\n return createOperationScopedFacade<ObjectStorage>(target, scope, {\n createSelectedReadScope: (params) => {\n scope.assertAvailable()\n return createGuardedObjectReadStorage(factory.createSelectedReadScope(params), scope)\n },\n }) as T\n}\n\nexport function createWorkflowRunOperationScope<T extends WorkflowRunStorage>(\n target: T,\n scope: StorageOperationScope\n): T {\n return createOperationScopedFacade<WorkflowRunStorage>(target, scope, {\n nodes: createOperationScopedFacade(target.nodes, scope),\n agentNodes: createOperationScopedFacade(target.agentNodes, scope),\n }) as T\n}\n\nfunction isAsyncFunction(value: unknown): value is (...args: unknown[]) => Promise<unknown> {\n return typeof value === \"function\" && value.constructor.name === \"AsyncFunction\"\n}\n\nfunction isAsyncGeneratorFunction(value: unknown): boolean {\n return typeof value === \"function\" && value.constructor.name === \"AsyncGeneratorFunction\"\n}\n",
5
+ "import { AsyncLocalStorage } from \"node:async_hooks\"\nimport type { AgentStorage } from \"./agents\"\nimport type { AuthStorage } from \"./auth\"\nimport type { ObjectStorage } from \"./objects\"\nimport { createGuardedObjectReadStorage, requireObjectReadScopeFactory } from \"./objects/guard\"\nimport type { OntologyStorage } from \"./ontology\"\nimport type { WorkflowRunStorage } from \"./workflow-runs\"\n\nexport type StorageOperationRunner = <TResult>(\n run: () => Promise<TResult> | TResult\n) => Promise<TResult>\n\n/** Provider-owned execution boundary for root storage operations. */\nexport interface StorageOperationScope {\n assertAvailable(): void\n run<TResult>(operation: () => Promise<TResult> | TResult): Promise<TResult>\n}\n\nexport function createStorageOperationScope(\n run: StorageOperationRunner,\n assertAvailable: () => void = () => undefined\n): StorageOperationScope {\n const executions = new AsyncLocalStorage<{ active: boolean }>()\n return {\n assertAvailable,\n async run(operation) {\n const inherited = executions.getStore()\n if (inherited?.active) {\n assertAvailable()\n return operation()\n }\n\n const execution = { active: true }\n try {\n return await executions.run(execution, () => run(operation))\n } finally {\n execution.active = false\n }\n },\n }\n}\n\nconst operationScopeTargets = new WeakMap<object, object>()\n\n/**\n * Give every async operation exposed by a store one provider-owned execution scope.\n *\n * Storage contracts use `async` methods for I/O and reserve synchronous methods for local\n * capabilities such as `queryCapabilities()`. Discovering the former from their implementation\n * removes the second, manually synchronized method registry that previously coupled every storage\n * primitive to the SQLite/InMemory lock.\n */\nexport function createOperationScopedFacade<T extends object>(\n target: T,\n scope: StorageOperationScope,\n propertyOverrides: Partial<T> = {}\n): T {\n const methodKinds = discoverMethodKinds(target)\n const overrideKeys = new Set(Reflect.ownKeys(propertyOverrides))\n const methodCache = new Map<\n PropertyKey,\n { implementation: (...args: unknown[]) => unknown; exposed: (...args: unknown[]) => unknown }\n >()\n\n const facade = new Proxy(target, {\n get(current, property) {\n if (overrideKeys.has(property)) {\n return Reflect.get(propertyOverrides, property, propertyOverrides)\n }\n\n const value = Reflect.get(current, property, current)\n const kind = methodKinds.get(property)\n if (!kind || typeof value !== \"function\") return value\n const implementation = value as (...args: unknown[]) => unknown\n\n const cached = methodCache.get(property)\n if (cached?.implementation === implementation) return cached.exposed\n\n const exposed = scopeMethod(implementation, kind, current, scope)\n methodCache.set(property, { implementation, exposed })\n return exposed\n },\n set(current, property, value) {\n if (overrideKeys.has(property)) return false\n return Reflect.set(current, property, value, current)\n },\n defineProperty(current, property, attributes) {\n if (overrideKeys.has(property)) return false\n return Reflect.defineProperty(current, property, attributes)\n },\n deleteProperty(current, property) {\n if (overrideKeys.has(property)) return false\n return Reflect.deleteProperty(current, property)\n },\n })\n operationScopeTargets.set(facade, target)\n return facade\n}\n\ntype StorageMethod = (...args: never[]) => unknown\ntype StorageMethodKey<T> = {\n [TKey in keyof T]-?: T[TKey] extends StorageMethod ? TKey : never\n}[keyof T]\n\n/** Replace a provider method behind its scoped facade without exposing the raw provider. */\nexport function decorateOperationScopedMethodForTesting<\n T extends object,\n TKey extends StorageMethodKey<T>,\n>(\n facade: T,\n property: TKey,\n decorate: (implementation: Extract<T[TKey], StorageMethod>) => Extract<T[TKey], StorageMethod>\n): () => void {\n const target = operationScopeTargets.get(facade)\n if (!target) throw new Error(\"[Sixb] Expected an operation-scoped storage facade.\")\n\n const previousDescriptor = Reflect.getOwnPropertyDescriptor(target, property)\n const implementation = Reflect.get(target, property, target)\n if (typeof implementation !== \"function\") {\n throw new Error(`[Sixb] Storage property '${String(property)}' is not a method.`)\n }\n\n const boundImplementation = ((...args: never[]) =>\n Reflect.apply(implementation, target, args)) as Extract<T[TKey], StorageMethod>\n const decorated = decorate(boundImplementation)\n Reflect.defineProperty(target, property, {\n configurable: true,\n enumerable: previousDescriptor?.enumerable ?? false,\n writable: true,\n value: decorated,\n })\n\n return () => {\n if (previousDescriptor) {\n Reflect.defineProperty(target, property, previousDescriptor)\n } else {\n Reflect.deleteProperty(target, property)\n }\n }\n}\n\ntype StorageMethodKind = \"async\" | \"async-generator\" | \"sync\"\n\nfunction discoverMethodKinds(target: object): ReadonlyMap<PropertyKey, StorageMethodKind> {\n const methodKeys = new Set<PropertyKey>()\n for (\n let current: object | null = target;\n current && current !== Object.prototype;\n current = Object.getPrototypeOf(current)\n ) {\n for (const property of Reflect.ownKeys(current)) {\n if (property !== \"constructor\") methodKeys.add(property)\n }\n }\n\n const methodKinds = new Map<PropertyKey, StorageMethodKind>()\n for (const property of methodKeys) {\n const implementation = Reflect.get(target, property, target)\n if (typeof implementation !== \"function\") continue\n methodKinds.set(property, methodKind(implementation))\n }\n return methodKinds\n}\n\nfunction methodKind(implementation: (...args: unknown[]) => unknown): StorageMethodKind {\n if (isAsyncFunction(implementation)) return \"async\"\n if (isAsyncGeneratorFunction(implementation)) return \"async-generator\"\n return \"sync\"\n}\n\nfunction scopeMethod(\n implementation: (...args: unknown[]) => unknown,\n kind: StorageMethodKind,\n target: object,\n scope: StorageOperationScope\n): (...args: unknown[]) => unknown {\n if (kind === \"async\") {\n return (...args: unknown[]) => scope.run(() => Reflect.apply(implementation, target, args))\n }\n\n if (kind === \"async-generator\") {\n return (...args: unknown[]) => {\n scope.assertAvailable()\n return scopeSteps(\n Reflect.apply(implementation, target, args) as AsyncIterable<unknown>,\n scope\n )\n }\n }\n\n return implementation.bind(target)\n}\n\n/**\n * Each step of a stream runs in its own operation scope, released between steps: a page holds the\n * provider's lock while it reads, never while its consumer works on it.\n */\nfunction scopeSteps<T>(\n stream: AsyncIterable<T>,\n scope: StorageOperationScope\n): AsyncIterableIterator<T> {\n let iterator: AsyncIterator<T> | undefined\n const steps = () => {\n iterator ??= stream[Symbol.asyncIterator]()\n return iterator\n }\n const scoped: AsyncIterableIterator<T> = {\n next: (...args) => scope.run(() => steps().next(...args)),\n return: (value) =>\n scope.run(async () => (await steps().return?.(value)) ?? { done: true, value }),\n throw: (error) =>\n scope.run(async () => {\n const current = steps()\n if (!current.throw) throw error\n return current.throw(error)\n }),\n [Symbol.asyncIterator]: () => scoped,\n }\n return scoped\n}\n\nexport function createAuthOperationScope<T extends AuthStorage>(\n target: T,\n scope: StorageOperationScope\n): T {\n return createOperationScopedFacade<AuthStorage>(target, scope, {\n users: createOperationScopedFacade(target.users, scope),\n identities: createOperationScopedFacade(target.identities, scope),\n serviceAccounts: createOperationScopedFacade(target.serviceAccounts, scope),\n serviceAccountGroupMemberships: createOperationScopedFacade(\n target.serviceAccountGroupMemberships,\n scope\n ),\n sessions: createOperationScopedFacade(target.sessions, scope),\n accessTokens: createOperationScopedFacade(target.accessTokens, scope),\n invitations: createOperationScopedFacade(target.invitations, scope),\n groupMemberships: createOperationScopedFacade(target.groupMemberships, scope),\n magicLinks: createOperationScopedFacade(target.magicLinks, scope),\n oidcAuthorizationAttempts: createOperationScopedFacade(target.oidcAuthorizationAttempts, scope),\n deviceAuthorizations: createOperationScopedFacade(target.deviceAuthorizations, scope),\n }) as T\n}\n\nexport function createAgentOperationScope<T extends AgentStorage>(\n target: T,\n scope: StorageOperationScope\n): T {\n return createOperationScopedFacade<AgentStorage>(target, scope, {\n threads: createOperationScopedFacade(target.threads, scope),\n runs: createOperationScopedFacade(target.runs, scope),\n messages: createOperationScopedFacade(target.messages, scope),\n checkpoints: createOperationScopedFacade(target.checkpoints, scope),\n }) as T\n}\n\nexport function createOntologyOperationScope<T extends OntologyStorage>(\n target: T,\n scope: StorageOperationScope\n): T {\n return createOperationScopedFacade<OntologyStorage>(target, scope, {\n commits: createOperationScopedFacade(target.commits, scope),\n sources: createOperationScopedFacade(target.sources, scope),\n materializations: createOperationScopedFacade(target.materializations, scope),\n replacementPlans: createOperationScopedFacade(target.replacementPlans, scope),\n outbox: createOperationScopedFacade(target.outbox, scope),\n ...(target.vectors ? { vectors: createOperationScopedFacade(target.vectors, scope) } : {}),\n }) as T\n}\n\n/** Keep synchronously created selected readers inside the provider's root operation scope. */\nexport function createObjectOperationScope<T extends ObjectStorage>(\n target: T,\n scope: StorageOperationScope\n): T {\n const factory = requireObjectReadScopeFactory(target)\n return createOperationScopedFacade<ObjectStorage>(target, scope, {\n createSelectedReadScope: (params) => {\n scope.assertAvailable()\n return createGuardedObjectReadStorage(factory.createSelectedReadScope(params), scope)\n },\n }) as T\n}\n\nexport function createWorkflowRunOperationScope<T extends WorkflowRunStorage>(\n target: T,\n scope: StorageOperationScope\n): T {\n return createOperationScopedFacade<WorkflowRunStorage>(target, scope, {\n nodes: createOperationScopedFacade(target.nodes, scope),\n agentNodes: createOperationScopedFacade(target.agentNodes, scope),\n }) as T\n}\n\nfunction isAsyncFunction(value: unknown): value is (...args: unknown[]) => Promise<unknown> {\n return typeof value === \"function\" && value.constructor.name === \"AsyncFunction\"\n}\n\nfunction isAsyncGeneratorFunction(value: unknown): boolean {\n return typeof value === \"function\" && value.constructor.name === \"AsyncGeneratorFunction\"\n}\n",
6
6
  "import type { ObjectReadScopeFactory, ObjectReadStorage, ObjectStorage } from \"./types\"\n\nexport interface ObjectReadStorageCallGuard {\n assertAvailable(): void\n run<TResult>(operation: () => Promise<TResult>): Promise<TResult>\n}\n\n/** Validate the required runtime capability before any facade can expose broad object reads. */\nexport function requireObjectReadScopeFactory(storage: ObjectStorage): ObjectReadScopeFactory {\n if (typeof storage.createSelectedReadScope !== \"function\") {\n throw new Error(\n \"[Sixb] Object storage provider must implement ObjectReadScopeFactory to create selected object readers.\"\n )\n }\n return storage\n}\n\n/**\n * Guard every selected-reader terminal without proxying the provider reader.\n *\n * First-party providers freeze their readers. A Proxy cannot substitute a frozen own method\n * without violating JavaScript's invariants, so operation and lifetime guards use this explicit\n * facade instead.\n */\nexport function createGuardedObjectReadStorage(\n reader: ObjectReadStorage,\n guard: ObjectReadStorageCallGuard\n): ObjectReadStorage {\n const guarded: ObjectReadStorage = {\n queryCapabilities: () => {\n guard.assertAvailable()\n return reader.queryCapabilities()\n },\n getByPrimaryId: (input) => guard.run(() => reader.getByPrimaryId(input)),\n selectsObjectProperties: (input) => guard.run(() => reader.selectsObjectProperties(input)),\n listLinks: (input) => guard.run(() => reader.listLinks(input)),\n getByPrimaryIdBatch: (input) => guard.run(() => reader.getByPrimaryIdBatch(input)),\n listLinksBatch: (input) => guard.run(() => reader.listLinksBatch(input)),\n queryLinks: (input) => guard.run(() => reader.queryLinks(input)),\n list: (input) => guard.run(() => reader.list(input)),\n }\n if (reader.queryObjects) {\n guarded.queryObjects = (input) => guard.run(() => reader.queryObjects!(input))\n }\n if (reader.countObjects) {\n guarded.countObjects = (input) => guard.run(() => reader.countObjects!(input))\n }\n if (reader.existsObjects) {\n guarded.existsObjects = (input) => guard.run(() => reader.existsObjects!(input))\n }\n if (reader.facetObjects) {\n guarded.facetObjects = (input) => guard.run(() => reader.facetObjects!(input))\n }\n return Object.freeze(guarded)\n}\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "2CC4E14F86F3010764756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "C932764A8A1B095764756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -19,7 +19,8 @@ var USAGE_FIELDS = [
19
19
  "cacheReadInputTokens",
20
20
  "cacheWriteInputTokens",
21
21
  "textOutputTokens",
22
- "reasoningOutputTokens"
22
+ "reasoningOutputTokens",
23
+ "audioDurationMs"
23
24
  ];
24
25
  function normalizeAiModelCallUsage2(input) {
25
26
  for (const field of USAGE_FIELDS) {
@@ -28,6 +29,7 @@ function normalizeAiModelCallUsage2(input) {
28
29
  const totalTokens = input.inputTokens === undefined || input.outputTokens === undefined ? undefined : addUsageCounts(input.inputTokens, input.outputTokens, "totalTokens");
29
30
  const reportingStatus = input.inputTokens !== undefined && input.outputTokens !== undefined ? "complete" : USAGE_FIELDS.some((field) => input[field] !== undefined) ? "partial" : "unavailable";
30
31
  return {
32
+ ...input.audioDurationMs === undefined ? {} : { audioDurationMs: input.audioDurationMs },
31
33
  ...input.inputTokens === undefined ? {} : { inputTokens: input.inputTokens },
32
34
  ...input.outputTokens === undefined ? {} : { outputTokens: input.outputTokens },
33
35
  ...totalTokens === undefined ? {} : { totalTokens },
@@ -86,6 +88,9 @@ function normalizeAiModelCallRecord2(input) {
86
88
  assertNonBlank(input.responseModelId, "responseModelId");
87
89
  }
88
90
  assertNonBlank(input.responseId, "responseId");
91
+ if (input.modelKind !== undefined && !["language", "image", "video", "embedding", "decision", "transcription", "reranking"].includes(input.modelKind)) {
92
+ throw new TypeError("[Sixb] AI model kind is invalid.");
93
+ }
89
94
  const occurredAt = cloneValidDate(input.occurredAt, "occurredAt");
90
95
  const recordedAt = cloneValidDate(input.recordedAt ?? new Date, "recordedAt");
91
96
  const requesterGroupIds = normalizeRequesterGroupIds(input.requesterGroupIds);
@@ -101,6 +106,7 @@ function normalizeAiModelCallRecord2(input) {
101
106
  providerId: input.providerId,
102
107
  ...input.providerIds === undefined ? {} : { providerIds: normalizeModelProviderIds2(input.providerIds) },
103
108
  requestedModelId: input.requestedModelId,
109
+ ...input.modelKind === undefined ? {} : { modelKind: input.modelKind },
104
110
  ...requestedReasoning === undefined ? {} : { requestedReasoning },
105
111
  ...input.responseModelId === undefined ? {} : { responseModelId: input.responseModelId },
106
112
  responseId: input.responseId,
@@ -149,4 +155,4 @@ function cloneValidDate(value, field) {
149
155
 
150
156
  export { normalizeAiModelCallUsage2, aggregateAiModelCallUsage2, normalizeAiModelCallRecord2, assertAiUsageExecutionId2 };
151
157
 
152
- //# debugId=6480FF93BBB4AB5464756E2164756E21
158
+ //# debugId=3EEC0D4BC9CCF52864756E2164756E21
@@ -0,0 +1,11 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/storage/ai-usage/usage.ts", "../src/storage/ai-usage/record.ts"],
4
+ "sourcesContent": [
5
+ "import type { AiModelCallUsage, AiModelCallUsageInput } from \"./types\"\n\nconst USAGE_FIELDS = [\n \"inputTokens\",\n \"outputTokens\",\n \"uncachedInputTokens\",\n \"cacheReadInputTokens\",\n \"cacheWriteInputTokens\",\n \"textOutputTokens\",\n \"reasoningOutputTokens\",\n \"audioDurationMs\",\n] as const\n\ntype AiUsageField = (typeof USAGE_FIELDS)[number]\n\n/** Validate provider-neutral counts and derive total/reporting fields without inventing zeroes. */\nexport function normalizeAiModelCallUsage(input: AiModelCallUsageInput): AiModelCallUsage {\n for (const field of USAGE_FIELDS) {\n assertUsageCount(input[field], field)\n }\n\n const totalTokens =\n input.inputTokens === undefined || input.outputTokens === undefined\n ? undefined\n : addUsageCounts(input.inputTokens, input.outputTokens, \"totalTokens\")\n const reportingStatus =\n input.inputTokens !== undefined && input.outputTokens !== undefined\n ? \"complete\"\n : USAGE_FIELDS.some((field) => input[field] !== undefined)\n ? \"partial\"\n : \"unavailable\"\n\n return {\n ...(input.audioDurationMs === undefined ? {} : { audioDurationMs: input.audioDurationMs }),\n ...(input.inputTokens === undefined ? {} : { inputTokens: input.inputTokens }),\n ...(input.outputTokens === undefined ? {} : { outputTokens: input.outputTokens }),\n ...(totalTokens === undefined ? {} : { totalTokens }),\n ...(input.uncachedInputTokens === undefined\n ? {}\n : { uncachedInputTokens: input.uncachedInputTokens }),\n ...(input.cacheReadInputTokens === undefined\n ? {}\n : { cacheReadInputTokens: input.cacheReadInputTokens }),\n ...(input.cacheWriteInputTokens === undefined\n ? {}\n : { cacheWriteInputTokens: input.cacheWriteInputTokens }),\n ...(input.textOutputTokens === undefined ? {} : { textOutputTokens: input.textOutputTokens }),\n ...(input.reasoningOutputTokens === undefined\n ? {}\n : { reasoningOutputTokens: input.reasoningOutputTokens }),\n reportingStatus,\n }\n}\n\n/**\n * Aggregate model-call usage without treating a missing count as zero.\n *\n * A field is present only when every call reported it. This prevents a partial provider response\n * from becoming an apparently complete execution total. Zero remains a reported value.\n */\nexport function aggregateAiModelCallUsage(\n usages: Iterable<AiModelCallUsageInput>\n): AiModelCallUsage {\n const normalized = Array.from(usages, normalizeAiModelCallUsage)\n const fields = Object.fromEntries(\n USAGE_FIELDS.map((field) => [field, sumUsageField(normalized, field)])\n ) as Record<AiUsageField, number | undefined>\n const aggregate = normalizeAiModelCallUsage(fields)\n\n if (\n aggregate.reportingStatus === \"unavailable\" &&\n normalized.some((usage) => usage.reportingStatus !== \"unavailable\")\n ) {\n return { ...aggregate, reportingStatus: \"partial\" }\n }\n return aggregate\n}\n\nfunction sumUsageField(\n usages: readonly AiModelCallUsage[],\n field: AiUsageField\n): number | undefined {\n if (usages.length === 0) return undefined\n\n let total = 0\n for (const usage of usages) {\n const value = usage[field]\n if (value === undefined) return undefined\n total = addUsageCounts(total, value, `aggregate ${field}`)\n }\n return total\n}\n\nfunction assertUsageCount(value: number | undefined, field: AiUsageField): void {\n if (value !== undefined && (!Number.isSafeInteger(value) || value < 0)) {\n throw new TypeError(`[Sixb] AI model-call usage ${field} must be a non-negative safe integer.`)\n }\n}\n\nfunction addUsageCounts(left: number, right: number, field: string): number {\n const result = left + right\n if (!Number.isSafeInteger(result)) {\n throw new TypeError(`[Sixb] AI model-call usage ${field} exceeds the safe integer range.`)\n }\n return result\n}\n",
6
+ "import { normalizeRequesterGroupIds } from \"../../auth/attribution\"\nimport { assertJsonValue, isPlainRecord } from \"../../json\"\nimport { normalizeModelProviderIds } from \"../../models/events\"\nimport { isModelReasoning } from \"../../models/language-model\"\nimport type { AiModelCallUsageRecord, RecordAiModelCallInput } from \"./types\"\nimport { normalizeAiModelCallUsage } from \"./usage\"\n\n/** Validate and defensively snapshot one provider-neutral model-call ledger input. */\nexport function normalizeAiModelCallRecord(input: RecordAiModelCallInput): AiModelCallUsageRecord {\n assertNonBlank(input.id, \"id\")\n assertNonBlank(input.projectId, \"projectId\")\n assertAiUsageExecutionId(input.executionId)\n assertPositiveSafeInteger(input.attempt, \"attempt\")\n assertNonBlank(input.callId, \"callId\")\n assertNonBlank(input.providerId, \"providerId\")\n assertNonBlank(input.requestedModelId, \"requestedModelId\")\n if (input.responseModelId !== undefined) {\n assertNonBlank(input.responseModelId, \"responseModelId\")\n }\n assertNonBlank(input.responseId, \"responseId\")\n\n if (\n input.modelKind !== undefined &&\n ![\"language\", \"image\", \"video\", \"embedding\", \"decision\", \"transcription\", \"reranking\"].includes(\n input.modelKind\n )\n ) {\n throw new TypeError(\"[Sixb] AI model kind is invalid.\")\n }\n const occurredAt = cloneValidDate(input.occurredAt, \"occurredAt\")\n const recordedAt = cloneValidDate(input.recordedAt ?? new Date(), \"recordedAt\")\n const requesterGroupIds = normalizeRequesterGroupIds(input.requesterGroupIds)\n const requestedReasoning = cloneRequestedReasoning(input.requestedReasoning)\n const rawUsage = cloneRawUsage(input.rawUsage)\n\n return {\n id: input.id,\n projectId: input.projectId,\n executionId: input.executionId,\n attempt: input.attempt,\n callId: input.callId,\n requesterGroupIds,\n providerId: input.providerId,\n ...(input.providerIds === undefined\n ? {}\n : { providerIds: normalizeModelProviderIds(input.providerIds) }),\n requestedModelId: input.requestedModelId,\n ...(input.modelKind === undefined ? {} : { modelKind: input.modelKind }),\n ...(requestedReasoning === undefined ? {} : { requestedReasoning }),\n ...(input.responseModelId === undefined ? {} : { responseModelId: input.responseModelId }),\n responseId: input.responseId,\n usage: normalizeAiModelCallUsage(input.usage),\n ...(rawUsage === undefined ? {} : { rawUsage }),\n occurredAt,\n recordedAt,\n }\n}\n\nfunction cloneRequestedReasoning(\n reasoning: RecordAiModelCallInput[\"requestedReasoning\"]\n): RecordAiModelCallInput[\"requestedReasoning\"] {\n if (reasoning === undefined) return undefined\n if (!isModelReasoning(reasoning)) {\n throw new TypeError(\"[Sixb] AI usage requestedReasoning is invalid.\")\n }\n return typeof reasoning === \"string\" ? reasoning : { budgetTokens: reasoning.budgetTokens }\n}\n\n/** Validate a durable execution reference at storage and query boundaries. */\nexport function assertAiUsageExecutionId(executionId: string): void {\n assertNonBlank(executionId, \"executionId\")\n}\n\nfunction cloneRawUsage(rawUsage: RecordAiModelCallInput[\"rawUsage\"]) {\n if (rawUsage === undefined) return undefined\n if (!isPlainRecord(rawUsage)) {\n throw new TypeError(\"[Sixb] AI usage rawUsage must be a JSON object.\")\n }\n assertJsonValue(rawUsage, \"AI usage rawUsage\")\n return structuredClone(rawUsage)\n}\n\nfunction assertNonBlank(value: string, field: string): void {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`[Sixb] AI usage ${field} must be nonblank.`)\n }\n}\n\nfunction assertPositiveSafeInteger(value: number, field: string): void {\n if (!Number.isSafeInteger(value) || value <= 0) {\n throw new TypeError(`[Sixb] AI usage ${field} must be a positive safe integer.`)\n }\n}\n\nfunction cloneValidDate(value: Date, field: string): Date {\n if (!(value instanceof Date) || !Number.isFinite(value.getTime())) {\n throw new TypeError(`[Sixb] AI usage ${field} must be a valid Date.`)\n }\n return new Date(value)\n}\n"
7
+ ],
8
+ "mappings": "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",
9
+ "debugId": "3EEC0D4BC9CCF52864756E2164756E21",
10
+ "names": []
11
+ }
@@ -2,12 +2,12 @@
2
2
  import {
3
3
  withFailureMessage
4
4
  } from "./chunk-z3y5kg1x.js";
5
- import {
6
- assertEmbeddingModelRef
7
- } from "./chunk-kyjcwqz6.js";
8
5
  import {
9
6
  OntologyValidationError2
10
7
  } from "./chunk-cqr3acm1.js";
8
+ import {
9
+ assertEmbeddingModelRef
10
+ } from "./chunk-kyjcwqz6.js";
11
11
  import {
12
12
  normalizeDecimalValue2,
13
13
  isDecimalString2
@@ -765,6 +765,7 @@ function validateQueryMetadata2(objectTypesById, valueTypesById) {
765
765
  }
766
766
  }
767
767
  validateObjectSearchMetadata(typeId, objectType, valueTypesById);
768
+ validateQueryIndexes(typeId, objectType, valueTypesById);
768
769
  }
769
770
  }
770
771
  function validatePropertiesQueryMetadata(ownerPath, properties, valueTypesById) {
@@ -892,6 +893,32 @@ function resolveSchema(schema, valueTypesById, path, seenValueTypeIds = new Set)
892
893
  seenValueTypeIds.add(schema.valueTypeId);
893
894
  return resolveSchema(resolved, valueTypesById, path, seenValueTypeIds);
894
895
  }
896
+ function validateQueryIndexes(typeId, objectType, valueTypes) {
897
+ for (const index of objectType.query?.indexes ?? []) {
898
+ const fields = index.kind === "sort" ? index.fields.map((field) => field.propertyId) : [index.propertyId];
899
+ const filters = index.filters ?? [];
900
+ if (!fields.length || fields.length + filters.length > 8 || new Set([...fields, ...filters]).size !== fields.length + filters.length)
901
+ throw new OntologyValidationError2(`[Sixb] Query index on '${typeId}' requires one to eight distinct properties`);
902
+ if (index.kind === "text" && filters.length > 4)
903
+ throw new OntologyValidationError2(`[Sixb] Text query index on '${typeId}' accepts at most four filters`);
904
+ for (const id of [...fields, ...filters]) {
905
+ const property = objectType.properties.find((property) => property.id === id);
906
+ if (!property)
907
+ throw new OntologyValidationError2(`[Sixb] Query index on '${typeId}' references unknown property '${id}'`);
908
+ if (property.mode === "telemetry")
909
+ throw new OntologyValidationError2(`[Sixb] Query indexes cannot include telemetry property '${typeId}.${id}'`);
910
+ const flag = filters.includes(id) ? "filterable" : index.kind === "sort" ? "sortable" : "text";
911
+ assertPropertyQueryFlag(typeId, property, flag, "query.indexes");
912
+ if (filters.includes(id)) {
913
+ const schema = resolveQuerySchema(property.schema, valueTypes);
914
+ if (!schema || queryScalarKindForSchema(schema) !== "string")
915
+ throw new OntologyValidationError2(`[Sixb] Query index filters must be strings: '${typeId}.${id}'`);
916
+ }
917
+ }
918
+ if (index.kind === "sort" && index.fields.some((field) => field.direction !== undefined && field.direction !== "asc" && field.direction !== "desc"))
919
+ throw new OntologyValidationError2(`[Sixb] Query index direction must be asc or desc on '${typeId}'`);
920
+ }
921
+ }
895
922
 
896
923
  // src/ontology/units/quantitative-types.ts
897
924
  var angleUnits = {
@@ -1504,6 +1531,6 @@ function validateTelemetryUnit2(property, propertyPath, unit, valueTypesById) {
1504
1531
  throw new OntologyValidationError2(`[Sixb] Property ${propertyPath} does not define semanticType and cannot accept a unit`);
1505
1532
  }
1506
1533
  }
1507
- export { userRef2, collectUserRefIds, userReferenceProblem, validateSchemaValue2, resolveValueTypeRef2, resolveValueTypeSchema2, isRecord2, normalizeObjectProperties2, normalizeSchemaValue2, coerceSchemaValueToTyped2, isPrimitiveSchema, primitiveTraits, assertObjectTypeRegistered2, assertPropertyTokenBelongsToObjectType2, assertLinkTokenBelongsToObjectType2, assertKnownProperties2, assertRequiredProperties2, validateObjectProperties2, validatePrimaryProperties2, validatePropertyDefinitions2, validatePropertyValue2, findPrimitiveSchema, assertLinkTargetType2, assertTargetTypeCompatible2, normalizeLinkProperties2, validateLinkProperties2, isExactSchema, isSortableSchema, isTextSchema, isContainsSchema, queryScalarKindForSchema, resolvePropertyQueryCapabilities2, validateQueryMetadata2, quantitativeTypes2, getUnit2, getUnitsFor2, isValidUnit2, getUnitSymbol2, isQuantitativeTypeId2, isUnitId2, assertTelemetryProperty2, resolveSemanticType2, validateTelemetryUnit2 };
1534
+ export { userRef2, collectUserRefIds, userReferenceProblem, validateSchemaValue2, resolveValueTypeRef2, resolveValueTypeSchema2, isRecord2, normalizeObjectProperties2, normalizeSchemaValue2, coerceSchemaValueToTyped2, isPrimitiveSchema, primitiveTraits, assertObjectTypeRegistered2, assertPropertyTokenBelongsToObjectType2, assertLinkTokenBelongsToObjectType2, assertKnownProperties2, assertRequiredProperties2, validateObjectProperties2, validatePrimaryProperties2, validatePropertyDefinitions2, validatePropertyValue2, findPrimitiveSchema, assertLinkTargetType2, assertTargetTypeCompatible2, normalizeLinkProperties2, validateLinkProperties2, isExactSchema, isSortableSchema, isTextSchema, isContainsSchema, queryScalarKindForSchema, resolvePropertyQueryCapabilities2, resolveQuerySchema, validateQueryMetadata2, quantitativeTypes2, getUnit2, getUnitsFor2, isValidUnit2, getUnitSymbol2, isQuantitativeTypeId2, isUnitId2, assertTelemetryProperty2, resolveSemanticType2, validateTelemetryUnit2 };
1508
1535
 
1509
- //# debugId=65AF2C96D9900E0264756E2164756E21
1536
+ //# debugId=71BF1D32B80CC7A664756E2164756E21