@sixb/core 0.1.20 → 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 (1519) 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 +71 -60
  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 +23 -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/connection.d.ts +62 -0
  28. package/dist/activity/connection.d.ts.map +1 -0
  29. package/dist/activity/device.d.ts +8 -0
  30. package/dist/activity/device.d.ts.map +1 -0
  31. package/dist/activity/execution.d.ts +48 -0
  32. package/dist/activity/execution.d.ts.map +1 -0
  33. package/dist/activity/service.d.ts +79 -0
  34. package/dist/activity/service.d.ts.map +1 -0
  35. package/dist/activity/shares.d.ts +24 -0
  36. package/dist/activity/shares.d.ts.map +1 -0
  37. package/dist/activity/timeline.d.ts +103 -0
  38. package/dist/activity/timeline.d.ts.map +1 -0
  39. package/dist/agents/accounting.d.ts +15 -0
  40. package/dist/agents/accounting.d.ts.map +1 -0
  41. package/dist/agents/adapters.d.ts.map +1 -1
  42. package/dist/agents/agent-mail.d.ts +9 -0
  43. package/dist/agents/agent-mail.d.ts.map +1 -0
  44. package/dist/agents/api-gateway.d.ts +5 -0
  45. package/dist/agents/api-gateway.d.ts.map +1 -1
  46. package/dist/agents/approval-continuation.d.ts +23 -0
  47. package/dist/agents/approval-continuation.d.ts.map +1 -0
  48. package/dist/agents/approval-executor.d.ts +56 -0
  49. package/dist/agents/approval-executor.d.ts.map +1 -0
  50. package/dist/agents/approval-outcome.d.ts +8 -0
  51. package/dist/agents/approval-outcome.d.ts.map +1 -0
  52. package/dist/agents/approvals.d.ts +210 -0
  53. package/dist/agents/approvals.d.ts.map +1 -0
  54. package/dist/agents/authority.d.ts +10 -0
  55. package/dist/agents/authority.d.ts.map +1 -1
  56. package/dist/agents/builders.d.ts.map +1 -1
  57. package/dist/agents/cancel.d.ts +23 -0
  58. package/dist/agents/cancel.d.ts.map +1 -0
  59. package/dist/agents/child-question.d.ts +18 -0
  60. package/dist/agents/child-question.d.ts.map +1 -0
  61. package/dist/agents/children.d.ts +99 -0
  62. package/dist/agents/children.d.ts.map +1 -0
  63. package/dist/agents/context/index.js +1 -1
  64. package/dist/agents/context-compaction.d.ts.map +1 -1
  65. package/dist/agents/errors.d.ts +13 -1
  66. package/dist/agents/errors.d.ts.map +1 -1
  67. package/dist/agents/execution.d.ts +180 -14
  68. package/dist/agents/execution.d.ts.map +1 -1
  69. package/dist/agents/fork.d.ts +16 -0
  70. package/dist/agents/fork.d.ts.map +1 -0
  71. package/dist/agents/ids.d.ts +7 -0
  72. package/dist/agents/ids.d.ts.map +1 -1
  73. package/dist/agents/index.d.ts +20 -8
  74. package/dist/agents/index.d.ts.map +1 -1
  75. package/dist/agents/index.js +170 -84
  76. package/dist/agents/index.js.map +1 -1
  77. package/dist/agents/memory-execution.d.ts +57 -0
  78. package/dist/agents/memory-execution.d.ts.map +1 -0
  79. package/dist/agents/memory.d.ts +49 -0
  80. package/dist/agents/memory.d.ts.map +1 -0
  81. package/dist/agents/message.d.ts +50 -1
  82. package/dist/agents/message.d.ts.map +1 -1
  83. package/dist/agents/model-loop.d.ts +19 -0
  84. package/dist/agents/model-loop.d.ts.map +1 -1
  85. package/dist/agents/model-routing.d.ts +19 -0
  86. package/dist/agents/model-routing.d.ts.map +1 -0
  87. package/dist/agents/participants.d.ts +18 -0
  88. package/dist/agents/participants.d.ts.map +1 -0
  89. package/dist/agents/reference.d.ts.map +1 -1
  90. package/dist/agents/request.d.ts +36 -2
  91. package/dist/agents/request.d.ts.map +1 -1
  92. package/dist/agents/run-scope.d.ts +51 -0
  93. package/dist/agents/run-scope.d.ts.map +1 -0
  94. package/dist/agents/skills.d.ts.map +1 -1
  95. package/dist/agents/streams/index.d.ts +3 -2
  96. package/dist/agents/streams/index.d.ts.map +1 -1
  97. package/dist/agents/streams/index.js +8 -4
  98. package/dist/agents/streams/index.js.map +1 -1
  99. package/dist/agents/streams/internal.d.ts +1 -1
  100. package/dist/agents/streams/internal.d.ts.map +1 -1
  101. package/dist/agents/streams/internal.js +6 -4
  102. package/dist/agents/streams/internal.js.map +1 -1
  103. package/dist/agents/streams/protocol.d.ts +122 -3
  104. package/dist/agents/streams/protocol.d.ts.map +1 -1
  105. package/dist/agents/subagent-runs.d.ts +12 -0
  106. package/dist/agents/subagent-runs.d.ts.map +1 -0
  107. package/dist/agents/thread-access.d.ts +53 -0
  108. package/dist/agents/thread-access.d.ts.map +1 -0
  109. package/dist/agents/tool-definition.d.ts +5 -4
  110. package/dist/agents/tool-definition.d.ts.map +1 -1
  111. package/dist/agents/types.d.ts +31 -12
  112. package/dist/agents/types.d.ts.map +1 -1
  113. package/dist/agents/validation.d.ts +1 -1
  114. package/dist/agents/validation.d.ts.map +1 -1
  115. package/dist/artifacts/access.d.ts +52 -0
  116. package/dist/artifacts/access.d.ts.map +1 -0
  117. package/dist/artifacts/address.d.ts +48 -0
  118. package/dist/artifacts/address.d.ts.map +1 -0
  119. package/dist/artifacts/canvas.d.ts +92 -0
  120. package/dist/artifacts/canvas.d.ts.map +1 -0
  121. package/dist/artifacts/csv.d.ts +27 -0
  122. package/dist/artifacts/csv.d.ts.map +1 -0
  123. package/dist/artifacts/errors.d.ts +16 -0
  124. package/dist/artifacts/errors.d.ts.map +1 -0
  125. package/dist/artifacts/execution.d.ts +138 -0
  126. package/dist/artifacts/execution.d.ts.map +1 -0
  127. package/dist/artifacts/formula/check.d.ts +24 -0
  128. package/dist/artifacts/formula/check.d.ts.map +1 -0
  129. package/dist/artifacts/formula/evaluate.d.ts +32 -0
  130. package/dist/artifacts/formula/evaluate.d.ts.map +1 -0
  131. package/dist/artifacts/formula/index.d.ts +38 -0
  132. package/dist/artifacts/formula/index.d.ts.map +1 -0
  133. package/dist/artifacts/formula/parser.d.ts +67 -0
  134. package/dist/artifacts/formula/parser.d.ts.map +1 -0
  135. package/dist/artifacts/frames/assets.d.ts +30 -0
  136. package/dist/artifacts/frames/assets.d.ts.map +1 -0
  137. package/dist/artifacts/frames/entries.d.ts +19 -0
  138. package/dist/artifacts/frames/entries.d.ts.map +1 -0
  139. package/dist/artifacts/frames/grants.d.ts +37 -0
  140. package/dist/artifacts/frames/grants.d.ts.map +1 -0
  141. package/dist/artifacts/frames/index.d.ts +12 -0
  142. package/dist/artifacts/frames/index.d.ts.map +1 -0
  143. package/dist/artifacts/frames/index.js +1285 -0
  144. package/dist/artifacts/frames/index.js.map +16 -0
  145. package/dist/artifacts/frames/kit.d.ts +71 -0
  146. package/dist/artifacts/frames/kit.d.ts.map +1 -0
  147. package/dist/artifacts/frames/probe.d.ts +45 -0
  148. package/dist/artifacts/frames/probe.d.ts.map +1 -0
  149. package/dist/artifacts/frames/protocol.d.ts +167 -0
  150. package/dist/artifacts/frames/protocol.d.ts.map +1 -0
  151. package/dist/artifacts/frames/runtime.d.ts +31 -0
  152. package/dist/artifacts/frames/runtime.d.ts.map +1 -0
  153. package/dist/artifacts/html.d.ts +6 -0
  154. package/dist/artifacts/html.d.ts.map +1 -0
  155. package/dist/artifacts/ids.d.ts +5 -0
  156. package/dist/artifacts/ids.d.ts.map +1 -0
  157. package/dist/artifacts/index.d.ts +22 -0
  158. package/dist/artifacts/index.d.ts.map +1 -0
  159. package/dist/artifacts/index.js +247 -0
  160. package/dist/artifacts/index.js.map +10 -0
  161. package/dist/artifacts/kinds.d.ts +5 -0
  162. package/dist/artifacts/kinds.d.ts.map +1 -0
  163. package/dist/artifacts/limits.d.ts +58 -0
  164. package/dist/artifacts/limits.d.ts.map +1 -0
  165. package/dist/artifacts/live-sheet.d.ts +65 -0
  166. package/dist/artifacts/live-sheet.d.ts.map +1 -0
  167. package/dist/artifacts/outline.d.ts +70 -0
  168. package/dist/artifacts/outline.d.ts.map +1 -0
  169. package/dist/artifacts/publish/files.d.ts +15 -0
  170. package/dist/artifacts/publish/files.d.ts.map +1 -0
  171. package/dist/artifacts/publish/index.d.ts +7 -0
  172. package/dist/artifacts/publish/index.d.ts.map +1 -0
  173. package/dist/artifacts/publish/index.js +76 -0
  174. package/dist/{chunk-7n30ybym.js.map → artifacts/publish/index.js.map} +1 -1
  175. package/dist/artifacts/publish/publish.d.ts +84 -0
  176. package/dist/artifacts/publish/publish.d.ts.map +1 -0
  177. package/dist/artifacts/publish/queries.d.ts +33 -0
  178. package/dist/artifacts/publish/queries.d.ts.map +1 -0
  179. package/dist/artifacts/publish/references.d.ts +30 -0
  180. package/dist/artifacts/publish/references.d.ts.map +1 -0
  181. package/dist/artifacts/publish/validate/canvas.d.ts +18 -0
  182. package/dist/artifacts/publish/validate/canvas.d.ts.map +1 -0
  183. package/dist/artifacts/publish/validate/document.d.ts +17 -0
  184. package/dist/artifacts/publish/validate/document.d.ts.map +1 -0
  185. package/dist/artifacts/publish/validate/file.d.ts +8 -0
  186. package/dist/artifacts/publish/validate/file.d.ts.map +1 -0
  187. package/dist/artifacts/publish/validate/html.d.ts +20 -0
  188. package/dist/artifacts/publish/validate/html.d.ts.map +1 -0
  189. package/dist/artifacts/publish/validate/page.d.ts +15 -0
  190. package/dist/artifacts/publish/validate/page.d.ts.map +1 -0
  191. package/dist/artifacts/publish/validate/sheet.d.ts +23 -0
  192. package/dist/artifacts/publish/validate/sheet.d.ts.map +1 -0
  193. package/dist/artifacts/publish/validate/slides.d.ts +15 -0
  194. package/dist/artifacts/publish/validate/slides.d.ts.map +1 -0
  195. package/dist/artifacts/queries.d.ts +95 -0
  196. package/dist/artifacts/queries.d.ts.map +1 -0
  197. package/dist/artifacts/references.d.ts +12 -0
  198. package/dist/artifacts/references.d.ts.map +1 -0
  199. package/dist/artifacts/resolve.d.ts +47 -0
  200. package/dist/artifacts/resolve.d.ts.map +1 -0
  201. package/dist/artifacts/run-query.d.ts +26 -0
  202. package/dist/artifacts/run-query.d.ts.map +1 -0
  203. package/dist/artifacts/serialize-query.d.ts +12 -0
  204. package/dist/artifacts/serialize-query.d.ts.map +1 -0
  205. package/dist/artifacts/sheet-rules.d.ts +26 -0
  206. package/dist/artifacts/sheet-rules.d.ts.map +1 -0
  207. package/dist/artifacts/theme.d.ts +19 -0
  208. package/dist/artifacts/theme.d.ts.map +1 -0
  209. package/dist/artifacts/tones.d.ts +8 -0
  210. package/dist/artifacts/tones.d.ts.map +1 -0
  211. package/dist/artifacts/warnings.d.ts +11 -0
  212. package/dist/artifacts/warnings.d.ts.map +1 -0
  213. package/dist/artifacts/workbook.d.ts +135 -0
  214. package/dist/artifacts/workbook.d.ts.map +1 -0
  215. package/dist/auth/index.d.ts +1 -1
  216. package/dist/auth/index.d.ts.map +1 -1
  217. package/dist/auth/index.js +16 -13
  218. package/dist/auth/index.js.map +1 -1
  219. package/dist/auth/member-events.d.ts +13 -0
  220. package/dist/auth/member-events.d.ts.map +1 -0
  221. package/dist/auth/profile.d.ts +11 -0
  222. package/dist/auth/profile.d.ts.map +1 -0
  223. package/dist/auth/runtime.d.ts +31 -3
  224. package/dist/auth/runtime.d.ts.map +1 -1
  225. package/dist/auth/strategy.d.ts +3 -1
  226. package/dist/auth/strategy.d.ts.map +1 -1
  227. package/dist/auth/strategy.js +7 -3
  228. package/dist/auth/strategy.js.map +1 -1
  229. package/dist/auth/types.d.ts +30 -1
  230. package/dist/auth/types.d.ts.map +1 -1
  231. package/dist/authorization/decision.d.ts +17 -0
  232. package/dist/authorization/decision.d.ts.map +1 -1
  233. package/dist/authorization/event-visibility.d.ts +5 -1
  234. package/dist/authorization/event-visibility.d.ts.map +1 -1
  235. package/dist/authorization/grant-kinds.d.ts +2 -2
  236. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  237. package/dist/authorization/index.d.ts +2 -2
  238. package/dist/authorization/index.d.ts.map +1 -1
  239. package/dist/authorization/index.js +14 -9
  240. package/dist/authorization/index.js.map +1 -1
  241. package/dist/authorization/resolve.d.ts +19 -1
  242. package/dist/authorization/resolve.d.ts.map +1 -1
  243. package/dist/authorization/run-visibility.d.ts +8 -1
  244. package/dist/authorization/run-visibility.d.ts.map +1 -1
  245. package/dist/authorization/types.d.ts +14 -0
  246. package/dist/authorization/types.d.ts.map +1 -1
  247. package/dist/blob-storage/browser.js +1 -1
  248. package/dist/blob-storage/index.js +2 -2
  249. package/dist/blob-storage/internal.d.ts +1 -1
  250. package/dist/blob-storage/internal.d.ts.map +1 -1
  251. package/dist/blob-storage/internal.js +11 -5
  252. package/dist/blob-storage/internal.js.map +1 -1
  253. package/dist/blob-storage/media-type.d.ts +12 -0
  254. package/dist/blob-storage/media-type.d.ts.map +1 -1
  255. package/dist/bootstrap/index.js +76 -66
  256. package/dist/bootstrap/index.js.map +2 -2
  257. package/dist/{chunk-tg2cw67r.js → chunk-02bzjgnt.js} +6 -6
  258. package/dist/{chunk-tg2cw67r.js.map → chunk-02bzjgnt.js.map} +1 -1
  259. package/dist/{chunk-mfs23znk.js → chunk-07kkp2e1.js} +1 -1
  260. package/dist/{chunk-6p49a5cq.js → chunk-098anw4f.js} +21 -19
  261. package/dist/chunk-098anw4f.js.map +12 -0
  262. package/dist/{chunk-fkgc1wt8.js → chunk-0phpbbvm.js} +3 -3
  263. package/dist/{chunk-ere85b8y.js → chunk-0xmt5p5y.js} +116 -27
  264. package/dist/chunk-0xmt5p5y.js.map +14 -0
  265. package/dist/{chunk-t6f3tdnr.js → chunk-16a9dmfy.js} +33 -2
  266. package/dist/{chunk-t6f3tdnr.js.map → chunk-16a9dmfy.js.map} +5 -4
  267. package/dist/{chunk-hkc3jct7.js → chunk-18sk89cg.js} +18 -10
  268. package/dist/chunk-18sk89cg.js.map +10 -0
  269. package/dist/{chunk-way52z4h.js → chunk-1t6k1avb.js} +6 -12
  270. package/dist/{chunk-way52z4h.js.map → chunk-1t6k1avb.js.map} +3 -4
  271. package/dist/chunk-2626mh4m.js +693 -0
  272. package/dist/chunk-2626mh4m.js.map +19 -0
  273. package/dist/{chunk-qczk96d9.js → chunk-2adz0h75.js} +13 -4
  274. package/dist/chunk-2adz0h75.js.map +11 -0
  275. package/dist/{chunk-3t2hgbgd.js → chunk-2fn60nvs.js} +40 -8
  276. package/dist/chunk-2fn60nvs.js.map +15 -0
  277. package/dist/{chunk-99nd4rc1.js → chunk-2gjj5dx3.js} +5 -4
  278. package/dist/{chunk-99nd4rc1.js.map → chunk-2gjj5dx3.js.map} +3 -3
  279. package/dist/chunk-3fqxbn31.js +107 -0
  280. package/dist/chunk-3fqxbn31.js.map +11 -0
  281. package/dist/{chunk-y0c4e6ex.js → chunk-3gbefjg5.js} +1 -1
  282. package/dist/{chunk-yzwja0mj.js → chunk-45ngkxkp.js} +52 -31
  283. package/dist/chunk-45ngkxkp.js.map +13 -0
  284. package/dist/{chunk-fa02jy15.js → chunk-48jezz3j.js} +1 -1
  285. package/dist/{chunk-ren4kg2j.js → chunk-4b26qwbg.js} +13 -13
  286. package/dist/{chunk-ren4kg2j.js.map → chunk-4b26qwbg.js.map} +1 -1
  287. package/dist/{chunk-9k93ah50.js → chunk-4f3ydv7t.js} +33 -69
  288. package/dist/chunk-4f3ydv7t.js.map +10 -0
  289. package/dist/chunk-4y26vs3v.js +97 -0
  290. package/dist/chunk-4y26vs3v.js.map +10 -0
  291. package/dist/{chunk-4as3wt1c.js → chunk-4ymrcdbm.js} +7 -3
  292. package/dist/chunk-4ymrcdbm.js.map +12 -0
  293. package/dist/{chunk-hcbyfxbe.js → chunk-5grk14e5.js} +76 -2
  294. package/dist/{chunk-hcbyfxbe.js.map → chunk-5grk14e5.js.map} +4 -3
  295. package/dist/chunk-5tfev0fv.js +676 -0
  296. package/dist/chunk-5tfev0fv.js.map +15 -0
  297. package/dist/chunk-65abf64x.js +13 -0
  298. package/dist/chunk-65abf64x.js.map +10 -0
  299. package/dist/{chunk-hvsb78a1.js → chunk-65pyhyas.js} +114 -107
  300. package/dist/chunk-65pyhyas.js.map +20 -0
  301. package/dist/{chunk-1sr8ryzk.js → chunk-661ezhks.js} +303 -6
  302. package/dist/chunk-661ezhks.js.map +11 -0
  303. package/dist/{chunk-z3y5kg1x.js → chunk-6eqsgvxk.js} +3 -3
  304. package/dist/{chunk-z3y5kg1x.js.map → chunk-6eqsgvxk.js.map} +2 -2
  305. package/dist/{chunk-c85m1hyj.js → chunk-6n69k945.js} +2 -2
  306. package/dist/{chunk-xfs8x8m9.js → chunk-6p0pastb.js} +5 -5
  307. package/dist/{chunk-rrzt8jdy.js → chunk-6rrtzea3.js} +116 -110
  308. package/dist/chunk-6rrtzea3.js.map +14 -0
  309. package/dist/{chunk-t7x8dmn0.js → chunk-6y0mkhex.js} +3 -3
  310. package/dist/{chunk-es1gxsbf.js → chunk-73v685wb.js} +14 -16
  311. package/dist/chunk-73v685wb.js.map +12 -0
  312. package/dist/{chunk-6c6sn0bh.js → chunk-7gr4j2eq.js} +7930 -5973
  313. package/dist/chunk-7gr4j2eq.js.map +120 -0
  314. package/dist/{chunk-hjzdd750.js → chunk-7mc2wkre.js} +391 -91
  315. package/dist/chunk-7mc2wkre.js.map +50 -0
  316. package/dist/chunk-7z5p905k.js +1660 -0
  317. package/dist/chunk-7z5p905k.js.map +22 -0
  318. package/dist/{chunk-3zxk45er.js → chunk-8ncg20rd.js} +3 -68
  319. package/dist/{chunk-3zxk45er.js.map → chunk-8ncg20rd.js.map} +4 -5
  320. package/dist/{chunk-yxd3nnqt.js → chunk-9mab3dvg.js} +26 -2
  321. package/dist/chunk-9mab3dvg.js.map +11 -0
  322. package/dist/chunk-9wr3yajk.js +42 -0
  323. package/dist/chunk-9wr3yajk.js.map +10 -0
  324. package/dist/chunk-a3faa34j.js +74 -0
  325. package/dist/chunk-a3faa34j.js.map +10 -0
  326. package/dist/chunk-az47zep4.js +41 -0
  327. package/dist/chunk-az47zep4.js.map +10 -0
  328. package/dist/{chunk-v9xd5wzd.js → chunk-bab05bhg.js} +1 -1
  329. package/dist/{chunk-5j58wjct.js → chunk-bktev1ds.js} +14 -11
  330. package/dist/{chunk-5j58wjct.js.map → chunk-bktev1ds.js.map} +3 -3
  331. package/dist/{chunk-b38szspf.js → chunk-c0vk1djt.js} +5 -3
  332. package/dist/chunk-c0vk1djt.js.map +11 -0
  333. package/dist/chunk-c69nj7se.js +3 -0
  334. package/dist/chunk-c69nj7se.js.map +9 -0
  335. package/dist/{chunk-0yh890a4.js → chunk-c844dkwd.js} +35 -7
  336. package/dist/{chunk-0yh890a4.js.map → chunk-c844dkwd.js.map} +3 -3
  337. package/dist/{chunk-d09tj99x.js → chunk-cdk3egjj.js} +24 -5
  338. package/dist/chunk-cdk3egjj.js.map +12 -0
  339. package/dist/chunk-cswhawa2.js +113 -0
  340. package/dist/chunk-cswhawa2.js.map +10 -0
  341. package/dist/{chunk-gc4ntf7d.js → chunk-cwdzcv37.js} +1 -1
  342. package/dist/chunk-d2m879s4.js +288 -0
  343. package/dist/chunk-d2m879s4.js.map +12 -0
  344. package/dist/chunk-d7vyc7k6.js +10 -0
  345. package/dist/chunk-d7vyc7k6.js.map +10 -0
  346. package/dist/{chunk-vyf9kfqf.js → chunk-dp0cdtj2.js} +2 -2
  347. package/dist/{chunk-6x0pqh32.js → chunk-e5wf5vz0.js} +3 -1
  348. package/dist/chunk-e5wf5vz0.js.map +10 -0
  349. package/dist/{chunk-bx9q3cwv.js → chunk-efmm01gj.js} +108 -1045
  350. package/dist/chunk-efmm01gj.js.map +18 -0
  351. package/dist/{chunk-tw03bsmb.js → chunk-eptrvnby.js} +224 -3
  352. package/dist/chunk-eptrvnby.js.map +12 -0
  353. package/dist/{chunk-n33z5bjw.js → chunk-ezne9wc9.js} +1762 -502
  354. package/dist/chunk-ezne9wc9.js.map +71 -0
  355. package/dist/chunk-fe8zwt8b.js +688 -0
  356. package/dist/chunk-fe8zwt8b.js.map +19 -0
  357. package/dist/chunk-ff5xkv0p.js +211 -0
  358. package/dist/chunk-ff5xkv0p.js.map +10 -0
  359. package/dist/{chunk-br3k6qbf.js → chunk-fm62y49k.js} +1 -1
  360. package/dist/{chunk-nq6gpjt7.js → chunk-fntqb7qy.js} +30 -4
  361. package/dist/{chunk-nq6gpjt7.js.map → chunk-fntqb7qy.js.map} +5 -5
  362. package/dist/{chunk-1zq2p6g0.js → chunk-fp2kq35z.js} +26 -10
  363. package/dist/{chunk-1zq2p6g0.js.map → chunk-fp2kq35z.js.map} +5 -5
  364. package/dist/chunk-g5bvzyyr.js +32 -0
  365. package/dist/chunk-g5bvzyyr.js.map +10 -0
  366. package/dist/{chunk-9ybhtmg4.js → chunk-g663fahq.js} +2 -2
  367. package/dist/{chunk-k6q3n2sc.js → chunk-gvj5cd3b.js} +29 -13
  368. package/dist/chunk-gvj5cd3b.js.map +12 -0
  369. package/dist/{chunk-yevzdx4y.js → chunk-h33shhq6.js} +10 -12
  370. package/dist/{chunk-yevzdx4y.js.map → chunk-h33shhq6.js.map} +3 -4
  371. package/dist/{chunk-vpq4shxz.js → chunk-h3pbv7n8.js} +1771 -36
  372. package/dist/chunk-h3pbv7n8.js.map +48 -0
  373. package/dist/chunk-hke9aeen.js +9 -0
  374. package/dist/chunk-hke9aeen.js.map +10 -0
  375. package/dist/chunk-hn2r7z41.js.map +1 -1
  376. package/dist/{chunk-pbcbn83d.js → chunk-hqsp2sx4.js} +54 -8
  377. package/dist/chunk-hqsp2sx4.js.map +14 -0
  378. package/dist/{chunk-9w055r5b.js → chunk-hwarjrgf.js} +1 -1
  379. package/dist/{chunk-9dmt152s.js → chunk-hyesv9dv.js} +2 -2
  380. package/dist/chunk-hz5d43gn.js +45 -0
  381. package/dist/chunk-hz5d43gn.js.map +10 -0
  382. package/dist/{chunk-91mg3nj9.js → chunk-j936th07.js} +86 -41
  383. package/dist/chunk-j936th07.js.map +12 -0
  384. package/dist/chunk-jcfw4h7m.js +9 -0
  385. package/dist/chunk-jcfw4h7m.js.map +10 -0
  386. package/dist/chunk-kcqpk9w1.js +75 -0
  387. package/dist/chunk-kcqpk9w1.js.map +10 -0
  388. package/dist/{chunk-x6m907x7.js → chunk-m2nevja0.js} +6 -7
  389. package/dist/{chunk-x6m907x7.js.map → chunk-m2nevja0.js.map} +3 -3
  390. package/dist/{chunk-x9v4cx1d.js → chunk-m36fw8ft.js} +1 -1
  391. package/dist/{chunk-a40ad1ft.js → chunk-mbsbxarb.js} +1 -1
  392. package/dist/chunk-mzx71snp.js +129 -0
  393. package/dist/chunk-mzx71snp.js.map +10 -0
  394. package/dist/{chunk-6aawea28.js → chunk-n8q5j6y5.js} +1 -1
  395. package/dist/{chunk-dk8tkk5f.js → chunk-n9zpx9c6.js} +4 -4
  396. package/dist/{chunk-7t429e3f.js → chunk-npcr0228.js} +1 -1
  397. package/dist/chunk-nydf3dbe.js +663 -0
  398. package/dist/chunk-nydf3dbe.js.map +13 -0
  399. package/dist/chunk-pdt5cw8z.js +233 -0
  400. package/dist/chunk-pdt5cw8z.js.map +11 -0
  401. package/dist/{chunk-rj69qcrd.js → chunk-pgrf64hp.js} +55 -7
  402. package/dist/chunk-pgrf64hp.js.map +12 -0
  403. package/dist/{chunk-z4m0yz8c.js → chunk-q4pmvkg0.js} +1 -1
  404. package/dist/chunk-qhqgp4jf.js +1418 -0
  405. package/dist/chunk-qhqgp4jf.js.map +22 -0
  406. package/dist/chunk-qx00vjrj.js +144 -0
  407. package/dist/chunk-qx00vjrj.js.map +13 -0
  408. package/dist/{chunk-5e43w60z.js → chunk-r6szek0x.js} +184 -7
  409. package/dist/chunk-r6szek0x.js.map +10 -0
  410. package/dist/{chunk-v4jbb3rs.js → chunk-rap5w0x0.js} +156 -2
  411. package/dist/chunk-rap5w0x0.js.map +10 -0
  412. package/dist/{chunk-pfp1txq2.js → chunk-sgx82nnt.js} +5 -31
  413. package/dist/{chunk-pfp1txq2.js.map → chunk-sgx82nnt.js.map} +3 -4
  414. package/dist/{chunk-bkpke1sg.js → chunk-t5608tkq.js} +3 -1
  415. package/dist/{chunk-bkpke1sg.js.map → chunk-t5608tkq.js.map} +3 -3
  416. package/dist/{chunk-29yx306f.js → chunk-tdxfsg1c.js} +507 -265
  417. package/dist/chunk-tdxfsg1c.js.map +23 -0
  418. package/dist/chunk-vabga7fk.js +176 -0
  419. package/dist/chunk-vabga7fk.js.map +12 -0
  420. package/dist/{chunk-gsjm1wms.js → chunk-vhbw5sqm.js} +33 -3
  421. package/dist/chunk-vhbw5sqm.js.map +10 -0
  422. package/dist/{chunk-tpn40322.js → chunk-vpgwq5nf.js} +104 -17
  423. package/dist/chunk-vpgwq5nf.js.map +21 -0
  424. package/dist/{chunk-0rbyz4qy.js → chunk-vyt322b6.js} +586 -171
  425. package/dist/{chunk-0rbyz4qy.js.map → chunk-vyt322b6.js.map} +12 -9
  426. package/dist/chunk-waqk73p1.js +2380 -0
  427. package/dist/chunk-waqk73p1.js.map +23 -0
  428. package/dist/{chunk-jhm3zsa7.js → chunk-wkv3h3q7.js} +64 -2
  429. package/dist/{chunk-jhm3zsa7.js.map → chunk-wkv3h3q7.js.map} +3 -3
  430. package/dist/chunk-wsc1brye.js +27 -0
  431. package/dist/chunk-wsc1brye.js.map +10 -0
  432. package/dist/chunk-x0v3jd47.js +124 -0
  433. package/dist/chunk-x0v3jd47.js.map +10 -0
  434. package/dist/{chunk-96yw3pwd.js → chunk-y7dbmaqh.js} +28 -2
  435. package/dist/chunk-y7dbmaqh.js.map +10 -0
  436. package/dist/{chunk-d0bqz29d.js → chunk-yc9ners4.js} +124 -19
  437. package/dist/{chunk-d0bqz29d.js.map → chunk-yc9ners4.js.map} +8 -8
  438. package/dist/{chunk-8mx7qw3y.js → chunk-zbc929zg.js} +29 -5
  439. package/dist/chunk-zbc929zg.js.map +13 -0
  440. package/dist/chunk-zrvhsq7f.js +37 -0
  441. package/dist/chunk-zrvhsq7f.js.map +10 -0
  442. package/dist/datasets/builders.d.ts +15 -2
  443. package/dist/datasets/builders.d.ts.map +1 -1
  444. package/dist/datasets/column-index.d.ts +7 -0
  445. package/dist/datasets/column-index.d.ts.map +1 -0
  446. package/dist/datasets/execution.d.ts +3 -2
  447. package/dist/datasets/execution.d.ts.map +1 -1
  448. package/dist/datasets/write.js +8 -8
  449. package/dist/error-reporting/internal.js +4 -4
  450. package/dist/errors/catalog.d.ts +26 -0
  451. package/dist/errors/catalog.d.ts.map +1 -1
  452. package/dist/errors/internal.d.ts +1 -0
  453. package/dist/errors/internal.d.ts.map +1 -1
  454. package/dist/errors/internal.js +7 -4
  455. package/dist/errors/internal.js.map +1 -1
  456. package/dist/events/definitions.d.ts +7 -0
  457. package/dist/events/definitions.d.ts.map +1 -1
  458. package/dist/events/execution.d.ts +12 -2
  459. package/dist/events/execution.d.ts.map +1 -1
  460. package/dist/events/index.d.ts +2 -3
  461. package/dist/events/index.d.ts.map +1 -1
  462. package/dist/events/index.js +9 -11
  463. package/dist/events/index.js.map +1 -1
  464. package/dist/events/scope.d.ts.map +1 -1
  465. package/dist/events/scope.js +1 -1
  466. package/dist/events/selectors/builder.d.ts +12 -1
  467. package/dist/events/selectors/builder.d.ts.map +1 -1
  468. package/dist/events/selectors/index.d.ts +2 -2
  469. package/dist/events/selectors/index.d.ts.map +1 -1
  470. package/dist/events/selectors/index.js +2 -2
  471. package/dist/events/selectors/types.d.ts +19 -3
  472. package/dist/events/selectors/types.d.ts.map +1 -1
  473. package/dist/events/service.d.ts +17 -2
  474. package/dist/events/service.d.ts.map +1 -1
  475. package/dist/events/types/index.d.ts +3 -1
  476. package/dist/events/types/index.d.ts.map +1 -1
  477. package/dist/events/types/users.d.ts +63 -0
  478. package/dist/events/types/users.d.ts.map +1 -0
  479. package/dist/events/view-conditions.d.ts +34 -0
  480. package/dist/events/view-conditions.d.ts.map +1 -0
  481. package/dist/execution/agent.d.ts +15 -0
  482. package/dist/execution/agent.d.ts.map +1 -1
  483. package/dist/execution/agent.js +72 -59
  484. package/dist/execution/agent.js.map +1 -1
  485. package/dist/execution/authorization.d.ts.map +1 -1
  486. package/dist/execution/authorized-object-reader.d.ts +102 -12
  487. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  488. package/dist/execution/lineage.d.ts +7 -0
  489. package/dist/execution/lineage.d.ts.map +1 -0
  490. package/dist/execution/object-reader-clearance.d.ts +41 -0
  491. package/dist/execution/object-reader-clearance.d.ts.map +1 -0
  492. package/dist/execution/object-reader-ontology.d.ts +12 -0
  493. package/dist/execution/object-reader-ontology.d.ts.map +1 -0
  494. package/dist/execution/object-reader-security.d.ts +66 -0
  495. package/dist/execution/object-reader-security.d.ts.map +1 -0
  496. package/dist/execution/object-reader-users.d.ts +20 -0
  497. package/dist/execution/object-reader-users.d.ts.map +1 -0
  498. package/dist/execution/preparation.d.ts +23 -0
  499. package/dist/execution/preparation.d.ts.map +1 -0
  500. package/dist/execution/primitive.js +70 -59
  501. package/dist/execution/primitive.js.map +1 -1
  502. package/dist/execution/request.d.ts +2 -1
  503. package/dist/execution/request.d.ts.map +1 -1
  504. package/dist/execution/request.js +72 -57
  505. package/dist/execution/request.js.map +3 -3
  506. package/dist/execution/unique-lookup.d.ts +14 -0
  507. package/dist/execution/unique-lookup.d.ts.map +1 -0
  508. package/dist/execution/visible-objects.d.ts +12 -0
  509. package/dist/execution/visible-objects.d.ts.map +1 -0
  510. package/dist/http/api-routes.d.ts +17 -0
  511. package/dist/http/api-routes.d.ts.map +1 -1
  512. package/dist/http/index.js +1 -1
  513. package/dist/index.d.ts +49 -16
  514. package/dist/index.d.ts.map +1 -1
  515. package/dist/index.js +168 -142
  516. package/dist/index.js.map +1 -1
  517. package/dist/lake-storage/in-memory.d.ts +1 -0
  518. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  519. package/dist/lake-storage/index.d.ts +6 -3
  520. package/dist/lake-storage/index.d.ts.map +1 -1
  521. package/dist/lake-storage/index.js +21 -13
  522. package/dist/lake-storage/index.js.map +1 -1
  523. package/dist/lake-storage/lineage.d.ts +94 -0
  524. package/dist/lake-storage/lineage.d.ts.map +1 -0
  525. package/dist/lake-storage/sql-transforms.d.ts +45 -0
  526. package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
  527. package/dist/lake-storage/types.d.ts +55 -1
  528. package/dist/lake-storage/types.d.ts.map +1 -1
  529. package/dist/lake-storage/version-inputs.d.ts +14 -3
  530. package/dist/lake-storage/version-inputs.d.ts.map +1 -1
  531. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  532. package/dist/materialization/errors.d.ts +25 -0
  533. package/dist/materialization/errors.d.ts.map +1 -1
  534. package/dist/materialization/event-envelopes.d.ts +5 -0
  535. package/dist/materialization/event-envelopes.d.ts.map +1 -1
  536. package/dist/materialization/index.d.ts +1 -1
  537. package/dist/materialization/index.d.ts.map +1 -1
  538. package/dist/materialization/index.js +14 -8
  539. package/dist/materialization/index.js.map +1 -1
  540. package/dist/materialization/model.d.ts +20 -2
  541. package/dist/materialization/model.d.ts.map +1 -1
  542. package/dist/materializer/edits/commit.d.ts.map +1 -1
  543. package/dist/materializer/edits/load-state.d.ts +5 -1
  544. package/dist/materializer/edits/load-state.d.ts.map +1 -1
  545. package/dist/materializer/edits/plan.d.ts.map +1 -1
  546. package/dist/materializer/edits/unique-values.d.ts +47 -0
  547. package/dist/materializer/edits/unique-values.d.ts.map +1 -0
  548. package/dist/materializer/edits/working-state.d.ts +6 -1
  549. package/dist/materializer/edits/working-state.d.ts.map +1 -1
  550. package/dist/materializer/execution/work-records.d.ts +7 -1
  551. package/dist/materializer/execution/work-records.d.ts.map +1 -1
  552. package/dist/materializer/index.js +51 -46
  553. package/dist/materializer/index.js.map +1 -1
  554. package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
  555. package/dist/materializer/projections/source-materialization.d.ts +1 -0
  556. package/dist/materializer/projections/source-materialization.d.ts.map +1 -1
  557. package/dist/materializer/shared/normalize.d.ts.map +1 -1
  558. package/dist/materializer/shared/projection-run.d.ts +0 -1
  559. package/dist/materializer/shared/projection-run.d.ts.map +1 -1
  560. package/dist/materializer/telemetry/plan.d.ts.map +1 -1
  561. package/dist/models/audio/catalog.d.ts +13 -1
  562. package/dist/models/audio/catalog.d.ts.map +1 -1
  563. package/dist/models/audio/errors.d.ts +6 -1
  564. package/dist/models/audio/errors.d.ts.map +1 -1
  565. package/dist/models/audio/runtime.d.ts.map +1 -1
  566. package/dist/models/audio/speech.d.ts +8 -0
  567. package/dist/models/audio/speech.d.ts.map +1 -0
  568. package/dist/models/audio/types.d.ts +93 -0
  569. package/dist/models/audio/types.d.ts.map +1 -1
  570. package/dist/models/calls.d.ts +27 -0
  571. package/dist/models/calls.d.ts.map +1 -0
  572. package/dist/models/catalog-index.d.ts +7 -4
  573. package/dist/models/catalog-index.d.ts.map +1 -1
  574. package/dist/models/catalog.d.ts +55 -3
  575. package/dist/models/catalog.d.ts.map +1 -1
  576. package/dist/models/decision/runtime.d.ts +6 -1
  577. package/dist/models/decision/runtime.d.ts.map +1 -1
  578. package/dist/models/decision/validation.d.ts +4 -1
  579. package/dist/models/decision/validation.d.ts.map +1 -1
  580. package/dist/models/definitions.d.ts +23 -1
  581. package/dist/models/definitions.d.ts.map +1 -1
  582. package/dist/models/events.d.ts +12 -1
  583. package/dist/models/events.d.ts.map +1 -1
  584. package/dist/models/execution/binding.d.ts +3 -1
  585. package/dist/models/execution/binding.d.ts.map +1 -1
  586. package/dist/models/execution/index.d.ts +1 -0
  587. package/dist/models/execution/index.d.ts.map +1 -1
  588. package/dist/models/execution/index.js +50 -39
  589. package/dist/models/execution/index.js.map +1 -1
  590. package/dist/models/execution/model-call-accounting.d.ts.map +1 -1
  591. package/dist/models/execution/model-call-recorder.d.ts +3 -0
  592. package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
  593. package/dist/models/execution/usage.d.ts.map +1 -1
  594. package/dist/models/execution.d.ts +4 -2
  595. package/dist/models/execution.d.ts.map +1 -1
  596. package/dist/models/generation-types.d.ts +8 -1
  597. package/dist/models/generation-types.d.ts.map +1 -1
  598. package/dist/models/image/catalog.d.ts +13 -0
  599. package/dist/models/image/catalog.d.ts.map +1 -0
  600. package/dist/models/image/errors.d.ts +8 -0
  601. package/dist/models/image/errors.d.ts.map +1 -0
  602. package/dist/models/image/runtime.d.ts +8 -0
  603. package/dist/models/image/runtime.d.ts.map +1 -0
  604. package/dist/models/image/types.d.ts +103 -0
  605. package/dist/models/image/types.d.ts.map +1 -0
  606. package/dist/models/index.d.ts +12 -8
  607. package/dist/models/index.d.ts.map +1 -1
  608. package/dist/models/index.js +17 -7
  609. package/dist/models/index.js.map +1 -1
  610. package/dist/models/input-file.d.ts +9 -0
  611. package/dist/models/input-file.d.ts.map +1 -0
  612. package/dist/models/language-model.d.ts +13 -0
  613. package/dist/models/language-model.d.ts.map +1 -1
  614. package/dist/models/pricing.d.ts +25 -10
  615. package/dist/models/pricing.d.ts.map +1 -1
  616. package/dist/models/rate-card.d.ts +44 -6
  617. package/dist/models/rate-card.d.ts.map +1 -1
  618. package/dist/objects/clearance-redaction.d.ts +27 -0
  619. package/dist/objects/clearance-redaction.d.ts.map +1 -0
  620. package/dist/objects/conditional-writes.d.ts +37 -0
  621. package/dist/objects/conditional-writes.d.ts.map +1 -0
  622. package/dist/objects/execution.d.ts +2 -0
  623. package/dist/objects/execution.d.ts.map +1 -1
  624. package/dist/objects/index.d.ts +1 -0
  625. package/dist/objects/index.d.ts.map +1 -1
  626. package/dist/objects/index.js +77 -60
  627. package/dist/objects/index.js.map +1 -1
  628. package/dist/objects/link/authorization.d.ts +11 -5
  629. package/dist/objects/link/authorization.d.ts.map +1 -1
  630. package/dist/objects/link/endpoints.d.ts +21 -2
  631. package/dist/objects/link/endpoints.d.ts.map +1 -1
  632. package/dist/objects/link/remove.d.ts.map +1 -1
  633. package/dist/objects/link/upsert-batch.d.ts.map +1 -1
  634. package/dist/objects/link/upsert.d.ts.map +1 -1
  635. package/dist/objects/materializer-adapter.d.ts +13 -4
  636. package/dist/objects/materializer-adapter.d.ts.map +1 -1
  637. package/dist/objects/object/delete.d.ts +3 -0
  638. package/dist/objects/object/delete.d.ts.map +1 -1
  639. package/dist/objects/object/upsert-batch.d.ts.map +1 -1
  640. package/dist/objects/object/upsert.d.ts.map +1 -1
  641. package/dist/objects/property-clearance.d.ts +47 -24
  642. package/dist/objects/property-clearance.d.ts.map +1 -1
  643. package/dist/objects/query/clearance-admission.d.ts +10 -0
  644. package/dist/objects/query/clearance-admission.d.ts.map +1 -0
  645. package/dist/objects/query/current-user.d.ts +17 -0
  646. package/dist/objects/query/current-user.d.ts.map +1 -0
  647. package/dist/objects/query/executor.d.ts +14 -0
  648. package/dist/objects/query/executor.d.ts.map +1 -1
  649. package/dist/objects/query/index.d.ts +2 -2
  650. package/dist/objects/query/index.d.ts.map +1 -1
  651. package/dist/objects/query/index.js +55 -49
  652. package/dist/objects/query/index.js.map +1 -1
  653. package/dist/objects/query/ir.d.ts +19 -1
  654. package/dist/objects/query/ir.d.ts.map +1 -1
  655. package/dist/objects/query/link-query-clearance.d.ts +21 -0
  656. package/dist/objects/query/link-query-clearance.d.ts.map +1 -0
  657. package/dist/objects/query/matches-predicate.d.ts +9 -0
  658. package/dist/objects/query/matches-predicate.d.ts.map +1 -0
  659. package/dist/objects/query/normalize.d.ts.map +1 -1
  660. package/dist/objects/query/user-expansions.d.ts +27 -0
  661. package/dist/objects/query/user-expansions.d.ts.map +1 -0
  662. package/dist/objects/query/validate.d.ts.map +1 -1
  663. package/dist/objects/runtime-batch.d.ts +3 -1
  664. package/dist/objects/runtime-batch.d.ts.map +1 -1
  665. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  666. package/dist/objects/sdk/query-executor.d.ts +6 -0
  667. package/dist/objects/sdk/query-executor.d.ts.map +1 -1
  668. package/dist/objects/serialize.d.ts +39 -0
  669. package/dist/objects/serialize.d.ts.map +1 -0
  670. package/dist/objects/unique-violation.d.ts +22 -0
  671. package/dist/objects/unique-violation.d.ts.map +1 -0
  672. package/dist/ontology/builders.d.ts +3 -1
  673. package/dist/ontology/builders.d.ts.map +1 -1
  674. package/dist/ontology/docs-markdown.d.ts +1 -1
  675. package/dist/ontology/docs-markdown.d.ts.map +1 -1
  676. package/dist/ontology/index.d.ts +2 -2
  677. package/dist/ontology/index.d.ts.map +1 -1
  678. package/dist/ontology/index.js +13 -9
  679. package/dist/ontology/index.js.map +1 -1
  680. package/dist/ontology/internal.js +9 -7
  681. package/dist/ontology/internal.js.map +3 -3
  682. package/dist/ontology/json-schema.d.ts.map +1 -1
  683. package/dist/ontology/primitives.d.ts +3 -0
  684. package/dist/ontology/primitives.d.ts.map +1 -1
  685. package/dist/ontology/registry.d.ts +6 -0
  686. package/dist/ontology/registry.d.ts.map +1 -1
  687. package/dist/ontology/types.d.ts +9 -0
  688. package/dist/ontology/types.d.ts.map +1 -1
  689. package/dist/ontology/unique-values.d.ts +26 -0
  690. package/dist/ontology/unique-values.d.ts.map +1 -0
  691. package/dist/ontology/user-ref.d.ts +23 -0
  692. package/dist/ontology/user-ref.d.ts.map +1 -1
  693. package/dist/ontology/validation/properties.d.ts.map +1 -1
  694. package/dist/ontology/validation/schema.d.ts.map +1 -1
  695. package/dist/pipelines/index.d.ts +2 -0
  696. package/dist/pipelines/index.d.ts.map +1 -1
  697. package/dist/pipelines/index.js +61 -46
  698. package/dist/pipelines/index.js.map +1 -1
  699. package/dist/pipelines/lineage.d.ts +17 -0
  700. package/dist/pipelines/lineage.d.ts.map +1 -0
  701. package/dist/projections/internal.d.ts +2 -2
  702. package/dist/projections/internal.js +42 -38
  703. package/dist/projections/internal.js.map +1 -1
  704. package/dist/projections/registry.d.ts +4 -0
  705. package/dist/projections/registry.d.ts.map +1 -1
  706. package/dist/projections/revision.d.ts +15 -0
  707. package/dist/projections/revision.d.ts.map +1 -1
  708. package/dist/projections/run-dispatch.d.ts.map +1 -1
  709. package/dist/projections/types.d.ts +2 -0
  710. package/dist/projections/types.d.ts.map +1 -1
  711. package/dist/query.d.ts +4 -2
  712. package/dist/query.d.ts.map +1 -1
  713. package/dist/query.js +2 -2
  714. package/dist/rules/execution.d.ts.map +1 -1
  715. package/dist/runtime/ai-cost.d.ts +2 -0
  716. package/dist/runtime/ai-cost.d.ts.map +1 -1
  717. package/dist/runtime/ai-usage.d.ts +7 -0
  718. package/dist/runtime/ai-usage.d.ts.map +1 -1
  719. package/dist/runtime/create.d.ts +3 -0
  720. package/dist/runtime/create.d.ts.map +1 -1
  721. package/dist/runtime/host.d.ts +6 -0
  722. package/dist/runtime/host.d.ts.map +1 -1
  723. package/dist/runtime/index.d.ts +1 -1
  724. package/dist/runtime/index.d.ts.map +1 -1
  725. package/dist/runtime/internal.d.ts +2 -0
  726. package/dist/runtime/internal.d.ts.map +1 -1
  727. package/dist/runtime/internal.js +58 -50
  728. package/dist/runtime/internal.js.map +1 -1
  729. package/dist/runtime/ontology-mutations.d.ts +2 -0
  730. package/dist/runtime/ontology-mutations.d.ts.map +1 -1
  731. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  732. package/dist/runtime/sixb.d.ts +10 -0
  733. package/dist/runtime/sixb.d.ts.map +1 -1
  734. package/dist/runtime/types.d.ts +66 -8
  735. package/dist/runtime/types.d.ts.map +1 -1
  736. package/dist/sandboxes/auth.d.ts +16 -0
  737. package/dist/sandboxes/auth.d.ts.map +1 -1
  738. package/dist/sandboxes/config.d.ts.map +1 -1
  739. package/dist/sandboxes/configuration.d.ts +26 -0
  740. package/dist/sandboxes/configuration.d.ts.map +1 -1
  741. package/dist/sandboxes/index.d.ts +1 -1
  742. package/dist/sandboxes/index.d.ts.map +1 -1
  743. package/dist/sandboxes/index.js +15 -13
  744. package/dist/sandboxes/index.js.map +1 -1
  745. package/dist/sandboxes/sandbox.d.ts +28 -5
  746. package/dist/sandboxes/sandbox.d.ts.map +1 -1
  747. package/dist/schedules/builders.d.ts.map +1 -1
  748. package/dist/schedules/index.js +3 -3
  749. package/dist/schedules/runtime.d.ts.map +1 -1
  750. package/dist/schedules/validation.d.ts.map +1 -1
  751. package/dist/security/applied-markings-contribution.d.ts +58 -0
  752. package/dist/security/applied-markings-contribution.d.ts.map +1 -0
  753. package/dist/security/applied-markings-host.d.ts +10 -0
  754. package/dist/security/applied-markings-host.d.ts.map +1 -0
  755. package/dist/security/applied-markings-snapshot.d.ts +67 -0
  756. package/dist/security/applied-markings-snapshot.d.ts.map +1 -0
  757. package/dist/security/applied-markings.d.ts +73 -0
  758. package/dist/security/applied-markings.d.ts.map +1 -0
  759. package/dist/security/dataset-version-markings.d.ts +47 -0
  760. package/dist/security/dataset-version-markings.d.ts.map +1 -0
  761. package/dist/security/grants.d.ts +13 -4
  762. package/dist/security/grants.d.ts.map +1 -1
  763. package/dist/security/index.d.ts +2 -1
  764. package/dist/security/index.d.ts.map +1 -1
  765. package/dist/security/internal.d.ts +15 -0
  766. package/dist/security/internal.d.ts.map +1 -0
  767. package/dist/security/internal.js +135 -0
  768. package/dist/security/internal.js.map +10 -0
  769. package/dist/security/marking-propagation.d.ts +62 -0
  770. package/dist/security/marking-propagation.d.ts.map +1 -0
  771. package/dist/security/marking-sets.d.ts +14 -0
  772. package/dist/security/marking-sets.d.ts.map +1 -0
  773. package/dist/security/markings.d.ts +6 -3
  774. package/dist/security/markings.d.ts.map +1 -1
  775. package/dist/security/pipeline-markings.d.ts +20 -0
  776. package/dist/security/pipeline-markings.d.ts.map +1 -0
  777. package/dist/security/project.d.ts +7 -0
  778. package/dist/security/project.d.ts.map +1 -0
  779. package/dist/security/projection-markings.d.ts +71 -0
  780. package/dist/security/projection-markings.d.ts.map +1 -0
  781. package/dist/security/public.js +2 -2
  782. package/dist/security/redactions.d.ts +4 -1
  783. package/dist/security/redactions.d.ts.map +1 -1
  784. package/dist/security/registry.d.ts +6 -0
  785. package/dist/security/registry.d.ts.map +1 -1
  786. package/dist/security/types.d.ts +64 -6
  787. package/dist/security/types.d.ts.map +1 -1
  788. package/dist/security/validation.d.ts.map +1 -1
  789. package/dist/security/view-conditions.d.ts +37 -0
  790. package/dist/security/view-conditions.d.ts.map +1 -0
  791. package/dist/shares/execution.d.ts.map +1 -1
  792. package/dist/shares/internal.js +40 -36
  793. package/dist/shares/internal.js.map +2 -2
  794. package/dist/storage/action-runs/failure.js +3 -3
  795. package/dist/storage/action-runs/in-memory.d.ts +4 -0
  796. package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
  797. package/dist/storage/action-runs/provider.js +1 -1
  798. package/dist/storage/action-runs/types.d.ts +9 -1
  799. package/dist/storage/action-runs/types.d.ts.map +1 -1
  800. package/dist/storage/activity/in-memory.d.ts +55 -0
  801. package/dist/storage/activity/in-memory.d.ts.map +1 -0
  802. package/dist/storage/activity/index.d.ts +3 -0
  803. package/dist/storage/activity/index.d.ts.map +1 -0
  804. package/dist/storage/activity/policy.d.ts +96 -0
  805. package/dist/storage/activity/policy.d.ts.map +1 -0
  806. package/dist/storage/activity/types.d.ts +191 -0
  807. package/dist/storage/activity/types.d.ts.map +1 -0
  808. package/dist/storage/agents/errors.d.ts +3 -1
  809. package/dist/storage/agents/errors.d.ts.map +1 -1
  810. package/dist/storage/agents/in-memory.d.ts +124 -3
  811. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  812. package/dist/storage/agents/index.d.ts +2 -2
  813. package/dist/storage/agents/index.d.ts.map +1 -1
  814. package/dist/storage/agents/provider.d.ts +154 -4
  815. package/dist/storage/agents/provider.d.ts.map +1 -1
  816. package/dist/storage/agents/provider.js +60 -8
  817. package/dist/storage/agents/provider.js.map +1 -1
  818. package/dist/storage/agents/types.d.ts +573 -20
  819. package/dist/storage/agents/types.d.ts.map +1 -1
  820. package/dist/storage/ai-cost/analytics.d.ts +10 -1
  821. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  822. package/dist/storage/ai-cost/groups.d.ts +9 -0
  823. package/dist/storage/ai-cost/groups.d.ts.map +1 -1
  824. package/dist/storage/ai-cost/index.d.ts +1 -1
  825. package/dist/storage/ai-cost/index.d.ts.map +1 -1
  826. package/dist/storage/ai-cost/provider.d.ts +2 -1
  827. package/dist/storage/ai-cost/provider.d.ts.map +1 -1
  828. package/dist/storage/ai-cost/provider.js +11 -5
  829. package/dist/storage/ai-cost/provider.js.map +1 -1
  830. package/dist/storage/ai-cost/types.d.ts +14 -2
  831. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  832. package/dist/storage/ai-cost/validation.d.ts.map +1 -1
  833. package/dist/storage/ai-limits/enforcement.js +6 -5
  834. package/dist/storage/ai-limits/enforcement.js.map +1 -1
  835. package/dist/storage/ai-limits/provider.d.ts +1 -1
  836. package/dist/storage/ai-limits/provider.d.ts.map +1 -1
  837. package/dist/storage/ai-limits/provider.js +3 -2
  838. package/dist/storage/ai-limits/provider.js.map +1 -1
  839. package/dist/storage/ai-usage/in-memory.d.ts +5 -1
  840. package/dist/storage/ai-usage/in-memory.d.ts.map +1 -1
  841. package/dist/storage/ai-usage/index.d.ts +2 -2
  842. package/dist/storage/ai-usage/index.d.ts.map +1 -1
  843. package/dist/storage/ai-usage/record.d.ts +5 -1
  844. package/dist/storage/ai-usage/record.d.ts.map +1 -1
  845. package/dist/storage/ai-usage/types.d.ts +33 -0
  846. package/dist/storage/ai-usage/types.d.ts.map +1 -1
  847. package/dist/storage/ai-usage/usage.d.ts +2 -0
  848. package/dist/storage/ai-usage/usage.d.ts.map +1 -1
  849. package/dist/storage/artifacts/errors.d.ts +18 -0
  850. package/dist/storage/artifacts/errors.d.ts.map +1 -0
  851. package/dist/storage/artifacts/in-memory.d.ts +55 -0
  852. package/dist/storage/artifacts/in-memory.d.ts.map +1 -0
  853. package/dist/storage/artifacts/index.d.ts +5 -0
  854. package/dist/storage/artifacts/index.d.ts.map +1 -0
  855. package/dist/storage/artifacts/record.d.ts +34 -0
  856. package/dist/storage/artifacts/record.d.ts.map +1 -0
  857. package/dist/storage/artifacts/types.d.ts +263 -0
  858. package/dist/storage/artifacts/types.d.ts.map +1 -0
  859. package/dist/storage/auth/in-memory/auth-storage.d.ts +3 -2
  860. package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
  861. package/dist/storage/auth/in-memory/sessions.d.ts +2 -1
  862. package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -1
  863. package/dist/storage/auth/in-memory/users.d.ts +7 -3
  864. package/dist/storage/auth/in-memory/users.d.ts.map +1 -1
  865. package/dist/storage/auth/index.d.ts +1 -1
  866. package/dist/storage/auth/index.d.ts.map +1 -1
  867. package/dist/storage/auth/types.d.ts +59 -9
  868. package/dist/storage/auth/types.d.ts.map +1 -1
  869. package/dist/storage/connector-connections/provider.js +2 -2
  870. package/dist/storage/executions/in-memory.d.ts +3 -1
  871. package/dist/storage/executions/in-memory.d.ts.map +1 -1
  872. package/dist/storage/executions/index.d.ts +1 -1
  873. package/dist/storage/executions/index.d.ts.map +1 -1
  874. package/dist/storage/executions/provider.d.ts +2 -0
  875. package/dist/storage/executions/provider.d.ts.map +1 -1
  876. package/dist/storage/executions/provider.js +9 -223
  877. package/dist/storage/executions/provider.js.map +3 -4
  878. package/dist/storage/executions/types.d.ts +46 -0
  879. package/dist/storage/executions/types.d.ts.map +1 -1
  880. package/dist/storage/file-upload-sessions/provider.js +17 -14
  881. package/dist/storage/file-upload-sessions/provider.js.map +1 -1
  882. package/dist/storage/in-memory/index.d.ts +8 -0
  883. package/dist/storage/in-memory/index.d.ts.map +1 -1
  884. package/dist/storage/index.d.ts +15 -11
  885. package/dist/storage/index.d.ts.map +1 -1
  886. package/dist/storage/index.js +78 -66
  887. package/dist/storage/index.js.map +1 -1
  888. package/dist/storage/internal.d.ts +4 -1
  889. package/dist/storage/internal.d.ts.map +1 -1
  890. package/dist/storage/internal.js +80 -19
  891. package/dist/storage/internal.js.map +1 -1
  892. package/dist/storage/migrations/migrate-storage.d.ts +4 -1
  893. package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
  894. package/dist/storage/migrations/prepare-unique-properties.d.ts +18 -0
  895. package/dist/storage/migrations/prepare-unique-properties.d.ts.map +1 -0
  896. package/dist/storage/objects/guard.d.ts +1 -1
  897. package/dist/storage/objects/guard.d.ts.map +1 -1
  898. package/dist/storage/objects/in-memory/conditional-reader.d.ts +5 -0
  899. package/dist/storage/objects/in-memory/conditional-reader.d.ts.map +1 -0
  900. package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
  901. package/dist/storage/objects/in-memory/read-scope.d.ts +3 -9
  902. package/dist/storage/objects/in-memory/read-scope.d.ts.map +1 -1
  903. package/dist/storage/objects/in-memory/read-source.d.ts +10 -1
  904. package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -1
  905. package/dist/storage/objects/in-memory/scoped-reader.d.ts +14 -0
  906. package/dist/storage/objects/in-memory/scoped-reader.d.ts.map +1 -0
  907. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
  908. package/dist/storage/objects/in-memory/storage.d.ts +36 -1
  909. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
  910. package/dist/storage/objects/index.d.ts +2 -2
  911. package/dist/storage/objects/index.d.ts.map +1 -1
  912. package/dist/storage/objects/read-scope.d.ts +9 -1
  913. package/dist/storage/objects/read-scope.d.ts.map +1 -1
  914. package/dist/storage/objects/types.d.ts +64 -1
  915. package/dist/storage/objects/types.d.ts.map +1 -1
  916. package/dist/storage/ontology/in-memory/index.d.ts +2 -0
  917. package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
  918. package/dist/storage/ontology/in-memory/materializations.d.ts +1 -0
  919. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  920. package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -1
  921. package/dist/storage/ontology/in-memory/sources.d.ts +2 -1
  922. package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
  923. package/dist/storage/ontology/in-memory/unique-values.d.ts +32 -0
  924. package/dist/storage/ontology/in-memory/unique-values.d.ts.map +1 -0
  925. package/dist/storage/ontology/index.d.ts +5 -2
  926. package/dist/storage/ontology/index.d.ts.map +1 -1
  927. package/dist/storage/ontology/materializations.d.ts +34 -1
  928. package/dist/storage/ontology/materializations.d.ts.map +1 -1
  929. package/dist/storage/ontology/provider-work.d.ts +15 -2
  930. package/dist/storage/ontology/provider-work.d.ts.map +1 -1
  931. package/dist/storage/ontology/provider.d.ts +1 -1
  932. package/dist/storage/ontology/provider.d.ts.map +1 -1
  933. package/dist/storage/ontology/provider.js +9 -4
  934. package/dist/storage/ontology/provider.js.map +1 -1
  935. package/dist/storage/ontology/sources.d.ts +15 -0
  936. package/dist/storage/ontology/sources.d.ts.map +1 -1
  937. package/dist/storage/ontology/unique-values.d.ts +54 -0
  938. package/dist/storage/ontology/unique-values.d.ts.map +1 -0
  939. package/dist/storage/operation-scope.d.ts +1 -1
  940. package/dist/storage/operation-scope.d.ts.map +1 -1
  941. package/dist/storage/operation-scope.js +1 -1
  942. package/dist/storage/projection-runs/in-memory.d.ts +0 -6
  943. package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
  944. package/dist/storage/projection-runs/provider.js +3 -3
  945. package/dist/storage/share-grants/in-memory.d.ts +2 -1
  946. package/dist/storage/share-grants/in-memory.d.ts.map +1 -1
  947. package/dist/storage/share-grants/index.d.ts +1 -1
  948. package/dist/storage/share-grants/index.d.ts.map +1 -1
  949. package/dist/storage/share-grants/provider.js +4 -3
  950. package/dist/storage/share-grants/provider.js.map +1 -1
  951. package/dist/storage/share-grants/types.d.ts +6 -0
  952. package/dist/storage/share-grants/types.d.ts.map +1 -1
  953. package/dist/storage/types.d.ts +6 -2
  954. package/dist/storage/types.d.ts.map +1 -1
  955. package/dist/storage/workflow-runs/in-memory.d.ts +4 -0
  956. package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
  957. package/dist/storage/workflow-runs/provider.js +18 -14
  958. package/dist/storage/workflow-runs/provider.js.map +1 -1
  959. package/dist/storage/workflow-runs/types.d.ts +5 -0
  960. package/dist/storage/workflow-runs/types.d.ts.map +1 -1
  961. package/dist/syncs/index.js +49 -45
  962. package/dist/syncs/index.js.map +1 -1
  963. package/dist/testing/action-run-storage-contract.d.ts.map +1 -1
  964. package/dist/testing/activity-storage-contract.d.ts +14 -0
  965. package/dist/testing/activity-storage-contract.d.ts.map +1 -0
  966. package/dist/testing/agent-approval-storage-contract.d.ts +17 -0
  967. package/dist/testing/agent-approval-storage-contract.d.ts.map +1 -0
  968. package/dist/testing/agent-memory-storage-contract.d.ts +12 -0
  969. package/dist/testing/agent-memory-storage-contract.d.ts.map +1 -0
  970. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  971. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  972. package/dist/testing/ai-limit-storage-contract.d.ts +0 -1
  973. package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
  974. package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -1
  975. package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
  976. package/dist/testing/artifact-storage-contract.d.ts +13 -0
  977. package/dist/testing/artifact-storage-contract.d.ts.map +1 -0
  978. package/dist/testing/auth-storage-contract.d.ts +13 -0
  979. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  980. package/dist/testing/broker-contract.d.ts +5 -0
  981. package/dist/testing/broker-contract.d.ts.map +1 -1
  982. package/dist/testing/effective-storage-contract.d.ts.map +1 -1
  983. package/dist/testing/execution-storage-contract.d.ts.map +1 -1
  984. package/dist/testing/file-upload-session-storage-contract.d.ts.map +1 -1
  985. package/dist/testing/index.d.ts +11 -5
  986. package/dist/testing/index.d.ts.map +1 -1
  987. package/dist/testing/index.js +9340 -3794
  988. package/dist/testing/index.js.map +32 -26
  989. package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
  990. package/dist/testing/lake-storage-contract.d.ts +2 -0
  991. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  992. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  993. package/dist/testing/object-conditional-read-scope-contract.d.ts +11 -0
  994. package/dist/testing/object-conditional-read-scope-contract.d.ts.map +1 -0
  995. package/dist/testing/object-query-contract.d.ts +0 -2
  996. package/dist/testing/object-query-contract.d.ts.map +1 -1
  997. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  998. package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
  999. package/dist/testing/queues-contract.d.ts +5 -0
  1000. package/dist/testing/queues-contract.d.ts.map +1 -1
  1001. package/dist/testing/sandboxes-contract.d.ts.map +1 -1
  1002. package/dist/testing/share-grant-storage-contract.d.ts.map +1 -1
  1003. package/dist/testing/share-session-storage-contract.d.ts.map +1 -1
  1004. package/dist/testing/unique-values-contract.d.ts +21 -0
  1005. package/dist/testing/unique-values-contract.d.ts.map +1 -0
  1006. package/dist/testing/webhook-execution.d.ts +0 -8
  1007. package/dist/testing/webhook-execution.d.ts.map +1 -1
  1008. package/dist/testing/webhook-run-storage-contract.d.ts.map +1 -1
  1009. package/dist/users/execution.d.ts +40 -0
  1010. package/dist/users/execution.d.ts.map +1 -0
  1011. package/dist/users/index.d.ts +3 -0
  1012. package/dist/users/index.d.ts.map +1 -0
  1013. package/dist/webhooks/internal.js +42 -38
  1014. package/dist/webhooks/internal.js.map +2 -2
  1015. package/dist/workers/index.js +5 -7
  1016. package/dist/workers/index.js.map +4 -4
  1017. package/dist/workers/queue-worker.d.ts +0 -2
  1018. package/dist/workers/queue-worker.d.ts.map +1 -1
  1019. package/dist/workers/worker.d.ts +0 -2
  1020. package/dist/workers/worker.d.ts.map +1 -1
  1021. package/dist/workflows/builders.d.ts.map +1 -1
  1022. package/dist/workflows/index.js +76 -66
  1023. package/dist/workflows/index.js.map +1 -1
  1024. package/dist/workflows/request.d.ts +12 -1
  1025. package/dist/workflows/request.d.ts.map +1 -1
  1026. package/dist/workflows/types.d.ts +15 -2
  1027. package/dist/workflows/types.d.ts.map +1 -1
  1028. package/dist/workflows/validation.d.ts +7 -0
  1029. package/dist/workflows/validation.d.ts.map +1 -1
  1030. package/package.json +25 -1
  1031. package/src/actions/commit-edits.ts +6 -1
  1032. package/src/actions/execution.ts +55 -23
  1033. package/src/actions/read-facade.ts +33 -0
  1034. package/src/actions/request.ts +234 -66
  1035. package/src/actions/run/context.ts +47 -1
  1036. package/src/actions/run/execute.ts +13 -6
  1037. package/src/actions/run/executor.ts +11 -2
  1038. package/src/actions/run/normalize.ts +12 -2
  1039. package/src/actions/run/phases.ts +2 -0
  1040. package/src/actions/run/run-action.ts +12 -3
  1041. package/src/actions/run/signals.ts +3 -9
  1042. package/src/actions/run/types.ts +17 -1
  1043. package/src/actions/run-authorization.ts +95 -0
  1044. package/src/actions/types/context.ts +20 -3
  1045. package/src/actions/validators.ts +19 -8
  1046. package/src/activity/README.md +158 -0
  1047. package/src/activity/connection.ts +217 -0
  1048. package/src/activity/device.ts +41 -0
  1049. package/src/activity/execution.ts +210 -0
  1050. package/src/activity/service.ts +274 -0
  1051. package/src/activity/shares.ts +62 -0
  1052. package/src/activity/timeline.ts +385 -0
  1053. package/src/agents/accounting.ts +59 -0
  1054. package/src/agents/adapters.ts +10 -0
  1055. package/src/agents/agent-mail.ts +29 -0
  1056. package/src/agents/api-gateway.ts +14 -3
  1057. package/src/agents/approval-continuation.ts +48 -0
  1058. package/src/agents/approval-executor.ts +318 -0
  1059. package/src/agents/approval-outcome.ts +59 -0
  1060. package/src/agents/approvals.ts +566 -0
  1061. package/src/agents/authority.ts +24 -1
  1062. package/src/agents/builders.ts +5 -3
  1063. package/src/agents/cancel.ts +103 -0
  1064. package/src/agents/child-question.ts +46 -0
  1065. package/src/agents/children.ts +404 -0
  1066. package/src/agents/context-compaction.ts +12 -0
  1067. package/src/agents/errors.ts +31 -0
  1068. package/src/agents/execution.ts +788 -90
  1069. package/src/agents/fork.ts +158 -0
  1070. package/src/agents/ids.ts +18 -6
  1071. package/src/agents/index.ts +63 -3
  1072. package/src/agents/memory-execution.ts +186 -0
  1073. package/src/agents/memory.ts +178 -0
  1074. package/src/agents/message.ts +57 -0
  1075. package/src/agents/model-loop.ts +93 -6
  1076. package/src/agents/model-routing.ts +193 -0
  1077. package/src/agents/participants.ts +213 -0
  1078. package/src/agents/reference.ts +2 -0
  1079. package/src/agents/request.ts +398 -64
  1080. package/src/agents/run-scope.ts +134 -0
  1081. package/src/agents/skills.ts +6 -0
  1082. package/src/agents/streams/index.ts +5 -0
  1083. package/src/agents/streams/internal.ts +1 -0
  1084. package/src/agents/streams/protocol.ts +385 -7
  1085. package/src/agents/subagent-runs.ts +41 -0
  1086. package/src/agents/thread-access.ts +137 -0
  1087. package/src/agents/tool-definition.ts +5 -3
  1088. package/src/agents/types.ts +43 -18
  1089. package/src/agents/validation.ts +4 -0
  1090. package/src/artifacts/access.ts +125 -0
  1091. package/src/artifacts/address.ts +132 -0
  1092. package/src/artifacts/canvas.ts +369 -0
  1093. package/src/artifacts/csv.ts +118 -0
  1094. package/src/artifacts/errors.ts +32 -0
  1095. package/src/artifacts/execution.ts +553 -0
  1096. package/src/artifacts/formula/check.ts +171 -0
  1097. package/src/artifacts/formula/evaluate.ts +288 -0
  1098. package/src/artifacts/formula/index.ts +199 -0
  1099. package/src/artifacts/formula/parser.ts +357 -0
  1100. package/src/artifacts/frames/assets.ts +104 -0
  1101. package/src/artifacts/frames/entries.ts +35 -0
  1102. package/src/artifacts/frames/grants.ts +125 -0
  1103. package/src/artifacts/frames/index.ts +21 -0
  1104. package/src/artifacts/frames/kit.ts +569 -0
  1105. package/src/artifacts/frames/probe.ts +357 -0
  1106. package/src/artifacts/frames/protocol.ts +328 -0
  1107. package/src/artifacts/frames/runtime.ts +458 -0
  1108. package/src/artifacts/html.ts +25 -0
  1109. package/src/artifacts/ids.ts +18 -0
  1110. package/src/artifacts/index.ts +125 -0
  1111. package/src/artifacts/kinds.ts +8 -0
  1112. package/src/artifacts/limits.ts +58 -0
  1113. package/src/artifacts/live-sheet.ts +345 -0
  1114. package/src/artifacts/outline.ts +95 -0
  1115. package/src/artifacts/publish/files.ts +87 -0
  1116. package/src/artifacts/publish/index.ts +14 -0
  1117. package/src/artifacts/publish/publish.ts +336 -0
  1118. package/src/artifacts/publish/queries.ts +336 -0
  1119. package/src/artifacts/publish/references.ts +135 -0
  1120. package/src/artifacts/publish/validate/canvas.ts +118 -0
  1121. package/src/artifacts/publish/validate/document.ts +114 -0
  1122. package/src/artifacts/publish/validate/file.ts +19 -0
  1123. package/src/artifacts/publish/validate/html.ts +78 -0
  1124. package/src/artifacts/publish/validate/page.ts +65 -0
  1125. package/src/artifacts/publish/validate/sheet.ts +297 -0
  1126. package/src/artifacts/publish/validate/slides.ts +82 -0
  1127. package/src/artifacts/queries.ts +512 -0
  1128. package/src/artifacts/references.ts +11 -0
  1129. package/src/artifacts/resolve.ts +112 -0
  1130. package/src/artifacts/run-query.ts +212 -0
  1131. package/src/artifacts/serialize-query.ts +25 -0
  1132. package/src/artifacts/sheet-rules.ts +180 -0
  1133. package/src/artifacts/theme.ts +116 -0
  1134. package/src/artifacts/tones.ts +20 -0
  1135. package/src/artifacts/warnings.ts +10 -0
  1136. package/src/artifacts/workbook.ts +674 -0
  1137. package/src/auth/index.ts +4 -0
  1138. package/src/auth/member-events.ts +114 -0
  1139. package/src/auth/profile.ts +118 -0
  1140. package/src/auth/runtime.ts +190 -9
  1141. package/src/auth/strategy.ts +3 -0
  1142. package/src/auth/types.ts +32 -0
  1143. package/src/authorization/decision.ts +52 -0
  1144. package/src/authorization/event-visibility.ts +17 -16
  1145. package/src/authorization/grant-kinds.ts +46 -2
  1146. package/src/authorization/index.ts +6 -1
  1147. package/src/authorization/resolve.ts +58 -1
  1148. package/src/authorization/run-visibility.ts +8 -1
  1149. package/src/authorization/types.ts +14 -0
  1150. package/src/blob-storage/internal.ts +1 -1
  1151. package/src/blob-storage/media-type.ts +69 -0
  1152. package/src/datasets/builders.ts +66 -2
  1153. package/src/datasets/column-index.ts +19 -0
  1154. package/src/datasets/execution.ts +23 -9
  1155. package/src/errors/catalog.ts +26 -1
  1156. package/src/errors/internal.ts +18 -8
  1157. package/src/events/definitions.ts +26 -0
  1158. package/src/events/execution.ts +171 -21
  1159. package/src/events/index.ts +10 -1
  1160. package/src/events/scope.ts +2 -0
  1161. package/src/events/selectors/builder.ts +50 -0
  1162. package/src/events/selectors/index.ts +4 -0
  1163. package/src/events/selectors/types.ts +32 -1
  1164. package/src/events/service.ts +55 -2
  1165. package/src/events/types/index.ts +10 -0
  1166. package/src/events/types/users.ts +73 -0
  1167. package/src/events/view-conditions.ts +241 -0
  1168. package/src/execution/agent.ts +25 -0
  1169. package/src/execution/authorization.ts +70 -0
  1170. package/src/execution/authorized-object-reader.ts +486 -266
  1171. package/src/execution/lineage.ts +14 -0
  1172. package/src/execution/object-reader-clearance.ts +91 -0
  1173. package/src/execution/object-reader-ontology.ts +60 -0
  1174. package/src/execution/object-reader-security.ts +270 -0
  1175. package/src/execution/object-reader-users.ts +122 -0
  1176. package/src/execution/preparation.ts +78 -0
  1177. package/src/execution/request.ts +2 -0
  1178. package/src/execution/unique-lookup.ts +55 -0
  1179. package/src/execution/visible-objects.ts +26 -0
  1180. package/src/http/api-routes.ts +331 -7
  1181. package/src/index.ts +169 -4
  1182. package/src/lake-storage/in-memory.ts +26 -3
  1183. package/src/lake-storage/index.ts +13 -1
  1184. package/src/lake-storage/lineage.ts +385 -0
  1185. package/src/lake-storage/sql-transforms.ts +45 -0
  1186. package/src/lake-storage/types.ts +59 -1
  1187. package/src/lake-storage/version-inputs.ts +35 -6
  1188. package/src/maintenance/ontology-maintenance.ts +15 -0
  1189. package/src/materialization/errors.ts +37 -0
  1190. package/src/materialization/event-envelopes.ts +11 -3
  1191. package/src/materialization/index.ts +1 -0
  1192. package/src/materialization/model.ts +24 -4
  1193. package/src/materializer/README.md +7 -1
  1194. package/src/materializer/edits/commit.ts +56 -12
  1195. package/src/materializer/edits/load-state.ts +15 -7
  1196. package/src/materializer/edits/operations.ts +12 -0
  1197. package/src/materializer/edits/plan.ts +2 -0
  1198. package/src/materializer/edits/unique-values.ts +255 -0
  1199. package/src/materializer/edits/working-state.ts +8 -1
  1200. package/src/materializer/execution/work-records.ts +47 -0
  1201. package/src/materializer/projections/finish-run.ts +0 -1
  1202. package/src/materializer/projections/replace.ts +1 -1
  1203. package/src/materializer/projections/replacement-plan.ts +4 -1
  1204. package/src/materializer/projections/source-materialization.ts +2 -1
  1205. package/src/materializer/shared/normalize.ts +37 -6
  1206. package/src/materializer/shared/projection-run.ts +1 -2
  1207. package/src/materializer/telemetry/append.ts +14 -17
  1208. package/src/materializer/telemetry/plan.ts +2 -0
  1209. package/src/models/audio/catalog.ts +89 -10
  1210. package/src/models/audio/errors.ts +18 -1
  1211. package/src/models/audio/runtime.ts +10 -13
  1212. package/src/models/audio/speech.ts +261 -0
  1213. package/src/models/audio/types.ts +97 -0
  1214. package/src/models/calls.ts +100 -0
  1215. package/src/models/catalog-index.ts +21 -2
  1216. package/src/models/catalog.ts +211 -35
  1217. package/src/models/decision/runtime.ts +21 -22
  1218. package/src/models/decision/validation.ts +4 -1
  1219. package/src/models/definitions.ts +57 -8
  1220. package/src/models/events.ts +72 -1
  1221. package/src/models/execution/README.md +34 -5
  1222. package/src/models/execution/binding.ts +3 -1
  1223. package/src/models/execution/embedding.ts +1 -0
  1224. package/src/models/execution/index.ts +5 -0
  1225. package/src/models/execution/model-call-accounting.ts +3 -1
  1226. package/src/models/execution/model-call-recorder.ts +29 -1
  1227. package/src/models/execution/usage.ts +8 -0
  1228. package/src/models/execution.ts +20 -22
  1229. package/src/models/generation-types.ts +8 -1
  1230. package/src/models/image/catalog.ts +89 -0
  1231. package/src/models/image/errors.ts +19 -0
  1232. package/src/models/image/runtime.ts +335 -0
  1233. package/src/models/image/types.ts +111 -0
  1234. package/src/models/index.ts +38 -4
  1235. package/src/models/{audio/file.ts → input-file.ts} +22 -13
  1236. package/src/models/language-model.ts +13 -0
  1237. package/src/models/pricing.ts +263 -42
  1238. package/src/models/rate-card.ts +161 -12
  1239. package/src/objects/authorized-ontology-view.ts +1 -0
  1240. package/src/objects/clearance-redaction.ts +138 -0
  1241. package/src/objects/conditional-writes.ts +109 -0
  1242. package/src/objects/execution.ts +4 -0
  1243. package/src/objects/index.ts +8 -0
  1244. package/src/objects/link/authorization.ts +37 -8
  1245. package/src/objects/link/endpoints.ts +42 -11
  1246. package/src/objects/link/remove.ts +27 -12
  1247. package/src/objects/link/upsert-batch.ts +9 -5
  1248. package/src/objects/link/upsert.ts +20 -14
  1249. package/src/objects/materializer-adapter.ts +55 -18
  1250. package/src/objects/object/delete.ts +26 -7
  1251. package/src/objects/object/upsert-batch.ts +46 -18
  1252. package/src/objects/object/upsert.ts +25 -8
  1253. package/src/objects/property-clearance.ts +171 -152
  1254. package/src/objects/query/clearance-admission.ts +112 -0
  1255. package/src/objects/query/current-user.ts +76 -0
  1256. package/src/objects/query/executor.ts +39 -103
  1257. package/src/objects/query/explain.ts +20 -7
  1258. package/src/objects/query/index.ts +2 -0
  1259. package/src/objects/query/ir.ts +20 -0
  1260. package/src/objects/query/link-query-clearance.ts +73 -0
  1261. package/src/objects/query/links.ts +8 -0
  1262. package/src/objects/query/matches-predicate.ts +108 -0
  1263. package/src/objects/query/normalize.ts +50 -19
  1264. package/src/objects/query/scalar-values.ts +19 -3
  1265. package/src/objects/query/user-expansions.ts +65 -0
  1266. package/src/objects/query/validate.ts +248 -10
  1267. package/src/objects/runtime-batch.ts +8 -2
  1268. package/src/objects/sdk/object-set.ts +12 -1
  1269. package/src/objects/sdk/query-builder.ts +39 -8
  1270. package/src/objects/sdk/query-executor.ts +6 -0
  1271. package/src/objects/serialize.ts +79 -0
  1272. package/src/objects/unique-violation.ts +59 -0
  1273. package/src/objects/vectors/handle.ts +3 -3
  1274. package/src/ontology/builders.ts +15 -1
  1275. package/src/ontology/docs-markdown.ts +2 -1
  1276. package/src/ontology/index.ts +2 -2
  1277. package/src/ontology/json-schema.ts +4 -0
  1278. package/src/ontology/primitives.ts +21 -8
  1279. package/src/ontology/registry.ts +16 -0
  1280. package/src/ontology/types.ts +9 -0
  1281. package/src/ontology/unique-values.ts +84 -0
  1282. package/src/ontology/user-ref.ts +39 -0
  1283. package/src/ontology/validation/properties.ts +43 -0
  1284. package/src/ontology/validation/schema.ts +9 -1
  1285. package/src/pipelines/index.ts +2 -0
  1286. package/src/pipelines/lineage.ts +45 -0
  1287. package/src/projections/internal.ts +2 -2
  1288. package/src/projections/registry.ts +16 -10
  1289. package/src/projections/revision.ts +112 -45
  1290. package/src/projections/run-dispatch.ts +38 -25
  1291. package/src/projections/types.ts +2 -0
  1292. package/src/query.ts +5 -0
  1293. package/src/rules/execution.ts +43 -11
  1294. package/src/runtime/ai-cost.ts +30 -0
  1295. package/src/runtime/ai-usage.ts +32 -1
  1296. package/src/runtime/create.ts +4 -0
  1297. package/src/runtime/host.ts +73 -1
  1298. package/src/runtime/index.ts +2 -0
  1299. package/src/runtime/internal.ts +2 -0
  1300. package/src/runtime/ontology-mutations.ts +19 -4
  1301. package/src/runtime/resolve-definitions.ts +69 -3
  1302. package/src/runtime/sixb.ts +53 -9
  1303. package/src/runtime/types.ts +99 -9
  1304. package/src/sandboxes/README.md +29 -7
  1305. package/src/sandboxes/auth.ts +16 -0
  1306. package/src/sandboxes/config.ts +2 -7
  1307. package/src/sandboxes/configuration.ts +61 -7
  1308. package/src/sandboxes/index.ts +1 -0
  1309. package/src/sandboxes/sandbox.ts +27 -5
  1310. package/src/schedules/builders.ts +3 -1
  1311. package/src/schedules/runtime.ts +6 -0
  1312. package/src/schedules/validation.ts +23 -1
  1313. package/src/security/README.md +62 -0
  1314. package/src/security/applied-markings-contribution.ts +277 -0
  1315. package/src/security/applied-markings-host.ts +41 -0
  1316. package/src/security/applied-markings-snapshot.ts +235 -0
  1317. package/src/security/applied-markings.ts +405 -0
  1318. package/src/security/dataset-version-markings.ts +163 -0
  1319. package/src/security/grants.ts +191 -11
  1320. package/src/security/index.ts +5 -0
  1321. package/src/security/internal.ts +18 -0
  1322. package/src/security/marking-propagation.ts +255 -0
  1323. package/src/security/marking-sets.ts +42 -0
  1324. package/src/security/markings.ts +29 -178
  1325. package/src/security/pipeline-markings.ts +175 -0
  1326. package/src/security/project.ts +13 -0
  1327. package/src/security/projection-markings.ts +421 -0
  1328. package/src/security/redactions.ts +7 -2
  1329. package/src/security/registry.ts +32 -7
  1330. package/src/security/types.ts +68 -5
  1331. package/src/security/validation.ts +34 -11
  1332. package/src/security/view-conditions.ts +215 -0
  1333. package/src/shares/execution.ts +43 -10
  1334. package/src/storage/action-runs/in-memory.ts +18 -0
  1335. package/src/storage/action-runs/types.ts +10 -0
  1336. package/src/storage/activity/in-memory.ts +374 -0
  1337. package/src/storage/activity/index.ts +27 -0
  1338. package/src/storage/activity/policy.ts +430 -0
  1339. package/src/storage/activity/types.ts +211 -0
  1340. package/src/storage/agents/errors.ts +3 -0
  1341. package/src/storage/agents/in-memory.ts +789 -32
  1342. package/src/storage/agents/index.ts +42 -0
  1343. package/src/storage/agents/provider.ts +730 -16
  1344. package/src/storage/agents/types.ts +628 -27
  1345. package/src/storage/ai-cost/analytics.ts +60 -7
  1346. package/src/storage/ai-cost/codec.ts +6 -1
  1347. package/src/storage/ai-cost/groups.ts +44 -1
  1348. package/src/storage/ai-cost/index.ts +1 -0
  1349. package/src/storage/ai-cost/provider.ts +2 -0
  1350. package/src/storage/ai-cost/types.ts +18 -1
  1351. package/src/storage/ai-cost/validation.ts +39 -12
  1352. package/src/storage/ai-limits/provider.ts +4 -7
  1353. package/src/storage/ai-usage/in-memory.ts +28 -1
  1354. package/src/storage/ai-usage/index.ts +9 -1
  1355. package/src/storage/ai-usage/record.ts +44 -7
  1356. package/src/storage/ai-usage/types.ts +38 -0
  1357. package/src/storage/ai-usage/usage.ts +15 -1
  1358. package/src/storage/artifacts/errors.ts +28 -0
  1359. package/src/storage/artifacts/in-memory.ts +388 -0
  1360. package/src/storage/artifacts/index.ts +35 -0
  1361. package/src/storage/artifacts/record.ts +260 -0
  1362. package/src/storage/artifacts/types.ts +293 -0
  1363. package/src/storage/auth/in-memory/auth-storage.ts +27 -2
  1364. package/src/storage/auth/in-memory/sessions.ts +21 -0
  1365. package/src/storage/auth/in-memory/users.ts +40 -6
  1366. package/src/storage/auth/index.ts +3 -0
  1367. package/src/storage/auth/types.ts +61 -7
  1368. package/src/storage/executions/in-memory.ts +93 -1
  1369. package/src/storage/executions/index.ts +5 -0
  1370. package/src/storage/executions/provider.ts +12 -0
  1371. package/src/storage/executions/types.ts +47 -0
  1372. package/src/storage/in-memory/index.ts +16 -0
  1373. package/src/storage/index.ts +132 -1
  1374. package/src/storage/internal.ts +39 -1
  1375. package/src/storage/migrations/migrate-storage.ts +8 -1
  1376. package/src/storage/migrations/prepare-unique-properties.ts +161 -0
  1377. package/src/storage/objects/guard.ts +7 -3
  1378. package/src/storage/objects/in-memory/conditional-reader.ts +72 -0
  1379. package/src/storage/objects/in-memory/query.ts +4 -105
  1380. package/src/storage/objects/in-memory/read-scope.ts +15 -14
  1381. package/src/storage/objects/in-memory/read-source.ts +11 -1
  1382. package/src/storage/objects/in-memory/scoped-reader.ts +243 -0
  1383. package/src/storage/objects/in-memory/selected-reader.ts +6 -231
  1384. package/src/storage/objects/in-memory/storage.ts +183 -1
  1385. package/src/storage/objects/index.ts +9 -1
  1386. package/src/storage/objects/read-scope.ts +191 -0
  1387. package/src/storage/objects/types.ts +68 -1
  1388. package/src/storage/ontology/in-memory/index.ts +3 -0
  1389. package/src/storage/ontology/in-memory/materializations.ts +35 -0
  1390. package/src/storage/ontology/in-memory/replacement-plans.ts +4 -0
  1391. package/src/storage/ontology/in-memory/sources.ts +23 -0
  1392. package/src/storage/ontology/in-memory/unique-values.ts +62 -0
  1393. package/src/storage/ontology/index.ts +12 -0
  1394. package/src/storage/ontology/materializations.ts +35 -1
  1395. package/src/storage/ontology/provider-work.ts +76 -0
  1396. package/src/storage/ontology/provider.ts +3 -0
  1397. package/src/storage/ontology/sources.ts +17 -0
  1398. package/src/storage/ontology/unique-values.ts +56 -0
  1399. package/src/storage/operation-scope.ts +9 -1
  1400. package/src/storage/projection-runs/in-memory.ts +3 -35
  1401. package/src/storage/share-grants/in-memory.ts +8 -0
  1402. package/src/storage/share-grants/index.ts +1 -0
  1403. package/src/storage/share-grants/types.ts +8 -0
  1404. package/src/storage/types.ts +6 -0
  1405. package/src/storage/workflow-runs/in-memory.ts +16 -0
  1406. package/src/storage/workflow-runs/types.ts +5 -0
  1407. package/src/testing/action-run-storage-contract.ts +25 -0
  1408. package/src/testing/activity-storage-contract.ts +840 -0
  1409. package/src/testing/agent-approval-storage-contract.ts +1117 -0
  1410. package/src/testing/agent-memory-storage-contract.ts +400 -0
  1411. package/src/testing/agent-storage-contract.ts +1206 -50
  1412. package/src/testing/ai-cost-storage-contract.ts +31 -1
  1413. package/src/testing/ai-limit-storage-contract.ts +9 -7
  1414. package/src/testing/ai-model-call-groups-contract.ts +76 -0
  1415. package/src/testing/ai-usage-storage-contract.ts +120 -13
  1416. package/src/testing/artifact-storage-contract.ts +851 -0
  1417. package/src/testing/auth-storage-contract.ts +597 -73
  1418. package/src/testing/broker-contract.ts +28 -23
  1419. package/src/testing/effective-storage-contract.ts +3 -8
  1420. package/src/testing/execution-storage-contract.ts +200 -1
  1421. package/src/testing/file-upload-session-storage-contract.ts +12 -24
  1422. package/src/testing/index.ts +26 -4
  1423. package/src/testing/lake-merge-storage-contract.ts +38 -0
  1424. package/src/testing/lake-storage-contract.ts +269 -30
  1425. package/src/testing/materializer-storage-contract.ts +37 -9
  1426. package/src/testing/object-conditional-read-scope-contract.ts +634 -0
  1427. package/src/testing/object-query-contract.ts +386 -186
  1428. package/src/testing/ontology-storage-contract.ts +286 -22
  1429. package/src/testing/projection-run-storage-contract.ts +8 -18
  1430. package/src/testing/queues-contract.ts +39 -70
  1431. package/src/testing/sandboxes-contract.ts +3 -14
  1432. package/src/testing/share-grant-storage-contract.ts +28 -16
  1433. package/src/testing/share-session-storage-contract.ts +4 -14
  1434. package/src/testing/unique-values-contract.ts +907 -0
  1435. package/src/testing/webhook-execution.ts +1 -1
  1436. package/src/testing/webhook-run-storage-contract.ts +6 -9
  1437. package/src/users/execution.ts +131 -0
  1438. package/src/users/index.ts +2 -0
  1439. package/src/workers/queue-worker.ts +1 -3
  1440. package/src/workers/worker.ts +1 -3
  1441. package/src/workflows/builders.ts +20 -0
  1442. package/src/workflows/request.ts +46 -8
  1443. package/src/workflows/types.ts +15 -2
  1444. package/src/workflows/validation.ts +95 -9
  1445. package/dist/chunk-1k89ecfr.js +0 -85
  1446. package/dist/chunk-1k89ecfr.js.map +0 -10
  1447. package/dist/chunk-1sr8ryzk.js.map +0 -11
  1448. package/dist/chunk-29yx306f.js.map +0 -22
  1449. package/dist/chunk-3t2hgbgd.js.map +0 -15
  1450. package/dist/chunk-4as3wt1c.js.map +0 -12
  1451. package/dist/chunk-4vyr1j8f.js +0 -128
  1452. package/dist/chunk-4vyr1j8f.js.map +0 -11
  1453. package/dist/chunk-5e43w60z.js.map +0 -10
  1454. package/dist/chunk-6c6sn0bh.js.map +0 -106
  1455. package/dist/chunk-6p49a5cq.js.map +0 -12
  1456. package/dist/chunk-6x0pqh32.js.map +0 -10
  1457. package/dist/chunk-7n30ybym.js +0 -3
  1458. package/dist/chunk-7n440zgt.js +0 -261
  1459. package/dist/chunk-7n440zgt.js.map +0 -12
  1460. package/dist/chunk-8mx7qw3y.js.map +0 -13
  1461. package/dist/chunk-91mg3nj9.js.map +0 -12
  1462. package/dist/chunk-96yw3pwd.js.map +0 -10
  1463. package/dist/chunk-9gyp8hg1.js +0 -363
  1464. package/dist/chunk-9gyp8hg1.js.map +0 -14
  1465. package/dist/chunk-9k93ah50.js.map +0 -11
  1466. package/dist/chunk-b38szspf.js.map +0 -11
  1467. package/dist/chunk-bx9q3cwv.js.map +0 -19
  1468. package/dist/chunk-d09tj99x.js.map +0 -12
  1469. package/dist/chunk-ere85b8y.js.map +0 -15
  1470. package/dist/chunk-es1gxsbf.js.map +0 -13
  1471. package/dist/chunk-gsjm1wms.js.map +0 -10
  1472. package/dist/chunk-hjzdd750.js.map +0 -49
  1473. package/dist/chunk-hkc3jct7.js.map +0 -10
  1474. package/dist/chunk-hvsb78a1.js.map +0 -20
  1475. package/dist/chunk-k6q3n2sc.js.map +0 -12
  1476. package/dist/chunk-n33z5bjw.js.map +0 -66
  1477. package/dist/chunk-pbcbn83d.js.map +0 -14
  1478. package/dist/chunk-pqajwytd.js +0 -68
  1479. package/dist/chunk-pqajwytd.js.map +0 -11
  1480. package/dist/chunk-qczk96d9.js.map +0 -11
  1481. package/dist/chunk-rdghfsss.js +0 -39
  1482. package/dist/chunk-rdghfsss.js.map +0 -10
  1483. package/dist/chunk-rj69qcrd.js.map +0 -11
  1484. package/dist/chunk-rrzt8jdy.js.map +0 -14
  1485. package/dist/chunk-s16apyk9.js +0 -256
  1486. package/dist/chunk-s16apyk9.js.map +0 -16
  1487. package/dist/chunk-s54c868q.js +0 -307
  1488. package/dist/chunk-s54c868q.js.map +0 -12
  1489. package/dist/chunk-tpn40322.js.map +0 -19
  1490. package/dist/chunk-tw03bsmb.js.map +0 -11
  1491. package/dist/chunk-v4jbb3rs.js.map +0 -10
  1492. package/dist/chunk-vpq4shxz.js.map +0 -39
  1493. package/dist/chunk-yxd3nnqt.js.map +0 -11
  1494. package/dist/chunk-yzwja0mj.js.map +0 -14
  1495. package/dist/events/toStoredEvent.d.ts +0 -9
  1496. package/dist/events/toStoredEvent.d.ts.map +0 -1
  1497. package/dist/models/audio/file.d.ts +0 -9
  1498. package/dist/models/audio/file.d.ts.map +0 -1
  1499. package/src/events/toStoredEvent.ts +0 -33
  1500. /package/dist/{chunk-mfs23znk.js.map → chunk-07kkp2e1.js.map} +0 -0
  1501. /package/dist/{chunk-fkgc1wt8.js.map → chunk-0phpbbvm.js.map} +0 -0
  1502. /package/dist/{chunk-y0c4e6ex.js.map → chunk-3gbefjg5.js.map} +0 -0
  1503. /package/dist/{chunk-fa02jy15.js.map → chunk-48jezz3j.js.map} +0 -0
  1504. /package/dist/{chunk-c85m1hyj.js.map → chunk-6n69k945.js.map} +0 -0
  1505. /package/dist/{chunk-xfs8x8m9.js.map → chunk-6p0pastb.js.map} +0 -0
  1506. /package/dist/{chunk-t7x8dmn0.js.map → chunk-6y0mkhex.js.map} +0 -0
  1507. /package/dist/{chunk-v9xd5wzd.js.map → chunk-bab05bhg.js.map} +0 -0
  1508. /package/dist/{chunk-gc4ntf7d.js.map → chunk-cwdzcv37.js.map} +0 -0
  1509. /package/dist/{chunk-vyf9kfqf.js.map → chunk-dp0cdtj2.js.map} +0 -0
  1510. /package/dist/{chunk-br3k6qbf.js.map → chunk-fm62y49k.js.map} +0 -0
  1511. /package/dist/{chunk-9ybhtmg4.js.map → chunk-g663fahq.js.map} +0 -0
  1512. /package/dist/{chunk-9w055r5b.js.map → chunk-hwarjrgf.js.map} +0 -0
  1513. /package/dist/{chunk-9dmt152s.js.map → chunk-hyesv9dv.js.map} +0 -0
  1514. /package/dist/{chunk-x9v4cx1d.js.map → chunk-m36fw8ft.js.map} +0 -0
  1515. /package/dist/{chunk-a40ad1ft.js.map → chunk-mbsbxarb.js.map} +0 -0
  1516. /package/dist/{chunk-6aawea28.js.map → chunk-n8q5j6y5.js.map} +0 -0
  1517. /package/dist/{chunk-dk8tkk5f.js.map → chunk-n9zpx9c6.js.map} +0 -0
  1518. /package/dist/{chunk-7t429e3f.js.map → chunk-npcr0228.js.map} +0 -0
  1519. /package/dist/{chunk-z4m0yz8c.js.map → chunk-q4pmvkg0.js.map} +0 -0
@@ -1,37 +1,76 @@
1
1
  // @bun
2
2
  import {
3
+ assertAuthorized2,
3
4
  resolveRoleGrants2,
5
+ resolveRoleViewConditions2,
4
6
  resolveAuthorizationContext2
5
- } from "./chunk-d0bqz29d.js";
7
+ } from "./chunk-yc9ners4.js";
6
8
  import {
7
- assertValidFileRefs2
8
- } from "./chunk-hvsb78a1.js";
9
+ isUserRef,
10
+ isUserRefPropertySchema,
11
+ isCurrentUser
12
+ } from "./chunk-4y26vs3v.js";
13
+ import {
14
+ compileConditionalObjectReadScope2
15
+ } from "./chunk-rap5w0x0.js";
16
+ import {
17
+ validateSchemaValue2,
18
+ assertValidFileRefs2,
19
+ normalizeSchemaValue2,
20
+ validatePropertyValue2,
21
+ isExactSchema,
22
+ isSortableSchema,
23
+ isTextSchema,
24
+ isContainsSchema,
25
+ queryScalarKindForSchema
26
+ } from "./chunk-65pyhyas.js";
9
27
  import {
10
- SecurityValidationError2,
11
28
  resolveMembershipPolicyScope,
12
29
  canPerformMembershipOperation,
13
30
  missingMembershipGroupIds,
14
31
  validateSecurityDefinitionsAtStartup
15
- } from "./chunk-es1gxsbf.js";
32
+ } from "./chunk-73v685wb.js";
33
+ import {
34
+ sha256Canonical2
35
+ } from "./chunk-zrvhsq7f.js";
16
36
  import {
17
37
  getCookie2,
18
38
  AuthRuntimeError2,
39
+ normalizeProfileChanges,
40
+ signInDisplayName2,
19
41
  resolveAuthConfig2,
20
42
  resolveInvitationExpiresAt,
21
43
  assertNonEmpty3,
22
44
  normalizePagination,
23
- isInvitationDeliveryAuthStrategy2
24
- } from "./chunk-hcbyfxbe.js";
45
+ isMagicLinkAuthStrategy2,
46
+ isInvitationDeliveryAuthStrategy2,
47
+ isOidcAuthStrategy2
48
+ } from "./chunk-5grk14e5.js";
25
49
  import {
26
50
  normalizeParams,
27
51
  coerceParamsToTyped
28
- } from "./chunk-c85m1hyj.js";
52
+ } from "./chunk-6n69k945.js";
29
53
  import {
30
54
  snapshotLinkPathSelection
31
- } from "./chunk-t6f3tdnr.js";
55
+ } from "./chunk-16a9dmfy.js";
56
+ import {
57
+ resolveWhere,
58
+ ObjectQueryValidationError2,
59
+ normalizeObjectQuery2
60
+ } from "./chunk-j936th07.js";
32
61
  import {
33
- OntologyValidationError2
62
+ MaterializationValidationError2
63
+ } from "./chunk-y7dbmaqh.js";
64
+ import {
65
+ SecurityValidationError2
66
+ } from "./chunk-jcfw4h7m.js";
67
+ import {
68
+ OntologyValidationError2,
69
+ formatUnknownObjectTypeMessage
34
70
  } from "./chunk-cqr3acm1.js";
71
+ import {
72
+ normalizeDecimalValue2
73
+ } from "./chunk-3bh94gbw.js";
35
74
 
36
75
  // src/auth/access-tokens.ts
37
76
  import { createHash, randomBytes, randomUUID } from "crypto";
@@ -553,6 +592,15 @@ function invalid(message) {
553
592
  return new ShareDefinitionError2(`[Sixb] ${message}`);
554
593
  }
555
594
 
595
+ // src/security/project.ts
596
+ var project2 = Object.freeze({
597
+ kind: "project",
598
+ logs: Object.freeze({ kind: "logs" }),
599
+ activity: Object.freeze({ kind: "activity" }),
600
+ users: Object.freeze({ kind: "users" }),
601
+ models: Object.freeze({ kind: "models" })
602
+ });
603
+
556
604
  // src/security/grants.ts
557
605
  var VIEW_TARGETS = ["object", "dataset"];
558
606
  var RUN_TARGETS = ["workflow", "sync", "pipeline"];
@@ -608,11 +656,59 @@ function resolveGrant(input, label, allowedTargets) {
608
656
  const ids = [...new Set(items.map((item) => definitionIdOf(item, label)))];
609
657
  return { target, selection: { all: false, ids } };
610
658
  }
659
+ var UNVIEWABLE_PROJECT_REFERENCES = new Set([
660
+ project2,
661
+ project2.logs,
662
+ project2.activity
663
+ ]);
611
664
  function view(input) {
612
665
  if (isShareTarget(input))
613
666
  return createShareViewGrant(input);
667
+ if (isUsersReference(input)) {
668
+ return { kind: "grant", capability: "view", target: "users" };
669
+ }
670
+ if (UNVIEWABLE_PROJECT_REFERENCES.has(input)) {
671
+ throw new SecurityValidationError2("[Sixb] can.view accepts object types, datasets, shares, or project.users.");
672
+ }
614
673
  const { target, selection } = resolveGrant(input, "can.view", VIEW_TARGETS);
615
- return { kind: "grant", capability: "view", target, selection };
674
+ const grant = { kind: "grant", capability: "view", target, selection };
675
+ const one = target !== "object" || Array.isArray(input) || isBreadthSelector(input) ? undefined : input;
676
+ if (one) {
677
+ Object.defineProperty(grant, "where", {
678
+ configurable: false,
679
+ enumerable: false,
680
+ writable: false,
681
+ value: (callback) => conditionalViewGrant(grant, one, callback)
682
+ });
683
+ }
684
+ return grant;
685
+ }
686
+ function conditionalViewGrant(grant, objectType, callback) {
687
+ const subject = `can.view(${objectType.id}).where(...)`;
688
+ if (typeof callback !== "function") {
689
+ throw new SecurityValidationError2(`[Sixb] ${subject} expects a function, such as (object) => object.p.status.eq("open").`);
690
+ }
691
+ const condition = resolveWhere(callback);
692
+ if (condition === undefined) {
693
+ throw new SecurityValidationError2(`[Sixb] ${subject} returned no condition. Return a predicate, or drop .where() to grant every object.`);
694
+ }
695
+ return deepFreeze({
696
+ kind: "grant",
697
+ capability: "view",
698
+ target: "object",
699
+ selection: structuredClone(grant.selection),
700
+ condition: structuredClone(condition)
701
+ });
702
+ }
703
+ function deepFreeze(value) {
704
+ if (typeof value !== "object" || value === null || Object.isFrozen(value))
705
+ return value;
706
+ for (const child of Object.values(value))
707
+ deepFreeze(child);
708
+ return Object.freeze(value);
709
+ }
710
+ function isUsersReference(input) {
711
+ return typeof input === "object" && input !== null && !Array.isArray(input) && !isBreadthSelector(input) && "kind" in input && input.kind === "users";
616
712
  }
617
713
  function edit(input) {
618
714
  return {
@@ -656,25 +752,51 @@ function run(input) {
656
752
  if (isAgentReference(input)) {
657
753
  return { kind: "grant", capability: "run", target: "agent" };
658
754
  }
755
+ if (isModelsReference(input)) {
756
+ return { kind: "grant", capability: "run", target: "models" };
757
+ }
659
758
  const { target, selection } = resolveGrant(input, "can.run", RUN_TARGETS);
660
759
  return { kind: "grant", capability: "run", target, selection };
661
760
  }
662
761
  function isAgentReference(input) {
663
762
  return typeof input === "object" && input !== null && !Array.isArray(input) && !isBreadthSelector(input) && "kind" in input && input.kind === "agent";
664
763
  }
764
+ function isModelsReference(input) {
765
+ return typeof input === "object" && input !== null && !Array.isArray(input) && !isBreadthSelector(input) && "kind" in input && input.kind === "models";
766
+ }
665
767
  function isAgentUsageReference(input) {
666
768
  return typeof input === "object" && input !== null && !Array.isArray(input) && !isBreadthSelector(input) && "kind" in input && input.kind === "aiUsage";
667
769
  }
770
+ var OBSERVABLE_REFERENCES = {
771
+ logs: "project.logs",
772
+ activity: "project.activity",
773
+ aiUsage: "agent.usage",
774
+ agentThreads: "agent.threads"
775
+ };
776
+ function isObservableReference(input) {
777
+ return typeof input === "object" && input !== null && "kind" in input && typeof input.kind === "string" && Object.hasOwn(OBSERVABLE_REFERENCES, input.kind);
778
+ }
668
779
  function observe(input) {
669
- if (input !== "logs" && !isAgentUsageReference(input)) {
670
- throw new SecurityValidationError2('[Sixb] can.observe accepts "logs" or agent.usage.');
780
+ const value = input;
781
+ if (value === "logs") {
782
+ throw new SecurityValidationError2('[Sixb] can.observe("logs") is now can.observe(project.logs), imported from "@sixb/core".');
783
+ }
784
+ if (!isObservableReference(value)) {
785
+ const accepted = Object.values(OBSERVABLE_REFERENCES).join(" or ");
786
+ throw new SecurityValidationError2(`[Sixb] can.observe accepts ${accepted}.`);
671
787
  }
672
- return { kind: "grant", capability: "observe", target: input === "logs" ? "logs" : "aiUsage" };
788
+ return { kind: "grant", capability: "observe", target: value.kind };
789
+ }
790
+ function isAgentMemoryReference(input) {
791
+ return typeof input === "object" && input !== null && !Array.isArray(input) && !isBreadthSelector(input) && "kind" in input && input.kind === "agentMemory";
673
792
  }
674
793
  function manage(input) {
675
794
  if (isAgentUsageReference(input)) {
676
795
  return { kind: "grant", capability: "manage", target: "aiUsage" };
677
796
  }
797
+ if (isAgentMemoryReference(input)) {
798
+ return { kind: "grant", capability: "manage", target: "agentMemory" };
799
+ }
678
800
  return {
679
801
  kind: "grant",
680
802
  capability: "manage",
@@ -692,6 +814,1312 @@ var can2 = {
692
814
  observe,
693
815
  manage
694
816
  };
817
+ // src/objects/query/current-user.ts
818
+ function bindCurrentUser(query, user) {
819
+ switch (query.kind) {
820
+ case "start":
821
+ case "refs":
822
+ return query;
823
+ case "filter":
824
+ return {
825
+ ...query,
826
+ input: bindCurrentUser(query.input, user),
827
+ predicate: bindCurrentUserPredicate(query.predicate, user)
828
+ };
829
+ case "set":
830
+ return { ...query, inputs: query.inputs.map((input) => bindCurrentUser(input, user)) };
831
+ default:
832
+ return { ...query, input: bindCurrentUser(query.input, user) };
833
+ }
834
+ }
835
+ function bindCurrentUserPredicate(predicate, user) {
836
+ switch (predicate.op) {
837
+ case "and":
838
+ case "or":
839
+ return {
840
+ ...predicate,
841
+ items: predicate.items.map((item) => bindCurrentUserPredicate(item, user))
842
+ };
843
+ case "not":
844
+ return { ...predicate, item: bindCurrentUserPredicate(predicate.item, user) };
845
+ case "exists":
846
+ case "constant":
847
+ return predicate;
848
+ case "in": {
849
+ if (!predicate.values.some(isCurrentUser))
850
+ return predicate;
851
+ const values = predicate.values.flatMap((value) => isCurrentUser(value) ? user ? [user] : [] : [value]);
852
+ return values.length > 0 ? { ...predicate, values } : NO_ROW;
853
+ }
854
+ case "contains": {
855
+ if (!isCurrentUser(predicate.value))
856
+ return predicate;
857
+ if (user)
858
+ return { ...predicate, value: user };
859
+ return NO_ROW;
860
+ }
861
+ default: {
862
+ if (!isCurrentUser(predicate.value))
863
+ return predicate;
864
+ if (user)
865
+ return { ...predicate, value: user };
866
+ return predicate.op === "neq" ? EVERY_ROW : NO_ROW;
867
+ }
868
+ }
869
+ }
870
+ var NO_ROW = Object.freeze({ op: "constant", value: false });
871
+ var EVERY_ROW = Object.freeze({ op: "constant", value: true });
872
+
873
+ // src/objects/vectors/profile.ts
874
+ var MAX_VECTOR_K = 1000;
875
+ var VECTOR_INPUT_VERSION = 1;
876
+ var INDEXING_EMBEDDING_TIMEOUT_MS = 5 * 60000;
877
+ function vectorConfiguration(profile) {
878
+ return sha256Canonical2({
879
+ format: VECTOR_INPUT_VERSION,
880
+ sources: [...profile.source],
881
+ provider: profile.model.providerId,
882
+ model: profile.model.modelId,
883
+ representation: profile.model.definition.representation ?? { name: profile.model.modelId },
884
+ dimensions: profile.model.definition.dimensions,
885
+ ...profile.model.definition.inputMode === "asymmetric" ? { inputMode: "asymmetric" } : {},
886
+ metric: "cosine",
887
+ precision: "float32",
888
+ normalization: "l2-v1"
889
+ });
890
+ }
891
+ function vectorSources(source, properties) {
892
+ const values = Object.create(null);
893
+ for (const key of source) {
894
+ const value = properties[key];
895
+ if (value !== undefined && value !== null && typeof value !== "string") {
896
+ throw new MaterializationValidationError2(`Vector source must be text: ${key}`);
897
+ }
898
+ values[key] = typeof value === "string" ? value : null;
899
+ }
900
+ const text = JSON.stringify(source.map((key) => [key, values[key]]));
901
+ return { text, sourceFingerprint: sha256Canonical2(text) };
902
+ }
903
+ function normalizeVector2(values, dimensions) {
904
+ if (!Array.isArray(values) || values.length !== dimensions) {
905
+ throw new MaterializationValidationError2(`Vector dimension mismatch; expected ${dimensions}`);
906
+ }
907
+ const normalized = Array.from(values, (value) => {
908
+ if (typeof value !== "number" || !Number.isFinite(value) || !Number.isFinite(Math.fround(value))) {
909
+ throw new MaterializationValidationError2("Vector values must be finite float32 numbers.");
910
+ }
911
+ return Math.fround(value);
912
+ });
913
+ if (!normalized.some((value) => value !== 0)) {
914
+ throw new MaterializationValidationError2("Cosine search requires a nonzero vector.");
915
+ }
916
+ const norm = Math.hypot(...normalized);
917
+ return Object.freeze(normalized.map((value) => Math.fround(value / norm)));
918
+ }
919
+ function vectorSearchCandidateLimit2(dimensions) {
920
+ return Math.min(1e4, Math.floor(16000000 / dimensions));
921
+ }
922
+
923
+ // src/objects/vectors/query.ts
924
+ function hasVectorProfile2(query) {
925
+ if (query.kind === "vector")
926
+ return true;
927
+ if (query.kind === "set")
928
+ return query.inputs.some(hasVectorProfile2);
929
+ return "input" in query && hasVectorProfile2(query.input);
930
+ }
931
+ function isVectorProfileQuery2(query) {
932
+ if (query.kind === "limit" || query.kind === "project")
933
+ return isVectorProfileQuery2(query.input);
934
+ if (query.kind === "rerank") {
935
+ return query.input.kind === "vector" && isVectorProfileQuery2(query.input);
936
+ }
937
+ if (query.kind !== "vector" || !query.profile)
938
+ return false;
939
+ return isVectorCandidateQuery(query.input);
940
+ }
941
+ function isVectorCandidateQuery(query) {
942
+ switch (query.kind) {
943
+ case "start":
944
+ return !query.includeSubtypes;
945
+ case "refs":
946
+ return true;
947
+ case "filter":
948
+ case "traverse":
949
+ return isVectorCandidateQuery(query.input);
950
+ case "set":
951
+ return query.inputs.every(isVectorCandidateQuery);
952
+ default:
953
+ return false;
954
+ }
955
+ }
956
+
957
+ // src/objects/query/reranking-limits.ts
958
+ var MAX_RERANK_CANDIDATES = 100;
959
+ var MAX_RERANK_INPUT_BYTES = 1048576;
960
+
961
+ // src/objects/query/validate.ts
962
+ var DEFAULT_MAX_LIMIT = 1000;
963
+ var DEFAULT_MAX_PAGE_SIZE = 1000;
964
+ var DEFAULT_MAX_REFS = 1000;
965
+ var NOOP_ADMISSION_STATE = Object.freeze({});
966
+ var NOOP_QUERY_ADMISSION = Object.freeze({
967
+ empty: () => NOOP_ADMISSION_STATE,
968
+ source: () => ({ state: NOOP_ADMISSION_STATE }),
969
+ property: () => {
970
+ return;
971
+ },
972
+ edge: (input) => ({
973
+ state: input.state
974
+ }),
975
+ set: (input) => input.states[0] ?? NOOP_ADMISSION_STATE
976
+ });
977
+ function composeObjectQueryAdmissions(first, second) {
978
+ const parts = new WeakMap;
979
+ const join = (left, right) => {
980
+ const state = Object.freeze({});
981
+ parts.set(state, [left, right]);
982
+ return state;
983
+ };
984
+ const split = (state) => {
985
+ const pair = parts.get(state);
986
+ if (!pair)
987
+ throw new Error("[Sixb] Composed query admission received a foreign state.");
988
+ return pair;
989
+ };
990
+ const transition = (left, right) => {
991
+ const denial = left.denial ?? right.denial;
992
+ return { state: join(left.state, right.state), ...denial ? { denial } : {} };
993
+ };
994
+ const admission = {
995
+ empty: () => join(first.empty(), second.empty()),
996
+ source: (input) => transition(first.source(input), second.source(input)),
997
+ edge: (input) => {
998
+ const [left, right] = split(input.state);
999
+ return transition(first.edge({ ...input, state: left }), second.edge({ ...input, state: right }));
1000
+ },
1001
+ property: (input) => {
1002
+ const [left, right] = split(input.state);
1003
+ return first.property({ ...input, state: left }) ?? second.property({ ...input, state: right });
1004
+ },
1005
+ set: (input) => {
1006
+ const pairs = input.states.map(split);
1007
+ return join(first.set({ ...input, states: pairs.map(([left]) => left) }), second.set({ ...input, states: pairs.map(([, right]) => right) }));
1008
+ }
1009
+ };
1010
+ return Object.freeze(admission);
1011
+ }
1012
+ function validateObjectQuery2(query, options) {
1013
+ const admitted = validateObjectQueryWithAdmission(query, options, NOOP_QUERY_ADMISSION);
1014
+ return {
1015
+ query: admitted.query,
1016
+ result: admitted.result,
1017
+ touchedObjectTypeIds: admitted.touchedObjectTypeIds
1018
+ };
1019
+ }
1020
+ function validateObjectQueryWithAdmission(query, options, admission) {
1021
+ const normalized = options.normalize === false ? query : normalizeObjectQuery2(query);
1022
+ const ctx = createValidationContext(options, admission);
1023
+ validateVectorComposition(query, ctx);
1024
+ const validation = validateQueryNode(normalized, "$", ctx);
1025
+ if (ctx.issues.length > 0) {
1026
+ throw new ObjectQueryValidationError2(ctx.issues);
1027
+ }
1028
+ const denial = ctx.admissionDenials[0];
1029
+ if (denial)
1030
+ throw denial;
1031
+ return {
1032
+ query: validation.query,
1033
+ result: validation.result,
1034
+ touchedObjectTypeIds: [...ctx.touchedObjectTypeIds],
1035
+ admissionState: validation.admissionState
1036
+ };
1037
+ }
1038
+ function collectObjectQueryValidationIssues2(query, options) {
1039
+ const normalized = options.normalize === false ? query : normalizeObjectQuery2(query);
1040
+ const ctx = createValidationContext(options, NOOP_QUERY_ADMISSION);
1041
+ validateVectorComposition(query, ctx);
1042
+ validateQueryNode(normalized, "$", ctx);
1043
+ return ctx.issues;
1044
+ }
1045
+ function resolveObjectQueryResultShape2(query, options) {
1046
+ return validateObjectQuery2(query, options).result;
1047
+ }
1048
+ function validateVectorComposition(query, ctx) {
1049
+ if (hasVectorProfile2(query) && !isVectorProfileQuery2(query))
1050
+ ctx.issues.push({
1051
+ path: "$",
1052
+ code: "vector.composition",
1053
+ message: "Vector profiles support one top-k over one concrete type, with filters, traversals or sets before ranking, optional reranking, then limit/project."
1054
+ });
1055
+ }
1056
+ function createValidationContext(options, admission) {
1057
+ return {
1058
+ ontology: options.ontology,
1059
+ valueTypesById: options.ontology.getValueTypesById(),
1060
+ maxLimit: options.maxLimit ?? DEFAULT_MAX_LIMIT,
1061
+ maxPageSize: options.maxPageSize ?? DEFAULT_MAX_PAGE_SIZE,
1062
+ maxRefs: options.maxRefs ?? DEFAULT_MAX_REFS,
1063
+ issues: [],
1064
+ touchedObjectTypeIds: new Set,
1065
+ admission,
1066
+ admissionDenials: []
1067
+ };
1068
+ }
1069
+ function validateQueryNode(query, path, ctx) {
1070
+ const validation = dispatchQueryNode(query, path, ctx);
1071
+ for (const objectTypeId of validation.result.objectTypeIds) {
1072
+ ctx.touchedObjectTypeIds.add(objectTypeId);
1073
+ }
1074
+ return validation;
1075
+ }
1076
+ function dispatchQueryNode(query, path, ctx) {
1077
+ switch (query.kind) {
1078
+ case "start": {
1079
+ const validation = validateStart(query.objectTypeId, query.includeSubtypes, path, ctx);
1080
+ return {
1081
+ ...validation,
1082
+ admissionState: admitTransition(ctx, ctx.admission.source({
1083
+ kind: "start",
1084
+ result: validation.result,
1085
+ objectTypeId: query.objectTypeId,
1086
+ path
1087
+ }))
1088
+ };
1089
+ }
1090
+ case "refs": {
1091
+ const validation = validateRefs(query.refs, path, ctx);
1092
+ return {
1093
+ ...validation,
1094
+ admissionState: admitTransition(ctx, ctx.admission.source({
1095
+ kind: "refs",
1096
+ result: validation.result,
1097
+ refs: validation.query.kind === "refs" ? validation.query.refs : query.refs,
1098
+ path
1099
+ }))
1100
+ };
1101
+ }
1102
+ case "filter": {
1103
+ const input = validateQueryNode(query.input, `${path}.input`, ctx);
1104
+ const predicate = validatePredicate(query.predicate, input.result, input.admissionState, `${path}.predicate`, ctx);
1105
+ return {
1106
+ result: input.result,
1107
+ query: { ...query, input: input.query, predicate },
1108
+ admissionState: input.admissionState
1109
+ };
1110
+ }
1111
+ case "text": {
1112
+ const input = validateQueryNode(query.input, `${path}.input`, ctx);
1113
+ const textFields = validateTextQuery(query.query, query.fields, input.result, input.admissionState, path, ctx);
1114
+ return {
1115
+ result: input.result,
1116
+ query: {
1117
+ ...query,
1118
+ input: input.query,
1119
+ fields: query.fields,
1120
+ fieldsByObjectType: query.fields ? undefined : textFields.fieldsByObjectType
1121
+ },
1122
+ admissionState: input.admissionState
1123
+ };
1124
+ }
1125
+ case "vector": {
1126
+ const input = validateQueryNode(query.input, `${path}.input`, ctx);
1127
+ return {
1128
+ result: input.result,
1129
+ query: validateVectorProfileQuery({ ...query, input: input.query }, input.result, input.admissionState, path, ctx),
1130
+ admissionState: input.admissionState
1131
+ };
1132
+ }
1133
+ case "traverse": {
1134
+ const input = validateQueryNode(query.input, `${path}.input`, ctx);
1135
+ const result = validateTraverse(query.linkId, query.direction, query.sourceObjectTypeId, input.result, path, ctx);
1136
+ return {
1137
+ result,
1138
+ query: { ...query, input: input.query },
1139
+ admissionState: admitTransition(ctx, ctx.admission.edge({
1140
+ state: input.admissionState,
1141
+ result,
1142
+ linkId: query.linkId,
1143
+ direction: query.direction,
1144
+ sourceObjectTypeId: query.sourceObjectTypeId,
1145
+ use: "traverse",
1146
+ path
1147
+ }))
1148
+ };
1149
+ }
1150
+ case "rerank": {
1151
+ const input = validateQueryNode(query.input, `${path}.input`, ctx);
1152
+ if (input.query.kind !== "vector" || typeof input.query.vector !== "string" || input.query.k > MAX_RERANK_CANDIDATES) {
1153
+ addIssue(ctx, path, "invalid_rerank_input", `Reranking requires a text vector query with k at most ${MAX_RERANK_CANDIDATES}, before limit or project.`);
1154
+ }
1155
+ if (typeof query.model?.provider !== "string" || !query.model.provider.trim() || query.model.provider.trim() !== query.model.provider || typeof query.model.modelId !== "string" || !query.model.modelId.trim() || query.model.modelId.trim() !== query.model.modelId) {
1156
+ addIssue(ctx, path, "invalid_rerank_model", "Reranking requires an explicit provider and model ID.");
1157
+ }
1158
+ return { ...input, query: { ...query, model: { ...query.model }, input: input.query } };
1159
+ }
1160
+ case "set":
1161
+ return validateSet(query.inputs, query.op, path, ctx);
1162
+ case "sort": {
1163
+ const input = validateQueryNode(query.input, `${path}.input`, ctx);
1164
+ const fields = validateSortFields(query.fields, input.result, input.admissionState, "sort", path, ctx);
1165
+ return {
1166
+ result: input.result,
1167
+ query: { ...query, input: input.query, fields },
1168
+ admissionState: input.admissionState
1169
+ };
1170
+ }
1171
+ case "limit": {
1172
+ const input = validateQueryNode(query.input, `${path}.input`, ctx);
1173
+ validateLimit(query.limit, path, ctx);
1174
+ return {
1175
+ result: input.result,
1176
+ query: { ...query, input: input.query },
1177
+ admissionState: input.admissionState
1178
+ };
1179
+ }
1180
+ case "page": {
1181
+ const input = validateQueryNode(query.input, `${path}.input`, ctx);
1182
+ validatePage(query.pageSize, query.pageToken, path, ctx);
1183
+ return {
1184
+ result: input.result,
1185
+ query: { ...query, input: input.query },
1186
+ admissionState: input.admissionState
1187
+ };
1188
+ }
1189
+ case "project": {
1190
+ const input = validateQueryNode(query.input, `${path}.input`, ctx);
1191
+ validateProjection(query.properties, input.result, input.admissionState, path, ctx);
1192
+ return {
1193
+ result: input.result,
1194
+ query: { ...query, input: input.query },
1195
+ admissionState: input.admissionState
1196
+ };
1197
+ }
1198
+ case "expand": {
1199
+ const input = validateQueryNode(query.input, `${path}.input`, ctx);
1200
+ const usersAllowed = path === "$";
1201
+ const expansions = validateExpansions(query.expansions, input.result, input.admissionState, `${path}.expansions`, ctx, usersAllowed);
1202
+ validateUserExpansions(query.users, input.result, `${path}.users`, ctx, usersAllowed);
1203
+ validateUserExpansionsProjected(query.users, input.query, `${path}.users`, ctx);
1204
+ return {
1205
+ result: input.result,
1206
+ query: { ...query, input: input.query, expansions },
1207
+ admissionState: input.admissionState
1208
+ };
1209
+ }
1210
+ }
1211
+ }
1212
+ function validateRefs(refs, path, ctx) {
1213
+ if (refs.length === 0) {
1214
+ addIssue(ctx, `${path}.refs`, "empty_refs", "refs must include at least one object reference");
1215
+ }
1216
+ if (refs.length > ctx.maxRefs) {
1217
+ addIssue(ctx, `${path}.refs`, "too_many_refs", `refs must include at most ${ctx.maxRefs} object references`);
1218
+ }
1219
+ const objectTypeIds = new Set;
1220
+ refs.forEach((ref, index) => {
1221
+ const refPath = `${path}.refs[${index}]`;
1222
+ if (!ref.objectTypeId) {
1223
+ addIssue(ctx, `${refPath}.objectTypeId`, "missing_object_type", "objectTypeId is required");
1224
+ } else if (!ctx.ontology.getObjectTypeById(ref.objectTypeId)) {
1225
+ addIssue(ctx, `${refPath}.objectTypeId`, "unknown_object_type", formatUnknownObjectTypeMessage(ref.objectTypeId));
1226
+ } else {
1227
+ objectTypeIds.add(ref.objectTypeId);
1228
+ }
1229
+ if (!ref.primaryId) {
1230
+ addIssue(ctx, `${refPath}.primaryId`, "missing_primary_id", "primaryId is required");
1231
+ }
1232
+ });
1233
+ return {
1234
+ result: { objectTypeIds: [...objectTypeIds] },
1235
+ query: { kind: "refs", refs: refs.map((ref) => ({ ...ref })) }
1236
+ };
1237
+ }
1238
+ function validateStart(objectTypeId, includeSubtypes, path, ctx) {
1239
+ if (!objectTypeId) {
1240
+ addIssue(ctx, path, "missing_object_type", "start.objectTypeId is required");
1241
+ return { result: { objectTypeIds: [] }, query: { kind: "start", objectTypeId } };
1242
+ }
1243
+ if (!ctx.ontology.getObjectTypeById(objectTypeId)) {
1244
+ addIssue(ctx, path, "unknown_object_type", formatUnknownObjectTypeMessage(objectTypeId));
1245
+ return { result: { objectTypeIds: [] }, query: { kind: "start", objectTypeId } };
1246
+ }
1247
+ const objectTypeIds = includeSubtypes ? withSubtypes([objectTypeId], ctx) : [objectTypeId];
1248
+ return { result: { objectTypeIds }, query: { kind: "start", objectTypeId, includeSubtypes } };
1249
+ }
1250
+ function validatePredicate(predicate, shape, admissionState, path, ctx) {
1251
+ switch (predicate.op) {
1252
+ case "and":
1253
+ case "or":
1254
+ if (predicate.items.length === 0) {
1255
+ addIssue(ctx, path, "empty_predicate_group", `Predicate '${predicate.op}' must not be empty`);
1256
+ }
1257
+ return {
1258
+ ...predicate,
1259
+ items: predicate.items.map((item, index) => validatePredicate(item, shape, admissionState, `${path}.items[${index}]`, ctx))
1260
+ };
1261
+ case "not":
1262
+ return {
1263
+ ...predicate,
1264
+ item: validatePredicate(predicate.item, shape, admissionState, `${path}.item`, ctx)
1265
+ };
1266
+ case "eq":
1267
+ case "neq":
1268
+ case "lt":
1269
+ case "lte":
1270
+ case "gt":
1271
+ case "gte": {
1272
+ const { scalarKind: _authoredScalarKind, ...authoredPredicate } = predicate;
1273
+ const scalarKind = resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx);
1274
+ validatePredicateValue(predicate.propertyId, predicate.op, predicate.value, shape, path, ctx);
1275
+ admitProperty(ctx, {
1276
+ state: admissionState,
1277
+ propertyId: predicate.propertyId,
1278
+ use: "filter",
1279
+ path
1280
+ });
1281
+ return {
1282
+ ...authoredPredicate,
1283
+ value: normalizeObjectQueryValue(predicate.value, scalarKind),
1284
+ ...scalarKind ? { scalarKind } : {}
1285
+ };
1286
+ }
1287
+ case "in": {
1288
+ const { scalarKind: _authoredScalarKind, ...authoredPredicate } = predicate;
1289
+ const scalarKind = resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx);
1290
+ if (predicate.values.length === 0) {
1291
+ addIssue(ctx, path, "empty_in_values", "Predicate 'in' must include at least one value");
1292
+ }
1293
+ predicate.values.forEach((value, index) => {
1294
+ validatePredicateValue(predicate.propertyId, predicate.op, value, shape, `${path}.values[${index}]`, ctx);
1295
+ });
1296
+ admitProperty(ctx, {
1297
+ state: admissionState,
1298
+ propertyId: predicate.propertyId,
1299
+ use: "filter",
1300
+ path
1301
+ });
1302
+ return {
1303
+ ...authoredPredicate,
1304
+ values: predicate.values.map((value) => normalizeObjectQueryValue(value, scalarKind)),
1305
+ ...scalarKind ? { scalarKind } : {}
1306
+ };
1307
+ }
1308
+ case "exists":
1309
+ resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx);
1310
+ admitProperty(ctx, {
1311
+ state: admissionState,
1312
+ propertyId: predicate.propertyId,
1313
+ use: "filter",
1314
+ path
1315
+ });
1316
+ if (typeof predicate.value !== "boolean") {
1317
+ addIssue(ctx, path, "invalid_exists_value", "Predicate 'exists' value must be boolean");
1318
+ }
1319
+ return predicate;
1320
+ case "constant":
1321
+ if (typeof predicate.value !== "boolean") {
1322
+ addIssue(ctx, path, "invalid_constant_value", "Predicate 'constant' value must be boolean");
1323
+ }
1324
+ return predicate;
1325
+ case "contains": {
1326
+ const { scalarKind: _authoredScalarKind, ...authoredPredicate } = predicate;
1327
+ const scalarKind = resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx);
1328
+ validateContainsValue(predicate.propertyId, predicate.value, shape, path, ctx);
1329
+ admitProperty(ctx, {
1330
+ state: admissionState,
1331
+ propertyId: predicate.propertyId,
1332
+ use: "filter",
1333
+ path
1334
+ });
1335
+ return {
1336
+ ...authoredPredicate,
1337
+ value: normalizeObjectQueryValue(predicate.value, scalarKind),
1338
+ ...scalarKind ? { scalarKind } : {}
1339
+ };
1340
+ }
1341
+ }
1342
+ }
1343
+ function resolveAndValidatePredicateProperty(propertyId, op, shape, path, ctx) {
1344
+ const properties = getPropertiesForResult(propertyId, shape, path, ctx);
1345
+ if (properties.length === 0)
1346
+ return;
1347
+ const schemas = [];
1348
+ for (const { objectType, property } of properties) {
1349
+ const schema = resolveSchemaForProperty(property, objectType.id, ctx, path);
1350
+ if (schema)
1351
+ schemas.push(schema);
1352
+ if (isPrimaryExactPredicate(property, op)) {
1353
+ continue;
1354
+ }
1355
+ if (property.query?.searchable !== true || property.query.filterable !== true) {
1356
+ addIssue(ctx, path, "property_not_filterable", `Property '${propertyId}' on '${objectType.id}' must set query.searchable: true and query.filterable: true before it can be used in predicates`);
1357
+ continue;
1358
+ }
1359
+ if (!schema)
1360
+ continue;
1361
+ if ((op === "lt" || op === "lte" || op === "gt" || op === "gte") && !isSortableSchema(schema)) {
1362
+ addIssue(ctx, path, "operator_not_supported_for_schema", `Predicate '${op}' cannot be used with property '${propertyId}' on '${objectType.id}' because its schema is not orderable`);
1363
+ }
1364
+ if ((op === "eq" || op === "neq" || op === "in" || op === "exists") && !isExactSchema(schema)) {
1365
+ addIssue(ctx, path, "operator_not_supported_for_schema", `Predicate '${op}' cannot be used with property '${propertyId}' on '${objectType.id}' because its schema cannot be exact-matched`);
1366
+ }
1367
+ if (op === "contains" && !isContainsSchema(schema)) {
1368
+ addIssue(ctx, path, "operator_not_supported_for_schema", `Predicate 'contains' cannot be used with property '${propertyId}' on '${objectType.id}' because its schema is not string, array, or map`);
1369
+ }
1370
+ }
1371
+ if (op === "exists")
1372
+ return;
1373
+ if (op === "contains")
1374
+ return resolveArrayItemScalarKind(schemas, ctx);
1375
+ return resolveCommonQueryScalarKind(schemas, propertyId, path, ctx);
1376
+ }
1377
+ function resolveArrayItemScalarKind(schemas, ctx) {
1378
+ const kinds = new Set;
1379
+ for (const schema of schemas) {
1380
+ if (typeof schema === "string" || schema.type !== "array")
1381
+ return;
1382
+ const items = resolveValueTypeRefs(schema.items, ctx.valueTypesById);
1383
+ kinds.add(items ? queryScalarKindForSchema(items) : undefined);
1384
+ }
1385
+ return kinds.size === 1 ? [...kinds][0] : undefined;
1386
+ }
1387
+ function resolveValueTypeRefs(schema, valueTypesById, seen = new Set) {
1388
+ if (typeof schema === "string" || schema.type !== "valueTypeRef")
1389
+ return schema;
1390
+ if (seen.has(schema.valueTypeId))
1391
+ return;
1392
+ seen.add(schema.valueTypeId);
1393
+ const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema;
1394
+ return resolved ? resolveValueTypeRefs(resolved, valueTypesById, seen) : undefined;
1395
+ }
1396
+ function normalizeObjectQueryValue(value, scalarKind) {
1397
+ try {
1398
+ if (scalarKind === "decimal" && typeof value === "string")
1399
+ return normalizeDecimalValue2(value);
1400
+ if ((scalarKind === "date" || scalarKind === "timestamp") && isTemporalValue(value)) {
1401
+ return normalizeSchemaValue2(scalarKind, value, "predicate value", NO_VALUE_TYPES);
1402
+ }
1403
+ } catch {
1404
+ return value;
1405
+ }
1406
+ return value;
1407
+ }
1408
+ var NO_VALUE_TYPES = new Map;
1409
+ function isTemporalValue(value) {
1410
+ return typeof value === "string" || value instanceof Date;
1411
+ }
1412
+ function resolveCommonQueryScalarKind(schemas, propertyId, path, ctx) {
1413
+ const scalarKinds = schemas.map(queryScalarKindForSchema);
1414
+ if (scalarKinds.length === 0 || scalarKinds.some((kind) => kind === undefined)) {
1415
+ return;
1416
+ }
1417
+ const resolvedKinds = new Set(scalarKinds);
1418
+ if (resolvedKinds.size === 1)
1419
+ return scalarKinds[0];
1420
+ addIssue(ctx, path, "incompatible_property_scalar_kinds", `Property '${propertyId}' resolves to incompatible scalar schemas: ${[...resolvedKinds].join(", ")}`);
1421
+ return;
1422
+ }
1423
+ function validatePredicateValue(propertyId, op, value, shape, path, ctx) {
1424
+ if (isCurrentUser(value)) {
1425
+ validateCurrentUserPredicate(propertyId, op, shape, path, ctx);
1426
+ return;
1427
+ }
1428
+ for (const { objectType, property } of getPropertiesForResult(propertyId, shape, path, ctx, {
1429
+ reportMissing: false
1430
+ })) {
1431
+ try {
1432
+ validatePropertyValue2(property, value, `${objectType.id}.${property.id}`, ctx.valueTypesById);
1433
+ } catch (error) {
1434
+ addIssue(ctx, path, "invalid_predicate_value", error instanceof Error ? error.message : `Invalid value for property '${property.id}' on '${objectType.id}'`);
1435
+ }
1436
+ }
1437
+ }
1438
+ function validateContainsValue(propertyId, value, shape, path, ctx) {
1439
+ if (isCurrentUser(value)) {
1440
+ validateCurrentUserPredicate(propertyId, "contains", shape, path, ctx);
1441
+ return;
1442
+ }
1443
+ for (const { objectType, property } of getPropertiesForResult(propertyId, shape, path, ctx, {
1444
+ reportMissing: false
1445
+ })) {
1446
+ const schema = resolveSchemaForProperty(property, objectType.id, ctx, path);
1447
+ if (!schema)
1448
+ continue;
1449
+ if (typeof schema === "string") {
1450
+ if (isContainsSchema(schema)) {
1451
+ if (typeof value !== "string") {
1452
+ addIssue(ctx, path, "invalid_contains_value", `Predicate 'contains' value for '${objectType.id}.${property.id}' must be a string`);
1453
+ }
1454
+ }
1455
+ continue;
1456
+ }
1457
+ if (schema.type === "array") {
1458
+ try {
1459
+ validateSchemaValue2(schema.items, value, `${objectType.id}.${property.id}[]`, ctx.valueTypesById);
1460
+ } catch (error) {
1461
+ addIssue(ctx, path, "invalid_contains_value", error instanceof Error ? error.message : `Invalid contains value for '${objectType.id}.${property.id}'`);
1462
+ }
1463
+ continue;
1464
+ }
1465
+ if (schema.type === "map" && typeof value !== "string") {
1466
+ addIssue(ctx, path, "invalid_contains_value", `Predicate 'contains' value for '${objectType.id}.${property.id}' must be a map key string`);
1467
+ }
1468
+ }
1469
+ }
1470
+ function validateCurrentUserPredicate(propertyId, op, shape, path, ctx) {
1471
+ if (op !== "eq" && op !== "neq" && op !== "in" && op !== "contains") {
1472
+ addIssue(ctx, path, "current_user_operator_not_supported", `Predicate '${op}' cannot compare currentUser(); use eq, neq, in, or contains.`);
1473
+ return;
1474
+ }
1475
+ for (const { objectType, property } of getPropertiesForResult(propertyId, shape, path, ctx, {
1476
+ reportMissing: false
1477
+ })) {
1478
+ if (holdsUserReferences(property.schema, op === "contains", ctx))
1479
+ continue;
1480
+ addIssue(ctx, path, "current_user_requires_user_reference", op === "contains" ? `currentUser() can only be found in a list of ref.user() values; '${objectType.id}.${property.id}' is not one.` : `currentUser() can only be compared with a ref.user() property; '${objectType.id}.${property.id}' is not one.`);
1481
+ }
1482
+ }
1483
+ function holdsUserReferences(schema, list, ctx) {
1484
+ const resolved = resolveValueTypeRefs(schema, ctx.valueTypesById);
1485
+ if (!list)
1486
+ return resolved === "userRef";
1487
+ if (typeof resolved !== "object" || resolved.type !== "array")
1488
+ return false;
1489
+ return resolveValueTypeRefs(resolved.items, ctx.valueTypesById) === "userRef";
1490
+ }
1491
+ function validateTextQuery(query, fields, shape, admissionState, path, ctx) {
1492
+ if (query.trim().length === 0) {
1493
+ addIssue(ctx, path, "empty_text_query", "Text query must not be empty");
1494
+ }
1495
+ const fieldsByObjectType = fields ? undefined : {};
1496
+ for (const objectType of getObjectTypesForResult(shape, ctx)) {
1497
+ const fieldIds = fields ?? objectType.search?.defaultText;
1498
+ if (!fieldIds || fieldIds.length === 0) {
1499
+ addIssue(ctx, path, "missing_text_fields", `Object type '${objectType.id}' must define search.defaultText or the text query must specify fields`);
1500
+ continue;
1501
+ }
1502
+ const admitted = admitTextFields(fieldIds, fields === undefined, {
1503
+ state: admissionState,
1504
+ objectTypeId: objectType.id,
1505
+ path: `${path}.fields`,
1506
+ ctx
1507
+ });
1508
+ if (fieldsByObjectType)
1509
+ fieldsByObjectType[objectType.id] = uniqueStrings(admitted);
1510
+ for (const fieldId of fieldIds) {
1511
+ const property = getProperty(objectType, fieldId);
1512
+ if (!property) {
1513
+ addIssue(ctx, path, "unknown_text_field", `Text query references unknown property '${fieldId}' on '${objectType.id}'`);
1514
+ continue;
1515
+ }
1516
+ assertStaticSearchProperty(objectType.id, property, "text query", path, ctx);
1517
+ assertQueryFlag(objectType.id, property, "text", "text query", path, ctx);
1518
+ const schema = resolveSchemaForProperty(property, objectType.id, ctx, path);
1519
+ if (schema && !isTextSchema(schema)) {
1520
+ addIssue(ctx, path, "text_field_not_string_like", `Text query field '${fieldId}' on '${objectType.id}' must be string-like`);
1521
+ }
1522
+ }
1523
+ }
1524
+ return fieldsByObjectType ? { fieldsByObjectType } : {};
1525
+ }
1526
+ function admitTextFields(fieldIds, defaults, input) {
1527
+ const admitted = [];
1528
+ let firstDenial;
1529
+ for (const fieldId of fieldIds) {
1530
+ const denial = input.ctx.admission.property({
1531
+ state: input.state,
1532
+ propertyId: fieldId,
1533
+ objectTypeId: input.objectTypeId,
1534
+ use: "text",
1535
+ path: input.path
1536
+ });
1537
+ if (!denial) {
1538
+ admitted.push(fieldId);
1539
+ } else if (!defaults) {
1540
+ recordAdmissionDenial(input.ctx, denial);
1541
+ } else {
1542
+ firstDenial ??= denial;
1543
+ }
1544
+ }
1545
+ if (admitted.length === 0 && firstDenial)
1546
+ recordAdmissionDenial(input.ctx, firstDenial);
1547
+ return admitted;
1548
+ }
1549
+ function validateVectorProfileQuery(query, shape, state, path, ctx) {
1550
+ const types = getObjectTypesForResult(shape, ctx);
1551
+ if (types.length !== 1 || !Number.isSafeInteger(query.k) || query.k < 1 || query.k > MAX_VECTOR_K) {
1552
+ addIssue(ctx, path, "invalid_vector_profile_query", `Vector search requires one type, one profile and k between 1 and ${MAX_VECTOR_K}`);
1553
+ return query;
1554
+ }
1555
+ const objectType = types[0];
1556
+ const profile = query.profile === undefined ? undefined : objectType.search?.vectors?.[query.profile];
1557
+ if (!profile) {
1558
+ addIssue(ctx, path, "unknown_vector_profile", `Unknown vector profile: ${query.profile}`);
1559
+ return query;
1560
+ }
1561
+ for (const propertyId of profile.source)
1562
+ admitProperty(ctx, { state, propertyId, objectTypeId: objectType.id, use: "vector", path });
1563
+ let values = query.vector;
1564
+ try {
1565
+ if (typeof values === "string") {
1566
+ if (!values.trim() || values.length > 8000) {
1567
+ throw new Error("Vector search text must be nonempty and at most 8000 characters.");
1568
+ }
1569
+ } else {
1570
+ values = normalizeVector2(values, profile.model.definition.dimensions);
1571
+ }
1572
+ } catch (error) {
1573
+ addIssue(ctx, path, "invalid_vector", error instanceof Error ? error.message : "Invalid vector");
1574
+ }
1575
+ return {
1576
+ ...query,
1577
+ vector: values,
1578
+ source: [...profile.source],
1579
+ configuration: vectorConfiguration(profile)
1580
+ };
1581
+ }
1582
+ function validateTraverse(linkId, direction, sourceObjectTypeId, shape, path, ctx) {
1583
+ if (!linkId) {
1584
+ addIssue(ctx, path, "missing_link_id", "traverse.linkId is required");
1585
+ return { objectTypeIds: [] };
1586
+ }
1587
+ if (direction === "outgoing") {
1588
+ if (sourceObjectTypeId !== undefined) {
1589
+ addIssue(ctx, path, "traverse_source_not_applicable", "traverse.sourceObjectTypeId only applies to incoming traversal");
1590
+ }
1591
+ return validateOutgoingTraverse(linkId, shape, path, ctx);
1592
+ }
1593
+ return validateIncomingTraverse(linkId, sourceObjectTypeId, shape, path, ctx);
1594
+ }
1595
+ function validateOutgoingTraverse(linkId, shape, path, ctx) {
1596
+ const targetTypeIds = [];
1597
+ for (const objectType of getObjectTypesForResult(shape, ctx)) {
1598
+ const link = objectType.links.find((candidate) => candidate.id === linkId);
1599
+ if (!link) {
1600
+ addIssue(ctx, path, "unknown_link", `Outgoing traversal references unknown link '${linkId}' on '${objectType.id}'`);
1601
+ continue;
1602
+ }
1603
+ if (link.targetObjectTypeId === "*") {
1604
+ addIssue(ctx, path, "wildcard_traverse_target", `Outgoing traversal over wildcard link '${objectType.id}.${linkId}' cannot infer a target object type`);
1605
+ continue;
1606
+ }
1607
+ const declaredTargets = Array.isArray(link.targetObjectTypeId) ? link.targetObjectTypeId : [link.targetObjectTypeId];
1608
+ for (const targetId of declaredTargets) {
1609
+ if (!ctx.ontology.getObjectTypeById(targetId)) {
1610
+ addIssue(ctx, path, "unknown_link_target", `Outgoing traversal over '${objectType.id}.${linkId}' targets unknown object type '${targetId}'`);
1611
+ } else {
1612
+ targetTypeIds.push(targetId);
1613
+ }
1614
+ }
1615
+ }
1616
+ const objectTypeIds = uniqueStrings(targetTypeIds);
1617
+ touchLinkTargets(objectTypeIds, ctx);
1618
+ return { objectTypeIds };
1619
+ }
1620
+ function validateIncomingTraverse(linkId, sourceObjectTypeId, shape, path, ctx) {
1621
+ let candidateTypes = ctx.ontology.listObjectTypes();
1622
+ if (sourceObjectTypeId !== undefined) {
1623
+ const sourceType = ctx.ontology.getObjectTypeById(sourceObjectTypeId);
1624
+ if (!sourceType) {
1625
+ addIssue(ctx, path, "unknown_traverse_source", `Incoming traversal references unknown source object type '${sourceObjectTypeId}'`);
1626
+ return { objectTypeIds: [] };
1627
+ }
1628
+ candidateTypes = [sourceType];
1629
+ }
1630
+ const sourceTypeIds = [];
1631
+ for (const sourceType of candidateTypes) {
1632
+ const link = sourceType.links.find((candidate) => candidate.id === linkId);
1633
+ if (!link)
1634
+ continue;
1635
+ if (link.targetObjectTypeId === "*") {
1636
+ sourceTypeIds.push(sourceType.id);
1637
+ continue;
1638
+ }
1639
+ const matches = shape.objectTypeIds.some((targetTypeId) => ctx.ontology.isValidLinkTarget(link.targetObjectTypeId, targetTypeId));
1640
+ if (matches)
1641
+ sourceTypeIds.push(sourceType.id);
1642
+ }
1643
+ if (sourceTypeIds.length === 0) {
1644
+ addIssue(ctx, path, "incoming_link_not_found", `Incoming traversal found no source object types with link '${linkId}' targeting ${shape.objectTypeIds.join(" | ")}`);
1645
+ }
1646
+ return { objectTypeIds: uniqueStrings(sourceTypeIds) };
1647
+ }
1648
+ function validateExpansions(expansions, shape, admissionState, path, ctx, usersAllowed) {
1649
+ return expansions.map((expansion, index) => validateExpansion(expansion, shape, admissionState, `${path}[${index}]`, ctx, usersAllowed));
1650
+ }
1651
+ function validateExpansion(expansion, shape, admissionState, path, ctx, usersAllowed) {
1652
+ if (!expansion.linkId) {
1653
+ addIssue(ctx, path, "missing_expand_link", "expand.linkId is required");
1654
+ return expansion;
1655
+ }
1656
+ const targetShape = expansion.direction === "incoming" ? resolveIncomingExpansionTargets(expansion.linkId, expansion.sourceObjectTypeId, shape, path, ctx) : resolveOutgoingExpansionTargets(expansion.linkId, expansion.sourceObjectTypeId, shape, path, ctx);
1657
+ const targetAdmissionState = admitTransition(ctx, ctx.admission.edge({
1658
+ state: admissionState,
1659
+ result: targetShape,
1660
+ linkId: expansion.linkId,
1661
+ direction: expansion.direction,
1662
+ sourceObjectTypeId: expansion.sourceObjectTypeId,
1663
+ use: "expand",
1664
+ path
1665
+ }));
1666
+ for (const targetTypeId of targetShape.objectTypeIds) {
1667
+ ctx.touchedObjectTypeIds.add(targetTypeId);
1668
+ }
1669
+ validateExpansionLimit(expansion.limit, path, ctx);
1670
+ const orderBy = expansion.orderBy ? validateSortFields(expansion.orderBy, targetShape, targetAdmissionState, "expand.orderBy", `${path}.orderBy`, ctx) : undefined;
1671
+ const expand = expansion.expand ? validateExpansions(expansion.expand, targetShape, targetAdmissionState, `${path}.expand`, ctx, usersAllowed) : undefined;
1672
+ validateUserExpansions(expansion.users, targetShape, `${path}.users`, ctx, usersAllowed);
1673
+ return { ...expansion, orderBy, expand };
1674
+ }
1675
+ function validateUserExpansions(users, shape, path, ctx, usersAllowed) {
1676
+ if (users === undefined)
1677
+ return;
1678
+ if (!Array.isArray(users)) {
1679
+ addIssue(ctx, path, "invalid_user_expansion", "expand.users must be an array of property ids");
1680
+ return;
1681
+ }
1682
+ if (!usersAllowed && users.length > 0) {
1683
+ addIssue(ctx, path, "invalid_user_expansion", "Only the outermost expand can expand user properties; a set operand cannot.");
1684
+ return;
1685
+ }
1686
+ users.forEach((propertyId, index) => {
1687
+ const propertyPath = `${path}[${index}]`;
1688
+ if (typeof propertyId !== "string" || propertyId.length === 0) {
1689
+ addIssue(ctx, propertyPath, "invalid_user_expansion", "expand.users ids must not be empty");
1690
+ return;
1691
+ }
1692
+ const declared = getPropertiesForResult(propertyId, shape, propertyPath, ctx, {
1693
+ reportMissing: false
1694
+ });
1695
+ if (declared.length === 0) {
1696
+ addIssue(ctx, propertyPath, "unknown_property", `Expansion references property '${propertyId}' not present on result type ${shape.objectTypeIds.join(" | ")} (an expand abandoned by a later traverse?)`);
1697
+ return;
1698
+ }
1699
+ for (const { objectType, property } of declared) {
1700
+ if (isUserRefPropertySchema(property.schema))
1701
+ continue;
1702
+ addIssue(ctx, propertyPath, "invalid_user_expansion", `Property '${propertyId}' on '${objectType.id}' is not a ref.user() property; expand() takes a link or a user property.`);
1703
+ }
1704
+ });
1705
+ }
1706
+ function validateUserExpansionsProjected(users, input, path, ctx) {
1707
+ if (!Array.isArray(users))
1708
+ return;
1709
+ const projected = projectedProperties(input);
1710
+ if (projected === undefined)
1711
+ return;
1712
+ users.forEach((propertyId, index) => {
1713
+ if (projected.includes(propertyId))
1714
+ return;
1715
+ addIssue(ctx, `${path}[${index}]`, "invalid_user_expansion", `Expanded user property '${propertyId}' must be projected too.`);
1716
+ });
1717
+ }
1718
+ function projectedProperties(query) {
1719
+ switch (query.kind) {
1720
+ case "project":
1721
+ return query.properties;
1722
+ case "set":
1723
+ return keptByEveryOperand(query.inputs.map(projectedProperties));
1724
+ case "filter":
1725
+ case "text":
1726
+ case "vector":
1727
+ case "rerank":
1728
+ case "sort":
1729
+ case "limit":
1730
+ case "page":
1731
+ return projectedProperties(query.input);
1732
+ default:
1733
+ return;
1734
+ }
1735
+ }
1736
+ function keptByEveryOperand(projections) {
1737
+ const projected = projections.filter((properties) => properties !== undefined);
1738
+ if (projected.length === 0)
1739
+ return;
1740
+ return projected.reduce((kept, properties) => kept.filter((propertyId) => properties.includes(propertyId)));
1741
+ }
1742
+ function resolveOutgoingExpansionTargets(linkId, sourceObjectTypeId, shape, path, ctx) {
1743
+ if (sourceObjectTypeId !== undefined) {
1744
+ addIssue(ctx, path, "expand_source_not_applicable", "expand.sourceObjectTypeId only applies to incoming expansion");
1745
+ }
1746
+ const targetTypeIds = [];
1747
+ let foundOnAnyType = false;
1748
+ for (const objectType of getObjectTypesForResult(shape, ctx)) {
1749
+ const link = objectType.links.find((candidate) => candidate.id === linkId);
1750
+ if (!link)
1751
+ continue;
1752
+ foundOnAnyType = true;
1753
+ if (link.targetObjectTypeId === "*") {
1754
+ addIssue(ctx, path, "wildcard_expand_target", `Expansion over wildcard link '${objectType.id}.${linkId}' cannot infer a target object type`);
1755
+ continue;
1756
+ }
1757
+ const declaredTargets = Array.isArray(link.targetObjectTypeId) ? link.targetObjectTypeId : [link.targetObjectTypeId];
1758
+ for (const targetId of declaredTargets) {
1759
+ if (!ctx.ontology.getObjectTypeById(targetId)) {
1760
+ addIssue(ctx, path, "unknown_expand_target", `Expansion over '${objectType.id}.${linkId}' targets unknown object type '${targetId}'`);
1761
+ } else {
1762
+ targetTypeIds.push(targetId);
1763
+ }
1764
+ }
1765
+ }
1766
+ if (!foundOnAnyType) {
1767
+ addIssue(ctx, path, "unknown_expand_link", `Expansion references link '${linkId}' not present on result type ${shape.objectTypeIds.join(" | ")} (an expand abandoned by a later traverse?)`);
1768
+ }
1769
+ const objectTypeIds = uniqueStrings(targetTypeIds);
1770
+ touchLinkTargets(objectTypeIds, ctx);
1771
+ return { objectTypeIds };
1772
+ }
1773
+ function touchLinkTargets(objectTypeIds, ctx) {
1774
+ for (const objectTypeId of withSubtypes(objectTypeIds, ctx)) {
1775
+ ctx.touchedObjectTypeIds.add(objectTypeId);
1776
+ }
1777
+ }
1778
+ function resolveIncomingExpansionTargets(linkId, sourceObjectTypeId, shape, path, ctx) {
1779
+ let candidateTypes = ctx.ontology.listObjectTypes();
1780
+ if (sourceObjectTypeId !== undefined) {
1781
+ const sourceType = ctx.ontology.getObjectTypeById(sourceObjectTypeId);
1782
+ if (!sourceType) {
1783
+ addIssue(ctx, path, "unknown_expand_source", `Incoming expansion references unknown source object type '${sourceObjectTypeId}'`);
1784
+ return { objectTypeIds: [] };
1785
+ }
1786
+ candidateTypes = [sourceType];
1787
+ }
1788
+ const sourceTypeIds = [];
1789
+ for (const sourceType of candidateTypes) {
1790
+ const link = sourceType.links.find((candidate) => candidate.id === linkId);
1791
+ if (!link)
1792
+ continue;
1793
+ if (link.targetObjectTypeId === "*") {
1794
+ sourceTypeIds.push(sourceType.id);
1795
+ continue;
1796
+ }
1797
+ const matches = shape.objectTypeIds.some((targetTypeId) => ctx.ontology.isValidLinkTarget(link.targetObjectTypeId, targetTypeId));
1798
+ if (matches)
1799
+ sourceTypeIds.push(sourceType.id);
1800
+ }
1801
+ if (sourceTypeIds.length === 0) {
1802
+ addIssue(ctx, path, "incoming_expand_link_not_found", `Incoming expansion found no source object types with link '${linkId}' targeting ${shape.objectTypeIds.join(" | ")}`);
1803
+ }
1804
+ return { objectTypeIds: uniqueStrings(sourceTypeIds) };
1805
+ }
1806
+ function validateExpansionLimit(limit, path, ctx) {
1807
+ if (limit === undefined)
1808
+ return;
1809
+ if (!Number.isInteger(limit) || limit < 0) {
1810
+ addIssue(ctx, `${path}.limit`, "invalid_expand_limit", "expand.limit must be a non-negative integer");
1811
+ }
1812
+ }
1813
+ function validateSet(inputs, op, path, ctx) {
1814
+ if (inputs.length === 0) {
1815
+ addIssue(ctx, path, "empty_set", `Set operation '${op}' must include at least one input`);
1816
+ return {
1817
+ result: { objectTypeIds: [] },
1818
+ query: { kind: "set", op, inputs },
1819
+ admissionState: ctx.admission.empty()
1820
+ };
1821
+ }
1822
+ const results = inputs.map((input, index) => validateQueryNode(input, `${path}.inputs[${index}]`, ctx));
1823
+ const first = results[0]?.result ?? { objectTypeIds: [] };
1824
+ const expected = keyForTypeIds(first.objectTypeIds);
1825
+ results.forEach((result, index) => {
1826
+ if (keyForTypeIds(result.result.objectTypeIds) !== expected) {
1827
+ addIssue(ctx, `${path}.inputs[${index}]`, "incompatible_set_input", `Set operation '${op}' inputs must produce the same object type set`);
1828
+ }
1829
+ });
1830
+ return {
1831
+ result: first,
1832
+ query: { kind: "set", op, inputs: results.map((result) => result.query) },
1833
+ admissionState: ctx.admission.set({
1834
+ op,
1835
+ states: results.map((result) => result.admissionState),
1836
+ path
1837
+ })
1838
+ };
1839
+ }
1840
+ function validateSortFields(fields, shape, admissionState, use, path, ctx) {
1841
+ if (fields.length === 0) {
1842
+ addIssue(ctx, path, "empty_sort", "Sort must include at least one field");
1843
+ return [];
1844
+ }
1845
+ const seen = new Set;
1846
+ return fields.map((field, index) => {
1847
+ if (field.direction && field.direction !== "asc" && field.direction !== "desc") {
1848
+ addIssue(ctx, `${path}.fields[${index}]`, "invalid_sort_direction", "Sort direction must be asc or desc");
1849
+ }
1850
+ const key = field.kind === "property" ? `property:${field.propertyId}` : "relevance";
1851
+ if (seen.has(key)) {
1852
+ addIssue(ctx, `${path}.fields[${index}]`, "duplicate_sort_field", `Duplicate sort field '${key}'`);
1853
+ }
1854
+ seen.add(key);
1855
+ if (field.kind === "relevance")
1856
+ return field;
1857
+ admitProperty(ctx, {
1858
+ state: admissionState,
1859
+ propertyId: field.propertyId,
1860
+ use,
1861
+ path: `${path}.fields[${index}]`
1862
+ });
1863
+ const { scalarKind: _authoredScalarKind, ...authoredField } = field;
1864
+ const schemas = [];
1865
+ for (const { objectType, property } of getPropertiesForResult(field.propertyId, shape, `${path}.fields[${index}]`, ctx)) {
1866
+ if (property.query?.searchable !== true || property.query.sortable !== true) {
1867
+ addIssue(ctx, `${path}.fields[${index}]`, "property_not_sortable", `Property '${property.id}' on '${objectType.id}' must set query.searchable: true and query.sortable: true before it can be sorted`);
1868
+ continue;
1869
+ }
1870
+ const schema = resolveSchemaForProperty(property, objectType.id, ctx, `${path}.fields[${index}]`);
1871
+ if (schema)
1872
+ schemas.push(schema);
1873
+ if (schema && !isSortableSchema(schema)) {
1874
+ addIssue(ctx, `${path}.fields[${index}]`, "sort_field_not_orderable", `Sort field '${property.id}' on '${objectType.id}' is not orderable`);
1875
+ }
1876
+ }
1877
+ const scalarKind = resolveCommonQueryScalarKind(schemas, field.propertyId, `${path}.fields[${index}]`, ctx);
1878
+ return { ...authoredField, ...scalarKind ? { scalarKind } : {} };
1879
+ });
1880
+ }
1881
+ function validateLimit(limit, path, ctx) {
1882
+ if (!Number.isInteger(limit) || limit < 0) {
1883
+ addIssue(ctx, path, "invalid_limit", "limit must be a non-negative integer");
1884
+ } else if (limit > ctx.maxLimit) {
1885
+ addIssue(ctx, path, "limit_too_large", `limit must be <= ${ctx.maxLimit}`);
1886
+ }
1887
+ }
1888
+ function validatePage(pageSize, pageToken, path, ctx) {
1889
+ if (!Number.isInteger(pageSize) || pageSize <= 0) {
1890
+ addIssue(ctx, path, "invalid_page_size", "pageSize must be a positive integer");
1891
+ } else if (pageSize > ctx.maxPageSize) {
1892
+ addIssue(ctx, path, "page_size_too_large", `pageSize must be <= ${ctx.maxPageSize}`);
1893
+ }
1894
+ if (pageToken !== undefined && pageToken.length === 0) {
1895
+ addIssue(ctx, path, "empty_page_token", "pageToken must not be empty when provided");
1896
+ }
1897
+ }
1898
+ function validateProjection(properties, shape, admissionState, path, ctx) {
1899
+ if (!properties)
1900
+ return;
1901
+ if (properties.length === 0) {
1902
+ addIssue(ctx, path, "empty_projection", "project.properties must not be empty when provided");
1903
+ }
1904
+ const seen = new Set;
1905
+ properties.forEach((propertyId, index) => {
1906
+ admitProperty(ctx, {
1907
+ state: admissionState,
1908
+ propertyId,
1909
+ use: "project",
1910
+ path: `${path}.properties[${index}]`
1911
+ });
1912
+ if (seen.has(propertyId)) {
1913
+ addIssue(ctx, `${path}.properties[${index}]`, "duplicate_projection_property", `Duplicate projected property '${propertyId}'`);
1914
+ }
1915
+ seen.add(propertyId);
1916
+ getPropertiesForResult(propertyId, shape, `${path}.properties[${index}]`, ctx);
1917
+ });
1918
+ }
1919
+ function getObjectTypesForResult(shape, ctx) {
1920
+ const objectTypes = [];
1921
+ for (const objectTypeId of shape.objectTypeIds) {
1922
+ const objectType = ctx.ontology.getObjectTypeById(objectTypeId);
1923
+ if (objectType)
1924
+ objectTypes.push(objectType);
1925
+ }
1926
+ return objectTypes;
1927
+ }
1928
+ function getPropertiesForResult(propertyId, shape, path, ctx, options = {}) {
1929
+ const results = [];
1930
+ for (const objectType of getObjectTypesForResult(shape, ctx)) {
1931
+ const property = getProperty(objectType, propertyId);
1932
+ if (!property) {
1933
+ if (options.reportMissing === false) {
1934
+ continue;
1935
+ }
1936
+ addIssue(ctx, path, "unknown_property", `Property '${propertyId}' does not exist on object type '${objectType.id}'`);
1937
+ continue;
1938
+ }
1939
+ results.push({ objectType, property });
1940
+ }
1941
+ return results;
1942
+ }
1943
+ function getProperty(objectType, propertyId) {
1944
+ return objectType.properties.find((property) => property.id === propertyId);
1945
+ }
1946
+ function assertStaticSearchProperty(objectTypeId, property, context, path, ctx) {
1947
+ if (property.mode === "telemetry") {
1948
+ addIssue(ctx, path, "telemetry_search_property", `${context} references telemetry property '${property.id}' on '${objectTypeId}'. Search can only reference static properties because telemetry latest values are not object-query indexed.`);
1949
+ }
1950
+ }
1951
+ function assertQueryFlag(objectTypeId, property, flag, context, path, ctx) {
1952
+ if (property.query?.searchable === true && property.query[flag] === true)
1953
+ return;
1954
+ addIssue(ctx, path, "query_field_not_enabled", `${context} field '${property.id}' on '${objectTypeId}' must set query.searchable: true and query.${flag}: true`);
1955
+ }
1956
+ function resolveSchemaForProperty(property, objectTypeId, ctx, path) {
1957
+ try {
1958
+ return resolveSchema(property.schema, ctx.valueTypesById);
1959
+ } catch (error) {
1960
+ addIssue(ctx, path, "unresolved_property_schema", error instanceof Error ? error.message : `Could not resolve schema for '${objectTypeId}.${property.id}'`);
1961
+ return null;
1962
+ }
1963
+ }
1964
+ function resolveSchema(schema, valueTypesById, seenValueTypeIds = new Set) {
1965
+ if (typeof schema === "string")
1966
+ return schema;
1967
+ if (schema.type !== "valueTypeRef")
1968
+ return schema;
1969
+ if (seenValueTypeIds.has(schema.valueTypeId)) {
1970
+ throw new Error(`Circular valueTypeRef '${schema.valueTypeId}'`);
1971
+ }
1972
+ const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema;
1973
+ if (!resolved) {
1974
+ throw new Error(`Unknown valueTypeRef '${schema.valueTypeId}'`);
1975
+ }
1976
+ seenValueTypeIds.add(schema.valueTypeId);
1977
+ return resolveSchema(resolved, valueTypesById, seenValueTypeIds);
1978
+ }
1979
+ function isPrimaryExactPredicate(property, op) {
1980
+ return property.primary === true && (op === "eq" || op === "in");
1981
+ }
1982
+ function keyForTypeIds(typeIds) {
1983
+ return uniqueStrings(typeIds).sort().join("\x00");
1984
+ }
1985
+ function uniqueStrings(values) {
1986
+ return [...new Set(values)];
1987
+ }
1988
+ function withSubtypes(objectTypeIds, ctx) {
1989
+ return uniqueStrings(objectTypeIds.flatMap((id) => [id, ...ctx.ontology.listSubTypes(id)]));
1990
+ }
1991
+ function admitTransition(ctx, transition) {
1992
+ if (transition.denial)
1993
+ recordAdmissionDenial(ctx, transition.denial);
1994
+ return transition.state;
1995
+ }
1996
+ function admitProperty(ctx, input) {
1997
+ const denial = ctx.admission.property(input);
1998
+ if (denial)
1999
+ recordAdmissionDenial(ctx, denial);
2000
+ }
2001
+ function recordAdmissionDenial(ctx, denial) {
2002
+ if (ctx.admissionDenials.length === 0)
2003
+ ctx.admissionDenials.push(denial);
2004
+ }
2005
+ function addIssue(ctx, path, code, message) {
2006
+ ctx.issues.push({ path, code, message });
2007
+ }
2008
+
2009
+ // src/security/view-conditions.ts
2010
+ function resolveViewCondition(roleId, grant, ontology) {
2011
+ if (!("condition" in grant) || grant.condition === undefined)
2012
+ return;
2013
+ const objectTypeId = grant.capability === "view" && grant.target === "object" ? onlyId(grant.selection) : undefined;
2014
+ if (objectTypeId === undefined) {
2015
+ throw new SecurityValidationError2(`[Sixb] Role '${roleId}' declares a condition on a grant that is not a view grant on one object type. Write can.view(Type).where(...).`);
2016
+ }
2017
+ const subject = viewConditionSubject({ roleId, objectTypeId });
2018
+ if (!ontology) {
2019
+ throw new SecurityValidationError2(`[Sixb] ${subject} needs the ontology to be validated.`);
2020
+ }
2021
+ const objectTypeIds = [objectTypeId, ...ontology.listSubTypes(objectTypeId)];
2022
+ try {
2023
+ const validated = validateObjectQueryWithAdmission({
2024
+ kind: "filter",
2025
+ input: { kind: "start", objectTypeId, includeSubtypes: true },
2026
+ predicate: grant.condition
2027
+ }, { ontology }, unmarkedPropertiesOnly(subject, objectTypeIds, ontology));
2028
+ if (validated.query.kind !== "filter") {
2029
+ throw new Error(`[Sixb] ${subject} did not validate as a filter.`);
2030
+ }
2031
+ const ordered = orderedTextComparison(validated.query.predicate);
2032
+ if (ordered) {
2033
+ throw new SecurityValidationError2(`[Sixb] ${subject} compares '${objectTypeId}.${ordered.propertyId}' with ${ordered.op}(). Storage providers order text differently, so a condition cannot order text: compare with eq, neq, in or contains instead.`);
2034
+ }
2035
+ return {
2036
+ roleId,
2037
+ objectTypeId,
2038
+ predicate: deepFreeze2(structuredClone(validated.query.predicate))
2039
+ };
2040
+ } catch (error) {
2041
+ if (!(error instanceof ObjectQueryValidationError2))
2042
+ throw error;
2043
+ const reasons = error.issues.map((issue) => issue.message).join("; ");
2044
+ throw new SecurityValidationError2(`[Sixb] ${subject}: ${reasons}`);
2045
+ }
2046
+ }
2047
+ function assertViewConditionsReadable(input) {
2048
+ for (const condition of input.conditions) {
2049
+ const predicate = bindCurrentUserPredicate(condition.predicate, STARTUP_CHECK_USER);
2050
+ const objectTypeIds = [condition.objectTypeId, ...input.getSubTypes(condition.objectTypeId)];
2051
+ try {
2052
+ input.objectStorage.createConditionalReadScope({
2053
+ projectId: input.projectId,
2054
+ scope: compileConditionalObjectReadScope2({
2055
+ kind: "conditional",
2056
+ conditions: objectTypeIds.map((objectTypeId) => ({ objectTypeId, predicate }))
2057
+ })
2058
+ });
2059
+ } catch (error) {
2060
+ const reason = error instanceof Error ? error.message : String(error);
2061
+ throw new SecurityValidationError2(`[Sixb] ${viewConditionSubject(condition)} cannot be read by the configured object storage: ${reason}`, { cause: error });
2062
+ }
2063
+ }
2064
+ }
2065
+ var STARTUP_CHECK_USER = Object.freeze({ type: "user", id: "usr_sixb_startup_check" });
2066
+ function viewConditionSubject(condition) {
2067
+ return `Role '${condition.roleId}': can.view(${condition.objectTypeId}).where(...)`;
2068
+ }
2069
+ function orderedTextComparison(predicate) {
2070
+ switch (predicate.op) {
2071
+ case "and":
2072
+ case "or":
2073
+ for (const item of predicate.items) {
2074
+ const ordered = orderedTextComparison(item);
2075
+ if (ordered)
2076
+ return ordered;
2077
+ }
2078
+ return null;
2079
+ case "not":
2080
+ return orderedTextComparison(predicate.item);
2081
+ case "lt":
2082
+ case "lte":
2083
+ case "gt":
2084
+ case "gte":
2085
+ return predicate.scalarKind === "string" || predicate.scalarKind === "uuid" ? { propertyId: predicate.propertyId, op: predicate.op } : null;
2086
+ default:
2087
+ return null;
2088
+ }
2089
+ }
2090
+ function onlyId(selection) {
2091
+ if (selection.all || selection.ids.length !== 1)
2092
+ return;
2093
+ return selection.ids[0];
2094
+ }
2095
+ function unmarkedPropertiesOnly(subject, objectTypeIds, ontology) {
2096
+ const state = Object.freeze({});
2097
+ const admission = {
2098
+ empty: () => state,
2099
+ source: () => ({ state }),
2100
+ edge: () => ({ state }),
2101
+ set: () => state,
2102
+ property: ({ propertyId }) => {
2103
+ for (const objectTypeId of objectTypeIds) {
2104
+ const property = ontology.getObjectTypeById(objectTypeId)?.properties.find((candidate) => candidate.id === propertyId);
2105
+ const markings = property?.markings ?? [];
2106
+ if (markings.length === 0)
2107
+ continue;
2108
+ return new SecurityValidationError2(`[Sixb] ${subject} reads '${objectTypeId}.${propertyId}', which carries [${markings.join(", ")}]. A condition can only read unmarked properties.`);
2109
+ }
2110
+ return;
2111
+ }
2112
+ };
2113
+ return Object.freeze(admission);
2114
+ }
2115
+ function deepFreeze2(value) {
2116
+ if (typeof value !== "object" || value === null)
2117
+ return value;
2118
+ for (const child of Object.values(value))
2119
+ deepFreeze2(child);
2120
+ return Object.freeze(value);
2121
+ }
2122
+
695
2123
  // src/security/registry.ts
696
2124
  class SecurityRegistry {
697
2125
  markingsById;
@@ -699,6 +2127,7 @@ class SecurityRegistry {
699
2127
  rolesById;
700
2128
  membershipPoliciesById;
701
2129
  resolvedRoles;
2130
+ viewConditions;
702
2131
  constructor(input) {
703
2132
  const definitions = validateSecurityDefinitionsAtStartup({
704
2133
  markings: input.markings ?? [],
@@ -715,6 +2144,7 @@ class SecurityRegistry {
715
2144
  connectorIds: input.connectorIds,
716
2145
  shareIds: input.shareIds
717
2146
  });
2147
+ this.viewConditions = definitions.roles.flatMap((role) => role.grants.flatMap((grant) => resolveViewCondition(role.id, grant, input.ontology) ?? []));
718
2148
  const universe = {
719
2149
  objectTypeIds: input.objectTypeIds ?? new Set,
720
2150
  datasetIds: input.datasetIds ?? new Set,
@@ -730,12 +2160,17 @@ class SecurityRegistry {
730
2160
  this.groupsById = definitions.groupsById;
731
2161
  this.rolesById = definitions.rolesById;
732
2162
  this.membershipPoliciesById = definitions.membershipPoliciesById;
733
- this.resolvedRoles = definitions.roles.map((role) => ({
734
- id: role.id,
735
- grantedToGroupIds: role.grantedToGroupIds,
736
- grants: resolveRoleGrants2(role, universe),
737
- clearances: new Set(role.clearances ?? [])
738
- }));
2163
+ this.resolvedRoles = definitions.roles.map((role) => {
2164
+ const grants = resolveRoleGrants2(role, universe);
2165
+ const viewConditions = resolveRoleViewConditions2(this.viewConditions.filter((condition) => condition.roleId === role.id), grants, universe);
2166
+ return {
2167
+ id: role.id,
2168
+ grantedToGroupIds: role.grantedToGroupIds,
2169
+ grants,
2170
+ ...viewConditions.size > 0 ? { viewConditions } : {},
2171
+ clearances: new Set(role.clearances ?? [])
2172
+ };
2173
+ });
739
2174
  }
740
2175
  listMarkings() {
741
2176
  return [...this.markingsById.values()];
@@ -758,6 +2193,9 @@ class SecurityRegistry {
758
2193
  listResolvedRoles() {
759
2194
  return this.resolvedRoles;
760
2195
  }
2196
+ listViewConditions() {
2197
+ return this.viewConditions;
2198
+ }
761
2199
  listMembershipPolicies() {
762
2200
  return [...this.membershipPoliciesById.values()];
763
2201
  }
@@ -1660,6 +3098,20 @@ class InMemoryAuthSessionStore {
1660
3098
  return created !== 0 ? created : b.id.localeCompare(a.id);
1661
3099
  }).map(cloneRecord);
1662
3100
  }
3101
+ async listByUserId(params) {
3102
+ const before = params.before;
3103
+ const offset = before?.skip ?? 0;
3104
+ const sessions = [...this.state.sessions.values()].filter((session) => session.projectId === params.projectId).filter((session) => session.userId === params.userId).filter((session) => !before || session.createdAt <= before.createdAt).sort((a, b) => {
3105
+ const created = b.createdAt.getTime() - a.createdAt.getTime();
3106
+ if (created !== 0)
3107
+ return created;
3108
+ return a.id < b.id ? 1 : a.id > b.id ? -1 : 0;
3109
+ });
3110
+ return {
3111
+ sessions: sessions.slice(offset, offset + params.limit).map(cloneRecord),
3112
+ hasMore: sessions.length > offset + params.limit
3113
+ };
3114
+ }
1663
3115
  async findValidByTokenHash(params) {
1664
3116
  const session = this.state.sessions.get(sessionKey(params.projectId, params.id));
1665
3117
  if (!session || session.bearer || session.tokenHash !== params.tokenHash || !isActiveSession(session, params.now)) {
@@ -1787,6 +3239,12 @@ class InMemoryAuthUserStore {
1787
3239
  const record = this.state.users.get(userKey(params.projectId, params.id)) ?? null;
1788
3240
  return cloneOptionalRecord(record);
1789
3241
  }
3242
+ async getByIds(params) {
3243
+ return [...new Set(params.ids)].flatMap((id) => {
3244
+ const record = this.state.users.get(userKey(params.projectId, id));
3245
+ return record ? [cloneRecord(record)] : [];
3246
+ });
3247
+ }
1790
3248
  async getByEmail(params) {
1791
3249
  return cloneOptionalRecord(getUserByEmail(this.state, params.projectId, params.email));
1792
3250
  }
@@ -1796,14 +3254,19 @@ class InMemoryAuthUserStore {
1796
3254
  if (!existing) {
1797
3255
  throw new AuthStorageError2("missing_user", `[Sixb] User '${input.id}' not found for project '${input.projectId}'.`);
1798
3256
  }
3257
+ const displayName = profileValue(input.displayName, existing.displayName);
3258
+ const avatarUrl = profileValue(input.avatarUrl, existing.avatarUrl);
3259
+ if (displayName === existing.displayName && avatarUrl === existing.avatarUrl) {
3260
+ return { user: cloneRecord(existing), previousUser: cloneRecord(existing) };
3261
+ }
1799
3262
  const next = {
1800
3263
  ...existing,
1801
- displayName: input.displayName,
1802
- avatarUrl: input.avatarUrl,
3264
+ displayName,
3265
+ avatarUrl,
1803
3266
  updatedAt: dateOrNow(input.updatedAt)
1804
3267
  };
1805
3268
  this.state.users.set(key, cloneRecord(next));
1806
- return cloneRecord(next);
3269
+ return { user: cloneRecord(next), previousUser: cloneRecord(existing) };
1807
3270
  }
1808
3271
  async updateStatus(input) {
1809
3272
  const key = userKey(input.projectId, input.id);
@@ -1817,15 +3280,16 @@ class InMemoryAuthUserStore {
1817
3280
  updatedAt: dateOrNow(input.updatedAt)
1818
3281
  };
1819
3282
  this.state.users.set(key, cloneRecord(next));
1820
- return cloneRecord(next);
3283
+ return { user: cloneRecord(next), previousUser: cloneRecord(existing) };
1821
3284
  }
1822
3285
  async list(input) {
1823
3286
  if (input.statuses?.length === 0) {
1824
3287
  return { users: [], hasMore: false, total: 0 };
1825
3288
  }
1826
3289
  const statuses = input.statuses ? new Set(input.statuses) : null;
3290
+ const search = input.search?.toLowerCase();
1827
3291
  const order = input.order ?? "desc";
1828
- const rows = [...this.state.users.values()].filter((user) => user.projectId === input.projectId).filter((user) => statuses ? statuses.has(user.status) : true).sort((a, b) => compareByCreatedAt(a, b, order));
3292
+ const rows = [...this.state.users.values()].filter((user) => user.projectId === input.projectId).filter((user) => statuses ? statuses.has(user.status) : true).filter((user) => search === undefined ? true : userMatches(user, search)).sort((a, b) => compareByCreatedAt(a, b, order));
1829
3293
  const page = paginate(rows, input);
1830
3294
  return {
1831
3295
  users: page.page.map(cloneRecord),
@@ -1834,6 +3298,12 @@ class InMemoryAuthUserStore {
1834
3298
  };
1835
3299
  }
1836
3300
  }
3301
+ function profileValue(value, current) {
3302
+ return value === undefined ? current : value ?? undefined;
3303
+ }
3304
+ function userMatches(user, search) {
3305
+ return (user.displayName?.toLowerCase().includes(search) ?? false) || user.email.toLowerCase().includes(search);
3306
+ }
1837
3307
 
1838
3308
  // src/storage/auth/in-memory/auth-storage.ts
1839
3309
  class InMemoryAuthStorage2 {
@@ -1956,6 +3426,7 @@ class InMemoryAuthStorage2 {
1956
3426
  tokenHash: input.tokenHash,
1957
3427
  consumedAt: completedAt
1958
3428
  });
3429
+ const previousUser = existingUser ? cloneRecord(existingUser) : null;
1959
3430
  let user = existingUser;
1960
3431
  if (!user) {
1961
3432
  user = {
@@ -1994,7 +3465,8 @@ class InMemoryAuthStorage2 {
1994
3465
  user: cloneRecord(user),
1995
3466
  session: cloneRecord(session),
1996
3467
  invitation: invitation.invitation ? cloneRecord(invitation.invitation) : undefined,
1997
- groupMemberships: memberships.map(cloneRecord)
3468
+ groupMemberships: memberships.map(cloneRecord),
3469
+ previousUser
1998
3470
  };
1999
3471
  }
2000
3472
  async completeOidcSignIn(input) {
@@ -2039,6 +3511,7 @@ class InMemoryAuthStorage2 {
2039
3511
  }
2040
3512
  }
2041
3513
  this.consumeOidcAttempt(input, completedAt, projectId);
3514
+ const previousUser = user ? cloneRecord(user) : null;
2042
3515
  if (!user) {
2043
3516
  user = {
2044
3517
  id: newUserId ?? assertNonEmpty4(input.newUserId, "User id"),
@@ -2051,6 +3524,8 @@ class InMemoryAuthStorage2 {
2051
3524
  updatedAt: completedAt
2052
3525
  };
2053
3526
  this.state.users.set(userKey(projectId, user.id), cloneRecord(user));
3527
+ } else {
3528
+ user = this.refreshProviderProfile(user, input, completedAt);
2054
3529
  }
2055
3530
  const invitation = this.acceptInvitationAndApplyGroups({
2056
3531
  activeInvitation,
@@ -2093,7 +3568,8 @@ class InMemoryAuthStorage2 {
2093
3568
  session: cloneRecord(session),
2094
3569
  identity: cloneRecord(nextIdentity),
2095
3570
  invitation: invitation.invitation ? cloneRecord(invitation.invitation) : undefined,
2096
- groupMemberships: memberships.map(cloneRecord)
3571
+ groupMemberships: memberships.map(cloneRecord),
3572
+ previousUser
2097
3573
  };
2098
3574
  }
2099
3575
  async suspendUserAndRevokeSessions(input) {
@@ -2109,7 +3585,17 @@ class InMemoryAuthStorage2 {
2109
3585
  };
2110
3586
  this.state.users.set(key, cloneRecord(next));
2111
3587
  revokeActiveSessionsForUser(this.state, input.projectId, input.userId, input.suspendedAt);
2112
- return cloneRecord(next);
3588
+ return { user: cloneRecord(next), previousUser: cloneRecord(existing) };
3589
+ }
3590
+ refreshProviderProfile(user, input, updatedAt) {
3591
+ const displayName = input.displayName ?? user.displayName;
3592
+ const avatarUrl = input.avatarUrl ?? user.avatarUrl;
3593
+ if (displayName === user.displayName && avatarUrl === user.avatarUrl) {
3594
+ return user;
3595
+ }
3596
+ const next = { ...user, displayName, avatarUrl, updatedAt: cloneDate(updatedAt) };
3597
+ this.state.users.set(userKey(user.projectId, user.id), cloneRecord(next));
3598
+ return next;
2113
3599
  }
2114
3600
  acceptInvitationAndApplyGroups(input) {
2115
3601
  if (!input.activeInvitation) {
@@ -2184,6 +3670,166 @@ function restoreMap(target, snapshot) {
2184
3670
  target.set(key, value);
2185
3671
  }
2186
3672
  }
3673
+ // src/users/execution.ts
3674
+ var DEFAULT_LIMIT = 50;
3675
+ var MAX_LIMIT = 200;
3676
+ var MAX_SEARCH_LENGTH = 200;
3677
+ function createUsersRuntime(runtime) {
3678
+ const assertReadable = () => assertAuthorized2(runtime, { kind: "users.view" });
3679
+ return {
3680
+ get: async (user) => {
3681
+ assertReadable();
3682
+ if (!isUserRef(user)) {
3683
+ throw new Error("[Sixb] users.get expects a user reference, such as userRef(id).");
3684
+ }
3685
+ const users = runtime.storage.auth?.users;
3686
+ if (!users)
3687
+ return null;
3688
+ const record = await users.getById({ projectId: runtime.projectId, id: user.id });
3689
+ return record ? toUserProfile(record) : null;
3690
+ },
3691
+ list: async (input = {}) => {
3692
+ assertReadable();
3693
+ const limit = listLimit(input.limit);
3694
+ const offset = listOffset(input.offset);
3695
+ const search = listSearch(input.search);
3696
+ const users = runtime.storage.auth?.users;
3697
+ if (!users)
3698
+ return { users: [], hasMore: false, total: 0 };
3699
+ const page = await users.list({
3700
+ projectId: runtime.projectId,
3701
+ ...statusFilter(input.status),
3702
+ ...search === undefined ? {} : { search },
3703
+ limit,
3704
+ offset,
3705
+ order: "asc"
3706
+ });
3707
+ return {
3708
+ users: page.users.map(toUserProfile),
3709
+ hasMore: page.hasMore,
3710
+ total: page.total
3711
+ };
3712
+ }
3713
+ };
3714
+ }
3715
+ function toUserProfile(record) {
3716
+ return {
3717
+ id: record.id,
3718
+ email: record.email,
3719
+ ...record.displayName === undefined ? {} : { displayName: record.displayName },
3720
+ ...record.avatarUrl === undefined ? {} : { avatarUrl: record.avatarUrl },
3721
+ status: record.status
3722
+ };
3723
+ }
3724
+ function statusFilter(status = "active") {
3725
+ if (status === "all")
3726
+ return {};
3727
+ if (status === "active" || status === "suspended")
3728
+ return { statuses: [status] };
3729
+ throw new Error(`[Sixb] users.list status must be "active", "suspended", or "all".`);
3730
+ }
3731
+ function listSearch(search) {
3732
+ const trimmed = search?.trim();
3733
+ if (!trimmed)
3734
+ return;
3735
+ if (trimmed.length <= MAX_SEARCH_LENGTH)
3736
+ return trimmed;
3737
+ throw new Error(`[Sixb] users.list search must be at most ${MAX_SEARCH_LENGTH} characters.`);
3738
+ }
3739
+ function listLimit(limit) {
3740
+ if (limit === undefined)
3741
+ return DEFAULT_LIMIT;
3742
+ if (Number.isInteger(limit) && limit >= 1 && limit <= MAX_LIMIT)
3743
+ return limit;
3744
+ throw new Error(`[Sixb] users.list limit must be an integer from 1 to ${MAX_LIMIT}.`);
3745
+ }
3746
+ function listOffset(offset) {
3747
+ if (offset === undefined)
3748
+ return 0;
3749
+ if (Number.isInteger(offset) && offset >= 0)
3750
+ return offset;
3751
+ throw new Error("[Sixb] users.list offset must be a non-negative integer.");
3752
+ }
3753
+
3754
+ // src/auth/member-events.ts
3755
+ function signInEvents(result) {
3756
+ const user = toUserProfile(result.user);
3757
+ if (result.previousUser === null) {
3758
+ return [
3759
+ {
3760
+ type: "user.joined",
3761
+ payload: {
3762
+ user,
3763
+ ...result.invitation ? { invitationId: result.invitation.id } : {}
3764
+ },
3765
+ idempotencyKey: `user.joined:${user.id}`
3766
+ }
3767
+ ];
3768
+ }
3769
+ const changes = profileChanges(result.previousUser, result.user);
3770
+ if (!hasChanges(changes))
3771
+ return [];
3772
+ return [{ type: "user.profile.updated", payload: { user, changes } }];
3773
+ }
3774
+ function profileUpdatedEvents(caller, previousUser, user) {
3775
+ const changes = profileChanges(previousUser, user);
3776
+ if (!hasChanges(changes))
3777
+ return [];
3778
+ return [
3779
+ {
3780
+ type: "user.profile.updated",
3781
+ payload: { user: toUserProfile(user), changes, requestedBy: requester(caller) }
3782
+ }
3783
+ ];
3784
+ }
3785
+ function statusChangedEvents(caller, previousUser, user) {
3786
+ if (previousUser.status === user.status)
3787
+ return [];
3788
+ return [
3789
+ {
3790
+ type: user.status === "suspended" ? "user.suspended" : "user.reactivated",
3791
+ payload: { user: toUserProfile(user), requestedBy: requester(caller) }
3792
+ }
3793
+ ];
3794
+ }
3795
+ function invitedEvents(caller, invitation) {
3796
+ return [
3797
+ {
3798
+ type: "user.invited",
3799
+ payload: {
3800
+ invitationId: invitation.id,
3801
+ email: invitation.email,
3802
+ expiresAt: invitation.expiresAt.toISOString(),
3803
+ requestedBy: requester(caller)
3804
+ }
3805
+ }
3806
+ ];
3807
+ }
3808
+ function profileChanges(before, after) {
3809
+ const displayName = fieldChange(before.displayName, after.displayName);
3810
+ const avatarUrl = fieldChange(before.avatarUrl, after.avatarUrl);
3811
+ return {
3812
+ ...displayName ? { displayName } : {},
3813
+ ...avatarUrl ? { avatarUrl } : {}
3814
+ };
3815
+ }
3816
+ function fieldChange(before, after) {
3817
+ if (after === undefined) {
3818
+ return before === undefined ? undefined : { operation: "cleared", before, after: null };
3819
+ }
3820
+ if (before === undefined)
3821
+ return { operation: "created", after };
3822
+ if (before === after)
3823
+ return;
3824
+ return { operation: "updated", before, after };
3825
+ }
3826
+ function hasChanges(changes) {
3827
+ return changes.displayName !== undefined || changes.avatarUrl !== undefined;
3828
+ }
3829
+ function requester(caller) {
3830
+ return { type: caller.principal.type, id: caller.principal.id };
3831
+ }
3832
+
2187
3833
  // src/auth/session-cache.ts
2188
3834
  class SessionCache {
2189
3835
  ttlMs;
@@ -2296,6 +3942,7 @@ var SESSION_TOUCH_INTERVAL_MS = 60000;
2296
3942
  var ACCESS_TOKEN_TOUCH_INTERVAL_MS = 60000;
2297
3943
  var BEARER_ACCESS_TOKEN_TTL_MS = 15 * 60000;
2298
3944
  var REFRESH_REUSE_GRACE_MS = 60000;
3945
+ var PROFILE_FIELDS = ["displayName", "avatarUrl"];
2299
3946
 
2300
3947
  class AuthRuntime2 {
2301
3948
  projectId;
@@ -2303,10 +3950,12 @@ class AuthRuntime2 {
2303
3950
  security;
2304
3951
  config;
2305
3952
  sessionCache;
3953
+ events;
2306
3954
  constructor(options) {
2307
3955
  this.projectId = options.projectId;
2308
3956
  this.storage = options.storage;
2309
3957
  this.security = options.security;
3958
+ this.events = options.events;
2310
3959
  this.config = resolveAuthConfig2(options.config);
2311
3960
  this.sessionCache = this.config.session.cacheTtlMs > 0 ? new SessionCache(this.config.session.cacheTtlMs) : null;
2312
3961
  if (this.isEnabled() && !this.storage.auth) {
@@ -2623,6 +4272,38 @@ class AuthRuntime2 {
2623
4272
  });
2624
4273
  } catch {}
2625
4274
  }
4275
+ async completeMagicLinkSignIn(input) {
4276
+ const strategy = this.getStrategy();
4277
+ if (!isMagicLinkAuthStrategy2(strategy)) {
4278
+ throw new AuthRuntimeError2("invalid_auth_config", "[Sixb] The active auth strategy does not support magic-link sign-in.");
4279
+ }
4280
+ const result = await strategy.completeMagicLinkSignIn({
4281
+ projectId: this.projectId,
4282
+ authStorage: this.requireAuthStorage(),
4283
+ magicLinkId: input.magicLinkId,
4284
+ token: input.token,
4285
+ session: input.session,
4286
+ displayName: signInDisplayName2(input.displayName)
4287
+ });
4288
+ await this.emitMemberEvents(signInEvents(result));
4289
+ return result;
4290
+ }
4291
+ async completeOidcSignIn(input) {
4292
+ const strategy = this.getStrategy();
4293
+ if (!isOidcAuthStrategy2(strategy)) {
4294
+ throw new AuthRuntimeError2("invalid_auth_config", "[Sixb] The active auth strategy does not support OIDC sign-in.");
4295
+ }
4296
+ const result = await strategy.completeOidcSignIn({
4297
+ projectId: this.projectId,
4298
+ authStorage: this.requireAuthStorage(),
4299
+ requestUrl: input.requestUrl,
4300
+ requestOrigin: input.requestOrigin,
4301
+ session: input.session
4302
+ });
4303
+ this.sessionCache?.invalidateUser(result.user.id);
4304
+ await this.emitMemberEvents(signInEvents(result));
4305
+ return result;
4306
+ }
2626
4307
  contextFromSession(session) {
2627
4308
  return resolveAuthorizationContext2({
2628
4309
  principal: session.principal,
@@ -2924,12 +4605,13 @@ class AuthRuntime2 {
2924
4605
  if (user.id === caller.user.id) {
2925
4606
  throw new AuthRuntimeError2("authorization_denied", "[Sixb] The current user cannot suspend themselves.");
2926
4607
  }
2927
- const suspended = await storage.suspendUserAndRevokeSessions({
4608
+ const { user: suspended, previousUser } = await storage.suspendUserAndRevokeSessions({
2928
4609
  projectId: this.projectId,
2929
4610
  userId: user.id,
2930
4611
  suspendedAt: new Date
2931
4612
  });
2932
4613
  this.sessionCache?.invalidateUser(user.id);
4614
+ await this.emitMemberEvents(statusChangedEvents(caller, previousUser, suspended));
2933
4615
  return { user: suspended, groupIds, managedGroupIds };
2934
4616
  }
2935
4617
  async reactivateMember(caller, input) {
@@ -2937,14 +4619,64 @@ class AuthRuntime2 {
2937
4619
  const scope = this.resolveMembershipPolicyScopeForUser(caller.groupIds);
2938
4620
  const userId = assertNonEmpty3(input.userId, "User id");
2939
4621
  const { user, groupIds, managedGroupIds } = await this.requireManageableMember(storage, scope, "suspend", userId);
2940
- const reactivated = await storage.users.updateStatus({
4622
+ const { user: reactivated, previousUser } = await storage.users.updateStatus({
2941
4623
  projectId: this.projectId,
2942
4624
  id: user.id,
2943
4625
  status: "active",
2944
4626
  updatedAt: new Date
2945
4627
  });
4628
+ await this.emitMemberEvents(statusChangedEvents(caller, previousUser, reactivated));
2946
4629
  return { user: reactivated, groupIds, managedGroupIds };
2947
4630
  }
4631
+ async getProfile(caller) {
4632
+ const storage = this.requireAuthStorage();
4633
+ const user = await storage.users.getById({ projectId: this.projectId, id: caller.user.id });
4634
+ if (!user) {
4635
+ throw new AuthStorageError2("missing_user", `[Sixb] User '${caller.user.id}' not found for project '${this.projectId}'.`);
4636
+ }
4637
+ return {
4638
+ profile: toUserProfile(user),
4639
+ managedFields: await this.managedProfileFields(storage, user.id)
4640
+ };
4641
+ }
4642
+ async updateProfile(caller, input) {
4643
+ const changes = normalizeProfileChanges(input);
4644
+ const storage = this.requireAuthStorage();
4645
+ const managedFields = await this.managedProfileFields(storage, caller.user.id);
4646
+ const managedChanges = managedFields.filter((field) => changes[field] !== undefined);
4647
+ if (managedChanges.length > 0) {
4648
+ throw new AuthRuntimeError2("authorization_denied", `[Sixb] Your identity provider manages ${managedChanges.join(" and ")}. ` + `Change ${managedChanges.length > 1 ? "them" : "it"} there.`);
4649
+ }
4650
+ const { user, previousUser } = await storage.users.updateProfile({
4651
+ projectId: this.projectId,
4652
+ id: caller.user.id,
4653
+ ...changes,
4654
+ updatedAt: new Date
4655
+ });
4656
+ const changed = user.displayName !== previousUser.displayName || user.avatarUrl !== previousUser.avatarUrl;
4657
+ if (changed) {
4658
+ this.sessionCache?.invalidateUser(user.id);
4659
+ }
4660
+ await this.emitMemberEvents(profileUpdatedEvents(caller, previousUser, user));
4661
+ return { profile: toUserProfile(user), managedFields };
4662
+ }
4663
+ async managedProfileFields(storage, userId) {
4664
+ const strategy = this.getStrategy();
4665
+ if (!strategy?.providerProfileFields) {
4666
+ return [];
4667
+ }
4668
+ const identities = await storage.identities.listForUser({ projectId: this.projectId, userId });
4669
+ const managed = new Set;
4670
+ for (const identity of identities) {
4671
+ if (identity.strategyId !== strategy.id) {
4672
+ continue;
4673
+ }
4674
+ for (const field of strategy.providerProfileFields(identity)) {
4675
+ managed.add(field);
4676
+ }
4677
+ }
4678
+ return PROFILE_FIELDS.filter((field) => managed.has(field));
4679
+ }
2948
4680
  async listSessions(caller) {
2949
4681
  return this.requireAuthStorage().sessions.listActiveByUserId({
2950
4682
  projectId: this.projectId,
@@ -3041,13 +4773,11 @@ class AuthRuntime2 {
3041
4773
  status: delivery.status,
3042
4774
  ...input.revealLink && delivery.link ? { link: delivery.link } : {}
3043
4775
  };
3044
- if (delivery.status === "not_supported") {
3045
- return { invitation, delivery };
3046
- }
3047
- if (delivery.status !== "sent") {
4776
+ if (delivery.status !== "sent" && delivery.status !== "not_supported") {
3048
4777
  await this.revokeInvitationAfterDeliveryFailure(authStorage, invitation, now);
3049
4778
  throw this.createInvitationDeliveryError(delivery.status);
3050
4779
  }
4780
+ await this.emitMemberEvents(invitedEvents(caller, invitation));
3051
4781
  return { invitation, delivery };
3052
4782
  }
3053
4783
  async listInvitations(caller, input = {}) {
@@ -3090,6 +4820,11 @@ class AuthRuntime2 {
3090
4820
  })
3091
4821
  };
3092
4822
  }
4823
+ async emitMemberEvents(events) {
4824
+ if (events.length === 0)
4825
+ return;
4826
+ await this.events.emit({ events }, { source: "Sixb" });
4827
+ }
3093
4828
  requireAuthStorage() {
3094
4829
  if (!this.storage.auth) {
3095
4830
  throw new AuthRuntimeError2("auth_storage_missing", "[Sixb] Auth is enabled but storage.auth is not configured.");
@@ -3263,6 +4998,6 @@ var SYSTEM_PRINCIPAL2 = { type: "system", id: "system" };
3263
4998
  function principalsEqual2(left, right) {
3264
4999
  return left.type === right.type && left.id === right.id;
3265
5000
  }
3266
- export { ActionDefinitionError2, missingActionMutationMessage, effectsWithoutEditsMessage, assertNonEmpty2, isActionDefinition2, isGlobalActionDefinition2, isObjectActionDefinition2, normalizeActionParams, coerceActionParamsToTyped, validateActionSubject, resolveObjectActionSubject, PERSONAL_ACCESS_TOKEN_PREFIX2, SERVICE_ACCOUNT_ACCESS_TOKEN_PREFIX2, generateAccessTokenSecret2, hashAccessTokenSecret2, formatAccessTokenValue2, parseAccessTokenValue2, getBearerAccessTokenValue2, createAccessTokenCredential2, setRequestClientAddress2, getRequestClientAddress2, CSRF_HEADER_NAME2, generateCsrfToken2, isCsrfExemptMethod2, verifyDoubleSubmitCsrf2, verifyCsrfToken2, every2, ShareDefinitionError2, defineShare2, isShareDefinition, snapshotShareDefinition, can2, SecurityRegistry, AuthStorageError2, MAX_PENDING_DEVICE_AUTHORIZATIONS2, paginate, InMemoryAuthStorage2, generateSessionSecret2, hashSessionSecret2, formatSessionCookieValue2, parseSessionCookieValue2, createSessionCredential2, AuthRuntime2, SYSTEM_PRINCIPAL2, principalsEqual2 };
5001
+ export { ActionDefinitionError2, missingActionMutationMessage, effectsWithoutEditsMessage, assertNonEmpty2, isActionDefinition2, isGlobalActionDefinition2, isObjectActionDefinition2, normalizeActionParams, coerceActionParamsToTyped, validateActionSubject, resolveObjectActionSubject, PERSONAL_ACCESS_TOKEN_PREFIX2, SERVICE_ACCOUNT_ACCESS_TOKEN_PREFIX2, generateAccessTokenSecret2, hashAccessTokenSecret2, formatAccessTokenValue2, parseAccessTokenValue2, getBearerAccessTokenValue2, createAccessTokenCredential2, setRequestClientAddress2, getRequestClientAddress2, CSRF_HEADER_NAME2, generateCsrfToken2, isCsrfExemptMethod2, verifyDoubleSubmitCsrf2, verifyCsrfToken2, every2, ShareDefinitionError2, defineShare2, isShareDefinition, snapshotShareDefinition, project2, can2, bindCurrentUser, bindCurrentUserPredicate, INDEXING_EMBEDDING_TIMEOUT_MS, vectorConfiguration, vectorSources, normalizeVector2, vectorSearchCandidateLimit2, hasVectorProfile2, isVectorProfileQuery2, MAX_RERANK_INPUT_BYTES, composeObjectQueryAdmissions, validateObjectQuery2, validateObjectQueryWithAdmission, collectObjectQueryValidationIssues2, resolveObjectQueryResultShape2, assertViewConditionsReadable, SecurityRegistry, AuthStorageError2, MAX_PENDING_DEVICE_AUTHORIZATIONS2, paginate, InMemoryAuthStorage2, createUsersRuntime, toUserProfile, generateSessionSecret2, hashSessionSecret2, formatSessionCookieValue2, parseSessionCookieValue2, createSessionCredential2, AuthRuntime2, SYSTEM_PRINCIPAL2, principalsEqual2 };
3267
5002
 
3268
- //# debugId=DF55B99B002A92F564756E2164756E21
5003
+ //# debugId=86A4C82302343CA464756E2164756E21