@sixb/core 0.1.10 → 0.1.12

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 (702) hide show
  1. package/dist/actions/builders/params.d.ts +1 -22
  2. package/dist/actions/builders/params.d.ts.map +1 -1
  3. package/dist/actions/index.js +29 -28
  4. package/dist/actions/index.js.map +1 -1
  5. package/dist/actions/types/params.d.ts +10 -44
  6. package/dist/actions/types/params.d.ts.map +1 -1
  7. package/dist/actions/validation.d.ts.map +1 -1
  8. package/dist/actions/worker.js +3 -2
  9. package/dist/actions/worker.js.map +2 -2
  10. package/dist/agents/errors.d.ts +1 -1
  11. package/dist/agents/errors.d.ts.map +1 -1
  12. package/dist/agents/execution.d.ts +15 -9
  13. package/dist/agents/execution.d.ts.map +1 -1
  14. package/dist/agents/ids.d.ts +2 -0
  15. package/dist/agents/ids.d.ts.map +1 -1
  16. package/dist/agents/index.d.ts +1 -1
  17. package/dist/agents/index.d.ts.map +1 -1
  18. package/dist/agents/index.js +48 -42
  19. package/dist/agents/index.js.map +1 -1
  20. package/dist/agents/request.d.ts.map +1 -1
  21. package/dist/agents/sandbox.d.ts +5 -0
  22. package/dist/agents/sandbox.d.ts.map +1 -0
  23. package/dist/agents/streams/index.js +4 -3
  24. package/dist/agents/streams/index.js.map +1 -1
  25. package/dist/agents/streams/internal.js +4 -3
  26. package/dist/agents/streams/internal.js.map +1 -1
  27. package/dist/agents/validation.d.ts.map +1 -1
  28. package/dist/auth/index.js +8 -6
  29. package/dist/auth/index.js.map +1 -1
  30. package/dist/authorization/index.js +5 -4
  31. package/dist/authorization/index.js.map +1 -1
  32. package/dist/blob-storage/types.d.ts +4 -1
  33. package/dist/blob-storage/types.d.ts.map +1 -1
  34. package/dist/bootstrap/index.js +50 -46
  35. package/dist/bootstrap/index.js.map +1 -1
  36. package/dist/{chunk-17kfctj6.js → chunk-0mza4xb2.js} +2 -2
  37. package/dist/chunk-2c4j899j.js.map +1 -1
  38. package/dist/{chunk-g00bfdq6.js → chunk-2cxv584m.js} +12 -56
  39. package/dist/{chunk-g00bfdq6.js.map → chunk-2cxv584m.js.map} +3 -3
  40. package/dist/{chunk-e0d1rzef.js → chunk-2h63nrde.js} +380 -97
  41. package/dist/chunk-2h63nrde.js.map +20 -0
  42. package/dist/{chunk-rtk71jzp.js → chunk-3bnt2wna.js} +2 -2
  43. package/dist/{chunk-awbhdqyc.js → chunk-3ghw2t5q.js} +1 -1
  44. package/dist/{chunk-b19g04jk.js → chunk-3h7ctayx.js} +1 -1
  45. package/dist/{chunk-wjasrj67.js → chunk-3qpcrcj8.js} +1 -1
  46. package/dist/{chunk-5hz0fnca.js → chunk-4k53sm9e.js} +6 -2
  47. package/dist/chunk-4k53sm9e.js.map +12 -0
  48. package/dist/chunk-4ph94nhd.js +81 -0
  49. package/dist/chunk-4ph94nhd.js.map +10 -0
  50. package/dist/chunk-58geavnf.js +29 -0
  51. package/dist/chunk-58geavnf.js.map +10 -0
  52. package/dist/{chunk-0y39rgsb.js → chunk-5tetw4hn.js} +1 -1
  53. package/dist/{chunk-7bs40fe1.js → chunk-69266efg.js} +83 -2
  54. package/dist/chunk-69266efg.js.map +12 -0
  55. package/dist/{chunk-g7knyczr.js → chunk-6ma8dvzc.js} +121 -53
  56. package/dist/chunk-6ma8dvzc.js.map +15 -0
  57. package/dist/{chunk-skz0hst3.js → chunk-7c2g3sz9.js} +6 -86
  58. package/dist/{chunk-skz0hst3.js.map → chunk-7c2g3sz9.js.map} +3 -3
  59. package/dist/{chunk-976rxdpx.js → chunk-7qnvhtcd.js} +93 -17
  60. package/dist/{chunk-976rxdpx.js.map → chunk-7qnvhtcd.js.map} +7 -6
  61. package/dist/{chunk-c5rkjrgp.js → chunk-7ytf06d3.js} +1 -1
  62. package/dist/{chunk-mrp7k0pw.js → chunk-91kcnbf0.js} +9 -14
  63. package/dist/chunk-91kcnbf0.js.map +10 -0
  64. package/dist/{chunk-yv79ncbv.js → chunk-96yw3pwd.js} +3 -3
  65. package/dist/chunk-96yw3pwd.js.map +10 -0
  66. package/dist/chunk-98cw09sw.js.map +2 -2
  67. package/dist/{chunk-93csa55g.js → chunk-axndsymr.js} +10 -4
  68. package/dist/chunk-axndsymr.js.map +11 -0
  69. package/dist/{chunk-r7fj830t.js → chunk-b768c93y.js} +100 -29
  70. package/dist/chunk-b768c93y.js.map +36 -0
  71. package/dist/{chunk-dz5h08xv.js → chunk-bbaa1fet.js} +24 -9
  72. package/dist/{chunk-dz5h08xv.js.map → chunk-bbaa1fet.js.map} +4 -4
  73. package/dist/{chunk-7apz6hg4.js → chunk-bet1rb9h.js} +8 -4
  74. package/dist/chunk-bet1rb9h.js.map +10 -0
  75. package/dist/{chunk-358caqf5.js → chunk-bfjv1adk.js} +2 -2
  76. package/dist/{chunk-b0ec55a1.js → chunk-bg2bs62d.js} +5 -5
  77. package/dist/{chunk-860dwwy0.js → chunk-cd234ba4.js} +22 -12
  78. package/dist/chunk-cd234ba4.js.map +14 -0
  79. package/dist/chunk-d62kjtbg.js.map +1 -1
  80. package/dist/chunk-dmn70ztd.js.map +2 -2
  81. package/dist/{chunk-28ja2cjs.js → chunk-e1f1sqba.js} +39 -53
  82. package/dist/{chunk-28ja2cjs.js.map → chunk-e1f1sqba.js.map} +5 -6
  83. package/dist/{chunk-ap0g1g74.js → chunk-eyjzgav0.js} +39 -4
  84. package/dist/chunk-eyjzgav0.js.map +12 -0
  85. package/dist/{chunk-rb1xx120.js → chunk-f06sf7rr.js} +9 -5
  86. package/dist/chunk-f06sf7rr.js.map +11 -0
  87. package/dist/{chunk-g6cke204.js → chunk-f85hpqnm.js} +1 -1
  88. package/dist/{chunk-vsj3mdfj.js → chunk-fc5zfxy1.js} +1 -1
  89. package/dist/{chunk-38zv5rkr.js → chunk-g2gezsg5.js} +1 -1
  90. package/dist/{chunk-38zv5rkr.js.map → chunk-g2gezsg5.js.map} +2 -2
  91. package/dist/{chunk-nmbxcaqx.js → chunk-g50nxqs5.js} +53 -66
  92. package/dist/chunk-g50nxqs5.js.map +18 -0
  93. package/dist/{chunk-1824gssz.js → chunk-gswwr35f.js} +4 -4
  94. package/dist/{chunk-92vk7gta.js → chunk-gzt6v1ja.js} +1 -1
  95. package/dist/{chunk-aa6z4a19.js → chunk-hgqpcmyr.js} +2 -1
  96. package/dist/chunk-hgqpcmyr.js.map +12 -0
  97. package/dist/{chunk-gqh45d2n.js → chunk-hkw8rykk.js} +2 -2
  98. package/dist/{chunk-f4w3yp4f.js → chunk-hzw7yv5g.js} +104 -21
  99. package/dist/chunk-hzw7yv5g.js.map +13 -0
  100. package/dist/{chunk-5c7ga8zz.js → chunk-jjwhy3rs.js} +5 -5
  101. package/dist/chunk-kept9cdd.js +29 -0
  102. package/dist/chunk-kept9cdd.js.map +10 -0
  103. package/dist/{chunk-ftv470j8.js → chunk-m7cx05vp.js} +247 -16
  104. package/dist/{chunk-ftv470j8.js.map → chunk-m7cx05vp.js.map} +14 -10
  105. package/dist/{chunk-qyeptdyv.js → chunk-mdnw7nj8.js} +10 -6
  106. package/dist/chunk-mdnw7nj8.js.map +15 -0
  107. package/dist/{chunk-5p1v802y.js → chunk-nzsy3xrp.js} +253 -86
  108. package/dist/chunk-nzsy3xrp.js.map +46 -0
  109. package/dist/chunk-p1683c0v.js +104 -0
  110. package/dist/chunk-p1683c0v.js.map +11 -0
  111. package/dist/chunk-p6r1ex7t.js +93 -0
  112. package/dist/chunk-p6r1ex7t.js.map +10 -0
  113. package/dist/{chunk-p5vcsw9c.js → chunk-qm535afa.js} +10 -10
  114. package/dist/{chunk-p5vcsw9c.js.map → chunk-qm535afa.js.map} +4 -4
  115. package/dist/chunk-r5zythxp.js +552 -0
  116. package/dist/chunk-r5zythxp.js.map +17 -0
  117. package/dist/{chunk-9qsh3p5y.js → chunk-rb143ggb.js} +1 -1
  118. package/dist/{chunk-653vwrzr.js → chunk-rdghfsss.js} +1 -1
  119. package/dist/{chunk-t1f4f1ve.js → chunk-sfypc7mk.js} +18 -13
  120. package/dist/{chunk-t1f4f1ve.js.map → chunk-sfypc7mk.js.map} +3 -3
  121. package/dist/{chunk-f0rwz2vh.js → chunk-t6f3tdnr.js} +2 -54
  122. package/dist/chunk-t6f3tdnr.js.map +10 -0
  123. package/dist/{chunk-bn138h9w.js → chunk-t7dzd1tm.js} +3 -3
  124. package/dist/{chunk-pr2h4bv4.js → chunk-tg4g4zh0.js} +3 -3
  125. package/dist/chunk-vpxss818.js +56 -0
  126. package/dist/chunk-vpxss818.js.map +10 -0
  127. package/dist/{chunk-ms2tmn1k.js → chunk-vsg0g7h9.js} +53 -57
  128. package/dist/chunk-vsg0g7h9.js.map +17 -0
  129. package/dist/{chunk-8vj0rjgs.js → chunk-wjffn5m4.js} +1 -1
  130. package/dist/{chunk-nt99sxd6.js → chunk-x9tmx3fc.js} +18 -24
  131. package/dist/chunk-x9tmx3fc.js.map +14 -0
  132. package/dist/{chunk-agbbygvh.js → chunk-xn686q2e.js} +8 -8
  133. package/dist/{chunk-g53f0e4j.js → chunk-xnx96gfy.js} +45 -17
  134. package/dist/{chunk-g53f0e4j.js.map → chunk-xnx96gfy.js.map} +3 -3
  135. package/dist/{chunk-v2vcg0w6.js → chunk-xtfryrfb.js} +2 -2
  136. package/dist/chunk-y0v18c2j.js +363 -0
  137. package/dist/chunk-y0v18c2j.js.map +14 -0
  138. package/dist/{chunk-72w2pxk7.js → chunk-y1ahv8b7.js} +11 -3
  139. package/dist/{chunk-72w2pxk7.js.map → chunk-y1ahv8b7.js.map} +3 -3
  140. package/dist/chunk-y3ev53cq.js +84 -0
  141. package/dist/chunk-y3ev53cq.js.map +10 -0
  142. package/dist/{chunk-p6a4npdx.js → chunk-ybhz3j9g.js} +362 -60
  143. package/dist/chunk-ybhz3j9g.js.map +63 -0
  144. package/dist/{chunk-z30bv4ga.js → chunk-yxb4c62x.js} +3 -2
  145. package/dist/{chunk-z30bv4ga.js.map → chunk-yxb4c62x.js.map} +3 -3
  146. package/dist/chunk-z3y5kg1x.js +14 -0
  147. package/dist/chunk-z3y5kg1x.js.map +10 -0
  148. package/dist/connectors/connections/command-context.d.ts +2 -0
  149. package/dist/connectors/connections/command-context.d.ts.map +1 -1
  150. package/dist/connectors/connections/contracts.d.ts +1 -1
  151. package/dist/connectors/connections/contracts.d.ts.map +1 -1
  152. package/dist/connectors/connections/execution.d.ts +1 -0
  153. package/dist/connectors/connections/execution.d.ts.map +1 -1
  154. package/dist/connectors/connections/runs.d.ts +1 -0
  155. package/dist/connectors/connections/runs.d.ts.map +1 -1
  156. package/dist/connectors/connections/service.d.ts +2 -0
  157. package/dist/connectors/connections/service.d.ts.map +1 -1
  158. package/dist/datasets/validation.d.ts +4 -0
  159. package/dist/datasets/validation.d.ts.map +1 -1
  160. package/dist/datasets/write.d.ts.map +1 -1
  161. package/dist/datasets/write.js +5 -4
  162. package/dist/datasets/write.js.map +1 -1
  163. package/dist/error-reporting/capability.d.ts +3 -2
  164. package/dist/error-reporting/capability.d.ts.map +1 -1
  165. package/dist/error-reporting/internal.js +5 -4
  166. package/dist/error-reporting/internal.js.map +1 -1
  167. package/dist/error-reporting/reports.d.ts +10 -0
  168. package/dist/error-reporting/reports.d.ts.map +1 -1
  169. package/dist/error-reporting/types.d.ts +10 -2
  170. package/dist/error-reporting/types.d.ts.map +1 -1
  171. package/dist/errors/catalog.d.ts +12 -0
  172. package/dist/errors/catalog.d.ts.map +1 -1
  173. package/dist/errors/failure-message.d.ts +8 -0
  174. package/dist/errors/failure-message.d.ts.map +1 -0
  175. package/dist/errors/internal.d.ts.map +1 -1
  176. package/dist/errors/internal.js +3 -2
  177. package/dist/errors/internal.js.map +1 -1
  178. package/dist/events/index.js +5 -4
  179. package/dist/events/index.js.map +1 -1
  180. package/dist/events/outbox-dispatcher.d.ts +2 -2
  181. package/dist/events/outbox-dispatcher.d.ts.map +1 -1
  182. package/dist/execution/agent.js +44 -41
  183. package/dist/execution/agent.js.map +1 -1
  184. package/dist/execution/authorization.d.ts.map +1 -1
  185. package/dist/execution/authorized-object-reader.d.ts +3 -0
  186. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  187. package/dist/execution/kernel-operation.d.ts +4 -0
  188. package/dist/execution/kernel-operation.d.ts.map +1 -0
  189. package/dist/execution/primitive.js +44 -41
  190. package/dist/execution/primitive.js.map +2 -2
  191. package/dist/execution/request.js +45 -42
  192. package/dist/execution/request.js.map +2 -2
  193. package/dist/execution/types.d.ts +6 -0
  194. package/dist/execution/types.d.ts.map +1 -1
  195. package/dist/index.d.ts +15 -5
  196. package/dist/index.d.ts.map +1 -1
  197. package/dist/index.js +68 -59
  198. package/dist/index.js.map +1 -1
  199. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  200. package/dist/lake-storage/index.js +5 -4
  201. package/dist/lake-storage/index.js.map +1 -1
  202. package/dist/lake-storage/types.d.ts +2 -0
  203. package/dist/lake-storage/types.d.ts.map +1 -1
  204. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  205. package/dist/maintenance/types.d.ts +1 -1
  206. package/dist/maintenance/types.d.ts.map +1 -1
  207. package/dist/materialization/errors.d.ts +1 -1
  208. package/dist/materialization/errors.d.ts.map +1 -1
  209. package/dist/materialization/index.d.ts +1 -0
  210. package/dist/materialization/index.d.ts.map +1 -1
  211. package/dist/materialization/index.js +3 -3
  212. package/dist/materialization/model.d.ts +2 -0
  213. package/dist/materialization/model.d.ts.map +1 -1
  214. package/dist/materialization/vectors.d.ts +19 -0
  215. package/dist/materialization/vectors.d.ts.map +1 -0
  216. package/dist/materializer/context.d.ts.map +1 -1
  217. package/dist/materializer/edits/commit.d.ts.map +1 -1
  218. package/dist/materializer/edits/vector-authority.d.ts +6 -0
  219. package/dist/materializer/edits/vector-authority.d.ts.map +1 -0
  220. package/dist/materializer/edits/vectors.d.ts +6 -0
  221. package/dist/materializer/edits/vectors.d.ts.map +1 -0
  222. package/dist/materializer/effective/validate.d.ts.map +1 -1
  223. package/dist/materializer/effective/vector-indexing.d.ts +7 -0
  224. package/dist/materializer/effective/vector-indexing.d.ts.map +1 -0
  225. package/dist/materializer/effective/vectors.d.ts +6 -0
  226. package/dist/materializer/effective/vectors.d.ts.map +1 -0
  227. package/dist/materializer/execution/work-executor.d.ts +2 -1
  228. package/dist/materializer/execution/work-executor.d.ts.map +1 -1
  229. package/dist/materializer/index.js +26 -25
  230. package/dist/materializer/index.js.map +1 -1
  231. package/dist/materializer/shared/normalize.d.ts.map +1 -1
  232. package/dist/models/catalog-index.d.ts +15 -0
  233. package/dist/models/catalog-index.d.ts.map +1 -0
  234. package/dist/models/catalog.d.ts +27 -6
  235. package/dist/models/catalog.d.ts.map +1 -1
  236. package/dist/models/decision/catalog.d.ts +12 -0
  237. package/dist/models/decision/catalog.d.ts.map +1 -0
  238. package/dist/models/decision/errors.d.ts +7 -0
  239. package/dist/models/decision/errors.d.ts.map +1 -0
  240. package/dist/models/decision/output.d.ts +50 -0
  241. package/dist/models/decision/output.d.ts.map +1 -0
  242. package/dist/models/decision/questions.d.ts +14 -0
  243. package/dist/models/decision/questions.d.ts.map +1 -0
  244. package/dist/models/decision/runtime.d.ts +7 -0
  245. package/dist/models/decision/runtime.d.ts.map +1 -0
  246. package/dist/models/decision/types.d.ts +92 -0
  247. package/dist/models/decision/types.d.ts.map +1 -0
  248. package/dist/models/decision/validation.d.ts +7 -0
  249. package/dist/models/decision/validation.d.ts.map +1 -0
  250. package/dist/models/definitions.d.ts +8 -1
  251. package/dist/models/definitions.d.ts.map +1 -1
  252. package/dist/models/embedding-model.d.ts +60 -0
  253. package/dist/models/embedding-model.d.ts.map +1 -0
  254. package/dist/models/execution/binding.d.ts +2 -0
  255. package/dist/models/execution/binding.d.ts.map +1 -1
  256. package/dist/models/execution/embedding.d.ts +5 -0
  257. package/dist/models/execution/embedding.d.ts.map +1 -0
  258. package/dist/models/execution/index.js +29 -26
  259. package/dist/models/execution/index.js.map +1 -1
  260. package/dist/models/execution/model-call-recorder.d.ts +5 -1
  261. package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
  262. package/dist/models/execution/session.d.ts +21 -0
  263. package/dist/models/execution/session.d.ts.map +1 -0
  264. package/dist/models/execution.d.ts.map +1 -1
  265. package/dist/models/generation-types.d.ts +2 -0
  266. package/dist/models/generation-types.d.ts.map +1 -1
  267. package/dist/models/index.d.ts +9 -1
  268. package/dist/models/index.d.ts.map +1 -1
  269. package/dist/models/index.js +17 -7
  270. package/dist/models/index.js.map +1 -1
  271. package/dist/models/pricing.d.ts +3 -2
  272. package/dist/models/pricing.d.ts.map +1 -1
  273. package/dist/objects/authorized-ontology-view.d.ts.map +1 -1
  274. package/dist/objects/execution.d.ts +1 -0
  275. package/dist/objects/execution.d.ts.map +1 -1
  276. package/dist/objects/index.js +29 -28
  277. package/dist/objects/index.js.map +1 -1
  278. package/dist/objects/query/executor.d.ts +3 -0
  279. package/dist/objects/query/executor.d.ts.map +1 -1
  280. package/dist/objects/query/index.d.ts +2 -0
  281. package/dist/objects/query/index.d.ts.map +1 -1
  282. package/dist/objects/query/index.js +34 -24
  283. package/dist/objects/query/index.js.map +1 -1
  284. package/dist/objects/query/ir.d.ts +6 -2
  285. package/dist/objects/query/ir.d.ts.map +1 -1
  286. package/dist/objects/query/normalize.d.ts.map +1 -1
  287. package/dist/objects/query/validate.d.ts.map +1 -1
  288. package/dist/objects/sdk/object-handle.d.ts +5 -0
  289. package/dist/objects/sdk/object-handle.d.ts.map +1 -1
  290. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  291. package/dist/objects/sdk/query-executor.d.ts +2 -0
  292. package/dist/objects/sdk/query-executor.d.ts.map +1 -1
  293. package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
  294. package/dist/objects/vectors/handle.d.ts +4 -0
  295. package/dist/objects/vectors/handle.d.ts.map +1 -0
  296. package/dist/objects/vectors/indexing-batch.d.ts +6 -0
  297. package/dist/objects/vectors/indexing-batch.d.ts.map +1 -0
  298. package/dist/objects/vectors/indexing-generate.d.ts +11 -0
  299. package/dist/objects/vectors/indexing-generate.d.ts.map +1 -0
  300. package/dist/objects/vectors/indexing-runtime.d.ts +7 -0
  301. package/dist/objects/vectors/indexing-runtime.d.ts.map +1 -0
  302. package/dist/objects/vectors/indexing-shared.d.ts +17 -0
  303. package/dist/objects/vectors/indexing-shared.d.ts.map +1 -0
  304. package/dist/objects/vectors/indexing-single.d.ts +4 -0
  305. package/dist/objects/vectors/indexing-single.d.ts.map +1 -0
  306. package/dist/objects/vectors/indexing-store-batch.d.ts +6 -0
  307. package/dist/objects/vectors/indexing-store-batch.d.ts.map +1 -0
  308. package/dist/objects/vectors/indexing.d.ts +7 -0
  309. package/dist/objects/vectors/indexing.d.ts.map +1 -0
  310. package/dist/objects/vectors/profile.d.ts +13 -0
  311. package/dist/objects/vectors/profile.d.ts.map +1 -0
  312. package/dist/objects/vectors/query.d.ts +5 -0
  313. package/dist/objects/vectors/query.d.ts.map +1 -0
  314. package/dist/objects/vectors/resolve-query.d.ts +6 -0
  315. package/dist/objects/vectors/resolve-query.d.ts.map +1 -0
  316. package/dist/objects/vectors/types.d.ts +11 -0
  317. package/dist/objects/vectors/types.d.ts.map +1 -0
  318. package/dist/ontology/index.d.ts +2 -1
  319. package/dist/ontology/index.d.ts.map +1 -1
  320. package/dist/ontology/index.js +5 -5
  321. package/dist/ontology/index.js.map +1 -1
  322. package/dist/ontology/internal.js +5 -4
  323. package/dist/ontology/internal.js.map +1 -1
  324. package/dist/ontology/registry.d.ts.map +1 -1
  325. package/dist/ontology/types.d.ts +8 -9
  326. package/dist/ontology/types.d.ts.map +1 -1
  327. package/dist/ontology/validation/definition.d.ts +3 -0
  328. package/dist/ontology/validation/definition.d.ts.map +1 -0
  329. package/dist/ontology/validation/properties.d.ts.map +1 -1
  330. package/dist/ontology/validation/query.d.ts.map +1 -1
  331. package/dist/ontology/validation/schema.d.ts +1 -1
  332. package/dist/ontology/validation/schema.d.ts.map +1 -1
  333. package/dist/ontology/vector-profiles.d.ts +4 -0
  334. package/dist/ontology/vector-profiles.d.ts.map +1 -0
  335. package/dist/pipelines/index.js +28 -27
  336. package/dist/pipelines/index.js.map +1 -1
  337. package/dist/projections/internal.js +24 -23
  338. package/dist/projections/internal.js.map +1 -1
  339. package/dist/query.js +2 -2
  340. package/dist/queues/in-memory.d.ts +2 -1
  341. package/dist/queues/in-memory.d.ts.map +1 -1
  342. package/dist/queues/index.d.ts +1 -1
  343. package/dist/queues/index.d.ts.map +1 -1
  344. package/dist/queues/index.js +1 -1
  345. package/dist/queues/types.d.ts +5 -0
  346. package/dist/queues/types.d.ts.map +1 -1
  347. package/dist/runtime/create.d.ts +4 -3
  348. package/dist/runtime/create.d.ts.map +1 -1
  349. package/dist/runtime/host.d.ts +9 -6
  350. package/dist/runtime/host.d.ts.map +1 -1
  351. package/dist/runtime/internal.d.ts +3 -0
  352. package/dist/runtime/internal.d.ts.map +1 -1
  353. package/dist/runtime/internal.js +47 -1
  354. package/dist/runtime/internal.js.map +1 -1
  355. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  356. package/dist/runtime/sixb.d.ts +9 -4
  357. package/dist/runtime/sixb.d.ts.map +1 -1
  358. package/dist/runtime/types.d.ts +15 -3
  359. package/dist/runtime/types.d.ts.map +1 -1
  360. package/dist/sandboxes/auth.d.ts +16 -0
  361. package/dist/sandboxes/auth.d.ts.map +1 -0
  362. package/dist/sandboxes/config.d.ts +5 -0
  363. package/dist/sandboxes/config.d.ts.map +1 -0
  364. package/dist/sandboxes/configuration.d.ts +41 -0
  365. package/dist/sandboxes/configuration.d.ts.map +1 -0
  366. package/dist/sandboxes/environment.d.ts +13 -0
  367. package/dist/sandboxes/environment.d.ts.map +1 -0
  368. package/dist/sandboxes/errors.d.ts +1 -1
  369. package/dist/sandboxes/errors.d.ts.map +1 -1
  370. package/dist/sandboxes/index.d.ts +6 -1
  371. package/dist/sandboxes/index.d.ts.map +1 -1
  372. package/dist/sandboxes/index.js +16 -3
  373. package/dist/sandboxes/index.js.map +1 -1
  374. package/dist/sandboxes/sandbox.d.ts +35 -3
  375. package/dist/sandboxes/sandbox.d.ts.map +1 -1
  376. package/dist/shared/params/builders.d.ts +25 -0
  377. package/dist/shared/params/builders.d.ts.map +1 -0
  378. package/dist/shared/params/types.d.ts +47 -0
  379. package/dist/shared/params/types.d.ts.map +1 -0
  380. package/dist/shared/params/validation.d.ts +15 -0
  381. package/dist/shared/params/validation.d.ts.map +1 -0
  382. package/dist/shares/internal.js +23 -22
  383. package/dist/shares/internal.js.map +2 -2
  384. package/dist/storage/action-runs/failure.js +4 -3
  385. package/dist/storage/action-runs/failure.js.map +1 -1
  386. package/dist/storage/action-runs/provider.js +1 -1
  387. package/dist/storage/agents/in-memory.d.ts +2 -1
  388. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  389. package/dist/storage/agents/index.d.ts +1 -1
  390. package/dist/storage/agents/index.d.ts.map +1 -1
  391. package/dist/storage/agents/provider.d.ts +5 -1
  392. package/dist/storage/agents/provider.d.ts.map +1 -1
  393. package/dist/storage/agents/provider.js +8 -4
  394. package/dist/storage/agents/provider.js.map +1 -1
  395. package/dist/storage/agents/types.d.ts +49 -0
  396. package/dist/storage/agents/types.d.ts.map +1 -1
  397. package/dist/storage/ai-cost/analytics.d.ts +1 -0
  398. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  399. package/dist/storage/ai-cost/index.d.ts +1 -1
  400. package/dist/storage/ai-cost/index.d.ts.map +1 -1
  401. package/dist/storage/ai-cost/provider.js +2 -2
  402. package/dist/storage/ai-cost/types.d.ts +14 -2
  403. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  404. package/dist/storage/ai-limits/enforcement.js +4 -3
  405. package/dist/storage/ai-limits/enforcement.js.map +1 -1
  406. package/dist/storage/connector-connections/in-memory.d.ts +1 -0
  407. package/dist/storage/connector-connections/in-memory.d.ts.map +1 -1
  408. package/dist/storage/connector-connections/provider/connections.d.ts.map +1 -1
  409. package/dist/storage/connector-connections/provider/runs.d.ts +1 -0
  410. package/dist/storage/connector-connections/provider/runs.d.ts.map +1 -1
  411. package/dist/storage/connector-connections/provider/shared.d.ts +1 -0
  412. package/dist/storage/connector-connections/provider/shared.d.ts.map +1 -1
  413. package/dist/storage/connector-connections/provider.d.ts +1 -0
  414. package/dist/storage/connector-connections/provider.d.ts.map +1 -1
  415. package/dist/storage/connector-connections/provider.js +12 -17
  416. package/dist/storage/connector-connections/provider.js.map +6 -6
  417. package/dist/storage/connector-connections/types.d.ts +3 -1
  418. package/dist/storage/connector-connections/types.d.ts.map +1 -1
  419. package/dist/storage/executions/provider.d.ts +3 -3
  420. package/dist/storage/executions/provider.d.ts.map +1 -1
  421. package/dist/storage/executions/provider.js +13 -11
  422. package/dist/storage/executions/provider.js.map +3 -3
  423. package/dist/storage/executions/types.d.ts +3 -0
  424. package/dist/storage/executions/types.d.ts.map +1 -1
  425. package/dist/storage/executions/validation.d.ts.map +1 -1
  426. package/dist/storage/index.d.ts +5 -3
  427. package/dist/storage/index.d.ts.map +1 -1
  428. package/dist/storage/index.js +25 -22
  429. package/dist/storage/index.js.map +1 -1
  430. package/dist/storage/internal.js +2 -2
  431. package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
  432. package/dist/storage/objects/in-memory/read-source.d.ts +5 -0
  433. package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -1
  434. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
  435. package/dist/storage/objects/in-memory/storage.d.ts +7 -0
  436. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
  437. package/dist/storage/objects/types.d.ts +2 -0
  438. package/dist/storage/objects/types.d.ts.map +1 -1
  439. package/dist/storage/ontology/commits.d.ts +1 -0
  440. package/dist/storage/ontology/commits.d.ts.map +1 -1
  441. package/dist/storage/ontology/in-memory/index.d.ts +4 -0
  442. package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
  443. package/dist/storage/ontology/in-memory/materializations.d.ts +2 -0
  444. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  445. package/dist/storage/ontology/in-memory/shared-state.d.ts +7 -0
  446. package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
  447. package/dist/storage/ontology/in-memory/vector-indexing.d.ts +44 -0
  448. package/dist/storage/ontology/in-memory/vector-indexing.d.ts.map +1 -0
  449. package/dist/storage/ontology/in-memory/vectors.d.ts +31 -0
  450. package/dist/storage/ontology/in-memory/vectors.d.ts.map +1 -0
  451. package/dist/storage/ontology/index.d.ts +6 -0
  452. package/dist/storage/ontology/index.d.ts.map +1 -1
  453. package/dist/storage/ontology/outbox.d.ts +1 -0
  454. package/dist/storage/ontology/outbox.d.ts.map +1 -1
  455. package/dist/storage/ontology/provider.js +2 -2
  456. package/dist/storage/ontology/vector-indexing.d.ts +94 -0
  457. package/dist/storage/ontology/vector-indexing.d.ts.map +1 -0
  458. package/dist/storage/ontology/vectors.d.ts +56 -0
  459. package/dist/storage/ontology/vectors.d.ts.map +1 -0
  460. package/dist/storage/operation-scope.d.ts.map +1 -1
  461. package/dist/storage/operation-scope.js +1 -1
  462. package/dist/storage/projection-runs/provider.js +4 -3
  463. package/dist/storage/projection-runs/provider.js.map +1 -1
  464. package/dist/storage/types.d.ts +1 -1
  465. package/dist/storage/types.d.ts.map +1 -1
  466. package/dist/storage/workflow-runs/provider.js +9 -7
  467. package/dist/storage/workflow-runs/provider.js.map +1 -1
  468. package/dist/syncs/index.js +29 -28
  469. package/dist/syncs/index.js.map +1 -1
  470. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  471. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  472. package/dist/testing/index.js +488 -81
  473. package/dist/testing/index.js.map +10 -10
  474. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  475. package/dist/testing/object-query-contract.d.ts.map +1 -1
  476. package/dist/testing/object-read-scope-contract.d.ts.map +1 -1
  477. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  478. package/dist/testing/queues-contract.d.ts.map +1 -1
  479. package/dist/webhooks/internal.js +24 -23
  480. package/dist/webhooks/internal.js.map +2 -2
  481. package/dist/workers/index.js +3 -2
  482. package/dist/workers/index.js.map +2 -2
  483. package/dist/workflows/failure.d.ts.map +1 -1
  484. package/dist/workflows/index.js +47 -43
  485. package/dist/workflows/index.js.map +1 -1
  486. package/package.json +1 -1
  487. package/src/actions/builders/params.ts +1 -48
  488. package/src/actions/types/params.ts +14 -74
  489. package/src/actions/validation.ts +7 -84
  490. package/src/agents/errors.ts +3 -0
  491. package/src/agents/execution.ts +67 -15
  492. package/src/agents/ids.ts +8 -0
  493. package/src/agents/index.ts +1 -0
  494. package/src/agents/model-loop.ts +7 -0
  495. package/src/agents/request.ts +11 -0
  496. package/src/agents/sandbox.ts +44 -0
  497. package/src/agents/validation.ts +2 -108
  498. package/src/blob-storage/types.ts +4 -1
  499. package/src/connectors/connections/command-context.ts +21 -4
  500. package/src/connectors/connections/contracts.ts +4 -1
  501. package/src/connectors/connections/execution.ts +3 -0
  502. package/src/connectors/connections/runs.ts +38 -1
  503. package/src/connectors/connections/service.ts +6 -0
  504. package/src/datasets/validation.ts +40 -11
  505. package/src/datasets/write.ts +8 -11
  506. package/src/error-reporting/capability.ts +11 -0
  507. package/src/error-reporting/reports.ts +23 -0
  508. package/src/error-reporting/types.ts +12 -1
  509. package/src/errors/catalog.ts +12 -0
  510. package/src/errors/failure-message.ts +15 -0
  511. package/src/errors/internal.ts +57 -25
  512. package/src/events/outbox-dispatcher.ts +20 -26
  513. package/src/execution/authorization.ts +12 -5
  514. package/src/execution/authorized-object-reader.ts +37 -2
  515. package/src/execution/kernel-operation.ts +27 -0
  516. package/src/execution/scopes.ts +2 -0
  517. package/src/execution/types.ts +4 -4
  518. package/src/index.ts +60 -1
  519. package/src/lake-storage/in-memory.ts +7 -3
  520. package/src/lake-storage/types.ts +2 -0
  521. package/src/maintenance/ontology-maintenance.ts +6 -2
  522. package/src/maintenance/types.ts +1 -1
  523. package/src/materialization/errors.ts +2 -2
  524. package/src/materialization/index.ts +1 -0
  525. package/src/materialization/model.ts +2 -0
  526. package/src/materialization/vectors.ts +18 -0
  527. package/src/materializer/README.md +15 -1
  528. package/src/materializer/context.ts +10 -0
  529. package/src/materializer/edits/commit.ts +8 -1
  530. package/src/materializer/edits/vector-authority.ts +108 -0
  531. package/src/materializer/edits/vectors.ts +100 -0
  532. package/src/materializer/effective/validate.ts +10 -3
  533. package/src/materializer/effective/vector-indexing.ts +84 -0
  534. package/src/materializer/effective/vectors.ts +47 -0
  535. package/src/materializer/execution/work-executor.ts +11 -3
  536. package/src/materializer/projections/replace.ts +1 -1
  537. package/src/materializer/shared/normalize.ts +11 -0
  538. package/src/materializer/telemetry/append.ts +1 -1
  539. package/src/models/catalog-index.ts +38 -0
  540. package/src/models/catalog.ts +66 -38
  541. package/src/models/decision/catalog.ts +32 -0
  542. package/src/models/decision/errors.ts +18 -0
  543. package/src/models/decision/output.ts +101 -0
  544. package/src/models/decision/questions.ts +29 -0
  545. package/src/models/decision/runtime.ts +188 -0
  546. package/src/models/decision/types.ts +109 -0
  547. package/src/models/decision/validation.ts +335 -0
  548. package/src/models/definitions.ts +20 -1
  549. package/src/models/embedding-model.ts +129 -0
  550. package/src/models/execution/README.md +63 -0
  551. package/src/models/execution/binding.ts +2 -0
  552. package/src/models/execution/embedding.ts +133 -0
  553. package/src/models/execution/model-call-recorder.ts +42 -30
  554. package/src/models/execution/session.ts +81 -0
  555. package/src/models/execution.ts +10 -52
  556. package/src/models/generation-types.ts +2 -0
  557. package/src/models/index.ts +37 -0
  558. package/src/models/pricing.ts +7 -4
  559. package/src/objects/authorized-ontology-view.ts +12 -8
  560. package/src/objects/execution.ts +2 -0
  561. package/src/objects/query/executor.ts +13 -4
  562. package/src/objects/query/explain.ts +7 -2
  563. package/src/objects/query/index.ts +2 -0
  564. package/src/objects/query/ir.ts +6 -2
  565. package/src/objects/query/normalize.ts +5 -1
  566. package/src/objects/query/validate.ts +74 -73
  567. package/src/objects/sdk/object-handle.ts +3 -0
  568. package/src/objects/sdk/object-set.ts +1 -0
  569. package/src/objects/sdk/query-builder.ts +9 -3
  570. package/src/objects/sdk/query-executor.ts +2 -1
  571. package/src/objects/sdk/runtime-query-executor.ts +6 -2
  572. package/src/objects/vectors/README.md +59 -0
  573. package/src/objects/vectors/handle.ts +91 -0
  574. package/src/objects/vectors/indexing-batch.ts +163 -0
  575. package/src/objects/vectors/indexing-generate.ts +184 -0
  576. package/src/objects/vectors/indexing-runtime.ts +17 -0
  577. package/src/objects/vectors/indexing-shared.ts +188 -0
  578. package/src/objects/vectors/indexing-single.ts +51 -0
  579. package/src/objects/vectors/indexing-store-batch.ts +62 -0
  580. package/src/objects/vectors/indexing.ts +23 -0
  581. package/src/objects/vectors/profile.ts +64 -0
  582. package/src/objects/vectors/query.ts +16 -0
  583. package/src/objects/vectors/resolve-query.ts +89 -0
  584. package/src/objects/vectors/types.ts +10 -0
  585. package/src/ontology/index.ts +2 -0
  586. package/src/ontology/registry.ts +8 -0
  587. package/src/ontology/types.ts +9 -9
  588. package/src/ontology/validation/definition.ts +104 -0
  589. package/src/ontology/validation/properties.ts +14 -4
  590. package/src/ontology/validation/query.ts +34 -51
  591. package/src/ontology/validation/schema.ts +85 -23
  592. package/src/ontology/vector-profiles.ts +35 -0
  593. package/src/queues/in-memory.ts +5 -0
  594. package/src/queues/index.ts +1 -0
  595. package/src/queues/types.ts +10 -0
  596. package/src/runtime/create.ts +7 -6
  597. package/src/runtime/host.ts +42 -6
  598. package/src/runtime/internal.ts +3 -0
  599. package/src/runtime/resolve-definitions.ts +19 -1
  600. package/src/runtime/sixb.ts +27 -9
  601. package/src/runtime/types.ts +16 -4
  602. package/src/sandboxes/README.md +41 -0
  603. package/src/sandboxes/auth.ts +17 -0
  604. package/src/sandboxes/config.ts +37 -0
  605. package/src/sandboxes/configuration.ts +268 -0
  606. package/src/sandboxes/environment.ts +107 -0
  607. package/src/sandboxes/errors.ts +1 -1
  608. package/src/sandboxes/index.ts +15 -0
  609. package/src/sandboxes/sandbox.ts +38 -3
  610. package/src/shared/params/builders.ts +50 -0
  611. package/src/shared/params/types.ts +84 -0
  612. package/src/shared/params/validation.ts +114 -0
  613. package/src/storage/agents/in-memory.ts +25 -1
  614. package/src/storage/agents/index.ts +3 -0
  615. package/src/storage/agents/provider.ts +105 -0
  616. package/src/storage/agents/types.ts +54 -0
  617. package/src/storage/ai-cost/analytics.ts +59 -21
  618. package/src/storage/ai-cost/index.ts +1 -0
  619. package/src/storage/ai-cost/types.ts +19 -2
  620. package/src/storage/connector-connections/in-memory.ts +16 -18
  621. package/src/storage/connector-connections/provider/connections.ts +1 -15
  622. package/src/storage/connector-connections/provider/runs.ts +6 -0
  623. package/src/storage/connector-connections/provider/shared.ts +2 -3
  624. package/src/storage/connector-connections/provider.ts +6 -0
  625. package/src/storage/connector-connections/types.ts +5 -1
  626. package/src/storage/executions/provider.ts +24 -12
  627. package/src/storage/executions/types.ts +1 -0
  628. package/src/storage/executions/validation.ts +7 -3
  629. package/src/storage/index.ts +15 -1
  630. package/src/storage/objects/in-memory/query.ts +25 -11
  631. package/src/storage/objects/in-memory/read-scope.ts +9 -2
  632. package/src/storage/objects/in-memory/read-source.ts +5 -0
  633. package/src/storage/objects/in-memory/selected-reader.ts +5 -1
  634. package/src/storage/objects/in-memory/storage.ts +19 -1
  635. package/src/storage/objects/types.ts +2 -0
  636. package/src/storage/ontology/commits.ts +1 -0
  637. package/src/storage/ontology/in-memory/index.ts +20 -0
  638. package/src/storage/ontology/in-memory/materializations.ts +13 -0
  639. package/src/storage/ontology/in-memory/shared-state.ts +19 -3
  640. package/src/storage/ontology/in-memory/vector-indexing.ts +179 -0
  641. package/src/storage/ontology/in-memory/vectors.ts +73 -0
  642. package/src/storage/ontology/index.ts +14 -0
  643. package/src/storage/ontology/outbox.ts +1 -0
  644. package/src/storage/ontology/vector-indexing.ts +98 -0
  645. package/src/storage/ontology/vectors.ts +48 -0
  646. package/src/storage/operation-scope.ts +1 -0
  647. package/src/storage/types.ts +3 -0
  648. package/src/testing/agent-storage-contract.ts +246 -0
  649. package/src/testing/ai-cost-storage-contract.ts +134 -0
  650. package/src/testing/connector-connection-storage-contract.ts +11 -11
  651. package/src/testing/lake-storage-contract.ts +29 -0
  652. package/src/testing/object-query-contract.ts +41 -25
  653. package/src/testing/object-read-scope-contract.ts +1 -5
  654. package/src/testing/ontology-storage-contract.ts +8 -3
  655. package/src/testing/queues-contract.ts +31 -0
  656. package/src/workflows/failure.ts +10 -4
  657. package/src/workflows/validation.ts +2 -2
  658. package/dist/chunk-5hz0fnca.js.map +0 -12
  659. package/dist/chunk-5p1v802y.js.map +0 -44
  660. package/dist/chunk-7apz6hg4.js.map +0 -10
  661. package/dist/chunk-7bs40fe1.js.map +0 -12
  662. package/dist/chunk-860dwwy0.js.map +0 -14
  663. package/dist/chunk-93csa55g.js.map +0 -11
  664. package/dist/chunk-aa6z4a19.js.map +0 -12
  665. package/dist/chunk-ap0g1g74.js.map +0 -11
  666. package/dist/chunk-e0d1rzef.js.map +0 -15
  667. package/dist/chunk-f0rwz2vh.js.map +0 -11
  668. package/dist/chunk-f4w3yp4f.js.map +0 -12
  669. package/dist/chunk-g7knyczr.js.map +0 -14
  670. package/dist/chunk-mrp7k0pw.js.map +0 -10
  671. package/dist/chunk-ms2tmn1k.js.map +0 -17
  672. package/dist/chunk-nmbxcaqx.js.map +0 -19
  673. package/dist/chunk-nt99sxd6.js.map +0 -14
  674. package/dist/chunk-p6a4npdx.js.map +0 -58
  675. package/dist/chunk-qyeptdyv.js.map +0 -15
  676. package/dist/chunk-r7fj830t.js.map +0 -36
  677. package/dist/chunk-rb1xx120.js.map +0 -11
  678. package/dist/chunk-yv79ncbv.js.map +0 -10
  679. package/dist/chunk-z3y411fq.js +0 -99
  680. package/dist/chunk-z3y411fq.js.map +0 -11
  681. /package/dist/{chunk-17kfctj6.js.map → chunk-0mza4xb2.js.map} +0 -0
  682. /package/dist/{chunk-rtk71jzp.js.map → chunk-3bnt2wna.js.map} +0 -0
  683. /package/dist/{chunk-awbhdqyc.js.map → chunk-3ghw2t5q.js.map} +0 -0
  684. /package/dist/{chunk-b19g04jk.js.map → chunk-3h7ctayx.js.map} +0 -0
  685. /package/dist/{chunk-wjasrj67.js.map → chunk-3qpcrcj8.js.map} +0 -0
  686. /package/dist/{chunk-0y39rgsb.js.map → chunk-5tetw4hn.js.map} +0 -0
  687. /package/dist/{chunk-c5rkjrgp.js.map → chunk-7ytf06d3.js.map} +0 -0
  688. /package/dist/{chunk-358caqf5.js.map → chunk-bfjv1adk.js.map} +0 -0
  689. /package/dist/{chunk-b0ec55a1.js.map → chunk-bg2bs62d.js.map} +0 -0
  690. /package/dist/{chunk-g6cke204.js.map → chunk-f85hpqnm.js.map} +0 -0
  691. /package/dist/{chunk-vsj3mdfj.js.map → chunk-fc5zfxy1.js.map} +0 -0
  692. /package/dist/{chunk-1824gssz.js.map → chunk-gswwr35f.js.map} +0 -0
  693. /package/dist/{chunk-92vk7gta.js.map → chunk-gzt6v1ja.js.map} +0 -0
  694. /package/dist/{chunk-gqh45d2n.js.map → chunk-hkw8rykk.js.map} +0 -0
  695. /package/dist/{chunk-5c7ga8zz.js.map → chunk-jjwhy3rs.js.map} +0 -0
  696. /package/dist/{chunk-9qsh3p5y.js.map → chunk-rb143ggb.js.map} +0 -0
  697. /package/dist/{chunk-653vwrzr.js.map → chunk-rdghfsss.js.map} +0 -0
  698. /package/dist/{chunk-bn138h9w.js.map → chunk-t7dzd1tm.js.map} +0 -0
  699. /package/dist/{chunk-pr2h4bv4.js.map → chunk-tg4g4zh0.js.map} +0 -0
  700. /package/dist/{chunk-8vj0rjgs.js.map → chunk-wjffn5m4.js.map} +0 -0
  701. /package/dist/{chunk-agbbygvh.js.map → chunk-xn686q2e.js.map} +0 -0
  702. /package/dist/{chunk-v2vcg0w6.js.map → chunk-xtfryrfb.js.map} +0 -0
@@ -0,0 +1,114 @@
1
+ import { isPlainRecord, type JsonValue } from "../../json"
2
+ import type { SchemaOrRef, ValueType } from "../../ontology"
3
+ import { OntologyValidationError } from "../../ontology/errors"
4
+ import { validateSchemaOrRefValue } from "../../ontology/refs"
5
+ import type { Schema } from "../../ontology/types"
6
+ import { coerceSchemaValueToTyped, normalizeSchemaValue } from "../../ontology/validation"
7
+ import type { ParamsConfig } from "./types"
8
+
9
+ export interface ParamsOwner {
10
+ /** Lowercase singular name used in validation errors, for example `action` or `agent`. */
11
+ readonly kind: string
12
+ readonly id: string
13
+ /** Stable value path passed to ontology validation. Defaults to `id`. */
14
+ readonly path?: string
15
+ }
16
+
17
+ /** Validate declarative params and normalize them to their durable JSON representation. */
18
+ export function normalizeParams(
19
+ valueTypesById: ReadonlyMap<string, ValueType>,
20
+ paramsConfig: ParamsConfig,
21
+ params: Record<string, unknown>,
22
+ owner: ParamsOwner
23
+ ): Record<string, JsonValue> {
24
+ if (!isPlainRecord(params)) {
25
+ throw new OntologyValidationError(`[Sixb] ${capitalize(owner.kind)} params must be an object.`)
26
+ }
27
+ const knownParamIds = new Set(Object.keys(paramsConfig))
28
+ const normalized: [string, JsonValue][] = []
29
+
30
+ for (const paramId of Object.keys(params)) {
31
+ if (!knownParamIds.has(paramId)) {
32
+ throw new OntologyValidationError(
33
+ `Unknown param '${paramId}' for ${owner.kind} '${owner.id}'`
34
+ )
35
+ }
36
+ }
37
+
38
+ for (const [paramId, paramDef] of Object.entries(paramsConfig)) {
39
+ const value = Object.hasOwn(params, paramId) ? params[paramId] : undefined
40
+
41
+ if (value === undefined) {
42
+ if (paramDef.required) {
43
+ throw new OntologyValidationError(
44
+ `Missing required param '${paramId}' for ${owner.kind} '${owner.id}'`
45
+ )
46
+ }
47
+ continue
48
+ }
49
+
50
+ const path = `${owner.path ?? owner.id}.${paramId}`
51
+ if (value === null) {
52
+ if (!paramDef.nullable) {
53
+ throw new OntologyValidationError(
54
+ `[Sixb] ${capitalize(owner.kind)} param ${path} cannot be null`
55
+ )
56
+ }
57
+ normalized.push([paramId, null])
58
+ continue
59
+ }
60
+
61
+ validateSchemaOrRefValue(paramDef.schema, value, path, valueTypesById)
62
+ normalized.push([
63
+ paramId,
64
+ normalizeSchemaOrRefValue(paramDef.schema, value, path, valueTypesById),
65
+ ])
66
+ }
67
+
68
+ return Object.fromEntries(normalized)
69
+ }
70
+
71
+ /** Re-hydrate normalized storage values for typed runtime consumers. */
72
+ export function coerceParamsToTyped(
73
+ paramsConfig: ParamsConfig,
74
+ params: Record<string, unknown>,
75
+ valueTypesById: ReadonlyMap<string, ValueType>
76
+ ): Record<string, unknown> {
77
+ const coerced: Record<string, unknown> = { ...params }
78
+
79
+ for (const [paramId, paramDef] of Object.entries(paramsConfig)) {
80
+ if (!Object.hasOwn(params, paramId)) continue
81
+ const value = params[paramId]
82
+ if (value === undefined) continue
83
+
84
+ const schema = paramDef.schema
85
+ if (typeof schema === "object" && schema !== null && schema.type === "objectRef") {
86
+ continue
87
+ }
88
+
89
+ coerced[paramId] = coerceSchemaValueToTyped(schema as Schema, value, valueTypesById)
90
+ }
91
+
92
+ return coerced
93
+ }
94
+
95
+ function normalizeSchemaOrRefValue(
96
+ schema: SchemaOrRef,
97
+ value: unknown,
98
+ path: string,
99
+ valueTypesById: ReadonlyMap<string, ValueType>
100
+ ): JsonValue {
101
+ if (typeof schema === "object" && schema !== null && schema.type === "objectRef") {
102
+ const refValue = value as { objectTypeId: string; primaryId: string }
103
+ return {
104
+ objectTypeId: refValue.objectTypeId,
105
+ primaryId: refValue.primaryId,
106
+ }
107
+ }
108
+
109
+ return normalizeSchemaValue(schema as Schema, value, path, valueTypesById)
110
+ }
111
+
112
+ function capitalize(value: string): string {
113
+ return value.length === 0 ? value : `${value[0]?.toUpperCase()}${value.slice(1)}`
114
+ }
@@ -14,7 +14,9 @@ import {
14
14
  assertCreateAgentContextCheckpointInput,
15
15
  assertCreateSubagentRunInput,
16
16
  assertSubagentRunResult,
17
+ snapshotAgentThreadSandboxParams,
17
18
  subagentRunMatchesCreateInput,
19
+ transitionAgentThreadSandbox,
18
20
  } from "./provider"
19
21
  import type {
20
22
  AgentContextCheckpointRecord,
@@ -26,6 +28,7 @@ import type {
26
28
  AgentRunStore,
27
29
  AgentStorage,
28
30
  AgentThreadRecord,
31
+ AgentThreadSandboxState,
29
32
  AgentThreadStore,
30
33
  AppendAgentMessageInput,
31
34
  ConfirmAgentRunExecutionOwnershipInput,
@@ -46,6 +49,7 @@ import type {
46
49
  ReclaimAgentRunInput,
47
50
  StartAgentRunInput,
48
51
  SubagentRunRecord,
52
+ TransitionAgentThreadSandboxInput,
49
53
  } from "./types"
50
54
  import { AGENT_RUN_FAILURE_CODES } from "./types"
51
55
 
@@ -56,7 +60,7 @@ function normalizeFailure(
56
60
  }
57
61
 
58
62
  function key(projectId: string, id: string): string {
59
- return `${projectId}:${id}`
63
+ return JSON.stringify([projectId, id])
60
64
  }
61
65
 
62
66
  function clone<T>(value: T): T {
@@ -118,7 +122,26 @@ export interface InMemoryAgentStorageSnapshot {
118
122
  class InMemoryAgentThreadStore implements AgentThreadStore {
119
123
  constructor(private readonly state: AgentStoreState) {}
120
124
 
125
+ async transitionSandbox(
126
+ input: TransitionAgentThreadSandboxInput
127
+ ): Promise<AgentThreadSandboxState> {
128
+ const threadKey = key(input.projectId, input.id)
129
+ const thread = this.state.threads.get(threadKey) ?? null
130
+ const run =
131
+ input.action === "recreate"
132
+ ? null
133
+ : (this.state.runs.get(key(input.projectId, input.runId)) ?? null)
134
+ const sandboxState = transitionAgentThreadSandbox(thread, run, input)
135
+ if (!thread) throw new AgentStorageError("thread_not_found", "[Sixb] Thread not found.")
136
+ this.state.threads.set(threadKey, { ...thread, sandboxState: clone(sandboxState) })
137
+ return clone(sandboxState)
138
+ }
139
+
121
140
  async create(input: CreateAgentThreadInput): Promise<AgentThreadRecord> {
141
+ const sandboxParams =
142
+ input.sandboxParams === undefined
143
+ ? undefined
144
+ : snapshotAgentThreadSandboxParams(input.sandboxParams)
122
145
  const threadKey = key(input.projectId, input.id)
123
146
  if (this.state.threads.has(threadKey)) {
124
147
  throw new AgentStorageError(
@@ -132,6 +155,7 @@ class InMemoryAgentThreadStore implements AgentThreadStore {
132
155
  id: input.id,
133
156
  projectId: input.projectId,
134
157
  ownerPrincipal: clone(input.ownerPrincipal),
158
+ ...(sandboxParams === undefined ? {} : { sandboxParams }),
135
159
  ...(input.title === undefined ? {} : { title: input.title }),
136
160
  status: input.status ?? "active",
137
161
  activeRunId: null,
@@ -22,6 +22,8 @@ export type {
22
22
  AgentRunStore,
23
23
  AgentStorage,
24
24
  AgentThreadRecord,
25
+ AgentThreadSandboxParams,
26
+ AgentThreadSandboxState,
25
27
  AgentThreadStatus,
26
28
  AgentThreadStore,
27
29
  AppendAgentMessageInput,
@@ -46,6 +48,7 @@ export type {
46
48
  SubagentRunRecord,
47
49
  SubagentRunResult,
48
50
  SubagentRunSpec,
51
+ TransitionAgentThreadSandboxInput,
49
52
  } from "./types"
50
53
  export {
51
54
  AGENT_RUN_DIAGNOSTIC_CODES,
@@ -1,6 +1,7 @@
1
1
  import { isDeepStrictEqual } from "node:util"
2
2
  import { AGENT_REASONING_LEVELS } from "../../agents/types"
3
3
  import { isFileRef } from "../../blob-storage"
4
+ import { isJsonObject, isPlainRecord } from "../../json"
4
5
  import { isModelReasoning } from "../../models/language-model"
5
6
  import type { ExecutionRecord, ExecutionStorage } from "../executions"
6
7
  import { findAgentRunExecution } from "../executions/run-link"
@@ -10,13 +11,117 @@ import type {
10
11
  AgentMessageRecord,
11
12
  AgentRunRecord,
12
13
  AgentThreadRecord,
14
+ AgentThreadSandboxParams,
15
+ AgentThreadSandboxState,
13
16
  ConversationAgentRunSpec,
14
17
  CreateAgentContextCheckpointInput,
15
18
  CreateSubagentRunInput,
16
19
  SubagentRunRecord,
17
20
  SubagentRunResult,
21
+ TransitionAgentThreadSandboxInput,
18
22
  } from "./types"
19
23
 
24
+ /** Shared state machine. Providers must lock the run, then thread, around this decision/write. */
25
+ export function transitionAgentThreadSandbox(
26
+ thread: AgentThreadRecord | null,
27
+ run: AgentRunRecord | null,
28
+ input: TransitionAgentThreadSandboxInput
29
+ ): AgentThreadSandboxState {
30
+ const fail = (message: string): never => {
31
+ throw new AgentStorageError("invalid_state", `[Sixb] Sandbox ${message}`)
32
+ }
33
+ if (!thread?.sandboxParams) return fail("is not configured on this thread.")
34
+ if (!/^[a-zA-Z0-9-]{1,80}$/.test(input.name)) return fail("name is invalid.")
35
+ const state = thread.sandboxState
36
+ if (input.action === "recreate") {
37
+ if (thread.activeRunId !== null) return fail("cannot be recreated during an active run.")
38
+ if (!state || state.name !== input.expectedSandboxName || input.name === state.name)
39
+ return fail("changed; reload before recreating.")
40
+ if (!["busy", "blocked", "unavailable"].includes(state.status)) {
41
+ return fail("does not require recovery.")
42
+ }
43
+ return {
44
+ name: input.name,
45
+ status: "new",
46
+ initialized: false,
47
+ resetAt: new Date().toISOString(),
48
+ }
49
+ }
50
+ if (
51
+ run?.kind !== "conversation" ||
52
+ run.threadId !== thread.id ||
53
+ run.status !== "running" ||
54
+ thread.activeRunId !== run.id ||
55
+ run.id !== input.runId ||
56
+ run.execution?.token !== input.executionToken ||
57
+ run.execution.queueLeaseExpiresAt.getTime() <= Date.now()
58
+ ) {
59
+ throw new AgentStorageError("execution_lost", "[Sixb] Sandbox execution ownership was lost.")
60
+ }
61
+ if (input.action === "acquire") {
62
+ if (state && state.status !== "new" && state.status !== "ready") {
63
+ return fail("requires recovery; previous operations may still be in flight.")
64
+ }
65
+ if (state && state.name !== input.name) return fail("name changed.")
66
+ if (!/^[a-f0-9]{64}$/.test(input.sourceFingerprint))
67
+ return fail("source fingerprint is invalid.")
68
+ if (state?.sourceFingerprint && state.sourceFingerprint !== input.sourceFingerprint) {
69
+ return fail("source identity changed; the existing checkout was not opened.")
70
+ }
71
+ return {
72
+ name: input.name,
73
+ status: "busy",
74
+ initialized: state?.initialized ?? false,
75
+ ...(state?.resetAt ? { resetAt: state.resetAt } : {}),
76
+ sourceFingerprint: input.sourceFingerprint,
77
+ owner: { runId: input.runId, executionToken: input.executionToken },
78
+ }
79
+ }
80
+ if (
81
+ state?.status !== "busy" ||
82
+ state.name !== input.name ||
83
+ state.owner?.runId !== input.runId ||
84
+ state.owner.executionToken !== input.executionToken
85
+ ) {
86
+ return fail("is not owned by this execution.")
87
+ }
88
+ if (input.action === "replace") {
89
+ if (
90
+ !state.initialized ||
91
+ input.nextName === state.name ||
92
+ !/^[a-zA-Z0-9-]{1,80}$/.test(input.nextName)
93
+ ) {
94
+ return fail("replacement requires initialized state and a fresh valid name.")
95
+ }
96
+ // Only the owning worker may report confirmed loss; retain its fence across replacement.
97
+ return {
98
+ ...state,
99
+ name: input.nextName,
100
+ initialized: false,
101
+ resetAt: new Date().toISOString(),
102
+ }
103
+ }
104
+ if (input.status === "ready" && !input.initialized) return fail("initialization is incomplete.")
105
+ return {
106
+ name: state.name,
107
+ status: input.status,
108
+ initialized: input.initialized,
109
+ sourceFingerprint: state.sourceFingerprint,
110
+ ...(state.resetAt ? { resetAt: state.resetAt } : {}),
111
+ }
112
+ }
113
+
114
+ /** Snapshot application parameters independently of worker-owned sandbox state. */
115
+ export function snapshotAgentThreadSandboxParams(value: unknown): AgentThreadSandboxParams {
116
+ if (!isPlainRecord(value) || !isJsonObject(value)) {
117
+ throw new AgentStorageError(
118
+ "invalid_input",
119
+ "[Sixb] Thread sandbox must contain only JSON params."
120
+ )
121
+ }
122
+ return structuredClone(value)
123
+ }
124
+
20
125
  /** Validate the provider-neutral model selection captured for a conversational turn. */
21
126
  export function assertConversationAgentRunSpec(
22
127
  spec: ConversationAgentRunSpec,
@@ -10,12 +10,63 @@ import type { LanguageModelRef } from "../../models"
10
10
 
11
11
  export type AgentThreadStatus = "active" | "archived"
12
12
 
13
+ /** Immutable, non-secret application input. Never store resolved env or credentials here. */
14
+ export type AgentThreadSandboxParams = Readonly<Record<string, JsonValue>>
15
+
16
+ /** Worker-owned state, independent from the immutable application binding. */
17
+ export interface AgentThreadSandboxState {
18
+ /** Exact name passed to the provider. Replacements always receive a fresh name. */
19
+ readonly name: string
20
+ readonly status: "new" | "busy" | "ready" | "blocked" | "unavailable"
21
+ readonly sourceFingerprint?: string
22
+ readonly initialized: boolean
23
+ /** Durable context boundary: local files from before this reset are no longer available. */
24
+ readonly resetAt?: string
25
+ /** Never expires automatically: a delayed provider operation must not reach a successor. */
26
+ readonly owner?: { readonly runId: string; readonly executionToken: string }
27
+ }
28
+
29
+ export type TransitionAgentThreadSandboxInput = {
30
+ readonly projectId: string
31
+ readonly id: string
32
+ } & (
33
+ | {
34
+ readonly action: "acquire"
35
+ readonly runId: string
36
+ readonly executionToken: string
37
+ readonly name: string
38
+ readonly sourceFingerprint: string
39
+ }
40
+ | {
41
+ readonly action: "replace"
42
+ readonly runId: string
43
+ readonly executionToken: string
44
+ readonly name: string
45
+ readonly nextName: string
46
+ }
47
+ | {
48
+ readonly action: "settle"
49
+ readonly runId: string
50
+ readonly executionToken: string
51
+ readonly name: string
52
+ readonly status: "ready" | "blocked" | "unavailable"
53
+ readonly initialized: boolean
54
+ }
55
+ | {
56
+ readonly action: "recreate"
57
+ readonly expectedSandboxName: string
58
+ readonly name: string
59
+ }
60
+ )
61
+
13
62
  export interface AgentThreadRecord {
14
63
  readonly id: string
15
64
  readonly projectId: string
16
65
  /** Who owns/opened the thread. Reuses the canonical auth principal (gains `agent` later for free). */
17
66
  readonly ownerPrincipal: Principal
18
67
  readonly title?: string
68
+ readonly sandboxParams?: AgentThreadSandboxParams
69
+ readonly sandboxState?: AgentThreadSandboxState
19
70
  readonly status: AgentThreadStatus
20
71
  /** Single-flight anchor: the id of the one run currently allowed to write, or `null` when idle. */
21
72
  readonly activeRunId: string | null
@@ -30,6 +81,7 @@ export interface CreateAgentThreadInput {
30
81
  readonly projectId: string
31
82
  readonly ownerPrincipal: Principal
32
83
  readonly title?: string
84
+ readonly sandboxParams?: AgentThreadSandboxParams
33
85
  readonly status?: AgentThreadStatus
34
86
  readonly createdAt?: Date
35
87
  readonly updatedAt?: Date
@@ -416,6 +468,8 @@ export interface CreateAgentContextCheckpointInput {
416
468
  // ── Store ───────────────────────────────────────────────────────────────────────────────────────
417
469
 
418
470
  export interface AgentThreadStore {
471
+ /** Atomic run-fenced transition, or explicit idle-thread recreation. */
472
+ transitionSandbox(input: TransitionAgentThreadSandboxInput): Promise<AgentThreadSandboxState>
419
473
  create(input: CreateAgentThreadInput): Promise<AgentThreadRecord>
420
474
  getById(params: { projectId: string; id: string }): Promise<AgentThreadRecord | null>
421
475
  list(input: ListAgentThreadsInput): Promise<ListAgentThreadsResult>
@@ -1,9 +1,4 @@
1
- import {
2
- type AiModelCallUsage,
3
- type AiModelCallUsageRecord,
4
- aggregateAiModelCallUsage,
5
- normalizeAiModelCallUsage,
6
- } from "../ai-usage"
1
+ import { type AiModelCallUsageRecord, normalizeAiModelCallUsage } from "../ai-usage"
7
2
  import type {
8
3
  AiAccountingAgentBreakdown,
9
4
  AiAccountingAggregate,
@@ -65,6 +60,7 @@ export interface AiAccountingAggregateFragment {
65
60
  readonly modelCallCount: string
66
61
  readonly usage: {
67
62
  readonly reportedCallCount: string
63
+ readonly completeCallCount: string
68
64
  readonly inputTokens: AiAccountingUsageMeterFragment
69
65
  readonly outputTokens: AiAccountingUsageMeterFragment
70
66
  readonly uncachedInputTokens: AiAccountingUsageMeterFragment
@@ -358,9 +354,21 @@ export function aiAccountingBucketStart(at: Date, bucket: AiAccountingBucket): D
358
354
  function aggregateAccountingItems(
359
355
  items: readonly AiAccountingRecordSetItem[]
360
356
  ): AiAccountingAggregate {
357
+ const value = aggregateFragmentAccumulator()
358
+ value.modelCallCount = BigInt(items.length)
359
+ for (const item of items) {
360
+ const usage = normalizeAiModelCallUsage(item.usage.usage)
361
+ if (usage.reportingStatus !== "unavailable") value.reportedUsageCallCount += 1n
362
+ if (usage.reportingStatus === "complete") value.completeUsageCallCount += 1n
363
+ for (const field of AGGREGATE_USAGE_FIELDS) {
364
+ if (usage[field] === undefined) continue
365
+ value.usage[field].presentCallCount += 1n
366
+ value.usage[field].total += BigInt(usage[field])
367
+ }
368
+ }
361
369
  return {
362
370
  modelCallCount: items.length,
363
- usage: aggregateAiModelCallUsage(items.map((item) => item.usage.usage)),
371
+ ...finishAggregateUsage(value),
364
372
  costs: aggregateCosts(items),
365
373
  }
366
374
  }
@@ -405,6 +413,7 @@ type AggregateUsageField = (typeof AGGREGATE_USAGE_FIELDS)[number]
405
413
  interface AggregateFragmentAccumulator {
406
414
  modelCallCount: bigint
407
415
  reportedUsageCallCount: bigint
416
+ completeUsageCallCount: bigint
408
417
  usage: Record<AggregateUsageField, { presentCallCount: bigint; total: bigint }>
409
418
  amounts: Map<string, bigint>
410
419
  ratedCallCount: bigint
@@ -416,6 +425,7 @@ function aggregateFragmentAccumulator(): AggregateFragmentAccumulator {
416
425
  return {
417
426
  modelCallCount: 0n,
418
427
  reportedUsageCallCount: 0n,
428
+ completeUsageCallCount: 0n,
419
429
  usage: Object.fromEntries(
420
430
  AGGREGATE_USAGE_FIELDS.map((field) => [field, { presentCallCount: 0n, total: 0n }])
421
431
  ) as AggregateFragmentAccumulator["usage"],
@@ -446,6 +456,10 @@ function appendAggregateFragment(
446
456
  fragment.usage.reportedCallCount,
447
457
  "reported usage call count"
448
458
  )
459
+ target.completeUsageCallCount += naturalBigInt(
460
+ fragment.usage.completeCallCount,
461
+ "complete usage call count"
462
+ )
449
463
  for (const field of AGGREGATE_USAGE_FIELDS) {
450
464
  const source = fragment.usage[field]
451
465
  const presentCallCount = naturalBigInt(source.presentCallCount, `${field} call count`)
@@ -473,6 +487,7 @@ function finishAggregateFragment(value: AggregateFragmentAccumulator): AiAccount
473
487
  if (
474
488
  classifiedCallCount !== value.modelCallCount ||
475
489
  value.reportedUsageCallCount > value.modelCallCount ||
490
+ value.completeUsageCallCount > value.reportedUsageCallCount ||
476
491
  AGGREGATE_USAGE_FIELDS.some(
477
492
  (field) => value.usage[field].presentCallCount > value.modelCallCount
478
493
  )
@@ -480,22 +495,9 @@ function finishAggregateFragment(value: AggregateFragmentAccumulator): AiAccount
480
495
  throw new TypeError("[Sixb] AI accounting SQL aggregate counts are inconsistent.")
481
496
  }
482
497
  const modelCallCount = safeAggregateNumber(value.modelCallCount, "model-call count")
483
- const usageInput: Partial<Record<AggregateUsageField, number>> = {}
484
- if (value.modelCallCount > 0n) {
485
- for (const field of AGGREGATE_USAGE_FIELDS) {
486
- const aggregate = value.usage[field]
487
- if (aggregate.presentCallCount === value.modelCallCount) {
488
- usageInput[field] = safeAggregateNumber(aggregate.total, field)
489
- }
490
- }
491
- }
492
- let usage: AiModelCallUsage = normalizeAiModelCallUsage(usageInput)
493
- if (usage.reportingStatus === "unavailable" && value.reportedUsageCallCount > 0n) {
494
- usage = { ...usage, reportingStatus: "partial" }
495
- }
496
498
  return {
497
499
  modelCallCount,
498
- usage,
500
+ ...finishAggregateUsage(value),
499
501
  costs: {
500
502
  amounts: [...value.amounts]
501
503
  .sort(([left], [right]) => left.localeCompare(right))
@@ -510,6 +512,42 @@ function finishAggregateFragment(value: AggregateFragmentAccumulator): AiAccount
510
512
  }
511
513
  }
512
514
 
515
+ function finishAggregateUsage(
516
+ value: AggregateFragmentAccumulator
517
+ ): Pick<AiAccountingAggregate, "usage" | "usageCoverage"> {
518
+ const counts: Partial<Record<AggregateUsageField | "totalTokens", number>> = {}
519
+ const fieldCallCounts = {} as Record<AggregateUsageField, number>
520
+ for (const field of AGGREGATE_USAGE_FIELDS) {
521
+ const aggregate = value.usage[field]
522
+ fieldCallCounts[field] = safeAggregateNumber(aggregate.presentCallCount, `${field} call count`)
523
+ if (aggregate.presentCallCount > 0n) {
524
+ counts[field] = safeAggregateNumber(aggregate.total, field)
525
+ }
526
+ }
527
+ // Only the top-level meters contribute: cache/reasoning partitions overlap them.
528
+ if (counts.inputTokens !== undefined || counts.outputTokens !== undefined) {
529
+ counts.totalTokens = safeAggregateNumber(
530
+ value.usage.inputTokens.total + value.usage.outputTokens.total,
531
+ "totalTokens"
532
+ )
533
+ }
534
+ return {
535
+ usage: {
536
+ ...counts,
537
+ reportingStatus:
538
+ value.reportedUsageCallCount === 0n
539
+ ? "unavailable"
540
+ : value.completeUsageCallCount === value.modelCallCount
541
+ ? "complete"
542
+ : "partial",
543
+ },
544
+ usageCoverage: {
545
+ completeCallCount: safeAggregateNumber(value.completeUsageCallCount, "complete call count"),
546
+ fieldCallCounts,
547
+ },
548
+ }
549
+ }
550
+
513
551
  function naturalBigInt(value: string, field: string): bigint {
514
552
  if (!/^(0|[1-9]\d*)$/.test(value)) {
515
553
  throw new TypeError(`[Sixb] AI accounting SQL ${field} must be a natural integer.`)
@@ -14,6 +14,7 @@ export type {
14
14
  AiAccountingOverview,
15
15
  AiAccountingRange,
16
16
  AiAccountingTimeBucket,
17
+ AiAccountingUsage,
17
18
  AiAccountingWorkflowBreakdown,
18
19
  AiBillableMeter,
19
20
  AiBillingIdentity,
@@ -1,4 +1,8 @@
1
- import type { AiModelCallUsageRecord } from "../ai-usage"
1
+ import type {
2
+ AiModelCallUsageInput,
3
+ AiModelCallUsageRecord,
4
+ AiUsageReportingStatus,
5
+ } from "../ai-usage"
2
6
 
3
7
  /** Token meters supported by deterministic local rate cards. */
4
8
  export type AiBillableMeter =
@@ -141,9 +145,22 @@ export interface ListAiModelCallAccountingInput extends AiAccountingRange {
141
145
  readonly offset?: number
142
146
  }
143
147
 
148
+ /** Observed meter sums. Unreported meters are absent; incomplete sums are lower bounds. */
149
+ export interface AiAccountingUsage extends AiModelCallUsageInput {
150
+ /** Sum of available input and output counts, including one-sided reports. */
151
+ readonly totalTokens?: number
152
+ /** Complete only when every call reports both input and output; details have separate coverage. */
153
+ readonly reportingStatus: AiUsageReportingStatus
154
+ }
155
+
144
156
  export interface AiAccountingAggregate {
145
157
  readonly modelCallCount: number
146
- readonly usage: AiModelCallUsageRecord["usage"]
158
+ readonly usage: AiAccountingUsage
159
+ readonly usageCoverage: {
160
+ /** Calls reporting both inputTokens and outputTokens. */
161
+ readonly completeCallCount: number
162
+ readonly fieldCallCounts: Readonly<Record<keyof AiModelCallUsageInput, number>>
163
+ }
147
164
  readonly costs: AiCostSummary
148
165
  }
149
166
 
@@ -413,6 +413,20 @@ export class InMemoryConnectorConnectionStorage implements ConnectorConnectionSt
413
413
  return structuredClone(finished)
414
414
  }
415
415
 
416
+ async listPendingConnectionRuns(
417
+ input: Parameters<ConnectorConnectionStorage["listPendingConnectionRuns"]>[0]
418
+ ): Promise<readonly ConnectorConnectionRunRecord[]> {
419
+ return [...this.connectionRuns.values()]
420
+ .filter(
421
+ (run) =>
422
+ run.projectId === input.projectId &&
423
+ run.connectorId === input.connectorId &&
424
+ (run.status === "running" ||
425
+ (run.status === "waiting" && run.waitingFor === "account_selection"))
426
+ )
427
+ .map((run) => structuredClone(run))
428
+ }
429
+
416
430
  async getConnectionRun(
417
431
  input: GetConnectorConnectionRunInput
418
432
  ): Promise<ConnectorConnectionRunRecord | null> {
@@ -855,7 +869,7 @@ export class InMemoryConnectorConnectionStorage implements ConnectorConnectionSt
855
869
  input: PutConnectorConnectionInput,
856
870
  now: Date
857
871
  ): PutConnectorConnectionResult {
858
- let authorization = this.authorizations.get(input.authorizationId)
872
+ const authorization = this.authorizations.get(input.authorizationId)
859
873
  if (
860
874
  !sameAuthorizationScope(authorization, input) ||
861
875
  !isSelectable(authorization.status) ||
@@ -863,20 +877,6 @@ export class InMemoryConnectorConnectionStorage implements ConnectorConnectionSt
863
877
  ) {
864
878
  throw authorizationConflict()
865
879
  }
866
- if (
867
- authorization.status === "pending_selection" &&
868
- authorization.selectionExpiresAt!.getTime() <= now.getTime()
869
- ) {
870
- authorization = {
871
- ...authorization,
872
- status: "revocation_pending",
873
- selectionExpiresAt: undefined,
874
- revision: authorization.revision + 1,
875
- updatedAt: now,
876
- }
877
- this.authorizations.set(authorization.id, authorization)
878
- throw authorizationConflict()
879
- }
880
880
  const account = authorization.accounts.find((candidate) => candidate.id === input.account.id)
881
881
  if (!account) {
882
882
  throw new ConnectorConnectionStorageError(
@@ -1078,6 +1078,7 @@ export class InMemoryConnectorConnectionStorage implements ConnectorConnectionSt
1078
1078
  const run = this.connectionRuns.get(runId)
1079
1079
  if (!run || (run.status !== "waiting" && run.status !== "running")) return run
1080
1080
 
1081
+ if (run.status === "waiting" && run.waitingFor === "account_selection") return run
1081
1082
  const now = this.now()
1082
1083
  if (run.expiresAt.getTime() > now.getTime()) return run
1083
1084
 
@@ -1086,9 +1087,6 @@ export class InMemoryConnectorConnectionStorage implements ConnectorConnectionSt
1086
1087
  if (attempt) this.attempts.delete(attempt.id)
1087
1088
  }
1088
1089
  if (run.status === "waiting") {
1089
- if (run.kind === "connect" && run.waitingFor === "account_selection") {
1090
- this.markPendingAuthorizationForCleanup(run.connectorId, run.authorizationId, now)
1091
- }
1092
1090
  const expired = expireConnectionRun(run, now)
1093
1091
  this.connectionRuns.set(run.id, expired)
1094
1092
  return expired
@@ -165,7 +165,7 @@ export class DurableConnectorConnections extends ConnectorConnectionOperations {
165
165
  input: PutConnectorConnectionInput,
166
166
  now: Date
167
167
  ): Promise<PutConnectorConnectionResult | CommittedConnectorConnectionError> {
168
- let authorization = await persistence.getAuthorization(input.authorizationId)
168
+ const authorization = await persistence.getAuthorization(input.authorizationId)
169
169
  if (
170
170
  !authorization ||
171
171
  !isSelectable(authorization.status) ||
@@ -173,20 +173,6 @@ export class DurableConnectorConnections extends ConnectorConnectionOperations {
173
173
  ) {
174
174
  throw authorizationConflict()
175
175
  }
176
- if (
177
- authorization.status === "pending_selection" &&
178
- authorization.selectionExpiresAt!.getTime() <= now.getTime()
179
- ) {
180
- authorization = {
181
- ...authorization,
182
- status: "revocation_pending",
183
- selectionExpiresAt: undefined,
184
- revision: authorization.revision + 1,
185
- updatedAt: now,
186
- }
187
- await persistence.updateAuthorization(authorization)
188
- return { error: authorizationConflict() }
189
- }
190
176
  const account = authorization.accounts.find((candidate) => candidate.id === input.account.id)
191
177
  if (!account) {
192
178
  throw new ConnectorConnectionStorageError(