@sixb/core 0.1.21 → 0.1.22

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 (1263) hide show
  1. package/dist/actions/commit-edits.d.ts +3 -1
  2. package/dist/actions/commit-edits.d.ts.map +1 -1
  3. package/dist/actions/execution.d.ts.map +1 -1
  4. package/dist/actions/index.js +63 -59
  5. package/dist/actions/index.js.map +1 -1
  6. package/dist/actions/read-facade.d.ts +9 -1
  7. package/dist/actions/read-facade.d.ts.map +1 -1
  8. package/dist/actions/request.d.ts +15 -1
  9. package/dist/actions/request.d.ts.map +1 -1
  10. package/dist/actions/run/context.d.ts +1 -0
  11. package/dist/actions/run/context.d.ts.map +1 -1
  12. package/dist/actions/run/execute.d.ts +2 -3
  13. package/dist/actions/run/execute.d.ts.map +1 -1
  14. package/dist/actions/run/executor.d.ts +3 -0
  15. package/dist/actions/run/executor.d.ts.map +1 -1
  16. package/dist/actions/run/normalize.d.ts +2 -1
  17. package/dist/actions/run/normalize.d.ts.map +1 -1
  18. package/dist/actions/run/signals.d.ts +1 -3
  19. package/dist/actions/run/signals.d.ts.map +1 -1
  20. package/dist/actions/run/types.d.ts +16 -1
  21. package/dist/actions/run/types.d.ts.map +1 -1
  22. package/dist/actions/run-authorization.d.ts +14 -0
  23. package/dist/actions/run-authorization.d.ts.map +1 -1
  24. package/dist/actions/types/context.d.ts +17 -1
  25. package/dist/actions/types/context.d.ts.map +1 -1
  26. package/dist/actions/validators.d.ts.map +1 -1
  27. package/dist/activity/timeline.d.ts +8 -1
  28. package/dist/activity/timeline.d.ts.map +1 -1
  29. package/dist/agents/accounting.d.ts +15 -0
  30. package/dist/agents/accounting.d.ts.map +1 -0
  31. package/dist/agents/adapters.d.ts.map +1 -1
  32. package/dist/agents/agent-mail.d.ts +9 -0
  33. package/dist/agents/agent-mail.d.ts.map +1 -0
  34. package/dist/agents/api-gateway.d.ts +5 -0
  35. package/dist/agents/api-gateway.d.ts.map +1 -1
  36. package/dist/agents/approval-continuation.d.ts +23 -0
  37. package/dist/agents/approval-continuation.d.ts.map +1 -0
  38. package/dist/agents/approval-executor.d.ts +56 -0
  39. package/dist/agents/approval-executor.d.ts.map +1 -0
  40. package/dist/agents/approval-outcome.d.ts +8 -0
  41. package/dist/agents/approval-outcome.d.ts.map +1 -0
  42. package/dist/agents/approvals.d.ts +210 -0
  43. package/dist/agents/approvals.d.ts.map +1 -0
  44. package/dist/agents/authority.d.ts +10 -0
  45. package/dist/agents/authority.d.ts.map +1 -1
  46. package/dist/agents/builders.d.ts.map +1 -1
  47. package/dist/agents/cancel.d.ts +23 -0
  48. package/dist/agents/cancel.d.ts.map +1 -0
  49. package/dist/agents/child-question.d.ts +18 -0
  50. package/dist/agents/child-question.d.ts.map +1 -0
  51. package/dist/agents/children.d.ts +99 -0
  52. package/dist/agents/children.d.ts.map +1 -0
  53. package/dist/agents/context/index.js +1 -1
  54. package/dist/agents/context-compaction.d.ts.map +1 -1
  55. package/dist/agents/errors.d.ts +13 -1
  56. package/dist/agents/errors.d.ts.map +1 -1
  57. package/dist/agents/execution.d.ts +180 -14
  58. package/dist/agents/execution.d.ts.map +1 -1
  59. package/dist/agents/fork.d.ts +16 -0
  60. package/dist/agents/fork.d.ts.map +1 -0
  61. package/dist/agents/ids.d.ts +7 -0
  62. package/dist/agents/ids.d.ts.map +1 -1
  63. package/dist/agents/index.d.ts +19 -8
  64. package/dist/agents/index.d.ts.map +1 -1
  65. package/dist/agents/index.js +159 -86
  66. package/dist/agents/index.js.map +1 -1
  67. package/dist/agents/memory-execution.d.ts +57 -0
  68. package/dist/agents/memory-execution.d.ts.map +1 -0
  69. package/dist/agents/memory.d.ts +49 -0
  70. package/dist/agents/memory.d.ts.map +1 -0
  71. package/dist/agents/message.d.ts +50 -1
  72. package/dist/agents/message.d.ts.map +1 -1
  73. package/dist/agents/model-loop.d.ts +19 -0
  74. package/dist/agents/model-loop.d.ts.map +1 -1
  75. package/dist/agents/model-routing.d.ts +19 -0
  76. package/dist/agents/model-routing.d.ts.map +1 -0
  77. package/dist/agents/participants.d.ts +18 -0
  78. package/dist/agents/participants.d.ts.map +1 -0
  79. package/dist/agents/reference.d.ts.map +1 -1
  80. package/dist/agents/request.d.ts +36 -2
  81. package/dist/agents/request.d.ts.map +1 -1
  82. package/dist/agents/run-scope.d.ts +51 -0
  83. package/dist/agents/run-scope.d.ts.map +1 -0
  84. package/dist/agents/streams/index.d.ts +3 -2
  85. package/dist/agents/streams/index.d.ts.map +1 -1
  86. package/dist/agents/streams/index.js +7 -3
  87. package/dist/agents/streams/index.js.map +1 -1
  88. package/dist/agents/streams/internal.d.ts +1 -1
  89. package/dist/agents/streams/internal.d.ts.map +1 -1
  90. package/dist/agents/streams/internal.js +5 -3
  91. package/dist/agents/streams/internal.js.map +1 -1
  92. package/dist/agents/streams/protocol.d.ts +122 -3
  93. package/dist/agents/streams/protocol.d.ts.map +1 -1
  94. package/dist/agents/subagent-runs.d.ts +12 -0
  95. package/dist/agents/subagent-runs.d.ts.map +1 -0
  96. package/dist/agents/thread-access.d.ts +53 -0
  97. package/dist/agents/thread-access.d.ts.map +1 -0
  98. package/dist/agents/tool-definition.d.ts +5 -4
  99. package/dist/agents/tool-definition.d.ts.map +1 -1
  100. package/dist/agents/types.d.ts +23 -4
  101. package/dist/agents/types.d.ts.map +1 -1
  102. package/dist/agents/validation.d.ts +1 -1
  103. package/dist/agents/validation.d.ts.map +1 -1
  104. package/dist/artifacts/access.d.ts +52 -0
  105. package/dist/artifacts/access.d.ts.map +1 -0
  106. package/dist/artifacts/canvas.d.ts +92 -0
  107. package/dist/artifacts/canvas.d.ts.map +1 -0
  108. package/dist/artifacts/csv.d.ts +5 -0
  109. package/dist/artifacts/csv.d.ts.map +1 -1
  110. package/dist/artifacts/errors.d.ts +7 -2
  111. package/dist/artifacts/errors.d.ts.map +1 -1
  112. package/dist/artifacts/execution.d.ts +102 -7
  113. package/dist/artifacts/execution.d.ts.map +1 -1
  114. package/dist/artifacts/formula/check.d.ts +24 -0
  115. package/dist/artifacts/formula/check.d.ts.map +1 -0
  116. package/dist/artifacts/formula/evaluate.d.ts +32 -0
  117. package/dist/artifacts/formula/evaluate.d.ts.map +1 -0
  118. package/dist/artifacts/formula/index.d.ts +38 -0
  119. package/dist/artifacts/formula/index.d.ts.map +1 -0
  120. package/dist/artifacts/formula/parser.d.ts +67 -0
  121. package/dist/artifacts/formula/parser.d.ts.map +1 -0
  122. package/dist/artifacts/frames/assets.d.ts +11 -9
  123. package/dist/artifacts/frames/assets.d.ts.map +1 -1
  124. package/dist/artifacts/frames/entries.d.ts +19 -0
  125. package/dist/artifacts/frames/entries.d.ts.map +1 -0
  126. package/dist/artifacts/frames/grants.d.ts +6 -6
  127. package/dist/artifacts/frames/grants.d.ts.map +1 -1
  128. package/dist/artifacts/frames/index.d.ts +4 -2
  129. package/dist/artifacts/frames/index.d.ts.map +1 -1
  130. package/dist/artifacts/frames/index.js +444 -51
  131. package/dist/artifacts/frames/index.js.map +10 -8
  132. package/dist/artifacts/frames/kit.d.ts +10 -5
  133. package/dist/artifacts/frames/kit.d.ts.map +1 -1
  134. package/dist/artifacts/frames/probe.d.ts +16 -12
  135. package/dist/artifacts/frames/probe.d.ts.map +1 -1
  136. package/dist/artifacts/frames/protocol.d.ts +79 -10
  137. package/dist/artifacts/frames/protocol.d.ts.map +1 -1
  138. package/dist/artifacts/frames/runtime.d.ts +27 -9
  139. package/dist/artifacts/frames/runtime.d.ts.map +1 -1
  140. package/dist/artifacts/index.d.ts +11 -5
  141. package/dist/artifacts/index.d.ts.map +1 -1
  142. package/dist/artifacts/index.js +128 -6
  143. package/dist/artifacts/index.js.map +3 -3
  144. package/dist/artifacts/kinds.d.ts +1 -1
  145. package/dist/artifacts/kinds.d.ts.map +1 -1
  146. package/dist/artifacts/limits.d.ts +30 -0
  147. package/dist/artifacts/limits.d.ts.map +1 -1
  148. package/dist/artifacts/live-sheet.d.ts +65 -0
  149. package/dist/artifacts/live-sheet.d.ts.map +1 -0
  150. package/dist/artifacts/outline.d.ts +27 -1
  151. package/dist/artifacts/outline.d.ts.map +1 -1
  152. package/dist/artifacts/publish/index.d.ts +2 -0
  153. package/dist/artifacts/publish/index.d.ts.map +1 -1
  154. package/dist/artifacts/publish/index.js +59 -19
  155. package/dist/artifacts/publish/index.js.map +1 -1
  156. package/dist/artifacts/publish/publish.d.ts +43 -11
  157. package/dist/artifacts/publish/publish.d.ts.map +1 -1
  158. package/dist/artifacts/publish/queries.d.ts +33 -0
  159. package/dist/artifacts/publish/queries.d.ts.map +1 -0
  160. package/dist/artifacts/publish/references.d.ts +6 -3
  161. package/dist/artifacts/publish/references.d.ts.map +1 -1
  162. package/dist/artifacts/publish/validate/canvas.d.ts +18 -0
  163. package/dist/artifacts/publish/validate/canvas.d.ts.map +1 -0
  164. package/dist/artifacts/publish/validate/html.d.ts +20 -0
  165. package/dist/artifacts/publish/validate/html.d.ts.map +1 -0
  166. package/dist/artifacts/publish/validate/page.d.ts +15 -0
  167. package/dist/artifacts/publish/validate/page.d.ts.map +1 -0
  168. package/dist/artifacts/publish/validate/sheet.d.ts +11 -3
  169. package/dist/artifacts/publish/validate/sheet.d.ts.map +1 -1
  170. package/dist/artifacts/publish/validate/slides.d.ts +1 -7
  171. package/dist/artifacts/publish/validate/slides.d.ts.map +1 -1
  172. package/dist/artifacts/queries.d.ts +95 -0
  173. package/dist/artifacts/queries.d.ts.map +1 -0
  174. package/dist/artifacts/resolve.d.ts +6 -0
  175. package/dist/artifacts/resolve.d.ts.map +1 -1
  176. package/dist/artifacts/run-query.d.ts +26 -0
  177. package/dist/artifacts/run-query.d.ts.map +1 -0
  178. package/dist/artifacts/serialize-query.d.ts +12 -0
  179. package/dist/artifacts/serialize-query.d.ts.map +1 -0
  180. package/dist/artifacts/sheet-rules.d.ts +26 -0
  181. package/dist/artifacts/sheet-rules.d.ts.map +1 -0
  182. package/dist/artifacts/tones.d.ts +8 -0
  183. package/dist/artifacts/tones.d.ts.map +1 -0
  184. package/dist/artifacts/workbook.d.ts +76 -5
  185. package/dist/artifacts/workbook.d.ts.map +1 -1
  186. package/dist/auth/index.d.ts +1 -1
  187. package/dist/auth/index.d.ts.map +1 -1
  188. package/dist/auth/index.js +14 -11
  189. package/dist/auth/index.js.map +1 -1
  190. package/dist/auth/member-events.d.ts +13 -0
  191. package/dist/auth/member-events.d.ts.map +1 -0
  192. package/dist/auth/profile.d.ts +11 -0
  193. package/dist/auth/profile.d.ts.map +1 -0
  194. package/dist/auth/runtime.d.ts +31 -3
  195. package/dist/auth/runtime.d.ts.map +1 -1
  196. package/dist/auth/strategy.d.ts +3 -1
  197. package/dist/auth/strategy.d.ts.map +1 -1
  198. package/dist/auth/strategy.js +7 -3
  199. package/dist/auth/strategy.js.map +1 -1
  200. package/dist/auth/types.d.ts +30 -1
  201. package/dist/auth/types.d.ts.map +1 -1
  202. package/dist/authorization/decision.d.ts +15 -0
  203. package/dist/authorization/decision.d.ts.map +1 -1
  204. package/dist/authorization/event-visibility.d.ts +5 -1
  205. package/dist/authorization/event-visibility.d.ts.map +1 -1
  206. package/dist/authorization/grant-kinds.d.ts +2 -2
  207. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  208. package/dist/authorization/index.d.ts +2 -2
  209. package/dist/authorization/index.d.ts.map +1 -1
  210. package/dist/authorization/index.js +12 -7
  211. package/dist/authorization/index.js.map +1 -1
  212. package/dist/authorization/resolve.d.ts +19 -1
  213. package/dist/authorization/resolve.d.ts.map +1 -1
  214. package/dist/authorization/run-visibility.d.ts +8 -1
  215. package/dist/authorization/run-visibility.d.ts.map +1 -1
  216. package/dist/authorization/types.d.ts +14 -0
  217. package/dist/authorization/types.d.ts.map +1 -1
  218. package/dist/bootstrap/index.js +69 -65
  219. package/dist/bootstrap/index.js.map +2 -2
  220. package/dist/{chunk-ky3j490c.js → chunk-02bzjgnt.js} +6 -6
  221. package/dist/{chunk-ky3j490c.js.map → chunk-02bzjgnt.js.map} +1 -1
  222. package/dist/{chunk-mfs23znk.js → chunk-07kkp2e1.js} +1 -1
  223. package/dist/{chunk-c1rxbz5y.js → chunk-098anw4f.js} +21 -19
  224. package/dist/chunk-098anw4f.js.map +12 -0
  225. package/dist/{chunk-z58tm0hm.js → chunk-0phpbbvm.js} +3 -3
  226. package/dist/{chunk-ere85b8y.js → chunk-0xmt5p5y.js} +116 -27
  227. package/dist/chunk-0xmt5p5y.js.map +14 -0
  228. package/dist/{chunk-t6f3tdnr.js → chunk-16a9dmfy.js} +33 -2
  229. package/dist/{chunk-t6f3tdnr.js.map → chunk-16a9dmfy.js.map} +5 -4
  230. package/dist/chunk-18sk89cg.js +47 -0
  231. package/dist/chunk-18sk89cg.js.map +10 -0
  232. package/dist/{chunk-e17zdm62.js → chunk-1t6k1avb.js} +1 -1
  233. package/dist/chunk-2626mh4m.js +693 -0
  234. package/dist/chunk-2626mh4m.js.map +19 -0
  235. package/dist/{chunk-qczk96d9.js → chunk-2adz0h75.js} +13 -4
  236. package/dist/chunk-2adz0h75.js.map +11 -0
  237. package/dist/{chunk-kge7k6ey.js → chunk-2fn60nvs.js} +2 -2
  238. package/dist/{chunk-99nd4rc1.js → chunk-2gjj5dx3.js} +5 -4
  239. package/dist/{chunk-99nd4rc1.js.map → chunk-2gjj5dx3.js.map} +3 -3
  240. package/dist/{chunk-mjddfa7k.js → chunk-3fqxbn31.js} +2 -24
  241. package/dist/{chunk-mjddfa7k.js.map → chunk-3fqxbn31.js.map} +3 -4
  242. package/dist/{chunk-y0c4e6ex.js → chunk-3gbefjg5.js} +1 -1
  243. package/dist/{chunk-5hx48dnn.js → chunk-45ngkxkp.js} +52 -31
  244. package/dist/chunk-45ngkxkp.js.map +13 -0
  245. package/dist/{chunk-cy4mbddw.js → chunk-48jezz3j.js} +1 -1
  246. package/dist/{chunk-561r0yc9.js → chunk-4b26qwbg.js} +13 -13
  247. package/dist/{chunk-561r0yc9.js.map → chunk-4b26qwbg.js.map} +1 -1
  248. package/dist/{chunk-9k93ah50.js → chunk-4f3ydv7t.js} +33 -69
  249. package/dist/chunk-4f3ydv7t.js.map +10 -0
  250. package/dist/chunk-4y26vs3v.js +97 -0
  251. package/dist/chunk-4y26vs3v.js.map +10 -0
  252. package/dist/{chunk-4as3wt1c.js → chunk-4ymrcdbm.js} +7 -3
  253. package/dist/chunk-4ymrcdbm.js.map +12 -0
  254. package/dist/{chunk-hcbyfxbe.js → chunk-5grk14e5.js} +76 -2
  255. package/dist/{chunk-hcbyfxbe.js.map → chunk-5grk14e5.js.map} +4 -3
  256. package/dist/{chunk-8frc8a4j.js → chunk-65pyhyas.js} +90 -83
  257. package/dist/chunk-65pyhyas.js.map +20 -0
  258. package/dist/{chunk-hwksyjks.js → chunk-661ezhks.js} +182 -6
  259. package/dist/chunk-661ezhks.js.map +11 -0
  260. package/dist/{chunk-447a5c0p.js → chunk-6n69k945.js} +2 -2
  261. package/dist/{chunk-0bphap9y.js → chunk-6p0pastb.js} +5 -5
  262. package/dist/{chunk-9j4jw7as.js → chunk-6rrtzea3.js} +18 -5
  263. package/dist/chunk-6rrtzea3.js.map +14 -0
  264. package/dist/{chunk-431pyp2c.js → chunk-6y0mkhex.js} +2 -2
  265. package/dist/{chunk-f4pamkt9.js → chunk-73v685wb.js} +10 -10
  266. package/dist/{chunk-f4pamkt9.js.map → chunk-73v685wb.js.map} +3 -3
  267. package/dist/{chunk-akzryx9h.js → chunk-7gr4j2eq.js} +7836 -5047
  268. package/dist/chunk-7gr4j2eq.js.map +120 -0
  269. package/dist/{chunk-bk9svbcq.js → chunk-7mc2wkre.js} +386 -86
  270. package/dist/chunk-7mc2wkre.js.map +50 -0
  271. package/dist/{chunk-6rqgmkde.js → chunk-7z5p905k.js} +335 -703
  272. package/dist/chunk-7z5p905k.js.map +22 -0
  273. package/dist/{chunk-yxd3nnqt.js → chunk-9mab3dvg.js} +26 -2
  274. package/dist/chunk-9mab3dvg.js.map +11 -0
  275. package/dist/chunk-9wr3yajk.js +42 -0
  276. package/dist/chunk-9wr3yajk.js.map +10 -0
  277. package/dist/chunk-az47zep4.js +41 -0
  278. package/dist/chunk-az47zep4.js.map +10 -0
  279. package/dist/{chunk-s7jg7pmn.js → chunk-bab05bhg.js} +1 -1
  280. package/dist/{chunk-858emn8m.js → chunk-bktev1ds.js} +14 -11
  281. package/dist/{chunk-858emn8m.js.map → chunk-bktev1ds.js.map} +3 -3
  282. package/dist/{chunk-dhcv7yxc.js → chunk-c0vk1djt.js} +5 -3
  283. package/dist/chunk-c0vk1djt.js.map +11 -0
  284. package/dist/chunk-c69nj7se.js +3 -0
  285. package/dist/{chunk-7n30ybym.js.map → chunk-c69nj7se.js.map} +1 -1
  286. package/dist/{chunk-q5e5tv4b.js → chunk-c844dkwd.js} +1 -1
  287. package/dist/{chunk-g257jwnc.js → chunk-cdk3egjj.js} +17 -4
  288. package/dist/chunk-cdk3egjj.js.map +12 -0
  289. package/dist/chunk-cswhawa2.js +113 -0
  290. package/dist/chunk-cswhawa2.js.map +10 -0
  291. package/dist/{chunk-cfj9dfbb.js → chunk-d2m879s4.js} +2 -2
  292. package/dist/{chunk-arns890k.js → chunk-d7vyc7k6.js} +2 -2
  293. package/dist/chunk-d7vyc7k6.js.map +10 -0
  294. package/dist/{chunk-q7gn29y3.js → chunk-dp0cdtj2.js} +2 -2
  295. package/dist/{chunk-6x0pqh32.js → chunk-e5wf5vz0.js} +3 -1
  296. package/dist/chunk-e5wf5vz0.js.map +10 -0
  297. package/dist/{chunk-cn0fwwhy.js → chunk-efmm01gj.js} +108 -1045
  298. package/dist/chunk-efmm01gj.js.map +18 -0
  299. package/dist/{chunk-918wwnaa.js → chunk-ezne9wc9.js} +1224 -430
  300. package/dist/chunk-ezne9wc9.js.map +71 -0
  301. package/dist/{chunk-tbc1ngpd.js → chunk-fe8zwt8b.js} +58 -12
  302. package/dist/{chunk-tbc1ngpd.js.map → chunk-fe8zwt8b.js.map} +5 -4
  303. package/dist/{chunk-br3k6qbf.js → chunk-fm62y49k.js} +1 -1
  304. package/dist/{chunk-nq6gpjt7.js → chunk-fntqb7qy.js} +30 -4
  305. package/dist/{chunk-nq6gpjt7.js.map → chunk-fntqb7qy.js.map} +5 -5
  306. package/dist/{chunk-1cc1xaf3.js → chunk-fp2kq35z.js} +26 -10
  307. package/dist/{chunk-1cc1xaf3.js.map → chunk-fp2kq35z.js.map} +5 -5
  308. package/dist/{chunk-vvxtn22d.js → chunk-g663fahq.js} +2 -2
  309. package/dist/{chunk-k43ct2ke.js → chunk-gvj5cd3b.js} +16 -9
  310. package/dist/chunk-gvj5cd3b.js.map +12 -0
  311. package/dist/{chunk-rmakanzx.js → chunk-h33shhq6.js} +5 -5
  312. package/dist/{chunk-nn5xnx3s.js → chunk-h3pbv7n8.js} +1738 -38
  313. package/dist/chunk-h3pbv7n8.js.map +48 -0
  314. package/dist/chunk-hn2r7z41.js.map +1 -1
  315. package/dist/{chunk-pbcbn83d.js → chunk-hqsp2sx4.js} +54 -8
  316. package/dist/chunk-hqsp2sx4.js.map +14 -0
  317. package/dist/{chunk-d09e3rax.js → chunk-hwarjrgf.js} +1 -1
  318. package/dist/{chunk-vf57cr4t.js → chunk-hyesv9dv.js} +1 -1
  319. package/dist/chunk-hz5d43gn.js +45 -0
  320. package/dist/chunk-hz5d43gn.js.map +10 -0
  321. package/dist/{chunk-91mg3nj9.js → chunk-j936th07.js} +86 -41
  322. package/dist/chunk-j936th07.js.map +12 -0
  323. package/dist/chunk-kcqpk9w1.js +75 -0
  324. package/dist/chunk-kcqpk9w1.js.map +10 -0
  325. package/dist/{chunk-5vems3nx.js → chunk-m2nevja0.js} +2 -2
  326. package/dist/{chunk-x9v4cx1d.js → chunk-m36fw8ft.js} +1 -1
  327. package/dist/{chunk-a40ad1ft.js → chunk-mbsbxarb.js} +1 -1
  328. package/dist/chunk-mzx71snp.js +129 -0
  329. package/dist/chunk-mzx71snp.js.map +10 -0
  330. package/dist/{chunk-6aawea28.js → chunk-n8q5j6y5.js} +1 -1
  331. package/dist/{chunk-d7dnxdep.js → chunk-n9zpx9c6.js} +4 -4
  332. package/dist/{chunk-xvsc5m8n.js → chunk-npcr0228.js} +1 -1
  333. package/dist/chunk-nydf3dbe.js +663 -0
  334. package/dist/chunk-nydf3dbe.js.map +13 -0
  335. package/dist/chunk-pdt5cw8z.js +233 -0
  336. package/dist/chunk-pdt5cw8z.js.map +11 -0
  337. package/dist/{chunk-rj69qcrd.js → chunk-pgrf64hp.js} +55 -7
  338. package/dist/chunk-pgrf64hp.js.map +12 -0
  339. package/dist/{chunk-y5tah2kf.js → chunk-q4pmvkg0.js} +1 -1
  340. package/dist/chunk-qhqgp4jf.js +1418 -0
  341. package/dist/chunk-qhqgp4jf.js.map +22 -0
  342. package/dist/{chunk-48qjhh6v.js → chunk-qx00vjrj.js} +19 -60
  343. package/dist/chunk-qx00vjrj.js.map +13 -0
  344. package/dist/{chunk-5948n82c.js → chunk-r6szek0x.js} +184 -7
  345. package/dist/chunk-r6szek0x.js.map +10 -0
  346. package/dist/{chunk-v4jbb3rs.js → chunk-rap5w0x0.js} +156 -2
  347. package/dist/chunk-rap5w0x0.js.map +10 -0
  348. package/dist/{chunk-pfp1txq2.js → chunk-sgx82nnt.js} +5 -31
  349. package/dist/{chunk-pfp1txq2.js.map → chunk-sgx82nnt.js.map} +3 -4
  350. package/dist/{chunk-bkpke1sg.js → chunk-t5608tkq.js} +3 -1
  351. package/dist/{chunk-bkpke1sg.js.map → chunk-t5608tkq.js.map} +3 -3
  352. package/dist/{chunk-29yx306f.js → chunk-tdxfsg1c.js} +507 -265
  353. package/dist/chunk-tdxfsg1c.js.map +23 -0
  354. package/dist/{chunk-d5rjr8c0.js → chunk-vabga7fk.js} +1 -1
  355. package/dist/{chunk-dhdha526.js → chunk-vhbw5sqm.js} +26 -2
  356. package/dist/chunk-vhbw5sqm.js.map +10 -0
  357. package/dist/{chunk-e6k4thh5.js → chunk-vpgwq5nf.js} +98 -12
  358. package/dist/chunk-vpgwq5nf.js.map +21 -0
  359. package/dist/{chunk-61y5xs4p.js → chunk-vyt322b6.js} +69 -50
  360. package/dist/{chunk-61y5xs4p.js.map → chunk-vyt322b6.js.map} +4 -4
  361. package/dist/chunk-waqk73p1.js +2380 -0
  362. package/dist/chunk-waqk73p1.js.map +23 -0
  363. package/dist/chunk-wsc1brye.js +27 -0
  364. package/dist/chunk-wsc1brye.js.map +10 -0
  365. package/dist/{chunk-96yw3pwd.js → chunk-y7dbmaqh.js} +28 -2
  366. package/dist/chunk-y7dbmaqh.js.map +10 -0
  367. package/dist/{chunk-6vb4st8k.js → chunk-yc9ners4.js} +120 -19
  368. package/dist/{chunk-6vb4st8k.js.map → chunk-yc9ners4.js.map} +8 -8
  369. package/dist/{chunk-dvd2fp9q.js → chunk-zbc929zg.js} +28 -4
  370. package/dist/chunk-zbc929zg.js.map +13 -0
  371. package/dist/chunk-zrvhsq7f.js +37 -0
  372. package/dist/chunk-zrvhsq7f.js.map +10 -0
  373. package/dist/datasets/write.js +5 -5
  374. package/dist/error-reporting/internal.js +3 -3
  375. package/dist/errors/catalog.d.ts +26 -0
  376. package/dist/errors/catalog.d.ts.map +1 -1
  377. package/dist/errors/internal.d.ts.map +1 -1
  378. package/dist/errors/internal.js +1 -1
  379. package/dist/events/definitions.d.ts +7 -0
  380. package/dist/events/definitions.d.ts.map +1 -1
  381. package/dist/events/execution.d.ts.map +1 -1
  382. package/dist/events/index.d.ts +2 -3
  383. package/dist/events/index.d.ts.map +1 -1
  384. package/dist/events/index.js +8 -10
  385. package/dist/events/index.js.map +1 -1
  386. package/dist/events/scope.d.ts.map +1 -1
  387. package/dist/events/scope.js +1 -1
  388. package/dist/events/selectors/builder.d.ts +12 -1
  389. package/dist/events/selectors/builder.d.ts.map +1 -1
  390. package/dist/events/selectors/index.d.ts +2 -2
  391. package/dist/events/selectors/index.d.ts.map +1 -1
  392. package/dist/events/selectors/index.js +2 -2
  393. package/dist/events/selectors/types.d.ts +19 -3
  394. package/dist/events/selectors/types.d.ts.map +1 -1
  395. package/dist/events/service.d.ts +17 -2
  396. package/dist/events/service.d.ts.map +1 -1
  397. package/dist/events/types/index.d.ts +3 -1
  398. package/dist/events/types/index.d.ts.map +1 -1
  399. package/dist/events/types/users.d.ts +63 -0
  400. package/dist/events/types/users.d.ts.map +1 -0
  401. package/dist/events/view-conditions.d.ts +34 -0
  402. package/dist/events/view-conditions.d.ts.map +1 -0
  403. package/dist/execution/agent.d.ts +15 -0
  404. package/dist/execution/agent.d.ts.map +1 -1
  405. package/dist/execution/agent.js +63 -57
  406. package/dist/execution/agent.js.map +1 -1
  407. package/dist/execution/authorization.d.ts.map +1 -1
  408. package/dist/execution/authorized-object-reader.d.ts +51 -2
  409. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  410. package/dist/execution/lineage.d.ts +7 -0
  411. package/dist/execution/lineage.d.ts.map +1 -0
  412. package/dist/execution/object-reader-ontology.d.ts +2 -2
  413. package/dist/execution/object-reader-ontology.d.ts.map +1 -1
  414. package/dist/execution/object-reader-security.d.ts +24 -3
  415. package/dist/execution/object-reader-security.d.ts.map +1 -1
  416. package/dist/execution/object-reader-users.d.ts +20 -0
  417. package/dist/execution/object-reader-users.d.ts.map +1 -0
  418. package/dist/execution/preparation.d.ts +23 -0
  419. package/dist/execution/preparation.d.ts.map +1 -0
  420. package/dist/execution/primitive.js +61 -57
  421. package/dist/execution/primitive.js.map +1 -1
  422. package/dist/execution/request.d.ts +2 -1
  423. package/dist/execution/request.d.ts.map +1 -1
  424. package/dist/execution/request.js +64 -56
  425. package/dist/execution/request.js.map +3 -3
  426. package/dist/execution/unique-lookup.d.ts +14 -0
  427. package/dist/execution/unique-lookup.d.ts.map +1 -0
  428. package/dist/execution/visible-objects.d.ts +12 -0
  429. package/dist/execution/visible-objects.d.ts.map +1 -0
  430. package/dist/http/api-routes.d.ts +17 -0
  431. package/dist/http/api-routes.d.ts.map +1 -1
  432. package/dist/http/index.js +1 -1
  433. package/dist/index.d.ts +32 -15
  434. package/dist/index.d.ts.map +1 -1
  435. package/dist/index.js +137 -126
  436. package/dist/index.js.map +1 -1
  437. package/dist/lake-storage/index.js +5 -5
  438. package/dist/materialization/errors.d.ts +25 -0
  439. package/dist/materialization/errors.d.ts.map +1 -1
  440. package/dist/materialization/event-envelopes.d.ts +5 -0
  441. package/dist/materialization/event-envelopes.d.ts.map +1 -1
  442. package/dist/materialization/index.d.ts +1 -1
  443. package/dist/materialization/index.d.ts.map +1 -1
  444. package/dist/materialization/index.js +14 -8
  445. package/dist/materialization/index.js.map +1 -1
  446. package/dist/materialization/model.d.ts +20 -2
  447. package/dist/materialization/model.d.ts.map +1 -1
  448. package/dist/materializer/edits/commit.d.ts.map +1 -1
  449. package/dist/materializer/edits/load-state.d.ts +5 -1
  450. package/dist/materializer/edits/load-state.d.ts.map +1 -1
  451. package/dist/materializer/edits/plan.d.ts.map +1 -1
  452. package/dist/materializer/edits/unique-values.d.ts +47 -0
  453. package/dist/materializer/edits/unique-values.d.ts.map +1 -0
  454. package/dist/materializer/edits/working-state.d.ts +6 -1
  455. package/dist/materializer/edits/working-state.d.ts.map +1 -1
  456. package/dist/materializer/execution/work-records.d.ts +7 -1
  457. package/dist/materializer/execution/work-records.d.ts.map +1 -1
  458. package/dist/materializer/index.js +45 -41
  459. package/dist/materializer/index.js.map +1 -1
  460. package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
  461. package/dist/materializer/projections/source-materialization.d.ts +1 -0
  462. package/dist/materializer/projections/source-materialization.d.ts.map +1 -1
  463. package/dist/materializer/shared/normalize.d.ts.map +1 -1
  464. package/dist/materializer/shared/projection-run.d.ts +0 -1
  465. package/dist/materializer/shared/projection-run.d.ts.map +1 -1
  466. package/dist/materializer/telemetry/plan.d.ts.map +1 -1
  467. package/dist/models/audio/catalog.d.ts +13 -1
  468. package/dist/models/audio/catalog.d.ts.map +1 -1
  469. package/dist/models/audio/errors.d.ts +6 -1
  470. package/dist/models/audio/errors.d.ts.map +1 -1
  471. package/dist/models/audio/runtime.d.ts.map +1 -1
  472. package/dist/models/audio/speech.d.ts +8 -0
  473. package/dist/models/audio/speech.d.ts.map +1 -0
  474. package/dist/models/audio/types.d.ts +93 -0
  475. package/dist/models/audio/types.d.ts.map +1 -1
  476. package/dist/models/calls.d.ts +27 -0
  477. package/dist/models/calls.d.ts.map +1 -0
  478. package/dist/models/catalog-index.d.ts +7 -4
  479. package/dist/models/catalog-index.d.ts.map +1 -1
  480. package/dist/models/catalog.d.ts +55 -3
  481. package/dist/models/catalog.d.ts.map +1 -1
  482. package/dist/models/decision/runtime.d.ts +6 -1
  483. package/dist/models/decision/runtime.d.ts.map +1 -1
  484. package/dist/models/decision/validation.d.ts +4 -1
  485. package/dist/models/decision/validation.d.ts.map +1 -1
  486. package/dist/models/definitions.d.ts +23 -1
  487. package/dist/models/definitions.d.ts.map +1 -1
  488. package/dist/models/events.d.ts +12 -1
  489. package/dist/models/events.d.ts.map +1 -1
  490. package/dist/models/execution/binding.d.ts +3 -1
  491. package/dist/models/execution/binding.d.ts.map +1 -1
  492. package/dist/models/execution/index.d.ts +1 -0
  493. package/dist/models/execution/index.d.ts.map +1 -1
  494. package/dist/models/execution/index.js +44 -34
  495. package/dist/models/execution/index.js.map +1 -1
  496. package/dist/models/execution/model-call-accounting.d.ts.map +1 -1
  497. package/dist/models/execution/model-call-recorder.d.ts +3 -0
  498. package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
  499. package/dist/models/execution/usage.d.ts.map +1 -1
  500. package/dist/models/execution.d.ts +4 -2
  501. package/dist/models/execution.d.ts.map +1 -1
  502. package/dist/models/generation-types.d.ts +8 -1
  503. package/dist/models/generation-types.d.ts.map +1 -1
  504. package/dist/models/image/catalog.d.ts +13 -0
  505. package/dist/models/image/catalog.d.ts.map +1 -0
  506. package/dist/models/image/errors.d.ts +8 -0
  507. package/dist/models/image/errors.d.ts.map +1 -0
  508. package/dist/models/image/runtime.d.ts +8 -0
  509. package/dist/models/image/runtime.d.ts.map +1 -0
  510. package/dist/models/image/types.d.ts +103 -0
  511. package/dist/models/image/types.d.ts.map +1 -0
  512. package/dist/models/index.d.ts +12 -8
  513. package/dist/models/index.d.ts.map +1 -1
  514. package/dist/models/index.js +17 -7
  515. package/dist/models/index.js.map +1 -1
  516. package/dist/models/input-file.d.ts +9 -0
  517. package/dist/models/input-file.d.ts.map +1 -0
  518. package/dist/models/language-model.d.ts +13 -0
  519. package/dist/models/language-model.d.ts.map +1 -1
  520. package/dist/models/pricing.d.ts +25 -10
  521. package/dist/models/pricing.d.ts.map +1 -1
  522. package/dist/models/rate-card.d.ts +44 -6
  523. package/dist/models/rate-card.d.ts.map +1 -1
  524. package/dist/objects/conditional-writes.d.ts +37 -0
  525. package/dist/objects/conditional-writes.d.ts.map +1 -0
  526. package/dist/objects/execution.d.ts +2 -0
  527. package/dist/objects/execution.d.ts.map +1 -1
  528. package/dist/objects/index.d.ts +1 -0
  529. package/dist/objects/index.d.ts.map +1 -1
  530. package/dist/objects/index.js +68 -58
  531. package/dist/objects/index.js.map +1 -1
  532. package/dist/objects/link/authorization.d.ts +3 -0
  533. package/dist/objects/link/authorization.d.ts.map +1 -1
  534. package/dist/objects/link/endpoints.d.ts +21 -2
  535. package/dist/objects/link/endpoints.d.ts.map +1 -1
  536. package/dist/objects/link/remove.d.ts.map +1 -1
  537. package/dist/objects/link/upsert-batch.d.ts.map +1 -1
  538. package/dist/objects/link/upsert.d.ts.map +1 -1
  539. package/dist/objects/materializer-adapter.d.ts +13 -4
  540. package/dist/objects/materializer-adapter.d.ts.map +1 -1
  541. package/dist/objects/object/delete.d.ts +3 -0
  542. package/dist/objects/object/delete.d.ts.map +1 -1
  543. package/dist/objects/object/upsert-batch.d.ts.map +1 -1
  544. package/dist/objects/object/upsert.d.ts.map +1 -1
  545. package/dist/objects/query/current-user.d.ts +17 -0
  546. package/dist/objects/query/current-user.d.ts.map +1 -0
  547. package/dist/objects/query/executor.d.ts +14 -0
  548. package/dist/objects/query/executor.d.ts.map +1 -1
  549. package/dist/objects/query/index.d.ts +2 -2
  550. package/dist/objects/query/index.d.ts.map +1 -1
  551. package/dist/objects/query/index.js +49 -44
  552. package/dist/objects/query/index.js.map +1 -1
  553. package/dist/objects/query/ir.d.ts +19 -1
  554. package/dist/objects/query/ir.d.ts.map +1 -1
  555. package/dist/objects/query/matches-predicate.d.ts +9 -0
  556. package/dist/objects/query/matches-predicate.d.ts.map +1 -0
  557. package/dist/objects/query/normalize.d.ts.map +1 -1
  558. package/dist/objects/query/user-expansions.d.ts +27 -0
  559. package/dist/objects/query/user-expansions.d.ts.map +1 -0
  560. package/dist/objects/query/validate.d.ts.map +1 -1
  561. package/dist/objects/runtime-batch.d.ts +3 -1
  562. package/dist/objects/runtime-batch.d.ts.map +1 -1
  563. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  564. package/dist/objects/sdk/query-executor.d.ts +6 -0
  565. package/dist/objects/sdk/query-executor.d.ts.map +1 -1
  566. package/dist/objects/serialize.d.ts +39 -0
  567. package/dist/objects/serialize.d.ts.map +1 -0
  568. package/dist/objects/unique-violation.d.ts +22 -0
  569. package/dist/objects/unique-violation.d.ts.map +1 -0
  570. package/dist/ontology/builders.d.ts +3 -1
  571. package/dist/ontology/builders.d.ts.map +1 -1
  572. package/dist/ontology/index.d.ts +2 -2
  573. package/dist/ontology/index.d.ts.map +1 -1
  574. package/dist/ontology/index.js +11 -7
  575. package/dist/ontology/index.js.map +1 -1
  576. package/dist/ontology/internal.js +7 -5
  577. package/dist/ontology/internal.js.map +3 -3
  578. package/dist/ontology/json-schema.d.ts.map +1 -1
  579. package/dist/ontology/primitives.d.ts +3 -0
  580. package/dist/ontology/primitives.d.ts.map +1 -1
  581. package/dist/ontology/registry.d.ts +6 -0
  582. package/dist/ontology/registry.d.ts.map +1 -1
  583. package/dist/ontology/types.d.ts +9 -0
  584. package/dist/ontology/types.d.ts.map +1 -1
  585. package/dist/ontology/unique-values.d.ts +26 -0
  586. package/dist/ontology/unique-values.d.ts.map +1 -0
  587. package/dist/ontology/user-ref.d.ts +23 -0
  588. package/dist/ontology/user-ref.d.ts.map +1 -1
  589. package/dist/ontology/validation/properties.d.ts.map +1 -1
  590. package/dist/ontology/validation/schema.d.ts.map +1 -1
  591. package/dist/pipelines/index.js +43 -40
  592. package/dist/pipelines/index.js.map +1 -1
  593. package/dist/projections/internal.js +36 -33
  594. package/dist/projections/internal.js.map +1 -1
  595. package/dist/projections/registry.d.ts +4 -0
  596. package/dist/projections/registry.d.ts.map +1 -1
  597. package/dist/projections/revision.d.ts +15 -0
  598. package/dist/projections/revision.d.ts.map +1 -1
  599. package/dist/projections/run-dispatch.d.ts.map +1 -1
  600. package/dist/projections/types.d.ts +2 -0
  601. package/dist/projections/types.d.ts.map +1 -1
  602. package/dist/query.d.ts +4 -2
  603. package/dist/query.d.ts.map +1 -1
  604. package/dist/query.js +2 -2
  605. package/dist/rules/execution.d.ts.map +1 -1
  606. package/dist/runtime/ai-cost.d.ts +2 -0
  607. package/dist/runtime/ai-cost.d.ts.map +1 -1
  608. package/dist/runtime/ai-usage.d.ts +7 -0
  609. package/dist/runtime/ai-usage.d.ts.map +1 -1
  610. package/dist/runtime/host.d.ts.map +1 -1
  611. package/dist/runtime/index.d.ts +1 -1
  612. package/dist/runtime/index.d.ts.map +1 -1
  613. package/dist/runtime/internal.js +42 -38
  614. package/dist/runtime/internal.js.map +1 -1
  615. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  616. package/dist/runtime/sixb.d.ts +2 -0
  617. package/dist/runtime/sixb.d.ts.map +1 -1
  618. package/dist/runtime/types.d.ts +66 -8
  619. package/dist/runtime/types.d.ts.map +1 -1
  620. package/dist/sandboxes/index.js +7 -6
  621. package/dist/sandboxes/index.js.map +1 -1
  622. package/dist/schedules/builders.d.ts.map +1 -1
  623. package/dist/schedules/index.js +3 -3
  624. package/dist/schedules/runtime.d.ts.map +1 -1
  625. package/dist/schedules/validation.d.ts.map +1 -1
  626. package/dist/security/grants.d.ts +12 -4
  627. package/dist/security/grants.d.ts.map +1 -1
  628. package/dist/security/index.d.ts +1 -1
  629. package/dist/security/index.d.ts.map +1 -1
  630. package/dist/security/internal.js +1 -1
  631. package/dist/security/project.d.ts +4 -1
  632. package/dist/security/project.d.ts.map +1 -1
  633. package/dist/security/public.js +2 -2
  634. package/dist/security/registry.d.ts +6 -0
  635. package/dist/security/registry.d.ts.map +1 -1
  636. package/dist/security/types.d.ts +47 -9
  637. package/dist/security/types.d.ts.map +1 -1
  638. package/dist/security/validation.d.ts.map +1 -1
  639. package/dist/security/view-conditions.d.ts +37 -0
  640. package/dist/security/view-conditions.d.ts.map +1 -0
  641. package/dist/shares/execution.d.ts.map +1 -1
  642. package/dist/shares/internal.js +34 -31
  643. package/dist/shares/internal.js.map +2 -2
  644. package/dist/storage/action-runs/failure.js +2 -2
  645. package/dist/storage/action-runs/provider.js +1 -1
  646. package/dist/storage/action-runs/types.d.ts +1 -1
  647. package/dist/storage/action-runs/types.d.ts.map +1 -1
  648. package/dist/storage/agents/errors.d.ts +3 -1
  649. package/dist/storage/agents/errors.d.ts.map +1 -1
  650. package/dist/storage/agents/in-memory.d.ts +120 -3
  651. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  652. package/dist/storage/agents/index.d.ts +2 -2
  653. package/dist/storage/agents/index.d.ts.map +1 -1
  654. package/dist/storage/agents/provider.d.ts +154 -4
  655. package/dist/storage/agents/provider.d.ts.map +1 -1
  656. package/dist/storage/agents/provider.js +60 -5
  657. package/dist/storage/agents/provider.js.map +1 -1
  658. package/dist/storage/agents/types.d.ts +565 -13
  659. package/dist/storage/agents/types.d.ts.map +1 -1
  660. package/dist/storage/ai-cost/analytics.d.ts +10 -1
  661. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  662. package/dist/storage/ai-cost/groups.d.ts +9 -0
  663. package/dist/storage/ai-cost/groups.d.ts.map +1 -1
  664. package/dist/storage/ai-cost/index.d.ts +1 -1
  665. package/dist/storage/ai-cost/index.d.ts.map +1 -1
  666. package/dist/storage/ai-cost/provider.d.ts +2 -1
  667. package/dist/storage/ai-cost/provider.d.ts.map +1 -1
  668. package/dist/storage/ai-cost/provider.js +11 -5
  669. package/dist/storage/ai-cost/provider.js.map +1 -1
  670. package/dist/storage/ai-cost/types.d.ts +14 -2
  671. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  672. package/dist/storage/ai-cost/validation.d.ts.map +1 -1
  673. package/dist/storage/ai-limits/enforcement.js +5 -4
  674. package/dist/storage/ai-limits/enforcement.js.map +1 -1
  675. package/dist/storage/ai-limits/provider.d.ts +1 -1
  676. package/dist/storage/ai-limits/provider.d.ts.map +1 -1
  677. package/dist/storage/ai-limits/provider.js +3 -2
  678. package/dist/storage/ai-limits/provider.js.map +1 -1
  679. package/dist/storage/ai-usage/in-memory.d.ts +5 -1
  680. package/dist/storage/ai-usage/in-memory.d.ts.map +1 -1
  681. package/dist/storage/ai-usage/index.d.ts +2 -2
  682. package/dist/storage/ai-usage/index.d.ts.map +1 -1
  683. package/dist/storage/ai-usage/record.d.ts +5 -1
  684. package/dist/storage/ai-usage/record.d.ts.map +1 -1
  685. package/dist/storage/ai-usage/types.d.ts +33 -0
  686. package/dist/storage/ai-usage/types.d.ts.map +1 -1
  687. package/dist/storage/ai-usage/usage.d.ts +2 -0
  688. package/dist/storage/ai-usage/usage.d.ts.map +1 -1
  689. package/dist/storage/artifacts/errors.d.ts +12 -2
  690. package/dist/storage/artifacts/errors.d.ts.map +1 -1
  691. package/dist/storage/artifacts/in-memory.d.ts +23 -2
  692. package/dist/storage/artifacts/in-memory.d.ts.map +1 -1
  693. package/dist/storage/artifacts/index.d.ts +2 -2
  694. package/dist/storage/artifacts/index.d.ts.map +1 -1
  695. package/dist/storage/artifacts/record.d.ts +19 -2
  696. package/dist/storage/artifacts/record.d.ts.map +1 -1
  697. package/dist/storage/artifacts/types.d.ts +87 -8
  698. package/dist/storage/artifacts/types.d.ts.map +1 -1
  699. package/dist/storage/auth/in-memory/auth-storage.d.ts +3 -2
  700. package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
  701. package/dist/storage/auth/in-memory/users.d.ts +7 -3
  702. package/dist/storage/auth/in-memory/users.d.ts.map +1 -1
  703. package/dist/storage/auth/index.d.ts +1 -1
  704. package/dist/storage/auth/index.d.ts.map +1 -1
  705. package/dist/storage/auth/types.d.ts +40 -9
  706. package/dist/storage/auth/types.d.ts.map +1 -1
  707. package/dist/storage/connector-connections/provider.js +1 -1
  708. package/dist/storage/executions/in-memory.d.ts +2 -1
  709. package/dist/storage/executions/in-memory.d.ts.map +1 -1
  710. package/dist/storage/executions/index.d.ts +1 -1
  711. package/dist/storage/executions/index.d.ts.map +1 -1
  712. package/dist/storage/executions/types.d.ts +15 -0
  713. package/dist/storage/executions/types.d.ts.map +1 -1
  714. package/dist/storage/file-upload-sessions/provider.js +15 -12
  715. package/dist/storage/file-upload-sessions/provider.js.map +1 -1
  716. package/dist/storage/index.d.ts +13 -11
  717. package/dist/storage/index.d.ts.map +1 -1
  718. package/dist/storage/index.js +50 -39
  719. package/dist/storage/index.js.map +1 -1
  720. package/dist/storage/internal.d.ts +2 -2
  721. package/dist/storage/internal.d.ts.map +1 -1
  722. package/dist/storage/internal.js +19 -8
  723. package/dist/storage/internal.js.map +1 -1
  724. package/dist/storage/migrations/migrate-storage.d.ts +4 -1
  725. package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
  726. package/dist/storage/migrations/prepare-unique-properties.d.ts +18 -0
  727. package/dist/storage/migrations/prepare-unique-properties.d.ts.map +1 -0
  728. package/dist/storage/objects/guard.d.ts +1 -1
  729. package/dist/storage/objects/guard.d.ts.map +1 -1
  730. package/dist/storage/objects/in-memory/conditional-reader.d.ts +5 -0
  731. package/dist/storage/objects/in-memory/conditional-reader.d.ts.map +1 -0
  732. package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
  733. package/dist/storage/objects/in-memory/read-scope.d.ts +3 -9
  734. package/dist/storage/objects/in-memory/read-scope.d.ts.map +1 -1
  735. package/dist/storage/objects/in-memory/read-source.d.ts +10 -1
  736. package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -1
  737. package/dist/storage/objects/in-memory/scoped-reader.d.ts +14 -0
  738. package/dist/storage/objects/in-memory/scoped-reader.d.ts.map +1 -0
  739. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
  740. package/dist/storage/objects/in-memory/storage.d.ts +36 -1
  741. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
  742. package/dist/storage/objects/index.d.ts +2 -2
  743. package/dist/storage/objects/index.d.ts.map +1 -1
  744. package/dist/storage/objects/read-scope.d.ts +9 -1
  745. package/dist/storage/objects/read-scope.d.ts.map +1 -1
  746. package/dist/storage/objects/types.d.ts +64 -1
  747. package/dist/storage/objects/types.d.ts.map +1 -1
  748. package/dist/storage/ontology/in-memory/index.d.ts +2 -0
  749. package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
  750. package/dist/storage/ontology/in-memory/materializations.d.ts +1 -0
  751. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  752. package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -1
  753. package/dist/storage/ontology/in-memory/unique-values.d.ts +32 -0
  754. package/dist/storage/ontology/in-memory/unique-values.d.ts.map +1 -0
  755. package/dist/storage/ontology/index.d.ts +4 -1
  756. package/dist/storage/ontology/index.d.ts.map +1 -1
  757. package/dist/storage/ontology/materializations.d.ts +34 -1
  758. package/dist/storage/ontology/materializations.d.ts.map +1 -1
  759. package/dist/storage/ontology/provider-work.d.ts +15 -2
  760. package/dist/storage/ontology/provider-work.d.ts.map +1 -1
  761. package/dist/storage/ontology/provider.d.ts +1 -1
  762. package/dist/storage/ontology/provider.d.ts.map +1 -1
  763. package/dist/storage/ontology/provider.js +9 -4
  764. package/dist/storage/ontology/provider.js.map +1 -1
  765. package/dist/storage/ontology/unique-values.d.ts +54 -0
  766. package/dist/storage/ontology/unique-values.d.ts.map +1 -0
  767. package/dist/storage/operation-scope.d.ts +1 -1
  768. package/dist/storage/operation-scope.d.ts.map +1 -1
  769. package/dist/storage/operation-scope.js +1 -1
  770. package/dist/storage/projection-runs/in-memory.d.ts +0 -6
  771. package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
  772. package/dist/storage/projection-runs/provider.js +2 -2
  773. package/dist/storage/share-grants/provider.js +4 -3
  774. package/dist/storage/share-grants/provider.js.map +1 -1
  775. package/dist/storage/types.d.ts +2 -2
  776. package/dist/storage/types.d.ts.map +1 -1
  777. package/dist/storage/workflow-runs/provider.js +15 -12
  778. package/dist/storage/workflow-runs/provider.js.map +1 -1
  779. package/dist/syncs/index.js +42 -39
  780. package/dist/syncs/index.js.map +1 -1
  781. package/dist/testing/agent-approval-storage-contract.d.ts +17 -0
  782. package/dist/testing/agent-approval-storage-contract.d.ts.map +1 -0
  783. package/dist/testing/agent-memory-storage-contract.d.ts +12 -0
  784. package/dist/testing/agent-memory-storage-contract.d.ts.map +1 -0
  785. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  786. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  787. package/dist/testing/ai-limit-storage-contract.d.ts +0 -1
  788. package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
  789. package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -1
  790. package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
  791. package/dist/testing/artifact-storage-contract.d.ts.map +1 -1
  792. package/dist/testing/auth-storage-contract.d.ts +13 -0
  793. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  794. package/dist/testing/broker-contract.d.ts +5 -0
  795. package/dist/testing/broker-contract.d.ts.map +1 -1
  796. package/dist/testing/effective-storage-contract.d.ts.map +1 -1
  797. package/dist/testing/execution-storage-contract.d.ts.map +1 -1
  798. package/dist/testing/file-upload-session-storage-contract.d.ts.map +1 -1
  799. package/dist/testing/index.d.ts +9 -5
  800. package/dist/testing/index.d.ts.map +1 -1
  801. package/dist/testing/index.js +7938 -3743
  802. package/dist/testing/index.js.map +29 -25
  803. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  804. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  805. package/dist/testing/object-conditional-read-scope-contract.d.ts +11 -0
  806. package/dist/testing/object-conditional-read-scope-contract.d.ts.map +1 -0
  807. package/dist/testing/object-query-contract.d.ts +0 -2
  808. package/dist/testing/object-query-contract.d.ts.map +1 -1
  809. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  810. package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
  811. package/dist/testing/queues-contract.d.ts +5 -0
  812. package/dist/testing/queues-contract.d.ts.map +1 -1
  813. package/dist/testing/sandboxes-contract.d.ts.map +1 -1
  814. package/dist/testing/share-grant-storage-contract.d.ts.map +1 -1
  815. package/dist/testing/share-session-storage-contract.d.ts.map +1 -1
  816. package/dist/testing/unique-values-contract.d.ts +21 -0
  817. package/dist/testing/unique-values-contract.d.ts.map +1 -0
  818. package/dist/testing/webhook-execution.d.ts +0 -8
  819. package/dist/testing/webhook-execution.d.ts.map +1 -1
  820. package/dist/testing/webhook-run-storage-contract.d.ts.map +1 -1
  821. package/dist/users/execution.d.ts +40 -0
  822. package/dist/users/execution.d.ts.map +1 -0
  823. package/dist/users/index.d.ts +3 -0
  824. package/dist/users/index.d.ts.map +1 -0
  825. package/dist/webhooks/internal.js +34 -31
  826. package/dist/webhooks/internal.js.map +2 -2
  827. package/dist/workers/index.js +4 -6
  828. package/dist/workers/index.js.map +4 -4
  829. package/dist/workers/queue-worker.d.ts +0 -2
  830. package/dist/workers/queue-worker.d.ts.map +1 -1
  831. package/dist/workers/worker.d.ts +0 -2
  832. package/dist/workers/worker.d.ts.map +1 -1
  833. package/dist/workflows/builders.d.ts.map +1 -1
  834. package/dist/workflows/index.js +67 -63
  835. package/dist/workflows/index.js.map +1 -1
  836. package/dist/workflows/request.d.ts +12 -1
  837. package/dist/workflows/request.d.ts.map +1 -1
  838. package/dist/workflows/types.d.ts +6 -2
  839. package/dist/workflows/types.d.ts.map +1 -1
  840. package/dist/workflows/validation.d.ts.map +1 -1
  841. package/package.json +1 -1
  842. package/src/actions/commit-edits.ts +6 -1
  843. package/src/actions/execution.ts +42 -15
  844. package/src/actions/read-facade.ts +33 -0
  845. package/src/actions/request.ts +224 -71
  846. package/src/actions/run/context.ts +47 -1
  847. package/src/actions/run/execute.ts +13 -6
  848. package/src/actions/run/executor.ts +11 -2
  849. package/src/actions/run/normalize.ts +12 -2
  850. package/src/actions/run/phases.ts +2 -0
  851. package/src/actions/run/run-action.ts +12 -3
  852. package/src/actions/run/signals.ts +3 -9
  853. package/src/actions/run/types.ts +17 -1
  854. package/src/actions/run-authorization.ts +72 -0
  855. package/src/actions/types/context.ts +20 -3
  856. package/src/actions/validators.ts +19 -8
  857. package/src/activity/README.md +5 -2
  858. package/src/activity/timeline.ts +39 -78
  859. package/src/agents/accounting.ts +59 -0
  860. package/src/agents/adapters.ts +10 -0
  861. package/src/agents/agent-mail.ts +29 -0
  862. package/src/agents/api-gateway.ts +14 -3
  863. package/src/agents/approval-continuation.ts +48 -0
  864. package/src/agents/approval-executor.ts +318 -0
  865. package/src/agents/approval-outcome.ts +59 -0
  866. package/src/agents/approvals.ts +566 -0
  867. package/src/agents/authority.ts +24 -1
  868. package/src/agents/builders.ts +5 -3
  869. package/src/agents/cancel.ts +103 -0
  870. package/src/agents/child-question.ts +46 -0
  871. package/src/agents/children.ts +404 -0
  872. package/src/agents/context-compaction.ts +12 -0
  873. package/src/agents/errors.ts +31 -0
  874. package/src/agents/execution.ts +788 -90
  875. package/src/agents/fork.ts +158 -0
  876. package/src/agents/ids.ts +18 -6
  877. package/src/agents/index.ts +55 -0
  878. package/src/agents/memory-execution.ts +186 -0
  879. package/src/agents/memory.ts +178 -0
  880. package/src/agents/message.ts +57 -0
  881. package/src/agents/model-loop.ts +93 -6
  882. package/src/agents/model-routing.ts +193 -0
  883. package/src/agents/participants.ts +213 -0
  884. package/src/agents/reference.ts +2 -0
  885. package/src/agents/request.ts +398 -69
  886. package/src/agents/run-scope.ts +134 -0
  887. package/src/agents/streams/index.ts +5 -0
  888. package/src/agents/streams/internal.ts +1 -0
  889. package/src/agents/streams/protocol.ts +385 -7
  890. package/src/agents/subagent-runs.ts +41 -0
  891. package/src/agents/thread-access.ts +137 -0
  892. package/src/agents/tool-definition.ts +5 -3
  893. package/src/agents/types.ts +35 -10
  894. package/src/agents/validation.ts +2 -0
  895. package/src/artifacts/access.ts +125 -0
  896. package/src/artifacts/canvas.ts +369 -0
  897. package/src/artifacts/csv.ts +10 -0
  898. package/src/artifacts/errors.ts +12 -1
  899. package/src/artifacts/execution.ts +436 -36
  900. package/src/artifacts/formula/check.ts +171 -0
  901. package/src/artifacts/formula/evaluate.ts +288 -0
  902. package/src/artifacts/formula/index.ts +199 -0
  903. package/src/artifacts/formula/parser.ts +357 -0
  904. package/src/artifacts/frames/assets.ts +35 -19
  905. package/src/artifacts/frames/entries.ts +35 -0
  906. package/src/artifacts/frames/grants.ts +10 -9
  907. package/src/artifacts/frames/index.ts +8 -2
  908. package/src/artifacts/frames/kit.ts +191 -14
  909. package/src/artifacts/frames/probe.ts +66 -18
  910. package/src/artifacts/frames/protocol.ts +164 -10
  911. package/src/artifacts/frames/runtime.ts +273 -28
  912. package/src/artifacts/index.ts +66 -2
  913. package/src/artifacts/kinds.ts +1 -1
  914. package/src/artifacts/limits.ts +31 -0
  915. package/src/artifacts/live-sheet.ts +345 -0
  916. package/src/artifacts/outline.ts +34 -1
  917. package/src/artifacts/publish/index.ts +2 -0
  918. package/src/artifacts/publish/publish.ts +120 -34
  919. package/src/artifacts/publish/queries.ts +336 -0
  920. package/src/artifacts/publish/references.ts +18 -13
  921. package/src/artifacts/publish/validate/canvas.ts +118 -0
  922. package/src/artifacts/publish/validate/html.ts +78 -0
  923. package/src/artifacts/publish/validate/page.ts +65 -0
  924. package/src/artifacts/publish/validate/sheet.ts +115 -69
  925. package/src/artifacts/publish/validate/slides.ts +11 -63
  926. package/src/artifacts/queries.ts +512 -0
  927. package/src/artifacts/resolve.ts +20 -5
  928. package/src/artifacts/run-query.ts +212 -0
  929. package/src/artifacts/serialize-query.ts +25 -0
  930. package/src/artifacts/sheet-rules.ts +180 -0
  931. package/src/artifacts/tones.ts +20 -0
  932. package/src/artifacts/workbook.ts +374 -15
  933. package/src/auth/index.ts +4 -0
  934. package/src/auth/member-events.ts +114 -0
  935. package/src/auth/profile.ts +118 -0
  936. package/src/auth/runtime.ts +190 -9
  937. package/src/auth/strategy.ts +3 -0
  938. package/src/auth/types.ts +32 -0
  939. package/src/authorization/decision.ts +47 -0
  940. package/src/authorization/event-visibility.ts +17 -16
  941. package/src/authorization/grant-kinds.ts +32 -0
  942. package/src/authorization/index.ts +6 -1
  943. package/src/authorization/resolve.ts +58 -1
  944. package/src/authorization/run-visibility.ts +8 -1
  945. package/src/authorization/types.ts +14 -0
  946. package/src/errors/catalog.ts +26 -1
  947. package/src/errors/internal.ts +17 -8
  948. package/src/events/definitions.ts +26 -0
  949. package/src/events/execution.ts +43 -6
  950. package/src/events/index.ts +10 -1
  951. package/src/events/scope.ts +2 -0
  952. package/src/events/selectors/builder.ts +50 -0
  953. package/src/events/selectors/index.ts +4 -0
  954. package/src/events/selectors/types.ts +32 -1
  955. package/src/events/service.ts +55 -2
  956. package/src/events/types/index.ts +10 -0
  957. package/src/events/types/users.ts +73 -0
  958. package/src/events/view-conditions.ts +241 -0
  959. package/src/execution/agent.ts +25 -0
  960. package/src/execution/authorization.ts +70 -0
  961. package/src/execution/authorized-object-reader.ts +238 -32
  962. package/src/execution/lineage.ts +14 -0
  963. package/src/execution/object-reader-ontology.ts +11 -14
  964. package/src/execution/object-reader-security.ts +134 -10
  965. package/src/execution/object-reader-users.ts +122 -0
  966. package/src/execution/preparation.ts +78 -0
  967. package/src/execution/request.ts +2 -0
  968. package/src/execution/unique-lookup.ts +55 -0
  969. package/src/execution/visible-objects.ts +26 -0
  970. package/src/http/api-routes.ts +206 -7
  971. package/src/index.ts +99 -2
  972. package/src/materialization/errors.ts +37 -0
  973. package/src/materialization/event-envelopes.ts +11 -3
  974. package/src/materialization/index.ts +1 -0
  975. package/src/materialization/model.ts +24 -4
  976. package/src/materializer/README.md +7 -1
  977. package/src/materializer/edits/commit.ts +56 -12
  978. package/src/materializer/edits/load-state.ts +15 -7
  979. package/src/materializer/edits/operations.ts +12 -0
  980. package/src/materializer/edits/plan.ts +2 -0
  981. package/src/materializer/edits/unique-values.ts +255 -0
  982. package/src/materializer/edits/working-state.ts +8 -1
  983. package/src/materializer/execution/work-records.ts +47 -0
  984. package/src/materializer/projections/finish-run.ts +0 -1
  985. package/src/materializer/projections/replace.ts +1 -1
  986. package/src/materializer/projections/replacement-plan.ts +4 -1
  987. package/src/materializer/projections/source-materialization.ts +2 -1
  988. package/src/materializer/shared/normalize.ts +37 -6
  989. package/src/materializer/shared/projection-run.ts +1 -2
  990. package/src/materializer/telemetry/append.ts +14 -17
  991. package/src/materializer/telemetry/plan.ts +2 -0
  992. package/src/models/audio/catalog.ts +89 -10
  993. package/src/models/audio/errors.ts +18 -1
  994. package/src/models/audio/runtime.ts +10 -13
  995. package/src/models/audio/speech.ts +261 -0
  996. package/src/models/audio/types.ts +97 -0
  997. package/src/models/calls.ts +100 -0
  998. package/src/models/catalog-index.ts +21 -2
  999. package/src/models/catalog.ts +211 -35
  1000. package/src/models/decision/runtime.ts +21 -22
  1001. package/src/models/decision/validation.ts +4 -1
  1002. package/src/models/definitions.ts +57 -8
  1003. package/src/models/events.ts +72 -1
  1004. package/src/models/execution/README.md +34 -5
  1005. package/src/models/execution/binding.ts +3 -1
  1006. package/src/models/execution/embedding.ts +1 -0
  1007. package/src/models/execution/index.ts +5 -0
  1008. package/src/models/execution/model-call-accounting.ts +3 -1
  1009. package/src/models/execution/model-call-recorder.ts +29 -1
  1010. package/src/models/execution/usage.ts +8 -0
  1011. package/src/models/execution.ts +20 -22
  1012. package/src/models/generation-types.ts +8 -1
  1013. package/src/models/image/catalog.ts +89 -0
  1014. package/src/models/image/errors.ts +19 -0
  1015. package/src/models/image/runtime.ts +335 -0
  1016. package/src/models/image/types.ts +111 -0
  1017. package/src/models/index.ts +38 -4
  1018. package/src/models/{audio/file.ts → input-file.ts} +22 -13
  1019. package/src/models/language-model.ts +13 -0
  1020. package/src/models/pricing.ts +263 -42
  1021. package/src/models/rate-card.ts +161 -12
  1022. package/src/objects/authorized-ontology-view.ts +1 -0
  1023. package/src/objects/conditional-writes.ts +109 -0
  1024. package/src/objects/execution.ts +4 -0
  1025. package/src/objects/index.ts +8 -0
  1026. package/src/objects/link/authorization.ts +12 -3
  1027. package/src/objects/link/endpoints.ts +42 -11
  1028. package/src/objects/link/remove.ts +25 -10
  1029. package/src/objects/link/upsert-batch.ts +2 -0
  1030. package/src/objects/link/upsert.ts +18 -12
  1031. package/src/objects/materializer-adapter.ts +55 -18
  1032. package/src/objects/object/delete.ts +24 -7
  1033. package/src/objects/object/upsert-batch.ts +44 -14
  1034. package/src/objects/object/upsert.ts +23 -5
  1035. package/src/objects/query/current-user.ts +76 -0
  1036. package/src/objects/query/executor.ts +39 -103
  1037. package/src/objects/query/explain.ts +20 -7
  1038. package/src/objects/query/index.ts +2 -0
  1039. package/src/objects/query/ir.ts +20 -0
  1040. package/src/objects/query/links.ts +8 -0
  1041. package/src/objects/query/matches-predicate.ts +108 -0
  1042. package/src/objects/query/normalize.ts +50 -19
  1043. package/src/objects/query/scalar-values.ts +19 -3
  1044. package/src/objects/query/user-expansions.ts +65 -0
  1045. package/src/objects/query/validate.ts +248 -10
  1046. package/src/objects/runtime-batch.ts +8 -2
  1047. package/src/objects/sdk/object-set.ts +12 -1
  1048. package/src/objects/sdk/query-builder.ts +39 -8
  1049. package/src/objects/sdk/query-executor.ts +6 -0
  1050. package/src/objects/serialize.ts +79 -0
  1051. package/src/objects/unique-violation.ts +59 -0
  1052. package/src/objects/vectors/handle.ts +3 -3
  1053. package/src/ontology/builders.ts +3 -0
  1054. package/src/ontology/docs-markdown.ts +1 -0
  1055. package/src/ontology/index.ts +2 -2
  1056. package/src/ontology/json-schema.ts +4 -0
  1057. package/src/ontology/primitives.ts +21 -8
  1058. package/src/ontology/registry.ts +16 -0
  1059. package/src/ontology/types.ts +9 -0
  1060. package/src/ontology/unique-values.ts +84 -0
  1061. package/src/ontology/user-ref.ts +39 -0
  1062. package/src/ontology/validation/properties.ts +43 -0
  1063. package/src/ontology/validation/schema.ts +9 -1
  1064. package/src/projections/registry.ts +16 -10
  1065. package/src/projections/revision.ts +112 -45
  1066. package/src/projections/run-dispatch.ts +38 -25
  1067. package/src/projections/types.ts +2 -0
  1068. package/src/query.ts +5 -0
  1069. package/src/rules/execution.ts +43 -11
  1070. package/src/runtime/ai-cost.ts +30 -0
  1071. package/src/runtime/ai-usage.ts +32 -1
  1072. package/src/runtime/host.ts +18 -1
  1073. package/src/runtime/index.ts +2 -0
  1074. package/src/runtime/resolve-definitions.ts +3 -0
  1075. package/src/runtime/sixb.ts +35 -8
  1076. package/src/runtime/types.ts +99 -9
  1077. package/src/schedules/builders.ts +3 -1
  1078. package/src/schedules/runtime.ts +6 -0
  1079. package/src/schedules/validation.ts +23 -1
  1080. package/src/security/README.md +62 -0
  1081. package/src/security/grants.ts +155 -10
  1082. package/src/security/index.ts +3 -1
  1083. package/src/security/project.ts +6 -1
  1084. package/src/security/registry.ts +32 -7
  1085. package/src/security/types.ts +54 -9
  1086. package/src/security/validation.ts +27 -11
  1087. package/src/security/view-conditions.ts +215 -0
  1088. package/src/shares/execution.ts +43 -10
  1089. package/src/storage/action-runs/types.ts +2 -0
  1090. package/src/storage/agents/errors.ts +3 -0
  1091. package/src/storage/agents/in-memory.ts +779 -32
  1092. package/src/storage/agents/index.ts +42 -0
  1093. package/src/storage/agents/provider.ts +733 -8
  1094. package/src/storage/agents/types.ts +620 -12
  1095. package/src/storage/ai-cost/analytics.ts +60 -7
  1096. package/src/storage/ai-cost/codec.ts +6 -1
  1097. package/src/storage/ai-cost/groups.ts +44 -1
  1098. package/src/storage/ai-cost/index.ts +1 -0
  1099. package/src/storage/ai-cost/provider.ts +2 -0
  1100. package/src/storage/ai-cost/types.ts +18 -1
  1101. package/src/storage/ai-cost/validation.ts +39 -12
  1102. package/src/storage/ai-limits/provider.ts +4 -7
  1103. package/src/storage/ai-usage/in-memory.ts +28 -1
  1104. package/src/storage/ai-usage/index.ts +9 -1
  1105. package/src/storage/ai-usage/record.ts +44 -7
  1106. package/src/storage/ai-usage/types.ts +38 -0
  1107. package/src/storage/ai-usage/usage.ts +15 -1
  1108. package/src/storage/artifacts/errors.ts +13 -1
  1109. package/src/storage/artifacts/in-memory.ts +156 -8
  1110. package/src/storage/artifacts/index.ts +6 -1
  1111. package/src/storage/artifacts/record.ts +61 -1
  1112. package/src/storage/artifacts/types.ts +92 -8
  1113. package/src/storage/auth/in-memory/auth-storage.ts +27 -2
  1114. package/src/storage/auth/in-memory/users.ts +40 -6
  1115. package/src/storage/auth/index.ts +1 -0
  1116. package/src/storage/auth/types.ts +43 -7
  1117. package/src/storage/executions/in-memory.ts +32 -0
  1118. package/src/storage/executions/index.ts +2 -0
  1119. package/src/storage/executions/types.ts +17 -0
  1120. package/src/storage/index.ts +69 -1
  1121. package/src/storage/internal.ts +9 -1
  1122. package/src/storage/migrations/migrate-storage.ts +8 -1
  1123. package/src/storage/migrations/prepare-unique-properties.ts +161 -0
  1124. package/src/storage/objects/guard.ts +7 -3
  1125. package/src/storage/objects/in-memory/conditional-reader.ts +72 -0
  1126. package/src/storage/objects/in-memory/query.ts +4 -105
  1127. package/src/storage/objects/in-memory/read-scope.ts +15 -14
  1128. package/src/storage/objects/in-memory/read-source.ts +11 -1
  1129. package/src/storage/objects/in-memory/scoped-reader.ts +243 -0
  1130. package/src/storage/objects/in-memory/selected-reader.ts +6 -231
  1131. package/src/storage/objects/in-memory/storage.ts +183 -1
  1132. package/src/storage/objects/index.ts +9 -1
  1133. package/src/storage/objects/read-scope.ts +191 -0
  1134. package/src/storage/objects/types.ts +68 -1
  1135. package/src/storage/ontology/in-memory/index.ts +3 -0
  1136. package/src/storage/ontology/in-memory/materializations.ts +35 -0
  1137. package/src/storage/ontology/in-memory/replacement-plans.ts +4 -0
  1138. package/src/storage/ontology/in-memory/unique-values.ts +62 -0
  1139. package/src/storage/ontology/index.ts +10 -0
  1140. package/src/storage/ontology/materializations.ts +35 -1
  1141. package/src/storage/ontology/provider-work.ts +76 -0
  1142. package/src/storage/ontology/provider.ts +3 -0
  1143. package/src/storage/ontology/unique-values.ts +56 -0
  1144. package/src/storage/operation-scope.ts +9 -1
  1145. package/src/storage/projection-runs/in-memory.ts +3 -35
  1146. package/src/storage/types.ts +2 -0
  1147. package/src/testing/agent-approval-storage-contract.ts +1117 -0
  1148. package/src/testing/agent-memory-storage-contract.ts +400 -0
  1149. package/src/testing/agent-storage-contract.ts +1188 -33
  1150. package/src/testing/ai-cost-storage-contract.ts +31 -1
  1151. package/src/testing/ai-limit-storage-contract.ts +9 -7
  1152. package/src/testing/ai-model-call-groups-contract.ts +76 -0
  1153. package/src/testing/ai-usage-storage-contract.ts +120 -13
  1154. package/src/testing/artifact-storage-contract.ts +338 -4
  1155. package/src/testing/auth-storage-contract.ts +550 -73
  1156. package/src/testing/broker-contract.ts +28 -23
  1157. package/src/testing/effective-storage-contract.ts +3 -8
  1158. package/src/testing/execution-storage-contract.ts +53 -0
  1159. package/src/testing/file-upload-session-storage-contract.ts +12 -24
  1160. package/src/testing/index.ts +17 -4
  1161. package/src/testing/lake-storage-contract.ts +22 -28
  1162. package/src/testing/materializer-storage-contract.ts +36 -9
  1163. package/src/testing/object-conditional-read-scope-contract.ts +634 -0
  1164. package/src/testing/object-query-contract.ts +386 -186
  1165. package/src/testing/ontology-storage-contract.ts +230 -21
  1166. package/src/testing/projection-run-storage-contract.ts +8 -18
  1167. package/src/testing/queues-contract.ts +39 -70
  1168. package/src/testing/sandboxes-contract.ts +3 -14
  1169. package/src/testing/share-grant-storage-contract.ts +13 -16
  1170. package/src/testing/share-session-storage-contract.ts +4 -14
  1171. package/src/testing/unique-values-contract.ts +907 -0
  1172. package/src/testing/webhook-execution.ts +1 -1
  1173. package/src/testing/webhook-run-storage-contract.ts +6 -9
  1174. package/src/users/execution.ts +131 -0
  1175. package/src/users/index.ts +2 -0
  1176. package/src/workers/queue-worker.ts +1 -3
  1177. package/src/workers/worker.ts +1 -3
  1178. package/src/workflows/builders.ts +6 -0
  1179. package/src/workflows/request.ts +46 -8
  1180. package/src/workflows/types.ts +6 -2
  1181. package/src/workflows/validation.ts +23 -9
  1182. package/dist/chunk-29yx306f.js.map +0 -22
  1183. package/dist/chunk-3jms7je7.js +0 -14
  1184. package/dist/chunk-3jms7je7.js.map +0 -10
  1185. package/dist/chunk-3qct2mdc.js +0 -297
  1186. package/dist/chunk-3qct2mdc.js.map +0 -12
  1187. package/dist/chunk-48qjhh6v.js.map +0 -13
  1188. package/dist/chunk-4as3wt1c.js.map +0 -12
  1189. package/dist/chunk-5948n82c.js.map +0 -10
  1190. package/dist/chunk-5hx48dnn.js.map +0 -14
  1191. package/dist/chunk-6rqgmkde.js.map +0 -29
  1192. package/dist/chunk-6x0pqh32.js.map +0 -10
  1193. package/dist/chunk-7n30ybym.js +0 -3
  1194. package/dist/chunk-7n440zgt.js +0 -261
  1195. package/dist/chunk-7n440zgt.js.map +0 -12
  1196. package/dist/chunk-7q8t23v4.js +0 -467
  1197. package/dist/chunk-7q8t23v4.js.map +0 -14
  1198. package/dist/chunk-8frc8a4j.js.map +0 -20
  1199. package/dist/chunk-918wwnaa.js.map +0 -68
  1200. package/dist/chunk-91mg3nj9.js.map +0 -12
  1201. package/dist/chunk-96yw3pwd.js.map +0 -10
  1202. package/dist/chunk-9j4jw7as.js.map +0 -14
  1203. package/dist/chunk-9k93ah50.js.map +0 -11
  1204. package/dist/chunk-9kgkfg6v.js +0 -502
  1205. package/dist/chunk-9kgkfg6v.js.map +0 -14
  1206. package/dist/chunk-akzryx9h.js.map +0 -100
  1207. package/dist/chunk-arns890k.js.map +0 -10
  1208. package/dist/chunk-bk9svbcq.js.map +0 -49
  1209. package/dist/chunk-c06hmxyy.js +0 -31
  1210. package/dist/chunk-c06hmxyy.js.map +0 -10
  1211. package/dist/chunk-c1rxbz5y.js.map +0 -12
  1212. package/dist/chunk-cn0fwwhy.js.map +0 -19
  1213. package/dist/chunk-dhcv7yxc.js.map +0 -11
  1214. package/dist/chunk-dhdha526.js.map +0 -10
  1215. package/dist/chunk-dvd2fp9q.js.map +0 -13
  1216. package/dist/chunk-e6k4thh5.js.map +0 -19
  1217. package/dist/chunk-ere85b8y.js.map +0 -15
  1218. package/dist/chunk-g257jwnc.js.map +0 -12
  1219. package/dist/chunk-hwksyjks.js.map +0 -11
  1220. package/dist/chunk-k43ct2ke.js.map +0 -12
  1221. package/dist/chunk-nn5xnx3s.js.map +0 -40
  1222. package/dist/chunk-pbcbn83d.js.map +0 -14
  1223. package/dist/chunk-pqajwytd.js +0 -68
  1224. package/dist/chunk-pqajwytd.js.map +0 -11
  1225. package/dist/chunk-qczk96d9.js.map +0 -11
  1226. package/dist/chunk-rdghfsss.js +0 -39
  1227. package/dist/chunk-rdghfsss.js.map +0 -10
  1228. package/dist/chunk-rj69qcrd.js.map +0 -11
  1229. package/dist/chunk-v4jbb3rs.js.map +0 -10
  1230. package/dist/chunk-yxd3nnqt.js.map +0 -11
  1231. package/dist/events/toStoredEvent.d.ts +0 -9
  1232. package/dist/events/toStoredEvent.d.ts.map +0 -1
  1233. package/dist/models/audio/file.d.ts +0 -9
  1234. package/dist/models/audio/file.d.ts.map +0 -1
  1235. package/src/events/toStoredEvent.ts +0 -33
  1236. /package/dist/{chunk-mfs23znk.js.map → chunk-07kkp2e1.js.map} +0 -0
  1237. /package/dist/{chunk-z58tm0hm.js.map → chunk-0phpbbvm.js.map} +0 -0
  1238. /package/dist/{chunk-e17zdm62.js.map → chunk-1t6k1avb.js.map} +0 -0
  1239. /package/dist/{chunk-kge7k6ey.js.map → chunk-2fn60nvs.js.map} +0 -0
  1240. /package/dist/{chunk-y0c4e6ex.js.map → chunk-3gbefjg5.js.map} +0 -0
  1241. /package/dist/{chunk-cy4mbddw.js.map → chunk-48jezz3j.js.map} +0 -0
  1242. /package/dist/{chunk-twe4dx8p.js → chunk-5tfev0fv.js} +0 -0
  1243. /package/dist/{chunk-twe4dx8p.js.map → chunk-5tfev0fv.js.map} +0 -0
  1244. /package/dist/{chunk-447a5c0p.js.map → chunk-6n69k945.js.map} +0 -0
  1245. /package/dist/{chunk-0bphap9y.js.map → chunk-6p0pastb.js.map} +0 -0
  1246. /package/dist/{chunk-431pyp2c.js.map → chunk-6y0mkhex.js.map} +0 -0
  1247. /package/dist/{chunk-s7jg7pmn.js.map → chunk-bab05bhg.js.map} +0 -0
  1248. /package/dist/{chunk-q5e5tv4b.js.map → chunk-c844dkwd.js.map} +0 -0
  1249. /package/dist/{chunk-cfj9dfbb.js.map → chunk-d2m879s4.js.map} +0 -0
  1250. /package/dist/{chunk-q7gn29y3.js.map → chunk-dp0cdtj2.js.map} +0 -0
  1251. /package/dist/{chunk-br3k6qbf.js.map → chunk-fm62y49k.js.map} +0 -0
  1252. /package/dist/{chunk-vvxtn22d.js.map → chunk-g663fahq.js.map} +0 -0
  1253. /package/dist/{chunk-rmakanzx.js.map → chunk-h33shhq6.js.map} +0 -0
  1254. /package/dist/{chunk-d09e3rax.js.map → chunk-hwarjrgf.js.map} +0 -0
  1255. /package/dist/{chunk-vf57cr4t.js.map → chunk-hyesv9dv.js.map} +0 -0
  1256. /package/dist/{chunk-5vems3nx.js.map → chunk-m2nevja0.js.map} +0 -0
  1257. /package/dist/{chunk-x9v4cx1d.js.map → chunk-m36fw8ft.js.map} +0 -0
  1258. /package/dist/{chunk-a40ad1ft.js.map → chunk-mbsbxarb.js.map} +0 -0
  1259. /package/dist/{chunk-6aawea28.js.map → chunk-n8q5j6y5.js.map} +0 -0
  1260. /package/dist/{chunk-d7dnxdep.js.map → chunk-n9zpx9c6.js.map} +0 -0
  1261. /package/dist/{chunk-xvsc5m8n.js.map → chunk-npcr0228.js.map} +0 -0
  1262. /package/dist/{chunk-y5tah2kf.js.map → chunk-q4pmvkg0.js.map} +0 -0
  1263. /package/dist/{chunk-d5rjr8c0.js.map → chunk-vabga7fk.js.map} +0 -0
@@ -1,32 +1,69 @@
1
1
  import { AGENT_MESSAGE_CONTENT_VERSION } from "../../agents/message"
2
- import { principalsEqual } from "../../auth"
2
+ import { type Principal, principalsEqual } from "../../auth"
3
3
  import { parseSixbFailure } from "../../errors/internal"
4
4
  import type { SixbFailure } from "../../errors/types"
5
5
  import type { ExecutionStorage } from "../executions"
6
6
  import { AgentStorageError } from "./errors"
7
7
  import {
8
+ agentApprovalCallKey,
9
+ agentApprovalClaimable,
10
+ agentApprovalHoldsRun,
11
+ agentApprovalMatches,
12
+ agentApprovalRepairable,
13
+ agentApprovalStops,
8
14
  agentContextCheckpointMatchesCreateInput,
15
+ agentMemoryConflicts,
16
+ agentMemoryHistoryCutoff,
17
+ agentRunMayHoldCalls,
18
+ assertAgentApprovalCaller,
19
+ assertAgentApprovalModeInput,
9
20
  assertAgentContextCheckpointAnchors,
10
21
  assertAgentContextCheckpointAuthority,
11
22
  assertAgentContextCheckpointReplayState,
12
23
  assertAgentRunExecution,
24
+ assertAgentRunFinishPayload,
25
+ assertAwaitingApprovalFinish,
13
26
  assertConversationAgentRunSpec,
27
+ assertConversationThreadRow,
14
28
  assertCreateAgentContextCheckpointInput,
15
29
  assertCreateSubagentRunInput,
16
- assertSubagentRunResult,
30
+ assertRequestAgentApprovalInput,
31
+ assertSaveAgentMemoryInput,
32
+ assertSubagentThreadTakesRun,
33
+ compareAgentMemoryPaths,
34
+ compareAgentThreadParticipants,
35
+ countsAsThreadMessage,
36
+ LIVE_AGENT_APPROVAL_STATUSES,
37
+ newAgentApprovalRecord,
38
+ newSubagentThreadRecord,
39
+ participantsToAdd,
40
+ planAgentThreadFork,
41
+ remapArtifactIds,
17
42
  snapshotAgentThreadSandboxParams,
18
43
  subagentRunMatchesCreateInput,
19
44
  transitionAgentThreadSandbox,
20
45
  } from "./provider"
21
46
  import type {
47
+ AddAgentThreadParticipantsInput,
48
+ AgentApprovalCursor,
49
+ AgentApprovalMode,
50
+ AgentApprovalModeStore,
51
+ AgentApprovalOutcome,
52
+ AgentApprovalRecord,
53
+ AgentApprovalStore,
22
54
  AgentContextCheckpointRecord,
23
55
  AgentContextCheckpointStore,
56
+ AgentMemoryChange,
57
+ AgentMemoryRepoRecord,
58
+ AgentMemoryRevisionRecord,
59
+ AgentMemoryStore,
24
60
  AgentMessageRecord,
25
61
  AgentMessageStore,
26
62
  AgentRunFailureCode,
27
63
  AgentRunRecord,
28
64
  AgentRunStore,
29
65
  AgentStorage,
66
+ AgentThreadParticipantRecord,
30
67
  AgentThreadRecord,
31
68
  AgentThreadSandboxState,
32
69
  AgentThreadStore,
@@ -37,17 +74,36 @@ import type {
37
74
  CreateAgentRunInput,
38
75
  CreateAgentThreadInput,
39
76
  CreateSubagentRunInput,
77
+ DecideAgentApprovalInput,
78
+ DecideAgentApprovalResult,
40
79
  DeleteAgentMessagesByRunInput,
41
80
  FinishAgentRunInput,
42
81
  FinishQueuedAgentRunInput,
82
+ ForkAgentThreadInput,
83
+ ListAgentApprovalsInput,
84
+ ListAgentApprovalsResult,
85
+ ListAgentMemoryRevisionsInput,
86
+ ListAgentMemoryRevisionsResult,
43
87
  ListAgentMessagesInput,
44
88
  ListAgentMessagesResult,
45
89
  ListAgentRunsInput,
46
90
  ListAgentRunsResult,
91
+ ListAgentThreadChildrenInput,
92
+ ListAgentThreadParticipantsInput,
47
93
  ListAgentThreadsInput,
48
94
  ListAgentThreadsResult,
95
+ ListThreadSubagentsInput,
96
+ MarkAgentApprovalsReportedInput,
49
97
  ReclaimAgentRunInput,
98
+ RemoveAgentThreadParticipantInput,
99
+ RequestAgentApprovalInput,
100
+ RequestAgentApprovalResult,
101
+ SaveAgentMemoryInput,
102
+ SaveAgentMemoryResult,
103
+ SettleAgentApprovalsInput,
50
104
  StartAgentRunInput,
105
+ StopAgentApprovalsInput,
106
+ StopAgentApprovalsResult,
51
107
  SubagentRunRecord,
52
108
  TransitionAgentThreadSandboxInput,
53
109
  } from "./types"
@@ -98,23 +154,41 @@ function applyWindow<T>(rows: T[], offset = 0, limit?: number): Window<T> {
98
154
  }
99
155
 
100
156
  /**
101
- * Shared in-memory state behind the four sub-stores. They are tiered for ergonomics
157
+ * Shared in-memory state behind the sub-stores. They are tiered for ergonomics
102
158
  * (`storage.runs.create(...)`), but several operations span tables — creating/finishing a run
103
159
  * updates the thread anchor, appending a message bumps thread stats, and checkpoint creation reads
104
160
  * run/thread/message anchors — so they all read and write the same maps through this object.
105
161
  */
106
162
  interface AgentStoreState {
107
163
  readonly threads: Map<string, AgentThreadRecord>
164
+ /** By thread key; each thread's participants in the order they were added. */
165
+ readonly participants: Map<string, AgentThreadParticipantRecord[]>
108
166
  readonly runs: Map<string, AgentRunRecord>
109
167
  readonly messages: Map<string, AgentMessageRecord>
110
168
  readonly checkpoints: Map<string, AgentContextCheckpointRecord>
169
+ readonly memory: Map<string, StoredAgentMemoryRepo>
170
+ readonly approvals: Map<string, AgentApprovalRecord>
171
+ /** By `[projectId, principal]` for a default, `[projectId, threadId, principal]` for a thread. */
172
+ readonly approvalModes: Map<string, AgentApprovalMode>
173
+ }
174
+
175
+ /** A memory repo as its two SQL tables hold it: revisions, and the file versions each wrote. */
176
+ interface StoredAgentMemoryRepo {
177
+ /** Oldest first. */
178
+ readonly revisions: readonly Omit<AgentMemoryRevisionRecord, "changes">[]
179
+ /** In insertion order, so by revision. `contents: null` deleted the path. */
180
+ readonly files: readonly (AgentMemoryChange & { readonly revision: number })[]
111
181
  }
112
182
 
113
183
  export interface InMemoryAgentStorageSnapshot {
114
184
  readonly threads: Map<string, AgentThreadRecord>
185
+ readonly participants: Map<string, AgentThreadParticipantRecord[]>
115
186
  readonly runs: Map<string, AgentRunRecord>
116
187
  readonly messages: Map<string, AgentMessageRecord>
117
188
  readonly checkpoints: Map<string, AgentContextCheckpointRecord>
189
+ readonly memory: Map<string, StoredAgentMemoryRepo>
190
+ readonly approvals: Map<string, AgentApprovalRecord>
191
+ readonly approvalModes: Map<string, AgentApprovalMode>
118
192
  }
119
193
 
120
194
  // ── threads ───────────────────────────────────────────────────────────────────────────────────
@@ -154,6 +228,7 @@ class InMemoryAgentThreadStore implements AgentThreadStore {
154
228
  const record: AgentThreadRecord = {
155
229
  id: input.id,
156
230
  projectId: input.projectId,
231
+ kind: "conversation",
157
232
  ownerPrincipal: clone(input.ownerPrincipal),
158
233
  ...(sandboxParams === undefined ? {} : { sandboxParams }),
159
234
  ...(input.title === undefined ? {} : { title: input.title }),
@@ -168,6 +243,74 @@ class InMemoryAgentThreadStore implements AgentThreadStore {
168
243
  return clone(record)
169
244
  }
170
245
 
246
+ async fork(input: ForkAgentThreadInput): Promise<AgentThreadRecord> {
247
+ // No `await` between reading the source and writing the fork: one in-memory critical section.
248
+ const source = this.state.threads.get(key(input.projectId, input.sourceThreadId))
249
+ if (!source) {
250
+ throw new AgentStorageError(
251
+ "thread_not_found",
252
+ `[Sixb] Agent thread '${input.sourceThreadId}' not found for project '${input.projectId}'.`
253
+ )
254
+ }
255
+ assertConversationThreadRow(source, "can be forked")
256
+
257
+ const forkKey = key(input.projectId, input.id)
258
+ if (this.state.threads.has(forkKey)) {
259
+ throw new AgentStorageError(
260
+ "duplicate_id",
261
+ `[Sixb] Agent thread '${input.id}' already exists for project '${input.projectId}'.`
262
+ )
263
+ }
264
+
265
+ const activeRun =
266
+ source.activeRunId === null
267
+ ? undefined
268
+ : this.state.runs.get(key(input.projectId, source.activeRunId))
269
+
270
+ const messages = [...this.state.messages.values()]
271
+ .filter((message) => message.projectId === input.projectId)
272
+ .filter((message) => message.threadId === source.id)
273
+ .sort((left, right) => left.seq - right.seq)
274
+
275
+ const checkpoints = [...this.state.checkpoints.values()]
276
+ .filter((checkpoint) => checkpoint.projectId === input.projectId)
277
+ .filter((checkpoint) => checkpoint.threadId === source.id)
278
+ .sort(compareLatestCheckpoints)
279
+
280
+ const plan = planAgentThreadFork(input, {
281
+ ...(activeRun?.kind === "conversation"
282
+ ? { triggerMessageId: activeRun.triggerMessageId }
283
+ : {}),
284
+ messages: messages.map((message) => ({
285
+ ...message,
286
+ counted: countsAsThreadMessage(message),
287
+ })),
288
+ checkpoints,
289
+ })
290
+
291
+ this.state.threads.set(forkKey, clone(plan.thread))
292
+
293
+ const copyIds = new Map(plan.messages.map((copy) => [copy.sourceId, copy.id]))
294
+ for (const message of messages) {
295
+ const id = copyIds.get(message.id)
296
+ if (id === undefined) continue
297
+
298
+ const parts = JSON.parse(
299
+ remapArtifactIds(JSON.stringify(message.parts), input.artifactCopies)
300
+ ) as AgentMessageRecord["parts"]
301
+ this.state.messages.set(
302
+ key(input.projectId, id),
303
+ clone({ ...message, id, threadId: input.id, parts })
304
+ )
305
+ }
306
+
307
+ if (plan.checkpoint) {
308
+ this.state.checkpoints.set(key(input.projectId, plan.checkpoint.id), clone(plan.checkpoint))
309
+ }
310
+
311
+ return clone(plan.thread)
312
+ }
313
+
171
314
  async getById(params: { projectId: string; id: string }): Promise<AgentThreadRecord | null> {
172
315
  const record = this.state.threads.get(key(params.projectId, params.id))
173
316
  return record ? clone(record) : null
@@ -183,15 +326,37 @@ class InMemoryAgentThreadStore implements AgentThreadStore {
183
326
  })
184
327
  }
185
328
 
329
+ async listChildren(input: ListAgentThreadChildrenInput): Promise<readonly AgentThreadRecord[]> {
330
+ const offset = input.offset ?? 0
331
+ return [...this.state.threads.values()]
332
+ .filter((thread) => thread.projectId === input.projectId)
333
+ .filter((thread) => thread.parent?.threadId === input.parentThreadId)
334
+ .filter((thread) =>
335
+ input.parentRunId === undefined ? true : thread.parent?.spawnedBy === input.parentRunId
336
+ )
337
+ .sort((a, b) => compareByDate(a.createdAt, b.createdAt, a.id, b.id, "asc"))
338
+ .slice(offset, offset + (input.limit ?? 100))
339
+ .map(clone)
340
+ }
341
+
186
342
  async list(input: ListAgentThreadsInput): Promise<ListAgentThreadsResult> {
187
343
  const order = input.order ?? "desc"
188
344
  const statuses = input.statuses ? new Set(input.statuses) : null
189
345
  const filtered = [...this.state.threads.values()]
190
346
  .filter((thread) => thread.projectId === input.projectId)
347
+ .filter((thread) => thread.kind === "conversation")
191
348
  .filter((thread) => (statuses ? statuses.has(thread.status) : true))
192
349
  .filter((thread) =>
193
350
  input.ownerPrincipal ? principalsEqual(thread.ownerPrincipal, input.ownerPrincipal) : true
194
351
  )
352
+ .filter((thread) => {
353
+ const participant = input.participantPrincipal
354
+ if (!participant) return true
355
+
356
+ return this.participantsOf(thread.projectId, thread.id).some(
357
+ (record) => record.principal.id === participant.id
358
+ )
359
+ })
195
360
  .sort((a, b) =>
196
361
  compareByDate(
197
362
  a.lastMessageAt ?? a.createdAt,
@@ -205,6 +370,57 @@ class InMemoryAgentThreadStore implements AgentThreadStore {
205
370
  const { page, hasMore, total } = applyWindow(filtered, input.offset, input.limit)
206
371
  return { threads: page.map(clone), hasMore, total }
207
372
  }
373
+
374
+ async addParticipants(
375
+ input: AddAgentThreadParticipantsInput
376
+ ): Promise<readonly AgentThreadParticipantRecord[]> {
377
+ const threadKey = key(input.projectId, input.threadId)
378
+ const thread = this.state.threads.get(threadKey)
379
+ if (!thread) {
380
+ throw new AgentStorageError(
381
+ "thread_not_found",
382
+ `[Sixb] Agent thread '${input.threadId}' not found for project '${input.projectId}'.`
383
+ )
384
+ }
385
+ assertConversationThreadRow(thread, "has participants")
386
+
387
+ // No `await` from here on: the read and the write are one critical section.
388
+ const existing = this.participantsOf(input.projectId, input.threadId)
389
+ const addedAt = new Date(input.addedAt ?? new Date())
390
+ const added = participantsToAdd(input, existing).map((principal) => ({
391
+ projectId: input.projectId,
392
+ threadId: input.threadId,
393
+ principal,
394
+ addedAt: new Date(addedAt),
395
+ addedBy: clone(input.addedBy),
396
+ }))
397
+
398
+ const participants = [...existing, ...added].sort(compareAgentThreadParticipants)
399
+ this.state.participants.set(threadKey, participants)
400
+ return clone(participants)
401
+ }
402
+
403
+ async removeParticipant(input: RemoveAgentThreadParticipantInput): Promise<boolean> {
404
+ const threadKey = key(input.projectId, input.threadId)
405
+ const existing = this.state.participants.get(threadKey)
406
+ const kept = existing?.filter((record) => record.principal.id !== input.principal.id)
407
+ if (!existing || !kept || kept.length === existing.length) return false
408
+
409
+ this.state.participants.set(threadKey, kept)
410
+ return true
411
+ }
412
+
413
+ async listParticipants(
414
+ input: ListAgentThreadParticipantsInput
415
+ ): Promise<readonly AgentThreadParticipantRecord[]> {
416
+ return [...new Set(input.threadIds)]
417
+ .flatMap((threadId) => clone(this.participantsOf(input.projectId, threadId)))
418
+ .sort(compareAgentThreadParticipants)
419
+ }
420
+
421
+ private participantsOf(projectId: string, threadId: string): AgentThreadParticipantRecord[] {
422
+ return this.state.participants.get(key(projectId, threadId)) ?? []
423
+ }
208
424
  }
209
425
 
210
426
  // ── runs ──────────────────────────────────────────────────────────────────────────────────────
@@ -233,6 +449,7 @@ class InMemoryAgentRunStore implements AgentRunStore {
233
449
  `[Sixb] Agent thread '${input.threadId}' not found for project '${input.projectId}'.`
234
450
  )
235
451
  }
452
+ assertConversationThreadRow(thread, "takes turns")
236
453
  if (thread.activeRunId !== null) {
237
454
  throw new AgentStorageError(
238
455
  "active_run_exists",
@@ -354,18 +571,72 @@ class InMemoryAgentRunStore implements AgentRunStore {
354
571
  )
355
572
  }
356
573
 
574
+ // The child's thread: created by its first run, taken by a later one while it is idle.
575
+ const createdAt = new Date(input.createdAt ?? new Date())
576
+ const threadKey = key(input.projectId, input.thread.id)
577
+ const existingThread = this.state.threads.get(threadKey) ?? null
578
+ let thread: AgentThreadRecord
579
+ if (input.thread.create) {
580
+ if (existingThread) {
581
+ throw new AgentStorageError(
582
+ "duplicate_id",
583
+ `[Sixb] Agent thread '${input.thread.id}' already exists for project '${input.projectId}'.`
584
+ )
585
+ }
586
+ const conversation = this.state.threads.get(key(input.projectId, parent.threadId))
587
+ if (!conversation) {
588
+ throw new AgentStorageError(
589
+ "thread_not_found",
590
+ `[Sixb] Agent thread '${parent.threadId}' not found for project '${input.projectId}'.`
591
+ )
592
+ }
593
+ thread = newSubagentThreadRecord(input, conversation, createdAt)
594
+ } else {
595
+ assertSubagentThreadTakesRun(existingThread, input, parent.threadId)
596
+ thread = {
597
+ ...existingThread,
598
+ activeRunId: input.id,
599
+ messageCount: existingThread.messageCount + 1,
600
+ lastMessageAt: createdAt,
601
+ updatedAt: createdAt,
602
+ }
603
+ }
604
+
357
605
  const run: SubagentRunRecord = {
358
606
  kind: "subagent",
359
607
  id: input.id,
360
608
  projectId: input.projectId,
361
609
  executionId: input.executionId,
610
+ threadId: input.thread.id,
611
+ triggerMessageId: input.trigger.id,
362
612
  parentRunId: input.parentRunId,
363
613
  spawnKey: input.spawnKey,
364
614
  spec: clone(input.spec),
365
615
  status: "queued",
366
616
  attempt: 0,
367
- createdAt: new Date(input.createdAt ?? new Date()),
617
+ createdAt,
618
+ }
619
+ const trigger: AgentMessageRecord = {
620
+ id: input.trigger.id,
621
+ projectId: input.projectId,
622
+ threadId: input.thread.id,
623
+ runId: input.id,
624
+ role: "user",
625
+ seq: nextMessageSeq(this.state, input.projectId, input.thread.id),
626
+ parts: clone(input.trigger.parts),
627
+ ...(input.trigger.metadata === undefined ? {} : { metadata: clone(input.trigger.metadata) }),
628
+ contentVersion: AGENT_MESSAGE_CONTENT_VERSION,
629
+ createdAt,
368
630
  }
631
+ if (this.state.messages.has(key(input.projectId, trigger.id))) {
632
+ throw new AgentStorageError(
633
+ "duplicate_id",
634
+ `[Sixb] Agent message '${trigger.id}' already exists for project '${input.projectId}'.`
635
+ )
636
+ }
637
+
638
+ this.state.threads.set(threadKey, clone(thread))
639
+ this.state.messages.set(key(input.projectId, trigger.id), clone(trigger))
369
640
  this.state.runs.set(runKey, clone(run))
370
641
  return clone(run)
371
642
  }
@@ -442,14 +713,13 @@ class InMemoryAgentRunStore implements AgentRunStore {
442
713
  `[Sixb] Execution token is no longer current on agent run '${input.id}'.`
443
714
  )
444
715
  }
445
- if (input.status === "succeeded" && run.kind === "subagent") {
446
- assertSubagentRunResult(input.result, run.id)
447
- }
448
- if (input.status === "succeeded" && run.kind === "conversation" && input.result !== undefined) {
449
- throw new AgentStorageError(
450
- "invalid_input",
451
- `[Sixb] Conversational Agent run '${run.id}' cannot persist a subagent result.`
452
- )
716
+ assertAgentRunFinishPayload(run.kind, input, run.id, "Sixb")
717
+ if (input.finishReason === "awaiting_approval") {
718
+ assertAwaitingApprovalFinish({
719
+ runId: run.id,
720
+ status: input.status,
721
+ holdsApproval: holdsRun(this.state, run.projectId, run.id),
722
+ })
453
723
  }
454
724
 
455
725
  const completedAt = new Date(input.completedAt ?? new Date())
@@ -471,6 +741,7 @@ class InMemoryAgentRunStore implements AgentRunStore {
471
741
  this.state.runs.set(key(input.projectId, input.id), clone(next))
472
742
 
473
743
  this.releaseThread(run, completedAt)
744
+ this.settleApprovals(run, input, completedAt)
474
745
 
475
746
  return clone(next)
476
747
  }
@@ -490,6 +761,37 @@ class InMemoryAgentRunStore implements AgentRunStore {
490
761
  .map(clone)
491
762
  }
492
763
 
764
+ async listThreadSubagents(
765
+ input: ListThreadSubagentsInput
766
+ ): Promise<readonly SubagentRunRecord[]> {
767
+ const runs = [...this.state.runs.values()].filter((run) => run.projectId === input.projectId)
768
+ const turns = new Map(
769
+ runs.flatMap((run) =>
770
+ run.kind === "conversation" && run.threadId === input.threadId ? [[run.id, run]] : []
771
+ )
772
+ )
773
+ const children = runs
774
+ .filter((run): run is SubagentRunRecord => run.kind === "subagent")
775
+ .filter((run) => turns.has(run.parentRunId))
776
+ .filter((run) => (input.spawnKey === undefined ? true : run.spawnKey === input.spawnKey))
777
+ .filter((run) =>
778
+ input.finishReason === undefined ? true : run.finishReason === input.finishReason
779
+ )
780
+ .sort((left, right) => {
781
+ const [a, b] = [turns.get(left.parentRunId), turns.get(right.parentRunId)]
782
+ return (
783
+ compareByDate(
784
+ a?.startedAt ?? a?.createdAt,
785
+ b?.startedAt ?? b?.createdAt,
786
+ left.parentRunId,
787
+ right.parentRunId,
788
+ "desc"
789
+ ) || compareByDate(left.createdAt, right.createdAt, left.id, right.id, "desc")
790
+ )
791
+ })
792
+ return children.slice(0, input.limit ?? 100).map(clone)
793
+ }
794
+
493
795
  async list(input: ListAgentRunsInput): Promise<ListAgentRunsResult> {
494
796
  const order = input.order ?? "desc"
495
797
  const statuses = input.statuses ? new Set(input.statuses) : null
@@ -498,9 +800,7 @@ class InMemoryAgentRunStore implements AgentRunStore {
498
800
  const filtered = [...this.state.runs.values()]
499
801
  .filter((run) => run.projectId === input.projectId)
500
802
  .filter((run) => (kinds ? kinds.has(run.kind) : true))
501
- .filter((run) =>
502
- input.threadId ? run.kind === "conversation" && run.threadId === input.threadId : true
503
- )
803
+ .filter((run) => (input.threadId ? run.threadId === input.threadId : true))
504
804
  .filter((run) =>
505
805
  input.parentRunId ? run.kind === "subagent" && run.parentRunId === input.parentRunId : true
506
806
  )
@@ -544,8 +844,37 @@ class InMemoryAgentRunStore implements AgentRunStore {
544
844
  return run
545
845
  }
546
846
 
847
+ /**
848
+ * A turn that pauses keeps its calls for their decision. A turn that ends any other way cancels
849
+ * the ones still waiting, a late one included, and never resumes on the rest. A child that fails
850
+ * or is cancelled takes its own pending calls with it.
851
+ */
852
+ private settleApprovals(run: AgentRunRecord, input: FinishAgentRunInput, at: Date): void {
853
+ if (input.finishReason === "awaiting_approval" || !agentRunMayHoldCalls(run)) return
854
+
855
+ const turn = run.kind === "conversation"
856
+ if (!turn && input.status === "succeeded") return
857
+ for (const [approvalKey, approval] of this.state.approvals) {
858
+ if (approval.projectId !== run.projectId) continue
859
+ const ownCall = approval.runId === run.id || approval.callerRunId === run.id
860
+ const cancel = approval.status === "pending" && ownCall
861
+ const stop =
862
+ turn &&
863
+ approval.runId === run.id &&
864
+ approval.reportedInMessageId === undefined &&
865
+ approval.turnStoppedAt === undefined
866
+ if (!cancel && !stop) continue
867
+
868
+ this.state.approvals.set(approvalKey, {
869
+ ...approval,
870
+ ...(cancel ? { status: "cancelled" as const } : {}),
871
+ ...(stop ? { turnStoppedAt: new Date(at) } : {}),
872
+ })
873
+ }
874
+ }
875
+
876
+ /** A turn releases its conversation, a child run its own thread. */
547
877
  private releaseThread(run: AgentRunRecord, completedAt: Date): void {
548
- if (run.kind !== "conversation") return
549
878
  const threadKey = key(run.projectId, run.threadId)
550
879
  const thread = this.state.threads.get(threadKey)
551
880
  if (thread && thread.activeRunId === run.id) {
@@ -588,7 +917,7 @@ class InMemoryAgentMessageStore implements AgentMessageStore {
588
917
  }
589
918
 
590
919
  const createdAt = new Date(input.createdAt ?? new Date())
591
- const seq = this.nextSeq(input.projectId, input.threadId)
920
+ const seq = nextMessageSeq(this.state, input.projectId, input.threadId)
592
921
  const message: AgentMessageRecord = {
593
922
  id: input.id,
594
923
  projectId: input.projectId,
@@ -611,7 +940,7 @@ class InMemoryAgentMessageStore implements AgentMessageStore {
611
940
  threadKey,
612
941
  clone({
613
942
  ...thread,
614
- messageCount: thread.messageCount + 1,
943
+ messageCount: thread.messageCount + (countsAsThreadMessage(input) ? 1 : 0),
615
944
  lastMessageAt: createdAt,
616
945
  updatedAt: createdAt,
617
946
  })
@@ -655,7 +984,7 @@ class InMemoryAgentMessageStore implements AgentMessageStore {
655
984
  threadKey,
656
985
  clone({
657
986
  ...thread,
658
- messageCount: remainingMessages.length,
987
+ messageCount: remainingMessages.filter(countsAsThreadMessage).length,
659
988
  lastMessageAt: latestMessage?.createdAt,
660
989
  updatedAt,
661
990
  })
@@ -683,16 +1012,16 @@ class InMemoryAgentMessageStore implements AgentMessageStore {
683
1012
  const { page, hasMore, total } = applyWindow(filtered, input.offset, input.limit)
684
1013
  return { messages: page.map(clone), hasMore, total }
685
1014
  }
1015
+ }
686
1016
 
687
- private nextSeq(projectId: string, threadId: string): number {
688
- let max = 0
689
- for (const message of this.state.messages.values()) {
690
- if (message.projectId === projectId && message.threadId === threadId && message.seq > max) {
691
- max = message.seq
692
- }
1017
+ function nextMessageSeq(state: AgentStoreState, projectId: string, threadId: string): number {
1018
+ let max = 0
1019
+ for (const message of state.messages.values()) {
1020
+ if (message.projectId === projectId && message.threadId === threadId && message.seq > max) {
1021
+ max = message.seq
693
1022
  }
694
- return max + 1
695
1023
  }
1024
+ return max + 1
696
1025
  }
697
1026
 
698
1027
  // ── context checkpoints ──────────────────────────────────────────────────────────────────────
@@ -717,6 +1046,7 @@ class InMemoryAgentContextCheckpointStore implements AgentContextCheckpointStore
717
1046
  const existingForRun = [...this.state.checkpoints.values()].find(
718
1047
  (checkpoint) =>
719
1048
  checkpoint.projectId === input.projectId &&
1049
+ checkpoint.threadId === input.threadId &&
720
1050
  checkpoint.createdByRunId === input.createdByRunId
721
1051
  )
722
1052
  if (existingForRun) {
@@ -785,11 +1115,13 @@ class InMemoryAgentContextCheckpointStore implements AgentContextCheckpointStore
785
1115
 
786
1116
  async getByRunIds(input: {
787
1117
  readonly projectId: string
1118
+ readonly threadId: string
788
1119
  readonly runIds: readonly string[]
789
1120
  }): Promise<readonly AgentContextCheckpointRecord[]> {
790
1121
  const byRunId = new Map(
791
1122
  [...this.state.checkpoints.values()]
792
1123
  .filter((checkpoint) => checkpoint.projectId === input.projectId)
1124
+ .filter((checkpoint) => checkpoint.threadId === input.threadId)
793
1125
  .map((checkpoint) => [checkpoint.createdByRunId, checkpoint] as const)
794
1126
  )
795
1127
  return [...new Set(input.runIds)].flatMap((runId) => {
@@ -804,50 +1136,465 @@ class InMemoryAgentContextCheckpointStore implements AgentContextCheckpointStore
804
1136
  .filter(
805
1137
  (checkpoint) => checkpoint.projectId === projectId && checkpoint.threadId === threadId
806
1138
  )
807
- .sort(
808
- (left, right) =>
809
- right.summarizedThroughSeq - left.summarizedThroughSeq ||
810
- right.createdAt.getTime() - left.createdAt.getTime() ||
811
- right.id.localeCompare(left.id)
812
- )[0] ?? null
1139
+ .sort(compareLatestCheckpoints)[0] ?? null
813
1140
  )
814
1141
  }
815
1142
  }
816
1143
 
1144
+ /** The order `getLatest` reads: the furthest boundary, then the newest. */
1145
+ function compareLatestCheckpoints(
1146
+ left: AgentContextCheckpointRecord,
1147
+ right: AgentContextCheckpointRecord
1148
+ ): number {
1149
+ return (
1150
+ right.summarizedThroughSeq - left.summarizedThroughSeq ||
1151
+ right.createdAt.getTime() - left.createdAt.getTime() ||
1152
+ right.id.localeCompare(left.id)
1153
+ )
1154
+ }
1155
+
1156
+ // ── memory ────────────────────────────────────────────────────────────────────────────────────
1157
+
1158
+ class InMemoryAgentMemoryStore implements AgentMemoryStore {
1159
+ constructor(private readonly state: AgentStoreState) {}
1160
+
1161
+ async get(input: {
1162
+ projectId: string
1163
+ repoId: string
1164
+ asOf?: Date
1165
+ revision?: number
1166
+ }): Promise<AgentMemoryRepoRecord> {
1167
+ const repo = this.state.memory.get(key(input.projectId, input.repoId))
1168
+ const { asOf, revision: upTo } = input
1169
+ const saved = repo?.revisions.filter(
1170
+ (entry) =>
1171
+ (!asOf || entry.createdAt.getTime() <= asOf.getTime()) &&
1172
+ (upTo === undefined || entry.revision <= upTo)
1173
+ )
1174
+ const revision = saved?.reduce((highest, entry) => Math.max(highest, entry.revision), 0) ?? 0
1175
+ if (!repo || revision === 0) return { revision: 0, files: [] }
1176
+ const files = [
1177
+ ...latestMemoryFiles({
1178
+ revisions: repo.revisions,
1179
+ files: repo.files.filter((file) => file.revision <= revision),
1180
+ }).values(),
1181
+ ]
1182
+ .flatMap((file) =>
1183
+ file.contents === null ? [] : [{ path: file.path, contents: file.contents }]
1184
+ )
1185
+ .sort((left, right) => compareAgentMemoryPaths(left.path, right.path))
1186
+ return { revision, files }
1187
+ }
1188
+
1189
+ async save(input: SaveAgentMemoryInput): Promise<SaveAgentMemoryResult> {
1190
+ assertSaveAgentMemoryInput(input)
1191
+ const repoKey = key(input.projectId, input.repoId)
1192
+ const repo = this.state.memory.get(repoKey) ?? { revisions: [], files: [] }
1193
+ const head = repo.revisions.at(-1)?.revision ?? 0
1194
+ const conflicts = agentMemoryConflicts(input, head, latestMemoryFiles(repo))
1195
+ if (conflicts.length > 0) return { saved: false, revision: head, conflicts }
1196
+
1197
+ const revision = head + 1
1198
+ const createdAt = input.createdAt ?? new Date()
1199
+ const revisions = [
1200
+ ...repo.revisions,
1201
+ {
1202
+ revision,
1203
+ message: input.message,
1204
+ author: clone(input.author),
1205
+ ...(input.source === undefined ? {} : { source: input.source }),
1206
+ createdAt: new Date(createdAt),
1207
+ },
1208
+ ]
1209
+ const files = [...repo.files, ...input.changes.map((change) => ({ ...change, revision }))]
1210
+
1211
+ const cutoff = agentMemoryHistoryCutoff(createdAt).getTime()
1212
+ const savedAt = new Map(revisions.map((entry) => [entry.revision, entry.createdAt.getTime()]))
1213
+ const latest = latestMemoryFiles({ revisions, files })
1214
+ this.state.memory.set(repoKey, {
1215
+ revisions,
1216
+ files: files.filter(
1217
+ (file) => latest.get(file.path) === file || (savedAt.get(file.revision) ?? 0) >= cutoff
1218
+ ),
1219
+ })
1220
+ return { saved: true, revision }
1221
+ }
1222
+
1223
+ async listRevisions(
1224
+ input: ListAgentMemoryRevisionsInput
1225
+ ): Promise<ListAgentMemoryRevisionsResult> {
1226
+ const repo = this.state.memory.get(key(input.projectId, input.repoId))
1227
+ const newestFirst = [...(repo?.revisions ?? [])].reverse()
1228
+ const { page, hasMore, total } = applyWindow(newestFirst, input.offset, input.limit)
1229
+ const revisions = page.map(
1230
+ (entry): AgentMemoryRevisionRecord => ({
1231
+ ...clone(entry),
1232
+ changes: (repo?.files ?? [])
1233
+ .filter((file) => file.revision === entry.revision)
1234
+ .map((file) => ({ path: file.path, deleted: file.contents === null }))
1235
+ .sort((left, right) => compareAgentMemoryPaths(left.path, right.path)),
1236
+ })
1237
+ )
1238
+ return { revisions, hasMore, total }
1239
+ }
1240
+
1241
+ async delete(input: { projectId: string; repoId: string }): Promise<void> {
1242
+ this.state.memory.delete(key(input.projectId, input.repoId))
1243
+ }
1244
+ }
1245
+
1246
+ /** Each path's highest-revision version, the deleted ones included. */
1247
+ function latestMemoryFiles(
1248
+ repo: StoredAgentMemoryRepo
1249
+ ): Map<string, StoredAgentMemoryRepo["files"][number]> {
1250
+ const latest = new Map<string, StoredAgentMemoryRepo["files"][number]>()
1251
+ for (const file of repo.files) latest.set(file.path, file)
1252
+ return latest
1253
+ }
1254
+
1255
+ // ── approvals ─────────────────────────────────────────────────────────────────────────────────
1256
+
1257
+ class InMemoryAgentApprovalStore implements AgentApprovalStore {
1258
+ constructor(private readonly state: AgentStoreState) {}
1259
+
1260
+ async request(input: RequestAgentApprovalInput): Promise<RequestAgentApprovalResult> {
1261
+ assertRequestAgentApprovalInput(input)
1262
+
1263
+ const threadId = assertAgentApprovalCaller({
1264
+ request: input,
1265
+ turn: this.state.runs.get(key(input.projectId, input.runId)) ?? null,
1266
+ caller: this.state.runs.get(key(input.projectId, input.callerRunId)) ?? null,
1267
+ })
1268
+ const callKey = agentApprovalCallKey(input.call)
1269
+ const live = [...this.state.approvals.values()].find(
1270
+ (approval) =>
1271
+ approval.projectId === input.projectId &&
1272
+ approval.threadId === threadId &&
1273
+ approval.callKey === callKey &&
1274
+ (LIVE_AGENT_APPROVAL_STATUSES as readonly string[]).includes(approval.status)
1275
+ )
1276
+ if (live) return { approval: clone(live), created: false }
1277
+
1278
+ if (this.state.approvals.has(key(input.projectId, input.id))) {
1279
+ throw new AgentStorageError(
1280
+ "duplicate_id",
1281
+ `[Sixb] Agent approval '${input.id}' already exists for project '${input.projectId}'.`
1282
+ )
1283
+ }
1284
+ const approval = newAgentApprovalRecord(input, threadId)
1285
+ this.state.approvals.set(key(input.projectId, input.id), clone(approval))
1286
+ return { approval: clone(approval), created: true }
1287
+ }
1288
+
1289
+ async decide(input: DecideAgentApprovalInput): Promise<DecideAgentApprovalResult | null> {
1290
+ const approvalKey = key(input.projectId, input.id)
1291
+ const approval = this.state.approvals.get(approvalKey)
1292
+ if (!approval) return null
1293
+ if (approval.status !== "pending") return { approval: clone(approval), decided: false }
1294
+
1295
+ const decidedAt = new Date(input.decidedAt ?? new Date())
1296
+ const next: AgentApprovalRecord =
1297
+ approval.expiresAt <= decidedAt
1298
+ ? { ...approval, status: "expired" }
1299
+ : {
1300
+ ...approval,
1301
+ status: input.decision,
1302
+ decidedAt,
1303
+ decidedBy: clone(input.decidedBy),
1304
+ ...(input.decision === "approved" && input.raisedMode !== undefined
1305
+ ? { raisedMode: input.raisedMode }
1306
+ : {}),
1307
+ }
1308
+ this.state.approvals.set(approvalKey, clone(next))
1309
+ return { approval: clone(next), decided: next.status === input.decision }
1310
+ }
1311
+
1312
+ async recordOutcome(input: {
1313
+ readonly projectId: string
1314
+ readonly id: string
1315
+ readonly outcome: AgentApprovalOutcome
1316
+ }): Promise<AgentApprovalRecord> {
1317
+ const approvalKey = key(input.projectId, input.id)
1318
+ const approval = this.state.approvals.get(approvalKey)
1319
+ if (!approval) {
1320
+ throw new AgentStorageError(
1321
+ "invalid_state",
1322
+ `[Sixb] Agent approval '${input.id}' not found for project '${input.projectId}'.`
1323
+ )
1324
+ }
1325
+ if (approval.status !== "approved") {
1326
+ throw new AgentStorageError(
1327
+ "invalid_state",
1328
+ `[Sixb] Agent approval '${input.id}' is not approved (status '${approval.status}').`
1329
+ )
1330
+ }
1331
+ if (approval.outcome) return clone(approval)
1332
+
1333
+ const next = { ...approval, outcome: clone(input.outcome) }
1334
+ this.state.approvals.set(approvalKey, clone(next))
1335
+ return clone(next)
1336
+ }
1337
+
1338
+ async settle(input: SettleAgentApprovalsInput): Promise<readonly AgentApprovalRecord[]> {
1339
+ const settled: AgentApprovalRecord[] = []
1340
+ for (const [approvalKey, approval] of this.state.approvals) {
1341
+ if (
1342
+ approval.projectId !== input.projectId ||
1343
+ approval.threadId !== input.threadId ||
1344
+ approval.status !== "pending"
1345
+ ) {
1346
+ continue
1347
+ }
1348
+ const next = { ...approval, status: input.status }
1349
+ this.state.approvals.set(approvalKey, clone(next))
1350
+ settled.push(next)
1351
+ }
1352
+ return settled.sort(compareApprovals).map(clone)
1353
+ }
1354
+
1355
+ async expireDue(input: {
1356
+ readonly projectId: string
1357
+ readonly now: Date
1358
+ readonly limit?: number
1359
+ }): Promise<readonly AgentApprovalRecord[]> {
1360
+ const due = [...this.state.approvals.values()]
1361
+ .filter(
1362
+ (approval) =>
1363
+ approval.projectId === input.projectId &&
1364
+ approval.status === "pending" &&
1365
+ approval.expiresAt <= input.now
1366
+ )
1367
+ .sort(compareApprovals)
1368
+ .slice(0, input.limit)
1369
+
1370
+ return due.map((approval) => {
1371
+ const next = { ...approval, status: "expired" as const }
1372
+ this.state.approvals.set(key(approval.projectId, approval.id), clone(next))
1373
+ return clone(next)
1374
+ })
1375
+ }
1376
+
1377
+ async stop(input: StopAgentApprovalsInput): Promise<StopAgentApprovalsResult> {
1378
+ const stoppedAt = new Date(input.stoppedAt ?? new Date())
1379
+ const cancelled: AgentApprovalRecord[] = []
1380
+ let stopped = 0
1381
+ for (const [approvalKey, approval] of this.state.approvals) {
1382
+ if (!agentApprovalStops(approval, input)) continue
1383
+
1384
+ const cancel = approval.status === "pending"
1385
+ const stop = approval.turnStoppedAt === undefined
1386
+ if (!cancel && !stop) continue
1387
+ const next: AgentApprovalRecord = {
1388
+ ...approval,
1389
+ ...(cancel ? { status: "cancelled" as const } : {}),
1390
+ ...(stop ? { turnStoppedAt: stoppedAt } : {}),
1391
+ }
1392
+ this.state.approvals.set(approvalKey, clone(next))
1393
+ if (cancel) cancelled.push(next)
1394
+ if (stop) stopped += 1
1395
+ }
1396
+ return { cancelled: cancelled.sort(compareApprovals).map(clone), stopped }
1397
+ }
1398
+
1399
+ async holdsRun(input: { readonly projectId: string; readonly runId: string }): Promise<boolean> {
1400
+ return holdsRun(this.state, input.projectId, input.runId)
1401
+ }
1402
+
1403
+ async claimExecution(input: {
1404
+ readonly projectId: string
1405
+ readonly id: string
1406
+ readonly claimedAt: Date
1407
+ readonly staleBefore: Date
1408
+ }): Promise<AgentApprovalRecord | null> {
1409
+ const approvalKey = key(input.projectId, input.id)
1410
+ const approval = this.state.approvals.get(approvalKey)
1411
+ if (!approval || !agentApprovalClaimable(approval, input.staleBefore)) return null
1412
+
1413
+ const next = { ...approval, executionClaimedAt: new Date(input.claimedAt) }
1414
+ this.state.approvals.set(approvalKey, clone(next))
1415
+ return clone(next)
1416
+ }
1417
+
1418
+ async listRepairable(input: {
1419
+ readonly projectId: string
1420
+ readonly claimableBefore: Date
1421
+ readonly after?: AgentApprovalCursor
1422
+ readonly limit: number
1423
+ }): Promise<readonly AgentApprovalRecord[]> {
1424
+ const { after } = input
1425
+ return [...this.state.approvals.values()]
1426
+ .filter(
1427
+ (approval) =>
1428
+ approval.projectId === input.projectId &&
1429
+ agentApprovalRepairable(approval, input.claimableBefore) &&
1430
+ (after === undefined ||
1431
+ approval.createdAt > after.createdAt ||
1432
+ (approval.createdAt.getTime() === after.createdAt.getTime() && approval.id > after.id))
1433
+ )
1434
+ .sort(compareApprovals)
1435
+ .slice(0, input.limit)
1436
+ .map(clone)
1437
+ }
1438
+
1439
+ async markReported(input: MarkAgentApprovalsReportedInput): Promise<readonly string[]> {
1440
+ const marked: string[] = []
1441
+ for (const id of new Set(input.ids)) {
1442
+ const approvalKey = key(input.projectId, id)
1443
+ const approval = this.state.approvals.get(approvalKey)
1444
+ if (
1445
+ !approval ||
1446
+ approval.threadId !== input.threadId ||
1447
+ approval.reportedInMessageId !== undefined ||
1448
+ (input.resuming === true && approval.turnStoppedAt !== undefined)
1449
+ ) {
1450
+ continue
1451
+ }
1452
+ this.state.approvals.set(approvalKey, { ...approval, reportedInMessageId: input.messageId })
1453
+ marked.push(id)
1454
+ }
1455
+ return marked
1456
+ }
1457
+
1458
+ async getById(params: {
1459
+ readonly projectId: string
1460
+ readonly id: string
1461
+ }): Promise<AgentApprovalRecord | null> {
1462
+ const approval = this.state.approvals.get(key(params.projectId, params.id))
1463
+ return approval ? clone(approval) : null
1464
+ }
1465
+
1466
+ async list(input: ListAgentApprovalsInput): Promise<ListAgentApprovalsResult> {
1467
+ const matching = [...this.state.approvals.values()]
1468
+ .filter((approval) => agentApprovalMatches(approval, input))
1469
+ .sort(compareApprovals)
1470
+ const { page, hasMore, total } = applyWindow(matching, input.offset, input.limit)
1471
+ return { approvals: page.map(clone), hasMore, total }
1472
+ }
1473
+ }
1474
+
1475
+ function holdsRun(state: AgentStoreState, projectId: string, runId: string): boolean {
1476
+ return [...state.approvals.values()].some(
1477
+ (approval) => approval.projectId === projectId && agentApprovalHoldsRun(approval, runId)
1478
+ )
1479
+ }
1480
+
1481
+ /** Oldest first, then by id: the order every provider lists approvals in. */
1482
+ function compareApprovals(left: AgentApprovalRecord, right: AgentApprovalRecord): number {
1483
+ return compareByDate(left.createdAt, right.createdAt, left.id, right.id, "asc")
1484
+ }
1485
+
1486
+ class InMemoryAgentApprovalModeStore implements AgentApprovalModeStore {
1487
+ constructor(private readonly state: AgentStoreState) {}
1488
+
1489
+ async getDefault(input: {
1490
+ readonly projectId: string
1491
+ readonly principal: Principal
1492
+ }): Promise<AgentApprovalMode | null> {
1493
+ return this.state.approvalModes.get(defaultModeKey(input)) ?? null
1494
+ }
1495
+
1496
+ async setDefault(input: {
1497
+ readonly projectId: string
1498
+ readonly principal: Principal
1499
+ readonly mode: AgentApprovalMode
1500
+ }): Promise<void> {
1501
+ assertAgentApprovalModeInput(input.mode)
1502
+ this.state.approvalModes.set(defaultModeKey(input), input.mode)
1503
+ }
1504
+
1505
+ async getForThread(input: {
1506
+ readonly projectId: string
1507
+ readonly threadId: string
1508
+ readonly principal: Principal
1509
+ }): Promise<AgentApprovalMode | null> {
1510
+ return this.state.approvalModes.get(threadModeKey(input)) ?? null
1511
+ }
1512
+
1513
+ async setForThread(input: {
1514
+ readonly projectId: string
1515
+ readonly threadId: string
1516
+ readonly principal: Principal
1517
+ readonly mode: AgentApprovalMode | null
1518
+ }): Promise<void> {
1519
+ if (input.mode !== null) assertAgentApprovalModeInput(input.mode)
1520
+ if (!this.state.threads.has(key(input.projectId, input.threadId))) {
1521
+ throw new AgentStorageError(
1522
+ "thread_not_found",
1523
+ `[Sixb] Agent thread '${input.threadId}' not found for project '${input.projectId}'.`
1524
+ )
1525
+ }
1526
+ if (input.mode === null) {
1527
+ this.state.approvalModes.delete(threadModeKey(input))
1528
+ return
1529
+ }
1530
+ this.state.approvalModes.set(threadModeKey(input), input.mode)
1531
+ }
1532
+ }
1533
+
1534
+ function defaultModeKey(input: { readonly projectId: string; readonly principal: Principal }) {
1535
+ return JSON.stringify([input.projectId, input.principal.type, input.principal.id])
1536
+ }
1537
+
1538
+ function threadModeKey(input: {
1539
+ readonly projectId: string
1540
+ readonly threadId: string
1541
+ readonly principal: Principal
1542
+ }) {
1543
+ return JSON.stringify([input.projectId, input.threadId, input.principal.type, input.principal.id])
1544
+ }
1545
+
817
1546
  export class InMemoryAgentStorage implements AgentStorage {
818
1547
  private readonly state: AgentStoreState = {
819
1548
  threads: new Map(),
1549
+ participants: new Map(),
820
1550
  runs: new Map(),
821
1551
  messages: new Map(),
822
1552
  checkpoints: new Map(),
1553
+ memory: new Map(),
1554
+ approvals: new Map(),
1555
+ approvalModes: new Map(),
823
1556
  }
824
1557
 
825
1558
  readonly threads: InMemoryAgentThreadStore
826
1559
  readonly runs: InMemoryAgentRunStore
827
1560
  readonly messages: InMemoryAgentMessageStore
828
1561
  readonly checkpoints: InMemoryAgentContextCheckpointStore
1562
+ readonly memory: InMemoryAgentMemoryStore
1563
+ readonly approvals: InMemoryAgentApprovalStore
1564
+ readonly approvalModes: InMemoryAgentApprovalModeStore
829
1565
 
830
1566
  constructor(executions: ExecutionStorage) {
831
1567
  this.threads = new InMemoryAgentThreadStore(this.state)
832
1568
  this.runs = new InMemoryAgentRunStore(this.state, executions)
833
1569
  this.messages = new InMemoryAgentMessageStore(this.state)
834
1570
  this.checkpoints = new InMemoryAgentContextCheckpointStore(this.state)
1571
+ this.memory = new InMemoryAgentMemoryStore(this.state)
1572
+ this.approvals = new InMemoryAgentApprovalStore(this.state)
1573
+ this.approvalModes = new InMemoryAgentApprovalModeStore(this.state)
835
1574
  }
836
1575
 
837
1576
  snapshot(): InMemoryAgentStorageSnapshot {
838
1577
  return {
839
1578
  threads: structuredClone(this.state.threads),
1579
+ participants: structuredClone(this.state.participants),
840
1580
  runs: structuredClone(this.state.runs),
841
1581
  messages: structuredClone(this.state.messages),
842
1582
  checkpoints: structuredClone(this.state.checkpoints),
1583
+ memory: structuredClone(this.state.memory),
1584
+ approvals: structuredClone(this.state.approvals),
1585
+ approvalModes: structuredClone(this.state.approvalModes),
843
1586
  }
844
1587
  }
845
1588
 
846
1589
  restore(snapshot: InMemoryAgentStorageSnapshot): void {
847
1590
  replace(this.state.threads, snapshot.threads)
1591
+ replace(this.state.participants, snapshot.participants)
848
1592
  replace(this.state.runs, snapshot.runs)
849
1593
  replace(this.state.messages, snapshot.messages)
850
1594
  replace(this.state.checkpoints, snapshot.checkpoints)
1595
+ replace(this.state.memory, snapshot.memory)
1596
+ replace(this.state.approvals, snapshot.approvals)
1597
+ replace(this.state.approvalModes, snapshot.approvalModes)
851
1598
  }
852
1599
  }
853
1600