@sixb/core 0.1.21 → 0.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1263) hide show
  1. package/dist/actions/commit-edits.d.ts +3 -1
  2. package/dist/actions/commit-edits.d.ts.map +1 -1
  3. package/dist/actions/execution.d.ts.map +1 -1
  4. package/dist/actions/index.js +63 -59
  5. package/dist/actions/index.js.map +1 -1
  6. package/dist/actions/read-facade.d.ts +9 -1
  7. package/dist/actions/read-facade.d.ts.map +1 -1
  8. package/dist/actions/request.d.ts +15 -1
  9. package/dist/actions/request.d.ts.map +1 -1
  10. package/dist/actions/run/context.d.ts +1 -0
  11. package/dist/actions/run/context.d.ts.map +1 -1
  12. package/dist/actions/run/execute.d.ts +2 -3
  13. package/dist/actions/run/execute.d.ts.map +1 -1
  14. package/dist/actions/run/executor.d.ts +3 -0
  15. package/dist/actions/run/executor.d.ts.map +1 -1
  16. package/dist/actions/run/normalize.d.ts +2 -1
  17. package/dist/actions/run/normalize.d.ts.map +1 -1
  18. package/dist/actions/run/signals.d.ts +1 -3
  19. package/dist/actions/run/signals.d.ts.map +1 -1
  20. package/dist/actions/run/types.d.ts +16 -1
  21. package/dist/actions/run/types.d.ts.map +1 -1
  22. package/dist/actions/run-authorization.d.ts +14 -0
  23. package/dist/actions/run-authorization.d.ts.map +1 -1
  24. package/dist/actions/types/context.d.ts +17 -1
  25. package/dist/actions/types/context.d.ts.map +1 -1
  26. package/dist/actions/validators.d.ts.map +1 -1
  27. package/dist/activity/timeline.d.ts +8 -1
  28. package/dist/activity/timeline.d.ts.map +1 -1
  29. package/dist/agents/accounting.d.ts +15 -0
  30. package/dist/agents/accounting.d.ts.map +1 -0
  31. package/dist/agents/adapters.d.ts.map +1 -1
  32. package/dist/agents/agent-mail.d.ts +9 -0
  33. package/dist/agents/agent-mail.d.ts.map +1 -0
  34. package/dist/agents/api-gateway.d.ts +5 -0
  35. package/dist/agents/api-gateway.d.ts.map +1 -1
  36. package/dist/agents/approval-continuation.d.ts +23 -0
  37. package/dist/agents/approval-continuation.d.ts.map +1 -0
  38. package/dist/agents/approval-executor.d.ts +56 -0
  39. package/dist/agents/approval-executor.d.ts.map +1 -0
  40. package/dist/agents/approval-outcome.d.ts +8 -0
  41. package/dist/agents/approval-outcome.d.ts.map +1 -0
  42. package/dist/agents/approvals.d.ts +210 -0
  43. package/dist/agents/approvals.d.ts.map +1 -0
  44. package/dist/agents/authority.d.ts +10 -0
  45. package/dist/agents/authority.d.ts.map +1 -1
  46. package/dist/agents/builders.d.ts.map +1 -1
  47. package/dist/agents/cancel.d.ts +23 -0
  48. package/dist/agents/cancel.d.ts.map +1 -0
  49. package/dist/agents/child-question.d.ts +18 -0
  50. package/dist/agents/child-question.d.ts.map +1 -0
  51. package/dist/agents/children.d.ts +99 -0
  52. package/dist/agents/children.d.ts.map +1 -0
  53. package/dist/agents/context/index.js +1 -1
  54. package/dist/agents/context-compaction.d.ts.map +1 -1
  55. package/dist/agents/errors.d.ts +13 -1
  56. package/dist/agents/errors.d.ts.map +1 -1
  57. package/dist/agents/execution.d.ts +180 -14
  58. package/dist/agents/execution.d.ts.map +1 -1
  59. package/dist/agents/fork.d.ts +16 -0
  60. package/dist/agents/fork.d.ts.map +1 -0
  61. package/dist/agents/ids.d.ts +7 -0
  62. package/dist/agents/ids.d.ts.map +1 -1
  63. package/dist/agents/index.d.ts +19 -8
  64. package/dist/agents/index.d.ts.map +1 -1
  65. package/dist/agents/index.js +159 -86
  66. package/dist/agents/index.js.map +1 -1
  67. package/dist/agents/memory-execution.d.ts +57 -0
  68. package/dist/agents/memory-execution.d.ts.map +1 -0
  69. package/dist/agents/memory.d.ts +49 -0
  70. package/dist/agents/memory.d.ts.map +1 -0
  71. package/dist/agents/message.d.ts +50 -1
  72. package/dist/agents/message.d.ts.map +1 -1
  73. package/dist/agents/model-loop.d.ts +19 -0
  74. package/dist/agents/model-loop.d.ts.map +1 -1
  75. package/dist/agents/model-routing.d.ts +19 -0
  76. package/dist/agents/model-routing.d.ts.map +1 -0
  77. package/dist/agents/participants.d.ts +18 -0
  78. package/dist/agents/participants.d.ts.map +1 -0
  79. package/dist/agents/reference.d.ts.map +1 -1
  80. package/dist/agents/request.d.ts +36 -2
  81. package/dist/agents/request.d.ts.map +1 -1
  82. package/dist/agents/run-scope.d.ts +51 -0
  83. package/dist/agents/run-scope.d.ts.map +1 -0
  84. package/dist/agents/streams/index.d.ts +3 -2
  85. package/dist/agents/streams/index.d.ts.map +1 -1
  86. package/dist/agents/streams/index.js +7 -3
  87. package/dist/agents/streams/index.js.map +1 -1
  88. package/dist/agents/streams/internal.d.ts +1 -1
  89. package/dist/agents/streams/internal.d.ts.map +1 -1
  90. package/dist/agents/streams/internal.js +5 -3
  91. package/dist/agents/streams/internal.js.map +1 -1
  92. package/dist/agents/streams/protocol.d.ts +122 -3
  93. package/dist/agents/streams/protocol.d.ts.map +1 -1
  94. package/dist/agents/subagent-runs.d.ts +12 -0
  95. package/dist/agents/subagent-runs.d.ts.map +1 -0
  96. package/dist/agents/thread-access.d.ts +53 -0
  97. package/dist/agents/thread-access.d.ts.map +1 -0
  98. package/dist/agents/tool-definition.d.ts +5 -4
  99. package/dist/agents/tool-definition.d.ts.map +1 -1
  100. package/dist/agents/types.d.ts +23 -4
  101. package/dist/agents/types.d.ts.map +1 -1
  102. package/dist/agents/validation.d.ts +1 -1
  103. package/dist/agents/validation.d.ts.map +1 -1
  104. package/dist/artifacts/access.d.ts +52 -0
  105. package/dist/artifacts/access.d.ts.map +1 -0
  106. package/dist/artifacts/canvas.d.ts +92 -0
  107. package/dist/artifacts/canvas.d.ts.map +1 -0
  108. package/dist/artifacts/csv.d.ts +5 -0
  109. package/dist/artifacts/csv.d.ts.map +1 -1
  110. package/dist/artifacts/errors.d.ts +7 -2
  111. package/dist/artifacts/errors.d.ts.map +1 -1
  112. package/dist/artifacts/execution.d.ts +102 -7
  113. package/dist/artifacts/execution.d.ts.map +1 -1
  114. package/dist/artifacts/formula/check.d.ts +24 -0
  115. package/dist/artifacts/formula/check.d.ts.map +1 -0
  116. package/dist/artifacts/formula/evaluate.d.ts +32 -0
  117. package/dist/artifacts/formula/evaluate.d.ts.map +1 -0
  118. package/dist/artifacts/formula/index.d.ts +38 -0
  119. package/dist/artifacts/formula/index.d.ts.map +1 -0
  120. package/dist/artifacts/formula/parser.d.ts +67 -0
  121. package/dist/artifacts/formula/parser.d.ts.map +1 -0
  122. package/dist/artifacts/frames/assets.d.ts +11 -9
  123. package/dist/artifacts/frames/assets.d.ts.map +1 -1
  124. package/dist/artifacts/frames/entries.d.ts +19 -0
  125. package/dist/artifacts/frames/entries.d.ts.map +1 -0
  126. package/dist/artifacts/frames/grants.d.ts +6 -6
  127. package/dist/artifacts/frames/grants.d.ts.map +1 -1
  128. package/dist/artifacts/frames/index.d.ts +4 -2
  129. package/dist/artifacts/frames/index.d.ts.map +1 -1
  130. package/dist/artifacts/frames/index.js +444 -51
  131. package/dist/artifacts/frames/index.js.map +10 -8
  132. package/dist/artifacts/frames/kit.d.ts +10 -5
  133. package/dist/artifacts/frames/kit.d.ts.map +1 -1
  134. package/dist/artifacts/frames/probe.d.ts +16 -12
  135. package/dist/artifacts/frames/probe.d.ts.map +1 -1
  136. package/dist/artifacts/frames/protocol.d.ts +79 -10
  137. package/dist/artifacts/frames/protocol.d.ts.map +1 -1
  138. package/dist/artifacts/frames/runtime.d.ts +27 -9
  139. package/dist/artifacts/frames/runtime.d.ts.map +1 -1
  140. package/dist/artifacts/index.d.ts +11 -5
  141. package/dist/artifacts/index.d.ts.map +1 -1
  142. package/dist/artifacts/index.js +128 -6
  143. package/dist/artifacts/index.js.map +3 -3
  144. package/dist/artifacts/kinds.d.ts +1 -1
  145. package/dist/artifacts/kinds.d.ts.map +1 -1
  146. package/dist/artifacts/limits.d.ts +30 -0
  147. package/dist/artifacts/limits.d.ts.map +1 -1
  148. package/dist/artifacts/live-sheet.d.ts +65 -0
  149. package/dist/artifacts/live-sheet.d.ts.map +1 -0
  150. package/dist/artifacts/outline.d.ts +27 -1
  151. package/dist/artifacts/outline.d.ts.map +1 -1
  152. package/dist/artifacts/publish/index.d.ts +2 -0
  153. package/dist/artifacts/publish/index.d.ts.map +1 -1
  154. package/dist/artifacts/publish/index.js +59 -19
  155. package/dist/artifacts/publish/index.js.map +1 -1
  156. package/dist/artifacts/publish/publish.d.ts +43 -11
  157. package/dist/artifacts/publish/publish.d.ts.map +1 -1
  158. package/dist/artifacts/publish/queries.d.ts +33 -0
  159. package/dist/artifacts/publish/queries.d.ts.map +1 -0
  160. package/dist/artifacts/publish/references.d.ts +6 -3
  161. package/dist/artifacts/publish/references.d.ts.map +1 -1
  162. package/dist/artifacts/publish/validate/canvas.d.ts +18 -0
  163. package/dist/artifacts/publish/validate/canvas.d.ts.map +1 -0
  164. package/dist/artifacts/publish/validate/html.d.ts +20 -0
  165. package/dist/artifacts/publish/validate/html.d.ts.map +1 -0
  166. package/dist/artifacts/publish/validate/page.d.ts +15 -0
  167. package/dist/artifacts/publish/validate/page.d.ts.map +1 -0
  168. package/dist/artifacts/publish/validate/sheet.d.ts +11 -3
  169. package/dist/artifacts/publish/validate/sheet.d.ts.map +1 -1
  170. package/dist/artifacts/publish/validate/slides.d.ts +1 -7
  171. package/dist/artifacts/publish/validate/slides.d.ts.map +1 -1
  172. package/dist/artifacts/queries.d.ts +95 -0
  173. package/dist/artifacts/queries.d.ts.map +1 -0
  174. package/dist/artifacts/resolve.d.ts +6 -0
  175. package/dist/artifacts/resolve.d.ts.map +1 -1
  176. package/dist/artifacts/run-query.d.ts +26 -0
  177. package/dist/artifacts/run-query.d.ts.map +1 -0
  178. package/dist/artifacts/serialize-query.d.ts +12 -0
  179. package/dist/artifacts/serialize-query.d.ts.map +1 -0
  180. package/dist/artifacts/sheet-rules.d.ts +26 -0
  181. package/dist/artifacts/sheet-rules.d.ts.map +1 -0
  182. package/dist/artifacts/tones.d.ts +8 -0
  183. package/dist/artifacts/tones.d.ts.map +1 -0
  184. package/dist/artifacts/workbook.d.ts +76 -5
  185. package/dist/artifacts/workbook.d.ts.map +1 -1
  186. package/dist/auth/index.d.ts +1 -1
  187. package/dist/auth/index.d.ts.map +1 -1
  188. package/dist/auth/index.js +14 -11
  189. package/dist/auth/index.js.map +1 -1
  190. package/dist/auth/member-events.d.ts +13 -0
  191. package/dist/auth/member-events.d.ts.map +1 -0
  192. package/dist/auth/profile.d.ts +11 -0
  193. package/dist/auth/profile.d.ts.map +1 -0
  194. package/dist/auth/runtime.d.ts +31 -3
  195. package/dist/auth/runtime.d.ts.map +1 -1
  196. package/dist/auth/strategy.d.ts +3 -1
  197. package/dist/auth/strategy.d.ts.map +1 -1
  198. package/dist/auth/strategy.js +7 -3
  199. package/dist/auth/strategy.js.map +1 -1
  200. package/dist/auth/types.d.ts +30 -1
  201. package/dist/auth/types.d.ts.map +1 -1
  202. package/dist/authorization/decision.d.ts +15 -0
  203. package/dist/authorization/decision.d.ts.map +1 -1
  204. package/dist/authorization/event-visibility.d.ts +5 -1
  205. package/dist/authorization/event-visibility.d.ts.map +1 -1
  206. package/dist/authorization/grant-kinds.d.ts +2 -2
  207. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  208. package/dist/authorization/index.d.ts +2 -2
  209. package/dist/authorization/index.d.ts.map +1 -1
  210. package/dist/authorization/index.js +12 -7
  211. package/dist/authorization/index.js.map +1 -1
  212. package/dist/authorization/resolve.d.ts +19 -1
  213. package/dist/authorization/resolve.d.ts.map +1 -1
  214. package/dist/authorization/run-visibility.d.ts +8 -1
  215. package/dist/authorization/run-visibility.d.ts.map +1 -1
  216. package/dist/authorization/types.d.ts +14 -0
  217. package/dist/authorization/types.d.ts.map +1 -1
  218. package/dist/bootstrap/index.js +69 -65
  219. package/dist/bootstrap/index.js.map +2 -2
  220. package/dist/{chunk-ky3j490c.js → chunk-02bzjgnt.js} +6 -6
  221. package/dist/{chunk-ky3j490c.js.map → chunk-02bzjgnt.js.map} +1 -1
  222. package/dist/{chunk-mfs23znk.js → chunk-07kkp2e1.js} +1 -1
  223. package/dist/{chunk-c1rxbz5y.js → chunk-098anw4f.js} +21 -19
  224. package/dist/chunk-098anw4f.js.map +12 -0
  225. package/dist/{chunk-z58tm0hm.js → chunk-0phpbbvm.js} +3 -3
  226. package/dist/{chunk-ere85b8y.js → chunk-0xmt5p5y.js} +116 -27
  227. package/dist/chunk-0xmt5p5y.js.map +14 -0
  228. package/dist/{chunk-t6f3tdnr.js → chunk-16a9dmfy.js} +33 -2
  229. package/dist/{chunk-t6f3tdnr.js.map → chunk-16a9dmfy.js.map} +5 -4
  230. package/dist/chunk-18sk89cg.js +47 -0
  231. package/dist/chunk-18sk89cg.js.map +10 -0
  232. package/dist/{chunk-e17zdm62.js → chunk-1t6k1avb.js} +1 -1
  233. package/dist/chunk-2626mh4m.js +693 -0
  234. package/dist/chunk-2626mh4m.js.map +19 -0
  235. package/dist/{chunk-qczk96d9.js → chunk-2adz0h75.js} +13 -4
  236. package/dist/chunk-2adz0h75.js.map +11 -0
  237. package/dist/{chunk-kge7k6ey.js → chunk-2fn60nvs.js} +2 -2
  238. package/dist/{chunk-99nd4rc1.js → chunk-2gjj5dx3.js} +5 -4
  239. package/dist/{chunk-99nd4rc1.js.map → chunk-2gjj5dx3.js.map} +3 -3
  240. package/dist/{chunk-mjddfa7k.js → chunk-3fqxbn31.js} +2 -24
  241. package/dist/{chunk-mjddfa7k.js.map → chunk-3fqxbn31.js.map} +3 -4
  242. package/dist/{chunk-y0c4e6ex.js → chunk-3gbefjg5.js} +1 -1
  243. package/dist/{chunk-5hx48dnn.js → chunk-45ngkxkp.js} +52 -31
  244. package/dist/chunk-45ngkxkp.js.map +13 -0
  245. package/dist/{chunk-cy4mbddw.js → chunk-48jezz3j.js} +1 -1
  246. package/dist/{chunk-561r0yc9.js → chunk-4b26qwbg.js} +13 -13
  247. package/dist/{chunk-561r0yc9.js.map → chunk-4b26qwbg.js.map} +1 -1
  248. package/dist/{chunk-9k93ah50.js → chunk-4f3ydv7t.js} +33 -69
  249. package/dist/chunk-4f3ydv7t.js.map +10 -0
  250. package/dist/chunk-4y26vs3v.js +97 -0
  251. package/dist/chunk-4y26vs3v.js.map +10 -0
  252. package/dist/{chunk-4as3wt1c.js → chunk-4ymrcdbm.js} +7 -3
  253. package/dist/chunk-4ymrcdbm.js.map +12 -0
  254. package/dist/{chunk-hcbyfxbe.js → chunk-5grk14e5.js} +76 -2
  255. package/dist/{chunk-hcbyfxbe.js.map → chunk-5grk14e5.js.map} +4 -3
  256. package/dist/{chunk-8frc8a4j.js → chunk-65pyhyas.js} +90 -83
  257. package/dist/chunk-65pyhyas.js.map +20 -0
  258. package/dist/{chunk-hwksyjks.js → chunk-661ezhks.js} +182 -6
  259. package/dist/chunk-661ezhks.js.map +11 -0
  260. package/dist/{chunk-447a5c0p.js → chunk-6n69k945.js} +2 -2
  261. package/dist/{chunk-0bphap9y.js → chunk-6p0pastb.js} +5 -5
  262. package/dist/{chunk-9j4jw7as.js → chunk-6rrtzea3.js} +18 -5
  263. package/dist/chunk-6rrtzea3.js.map +14 -0
  264. package/dist/{chunk-431pyp2c.js → chunk-6y0mkhex.js} +2 -2
  265. package/dist/{chunk-f4pamkt9.js → chunk-73v685wb.js} +10 -10
  266. package/dist/{chunk-f4pamkt9.js.map → chunk-73v685wb.js.map} +3 -3
  267. package/dist/{chunk-akzryx9h.js → chunk-7gr4j2eq.js} +7836 -5047
  268. package/dist/chunk-7gr4j2eq.js.map +120 -0
  269. package/dist/{chunk-bk9svbcq.js → chunk-7mc2wkre.js} +386 -86
  270. package/dist/chunk-7mc2wkre.js.map +50 -0
  271. package/dist/{chunk-6rqgmkde.js → chunk-7z5p905k.js} +335 -703
  272. package/dist/chunk-7z5p905k.js.map +22 -0
  273. package/dist/{chunk-yxd3nnqt.js → chunk-9mab3dvg.js} +26 -2
  274. package/dist/chunk-9mab3dvg.js.map +11 -0
  275. package/dist/chunk-9wr3yajk.js +42 -0
  276. package/dist/chunk-9wr3yajk.js.map +10 -0
  277. package/dist/chunk-az47zep4.js +41 -0
  278. package/dist/chunk-az47zep4.js.map +10 -0
  279. package/dist/{chunk-s7jg7pmn.js → chunk-bab05bhg.js} +1 -1
  280. package/dist/{chunk-858emn8m.js → chunk-bktev1ds.js} +14 -11
  281. package/dist/{chunk-858emn8m.js.map → chunk-bktev1ds.js.map} +3 -3
  282. package/dist/{chunk-dhcv7yxc.js → chunk-c0vk1djt.js} +5 -3
  283. package/dist/chunk-c0vk1djt.js.map +11 -0
  284. package/dist/chunk-c69nj7se.js +3 -0
  285. package/dist/{chunk-7n30ybym.js.map → chunk-c69nj7se.js.map} +1 -1
  286. package/dist/{chunk-q5e5tv4b.js → chunk-c844dkwd.js} +1 -1
  287. package/dist/{chunk-g257jwnc.js → chunk-cdk3egjj.js} +17 -4
  288. package/dist/chunk-cdk3egjj.js.map +12 -0
  289. package/dist/chunk-cswhawa2.js +113 -0
  290. package/dist/chunk-cswhawa2.js.map +10 -0
  291. package/dist/{chunk-cfj9dfbb.js → chunk-d2m879s4.js} +2 -2
  292. package/dist/{chunk-arns890k.js → chunk-d7vyc7k6.js} +2 -2
  293. package/dist/chunk-d7vyc7k6.js.map +10 -0
  294. package/dist/{chunk-q7gn29y3.js → chunk-dp0cdtj2.js} +2 -2
  295. package/dist/{chunk-6x0pqh32.js → chunk-e5wf5vz0.js} +3 -1
  296. package/dist/chunk-e5wf5vz0.js.map +10 -0
  297. package/dist/{chunk-cn0fwwhy.js → chunk-efmm01gj.js} +108 -1045
  298. package/dist/chunk-efmm01gj.js.map +18 -0
  299. package/dist/{chunk-918wwnaa.js → chunk-ezne9wc9.js} +1224 -430
  300. package/dist/chunk-ezne9wc9.js.map +71 -0
  301. package/dist/{chunk-tbc1ngpd.js → chunk-fe8zwt8b.js} +58 -12
  302. package/dist/{chunk-tbc1ngpd.js.map → chunk-fe8zwt8b.js.map} +5 -4
  303. package/dist/{chunk-br3k6qbf.js → chunk-fm62y49k.js} +1 -1
  304. package/dist/{chunk-nq6gpjt7.js → chunk-fntqb7qy.js} +30 -4
  305. package/dist/{chunk-nq6gpjt7.js.map → chunk-fntqb7qy.js.map} +5 -5
  306. package/dist/{chunk-1cc1xaf3.js → chunk-fp2kq35z.js} +26 -10
  307. package/dist/{chunk-1cc1xaf3.js.map → chunk-fp2kq35z.js.map} +5 -5
  308. package/dist/{chunk-vvxtn22d.js → chunk-g663fahq.js} +2 -2
  309. package/dist/{chunk-k43ct2ke.js → chunk-gvj5cd3b.js} +16 -9
  310. package/dist/chunk-gvj5cd3b.js.map +12 -0
  311. package/dist/{chunk-rmakanzx.js → chunk-h33shhq6.js} +5 -5
  312. package/dist/{chunk-nn5xnx3s.js → chunk-h3pbv7n8.js} +1738 -38
  313. package/dist/chunk-h3pbv7n8.js.map +48 -0
  314. package/dist/chunk-hn2r7z41.js.map +1 -1
  315. package/dist/{chunk-pbcbn83d.js → chunk-hqsp2sx4.js} +54 -8
  316. package/dist/chunk-hqsp2sx4.js.map +14 -0
  317. package/dist/{chunk-d09e3rax.js → chunk-hwarjrgf.js} +1 -1
  318. package/dist/{chunk-vf57cr4t.js → chunk-hyesv9dv.js} +1 -1
  319. package/dist/chunk-hz5d43gn.js +45 -0
  320. package/dist/chunk-hz5d43gn.js.map +10 -0
  321. package/dist/{chunk-91mg3nj9.js → chunk-j936th07.js} +86 -41
  322. package/dist/chunk-j936th07.js.map +12 -0
  323. package/dist/chunk-kcqpk9w1.js +75 -0
  324. package/dist/chunk-kcqpk9w1.js.map +10 -0
  325. package/dist/{chunk-5vems3nx.js → chunk-m2nevja0.js} +2 -2
  326. package/dist/{chunk-x9v4cx1d.js → chunk-m36fw8ft.js} +1 -1
  327. package/dist/{chunk-a40ad1ft.js → chunk-mbsbxarb.js} +1 -1
  328. package/dist/chunk-mzx71snp.js +129 -0
  329. package/dist/chunk-mzx71snp.js.map +10 -0
  330. package/dist/{chunk-6aawea28.js → chunk-n8q5j6y5.js} +1 -1
  331. package/dist/{chunk-d7dnxdep.js → chunk-n9zpx9c6.js} +4 -4
  332. package/dist/{chunk-xvsc5m8n.js → chunk-npcr0228.js} +1 -1
  333. package/dist/chunk-nydf3dbe.js +663 -0
  334. package/dist/chunk-nydf3dbe.js.map +13 -0
  335. package/dist/chunk-pdt5cw8z.js +233 -0
  336. package/dist/chunk-pdt5cw8z.js.map +11 -0
  337. package/dist/{chunk-rj69qcrd.js → chunk-pgrf64hp.js} +55 -7
  338. package/dist/chunk-pgrf64hp.js.map +12 -0
  339. package/dist/{chunk-y5tah2kf.js → chunk-q4pmvkg0.js} +1 -1
  340. package/dist/chunk-qhqgp4jf.js +1418 -0
  341. package/dist/chunk-qhqgp4jf.js.map +22 -0
  342. package/dist/{chunk-48qjhh6v.js → chunk-qx00vjrj.js} +19 -60
  343. package/dist/chunk-qx00vjrj.js.map +13 -0
  344. package/dist/{chunk-5948n82c.js → chunk-r6szek0x.js} +184 -7
  345. package/dist/chunk-r6szek0x.js.map +10 -0
  346. package/dist/{chunk-v4jbb3rs.js → chunk-rap5w0x0.js} +156 -2
  347. package/dist/chunk-rap5w0x0.js.map +10 -0
  348. package/dist/{chunk-pfp1txq2.js → chunk-sgx82nnt.js} +5 -31
  349. package/dist/{chunk-pfp1txq2.js.map → chunk-sgx82nnt.js.map} +3 -4
  350. package/dist/{chunk-bkpke1sg.js → chunk-t5608tkq.js} +3 -1
  351. package/dist/{chunk-bkpke1sg.js.map → chunk-t5608tkq.js.map} +3 -3
  352. package/dist/{chunk-29yx306f.js → chunk-tdxfsg1c.js} +507 -265
  353. package/dist/chunk-tdxfsg1c.js.map +23 -0
  354. package/dist/{chunk-d5rjr8c0.js → chunk-vabga7fk.js} +1 -1
  355. package/dist/{chunk-dhdha526.js → chunk-vhbw5sqm.js} +26 -2
  356. package/dist/chunk-vhbw5sqm.js.map +10 -0
  357. package/dist/{chunk-e6k4thh5.js → chunk-vpgwq5nf.js} +98 -12
  358. package/dist/chunk-vpgwq5nf.js.map +21 -0
  359. package/dist/{chunk-61y5xs4p.js → chunk-vyt322b6.js} +69 -50
  360. package/dist/{chunk-61y5xs4p.js.map → chunk-vyt322b6.js.map} +4 -4
  361. package/dist/chunk-waqk73p1.js +2380 -0
  362. package/dist/chunk-waqk73p1.js.map +23 -0
  363. package/dist/chunk-wsc1brye.js +27 -0
  364. package/dist/chunk-wsc1brye.js.map +10 -0
  365. package/dist/{chunk-96yw3pwd.js → chunk-y7dbmaqh.js} +28 -2
  366. package/dist/chunk-y7dbmaqh.js.map +10 -0
  367. package/dist/{chunk-6vb4st8k.js → chunk-yc9ners4.js} +120 -19
  368. package/dist/{chunk-6vb4st8k.js.map → chunk-yc9ners4.js.map} +8 -8
  369. package/dist/{chunk-dvd2fp9q.js → chunk-zbc929zg.js} +28 -4
  370. package/dist/chunk-zbc929zg.js.map +13 -0
  371. package/dist/chunk-zrvhsq7f.js +37 -0
  372. package/dist/chunk-zrvhsq7f.js.map +10 -0
  373. package/dist/datasets/write.js +5 -5
  374. package/dist/error-reporting/internal.js +3 -3
  375. package/dist/errors/catalog.d.ts +26 -0
  376. package/dist/errors/catalog.d.ts.map +1 -1
  377. package/dist/errors/internal.d.ts.map +1 -1
  378. package/dist/errors/internal.js +1 -1
  379. package/dist/events/definitions.d.ts +7 -0
  380. package/dist/events/definitions.d.ts.map +1 -1
  381. package/dist/events/execution.d.ts.map +1 -1
  382. package/dist/events/index.d.ts +2 -3
  383. package/dist/events/index.d.ts.map +1 -1
  384. package/dist/events/index.js +8 -10
  385. package/dist/events/index.js.map +1 -1
  386. package/dist/events/scope.d.ts.map +1 -1
  387. package/dist/events/scope.js +1 -1
  388. package/dist/events/selectors/builder.d.ts +12 -1
  389. package/dist/events/selectors/builder.d.ts.map +1 -1
  390. package/dist/events/selectors/index.d.ts +2 -2
  391. package/dist/events/selectors/index.d.ts.map +1 -1
  392. package/dist/events/selectors/index.js +2 -2
  393. package/dist/events/selectors/types.d.ts +19 -3
  394. package/dist/events/selectors/types.d.ts.map +1 -1
  395. package/dist/events/service.d.ts +17 -2
  396. package/dist/events/service.d.ts.map +1 -1
  397. package/dist/events/types/index.d.ts +3 -1
  398. package/dist/events/types/index.d.ts.map +1 -1
  399. package/dist/events/types/users.d.ts +63 -0
  400. package/dist/events/types/users.d.ts.map +1 -0
  401. package/dist/events/view-conditions.d.ts +34 -0
  402. package/dist/events/view-conditions.d.ts.map +1 -0
  403. package/dist/execution/agent.d.ts +15 -0
  404. package/dist/execution/agent.d.ts.map +1 -1
  405. package/dist/execution/agent.js +63 -57
  406. package/dist/execution/agent.js.map +1 -1
  407. package/dist/execution/authorization.d.ts.map +1 -1
  408. package/dist/execution/authorized-object-reader.d.ts +51 -2
  409. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  410. package/dist/execution/lineage.d.ts +7 -0
  411. package/dist/execution/lineage.d.ts.map +1 -0
  412. package/dist/execution/object-reader-ontology.d.ts +2 -2
  413. package/dist/execution/object-reader-ontology.d.ts.map +1 -1
  414. package/dist/execution/object-reader-security.d.ts +24 -3
  415. package/dist/execution/object-reader-security.d.ts.map +1 -1
  416. package/dist/execution/object-reader-users.d.ts +20 -0
  417. package/dist/execution/object-reader-users.d.ts.map +1 -0
  418. package/dist/execution/preparation.d.ts +23 -0
  419. package/dist/execution/preparation.d.ts.map +1 -0
  420. package/dist/execution/primitive.js +61 -57
  421. package/dist/execution/primitive.js.map +1 -1
  422. package/dist/execution/request.d.ts +2 -1
  423. package/dist/execution/request.d.ts.map +1 -1
  424. package/dist/execution/request.js +64 -56
  425. package/dist/execution/request.js.map +3 -3
  426. package/dist/execution/unique-lookup.d.ts +14 -0
  427. package/dist/execution/unique-lookup.d.ts.map +1 -0
  428. package/dist/execution/visible-objects.d.ts +12 -0
  429. package/dist/execution/visible-objects.d.ts.map +1 -0
  430. package/dist/http/api-routes.d.ts +17 -0
  431. package/dist/http/api-routes.d.ts.map +1 -1
  432. package/dist/http/index.js +1 -1
  433. package/dist/index.d.ts +32 -15
  434. package/dist/index.d.ts.map +1 -1
  435. package/dist/index.js +137 -126
  436. package/dist/index.js.map +1 -1
  437. package/dist/lake-storage/index.js +5 -5
  438. package/dist/materialization/errors.d.ts +25 -0
  439. package/dist/materialization/errors.d.ts.map +1 -1
  440. package/dist/materialization/event-envelopes.d.ts +5 -0
  441. package/dist/materialization/event-envelopes.d.ts.map +1 -1
  442. package/dist/materialization/index.d.ts +1 -1
  443. package/dist/materialization/index.d.ts.map +1 -1
  444. package/dist/materialization/index.js +14 -8
  445. package/dist/materialization/index.js.map +1 -1
  446. package/dist/materialization/model.d.ts +20 -2
  447. package/dist/materialization/model.d.ts.map +1 -1
  448. package/dist/materializer/edits/commit.d.ts.map +1 -1
  449. package/dist/materializer/edits/load-state.d.ts +5 -1
  450. package/dist/materializer/edits/load-state.d.ts.map +1 -1
  451. package/dist/materializer/edits/plan.d.ts.map +1 -1
  452. package/dist/materializer/edits/unique-values.d.ts +47 -0
  453. package/dist/materializer/edits/unique-values.d.ts.map +1 -0
  454. package/dist/materializer/edits/working-state.d.ts +6 -1
  455. package/dist/materializer/edits/working-state.d.ts.map +1 -1
  456. package/dist/materializer/execution/work-records.d.ts +7 -1
  457. package/dist/materializer/execution/work-records.d.ts.map +1 -1
  458. package/dist/materializer/index.js +45 -41
  459. package/dist/materializer/index.js.map +1 -1
  460. package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
  461. package/dist/materializer/projections/source-materialization.d.ts +1 -0
  462. package/dist/materializer/projections/source-materialization.d.ts.map +1 -1
  463. package/dist/materializer/shared/normalize.d.ts.map +1 -1
  464. package/dist/materializer/shared/projection-run.d.ts +0 -1
  465. package/dist/materializer/shared/projection-run.d.ts.map +1 -1
  466. package/dist/materializer/telemetry/plan.d.ts.map +1 -1
  467. package/dist/models/audio/catalog.d.ts +13 -1
  468. package/dist/models/audio/catalog.d.ts.map +1 -1
  469. package/dist/models/audio/errors.d.ts +6 -1
  470. package/dist/models/audio/errors.d.ts.map +1 -1
  471. package/dist/models/audio/runtime.d.ts.map +1 -1
  472. package/dist/models/audio/speech.d.ts +8 -0
  473. package/dist/models/audio/speech.d.ts.map +1 -0
  474. package/dist/models/audio/types.d.ts +93 -0
  475. package/dist/models/audio/types.d.ts.map +1 -1
  476. package/dist/models/calls.d.ts +27 -0
  477. package/dist/models/calls.d.ts.map +1 -0
  478. package/dist/models/catalog-index.d.ts +7 -4
  479. package/dist/models/catalog-index.d.ts.map +1 -1
  480. package/dist/models/catalog.d.ts +55 -3
  481. package/dist/models/catalog.d.ts.map +1 -1
  482. package/dist/models/decision/runtime.d.ts +6 -1
  483. package/dist/models/decision/runtime.d.ts.map +1 -1
  484. package/dist/models/decision/validation.d.ts +4 -1
  485. package/dist/models/decision/validation.d.ts.map +1 -1
  486. package/dist/models/definitions.d.ts +23 -1
  487. package/dist/models/definitions.d.ts.map +1 -1
  488. package/dist/models/events.d.ts +12 -1
  489. package/dist/models/events.d.ts.map +1 -1
  490. package/dist/models/execution/binding.d.ts +3 -1
  491. package/dist/models/execution/binding.d.ts.map +1 -1
  492. package/dist/models/execution/index.d.ts +1 -0
  493. package/dist/models/execution/index.d.ts.map +1 -1
  494. package/dist/models/execution/index.js +44 -34
  495. package/dist/models/execution/index.js.map +1 -1
  496. package/dist/models/execution/model-call-accounting.d.ts.map +1 -1
  497. package/dist/models/execution/model-call-recorder.d.ts +3 -0
  498. package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
  499. package/dist/models/execution/usage.d.ts.map +1 -1
  500. package/dist/models/execution.d.ts +4 -2
  501. package/dist/models/execution.d.ts.map +1 -1
  502. package/dist/models/generation-types.d.ts +8 -1
  503. package/dist/models/generation-types.d.ts.map +1 -1
  504. package/dist/models/image/catalog.d.ts +13 -0
  505. package/dist/models/image/catalog.d.ts.map +1 -0
  506. package/dist/models/image/errors.d.ts +8 -0
  507. package/dist/models/image/errors.d.ts.map +1 -0
  508. package/dist/models/image/runtime.d.ts +8 -0
  509. package/dist/models/image/runtime.d.ts.map +1 -0
  510. package/dist/models/image/types.d.ts +103 -0
  511. package/dist/models/image/types.d.ts.map +1 -0
  512. package/dist/models/index.d.ts +12 -8
  513. package/dist/models/index.d.ts.map +1 -1
  514. package/dist/models/index.js +17 -7
  515. package/dist/models/index.js.map +1 -1
  516. package/dist/models/input-file.d.ts +9 -0
  517. package/dist/models/input-file.d.ts.map +1 -0
  518. package/dist/models/language-model.d.ts +13 -0
  519. package/dist/models/language-model.d.ts.map +1 -1
  520. package/dist/models/pricing.d.ts +25 -10
  521. package/dist/models/pricing.d.ts.map +1 -1
  522. package/dist/models/rate-card.d.ts +44 -6
  523. package/dist/models/rate-card.d.ts.map +1 -1
  524. package/dist/objects/conditional-writes.d.ts +37 -0
  525. package/dist/objects/conditional-writes.d.ts.map +1 -0
  526. package/dist/objects/execution.d.ts +2 -0
  527. package/dist/objects/execution.d.ts.map +1 -1
  528. package/dist/objects/index.d.ts +1 -0
  529. package/dist/objects/index.d.ts.map +1 -1
  530. package/dist/objects/index.js +68 -58
  531. package/dist/objects/index.js.map +1 -1
  532. package/dist/objects/link/authorization.d.ts +3 -0
  533. package/dist/objects/link/authorization.d.ts.map +1 -1
  534. package/dist/objects/link/endpoints.d.ts +21 -2
  535. package/dist/objects/link/endpoints.d.ts.map +1 -1
  536. package/dist/objects/link/remove.d.ts.map +1 -1
  537. package/dist/objects/link/upsert-batch.d.ts.map +1 -1
  538. package/dist/objects/link/upsert.d.ts.map +1 -1
  539. package/dist/objects/materializer-adapter.d.ts +13 -4
  540. package/dist/objects/materializer-adapter.d.ts.map +1 -1
  541. package/dist/objects/object/delete.d.ts +3 -0
  542. package/dist/objects/object/delete.d.ts.map +1 -1
  543. package/dist/objects/object/upsert-batch.d.ts.map +1 -1
  544. package/dist/objects/object/upsert.d.ts.map +1 -1
  545. package/dist/objects/query/current-user.d.ts +17 -0
  546. package/dist/objects/query/current-user.d.ts.map +1 -0
  547. package/dist/objects/query/executor.d.ts +14 -0
  548. package/dist/objects/query/executor.d.ts.map +1 -1
  549. package/dist/objects/query/index.d.ts +2 -2
  550. package/dist/objects/query/index.d.ts.map +1 -1
  551. package/dist/objects/query/index.js +49 -44
  552. package/dist/objects/query/index.js.map +1 -1
  553. package/dist/objects/query/ir.d.ts +19 -1
  554. package/dist/objects/query/ir.d.ts.map +1 -1
  555. package/dist/objects/query/matches-predicate.d.ts +9 -0
  556. package/dist/objects/query/matches-predicate.d.ts.map +1 -0
  557. package/dist/objects/query/normalize.d.ts.map +1 -1
  558. package/dist/objects/query/user-expansions.d.ts +27 -0
  559. package/dist/objects/query/user-expansions.d.ts.map +1 -0
  560. package/dist/objects/query/validate.d.ts.map +1 -1
  561. package/dist/objects/runtime-batch.d.ts +3 -1
  562. package/dist/objects/runtime-batch.d.ts.map +1 -1
  563. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  564. package/dist/objects/sdk/query-executor.d.ts +6 -0
  565. package/dist/objects/sdk/query-executor.d.ts.map +1 -1
  566. package/dist/objects/serialize.d.ts +39 -0
  567. package/dist/objects/serialize.d.ts.map +1 -0
  568. package/dist/objects/unique-violation.d.ts +22 -0
  569. package/dist/objects/unique-violation.d.ts.map +1 -0
  570. package/dist/ontology/builders.d.ts +3 -1
  571. package/dist/ontology/builders.d.ts.map +1 -1
  572. package/dist/ontology/index.d.ts +2 -2
  573. package/dist/ontology/index.d.ts.map +1 -1
  574. package/dist/ontology/index.js +11 -7
  575. package/dist/ontology/index.js.map +1 -1
  576. package/dist/ontology/internal.js +7 -5
  577. package/dist/ontology/internal.js.map +3 -3
  578. package/dist/ontology/json-schema.d.ts.map +1 -1
  579. package/dist/ontology/primitives.d.ts +3 -0
  580. package/dist/ontology/primitives.d.ts.map +1 -1
  581. package/dist/ontology/registry.d.ts +6 -0
  582. package/dist/ontology/registry.d.ts.map +1 -1
  583. package/dist/ontology/types.d.ts +9 -0
  584. package/dist/ontology/types.d.ts.map +1 -1
  585. package/dist/ontology/unique-values.d.ts +26 -0
  586. package/dist/ontology/unique-values.d.ts.map +1 -0
  587. package/dist/ontology/user-ref.d.ts +23 -0
  588. package/dist/ontology/user-ref.d.ts.map +1 -1
  589. package/dist/ontology/validation/properties.d.ts.map +1 -1
  590. package/dist/ontology/validation/schema.d.ts.map +1 -1
  591. package/dist/pipelines/index.js +43 -40
  592. package/dist/pipelines/index.js.map +1 -1
  593. package/dist/projections/internal.js +36 -33
  594. package/dist/projections/internal.js.map +1 -1
  595. package/dist/projections/registry.d.ts +4 -0
  596. package/dist/projections/registry.d.ts.map +1 -1
  597. package/dist/projections/revision.d.ts +15 -0
  598. package/dist/projections/revision.d.ts.map +1 -1
  599. package/dist/projections/run-dispatch.d.ts.map +1 -1
  600. package/dist/projections/types.d.ts +2 -0
  601. package/dist/projections/types.d.ts.map +1 -1
  602. package/dist/query.d.ts +4 -2
  603. package/dist/query.d.ts.map +1 -1
  604. package/dist/query.js +2 -2
  605. package/dist/rules/execution.d.ts.map +1 -1
  606. package/dist/runtime/ai-cost.d.ts +2 -0
  607. package/dist/runtime/ai-cost.d.ts.map +1 -1
  608. package/dist/runtime/ai-usage.d.ts +7 -0
  609. package/dist/runtime/ai-usage.d.ts.map +1 -1
  610. package/dist/runtime/host.d.ts.map +1 -1
  611. package/dist/runtime/index.d.ts +1 -1
  612. package/dist/runtime/index.d.ts.map +1 -1
  613. package/dist/runtime/internal.js +42 -38
  614. package/dist/runtime/internal.js.map +1 -1
  615. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  616. package/dist/runtime/sixb.d.ts +2 -0
  617. package/dist/runtime/sixb.d.ts.map +1 -1
  618. package/dist/runtime/types.d.ts +66 -8
  619. package/dist/runtime/types.d.ts.map +1 -1
  620. package/dist/sandboxes/index.js +7 -6
  621. package/dist/sandboxes/index.js.map +1 -1
  622. package/dist/schedules/builders.d.ts.map +1 -1
  623. package/dist/schedules/index.js +3 -3
  624. package/dist/schedules/runtime.d.ts.map +1 -1
  625. package/dist/schedules/validation.d.ts.map +1 -1
  626. package/dist/security/grants.d.ts +12 -4
  627. package/dist/security/grants.d.ts.map +1 -1
  628. package/dist/security/index.d.ts +1 -1
  629. package/dist/security/index.d.ts.map +1 -1
  630. package/dist/security/internal.js +1 -1
  631. package/dist/security/project.d.ts +4 -1
  632. package/dist/security/project.d.ts.map +1 -1
  633. package/dist/security/public.js +2 -2
  634. package/dist/security/registry.d.ts +6 -0
  635. package/dist/security/registry.d.ts.map +1 -1
  636. package/dist/security/types.d.ts +47 -9
  637. package/dist/security/types.d.ts.map +1 -1
  638. package/dist/security/validation.d.ts.map +1 -1
  639. package/dist/security/view-conditions.d.ts +37 -0
  640. package/dist/security/view-conditions.d.ts.map +1 -0
  641. package/dist/shares/execution.d.ts.map +1 -1
  642. package/dist/shares/internal.js +34 -31
  643. package/dist/shares/internal.js.map +2 -2
  644. package/dist/storage/action-runs/failure.js +2 -2
  645. package/dist/storage/action-runs/provider.js +1 -1
  646. package/dist/storage/action-runs/types.d.ts +1 -1
  647. package/dist/storage/action-runs/types.d.ts.map +1 -1
  648. package/dist/storage/agents/errors.d.ts +3 -1
  649. package/dist/storage/agents/errors.d.ts.map +1 -1
  650. package/dist/storage/agents/in-memory.d.ts +120 -3
  651. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  652. package/dist/storage/agents/index.d.ts +2 -2
  653. package/dist/storage/agents/index.d.ts.map +1 -1
  654. package/dist/storage/agents/provider.d.ts +154 -4
  655. package/dist/storage/agents/provider.d.ts.map +1 -1
  656. package/dist/storage/agents/provider.js +60 -5
  657. package/dist/storage/agents/provider.js.map +1 -1
  658. package/dist/storage/agents/types.d.ts +565 -13
  659. package/dist/storage/agents/types.d.ts.map +1 -1
  660. package/dist/storage/ai-cost/analytics.d.ts +10 -1
  661. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  662. package/dist/storage/ai-cost/groups.d.ts +9 -0
  663. package/dist/storage/ai-cost/groups.d.ts.map +1 -1
  664. package/dist/storage/ai-cost/index.d.ts +1 -1
  665. package/dist/storage/ai-cost/index.d.ts.map +1 -1
  666. package/dist/storage/ai-cost/provider.d.ts +2 -1
  667. package/dist/storage/ai-cost/provider.d.ts.map +1 -1
  668. package/dist/storage/ai-cost/provider.js +11 -5
  669. package/dist/storage/ai-cost/provider.js.map +1 -1
  670. package/dist/storage/ai-cost/types.d.ts +14 -2
  671. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  672. package/dist/storage/ai-cost/validation.d.ts.map +1 -1
  673. package/dist/storage/ai-limits/enforcement.js +5 -4
  674. package/dist/storage/ai-limits/enforcement.js.map +1 -1
  675. package/dist/storage/ai-limits/provider.d.ts +1 -1
  676. package/dist/storage/ai-limits/provider.d.ts.map +1 -1
  677. package/dist/storage/ai-limits/provider.js +3 -2
  678. package/dist/storage/ai-limits/provider.js.map +1 -1
  679. package/dist/storage/ai-usage/in-memory.d.ts +5 -1
  680. package/dist/storage/ai-usage/in-memory.d.ts.map +1 -1
  681. package/dist/storage/ai-usage/index.d.ts +2 -2
  682. package/dist/storage/ai-usage/index.d.ts.map +1 -1
  683. package/dist/storage/ai-usage/record.d.ts +5 -1
  684. package/dist/storage/ai-usage/record.d.ts.map +1 -1
  685. package/dist/storage/ai-usage/types.d.ts +33 -0
  686. package/dist/storage/ai-usage/types.d.ts.map +1 -1
  687. package/dist/storage/ai-usage/usage.d.ts +2 -0
  688. package/dist/storage/ai-usage/usage.d.ts.map +1 -1
  689. package/dist/storage/artifacts/errors.d.ts +12 -2
  690. package/dist/storage/artifacts/errors.d.ts.map +1 -1
  691. package/dist/storage/artifacts/in-memory.d.ts +23 -2
  692. package/dist/storage/artifacts/in-memory.d.ts.map +1 -1
  693. package/dist/storage/artifacts/index.d.ts +2 -2
  694. package/dist/storage/artifacts/index.d.ts.map +1 -1
  695. package/dist/storage/artifacts/record.d.ts +19 -2
  696. package/dist/storage/artifacts/record.d.ts.map +1 -1
  697. package/dist/storage/artifacts/types.d.ts +87 -8
  698. package/dist/storage/artifacts/types.d.ts.map +1 -1
  699. package/dist/storage/auth/in-memory/auth-storage.d.ts +3 -2
  700. package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
  701. package/dist/storage/auth/in-memory/users.d.ts +7 -3
  702. package/dist/storage/auth/in-memory/users.d.ts.map +1 -1
  703. package/dist/storage/auth/index.d.ts +1 -1
  704. package/dist/storage/auth/index.d.ts.map +1 -1
  705. package/dist/storage/auth/types.d.ts +40 -9
  706. package/dist/storage/auth/types.d.ts.map +1 -1
  707. package/dist/storage/connector-connections/provider.js +1 -1
  708. package/dist/storage/executions/in-memory.d.ts +2 -1
  709. package/dist/storage/executions/in-memory.d.ts.map +1 -1
  710. package/dist/storage/executions/index.d.ts +1 -1
  711. package/dist/storage/executions/index.d.ts.map +1 -1
  712. package/dist/storage/executions/types.d.ts +15 -0
  713. package/dist/storage/executions/types.d.ts.map +1 -1
  714. package/dist/storage/file-upload-sessions/provider.js +15 -12
  715. package/dist/storage/file-upload-sessions/provider.js.map +1 -1
  716. package/dist/storage/index.d.ts +13 -11
  717. package/dist/storage/index.d.ts.map +1 -1
  718. package/dist/storage/index.js +50 -39
  719. package/dist/storage/index.js.map +1 -1
  720. package/dist/storage/internal.d.ts +2 -2
  721. package/dist/storage/internal.d.ts.map +1 -1
  722. package/dist/storage/internal.js +19 -8
  723. package/dist/storage/internal.js.map +1 -1
  724. package/dist/storage/migrations/migrate-storage.d.ts +4 -1
  725. package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
  726. package/dist/storage/migrations/prepare-unique-properties.d.ts +18 -0
  727. package/dist/storage/migrations/prepare-unique-properties.d.ts.map +1 -0
  728. package/dist/storage/objects/guard.d.ts +1 -1
  729. package/dist/storage/objects/guard.d.ts.map +1 -1
  730. package/dist/storage/objects/in-memory/conditional-reader.d.ts +5 -0
  731. package/dist/storage/objects/in-memory/conditional-reader.d.ts.map +1 -0
  732. package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
  733. package/dist/storage/objects/in-memory/read-scope.d.ts +3 -9
  734. package/dist/storage/objects/in-memory/read-scope.d.ts.map +1 -1
  735. package/dist/storage/objects/in-memory/read-source.d.ts +10 -1
  736. package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -1
  737. package/dist/storage/objects/in-memory/scoped-reader.d.ts +14 -0
  738. package/dist/storage/objects/in-memory/scoped-reader.d.ts.map +1 -0
  739. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
  740. package/dist/storage/objects/in-memory/storage.d.ts +36 -1
  741. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
  742. package/dist/storage/objects/index.d.ts +2 -2
  743. package/dist/storage/objects/index.d.ts.map +1 -1
  744. package/dist/storage/objects/read-scope.d.ts +9 -1
  745. package/dist/storage/objects/read-scope.d.ts.map +1 -1
  746. package/dist/storage/objects/types.d.ts +64 -1
  747. package/dist/storage/objects/types.d.ts.map +1 -1
  748. package/dist/storage/ontology/in-memory/index.d.ts +2 -0
  749. package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
  750. package/dist/storage/ontology/in-memory/materializations.d.ts +1 -0
  751. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  752. package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -1
  753. package/dist/storage/ontology/in-memory/unique-values.d.ts +32 -0
  754. package/dist/storage/ontology/in-memory/unique-values.d.ts.map +1 -0
  755. package/dist/storage/ontology/index.d.ts +4 -1
  756. package/dist/storage/ontology/index.d.ts.map +1 -1
  757. package/dist/storage/ontology/materializations.d.ts +34 -1
  758. package/dist/storage/ontology/materializations.d.ts.map +1 -1
  759. package/dist/storage/ontology/provider-work.d.ts +15 -2
  760. package/dist/storage/ontology/provider-work.d.ts.map +1 -1
  761. package/dist/storage/ontology/provider.d.ts +1 -1
  762. package/dist/storage/ontology/provider.d.ts.map +1 -1
  763. package/dist/storage/ontology/provider.js +9 -4
  764. package/dist/storage/ontology/provider.js.map +1 -1
  765. package/dist/storage/ontology/unique-values.d.ts +54 -0
  766. package/dist/storage/ontology/unique-values.d.ts.map +1 -0
  767. package/dist/storage/operation-scope.d.ts +1 -1
  768. package/dist/storage/operation-scope.d.ts.map +1 -1
  769. package/dist/storage/operation-scope.js +1 -1
  770. package/dist/storage/projection-runs/in-memory.d.ts +0 -6
  771. package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
  772. package/dist/storage/projection-runs/provider.js +2 -2
  773. package/dist/storage/share-grants/provider.js +4 -3
  774. package/dist/storage/share-grants/provider.js.map +1 -1
  775. package/dist/storage/types.d.ts +2 -2
  776. package/dist/storage/types.d.ts.map +1 -1
  777. package/dist/storage/workflow-runs/provider.js +15 -12
  778. package/dist/storage/workflow-runs/provider.js.map +1 -1
  779. package/dist/syncs/index.js +42 -39
  780. package/dist/syncs/index.js.map +1 -1
  781. package/dist/testing/agent-approval-storage-contract.d.ts +17 -0
  782. package/dist/testing/agent-approval-storage-contract.d.ts.map +1 -0
  783. package/dist/testing/agent-memory-storage-contract.d.ts +12 -0
  784. package/dist/testing/agent-memory-storage-contract.d.ts.map +1 -0
  785. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  786. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  787. package/dist/testing/ai-limit-storage-contract.d.ts +0 -1
  788. package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
  789. package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -1
  790. package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
  791. package/dist/testing/artifact-storage-contract.d.ts.map +1 -1
  792. package/dist/testing/auth-storage-contract.d.ts +13 -0
  793. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  794. package/dist/testing/broker-contract.d.ts +5 -0
  795. package/dist/testing/broker-contract.d.ts.map +1 -1
  796. package/dist/testing/effective-storage-contract.d.ts.map +1 -1
  797. package/dist/testing/execution-storage-contract.d.ts.map +1 -1
  798. package/dist/testing/file-upload-session-storage-contract.d.ts.map +1 -1
  799. package/dist/testing/index.d.ts +9 -5
  800. package/dist/testing/index.d.ts.map +1 -1
  801. package/dist/testing/index.js +7938 -3743
  802. package/dist/testing/index.js.map +29 -25
  803. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  804. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  805. package/dist/testing/object-conditional-read-scope-contract.d.ts +11 -0
  806. package/dist/testing/object-conditional-read-scope-contract.d.ts.map +1 -0
  807. package/dist/testing/object-query-contract.d.ts +0 -2
  808. package/dist/testing/object-query-contract.d.ts.map +1 -1
  809. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  810. package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
  811. package/dist/testing/queues-contract.d.ts +5 -0
  812. package/dist/testing/queues-contract.d.ts.map +1 -1
  813. package/dist/testing/sandboxes-contract.d.ts.map +1 -1
  814. package/dist/testing/share-grant-storage-contract.d.ts.map +1 -1
  815. package/dist/testing/share-session-storage-contract.d.ts.map +1 -1
  816. package/dist/testing/unique-values-contract.d.ts +21 -0
  817. package/dist/testing/unique-values-contract.d.ts.map +1 -0
  818. package/dist/testing/webhook-execution.d.ts +0 -8
  819. package/dist/testing/webhook-execution.d.ts.map +1 -1
  820. package/dist/testing/webhook-run-storage-contract.d.ts.map +1 -1
  821. package/dist/users/execution.d.ts +40 -0
  822. package/dist/users/execution.d.ts.map +1 -0
  823. package/dist/users/index.d.ts +3 -0
  824. package/dist/users/index.d.ts.map +1 -0
  825. package/dist/webhooks/internal.js +34 -31
  826. package/dist/webhooks/internal.js.map +2 -2
  827. package/dist/workers/index.js +4 -6
  828. package/dist/workers/index.js.map +4 -4
  829. package/dist/workers/queue-worker.d.ts +0 -2
  830. package/dist/workers/queue-worker.d.ts.map +1 -1
  831. package/dist/workers/worker.d.ts +0 -2
  832. package/dist/workers/worker.d.ts.map +1 -1
  833. package/dist/workflows/builders.d.ts.map +1 -1
  834. package/dist/workflows/index.js +67 -63
  835. package/dist/workflows/index.js.map +1 -1
  836. package/dist/workflows/request.d.ts +12 -1
  837. package/dist/workflows/request.d.ts.map +1 -1
  838. package/dist/workflows/types.d.ts +6 -2
  839. package/dist/workflows/types.d.ts.map +1 -1
  840. package/dist/workflows/validation.d.ts.map +1 -1
  841. package/package.json +1 -1
  842. package/src/actions/commit-edits.ts +6 -1
  843. package/src/actions/execution.ts +42 -15
  844. package/src/actions/read-facade.ts +33 -0
  845. package/src/actions/request.ts +224 -71
  846. package/src/actions/run/context.ts +47 -1
  847. package/src/actions/run/execute.ts +13 -6
  848. package/src/actions/run/executor.ts +11 -2
  849. package/src/actions/run/normalize.ts +12 -2
  850. package/src/actions/run/phases.ts +2 -0
  851. package/src/actions/run/run-action.ts +12 -3
  852. package/src/actions/run/signals.ts +3 -9
  853. package/src/actions/run/types.ts +17 -1
  854. package/src/actions/run-authorization.ts +72 -0
  855. package/src/actions/types/context.ts +20 -3
  856. package/src/actions/validators.ts +19 -8
  857. package/src/activity/README.md +5 -2
  858. package/src/activity/timeline.ts +39 -78
  859. package/src/agents/accounting.ts +59 -0
  860. package/src/agents/adapters.ts +10 -0
  861. package/src/agents/agent-mail.ts +29 -0
  862. package/src/agents/api-gateway.ts +14 -3
  863. package/src/agents/approval-continuation.ts +48 -0
  864. package/src/agents/approval-executor.ts +318 -0
  865. package/src/agents/approval-outcome.ts +59 -0
  866. package/src/agents/approvals.ts +566 -0
  867. package/src/agents/authority.ts +24 -1
  868. package/src/agents/builders.ts +5 -3
  869. package/src/agents/cancel.ts +103 -0
  870. package/src/agents/child-question.ts +46 -0
  871. package/src/agents/children.ts +404 -0
  872. package/src/agents/context-compaction.ts +12 -0
  873. package/src/agents/errors.ts +31 -0
  874. package/src/agents/execution.ts +788 -90
  875. package/src/agents/fork.ts +158 -0
  876. package/src/agents/ids.ts +18 -6
  877. package/src/agents/index.ts +55 -0
  878. package/src/agents/memory-execution.ts +186 -0
  879. package/src/agents/memory.ts +178 -0
  880. package/src/agents/message.ts +57 -0
  881. package/src/agents/model-loop.ts +93 -6
  882. package/src/agents/model-routing.ts +193 -0
  883. package/src/agents/participants.ts +213 -0
  884. package/src/agents/reference.ts +2 -0
  885. package/src/agents/request.ts +398 -69
  886. package/src/agents/run-scope.ts +134 -0
  887. package/src/agents/streams/index.ts +5 -0
  888. package/src/agents/streams/internal.ts +1 -0
  889. package/src/agents/streams/protocol.ts +385 -7
  890. package/src/agents/subagent-runs.ts +41 -0
  891. package/src/agents/thread-access.ts +137 -0
  892. package/src/agents/tool-definition.ts +5 -3
  893. package/src/agents/types.ts +35 -10
  894. package/src/agents/validation.ts +2 -0
  895. package/src/artifacts/access.ts +125 -0
  896. package/src/artifacts/canvas.ts +369 -0
  897. package/src/artifacts/csv.ts +10 -0
  898. package/src/artifacts/errors.ts +12 -1
  899. package/src/artifacts/execution.ts +436 -36
  900. package/src/artifacts/formula/check.ts +171 -0
  901. package/src/artifacts/formula/evaluate.ts +288 -0
  902. package/src/artifacts/formula/index.ts +199 -0
  903. package/src/artifacts/formula/parser.ts +357 -0
  904. package/src/artifacts/frames/assets.ts +35 -19
  905. package/src/artifacts/frames/entries.ts +35 -0
  906. package/src/artifacts/frames/grants.ts +10 -9
  907. package/src/artifacts/frames/index.ts +8 -2
  908. package/src/artifacts/frames/kit.ts +191 -14
  909. package/src/artifacts/frames/probe.ts +66 -18
  910. package/src/artifacts/frames/protocol.ts +164 -10
  911. package/src/artifacts/frames/runtime.ts +273 -28
  912. package/src/artifacts/index.ts +66 -2
  913. package/src/artifacts/kinds.ts +1 -1
  914. package/src/artifacts/limits.ts +31 -0
  915. package/src/artifacts/live-sheet.ts +345 -0
  916. package/src/artifacts/outline.ts +34 -1
  917. package/src/artifacts/publish/index.ts +2 -0
  918. package/src/artifacts/publish/publish.ts +120 -34
  919. package/src/artifacts/publish/queries.ts +336 -0
  920. package/src/artifacts/publish/references.ts +18 -13
  921. package/src/artifacts/publish/validate/canvas.ts +118 -0
  922. package/src/artifacts/publish/validate/html.ts +78 -0
  923. package/src/artifacts/publish/validate/page.ts +65 -0
  924. package/src/artifacts/publish/validate/sheet.ts +115 -69
  925. package/src/artifacts/publish/validate/slides.ts +11 -63
  926. package/src/artifacts/queries.ts +512 -0
  927. package/src/artifacts/resolve.ts +20 -5
  928. package/src/artifacts/run-query.ts +212 -0
  929. package/src/artifacts/serialize-query.ts +25 -0
  930. package/src/artifacts/sheet-rules.ts +180 -0
  931. package/src/artifacts/tones.ts +20 -0
  932. package/src/artifacts/workbook.ts +374 -15
  933. package/src/auth/index.ts +4 -0
  934. package/src/auth/member-events.ts +114 -0
  935. package/src/auth/profile.ts +118 -0
  936. package/src/auth/runtime.ts +190 -9
  937. package/src/auth/strategy.ts +3 -0
  938. package/src/auth/types.ts +32 -0
  939. package/src/authorization/decision.ts +47 -0
  940. package/src/authorization/event-visibility.ts +17 -16
  941. package/src/authorization/grant-kinds.ts +32 -0
  942. package/src/authorization/index.ts +6 -1
  943. package/src/authorization/resolve.ts +58 -1
  944. package/src/authorization/run-visibility.ts +8 -1
  945. package/src/authorization/types.ts +14 -0
  946. package/src/errors/catalog.ts +26 -1
  947. package/src/errors/internal.ts +17 -8
  948. package/src/events/definitions.ts +26 -0
  949. package/src/events/execution.ts +43 -6
  950. package/src/events/index.ts +10 -1
  951. package/src/events/scope.ts +2 -0
  952. package/src/events/selectors/builder.ts +50 -0
  953. package/src/events/selectors/index.ts +4 -0
  954. package/src/events/selectors/types.ts +32 -1
  955. package/src/events/service.ts +55 -2
  956. package/src/events/types/index.ts +10 -0
  957. package/src/events/types/users.ts +73 -0
  958. package/src/events/view-conditions.ts +241 -0
  959. package/src/execution/agent.ts +25 -0
  960. package/src/execution/authorization.ts +70 -0
  961. package/src/execution/authorized-object-reader.ts +238 -32
  962. package/src/execution/lineage.ts +14 -0
  963. package/src/execution/object-reader-ontology.ts +11 -14
  964. package/src/execution/object-reader-security.ts +134 -10
  965. package/src/execution/object-reader-users.ts +122 -0
  966. package/src/execution/preparation.ts +78 -0
  967. package/src/execution/request.ts +2 -0
  968. package/src/execution/unique-lookup.ts +55 -0
  969. package/src/execution/visible-objects.ts +26 -0
  970. package/src/http/api-routes.ts +206 -7
  971. package/src/index.ts +99 -2
  972. package/src/materialization/errors.ts +37 -0
  973. package/src/materialization/event-envelopes.ts +11 -3
  974. package/src/materialization/index.ts +1 -0
  975. package/src/materialization/model.ts +24 -4
  976. package/src/materializer/README.md +7 -1
  977. package/src/materializer/edits/commit.ts +56 -12
  978. package/src/materializer/edits/load-state.ts +15 -7
  979. package/src/materializer/edits/operations.ts +12 -0
  980. package/src/materializer/edits/plan.ts +2 -0
  981. package/src/materializer/edits/unique-values.ts +255 -0
  982. package/src/materializer/edits/working-state.ts +8 -1
  983. package/src/materializer/execution/work-records.ts +47 -0
  984. package/src/materializer/projections/finish-run.ts +0 -1
  985. package/src/materializer/projections/replace.ts +1 -1
  986. package/src/materializer/projections/replacement-plan.ts +4 -1
  987. package/src/materializer/projections/source-materialization.ts +2 -1
  988. package/src/materializer/shared/normalize.ts +37 -6
  989. package/src/materializer/shared/projection-run.ts +1 -2
  990. package/src/materializer/telemetry/append.ts +14 -17
  991. package/src/materializer/telemetry/plan.ts +2 -0
  992. package/src/models/audio/catalog.ts +89 -10
  993. package/src/models/audio/errors.ts +18 -1
  994. package/src/models/audio/runtime.ts +10 -13
  995. package/src/models/audio/speech.ts +261 -0
  996. package/src/models/audio/types.ts +97 -0
  997. package/src/models/calls.ts +100 -0
  998. package/src/models/catalog-index.ts +21 -2
  999. package/src/models/catalog.ts +211 -35
  1000. package/src/models/decision/runtime.ts +21 -22
  1001. package/src/models/decision/validation.ts +4 -1
  1002. package/src/models/definitions.ts +57 -8
  1003. package/src/models/events.ts +72 -1
  1004. package/src/models/execution/README.md +34 -5
  1005. package/src/models/execution/binding.ts +3 -1
  1006. package/src/models/execution/embedding.ts +1 -0
  1007. package/src/models/execution/index.ts +5 -0
  1008. package/src/models/execution/model-call-accounting.ts +3 -1
  1009. package/src/models/execution/model-call-recorder.ts +29 -1
  1010. package/src/models/execution/usage.ts +8 -0
  1011. package/src/models/execution.ts +20 -22
  1012. package/src/models/generation-types.ts +8 -1
  1013. package/src/models/image/catalog.ts +89 -0
  1014. package/src/models/image/errors.ts +19 -0
  1015. package/src/models/image/runtime.ts +335 -0
  1016. package/src/models/image/types.ts +111 -0
  1017. package/src/models/index.ts +38 -4
  1018. package/src/models/{audio/file.ts → input-file.ts} +22 -13
  1019. package/src/models/language-model.ts +13 -0
  1020. package/src/models/pricing.ts +263 -42
  1021. package/src/models/rate-card.ts +161 -12
  1022. package/src/objects/authorized-ontology-view.ts +1 -0
  1023. package/src/objects/conditional-writes.ts +109 -0
  1024. package/src/objects/execution.ts +4 -0
  1025. package/src/objects/index.ts +8 -0
  1026. package/src/objects/link/authorization.ts +12 -3
  1027. package/src/objects/link/endpoints.ts +42 -11
  1028. package/src/objects/link/remove.ts +25 -10
  1029. package/src/objects/link/upsert-batch.ts +2 -0
  1030. package/src/objects/link/upsert.ts +18 -12
  1031. package/src/objects/materializer-adapter.ts +55 -18
  1032. package/src/objects/object/delete.ts +24 -7
  1033. package/src/objects/object/upsert-batch.ts +44 -14
  1034. package/src/objects/object/upsert.ts +23 -5
  1035. package/src/objects/query/current-user.ts +76 -0
  1036. package/src/objects/query/executor.ts +39 -103
  1037. package/src/objects/query/explain.ts +20 -7
  1038. package/src/objects/query/index.ts +2 -0
  1039. package/src/objects/query/ir.ts +20 -0
  1040. package/src/objects/query/links.ts +8 -0
  1041. package/src/objects/query/matches-predicate.ts +108 -0
  1042. package/src/objects/query/normalize.ts +50 -19
  1043. package/src/objects/query/scalar-values.ts +19 -3
  1044. package/src/objects/query/user-expansions.ts +65 -0
  1045. package/src/objects/query/validate.ts +248 -10
  1046. package/src/objects/runtime-batch.ts +8 -2
  1047. package/src/objects/sdk/object-set.ts +12 -1
  1048. package/src/objects/sdk/query-builder.ts +39 -8
  1049. package/src/objects/sdk/query-executor.ts +6 -0
  1050. package/src/objects/serialize.ts +79 -0
  1051. package/src/objects/unique-violation.ts +59 -0
  1052. package/src/objects/vectors/handle.ts +3 -3
  1053. package/src/ontology/builders.ts +3 -0
  1054. package/src/ontology/docs-markdown.ts +1 -0
  1055. package/src/ontology/index.ts +2 -2
  1056. package/src/ontology/json-schema.ts +4 -0
  1057. package/src/ontology/primitives.ts +21 -8
  1058. package/src/ontology/registry.ts +16 -0
  1059. package/src/ontology/types.ts +9 -0
  1060. package/src/ontology/unique-values.ts +84 -0
  1061. package/src/ontology/user-ref.ts +39 -0
  1062. package/src/ontology/validation/properties.ts +43 -0
  1063. package/src/ontology/validation/schema.ts +9 -1
  1064. package/src/projections/registry.ts +16 -10
  1065. package/src/projections/revision.ts +112 -45
  1066. package/src/projections/run-dispatch.ts +38 -25
  1067. package/src/projections/types.ts +2 -0
  1068. package/src/query.ts +5 -0
  1069. package/src/rules/execution.ts +43 -11
  1070. package/src/runtime/ai-cost.ts +30 -0
  1071. package/src/runtime/ai-usage.ts +32 -1
  1072. package/src/runtime/host.ts +18 -1
  1073. package/src/runtime/index.ts +2 -0
  1074. package/src/runtime/resolve-definitions.ts +3 -0
  1075. package/src/runtime/sixb.ts +35 -8
  1076. package/src/runtime/types.ts +99 -9
  1077. package/src/schedules/builders.ts +3 -1
  1078. package/src/schedules/runtime.ts +6 -0
  1079. package/src/schedules/validation.ts +23 -1
  1080. package/src/security/README.md +62 -0
  1081. package/src/security/grants.ts +155 -10
  1082. package/src/security/index.ts +3 -1
  1083. package/src/security/project.ts +6 -1
  1084. package/src/security/registry.ts +32 -7
  1085. package/src/security/types.ts +54 -9
  1086. package/src/security/validation.ts +27 -11
  1087. package/src/security/view-conditions.ts +215 -0
  1088. package/src/shares/execution.ts +43 -10
  1089. package/src/storage/action-runs/types.ts +2 -0
  1090. package/src/storage/agents/errors.ts +3 -0
  1091. package/src/storage/agents/in-memory.ts +779 -32
  1092. package/src/storage/agents/index.ts +42 -0
  1093. package/src/storage/agents/provider.ts +733 -8
  1094. package/src/storage/agents/types.ts +620 -12
  1095. package/src/storage/ai-cost/analytics.ts +60 -7
  1096. package/src/storage/ai-cost/codec.ts +6 -1
  1097. package/src/storage/ai-cost/groups.ts +44 -1
  1098. package/src/storage/ai-cost/index.ts +1 -0
  1099. package/src/storage/ai-cost/provider.ts +2 -0
  1100. package/src/storage/ai-cost/types.ts +18 -1
  1101. package/src/storage/ai-cost/validation.ts +39 -12
  1102. package/src/storage/ai-limits/provider.ts +4 -7
  1103. package/src/storage/ai-usage/in-memory.ts +28 -1
  1104. package/src/storage/ai-usage/index.ts +9 -1
  1105. package/src/storage/ai-usage/record.ts +44 -7
  1106. package/src/storage/ai-usage/types.ts +38 -0
  1107. package/src/storage/ai-usage/usage.ts +15 -1
  1108. package/src/storage/artifacts/errors.ts +13 -1
  1109. package/src/storage/artifacts/in-memory.ts +156 -8
  1110. package/src/storage/artifacts/index.ts +6 -1
  1111. package/src/storage/artifacts/record.ts +61 -1
  1112. package/src/storage/artifacts/types.ts +92 -8
  1113. package/src/storage/auth/in-memory/auth-storage.ts +27 -2
  1114. package/src/storage/auth/in-memory/users.ts +40 -6
  1115. package/src/storage/auth/index.ts +1 -0
  1116. package/src/storage/auth/types.ts +43 -7
  1117. package/src/storage/executions/in-memory.ts +32 -0
  1118. package/src/storage/executions/index.ts +2 -0
  1119. package/src/storage/executions/types.ts +17 -0
  1120. package/src/storage/index.ts +69 -1
  1121. package/src/storage/internal.ts +9 -1
  1122. package/src/storage/migrations/migrate-storage.ts +8 -1
  1123. package/src/storage/migrations/prepare-unique-properties.ts +161 -0
  1124. package/src/storage/objects/guard.ts +7 -3
  1125. package/src/storage/objects/in-memory/conditional-reader.ts +72 -0
  1126. package/src/storage/objects/in-memory/query.ts +4 -105
  1127. package/src/storage/objects/in-memory/read-scope.ts +15 -14
  1128. package/src/storage/objects/in-memory/read-source.ts +11 -1
  1129. package/src/storage/objects/in-memory/scoped-reader.ts +243 -0
  1130. package/src/storage/objects/in-memory/selected-reader.ts +6 -231
  1131. package/src/storage/objects/in-memory/storage.ts +183 -1
  1132. package/src/storage/objects/index.ts +9 -1
  1133. package/src/storage/objects/read-scope.ts +191 -0
  1134. package/src/storage/objects/types.ts +68 -1
  1135. package/src/storage/ontology/in-memory/index.ts +3 -0
  1136. package/src/storage/ontology/in-memory/materializations.ts +35 -0
  1137. package/src/storage/ontology/in-memory/replacement-plans.ts +4 -0
  1138. package/src/storage/ontology/in-memory/unique-values.ts +62 -0
  1139. package/src/storage/ontology/index.ts +10 -0
  1140. package/src/storage/ontology/materializations.ts +35 -1
  1141. package/src/storage/ontology/provider-work.ts +76 -0
  1142. package/src/storage/ontology/provider.ts +3 -0
  1143. package/src/storage/ontology/unique-values.ts +56 -0
  1144. package/src/storage/operation-scope.ts +9 -1
  1145. package/src/storage/projection-runs/in-memory.ts +3 -35
  1146. package/src/storage/types.ts +2 -0
  1147. package/src/testing/agent-approval-storage-contract.ts +1117 -0
  1148. package/src/testing/agent-memory-storage-contract.ts +400 -0
  1149. package/src/testing/agent-storage-contract.ts +1188 -33
  1150. package/src/testing/ai-cost-storage-contract.ts +31 -1
  1151. package/src/testing/ai-limit-storage-contract.ts +9 -7
  1152. package/src/testing/ai-model-call-groups-contract.ts +76 -0
  1153. package/src/testing/ai-usage-storage-contract.ts +120 -13
  1154. package/src/testing/artifact-storage-contract.ts +338 -4
  1155. package/src/testing/auth-storage-contract.ts +550 -73
  1156. package/src/testing/broker-contract.ts +28 -23
  1157. package/src/testing/effective-storage-contract.ts +3 -8
  1158. package/src/testing/execution-storage-contract.ts +53 -0
  1159. package/src/testing/file-upload-session-storage-contract.ts +12 -24
  1160. package/src/testing/index.ts +17 -4
  1161. package/src/testing/lake-storage-contract.ts +22 -28
  1162. package/src/testing/materializer-storage-contract.ts +36 -9
  1163. package/src/testing/object-conditional-read-scope-contract.ts +634 -0
  1164. package/src/testing/object-query-contract.ts +386 -186
  1165. package/src/testing/ontology-storage-contract.ts +230 -21
  1166. package/src/testing/projection-run-storage-contract.ts +8 -18
  1167. package/src/testing/queues-contract.ts +39 -70
  1168. package/src/testing/sandboxes-contract.ts +3 -14
  1169. package/src/testing/share-grant-storage-contract.ts +13 -16
  1170. package/src/testing/share-session-storage-contract.ts +4 -14
  1171. package/src/testing/unique-values-contract.ts +907 -0
  1172. package/src/testing/webhook-execution.ts +1 -1
  1173. package/src/testing/webhook-run-storage-contract.ts +6 -9
  1174. package/src/users/execution.ts +131 -0
  1175. package/src/users/index.ts +2 -0
  1176. package/src/workers/queue-worker.ts +1 -3
  1177. package/src/workers/worker.ts +1 -3
  1178. package/src/workflows/builders.ts +6 -0
  1179. package/src/workflows/request.ts +46 -8
  1180. package/src/workflows/types.ts +6 -2
  1181. package/src/workflows/validation.ts +23 -9
  1182. package/dist/chunk-29yx306f.js.map +0 -22
  1183. package/dist/chunk-3jms7je7.js +0 -14
  1184. package/dist/chunk-3jms7je7.js.map +0 -10
  1185. package/dist/chunk-3qct2mdc.js +0 -297
  1186. package/dist/chunk-3qct2mdc.js.map +0 -12
  1187. package/dist/chunk-48qjhh6v.js.map +0 -13
  1188. package/dist/chunk-4as3wt1c.js.map +0 -12
  1189. package/dist/chunk-5948n82c.js.map +0 -10
  1190. package/dist/chunk-5hx48dnn.js.map +0 -14
  1191. package/dist/chunk-6rqgmkde.js.map +0 -29
  1192. package/dist/chunk-6x0pqh32.js.map +0 -10
  1193. package/dist/chunk-7n30ybym.js +0 -3
  1194. package/dist/chunk-7n440zgt.js +0 -261
  1195. package/dist/chunk-7n440zgt.js.map +0 -12
  1196. package/dist/chunk-7q8t23v4.js +0 -467
  1197. package/dist/chunk-7q8t23v4.js.map +0 -14
  1198. package/dist/chunk-8frc8a4j.js.map +0 -20
  1199. package/dist/chunk-918wwnaa.js.map +0 -68
  1200. package/dist/chunk-91mg3nj9.js.map +0 -12
  1201. package/dist/chunk-96yw3pwd.js.map +0 -10
  1202. package/dist/chunk-9j4jw7as.js.map +0 -14
  1203. package/dist/chunk-9k93ah50.js.map +0 -11
  1204. package/dist/chunk-9kgkfg6v.js +0 -502
  1205. package/dist/chunk-9kgkfg6v.js.map +0 -14
  1206. package/dist/chunk-akzryx9h.js.map +0 -100
  1207. package/dist/chunk-arns890k.js.map +0 -10
  1208. package/dist/chunk-bk9svbcq.js.map +0 -49
  1209. package/dist/chunk-c06hmxyy.js +0 -31
  1210. package/dist/chunk-c06hmxyy.js.map +0 -10
  1211. package/dist/chunk-c1rxbz5y.js.map +0 -12
  1212. package/dist/chunk-cn0fwwhy.js.map +0 -19
  1213. package/dist/chunk-dhcv7yxc.js.map +0 -11
  1214. package/dist/chunk-dhdha526.js.map +0 -10
  1215. package/dist/chunk-dvd2fp9q.js.map +0 -13
  1216. package/dist/chunk-e6k4thh5.js.map +0 -19
  1217. package/dist/chunk-ere85b8y.js.map +0 -15
  1218. package/dist/chunk-g257jwnc.js.map +0 -12
  1219. package/dist/chunk-hwksyjks.js.map +0 -11
  1220. package/dist/chunk-k43ct2ke.js.map +0 -12
  1221. package/dist/chunk-nn5xnx3s.js.map +0 -40
  1222. package/dist/chunk-pbcbn83d.js.map +0 -14
  1223. package/dist/chunk-pqajwytd.js +0 -68
  1224. package/dist/chunk-pqajwytd.js.map +0 -11
  1225. package/dist/chunk-qczk96d9.js.map +0 -11
  1226. package/dist/chunk-rdghfsss.js +0 -39
  1227. package/dist/chunk-rdghfsss.js.map +0 -10
  1228. package/dist/chunk-rj69qcrd.js.map +0 -11
  1229. package/dist/chunk-v4jbb3rs.js.map +0 -10
  1230. package/dist/chunk-yxd3nnqt.js.map +0 -11
  1231. package/dist/events/toStoredEvent.d.ts +0 -9
  1232. package/dist/events/toStoredEvent.d.ts.map +0 -1
  1233. package/dist/models/audio/file.d.ts +0 -9
  1234. package/dist/models/audio/file.d.ts.map +0 -1
  1235. package/src/events/toStoredEvent.ts +0 -33
  1236. /package/dist/{chunk-mfs23znk.js.map → chunk-07kkp2e1.js.map} +0 -0
  1237. /package/dist/{chunk-z58tm0hm.js.map → chunk-0phpbbvm.js.map} +0 -0
  1238. /package/dist/{chunk-e17zdm62.js.map → chunk-1t6k1avb.js.map} +0 -0
  1239. /package/dist/{chunk-kge7k6ey.js.map → chunk-2fn60nvs.js.map} +0 -0
  1240. /package/dist/{chunk-y0c4e6ex.js.map → chunk-3gbefjg5.js.map} +0 -0
  1241. /package/dist/{chunk-cy4mbddw.js.map → chunk-48jezz3j.js.map} +0 -0
  1242. /package/dist/{chunk-twe4dx8p.js → chunk-5tfev0fv.js} +0 -0
  1243. /package/dist/{chunk-twe4dx8p.js.map → chunk-5tfev0fv.js.map} +0 -0
  1244. /package/dist/{chunk-447a5c0p.js.map → chunk-6n69k945.js.map} +0 -0
  1245. /package/dist/{chunk-0bphap9y.js.map → chunk-6p0pastb.js.map} +0 -0
  1246. /package/dist/{chunk-431pyp2c.js.map → chunk-6y0mkhex.js.map} +0 -0
  1247. /package/dist/{chunk-s7jg7pmn.js.map → chunk-bab05bhg.js.map} +0 -0
  1248. /package/dist/{chunk-q5e5tv4b.js.map → chunk-c844dkwd.js.map} +0 -0
  1249. /package/dist/{chunk-cfj9dfbb.js.map → chunk-d2m879s4.js.map} +0 -0
  1250. /package/dist/{chunk-q7gn29y3.js.map → chunk-dp0cdtj2.js.map} +0 -0
  1251. /package/dist/{chunk-br3k6qbf.js.map → chunk-fm62y49k.js.map} +0 -0
  1252. /package/dist/{chunk-vvxtn22d.js.map → chunk-g663fahq.js.map} +0 -0
  1253. /package/dist/{chunk-rmakanzx.js.map → chunk-h33shhq6.js.map} +0 -0
  1254. /package/dist/{chunk-d09e3rax.js.map → chunk-hwarjrgf.js.map} +0 -0
  1255. /package/dist/{chunk-vf57cr4t.js.map → chunk-hyesv9dv.js.map} +0 -0
  1256. /package/dist/{chunk-5vems3nx.js.map → chunk-m2nevja0.js.map} +0 -0
  1257. /package/dist/{chunk-x9v4cx1d.js.map → chunk-m36fw8ft.js.map} +0 -0
  1258. /package/dist/{chunk-a40ad1ft.js.map → chunk-mbsbxarb.js.map} +0 -0
  1259. /package/dist/{chunk-6aawea28.js.map → chunk-n8q5j6y5.js.map} +0 -0
  1260. /package/dist/{chunk-d7dnxdep.js.map → chunk-n9zpx9c6.js.map} +0 -0
  1261. /package/dist/{chunk-xvsc5m8n.js.map → chunk-npcr0228.js.map} +0 -0
  1262. /package/dist/{chunk-y5tah2kf.js.map → chunk-q4pmvkg0.js.map} +0 -0
  1263. /package/dist/{chunk-d5rjr8c0.js.map → chunk-vabga7fk.js.map} +0 -0
@@ -1,992 +1,41 @@
1
1
  // @bun
2
2
  import {
3
- MAX_VECTOR_K,
4
- vectorConfiguration,
3
+ bindCurrentUser,
5
4
  vectorSources,
6
5
  normalizeVector2,
7
- hasVectorProfile2,
8
- isVectorProfileQuery2,
9
- objectBatchKey2,
10
- linkBatchKey2,
11
- objectLinkCursor2,
12
- compareQueryScalarValues,
13
- queryScalarValuesEqual
14
- } from "./chunk-918wwnaa.js";
6
+ MAX_RERANK_INPUT_BYTES,
7
+ validateObjectQuery2,
8
+ validateObjectQueryWithAdmission,
9
+ collectObjectQueryValidationIssues2,
10
+ resolveObjectQueryResultShape2
11
+ } from "./chunk-h3pbv7n8.js";
15
12
  import {
16
13
  MAX_OBJECT_READ_FACETS2,
17
14
  isAllowed2,
18
15
  assertAuthorized2
19
- } from "./chunk-6vb4st8k.js";
20
- import {
21
- validateSchemaValue2,
22
- validatePropertyValue2,
23
- isExactSchema,
24
- isSortableSchema,
25
- isTextSchema,
26
- isContainsSchema,
27
- queryScalarKindForSchema
28
- } from "./chunk-8frc8a4j.js";
16
+ } from "./chunk-yc9ners4.js";
29
17
  import {
30
18
  validateRerankingResults
31
- } from "./chunk-29yx306f.js";
19
+ } from "./chunk-tdxfsg1c.js";
20
+ import {
21
+ objectBatchKey2,
22
+ linkBatchKey2,
23
+ objectLinkCursor2,
24
+ compareQueryScalarValues,
25
+ matchesPredicate
26
+ } from "./chunk-ezne9wc9.js";
32
27
  import {
33
28
  ObjectQueryValidationError2,
34
29
  ObjectQueryPlanningError2,
35
30
  ObjectQueryExecutionError2,
36
31
  normalizeObjectQuery2
37
- } from "./chunk-91mg3nj9.js";
38
- import {
39
- formatUnknownObjectTypeMessage
40
- } from "./chunk-cqr3acm1.js";
32
+ } from "./chunk-j936th07.js";
41
33
  import {
42
34
  sameEmbeddingModel
43
35
  } from "./chunk-kyjcwqz6.js";
44
- import {
45
- normalizeDecimalValue2
46
- } from "./chunk-3bh94gbw.js";
47
36
  import {
48
37
  stableJsonStringify2
49
38
  } from "./chunk-wy0qdqfm.js";
50
- // src/objects/query/reranking-limits.ts
51
- var MAX_RERANK_CANDIDATES = 100;
52
- var MAX_RERANK_INPUT_BYTES = 1048576;
53
-
54
- // src/objects/query/validate.ts
55
- var DEFAULT_MAX_LIMIT = 1000;
56
- var DEFAULT_MAX_PAGE_SIZE = 1000;
57
- var DEFAULT_MAX_REFS = 1000;
58
- var NOOP_ADMISSION_STATE = Object.freeze({});
59
- var NOOP_QUERY_ADMISSION = Object.freeze({
60
- empty: () => NOOP_ADMISSION_STATE,
61
- source: () => ({ state: NOOP_ADMISSION_STATE }),
62
- property: () => {
63
- return;
64
- },
65
- edge: (input) => ({
66
- state: input.state
67
- }),
68
- set: (input) => input.states[0] ?? NOOP_ADMISSION_STATE
69
- });
70
- function composeObjectQueryAdmissions(first, second) {
71
- const parts = new WeakMap;
72
- const join = (left, right) => {
73
- const state = Object.freeze({});
74
- parts.set(state, [left, right]);
75
- return state;
76
- };
77
- const split = (state) => {
78
- const pair = parts.get(state);
79
- if (!pair)
80
- throw new Error("[Sixb] Composed query admission received a foreign state.");
81
- return pair;
82
- };
83
- const transition = (left, right) => {
84
- const denial = left.denial ?? right.denial;
85
- return { state: join(left.state, right.state), ...denial ? { denial } : {} };
86
- };
87
- const admission = {
88
- empty: () => join(first.empty(), second.empty()),
89
- source: (input) => transition(first.source(input), second.source(input)),
90
- edge: (input) => {
91
- const [left, right] = split(input.state);
92
- return transition(first.edge({ ...input, state: left }), second.edge({ ...input, state: right }));
93
- },
94
- property: (input) => {
95
- const [left, right] = split(input.state);
96
- return first.property({ ...input, state: left }) ?? second.property({ ...input, state: right });
97
- },
98
- set: (input) => {
99
- const pairs = input.states.map(split);
100
- return join(first.set({ ...input, states: pairs.map(([left]) => left) }), second.set({ ...input, states: pairs.map(([, right]) => right) }));
101
- }
102
- };
103
- return Object.freeze(admission);
104
- }
105
- function validateObjectQuery2(query, options) {
106
- const admitted = validateObjectQueryWithAdmission(query, options, NOOP_QUERY_ADMISSION);
107
- return {
108
- query: admitted.query,
109
- result: admitted.result,
110
- touchedObjectTypeIds: admitted.touchedObjectTypeIds
111
- };
112
- }
113
- function validateObjectQueryWithAdmission(query, options, admission) {
114
- const normalized = options.normalize === false ? query : normalizeObjectQuery2(query);
115
- const ctx = createValidationContext(options, admission);
116
- validateVectorComposition(query, ctx);
117
- const validation = validateQueryNode(normalized, "$", ctx);
118
- if (ctx.issues.length > 0) {
119
- throw new ObjectQueryValidationError2(ctx.issues);
120
- }
121
- const denial = ctx.admissionDenials[0];
122
- if (denial)
123
- throw denial;
124
- return {
125
- query: validation.query,
126
- result: validation.result,
127
- touchedObjectTypeIds: [...ctx.touchedObjectTypeIds],
128
- admissionState: validation.admissionState
129
- };
130
- }
131
- function collectObjectQueryValidationIssues2(query, options) {
132
- const normalized = options.normalize === false ? query : normalizeObjectQuery2(query);
133
- const ctx = createValidationContext(options, NOOP_QUERY_ADMISSION);
134
- validateVectorComposition(query, ctx);
135
- validateQueryNode(normalized, "$", ctx);
136
- return ctx.issues;
137
- }
138
- function resolveObjectQueryResultShape2(query, options) {
139
- return validateObjectQuery2(query, options).result;
140
- }
141
- function validateVectorComposition(query, ctx) {
142
- if (hasVectorProfile2(query) && !isVectorProfileQuery2(query))
143
- ctx.issues.push({
144
- path: "$",
145
- code: "vector.composition",
146
- message: "Vector profiles support one top-k over one concrete type, with filters, traversals or sets before ranking, optional reranking, then limit/project."
147
- });
148
- }
149
- function createValidationContext(options, admission) {
150
- return {
151
- ontology: options.ontology,
152
- valueTypesById: options.ontology.getValueTypesById(),
153
- maxLimit: options.maxLimit ?? DEFAULT_MAX_LIMIT,
154
- maxPageSize: options.maxPageSize ?? DEFAULT_MAX_PAGE_SIZE,
155
- maxRefs: options.maxRefs ?? DEFAULT_MAX_REFS,
156
- issues: [],
157
- touchedObjectTypeIds: new Set,
158
- admission,
159
- admissionDenials: []
160
- };
161
- }
162
- function validateQueryNode(query, path, ctx) {
163
- const validation = dispatchQueryNode(query, path, ctx);
164
- for (const objectTypeId of validation.result.objectTypeIds) {
165
- ctx.touchedObjectTypeIds.add(objectTypeId);
166
- }
167
- return validation;
168
- }
169
- function dispatchQueryNode(query, path, ctx) {
170
- switch (query.kind) {
171
- case "start": {
172
- const validation = validateStart(query.objectTypeId, query.includeSubtypes, path, ctx);
173
- return {
174
- ...validation,
175
- admissionState: admitTransition(ctx, ctx.admission.source({
176
- kind: "start",
177
- result: validation.result,
178
- objectTypeId: query.objectTypeId,
179
- path
180
- }))
181
- };
182
- }
183
- case "refs": {
184
- const validation = validateRefs(query.refs, path, ctx);
185
- return {
186
- ...validation,
187
- admissionState: admitTransition(ctx, ctx.admission.source({
188
- kind: "refs",
189
- result: validation.result,
190
- refs: validation.query.kind === "refs" ? validation.query.refs : query.refs,
191
- path
192
- }))
193
- };
194
- }
195
- case "filter": {
196
- const input = validateQueryNode(query.input, `${path}.input`, ctx);
197
- const predicate = validatePredicate(query.predicate, input.result, input.admissionState, `${path}.predicate`, ctx);
198
- return {
199
- result: input.result,
200
- query: { ...query, input: input.query, predicate },
201
- admissionState: input.admissionState
202
- };
203
- }
204
- case "text": {
205
- const input = validateQueryNode(query.input, `${path}.input`, ctx);
206
- const textFields = validateTextQuery(query.query, query.fields, input.result, input.admissionState, path, ctx);
207
- return {
208
- result: input.result,
209
- query: {
210
- ...query,
211
- input: input.query,
212
- fields: query.fields,
213
- fieldsByObjectType: query.fields ? undefined : textFields.fieldsByObjectType
214
- },
215
- admissionState: input.admissionState
216
- };
217
- }
218
- case "vector": {
219
- const input = validateQueryNode(query.input, `${path}.input`, ctx);
220
- return {
221
- result: input.result,
222
- query: validateVectorProfileQuery({ ...query, input: input.query }, input.result, input.admissionState, path, ctx),
223
- admissionState: input.admissionState
224
- };
225
- }
226
- case "traverse": {
227
- const input = validateQueryNode(query.input, `${path}.input`, ctx);
228
- const result = validateTraverse(query.linkId, query.direction, query.sourceObjectTypeId, input.result, path, ctx);
229
- return {
230
- result,
231
- query: { ...query, input: input.query },
232
- admissionState: admitTransition(ctx, ctx.admission.edge({
233
- state: input.admissionState,
234
- result,
235
- linkId: query.linkId,
236
- direction: query.direction,
237
- sourceObjectTypeId: query.sourceObjectTypeId,
238
- use: "traverse",
239
- path
240
- }))
241
- };
242
- }
243
- case "rerank": {
244
- const input = validateQueryNode(query.input, `${path}.input`, ctx);
245
- if (input.query.kind !== "vector" || typeof input.query.vector !== "string" || input.query.k > MAX_RERANK_CANDIDATES) {
246
- addIssue(ctx, path, "invalid_rerank_input", `Reranking requires a text vector query with k at most ${MAX_RERANK_CANDIDATES}, before limit or project.`);
247
- }
248
- 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) {
249
- addIssue(ctx, path, "invalid_rerank_model", "Reranking requires an explicit provider and model ID.");
250
- }
251
- return { ...input, query: { ...query, model: { ...query.model }, input: input.query } };
252
- }
253
- case "set":
254
- return validateSet(query.inputs, query.op, path, ctx);
255
- case "sort": {
256
- const input = validateQueryNode(query.input, `${path}.input`, ctx);
257
- const fields = validateSortFields(query.fields, input.result, input.admissionState, "sort", path, ctx);
258
- return {
259
- result: input.result,
260
- query: { ...query, input: input.query, fields },
261
- admissionState: input.admissionState
262
- };
263
- }
264
- case "limit": {
265
- const input = validateQueryNode(query.input, `${path}.input`, ctx);
266
- validateLimit(query.limit, path, ctx);
267
- return {
268
- result: input.result,
269
- query: { ...query, input: input.query },
270
- admissionState: input.admissionState
271
- };
272
- }
273
- case "page": {
274
- const input = validateQueryNode(query.input, `${path}.input`, ctx);
275
- validatePage(query.pageSize, query.pageToken, path, ctx);
276
- return {
277
- result: input.result,
278
- query: { ...query, input: input.query },
279
- admissionState: input.admissionState
280
- };
281
- }
282
- case "project": {
283
- const input = validateQueryNode(query.input, `${path}.input`, ctx);
284
- validateProjection(query.properties, input.result, input.admissionState, path, ctx);
285
- return {
286
- result: input.result,
287
- query: { ...query, input: input.query },
288
- admissionState: input.admissionState
289
- };
290
- }
291
- case "expand": {
292
- const input = validateQueryNode(query.input, `${path}.input`, ctx);
293
- const expansions = validateExpansions(query.expansions, input.result, input.admissionState, `${path}.expansions`, ctx);
294
- return {
295
- result: input.result,
296
- query: { ...query, input: input.query, expansions },
297
- admissionState: input.admissionState
298
- };
299
- }
300
- }
301
- }
302
- function validateRefs(refs, path, ctx) {
303
- if (refs.length === 0) {
304
- addIssue(ctx, `${path}.refs`, "empty_refs", "refs must include at least one object reference");
305
- }
306
- if (refs.length > ctx.maxRefs) {
307
- addIssue(ctx, `${path}.refs`, "too_many_refs", `refs must include at most ${ctx.maxRefs} object references`);
308
- }
309
- const objectTypeIds = new Set;
310
- refs.forEach((ref, index) => {
311
- const refPath = `${path}.refs[${index}]`;
312
- if (!ref.objectTypeId) {
313
- addIssue(ctx, `${refPath}.objectTypeId`, "missing_object_type", "objectTypeId is required");
314
- } else if (!ctx.ontology.getObjectTypeById(ref.objectTypeId)) {
315
- addIssue(ctx, `${refPath}.objectTypeId`, "unknown_object_type", formatUnknownObjectTypeMessage(ref.objectTypeId));
316
- } else {
317
- objectTypeIds.add(ref.objectTypeId);
318
- }
319
- if (!ref.primaryId) {
320
- addIssue(ctx, `${refPath}.primaryId`, "missing_primary_id", "primaryId is required");
321
- }
322
- });
323
- return {
324
- result: { objectTypeIds: [...objectTypeIds] },
325
- query: { kind: "refs", refs: refs.map((ref) => ({ ...ref })) }
326
- };
327
- }
328
- function validateStart(objectTypeId, includeSubtypes, path, ctx) {
329
- if (!objectTypeId) {
330
- addIssue(ctx, path, "missing_object_type", "start.objectTypeId is required");
331
- return { result: { objectTypeIds: [] }, query: { kind: "start", objectTypeId } };
332
- }
333
- if (!ctx.ontology.getObjectTypeById(objectTypeId)) {
334
- addIssue(ctx, path, "unknown_object_type", formatUnknownObjectTypeMessage(objectTypeId));
335
- return { result: { objectTypeIds: [] }, query: { kind: "start", objectTypeId } };
336
- }
337
- const objectTypeIds = includeSubtypes ? withSubtypes([objectTypeId], ctx) : [objectTypeId];
338
- return { result: { objectTypeIds }, query: { kind: "start", objectTypeId, includeSubtypes } };
339
- }
340
- function validatePredicate(predicate, shape, admissionState, path, ctx) {
341
- switch (predicate.op) {
342
- case "and":
343
- case "or":
344
- if (predicate.items.length === 0) {
345
- addIssue(ctx, path, "empty_predicate_group", `Predicate '${predicate.op}' must not be empty`);
346
- }
347
- return {
348
- ...predicate,
349
- items: predicate.items.map((item, index) => validatePredicate(item, shape, admissionState, `${path}.items[${index}]`, ctx))
350
- };
351
- case "not":
352
- return {
353
- ...predicate,
354
- item: validatePredicate(predicate.item, shape, admissionState, `${path}.item`, ctx)
355
- };
356
- case "eq":
357
- case "neq":
358
- case "lt":
359
- case "lte":
360
- case "gt":
361
- case "gte": {
362
- const { scalarKind: _authoredScalarKind, ...authoredPredicate } = predicate;
363
- const scalarKind = resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx);
364
- validatePredicateValue(predicate.propertyId, predicate.value, shape, path, ctx);
365
- admitProperty(ctx, {
366
- state: admissionState,
367
- propertyId: predicate.propertyId,
368
- use: "filter",
369
- path
370
- });
371
- return {
372
- ...authoredPredicate,
373
- value: normalizeObjectQueryValue(predicate.value, scalarKind),
374
- ...scalarKind ? { scalarKind } : {}
375
- };
376
- }
377
- case "in": {
378
- const { scalarKind: _authoredScalarKind, ...authoredPredicate } = predicate;
379
- const scalarKind = resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx);
380
- if (predicate.values.length === 0) {
381
- addIssue(ctx, path, "empty_in_values", "Predicate 'in' must include at least one value");
382
- }
383
- predicate.values.forEach((value, index) => {
384
- validatePredicateValue(predicate.propertyId, value, shape, `${path}.values[${index}]`, ctx);
385
- });
386
- admitProperty(ctx, {
387
- state: admissionState,
388
- propertyId: predicate.propertyId,
389
- use: "filter",
390
- path
391
- });
392
- return {
393
- ...authoredPredicate,
394
- values: predicate.values.map((value) => normalizeObjectQueryValue(value, scalarKind)),
395
- ...scalarKind ? { scalarKind } : {}
396
- };
397
- }
398
- case "exists":
399
- resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx);
400
- admitProperty(ctx, {
401
- state: admissionState,
402
- propertyId: predicate.propertyId,
403
- use: "filter",
404
- path
405
- });
406
- if (typeof predicate.value !== "boolean") {
407
- addIssue(ctx, path, "invalid_exists_value", "Predicate 'exists' value must be boolean");
408
- }
409
- return predicate;
410
- case "contains": {
411
- const { scalarKind: _authoredScalarKind, ...authoredPredicate } = predicate;
412
- const scalarKind = resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx);
413
- validateContainsValue(predicate.propertyId, predicate.value, shape, path, ctx);
414
- admitProperty(ctx, {
415
- state: admissionState,
416
- propertyId: predicate.propertyId,
417
- use: "filter",
418
- path
419
- });
420
- return {
421
- ...authoredPredicate,
422
- value: normalizeObjectQueryValue(predicate.value, scalarKind),
423
- ...scalarKind ? { scalarKind } : {}
424
- };
425
- }
426
- }
427
- }
428
- function resolveAndValidatePredicateProperty(propertyId, op, shape, path, ctx) {
429
- const properties = getPropertiesForResult(propertyId, shape, path, ctx);
430
- if (properties.length === 0)
431
- return;
432
- const schemas = [];
433
- for (const { objectType, property } of properties) {
434
- const schema = resolveSchemaForProperty(property, objectType.id, ctx, path);
435
- if (schema)
436
- schemas.push(schema);
437
- if (isPrimaryExactPredicate(property, op)) {
438
- continue;
439
- }
440
- if (property.query?.searchable !== true || property.query.filterable !== true) {
441
- 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`);
442
- continue;
443
- }
444
- if (!schema)
445
- continue;
446
- if ((op === "lt" || op === "lte" || op === "gt" || op === "gte") && !isSortableSchema(schema)) {
447
- 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`);
448
- }
449
- if ((op === "eq" || op === "neq" || op === "in" || op === "exists") && !isExactSchema(schema)) {
450
- 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`);
451
- }
452
- if (op === "contains" && !isContainsSchema(schema)) {
453
- 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`);
454
- }
455
- }
456
- if (op === "exists")
457
- return;
458
- if (op === "contains")
459
- return resolveArrayItemScalarKind(schemas, ctx);
460
- return resolveCommonQueryScalarKind(schemas, propertyId, path, ctx);
461
- }
462
- function resolveArrayItemScalarKind(schemas, ctx) {
463
- const kinds = new Set;
464
- for (const schema of schemas) {
465
- if (typeof schema === "string" || schema.type !== "array")
466
- return;
467
- const items = resolveValueTypeRefs(schema.items, ctx.valueTypesById);
468
- kinds.add(items ? queryScalarKindForSchema(items) : undefined);
469
- }
470
- return kinds.size === 1 ? [...kinds][0] : undefined;
471
- }
472
- function resolveValueTypeRefs(schema, valueTypesById, seen = new Set) {
473
- if (typeof schema === "string" || schema.type !== "valueTypeRef")
474
- return schema;
475
- if (seen.has(schema.valueTypeId))
476
- return;
477
- seen.add(schema.valueTypeId);
478
- const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema;
479
- return resolved ? resolveValueTypeRefs(resolved, valueTypesById, seen) : undefined;
480
- }
481
- function normalizeObjectQueryValue(value, scalarKind) {
482
- if (scalarKind !== "decimal" || typeof value !== "string")
483
- return value;
484
- try {
485
- return normalizeDecimalValue2(value);
486
- } catch {
487
- return value;
488
- }
489
- }
490
- function resolveCommonQueryScalarKind(schemas, propertyId, path, ctx) {
491
- const scalarKinds = schemas.map(queryScalarKindForSchema);
492
- if (scalarKinds.length === 0 || scalarKinds.some((kind) => kind === undefined)) {
493
- return;
494
- }
495
- const resolvedKinds = new Set(scalarKinds);
496
- if (resolvedKinds.size === 1)
497
- return scalarKinds[0];
498
- addIssue(ctx, path, "incompatible_property_scalar_kinds", `Property '${propertyId}' resolves to incompatible scalar schemas: ${[...resolvedKinds].join(", ")}`);
499
- return;
500
- }
501
- function validatePredicateValue(propertyId, value, shape, path, ctx) {
502
- for (const { objectType, property } of getPropertiesForResult(propertyId, shape, path, ctx, {
503
- reportMissing: false
504
- })) {
505
- try {
506
- validatePropertyValue2(property, value, `${objectType.id}.${property.id}`, ctx.valueTypesById);
507
- } catch (error) {
508
- addIssue(ctx, path, "invalid_predicate_value", error instanceof Error ? error.message : `Invalid value for property '${property.id}' on '${objectType.id}'`);
509
- }
510
- }
511
- }
512
- function validateContainsValue(propertyId, value, shape, path, ctx) {
513
- for (const { objectType, property } of getPropertiesForResult(propertyId, shape, path, ctx, {
514
- reportMissing: false
515
- })) {
516
- const schema = resolveSchemaForProperty(property, objectType.id, ctx, path);
517
- if (!schema)
518
- continue;
519
- if (typeof schema === "string") {
520
- if (isContainsSchema(schema)) {
521
- if (typeof value !== "string") {
522
- addIssue(ctx, path, "invalid_contains_value", `Predicate 'contains' value for '${objectType.id}.${property.id}' must be a string`);
523
- }
524
- }
525
- continue;
526
- }
527
- if (schema.type === "array") {
528
- try {
529
- validateSchemaValue2(schema.items, value, `${objectType.id}.${property.id}[]`, ctx.valueTypesById);
530
- } catch (error) {
531
- addIssue(ctx, path, "invalid_contains_value", error instanceof Error ? error.message : `Invalid contains value for '${objectType.id}.${property.id}'`);
532
- }
533
- continue;
534
- }
535
- if (schema.type === "map" && typeof value !== "string") {
536
- addIssue(ctx, path, "invalid_contains_value", `Predicate 'contains' value for '${objectType.id}.${property.id}' must be a map key string`);
537
- }
538
- }
539
- }
540
- function validateTextQuery(query, fields, shape, admissionState, path, ctx) {
541
- if (query.trim().length === 0) {
542
- addIssue(ctx, path, "empty_text_query", "Text query must not be empty");
543
- }
544
- const fieldsByObjectType = fields ? undefined : {};
545
- for (const objectType of getObjectTypesForResult(shape, ctx)) {
546
- const fieldIds = fields ?? objectType.search?.defaultText;
547
- if (!fieldIds || fieldIds.length === 0) {
548
- addIssue(ctx, path, "missing_text_fields", `Object type '${objectType.id}' must define search.defaultText or the text query must specify fields`);
549
- continue;
550
- }
551
- const admitted = admitTextFields(fieldIds, fields === undefined, {
552
- state: admissionState,
553
- objectTypeId: objectType.id,
554
- path: `${path}.fields`,
555
- ctx
556
- });
557
- if (fieldsByObjectType)
558
- fieldsByObjectType[objectType.id] = uniqueStrings(admitted);
559
- for (const fieldId of fieldIds) {
560
- const property = getProperty(objectType, fieldId);
561
- if (!property) {
562
- addIssue(ctx, path, "unknown_text_field", `Text query references unknown property '${fieldId}' on '${objectType.id}'`);
563
- continue;
564
- }
565
- assertStaticSearchProperty(objectType.id, property, "text query", path, ctx);
566
- assertQueryFlag(objectType.id, property, "text", "text query", path, ctx);
567
- const schema = resolveSchemaForProperty(property, objectType.id, ctx, path);
568
- if (schema && !isTextSchema(schema)) {
569
- addIssue(ctx, path, "text_field_not_string_like", `Text query field '${fieldId}' on '${objectType.id}' must be string-like`);
570
- }
571
- }
572
- }
573
- return fieldsByObjectType ? { fieldsByObjectType } : {};
574
- }
575
- function admitTextFields(fieldIds, defaults, input) {
576
- const admitted = [];
577
- let firstDenial;
578
- for (const fieldId of fieldIds) {
579
- const denial = input.ctx.admission.property({
580
- state: input.state,
581
- propertyId: fieldId,
582
- objectTypeId: input.objectTypeId,
583
- use: "text",
584
- path: input.path
585
- });
586
- if (!denial) {
587
- admitted.push(fieldId);
588
- } else if (!defaults) {
589
- recordAdmissionDenial(input.ctx, denial);
590
- } else {
591
- firstDenial ??= denial;
592
- }
593
- }
594
- if (admitted.length === 0 && firstDenial)
595
- recordAdmissionDenial(input.ctx, firstDenial);
596
- return admitted;
597
- }
598
- function validateVectorProfileQuery(query, shape, state, path, ctx) {
599
- const types = getObjectTypesForResult(shape, ctx);
600
- if (types.length !== 1 || !Number.isSafeInteger(query.k) || query.k < 1 || query.k > MAX_VECTOR_K) {
601
- addIssue(ctx, path, "invalid_vector_profile_query", `Vector search requires one type, one profile and k between 1 and ${MAX_VECTOR_K}`);
602
- return query;
603
- }
604
- const objectType = types[0];
605
- const profile = query.profile === undefined ? undefined : objectType.search?.vectors?.[query.profile];
606
- if (!profile) {
607
- addIssue(ctx, path, "unknown_vector_profile", `Unknown vector profile: ${query.profile}`);
608
- return query;
609
- }
610
- for (const propertyId of profile.source)
611
- admitProperty(ctx, { state, propertyId, objectTypeId: objectType.id, use: "vector", path });
612
- let values = query.vector;
613
- try {
614
- if (typeof values === "string") {
615
- if (!values.trim() || values.length > 8000) {
616
- throw new Error("Vector search text must be nonempty and at most 8000 characters.");
617
- }
618
- } else {
619
- values = normalizeVector2(values, profile.model.definition.dimensions);
620
- }
621
- } catch (error) {
622
- addIssue(ctx, path, "invalid_vector", error instanceof Error ? error.message : "Invalid vector");
623
- }
624
- return {
625
- ...query,
626
- vector: values,
627
- source: [...profile.source],
628
- configuration: vectorConfiguration(profile)
629
- };
630
- }
631
- function validateTraverse(linkId, direction, sourceObjectTypeId, shape, path, ctx) {
632
- if (!linkId) {
633
- addIssue(ctx, path, "missing_link_id", "traverse.linkId is required");
634
- return { objectTypeIds: [] };
635
- }
636
- if (direction === "outgoing") {
637
- if (sourceObjectTypeId !== undefined) {
638
- addIssue(ctx, path, "traverse_source_not_applicable", "traverse.sourceObjectTypeId only applies to incoming traversal");
639
- }
640
- return validateOutgoingTraverse(linkId, shape, path, ctx);
641
- }
642
- return validateIncomingTraverse(linkId, sourceObjectTypeId, shape, path, ctx);
643
- }
644
- function validateOutgoingTraverse(linkId, shape, path, ctx) {
645
- const targetTypeIds = [];
646
- for (const objectType of getObjectTypesForResult(shape, ctx)) {
647
- const link = objectType.links.find((candidate) => candidate.id === linkId);
648
- if (!link) {
649
- addIssue(ctx, path, "unknown_link", `Outgoing traversal references unknown link '${linkId}' on '${objectType.id}'`);
650
- continue;
651
- }
652
- if (link.targetObjectTypeId === "*") {
653
- addIssue(ctx, path, "wildcard_traverse_target", `Outgoing traversal over wildcard link '${objectType.id}.${linkId}' cannot infer a target object type`);
654
- continue;
655
- }
656
- const declaredTargets = Array.isArray(link.targetObjectTypeId) ? link.targetObjectTypeId : [link.targetObjectTypeId];
657
- for (const targetId of declaredTargets) {
658
- if (!ctx.ontology.getObjectTypeById(targetId)) {
659
- addIssue(ctx, path, "unknown_link_target", `Outgoing traversal over '${objectType.id}.${linkId}' targets unknown object type '${targetId}'`);
660
- } else {
661
- targetTypeIds.push(targetId);
662
- }
663
- }
664
- }
665
- const objectTypeIds = uniqueStrings(targetTypeIds);
666
- touchLinkTargets(objectTypeIds, ctx);
667
- return { objectTypeIds };
668
- }
669
- function validateIncomingTraverse(linkId, sourceObjectTypeId, shape, path, ctx) {
670
- let candidateTypes = ctx.ontology.listObjectTypes();
671
- if (sourceObjectTypeId !== undefined) {
672
- const sourceType = ctx.ontology.getObjectTypeById(sourceObjectTypeId);
673
- if (!sourceType) {
674
- addIssue(ctx, path, "unknown_traverse_source", `Incoming traversal references unknown source object type '${sourceObjectTypeId}'`);
675
- return { objectTypeIds: [] };
676
- }
677
- candidateTypes = [sourceType];
678
- }
679
- const sourceTypeIds = [];
680
- for (const sourceType of candidateTypes) {
681
- const link = sourceType.links.find((candidate) => candidate.id === linkId);
682
- if (!link)
683
- continue;
684
- if (link.targetObjectTypeId === "*") {
685
- sourceTypeIds.push(sourceType.id);
686
- continue;
687
- }
688
- const matches = shape.objectTypeIds.some((targetTypeId) => ctx.ontology.isValidLinkTarget(link.targetObjectTypeId, targetTypeId));
689
- if (matches)
690
- sourceTypeIds.push(sourceType.id);
691
- }
692
- if (sourceTypeIds.length === 0) {
693
- addIssue(ctx, path, "incoming_link_not_found", `Incoming traversal found no source object types with link '${linkId}' targeting ${shape.objectTypeIds.join(" | ")}`);
694
- }
695
- return { objectTypeIds: uniqueStrings(sourceTypeIds) };
696
- }
697
- function validateExpansions(expansions, shape, admissionState, path, ctx) {
698
- return expansions.map((expansion, index) => validateExpansion(expansion, shape, admissionState, `${path}[${index}]`, ctx));
699
- }
700
- function validateExpansion(expansion, shape, admissionState, path, ctx) {
701
- if (!expansion.linkId) {
702
- addIssue(ctx, path, "missing_expand_link", "expand.linkId is required");
703
- return expansion;
704
- }
705
- const targetShape = expansion.direction === "incoming" ? resolveIncomingExpansionTargets(expansion.linkId, expansion.sourceObjectTypeId, shape, path, ctx) : resolveOutgoingExpansionTargets(expansion.linkId, expansion.sourceObjectTypeId, shape, path, ctx);
706
- const targetAdmissionState = admitTransition(ctx, ctx.admission.edge({
707
- state: admissionState,
708
- result: targetShape,
709
- linkId: expansion.linkId,
710
- direction: expansion.direction,
711
- sourceObjectTypeId: expansion.sourceObjectTypeId,
712
- use: "expand",
713
- path
714
- }));
715
- for (const targetTypeId of targetShape.objectTypeIds) {
716
- ctx.touchedObjectTypeIds.add(targetTypeId);
717
- }
718
- validateExpansionLimit(expansion.limit, path, ctx);
719
- const orderBy = expansion.orderBy ? validateSortFields(expansion.orderBy, targetShape, targetAdmissionState, "expand.orderBy", `${path}.orderBy`, ctx) : undefined;
720
- const expand = expansion.expand ? validateExpansions(expansion.expand, targetShape, targetAdmissionState, `${path}.expand`, ctx) : undefined;
721
- return { ...expansion, orderBy, expand };
722
- }
723
- function resolveOutgoingExpansionTargets(linkId, sourceObjectTypeId, shape, path, ctx) {
724
- if (sourceObjectTypeId !== undefined) {
725
- addIssue(ctx, path, "expand_source_not_applicable", "expand.sourceObjectTypeId only applies to incoming expansion");
726
- }
727
- const targetTypeIds = [];
728
- let foundOnAnyType = false;
729
- for (const objectType of getObjectTypesForResult(shape, ctx)) {
730
- const link = objectType.links.find((candidate) => candidate.id === linkId);
731
- if (!link)
732
- continue;
733
- foundOnAnyType = true;
734
- if (link.targetObjectTypeId === "*") {
735
- addIssue(ctx, path, "wildcard_expand_target", `Expansion over wildcard link '${objectType.id}.${linkId}' cannot infer a target object type`);
736
- continue;
737
- }
738
- const declaredTargets = Array.isArray(link.targetObjectTypeId) ? link.targetObjectTypeId : [link.targetObjectTypeId];
739
- for (const targetId of declaredTargets) {
740
- if (!ctx.ontology.getObjectTypeById(targetId)) {
741
- addIssue(ctx, path, "unknown_expand_target", `Expansion over '${objectType.id}.${linkId}' targets unknown object type '${targetId}'`);
742
- } else {
743
- targetTypeIds.push(targetId);
744
- }
745
- }
746
- }
747
- if (!foundOnAnyType) {
748
- 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?)`);
749
- }
750
- const objectTypeIds = uniqueStrings(targetTypeIds);
751
- touchLinkTargets(objectTypeIds, ctx);
752
- return { objectTypeIds };
753
- }
754
- function touchLinkTargets(objectTypeIds, ctx) {
755
- for (const objectTypeId of withSubtypes(objectTypeIds, ctx)) {
756
- ctx.touchedObjectTypeIds.add(objectTypeId);
757
- }
758
- }
759
- function resolveIncomingExpansionTargets(linkId, sourceObjectTypeId, shape, path, ctx) {
760
- let candidateTypes = ctx.ontology.listObjectTypes();
761
- if (sourceObjectTypeId !== undefined) {
762
- const sourceType = ctx.ontology.getObjectTypeById(sourceObjectTypeId);
763
- if (!sourceType) {
764
- addIssue(ctx, path, "unknown_expand_source", `Incoming expansion references unknown source object type '${sourceObjectTypeId}'`);
765
- return { objectTypeIds: [] };
766
- }
767
- candidateTypes = [sourceType];
768
- }
769
- const sourceTypeIds = [];
770
- for (const sourceType of candidateTypes) {
771
- const link = sourceType.links.find((candidate) => candidate.id === linkId);
772
- if (!link)
773
- continue;
774
- if (link.targetObjectTypeId === "*") {
775
- sourceTypeIds.push(sourceType.id);
776
- continue;
777
- }
778
- const matches = shape.objectTypeIds.some((targetTypeId) => ctx.ontology.isValidLinkTarget(link.targetObjectTypeId, targetTypeId));
779
- if (matches)
780
- sourceTypeIds.push(sourceType.id);
781
- }
782
- if (sourceTypeIds.length === 0) {
783
- addIssue(ctx, path, "incoming_expand_link_not_found", `Incoming expansion found no source object types with link '${linkId}' targeting ${shape.objectTypeIds.join(" | ")}`);
784
- }
785
- return { objectTypeIds: uniqueStrings(sourceTypeIds) };
786
- }
787
- function validateExpansionLimit(limit, path, ctx) {
788
- if (limit === undefined)
789
- return;
790
- if (!Number.isInteger(limit) || limit < 0) {
791
- addIssue(ctx, `${path}.limit`, "invalid_expand_limit", "expand.limit must be a non-negative integer");
792
- }
793
- }
794
- function validateSet(inputs, op, path, ctx) {
795
- if (inputs.length === 0) {
796
- addIssue(ctx, path, "empty_set", `Set operation '${op}' must include at least one input`);
797
- return {
798
- result: { objectTypeIds: [] },
799
- query: { kind: "set", op, inputs },
800
- admissionState: ctx.admission.empty()
801
- };
802
- }
803
- const results = inputs.map((input, index) => validateQueryNode(input, `${path}.inputs[${index}]`, ctx));
804
- const first = results[0]?.result ?? { objectTypeIds: [] };
805
- const expected = keyForTypeIds(first.objectTypeIds);
806
- results.forEach((result, index) => {
807
- if (keyForTypeIds(result.result.objectTypeIds) !== expected) {
808
- addIssue(ctx, `${path}.inputs[${index}]`, "incompatible_set_input", `Set operation '${op}' inputs must produce the same object type set`);
809
- }
810
- });
811
- return {
812
- result: first,
813
- query: { kind: "set", op, inputs: results.map((result) => result.query) },
814
- admissionState: ctx.admission.set({
815
- op,
816
- states: results.map((result) => result.admissionState),
817
- path
818
- })
819
- };
820
- }
821
- function validateSortFields(fields, shape, admissionState, use, path, ctx) {
822
- if (fields.length === 0) {
823
- addIssue(ctx, path, "empty_sort", "Sort must include at least one field");
824
- return [];
825
- }
826
- const seen = new Set;
827
- return fields.map((field, index) => {
828
- if (field.direction && field.direction !== "asc" && field.direction !== "desc") {
829
- addIssue(ctx, `${path}.fields[${index}]`, "invalid_sort_direction", "Sort direction must be asc or desc");
830
- }
831
- const key = field.kind === "property" ? `property:${field.propertyId}` : "relevance";
832
- if (seen.has(key)) {
833
- addIssue(ctx, `${path}.fields[${index}]`, "duplicate_sort_field", `Duplicate sort field '${key}'`);
834
- }
835
- seen.add(key);
836
- if (field.kind === "relevance")
837
- return field;
838
- admitProperty(ctx, {
839
- state: admissionState,
840
- propertyId: field.propertyId,
841
- use,
842
- path: `${path}.fields[${index}]`
843
- });
844
- const { scalarKind: _authoredScalarKind, ...authoredField } = field;
845
- const schemas = [];
846
- for (const { objectType, property } of getPropertiesForResult(field.propertyId, shape, `${path}.fields[${index}]`, ctx)) {
847
- if (property.query?.searchable !== true || property.query.sortable !== true) {
848
- 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`);
849
- continue;
850
- }
851
- const schema = resolveSchemaForProperty(property, objectType.id, ctx, `${path}.fields[${index}]`);
852
- if (schema)
853
- schemas.push(schema);
854
- if (schema && !isSortableSchema(schema)) {
855
- addIssue(ctx, `${path}.fields[${index}]`, "sort_field_not_orderable", `Sort field '${property.id}' on '${objectType.id}' is not orderable`);
856
- }
857
- }
858
- const scalarKind = resolveCommonQueryScalarKind(schemas, field.propertyId, `${path}.fields[${index}]`, ctx);
859
- return { ...authoredField, ...scalarKind ? { scalarKind } : {} };
860
- });
861
- }
862
- function validateLimit(limit, path, ctx) {
863
- if (!Number.isInteger(limit) || limit < 0) {
864
- addIssue(ctx, path, "invalid_limit", "limit must be a non-negative integer");
865
- } else if (limit > ctx.maxLimit) {
866
- addIssue(ctx, path, "limit_too_large", `limit must be <= ${ctx.maxLimit}`);
867
- }
868
- }
869
- function validatePage(pageSize, pageToken, path, ctx) {
870
- if (!Number.isInteger(pageSize) || pageSize <= 0) {
871
- addIssue(ctx, path, "invalid_page_size", "pageSize must be a positive integer");
872
- } else if (pageSize > ctx.maxPageSize) {
873
- addIssue(ctx, path, "page_size_too_large", `pageSize must be <= ${ctx.maxPageSize}`);
874
- }
875
- if (pageToken !== undefined && pageToken.length === 0) {
876
- addIssue(ctx, path, "empty_page_token", "pageToken must not be empty when provided");
877
- }
878
- }
879
- function validateProjection(properties, shape, admissionState, path, ctx) {
880
- if (!properties)
881
- return;
882
- if (properties.length === 0) {
883
- addIssue(ctx, path, "empty_projection", "project.properties must not be empty when provided");
884
- }
885
- const seen = new Set;
886
- properties.forEach((propertyId, index) => {
887
- admitProperty(ctx, {
888
- state: admissionState,
889
- propertyId,
890
- use: "project",
891
- path: `${path}.properties[${index}]`
892
- });
893
- if (seen.has(propertyId)) {
894
- addIssue(ctx, `${path}.properties[${index}]`, "duplicate_projection_property", `Duplicate projected property '${propertyId}'`);
895
- }
896
- seen.add(propertyId);
897
- getPropertiesForResult(propertyId, shape, `${path}.properties[${index}]`, ctx);
898
- });
899
- }
900
- function getObjectTypesForResult(shape, ctx) {
901
- const objectTypes = [];
902
- for (const objectTypeId of shape.objectTypeIds) {
903
- const objectType = ctx.ontology.getObjectTypeById(objectTypeId);
904
- if (objectType)
905
- objectTypes.push(objectType);
906
- }
907
- return objectTypes;
908
- }
909
- function getPropertiesForResult(propertyId, shape, path, ctx, options = {}) {
910
- const results = [];
911
- for (const objectType of getObjectTypesForResult(shape, ctx)) {
912
- const property = getProperty(objectType, propertyId);
913
- if (!property) {
914
- if (options.reportMissing === false) {
915
- continue;
916
- }
917
- addIssue(ctx, path, "unknown_property", `Property '${propertyId}' does not exist on object type '${objectType.id}'`);
918
- continue;
919
- }
920
- results.push({ objectType, property });
921
- }
922
- return results;
923
- }
924
- function getProperty(objectType, propertyId) {
925
- return objectType.properties.find((property) => property.id === propertyId);
926
- }
927
- function assertStaticSearchProperty(objectTypeId, property, context, path, ctx) {
928
- if (property.mode === "telemetry") {
929
- 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.`);
930
- }
931
- }
932
- function assertQueryFlag(objectTypeId, property, flag, context, path, ctx) {
933
- if (property.query?.searchable === true && property.query[flag] === true)
934
- return;
935
- addIssue(ctx, path, "query_field_not_enabled", `${context} field '${property.id}' on '${objectTypeId}' must set query.searchable: true and query.${flag}: true`);
936
- }
937
- function resolveSchemaForProperty(property, objectTypeId, ctx, path) {
938
- try {
939
- return resolveSchema(property.schema, ctx.valueTypesById);
940
- } catch (error) {
941
- addIssue(ctx, path, "unresolved_property_schema", error instanceof Error ? error.message : `Could not resolve schema for '${objectTypeId}.${property.id}'`);
942
- return null;
943
- }
944
- }
945
- function resolveSchema(schema, valueTypesById, seenValueTypeIds = new Set) {
946
- if (typeof schema === "string")
947
- return schema;
948
- if (schema.type !== "valueTypeRef")
949
- return schema;
950
- if (seenValueTypeIds.has(schema.valueTypeId)) {
951
- throw new Error(`Circular valueTypeRef '${schema.valueTypeId}'`);
952
- }
953
- const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema;
954
- if (!resolved) {
955
- throw new Error(`Unknown valueTypeRef '${schema.valueTypeId}'`);
956
- }
957
- seenValueTypeIds.add(schema.valueTypeId);
958
- return resolveSchema(resolved, valueTypesById, seenValueTypeIds);
959
- }
960
- function isPrimaryExactPredicate(property, op) {
961
- return property.primary === true && (op === "eq" || op === "in");
962
- }
963
- function keyForTypeIds(typeIds) {
964
- return uniqueStrings(typeIds).sort().join("\x00");
965
- }
966
- function uniqueStrings(values) {
967
- return [...new Set(values)];
968
- }
969
- function withSubtypes(objectTypeIds, ctx) {
970
- return uniqueStrings(objectTypeIds.flatMap((id) => [id, ...ctx.ontology.listSubTypes(id)]));
971
- }
972
- function admitTransition(ctx, transition) {
973
- if (transition.denial)
974
- recordAdmissionDenial(ctx, transition.denial);
975
- return transition.state;
976
- }
977
- function admitProperty(ctx, input) {
978
- const denial = ctx.admission.property(input);
979
- if (denial)
980
- recordAdmissionDenial(ctx, denial);
981
- }
982
- function recordAdmissionDenial(ctx, denial) {
983
- if (ctx.admissionDenials.length === 0)
984
- ctx.admissionDenials.push(denial);
985
- }
986
- function addIssue(ctx, path, code, message) {
987
- ctx.issues.push({ path, code, message });
988
- }
989
-
990
39
  // src/objects/vectors/resolve-query.ts
991
40
  var QUERY_EMBEDDING_TIMEOUT_MS = 30000;
992
41
  async function resolveVectorSearchText(query, ontology, models, signal) {
@@ -1117,12 +166,12 @@ function collectOperationProviderIssues(capabilities, options, issues) {
1117
166
  const enabled = options.operation === "queryObjects" ? capabilities.queryObjects === true : options.operation === "countObjects" ? capabilities.countObjects === true : options.operation === "existsObjects" ? capabilities.existsObjects === true : capabilities.facetObjects === true;
1118
167
  if (!enabled) {
1119
168
  const code = `${operationIssuePrefix(options.operation)}_not_enabled`;
1120
- addIssue2(issues, "$", code, `Object storage capabilities do not enable ${options.operation} pushdown`);
169
+ addIssue(issues, "$", code, `Object storage capabilities do not enable ${options.operation} pushdown`);
1121
170
  }
1122
171
  if (options.hasImplementation)
1123
172
  return;
1124
173
  const code = `${operationIssuePrefix(options.operation)}_not_implemented`;
1125
- addIssue2(issues, "$", code, `Object storage does not implement ${options.operation}`);
174
+ addIssue(issues, "$", code, `Object storage does not implement ${options.operation}`);
1126
175
  }
1127
176
  function hasProviderImplementation(operation, options) {
1128
177
  switch (operation) {
@@ -1150,12 +199,12 @@ function operationIssuePrefix(operation) {
1150
199
  }
1151
200
  function collectNodeProviderIssues(query, path, capabilities, issues) {
1152
201
  if (capabilities.nodes?.[query.kind] !== true) {
1153
- addIssue2(issues, path, "query_node_not_supported", `Provider does not support query node '${query.kind}'`);
202
+ addIssue(issues, path, "query_node_not_supported", `Provider does not support query node '${query.kind}'`);
1154
203
  }
1155
204
  switch (query.kind) {
1156
205
  case "start":
1157
206
  if (query.includeSubtypes === true && capabilities.features?.includeSubtypes !== true) {
1158
- addIssue2(issues, path, "include_subtypes_not_supported", "Provider does not support start.includeSubtypes expansion");
207
+ addIssue(issues, path, "include_subtypes_not_supported", "Provider does not support start.includeSubtypes expansion");
1159
208
  }
1160
209
  return;
1161
210
  case "refs":
@@ -1180,13 +229,13 @@ function collectNodeProviderIssues(query, path, capabilities, issues) {
1180
229
  return;
1181
230
  case "traverse":
1182
231
  if (capabilities.traversalDirections?.[query.direction] !== true) {
1183
- addIssue2(issues, path, "traversal_direction_not_supported", `Provider does not support ${query.direction} traversal`);
232
+ addIssue(issues, path, "traversal_direction_not_supported", `Provider does not support ${query.direction} traversal`);
1184
233
  }
1185
234
  collectNodeProviderIssues(query.input, `${path}.input`, capabilities, issues);
1186
235
  return;
1187
236
  case "set":
1188
237
  if (capabilities.setOps?.[query.op] !== true) {
1189
- addIssue2(issues, path, "set_operation_not_supported", `Provider does not support set operation '${query.op}'`);
238
+ addIssue(issues, path, "set_operation_not_supported", `Provider does not support set operation '${query.op}'`);
1190
239
  }
1191
240
  query.inputs.forEach((input, index) => {
1192
241
  collectNodeProviderIssues(input, `${path}.inputs[${index}]`, capabilities, issues);
@@ -1208,7 +257,7 @@ function collectNodeProviderIssues(query, path, capabilities, issues) {
1208
257
  }
1209
258
  function collectExpansionProviderIssues(expansion, path, capabilities, issues) {
1210
259
  if (expansion.cardinality === undefined) {
1211
- addIssue2(issues, path, "expand_cardinality_unresolved", `Provider cannot push down expansion '${expansion.linkId}' without a resolved cardinality`);
260
+ addIssue(issues, path, "expand_cardinality_unresolved", `Provider cannot push down expansion '${expansion.linkId}' without a resolved cardinality`);
1212
261
  }
1213
262
  expansion.orderBy?.forEach((field, index) => {
1214
263
  collectSortProviderIssues(field, `${path}.orderBy[${index}]`, capabilities, issues);
@@ -1220,10 +269,10 @@ function collectExpansionProviderIssues(expansion, path, capabilities, issues) {
1220
269
  function collectPredicateProviderIssues(predicate, path, capabilities, issues) {
1221
270
  const scalarOperation = predicateScalarOperation(predicate);
1222
271
  if ("scalarKind" in predicate && predicate.scalarKind !== undefined && scalarOperation !== undefined && capabilities.scalarOperations?.[predicate.scalarKind]?.[scalarOperation] !== true) {
1223
- addIssue2(issues, path, "scalar_operation_not_supported", `Provider does not support ${scalarOperation} for '${predicate.scalarKind}' values`);
272
+ addIssue(issues, path, "scalar_operation_not_supported", `Provider does not support ${scalarOperation} for '${predicate.scalarKind}' values`);
1224
273
  }
1225
274
  if (capabilities.predicateOps?.[predicate.op] !== true) {
1226
- addIssue2(issues, path, "predicate_operation_not_supported", `Provider does not support predicate operation '${predicate.op}'`);
275
+ addIssue(issues, path, "predicate_operation_not_supported", `Provider does not support predicate operation '${predicate.op}'`);
1227
276
  }
1228
277
  switch (predicate.op) {
1229
278
  case "and":
@@ -1257,22 +306,22 @@ function predicateScalarOperation(predicate) {
1257
306
  }
1258
307
  function collectSortProviderIssues(field, path, capabilities, issues) {
1259
308
  if (field.kind === "property" && field.scalarKind !== undefined && capabilities.scalarOperations?.[field.scalarKind]?.ordering !== true) {
1260
- addIssue2(issues, path, "scalar_operation_not_supported", `Provider does not support ordering for '${field.scalarKind}' values`);
309
+ addIssue(issues, path, "scalar_operation_not_supported", `Provider does not support ordering for '${field.scalarKind}' values`);
1261
310
  }
1262
311
  if (capabilities.sortKinds?.[field.kind] === true)
1263
312
  return;
1264
- addIssue2(issues, path, "sort_kind_not_supported", `Provider does not support sort kind '${field.kind}'`);
313
+ addIssue(issues, path, "sort_kind_not_supported", `Provider does not support sort kind '${field.kind}'`);
1265
314
  }
1266
315
  function collectProviderMaxLimitIssues(limit, path, capabilities, issues) {
1267
316
  const maxLimit = capabilities.limits?.maxLimit;
1268
317
  if (maxLimit === undefined)
1269
318
  return;
1270
319
  if (!Number.isInteger(maxLimit) || maxLimit < 0) {
1271
- addIssue2(issues, path, "invalid_provider_limit_capability", "Provider limit capability maxLimit must be a non-negative integer");
320
+ addIssue(issues, path, "invalid_provider_limit_capability", "Provider limit capability maxLimit must be a non-negative integer");
1272
321
  return;
1273
322
  }
1274
323
  if (limit > maxLimit) {
1275
- addIssue2(issues, path, "provider_limit_too_large", `Provider supports limit up to ${maxLimit}`);
324
+ addIssue(issues, path, "provider_limit_too_large", `Provider supports limit up to ${maxLimit}`);
1276
325
  }
1277
326
  }
1278
327
  function collectProviderMaxPageSizeIssues(pageSize, path, capabilities, issues) {
@@ -1280,32 +329,32 @@ function collectProviderMaxPageSizeIssues(pageSize, path, capabilities, issues)
1280
329
  if (maxPageSize === undefined)
1281
330
  return;
1282
331
  if (!Number.isInteger(maxPageSize) || maxPageSize <= 0) {
1283
- addIssue2(issues, path, "invalid_provider_page_size_capability", "Provider limit capability maxPageSize must be a positive integer");
332
+ addIssue(issues, path, "invalid_provider_page_size_capability", "Provider limit capability maxPageSize must be a positive integer");
1284
333
  return;
1285
334
  }
1286
335
  if (pageSize > maxPageSize) {
1287
- addIssue2(issues, path, "provider_page_size_too_large", `Provider supports pageSize up to ${maxPageSize}`);
336
+ addIssue(issues, path, "provider_page_size_too_large", `Provider supports pageSize up to ${maxPageSize}`);
1288
337
  }
1289
338
  }
1290
339
  function collectFallbackIssues(query, options) {
1291
340
  const issues = [];
1292
341
  if (options.allowFallback === false) {
1293
- addIssue2(issues, "$", "fallback_disabled", "Object query fallback is disabled");
342
+ addIssue(issues, "$", "fallback_disabled", "Object query fallback is disabled");
1294
343
  return issues;
1295
344
  }
1296
345
  const maxFallbackRows = options.maxFallbackRows ?? DEFAULT_MAX_FALLBACK_ROWS;
1297
346
  if (!Number.isInteger(maxFallbackRows) || maxFallbackRows <= 0) {
1298
- addIssue2(issues, "$", "invalid_fallback_bound", "maxFallbackRows must be a positive integer");
347
+ addIssue(issues, "$", "invalid_fallback_bound", "maxFallbackRows must be a positive integer");
1299
348
  }
1300
349
  if (options.requiresExplicitFallbackBound !== false && !hasExplicitResultBound(query)) {
1301
- addIssue2(issues, "$", "fallback_requires_bound", "Fallback requires an explicit limit or page node");
350
+ addIssue(issues, "$", "fallback_requires_bound", "Fallback requires an explicit limit or page node");
1302
351
  }
1303
352
  collectFallbackNodeIssues(query, "$", issues);
1304
353
  return issues;
1305
354
  }
1306
355
  function collectFallbackNodeIssues(query, path, issues) {
1307
356
  if (!fallbackNodeKinds.has(query.kind)) {
1308
- addIssue2(issues, path, "fallback_node_not_supported", `Fallback does not support query node '${query.kind}'`);
357
+ addIssue(issues, path, "fallback_node_not_supported", `Fallback does not support query node '${query.kind}'`);
1309
358
  }
1310
359
  switch (query.kind) {
1311
360
  case "start":
@@ -1321,7 +370,7 @@ function collectFallbackNodeIssues(query, path, issues) {
1321
370
  case "sort":
1322
371
  query.fields.forEach((field, index) => {
1323
372
  if (field.kind === "relevance") {
1324
- addIssue2(issues, `${path}.fields[${index}]`, "fallback_sort_kind_not_supported", "Fallback does not support relevance sorting");
373
+ addIssue(issues, `${path}.fields[${index}]`, "fallback_sort_kind_not_supported", "Fallback does not support relevance sorting");
1325
374
  }
1326
375
  });
1327
376
  collectFallbackNodeIssues(query.input, `${path}.input`, issues);
@@ -1352,7 +401,7 @@ function hasExplicitResultBound(query) {
1352
401
  return hasExplicitResultBound(query.input);
1353
402
  }
1354
403
  }
1355
- function addIssue2(issues, path, code, message) {
404
+ function addIssue(issues, path, code, message) {
1356
405
  issues.push({ path, code, message });
1357
406
  }
1358
407
 
@@ -1448,6 +497,46 @@ function shapeRerankedRows(query, rows) {
1448
497
  throw new ObjectQueryExecutionError2("invalid_rerank_composition", "Only limit and project may follow reranking.");
1449
498
  }
1450
499
 
500
+ // src/objects/query/user-expansions.ts
501
+ function userExpansionPlan(query) {
502
+ if (query.kind !== "expand")
503
+ return;
504
+ return planOf(query.users, query.expansions);
505
+ }
506
+ function planOf(users, expansions) {
507
+ const links = expansions.flatMap((expansion) => {
508
+ const plan = planOf(expansion.users, expansion.expand ?? []);
509
+ return plan ? [{ linkId: expansion.linkId, plan }] : [];
510
+ });
511
+ if ((users === undefined || users.length === 0) && links.length === 0)
512
+ return;
513
+ return { users: users ?? [], links };
514
+ }
515
+ function withoutUserExpansions(query) {
516
+ switch (query.kind) {
517
+ case "start":
518
+ case "refs":
519
+ return query;
520
+ case "set":
521
+ return { ...query, inputs: query.inputs.map(withoutUserExpansions) };
522
+ case "expand": {
523
+ const input = withoutUserExpansions(query.input);
524
+ if (query.expansions.length === 0)
525
+ return input;
526
+ const { users: _users, ...expand } = query;
527
+ return { ...expand, input, expansions: query.expansions.map(withoutExpansionUsers) };
528
+ }
529
+ default:
530
+ return { ...query, input: withoutUserExpansions(query.input) };
531
+ }
532
+ }
533
+ function withoutExpansionUsers(expansion) {
534
+ const { users: _users, ...rest } = expansion;
535
+ if (!rest.expand)
536
+ return rest;
537
+ return { ...rest, expand: rest.expand.map(withoutExpansionUsers) };
538
+ }
539
+
1451
540
  // src/objects/query/executor.ts
1452
541
  var DEFAULT_MAX_FALLBACK_ROWS2 = 1000;
1453
542
  var DEFAULT_MAX_FACET_LIMIT = 1000;
@@ -1683,11 +772,15 @@ function validateExecutableQuery(input, options) {
1683
772
  const normalized = normalizeObjectQuery2(input.query);
1684
773
  const validated = validateObjectQuery2(normalized, validationOptions);
1685
774
  assertQueryViewable(input.projectId, validated, options);
1686
- if (!options.admission)
1687
- return { ...validated, admissionState: {} };
1688
- return validateObjectQueryWithAdmission(normalized, validationOptions, options.admission);
775
+ const admitted = options.admission ? validateObjectQueryWithAdmission(normalized, validationOptions, options.admission) : { ...validated, admissionState: {} };
776
+ const executable = withoutUserExpansions(admitted.query);
777
+ return { ...admitted, query: bindCurrentUser(executable, options.requestingUser) };
1689
778
  }
1690
779
  function assertQueryViewable(projectId, validated, authorization) {
780
+ if (authorization.readableObjectTypes) {
781
+ authorization.readableObjectTypes.assert(validated.touchedObjectTypeIds);
782
+ return;
783
+ }
1691
784
  if (!authorization.runtimeAuthorization && !authorization.authorization)
1692
785
  return;
1693
786
  assertAuthorized2({ projectId, ...authorization }, {
@@ -2098,48 +1191,6 @@ function completeFallbackEvaluation(entries) {
2098
1191
  hasMore: false
2099
1192
  };
2100
1193
  }
2101
- function matchesPredicate(row, predicate) {
2102
- switch (predicate.op) {
2103
- case "and":
2104
- return predicate.items.every((item) => matchesPredicate(row, item));
2105
- case "or":
2106
- return predicate.items.some((item) => matchesPredicate(row, item));
2107
- case "not":
2108
- return !matchesPredicate(row, predicate.item);
2109
- case "eq":
2110
- return queryScalarValuesEqual(row.properties[predicate.propertyId], predicate.value, predicate.scalarKind);
2111
- case "neq":
2112
- return !queryScalarValuesEqual(row.properties[predicate.propertyId], predicate.value, predicate.scalarKind);
2113
- case "lt":
2114
- return compareQueryScalarValues(row.properties[predicate.propertyId], predicate.value, predicate.scalarKind) < 0;
2115
- case "lte":
2116
- return compareQueryScalarValues(row.properties[predicate.propertyId], predicate.value, predicate.scalarKind) <= 0;
2117
- case "gt":
2118
- return compareQueryScalarValues(row.properties[predicate.propertyId], predicate.value, predicate.scalarKind) > 0;
2119
- case "gte":
2120
- return compareQueryScalarValues(row.properties[predicate.propertyId], predicate.value, predicate.scalarKind) >= 0;
2121
- case "in":
2122
- return predicate.values.some((value) => queryScalarValuesEqual(row.properties[predicate.propertyId], value, predicate.scalarKind));
2123
- case "exists": {
2124
- const exists = Object.hasOwn(row.properties, predicate.propertyId) && row.properties[predicate.propertyId] !== undefined;
2125
- return predicate.value ? exists : !exists;
2126
- }
2127
- case "contains":
2128
- return containsValue(row.properties[predicate.propertyId], predicate.value, predicate.scalarKind);
2129
- }
2130
- }
2131
- function containsValue(actual, expected, itemScalarKind) {
2132
- if (typeof actual === "string" && typeof expected === "string") {
2133
- return actual.includes(expected);
2134
- }
2135
- if (Array.isArray(actual)) {
2136
- return actual.some((item) => queryScalarValuesEqual(item, expected, itemScalarKind));
2137
- }
2138
- if (isPlainObject(actual) && typeof expected === "string") {
2139
- return Object.hasOwn(actual, expected);
2140
- }
2141
- return false;
2142
- }
2143
1194
  function sortEntries(entries, fields) {
2144
1195
  return [...entries].sort((left, right) => {
2145
1196
  for (const field of fields) {
@@ -2296,9 +1347,6 @@ function decodePageOffset(token) {
2296
1347
  }
2297
1348
  return offset;
2298
1349
  }
2299
- function isPlainObject(value) {
2300
- return typeof value === "object" && value !== null && !Array.isArray(value);
2301
- }
2302
1350
  // src/objects/query/explain.ts
2303
1351
  function explainObjectQuery2(query, options = {}) {
2304
1352
  const normalizedQuery = options.normalize === false ? query : normalizeObjectQuery2(query);
@@ -2443,16 +1491,25 @@ function buildExplainNode(query, path) {
2443
1491
  return {
2444
1492
  path,
2445
1493
  kind: query.kind,
2446
- summary: `expand ${query.expansions.map(summarizeExpansion).join(", ")}`,
2447
- details: { expansions: query.expansions },
1494
+ summary: `expand ${summarizeExpanded(query.expansions, query.users).join(", ")}`,
1495
+ details: {
1496
+ expansions: query.expansions,
1497
+ ...query.users === undefined ? {} : { users: query.users }
1498
+ },
2448
1499
  children: [buildExplainNode(query.input, `${path}.input`)]
2449
1500
  };
2450
1501
  }
2451
1502
  }
1503
+ function summarizeExpanded(expansions, users) {
1504
+ return [
1505
+ ...expansions.map(summarizeExpansion),
1506
+ ...(users ?? []).map((propertyId) => `@${propertyId}`)
1507
+ ];
1508
+ }
2452
1509
  function summarizeExpansion(expansion) {
2453
1510
  const head = expansion.direction === "incoming" ? `<-${expansion.linkId}` : expansion.linkId;
2454
- const nested = expansion.expand && expansion.expand.length > 0 ? `(${expansion.expand.map(summarizeExpansion).join(", ")})` : "";
2455
- return `${head}${nested}`;
1511
+ const nested = summarizeExpanded(expansion.expand ?? [], expansion.users);
1512
+ return nested.length > 0 ? `${head}(${nested.join(", ")})` : head;
2456
1513
  }
2457
1514
  function summarizePredicate(predicate) {
2458
1515
  switch (predicate.op) {
@@ -2467,6 +1524,8 @@ function summarizePredicate(predicate) {
2467
1524
  return `${predicate.propertyId} exists=${predicate.value}`;
2468
1525
  case "contains":
2469
1526
  return `${predicate.propertyId} contains`;
1527
+ case "constant":
1528
+ return String(predicate.value);
2470
1529
  default:
2471
1530
  return `${predicate.propertyId} ${predicate.op}`;
2472
1531
  }
@@ -2607,6 +1666,10 @@ function assertLinkSelectorShape(query, path = "$.query", root = true) {
2607
1666
  }
2608
1667
  }
2609
1668
  function visibleEndpointTypeIds(options) {
1669
+ const readable = options.readableObjectTypes;
1670
+ if (readable) {
1671
+ return options.ontology.listObjectTypes().map((objectType) => objectType.id).filter((objectTypeId) => readable.has(objectTypeId));
1672
+ }
2610
1673
  if (!options.authorization)
2611
1674
  return;
2612
1675
  return options.ontology.listObjectTypes().filter((objectType) => isAllowed2(options.authorization, { kind: "object.view", objectTypeId: objectType.id })).map((objectType) => objectType.id);
@@ -2633,7 +1696,7 @@ function decodeLinkPageToken(token, expectedScope) {
2633
1696
  if (!token.startsWith(LINK_PAGE_TOKEN_PREFIX))
2634
1697
  throw new Error("invalid prefix");
2635
1698
  const value = JSON.parse(Buffer.from(token.slice(LINK_PAGE_TOKEN_PREFIX.length), "base64url").toString("utf8"));
2636
- if (!isPlainObject2(value) || value.version !== 1 || typeof value.scope !== "string" || !isObjectLinkCursor(value.cursor)) {
1699
+ if (!isPlainObject(value) || value.version !== 1 || typeof value.scope !== "string" || !isObjectLinkCursor(value.cursor)) {
2637
1700
  throw new Error("invalid cursor");
2638
1701
  }
2639
1702
  if (value.scope !== expectedScope) {
@@ -2647,7 +1710,7 @@ function decodeLinkPageToken(token, expectedScope) {
2647
1710
  function isObjectLinkCursor(value) {
2648
1711
  return Array.isArray(value) && value.length === 5 && value.every((part) => typeof part === "string");
2649
1712
  }
2650
- function isPlainObject2(value) {
1713
+ function isPlainObject(value) {
2651
1714
  return typeof value === "object" && value !== null && !Array.isArray(value);
2652
1715
  }
2653
1716
  async function hydrateLinkQueryObjects(projectId, selected, links, storage) {
@@ -2681,6 +1744,6 @@ async function hydrateLinkQueryObjects(projectId, selected, links, storage) {
2681
1744
  return row ? [row] : [];
2682
1745
  });
2683
1746
  }
2684
- export { composeObjectQueryAdmissions, validateObjectQuery2, validateObjectQueryWithAdmission, collectObjectQueryValidationIssues2, resolveObjectQueryResultShape2, planObjectQuery2, executeObjectQuery2, countObjects2, existsObjects2, facetObjects2, validateObjectFacetRequests, explainObjectQuery2, preflightObjectQueryLinks, executeObjectQueryLinks2 };
1747
+ export { planObjectQuery2, userExpansionPlan, executeObjectQuery2, countObjects2, existsObjects2, facetObjects2, validateObjectFacetRequests, explainObjectQuery2, preflightObjectQueryLinks, executeObjectQueryLinks2 };
2685
1748
 
2686
- //# debugId=721D50E45512FA2D64756E2164756E21
1749
+ //# debugId=716EC028C11AE10064756E2164756E21