@sixb/core 0.1.7 → 0.1.8

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 (612) hide show
  1. package/dist/actions/delegated-admission.d.ts +24 -0
  2. package/dist/actions/delegated-admission.d.ts.map +1 -0
  3. package/dist/actions/descriptor.d.ts +29 -0
  4. package/dist/actions/descriptor.d.ts.map +1 -0
  5. package/dist/actions/execution.d.ts +5 -5
  6. package/dist/actions/execution.d.ts.map +1 -1
  7. package/dist/actions/index.js +36 -30
  8. package/dist/actions/index.js.map +1 -1
  9. package/dist/actions/request.d.ts.map +1 -1
  10. package/dist/actions/run-authorization.d.ts +20 -0
  11. package/dist/actions/run-authorization.d.ts.map +1 -0
  12. package/dist/actions/run-dispatch.d.ts +3 -1
  13. package/dist/actions/run-dispatch.d.ts.map +1 -1
  14. package/dist/actions/worker.js +3 -3
  15. package/dist/actions/worker.js.map +1 -1
  16. package/dist/agents/adapters.d.ts +5 -122
  17. package/dist/agents/adapters.d.ts.map +1 -1
  18. package/dist/agents/authority.d.ts +1 -1
  19. package/dist/agents/authority.d.ts.map +1 -1
  20. package/dist/agents/context-resolution.d.ts.map +1 -1
  21. package/dist/agents/context.js +1 -1
  22. package/dist/agents/errors.d.ts +0 -9
  23. package/dist/agents/errors.d.ts.map +1 -1
  24. package/dist/agents/execution.d.ts.map +1 -1
  25. package/dist/agents/identity.d.ts +3 -0
  26. package/dist/agents/identity.d.ts.map +1 -0
  27. package/dist/agents/index.d.ts +3 -3
  28. package/dist/agents/index.d.ts.map +1 -1
  29. package/dist/agents/index.js +43 -43
  30. package/dist/agents/index.js.map +1 -1
  31. package/dist/agents/message.d.ts +4 -5
  32. package/dist/agents/message.d.ts.map +1 -1
  33. package/dist/agents/model-loop.d.ts +2 -0
  34. package/dist/agents/model-loop.d.ts.map +1 -1
  35. package/dist/agents/request.d.ts.map +1 -1
  36. package/dist/agents/tool-definition.d.ts +0 -1
  37. package/dist/agents/tool-definition.d.ts.map +1 -1
  38. package/dist/agents/validation.d.ts +0 -4
  39. package/dist/agents/validation.d.ts.map +1 -1
  40. package/dist/ai-usage/execution.d.ts.map +1 -1
  41. package/dist/auth/index.js +8 -5
  42. package/dist/auth/index.js.map +1 -1
  43. package/dist/authorization/decision.d.ts +10 -2
  44. package/dist/authorization/decision.d.ts.map +1 -1
  45. package/dist/authorization/grant-kinds.d.ts +2 -1
  46. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  47. package/dist/authorization/index.d.ts +1 -1
  48. package/dist/authorization/index.d.ts.map +1 -1
  49. package/dist/authorization/index.js +7 -4
  50. package/dist/authorization/index.js.map +1 -1
  51. package/dist/bootstrap/discovery.d.ts +7 -1
  52. package/dist/bootstrap/discovery.d.ts.map +1 -1
  53. package/dist/bootstrap/index.js +46 -39
  54. package/dist/bootstrap/index.js.map +1 -1
  55. package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
  56. package/dist/chunk-19jp6g9d.js +131 -0
  57. package/dist/chunk-19jp6g9d.js.map +11 -0
  58. package/dist/{chunk-x0qhkqje.js → chunk-2dw777qw.js} +50 -5
  59. package/dist/{chunk-x0qhkqje.js.map → chunk-2dw777qw.js.map} +4 -3
  60. package/dist/chunk-359jm1jw.js +147 -0
  61. package/dist/chunk-359jm1jw.js.map +10 -0
  62. package/dist/{chunk-2b5qtban.js → chunk-3xep5cjx.js} +56 -21
  63. package/dist/chunk-3xep5cjx.js.map +15 -0
  64. package/dist/{chunk-qjycjdj6.js → chunk-3z1qec12.js} +6 -8
  65. package/dist/{chunk-qjycjdj6.js.map → chunk-3z1qec12.js.map} +2 -2
  66. package/dist/{chunk-5jcdmjam.js → chunk-4jjp5k14.js} +1 -1
  67. package/dist/{chunk-n2arzn6e.js → chunk-4qfkag59.js} +44 -221
  68. package/dist/chunk-4qfkag59.js.map +20 -0
  69. package/dist/{chunk-rre42skh.js → chunk-4sm0aznx.js} +515 -80
  70. package/dist/{chunk-rre42skh.js.map → chunk-4sm0aznx.js.map} +11 -7
  71. package/dist/chunk-4yqmp43v.js +159 -0
  72. package/dist/chunk-4yqmp43v.js.map +11 -0
  73. package/dist/{chunk-atmkaf60.js → chunk-5e3pq99w.js} +2 -6
  74. package/dist/{chunk-atmkaf60.js.map → chunk-5e3pq99w.js.map} +3 -3
  75. package/dist/{chunk-agsvg9ar.js → chunk-5ntny1qx.js} +1 -1
  76. package/dist/{chunk-z2sery1b.js → chunk-9nbmsvn5.js} +60 -20
  77. package/dist/chunk-9nbmsvn5.js.map +11 -0
  78. package/dist/{chunk-e4rvtvpw.js → chunk-aa2pen2v.js} +250 -78
  79. package/dist/chunk-aa2pen2v.js.map +34 -0
  80. package/dist/{chunk-64sr682n.js → chunk-ajnan18g.js} +11 -8
  81. package/dist/chunk-ajnan18g.js.map +12 -0
  82. package/dist/{chunk-9aehf39w.js → chunk-f26bck4t.js} +4 -4
  83. package/dist/{chunk-7ds9620f.js → chunk-fvt9rjsa.js} +23 -7
  84. package/dist/chunk-fvt9rjsa.js.map +10 -0
  85. package/dist/{chunk-kt81c11h.js → chunk-gbejpkex.js} +5 -5
  86. package/dist/{chunk-kt81c11h.js.map → chunk-gbejpkex.js.map} +1 -1
  87. package/dist/{chunk-vjjv9mrb.js → chunk-gzasd5b6.js} +5 -5
  88. package/dist/{chunk-vjjv9mrb.js.map → chunk-gzasd5b6.js.map} +3 -3
  89. package/dist/{chunk-d63tybny.js → chunk-h0k55pc7.js} +4 -4
  90. package/dist/{chunk-d63tybny.js.map → chunk-h0k55pc7.js.map} +1 -1
  91. package/dist/chunk-h5vqbfmd.js +1537 -0
  92. package/dist/chunk-h5vqbfmd.js.map +19 -0
  93. package/dist/{chunk-3kv70xwp.js → chunk-j1sbhm7p.js} +18 -2
  94. package/dist/chunk-j1sbhm7p.js.map +10 -0
  95. package/dist/{chunk-hdz94br2.js → chunk-k522z7v6.js} +10 -5
  96. package/dist/chunk-k522z7v6.js.map +10 -0
  97. package/dist/{chunk-wjgm6jjt.js → chunk-mth82m8t.js} +128 -94
  98. package/dist/chunk-mth82m8t.js.map +14 -0
  99. package/dist/{chunk-qv38twt8.js → chunk-mwsxn98e.js} +46 -25
  100. package/dist/{chunk-qv38twt8.js.map → chunk-mwsxn98e.js.map} +6 -6
  101. package/dist/chunk-n4khvw9n.js +111 -0
  102. package/dist/chunk-n4khvw9n.js.map +11 -0
  103. package/dist/{chunk-qjzp9xyb.js → chunk-nn0tekr1.js} +6 -8
  104. package/dist/chunk-nn0tekr1.js.map +12 -0
  105. package/dist/chunk-nx7k8tpr.js +436 -0
  106. package/dist/chunk-nx7k8tpr.js.map +12 -0
  107. package/dist/{chunk-08twe8m6.js → chunk-p1rzczbt.js} +1 -1
  108. package/dist/{chunk-37wk412q.js → chunk-p1x242ad.js} +587 -70
  109. package/dist/chunk-p1x242ad.js.map +25 -0
  110. package/dist/{chunk-tn7xcs2n.js → chunk-pc7ys28c.js} +68 -5
  111. package/dist/chunk-pc7ys28c.js.map +14 -0
  112. package/dist/{chunk-3fqt22c4.js → chunk-q0k9nc5a.js} +280 -88
  113. package/dist/chunk-q0k9nc5a.js.map +14 -0
  114. package/dist/chunk-r8jrnexe.js +403 -0
  115. package/dist/chunk-r8jrnexe.js.map +10 -0
  116. package/dist/{chunk-gbrpsx4m.js → chunk-rafagrwr.js} +30 -2
  117. package/dist/chunk-rafagrwr.js.map +11 -0
  118. package/dist/{chunk-xdpwpkha.js → chunk-rv2hkwwa.js} +1 -1
  119. package/dist/{chunk-6ed5bwnd.js → chunk-sbzzr4kx.js} +1203 -691
  120. package/dist/{chunk-6ed5bwnd.js.map → chunk-sbzzr4kx.js.map} +15 -9
  121. package/dist/{chunk-d2ndstdf.js → chunk-v1xppd0y.js} +13 -11
  122. package/dist/{chunk-d2ndstdf.js.map → chunk-v1xppd0y.js.map} +2 -2
  123. package/dist/chunk-v4en4jc2.js +252 -0
  124. package/dist/chunk-v4en4jc2.js.map +10 -0
  125. package/dist/{chunk-1kamz6j0.js → chunk-w1tvjszy.js} +1 -1
  126. package/dist/{chunk-rp1mvzb4.js → chunk-w9tg6yyb.js} +11 -6
  127. package/dist/{chunk-rp1mvzb4.js.map → chunk-w9tg6yyb.js.map} +3 -3
  128. package/dist/{chunk-4nxeacx7.js → chunk-wdage1eb.js} +1 -1
  129. package/dist/{chunk-ha58tjtt.js → chunk-wtf06et8.js} +9 -5
  130. package/dist/{chunk-ha58tjtt.js.map → chunk-wtf06et8.js.map} +3 -3
  131. package/dist/{chunk-h0knpbz5.js → chunk-xajtptbw.js} +782 -211
  132. package/dist/chunk-xajtptbw.js.map +40 -0
  133. package/dist/{chunk-xc7hq65b.js → chunk-yp8ee62z.js} +49 -2
  134. package/dist/chunk-yp8ee62z.js.map +11 -0
  135. package/dist/chunk-z4ccwbkz.js +139 -0
  136. package/dist/chunk-z4ccwbkz.js.map +10 -0
  137. package/dist/datasets/builders.d.ts +11 -2
  138. package/dist/datasets/builders.d.ts.map +1 -1
  139. package/dist/datasets/changes.d.ts +14 -4
  140. package/dist/datasets/changes.d.ts.map +1 -1
  141. package/dist/datasets/execution.d.ts +15 -1
  142. package/dist/datasets/execution.d.ts.map +1 -1
  143. package/dist/datasets/index.d.ts +1 -0
  144. package/dist/datasets/index.d.ts.map +1 -1
  145. package/dist/datasets/sequence.d.ts +7 -0
  146. package/dist/datasets/sequence.d.ts.map +1 -0
  147. package/dist/datasets/types.d.ts +1 -0
  148. package/dist/datasets/types.d.ts.map +1 -1
  149. package/dist/datasets/validation.d.ts.map +1 -1
  150. package/dist/datasets/write.d.ts +37 -0
  151. package/dist/datasets/write.d.ts.map +1 -0
  152. package/dist/datasets/write.js +17 -0
  153. package/dist/datasets/write.js.map +9 -0
  154. package/dist/events/execution.d.ts.map +1 -1
  155. package/dist/events/types/datasets.d.ts +2 -6
  156. package/dist/events/types/datasets.d.ts.map +1 -1
  157. package/dist/execution/agent.d.ts.map +1 -1
  158. package/dist/execution/agent.js +39 -32
  159. package/dist/execution/agent.js.map +1 -1
  160. package/dist/execution/authorization.d.ts +58 -20
  161. package/dist/execution/authorization.d.ts.map +1 -1
  162. package/dist/execution/authorized-object-reader.d.ts +69 -0
  163. package/dist/execution/authorized-object-reader.d.ts.map +1 -0
  164. package/dist/execution/durable.d.ts.map +1 -1
  165. package/dist/execution/index.d.ts +1 -1
  166. package/dist/execution/index.d.ts.map +1 -1
  167. package/dist/execution/primitive.js +39 -32
  168. package/dist/execution/primitive.js.map +2 -2
  169. package/dist/execution/request.d.ts +11 -0
  170. package/dist/execution/request.d.ts.map +1 -1
  171. package/dist/execution/request.js +76 -40
  172. package/dist/execution/request.js.map +3 -3
  173. package/dist/execution/scopes.d.ts +16 -0
  174. package/dist/execution/scopes.d.ts.map +1 -1
  175. package/dist/execution/types.d.ts +9 -0
  176. package/dist/execution/types.d.ts.map +1 -1
  177. package/dist/http/api-routes.d.ts +2 -0
  178. package/dist/http/api-routes.d.ts.map +1 -1
  179. package/dist/http/index.js +1 -1
  180. package/dist/index.d.ts +8 -5
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.js +92 -78
  183. package/dist/index.js.map +1 -1
  184. package/dist/lake-storage/definition-updates.d.ts.map +1 -1
  185. package/dist/lake-storage/errors.d.ts +5 -1
  186. package/dist/lake-storage/errors.d.ts.map +1 -1
  187. package/dist/lake-storage/in-memory.d.ts +1 -0
  188. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  189. package/dist/lake-storage/index.d.ts +6 -1
  190. package/dist/lake-storage/index.d.ts.map +1 -1
  191. package/dist/lake-storage/index.js +24 -7
  192. package/dist/lake-storage/index.js.map +1 -1
  193. package/dist/lake-storage/merge-validation.d.ts.map +1 -1
  194. package/dist/lake-storage/merge.d.ts +13 -2
  195. package/dist/lake-storage/merge.d.ts.map +1 -1
  196. package/dist/lake-storage/source-ordering.d.ts +19 -0
  197. package/dist/lake-storage/source-ordering.d.ts.map +1 -0
  198. package/dist/lake-storage/sql-transforms.d.ts +2 -1
  199. package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
  200. package/dist/lake-storage/types.d.ts +10 -5
  201. package/dist/lake-storage/types.d.ts.map +1 -1
  202. package/dist/lake-storage/version-inputs.d.ts +4 -0
  203. package/dist/lake-storage/version-inputs.d.ts.map +1 -0
  204. package/dist/materializer/index.js +25 -22
  205. package/dist/materializer/index.js.map +1 -1
  206. package/dist/objects/authorized-ontology-view.d.ts +25 -0
  207. package/dist/objects/authorized-ontology-view.d.ts.map +1 -0
  208. package/dist/objects/execution.d.ts +1 -1
  209. package/dist/objects/execution.d.ts.map +1 -1
  210. package/dist/objects/index.js +29 -26
  211. package/dist/objects/index.js.map +1 -1
  212. package/dist/objects/link/authorization.d.ts +2 -7
  213. package/dist/objects/link/authorization.d.ts.map +1 -1
  214. package/dist/objects/query/executor.d.ts +4 -2
  215. package/dist/objects/query/executor.d.ts.map +1 -1
  216. package/dist/objects/query/index.js +24 -21
  217. package/dist/objects/query/index.js.map +1 -1
  218. package/dist/objects/query/links.d.ts +22 -1
  219. package/dist/objects/query/links.d.ts.map +1 -1
  220. package/dist/objects/query/selected-read-admission.d.ts +27 -0
  221. package/dist/objects/query/selected-read-admission.d.ts.map +1 -0
  222. package/dist/objects/query/validate.d.ts +60 -2
  223. package/dist/objects/query/validate.d.ts.map +1 -1
  224. package/dist/objects/sdk/object-handle.d.ts.map +1 -1
  225. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  226. package/dist/objects/sdk/runtime-query-executor.d.ts +2 -7
  227. package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
  228. package/dist/objects/sdk/telemetry-channel.d.ts.map +1 -1
  229. package/dist/objects/service/list-service.d.ts +2 -3
  230. package/dist/objects/service/list-service.d.ts.map +1 -1
  231. package/dist/objects/telemetry/history.d.ts +8 -6
  232. package/dist/objects/telemetry/history.d.ts.map +1 -1
  233. package/dist/objects/telemetry/index.d.ts +2 -2
  234. package/dist/objects/telemetry/index.d.ts.map +1 -1
  235. package/dist/objects/telemetry/workload.d.ts +11 -0
  236. package/dist/objects/telemetry/workload.d.ts.map +1 -0
  237. package/dist/ontology/index.d.ts +2 -1
  238. package/dist/ontology/index.d.ts.map +1 -1
  239. package/dist/ontology/index.js +13 -12
  240. package/dist/ontology/index.js.map +1 -1
  241. package/dist/ontology/inference/index.d.ts +2 -1
  242. package/dist/ontology/inference/index.d.ts.map +1 -1
  243. package/dist/ontology/internal.d.ts +0 -1
  244. package/dist/ontology/internal.d.ts.map +1 -1
  245. package/dist/ontology/internal.js +5 -10
  246. package/dist/ontology/internal.js.map +3 -3
  247. package/dist/ontology/json-schema.d.ts +10 -6
  248. package/dist/ontology/json-schema.d.ts.map +1 -1
  249. package/dist/ontology/link-path-selection.d.ts +35 -0
  250. package/dist/ontology/link-path-selection.d.ts.map +1 -0
  251. package/dist/ontology/refs.d.ts +2 -0
  252. package/dist/ontology/refs.d.ts.map +1 -1
  253. package/dist/ontology/tokens.d.ts +2 -1
  254. package/dist/ontology/tokens.d.ts.map +1 -1
  255. package/dist/pipelines/execution.d.ts.map +1 -1
  256. package/dist/pipelines/index.js +27 -24
  257. package/dist/pipelines/index.js.map +1 -1
  258. package/dist/pipelines/request.d.ts.map +1 -1
  259. package/dist/projections/execution.d.ts.map +1 -1
  260. package/dist/projections/internal.js +25 -22
  261. package/dist/projections/internal.js.map +1 -1
  262. package/dist/projections/run-dispatch.d.ts.map +1 -1
  263. package/dist/rules/execution.d.ts.map +1 -1
  264. package/dist/runtime/create.d.ts +4 -1
  265. package/dist/runtime/create.d.ts.map +1 -1
  266. package/dist/runtime/definitions.d.ts +2 -0
  267. package/dist/runtime/definitions.d.ts.map +1 -1
  268. package/dist/runtime/host.d.ts +2 -0
  269. package/dist/runtime/host.d.ts.map +1 -1
  270. package/dist/runtime/internal.d.ts +1 -0
  271. package/dist/runtime/internal.d.ts.map +1 -1
  272. package/dist/runtime/resolve-definitions.d.ts +2 -0
  273. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  274. package/dist/runtime/sixb.d.ts +4 -0
  275. package/dist/runtime/sixb.d.ts.map +1 -1
  276. package/dist/runtime/types.d.ts +3 -0
  277. package/dist/runtime/types.d.ts.map +1 -1
  278. package/dist/schedules/execution.d.ts +2 -1
  279. package/dist/schedules/execution.d.ts.map +1 -1
  280. package/dist/security/every.d.ts +4 -1
  281. package/dist/security/every.d.ts.map +1 -1
  282. package/dist/security/grants.d.ts +7 -2
  283. package/dist/security/grants.d.ts.map +1 -1
  284. package/dist/security/index.d.ts +1 -1
  285. package/dist/security/index.d.ts.map +1 -1
  286. package/dist/security/registry.d.ts +1 -0
  287. package/dist/security/registry.d.ts.map +1 -1
  288. package/dist/security/types.d.ts +7 -1
  289. package/dist/security/types.d.ts.map +1 -1
  290. package/dist/security/validation.d.ts +2 -0
  291. package/dist/security/validation.d.ts.map +1 -1
  292. package/dist/shares/access-plan.d.ts +22 -0
  293. package/dist/shares/access-plan.d.ts.map +1 -0
  294. package/dist/shares/builders.d.ts +14 -0
  295. package/dist/shares/builders.d.ts.map +1 -0
  296. package/dist/shares/compiler.d.ts +14 -0
  297. package/dist/shares/compiler.d.ts.map +1 -0
  298. package/dist/shares/errors.d.ts +4 -0
  299. package/dist/shares/errors.d.ts.map +1 -0
  300. package/dist/shares/execution.d.ts +57 -0
  301. package/dist/shares/execution.d.ts.map +1 -0
  302. package/dist/shares/index.d.ts +10 -0
  303. package/dist/shares/index.d.ts.map +1 -0
  304. package/dist/shares/internal.d.ts +3 -0
  305. package/dist/shares/internal.d.ts.map +1 -0
  306. package/dist/shares/internal.js +239 -0
  307. package/dist/shares/internal.js.map +10 -0
  308. package/dist/shares/intersection.d.ts +9 -0
  309. package/dist/shares/intersection.d.ts.map +1 -0
  310. package/dist/shares/session-protocol.d.ts +41 -0
  311. package/dist/shares/session-protocol.d.ts.map +1 -0
  312. package/dist/shares/types.d.ts +51 -0
  313. package/dist/shares/types.d.ts.map +1 -0
  314. package/dist/shares/validation.d.ts +11 -0
  315. package/dist/shares/validation.d.ts.map +1 -0
  316. package/dist/storage/action-runs/provider.js +2 -2
  317. package/dist/storage/agents/provider.js +2 -2
  318. package/dist/storage/executions/in-memory.d.ts +3 -0
  319. package/dist/storage/executions/in-memory.d.ts.map +1 -1
  320. package/dist/storage/executions/provider.d.ts +4 -1
  321. package/dist/storage/executions/provider.d.ts.map +1 -1
  322. package/dist/storage/executions/provider.js +23 -3
  323. package/dist/storage/executions/provider.js.map +3 -3
  324. package/dist/storage/executions/run-link.d.ts +7 -0
  325. package/dist/storage/executions/run-link.d.ts.map +1 -1
  326. package/dist/storage/executions/validation.d.ts +6 -0
  327. package/dist/storage/executions/validation.d.ts.map +1 -1
  328. package/dist/storage/in-memory/index.d.ts +8 -0
  329. package/dist/storage/in-memory/index.d.ts.map +1 -1
  330. package/dist/storage/index.d.ts +8 -2
  331. package/dist/storage/index.d.ts.map +1 -1
  332. package/dist/storage/index.js +65 -36
  333. package/dist/storage/index.js.map +1 -1
  334. package/dist/storage/objects/execution-limits.d.ts +25 -0
  335. package/dist/storage/objects/execution-limits.d.ts.map +1 -0
  336. package/dist/storage/objects/guard.d.ts +16 -0
  337. package/dist/storage/objects/guard.d.ts.map +1 -0
  338. package/dist/storage/objects/in-memory/index.d.ts +3 -0
  339. package/dist/storage/objects/in-memory/index.d.ts.map +1 -0
  340. package/dist/storage/objects/in-memory/keys.d.ts +10 -0
  341. package/dist/storage/objects/in-memory/keys.d.ts.map +1 -0
  342. package/dist/storage/objects/in-memory/query.d.ts +31 -0
  343. package/dist/storage/objects/in-memory/query.d.ts.map +1 -0
  344. package/dist/storage/objects/in-memory/read-scope.d.ts +18 -0
  345. package/dist/storage/objects/in-memory/read-scope.d.ts.map +1 -0
  346. package/dist/storage/objects/in-memory/read-source.d.ts +10 -0
  347. package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -0
  348. package/dist/storage/objects/in-memory/selected-reader.d.ts +9 -0
  349. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -0
  350. package/dist/storage/objects/{in-memory.d.ts → in-memory/storage.d.ts} +13 -10
  351. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -0
  352. package/dist/storage/objects/index.d.ts +4 -1
  353. package/dist/storage/objects/index.d.ts.map +1 -1
  354. package/dist/storage/objects/keys.d.ts +1 -1
  355. package/dist/storage/objects/keys.d.ts.map +1 -1
  356. package/dist/storage/objects/read-scope.d.ts +25 -0
  357. package/dist/storage/objects/read-scope.d.ts.map +1 -0
  358. package/dist/storage/objects/types.d.ts +114 -22
  359. package/dist/storage/objects/types.d.ts.map +1 -1
  360. package/dist/storage/operation-scope.d.ts +3 -0
  361. package/dist/storage/operation-scope.d.ts.map +1 -1
  362. package/dist/storage/operation-scope.js +4 -2
  363. package/dist/storage/operation-scope.js.map +1 -1
  364. package/dist/storage/pipeline-runs/provider.js +2 -2
  365. package/dist/storage/projection-runs/provider.js +2 -2
  366. package/dist/storage/share-grants/errors.d.ts +8 -0
  367. package/dist/storage/share-grants/errors.d.ts.map +1 -0
  368. package/dist/storage/share-grants/in-memory.d.ts +11 -0
  369. package/dist/storage/share-grants/in-memory.d.ts.map +1 -0
  370. package/dist/storage/share-grants/index.d.ts +5 -0
  371. package/dist/storage/share-grants/index.d.ts.map +1 -0
  372. package/dist/storage/share-grants/provider.d.ts +4 -0
  373. package/dist/storage/share-grants/provider.d.ts.map +1 -0
  374. package/dist/storage/share-grants/provider.js +24 -0
  375. package/dist/storage/share-grants/provider.js.map +9 -0
  376. package/dist/storage/share-grants/record.d.ts +11 -0
  377. package/dist/storage/share-grants/record.d.ts.map +1 -0
  378. package/dist/storage/share-grants/types.d.ts +97 -0
  379. package/dist/storage/share-grants/types.d.ts.map +1 -0
  380. package/dist/storage/share-sessions/errors.d.ts +8 -0
  381. package/dist/storage/share-sessions/errors.d.ts.map +1 -0
  382. package/dist/storage/share-sessions/in-memory.d.ts +14 -0
  383. package/dist/storage/share-sessions/in-memory.d.ts.map +1 -0
  384. package/dist/storage/share-sessions/index.d.ts +5 -0
  385. package/dist/storage/share-sessions/index.d.ts.map +1 -0
  386. package/dist/storage/share-sessions/provider.d.ts +3 -0
  387. package/dist/storage/share-sessions/provider.d.ts.map +1 -0
  388. package/dist/storage/share-sessions/provider.js +20 -0
  389. package/dist/storage/share-sessions/provider.js.map +9 -0
  390. package/dist/storage/share-sessions/record.d.ts +8 -0
  391. package/dist/storage/share-sessions/record.d.ts.map +1 -0
  392. package/dist/storage/share-sessions/types.d.ts +50 -0
  393. package/dist/storage/share-sessions/types.d.ts.map +1 -0
  394. package/dist/storage/sync-runs/provider.js +2 -2
  395. package/dist/storage/transaction.d.ts +2 -1
  396. package/dist/storage/transaction.d.ts.map +1 -1
  397. package/dist/storage/types.d.ts +8 -0
  398. package/dist/storage/types.d.ts.map +1 -1
  399. package/dist/storage/webhook-runs/provider.js +2 -2
  400. package/dist/storage/workflow-runs/provider.js +10 -7
  401. package/dist/storage/workflow-runs/provider.js.map +1 -1
  402. package/dist/syncs/execution.d.ts.map +1 -1
  403. package/dist/syncs/index.js +27 -24
  404. package/dist/syncs/index.js.map +1 -1
  405. package/dist/syncs/request.d.ts.map +1 -1
  406. package/dist/testing/dataset-sequence-contract.d.ts +4 -0
  407. package/dist/testing/dataset-sequence-contract.d.ts.map +1 -0
  408. package/dist/testing/effective-storage-contract.d.ts.map +1 -1
  409. package/dist/testing/execution-storage-contract.d.ts +4 -0
  410. package/dist/testing/execution-storage-contract.d.ts.map +1 -1
  411. package/dist/testing/index.d.ts +3 -0
  412. package/dist/testing/index.d.ts.map +1 -1
  413. package/dist/testing/index.js +2555 -908
  414. package/dist/testing/index.js.map +11 -7
  415. package/dist/testing/lake-merge-storage-contract.d.ts +1 -0
  416. package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
  417. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  418. package/dist/testing/object-read-scope-contract.d.ts +22 -0
  419. package/dist/testing/object-read-scope-contract.d.ts.map +1 -0
  420. package/dist/testing/share-grant-storage-contract.d.ts +10 -0
  421. package/dist/testing/share-grant-storage-contract.d.ts.map +1 -0
  422. package/dist/testing/share-session-storage-contract.d.ts +9 -0
  423. package/dist/testing/share-session-storage-contract.d.ts.map +1 -0
  424. package/dist/webhooks/internal.js +24 -21
  425. package/dist/webhooks/internal.js.map +2 -2
  426. package/dist/workflows/execution.d.ts.map +1 -1
  427. package/dist/workflows/index.js +42 -35
  428. package/dist/workflows/index.js.map +1 -1
  429. package/dist/workflows/request.d.ts.map +1 -1
  430. package/package.json +25 -1
  431. package/src/actions/delegated-admission.ts +72 -0
  432. package/src/actions/descriptor.ts +58 -0
  433. package/src/actions/execution.ts +99 -24
  434. package/src/actions/request.ts +136 -19
  435. package/src/actions/run-authorization.ts +53 -0
  436. package/src/actions/run-dispatch.ts +8 -1
  437. package/src/agents/adapters.ts +30 -420
  438. package/src/agents/authority.ts +3 -4
  439. package/src/agents/context-resolution.ts +1 -4
  440. package/src/agents/errors.ts +0 -10
  441. package/src/agents/execution.ts +13 -5
  442. package/src/agents/identity.ts +4 -0
  443. package/src/agents/index.ts +1 -20
  444. package/src/agents/message.ts +4 -5
  445. package/src/agents/model-loop.ts +54 -6
  446. package/src/agents/request.ts +16 -3
  447. package/src/agents/tool-definition.ts +0 -19
  448. package/src/agents/validation.ts +6 -65
  449. package/src/ai-usage/execution.ts +4 -11
  450. package/src/authorization/decision.ts +29 -14
  451. package/src/authorization/grant-kinds.ts +10 -0
  452. package/src/authorization/index.ts +1 -0
  453. package/src/bootstrap/discovery.ts +3 -0
  454. package/src/bootstrap/ontology-type-manifest.ts +12 -6
  455. package/src/datasets/builders.ts +23 -2
  456. package/src/datasets/changes.ts +16 -4
  457. package/src/datasets/execution.ts +76 -5
  458. package/src/datasets/index.ts +1 -0
  459. package/src/datasets/sequence.ts +77 -0
  460. package/src/datasets/types.ts +1 -0
  461. package/src/datasets/validation.ts +26 -0
  462. package/src/datasets/write.ts +240 -0
  463. package/src/events/execution.ts +57 -7
  464. package/src/events/types/datasets.ts +2 -6
  465. package/src/execution/agent.ts +1 -4
  466. package/src/execution/authorization.ts +470 -90
  467. package/src/execution/authorized-object-reader.ts +695 -0
  468. package/src/execution/durable.ts +10 -2
  469. package/src/execution/index.ts +1 -0
  470. package/src/execution/request.ts +63 -13
  471. package/src/execution/scopes.ts +36 -6
  472. package/src/execution/types.ts +8 -0
  473. package/src/http/api-routes.ts +45 -0
  474. package/src/index.ts +36 -15
  475. package/src/lake-storage/definition-updates.ts +9 -0
  476. package/src/lake-storage/errors.ts +6 -1
  477. package/src/lake-storage/in-memory.ts +53 -17
  478. package/src/lake-storage/index.ts +10 -1
  479. package/src/lake-storage/merge-validation.ts +12 -2
  480. package/src/lake-storage/merge.ts +40 -2
  481. package/src/lake-storage/source-ordering.ts +95 -0
  482. package/src/lake-storage/sql-transforms.ts +2 -1
  483. package/src/lake-storage/types.ts +10 -5
  484. package/src/lake-storage/version-inputs.ts +14 -0
  485. package/src/objects/authorized-ontology-view.ts +512 -0
  486. package/src/objects/execution.ts +98 -143
  487. package/src/objects/link/authorization.ts +3 -2
  488. package/src/objects/query/executor.ts +45 -34
  489. package/src/objects/query/links.ts +84 -25
  490. package/src/objects/query/selected-read-admission.ts +310 -0
  491. package/src/objects/query/validate.ts +353 -36
  492. package/src/objects/sdk/object-handle.ts +2 -8
  493. package/src/objects/sdk/object-set.ts +10 -11
  494. package/src/objects/sdk/runtime-query-executor.ts +8 -28
  495. package/src/objects/sdk/telemetry-channel.ts +11 -7
  496. package/src/objects/service/list-service.ts +15 -29
  497. package/src/objects/telemetry/history.ts +297 -17
  498. package/src/objects/telemetry/index.ts +2 -2
  499. package/src/objects/telemetry/workload.ts +79 -0
  500. package/src/ontology/index.ts +7 -1
  501. package/src/ontology/inference/index.ts +4 -1
  502. package/src/ontology/internal.ts +0 -1
  503. package/src/ontology/json-schema.ts +13 -12
  504. package/src/ontology/link-path-selection.ts +193 -0
  505. package/src/ontology/refs.ts +19 -0
  506. package/src/ontology/tokens.ts +15 -8
  507. package/src/pipelines/execution.ts +30 -7
  508. package/src/pipelines/request.ts +5 -0
  509. package/src/projections/execution.ts +72 -11
  510. package/src/projections/run-dispatch.ts +6 -12
  511. package/src/rules/execution.ts +20 -8
  512. package/src/runtime/create.ts +5 -1
  513. package/src/runtime/definitions.ts +2 -0
  514. package/src/runtime/host.ts +25 -6
  515. package/src/runtime/internal.ts +1 -0
  516. package/src/runtime/resolve-definitions.ts +9 -0
  517. package/src/runtime/sixb.ts +23 -2
  518. package/src/runtime/types.ts +3 -0
  519. package/src/schedules/execution.ts +24 -2
  520. package/src/security/every.ts +4 -0
  521. package/src/security/grants.ts +45 -3
  522. package/src/security/index.ts +1 -0
  523. package/src/security/registry.ts +3 -0
  524. package/src/security/types.ts +8 -0
  525. package/src/security/validation.ts +3 -0
  526. package/src/shares/access-plan.ts +225 -0
  527. package/src/shares/builders.ts +381 -0
  528. package/src/shares/compiler.ts +359 -0
  529. package/src/shares/errors.ts +3 -0
  530. package/src/shares/execution.ts +394 -0
  531. package/src/shares/index.ts +28 -0
  532. package/src/shares/internal.ts +9 -0
  533. package/src/shares/intersection.ts +178 -0
  534. package/src/shares/session-protocol.ts +258 -0
  535. package/src/shares/types.ts +76 -0
  536. package/src/shares/validation.ts +40 -0
  537. package/src/storage/executions/in-memory.ts +9 -1
  538. package/src/storage/executions/provider.ts +30 -1
  539. package/src/storage/executions/run-link.ts +29 -0
  540. package/src/storage/executions/validation.ts +46 -1
  541. package/src/storage/in-memory/index.ts +21 -2
  542. package/src/storage/index.ts +51 -0
  543. package/src/storage/objects/execution-limits.ts +283 -0
  544. package/src/storage/objects/guard.ts +55 -0
  545. package/src/storage/objects/in-memory/index.ts +2 -0
  546. package/src/storage/objects/in-memory/keys.ts +46 -0
  547. package/src/storage/objects/in-memory/query.ts +754 -0
  548. package/src/storage/objects/in-memory/read-scope.ts +211 -0
  549. package/src/storage/objects/in-memory/read-source.ts +10 -0
  550. package/src/storage/objects/in-memory/selected-reader.ts +252 -0
  551. package/src/storage/objects/in-memory/storage.ts +589 -0
  552. package/src/storage/objects/index.ts +21 -0
  553. package/src/storage/objects/keys.ts +1 -1
  554. package/src/storage/objects/read-scope.ts +672 -0
  555. package/src/storage/objects/types.ts +123 -19
  556. package/src/storage/operation-scope.ts +16 -0
  557. package/src/storage/share-grants/errors.ts +14 -0
  558. package/src/storage/share-grants/in-memory.ts +107 -0
  559. package/src/storage/share-grants/index.ts +14 -0
  560. package/src/storage/share-grants/provider.ts +11 -0
  561. package/src/storage/share-grants/record.ts +347 -0
  562. package/src/storage/share-grants/types.ts +112 -0
  563. package/src/storage/share-sessions/errors.ts +14 -0
  564. package/src/storage/share-sessions/in-memory.ts +105 -0
  565. package/src/storage/share-sessions/index.ts +11 -0
  566. package/src/storage/share-sessions/provider.ts +9 -0
  567. package/src/storage/share-sessions/record.ts +176 -0
  568. package/src/storage/share-sessions/types.ts +57 -0
  569. package/src/storage/transaction.ts +14 -2
  570. package/src/storage/types.ts +27 -0
  571. package/src/syncs/execution.ts +25 -5
  572. package/src/syncs/request.ts +5 -0
  573. package/src/testing/dataset-sequence-contract.ts +373 -0
  574. package/src/testing/effective-storage-contract.ts +34 -0
  575. package/src/testing/execution-storage-contract.ts +79 -0
  576. package/src/testing/index.ts +16 -0
  577. package/src/testing/lake-merge-storage-contract.ts +3 -0
  578. package/src/testing/lake-storage-contract.ts +58 -0
  579. package/src/testing/object-read-scope-contract.ts +939 -0
  580. package/src/testing/share-grant-storage-contract.ts +325 -0
  581. package/src/testing/share-session-storage-contract.ts +235 -0
  582. package/src/workflows/execution.ts +53 -14
  583. package/src/workflows/request.ts +5 -0
  584. package/dist/chunk-2b5qtban.js.map +0 -14
  585. package/dist/chunk-37wk412q.js.map +0 -23
  586. package/dist/chunk-3fqt22c4.js.map +0 -14
  587. package/dist/chunk-3kv70xwp.js.map +0 -10
  588. package/dist/chunk-64sr682n.js.map +0 -12
  589. package/dist/chunk-7ds9620f.js.map +0 -10
  590. package/dist/chunk-dqn23610.js +0 -72
  591. package/dist/chunk-dqn23610.js.map +0 -11
  592. package/dist/chunk-e4rvtvpw.js.map +0 -34
  593. package/dist/chunk-gbrpsx4m.js.map +0 -11
  594. package/dist/chunk-h0knpbz5.js.map +0 -38
  595. package/dist/chunk-hdz94br2.js.map +0 -10
  596. package/dist/chunk-n2arzn6e.js.map +0 -20
  597. package/dist/chunk-qjzp9xyb.js.map +0 -12
  598. package/dist/chunk-tn7xcs2n.js.map +0 -13
  599. package/dist/chunk-wjgm6jjt.js.map +0 -13
  600. package/dist/chunk-xc7hq65b.js.map +0 -10
  601. package/dist/chunk-y35ma3mj.js +0 -551
  602. package/dist/chunk-y35ma3mj.js.map +0 -15
  603. package/dist/chunk-z2sery1b.js.map +0 -11
  604. package/dist/storage/objects/in-memory.d.ts.map +0 -1
  605. package/src/storage/objects/in-memory.ts +0 -1241
  606. /package/dist/{chunk-5jcdmjam.js.map → chunk-4jjp5k14.js.map} +0 -0
  607. /package/dist/{chunk-agsvg9ar.js.map → chunk-5ntny1qx.js.map} +0 -0
  608. /package/dist/{chunk-9aehf39w.js.map → chunk-f26bck4t.js.map} +0 -0
  609. /package/dist/{chunk-08twe8m6.js.map → chunk-p1rzczbt.js.map} +0 -0
  610. /package/dist/{chunk-xdpwpkha.js.map → chunk-rv2hkwwa.js.map} +0 -0
  611. /package/dist/{chunk-1kamz6j0.js.map → chunk-w1tvjszy.js.map} +0 -0
  612. /package/dist/{chunk-4nxeacx7.js.map → chunk-wdage1eb.js.map} +0 -0
@@ -11,21 +11,22 @@ import {
11
11
  objectBatchKey,
12
12
  objectLinkCursor,
13
13
  queryScalarValuesEqual
14
- } from "./chunk-6ed5bwnd.js";
14
+ } from "./chunk-sbzzr4kx.js";
15
15
  import {
16
+ MAX_OBJECT_READ_FACETS,
16
17
  assertAuthorized,
17
18
  isAllowed
18
- } from "./chunk-37wk412q.js";
19
+ } from "./chunk-p1x242ad.js";
19
20
  import {
20
21
  validatePropertyValue,
21
22
  validateSchemaValue
22
- } from "./chunk-d63tybny.js";
23
- import {
24
- normalizeDecimalValue
25
- } from "./chunk-04b07a9q.js";
23
+ } from "./chunk-h0k55pc7.js";
26
24
  import {
27
25
  formatUnknownObjectTypeMessage
28
26
  } from "./chunk-dktq02ne.js";
27
+ import {
28
+ normalizeDecimalValue
29
+ } from "./chunk-04b07a9q.js";
29
30
  import {
30
31
  stableJsonStringify
31
32
  } from "./chunk-n6jxh8sw.js";
@@ -330,29 +331,53 @@ function addIssue(issues, path, code, message) {
330
331
  var DEFAULT_MAX_LIMIT = 1000;
331
332
  var DEFAULT_MAX_PAGE_SIZE = 1000;
332
333
  var DEFAULT_MAX_REFS = 1000;
334
+ var NOOP_ADMISSION_STATE = Object.freeze({});
335
+ var NOOP_QUERY_ADMISSION = Object.freeze({
336
+ empty: () => NOOP_ADMISSION_STATE,
337
+ source: () => ({ state: NOOP_ADMISSION_STATE }),
338
+ property: () => {
339
+ return;
340
+ },
341
+ edge: (input) => ({
342
+ state: input.state
343
+ }),
344
+ set: (input) => input.states[0] ?? NOOP_ADMISSION_STATE
345
+ });
333
346
  function validateObjectQuery(query, options) {
347
+ const admitted = validateObjectQueryWithAdmission(query, options, NOOP_QUERY_ADMISSION);
348
+ return {
349
+ query: admitted.query,
350
+ result: admitted.result,
351
+ touchedObjectTypeIds: admitted.touchedObjectTypeIds
352
+ };
353
+ }
354
+ function validateObjectQueryWithAdmission(query, options, admission) {
334
355
  const normalized = options.normalize === false ? query : normalizeObjectQuery(query);
335
- const ctx = createValidationContext(options);
356
+ const ctx = createValidationContext(options, admission);
336
357
  const validation = validateQueryNode(normalized, "$", ctx);
337
358
  if (ctx.issues.length > 0) {
338
359
  throw new ObjectQueryValidationError(ctx.issues);
339
360
  }
361
+ const denial = ctx.admissionDenials[0];
362
+ if (denial)
363
+ throw denial;
340
364
  return {
341
365
  query: validation.query,
342
366
  result: validation.result,
343
- touchedObjectTypeIds: [...ctx.touchedObjectTypeIds]
367
+ touchedObjectTypeIds: [...ctx.touchedObjectTypeIds],
368
+ admissionState: validation.admissionState
344
369
  };
345
370
  }
346
371
  function collectObjectQueryValidationIssues(query, options) {
347
372
  const normalized = options.normalize === false ? query : normalizeObjectQuery(query);
348
- const ctx = createValidationContext(options);
373
+ const ctx = createValidationContext(options, NOOP_QUERY_ADMISSION);
349
374
  validateQueryNode(normalized, "$", ctx);
350
375
  return ctx.issues;
351
376
  }
352
377
  function resolveObjectQueryResultShape(query, options) {
353
378
  return validateObjectQuery(query, options).result;
354
379
  }
355
- function createValidationContext(options) {
380
+ function createValidationContext(options, admission) {
356
381
  return {
357
382
  ontology: options.ontology,
358
383
  valueTypesById: options.ontology.getValueTypesById(),
@@ -360,7 +385,9 @@ function createValidationContext(options) {
360
385
  maxPageSize: options.maxPageSize ?? DEFAULT_MAX_PAGE_SIZE,
361
386
  maxRefs: options.maxRefs ?? DEFAULT_MAX_REFS,
362
387
  issues: [],
363
- touchedObjectTypeIds: new Set
388
+ touchedObjectTypeIds: new Set,
389
+ admission,
390
+ admissionDenials: []
364
391
  };
365
392
  }
366
393
  function validateQueryNode(query, path, ctx) {
@@ -372,18 +399,42 @@ function validateQueryNode(query, path, ctx) {
372
399
  }
373
400
  function dispatchQueryNode(query, path, ctx) {
374
401
  switch (query.kind) {
375
- case "start":
376
- return validateStart(query.objectTypeId, query.includeSubtypes, path, ctx);
377
- case "refs":
378
- return validateRefs(query.refs, path, ctx);
402
+ case "start": {
403
+ const validation = validateStart(query.objectTypeId, query.includeSubtypes, path, ctx);
404
+ return {
405
+ ...validation,
406
+ admissionState: admitTransition(ctx, ctx.admission.source({
407
+ kind: "start",
408
+ result: validation.result,
409
+ objectTypeId: query.objectTypeId,
410
+ path
411
+ }))
412
+ };
413
+ }
414
+ case "refs": {
415
+ const validation = validateRefs(query.refs, path, ctx);
416
+ return {
417
+ ...validation,
418
+ admissionState: admitTransition(ctx, ctx.admission.source({
419
+ kind: "refs",
420
+ result: validation.result,
421
+ refs: validation.query.kind === "refs" ? validation.query.refs : query.refs,
422
+ path
423
+ }))
424
+ };
425
+ }
379
426
  case "filter": {
380
427
  const input = validateQueryNode(query.input, `${path}.input`, ctx);
381
- const predicate = validatePredicate(query.predicate, input.result, `${path}.predicate`, ctx);
382
- return { result: input.result, query: { ...query, input: input.query, predicate } };
428
+ const predicate = validatePredicate(query.predicate, input.result, input.admissionState, `${path}.predicate`, ctx);
429
+ return {
430
+ result: input.result,
431
+ query: { ...query, input: input.query, predicate },
432
+ admissionState: input.admissionState
433
+ };
383
434
  }
384
435
  case "text": {
385
436
  const input = validateQueryNode(query.input, `${path}.input`, ctx);
386
- const textFields = validateTextQuery(query.query, query.fields, input.result, path, ctx);
437
+ const textFields = validateTextQuery(query.query, query.fields, input.result, input.admissionState, path, ctx);
387
438
  return {
388
439
  result: input.result,
389
440
  query: {
@@ -391,47 +442,82 @@ function dispatchQueryNode(query, path, ctx) {
391
442
  input: input.query,
392
443
  fields: query.fields,
393
444
  fieldsByObjectType: query.fields ? undefined : textFields.fieldsByObjectType
394
- }
445
+ },
446
+ admissionState: input.admissionState
395
447
  };
396
448
  }
397
449
  case "vector": {
398
450
  const input = validateQueryNode(query.input, `${path}.input`, ctx);
399
- validateVectorQuery(query.vector, query.propertyId, query.k, input.result, path, ctx);
400
- return { result: input.result, query: { ...query, input: input.query } };
451
+ validateVectorQuery(query.vector, query.propertyId, query.k, input.result, input.admissionState, path, ctx);
452
+ return {
453
+ result: input.result,
454
+ query: { ...query, input: input.query },
455
+ admissionState: input.admissionState
456
+ };
401
457
  }
402
458
  case "traverse": {
403
459
  const input = validateQueryNode(query.input, `${path}.input`, ctx);
460
+ const result = validateTraverse(query.linkId, query.direction, query.sourceObjectTypeId, input.result, path, ctx);
404
461
  return {
405
- result: validateTraverse(query.linkId, query.direction, query.sourceObjectTypeId, input.result, path, ctx),
406
- query: { ...query, input: input.query }
462
+ result,
463
+ query: { ...query, input: input.query },
464
+ admissionState: admitTransition(ctx, ctx.admission.edge({
465
+ state: input.admissionState,
466
+ result,
467
+ linkId: query.linkId,
468
+ direction: query.direction,
469
+ sourceObjectTypeId: query.sourceObjectTypeId,
470
+ use: "traverse",
471
+ path
472
+ }))
407
473
  };
408
474
  }
409
475
  case "set":
410
476
  return validateSet(query.inputs, query.op, path, ctx);
411
477
  case "sort": {
412
478
  const input = validateQueryNode(query.input, `${path}.input`, ctx);
413
- const fields = validateSortFields(query.fields, input.result, path, ctx);
414
- return { result: input.result, query: { ...query, input: input.query, fields } };
479
+ const fields = validateSortFields(query.fields, input.result, input.admissionState, "sort", path, ctx);
480
+ return {
481
+ result: input.result,
482
+ query: { ...query, input: input.query, fields },
483
+ admissionState: input.admissionState
484
+ };
415
485
  }
416
486
  case "limit": {
417
487
  const input = validateQueryNode(query.input, `${path}.input`, ctx);
418
488
  validateLimit(query.limit, path, ctx);
419
- return { result: input.result, query: { ...query, input: input.query } };
489
+ return {
490
+ result: input.result,
491
+ query: { ...query, input: input.query },
492
+ admissionState: input.admissionState
493
+ };
420
494
  }
421
495
  case "page": {
422
496
  const input = validateQueryNode(query.input, `${path}.input`, ctx);
423
497
  validatePage(query.pageSize, query.pageToken, path, ctx);
424
- return { result: input.result, query: { ...query, input: input.query } };
498
+ return {
499
+ result: input.result,
500
+ query: { ...query, input: input.query },
501
+ admissionState: input.admissionState
502
+ };
425
503
  }
426
504
  case "project": {
427
505
  const input = validateQueryNode(query.input, `${path}.input`, ctx);
428
- validateProjection(query.properties, input.result, path, ctx);
429
- return { result: input.result, query: { ...query, input: input.query } };
506
+ validateProjection(query.properties, input.result, input.admissionState, path, ctx);
507
+ return {
508
+ result: input.result,
509
+ query: { ...query, input: input.query },
510
+ admissionState: input.admissionState
511
+ };
430
512
  }
431
513
  case "expand": {
432
514
  const input = validateQueryNode(query.input, `${path}.input`, ctx);
433
- const expansions = validateExpansions(query.expansions, input.result, `${path}.expansions`, ctx);
434
- return { result: input.result, query: { ...query, input: input.query, expansions } };
515
+ const expansions = validateExpansions(query.expansions, input.result, input.admissionState, `${path}.expansions`, ctx);
516
+ return {
517
+ result: input.result,
518
+ query: { ...query, input: input.query, expansions },
519
+ admissionState: input.admissionState
520
+ };
435
521
  }
436
522
  }
437
523
  }
@@ -473,7 +559,7 @@ function validateStart(objectTypeId, includeSubtypes, path, ctx) {
473
559
  const objectTypeIds = includeSubtypes ? uniqueStrings([objectTypeId, ...ctx.ontology.listSubTypes(objectTypeId)]) : [objectTypeId];
474
560
  return { result: { objectTypeIds }, query: { kind: "start", objectTypeId, includeSubtypes } };
475
561
  }
476
- function validatePredicate(predicate, shape, path, ctx) {
562
+ function validatePredicate(predicate, shape, admissionState, path, ctx) {
477
563
  switch (predicate.op) {
478
564
  case "and":
479
565
  case "or":
@@ -482,12 +568,12 @@ function validatePredicate(predicate, shape, path, ctx) {
482
568
  }
483
569
  return {
484
570
  ...predicate,
485
- items: predicate.items.map((item, index) => validatePredicate(item, shape, `${path}.items[${index}]`, ctx))
571
+ items: predicate.items.map((item, index) => validatePredicate(item, shape, admissionState, `${path}.items[${index}]`, ctx))
486
572
  };
487
573
  case "not":
488
574
  return {
489
575
  ...predicate,
490
- item: validatePredicate(predicate.item, shape, `${path}.item`, ctx)
576
+ item: validatePredicate(predicate.item, shape, admissionState, `${path}.item`, ctx)
491
577
  };
492
578
  case "eq":
493
579
  case "neq":
@@ -498,6 +584,12 @@ function validatePredicate(predicate, shape, path, ctx) {
498
584
  const { scalarKind: _authoredScalarKind, ...authoredPredicate } = predicate;
499
585
  const scalarKind = resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx);
500
586
  validatePredicateValue(predicate.propertyId, predicate.value, shape, path, ctx);
587
+ admitProperty(ctx, {
588
+ state: admissionState,
589
+ propertyId: predicate.propertyId,
590
+ use: "filter",
591
+ path
592
+ });
501
593
  return {
502
594
  ...authoredPredicate,
503
595
  value: normalizeObjectQueryValue(predicate.value, scalarKind),
@@ -513,6 +605,12 @@ function validatePredicate(predicate, shape, path, ctx) {
513
605
  predicate.values.forEach((value, index) => {
514
606
  validatePredicateValue(predicate.propertyId, value, shape, `${path}.values[${index}]`, ctx);
515
607
  });
608
+ admitProperty(ctx, {
609
+ state: admissionState,
610
+ propertyId: predicate.propertyId,
611
+ use: "filter",
612
+ path
613
+ });
516
614
  return {
517
615
  ...authoredPredicate,
518
616
  values: predicate.values.map((value) => normalizeObjectQueryValue(value, scalarKind)),
@@ -521,6 +619,12 @@ function validatePredicate(predicate, shape, path, ctx) {
521
619
  }
522
620
  case "exists":
523
621
  resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx);
622
+ admitProperty(ctx, {
623
+ state: admissionState,
624
+ propertyId: predicate.propertyId,
625
+ use: "filter",
626
+ path
627
+ });
524
628
  if (typeof predicate.value !== "boolean") {
525
629
  addIssue2(ctx, path, "invalid_exists_value", "Predicate 'exists' value must be boolean");
526
630
  }
@@ -528,6 +632,12 @@ function validatePredicate(predicate, shape, path, ctx) {
528
632
  case "contains":
529
633
  resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx);
530
634
  validateContainsValue(predicate.propertyId, predicate.value, shape, path, ctx);
635
+ admitProperty(ctx, {
636
+ state: admissionState,
637
+ propertyId: predicate.propertyId,
638
+ use: "filter",
639
+ path
640
+ });
531
641
  return predicate;
532
642
  }
533
643
  }
@@ -629,7 +739,7 @@ function validateContainsValue(propertyId, value, shape, path, ctx) {
629
739
  }
630
740
  }
631
741
  }
632
- function validateTextQuery(query, fields, shape, path, ctx) {
742
+ function validateTextQuery(query, fields, shape, admissionState, path, ctx) {
633
743
  if (query.trim().length === 0) {
634
744
  addIssue2(ctx, path, "empty_text_query", "Text query must not be empty");
635
745
  }
@@ -643,6 +753,13 @@ function validateTextQuery(query, fields, shape, path, ctx) {
643
753
  if (fieldsByObjectType)
644
754
  fieldsByObjectType[objectType.id] = uniqueStrings(fieldIds);
645
755
  for (const fieldId of fieldIds) {
756
+ admitProperty(ctx, {
757
+ state: admissionState,
758
+ propertyId: fieldId,
759
+ objectTypeId: objectType.id,
760
+ use: "text",
761
+ path: `${path}.fields`
762
+ });
646
763
  const property = getProperty(objectType, fieldId);
647
764
  if (!property) {
648
765
  addIssue2(ctx, path, "unknown_text_field", `Text query references unknown property '${fieldId}' on '${objectType.id}'`);
@@ -658,7 +775,7 @@ function validateTextQuery(query, fields, shape, path, ctx) {
658
775
  }
659
776
  return fieldsByObjectType ? { fieldsByObjectType } : {};
660
777
  }
661
- function validateVectorQuery(vector, propertyId, k, shape, path, ctx) {
778
+ function validateVectorQuery(vector, propertyId, k, shape, admissionState, path, ctx) {
662
779
  if (!Number.isInteger(k) || k <= 0) {
663
780
  addIssue2(ctx, path, "invalid_vector_k", "Vector query k must be a positive integer");
664
781
  }
@@ -669,6 +786,13 @@ function validateVectorQuery(vector, propertyId, k, shape, path, ctx) {
669
786
  addIssue2(ctx, path, "invalid_vector_value", "Vector query vector values must be finite numbers");
670
787
  }
671
788
  for (const objectType of getObjectTypesForResult(shape, ctx)) {
789
+ admitProperty(ctx, {
790
+ state: admissionState,
791
+ propertyId,
792
+ objectTypeId: objectType.id,
793
+ use: "vector",
794
+ path
795
+ });
672
796
  const property = getProperty(objectType, propertyId);
673
797
  if (!property) {
674
798
  addIssue2(ctx, path, "unknown_vector_property", `Vector query references unknown property '${propertyId}' on '${objectType.id}'`);
@@ -749,21 +873,30 @@ function validateIncomingTraverse(linkId, sourceObjectTypeId, shape, path, ctx)
749
873
  }
750
874
  return { objectTypeIds: uniqueStrings(sourceTypeIds) };
751
875
  }
752
- function validateExpansions(expansions, shape, path, ctx) {
753
- return expansions.map((expansion, index) => validateExpansion(expansion, shape, `${path}[${index}]`, ctx));
876
+ function validateExpansions(expansions, shape, admissionState, path, ctx) {
877
+ return expansions.map((expansion, index) => validateExpansion(expansion, shape, admissionState, `${path}[${index}]`, ctx));
754
878
  }
755
- function validateExpansion(expansion, shape, path, ctx) {
879
+ function validateExpansion(expansion, shape, admissionState, path, ctx) {
756
880
  if (!expansion.linkId) {
757
881
  addIssue2(ctx, path, "missing_expand_link", "expand.linkId is required");
758
882
  return expansion;
759
883
  }
760
884
  const targetShape = expansion.direction === "incoming" ? resolveIncomingExpansionTargets(expansion.linkId, expansion.sourceObjectTypeId, shape, path, ctx) : resolveOutgoingExpansionTargets(expansion.linkId, expansion.sourceObjectTypeId, shape, path, ctx);
885
+ const targetAdmissionState = admitTransition(ctx, ctx.admission.edge({
886
+ state: admissionState,
887
+ result: targetShape,
888
+ linkId: expansion.linkId,
889
+ direction: expansion.direction,
890
+ sourceObjectTypeId: expansion.sourceObjectTypeId,
891
+ use: "expand",
892
+ path
893
+ }));
761
894
  for (const targetTypeId of targetShape.objectTypeIds) {
762
895
  ctx.touchedObjectTypeIds.add(targetTypeId);
763
896
  }
764
897
  validateExpansionLimit(expansion.limit, path, ctx);
765
- const orderBy = expansion.orderBy ? validateSortFields(expansion.orderBy, targetShape, `${path}.orderBy`, ctx) : undefined;
766
- const expand = expansion.expand ? validateExpansions(expansion.expand, targetShape, `${path}.expand`, ctx) : undefined;
898
+ const orderBy = expansion.orderBy ? validateSortFields(expansion.orderBy, targetShape, targetAdmissionState, "expand.orderBy", `${path}.orderBy`, ctx) : undefined;
899
+ const expand = expansion.expand ? validateExpansions(expansion.expand, targetShape, targetAdmissionState, `${path}.expand`, ctx) : undefined;
767
900
  return { ...expansion, orderBy, expand };
768
901
  }
769
902
  function resolveOutgoingExpansionTargets(linkId, sourceObjectTypeId, shape, path, ctx) {
@@ -833,7 +966,11 @@ function validateExpansionLimit(limit, path, ctx) {
833
966
  function validateSet(inputs, op, path, ctx) {
834
967
  if (inputs.length === 0) {
835
968
  addIssue2(ctx, path, "empty_set", `Set operation '${op}' must include at least one input`);
836
- return { result: { objectTypeIds: [] }, query: { kind: "set", op, inputs } };
969
+ return {
970
+ result: { objectTypeIds: [] },
971
+ query: { kind: "set", op, inputs },
972
+ admissionState: ctx.admission.empty()
973
+ };
837
974
  }
838
975
  const results = inputs.map((input, index) => validateQueryNode(input, `${path}.inputs[${index}]`, ctx));
839
976
  const first = results[0]?.result ?? { objectTypeIds: [] };
@@ -845,10 +982,15 @@ function validateSet(inputs, op, path, ctx) {
845
982
  });
846
983
  return {
847
984
  result: first,
848
- query: { kind: "set", op, inputs: results.map((result) => result.query) }
985
+ query: { kind: "set", op, inputs: results.map((result) => result.query) },
986
+ admissionState: ctx.admission.set({
987
+ op,
988
+ states: results.map((result) => result.admissionState),
989
+ path
990
+ })
849
991
  };
850
992
  }
851
- function validateSortFields(fields, shape, path, ctx) {
993
+ function validateSortFields(fields, shape, admissionState, use, path, ctx) {
852
994
  if (fields.length === 0) {
853
995
  addIssue2(ctx, path, "empty_sort", "Sort must include at least one field");
854
996
  return [];
@@ -865,6 +1007,12 @@ function validateSortFields(fields, shape, path, ctx) {
865
1007
  seen.add(key);
866
1008
  if (field.kind === "relevance")
867
1009
  return field;
1010
+ admitProperty(ctx, {
1011
+ state: admissionState,
1012
+ propertyId: field.propertyId,
1013
+ use,
1014
+ path: `${path}.fields[${index}]`
1015
+ });
868
1016
  const { scalarKind: _authoredScalarKind, ...authoredField } = field;
869
1017
  const schemas = [];
870
1018
  for (const { objectType, property } of getPropertiesForResult(field.propertyId, shape, `${path}.fields[${index}]`, ctx)) {
@@ -900,7 +1048,7 @@ function validatePage(pageSize, pageToken, path, ctx) {
900
1048
  addIssue2(ctx, path, "empty_page_token", "pageToken must not be empty when provided");
901
1049
  }
902
1050
  }
903
- function validateProjection(properties, shape, path, ctx) {
1051
+ function validateProjection(properties, shape, admissionState, path, ctx) {
904
1052
  if (!properties)
905
1053
  return;
906
1054
  if (properties.length === 0) {
@@ -908,6 +1056,12 @@ function validateProjection(properties, shape, path, ctx) {
908
1056
  }
909
1057
  const seen = new Set;
910
1058
  properties.forEach((propertyId, index) => {
1059
+ admitProperty(ctx, {
1060
+ state: admissionState,
1061
+ propertyId,
1062
+ use: "project",
1063
+ path: `${path}.properties[${index}]`
1064
+ });
911
1065
  if (seen.has(propertyId)) {
912
1066
  addIssue2(ctx, `${path}.properties[${index}]`, "duplicate_projection_property", `Duplicate projected property '${propertyId}'`);
913
1067
  }
@@ -1011,6 +1165,20 @@ function keyForTypeIds(typeIds) {
1011
1165
  function uniqueStrings(values) {
1012
1166
  return [...new Set(values)];
1013
1167
  }
1168
+ function admitTransition(ctx, transition) {
1169
+ if (transition.denial)
1170
+ recordAdmissionDenial(ctx, transition.denial);
1171
+ return transition.state;
1172
+ }
1173
+ function admitProperty(ctx, input) {
1174
+ const denial = ctx.admission.property(input);
1175
+ if (denial)
1176
+ recordAdmissionDenial(ctx, denial);
1177
+ }
1178
+ function recordAdmissionDenial(ctx, denial) {
1179
+ if (ctx.admissionDenials.length === 0)
1180
+ ctx.admissionDenials.push(denial);
1181
+ }
1014
1182
  function addIssue2(ctx, path, code, message) {
1015
1183
  ctx.issues.push({ path, code, message });
1016
1184
  }
@@ -1029,7 +1197,7 @@ async function executeObjectQuery(input, options) {
1029
1197
  maxRefs: options.maxRefs,
1030
1198
  normalize: false
1031
1199
  });
1032
- assertQueryViewable(validated, options);
1200
+ assertQueryViewable(input.projectId, validated, options);
1033
1201
  const capabilities = options.storage.queryCapabilities();
1034
1202
  const hasQueryObjects = typeof options.storage.queryObjects === "function";
1035
1203
  const hasCountObjects = typeof options.storage.countObjects === "function";
@@ -1082,7 +1250,7 @@ async function countObjects(input, options) {
1082
1250
  maxRefs: options.maxRefs,
1083
1251
  normalize: false
1084
1252
  });
1085
- assertQueryViewable(validated, options);
1253
+ assertQueryViewable(input.projectId, validated, options);
1086
1254
  const capabilities = options.storage.queryCapabilities();
1087
1255
  const hasQueryObjects = typeof options.storage.queryObjects === "function";
1088
1256
  const hasCountObjects = typeof options.storage.countObjects === "function";
@@ -1136,7 +1304,7 @@ async function existsObjects(input, options) {
1136
1304
  maxRefs: options.maxRefs,
1137
1305
  normalize: false
1138
1306
  });
1139
- assertQueryViewable(validated, options);
1307
+ assertQueryViewable(input.projectId, validated, options);
1140
1308
  const capabilities = options.storage.queryCapabilities();
1141
1309
  const hasQueryObjects = typeof options.storage.queryObjects === "function";
1142
1310
  const hasCountObjects = typeof options.storage.countObjects === "function";
@@ -1190,8 +1358,8 @@ async function facetObjects(input, options) {
1190
1358
  maxRefs: options.maxRefs,
1191
1359
  normalize: false
1192
1360
  });
1193
- assertQueryViewable(validated, options);
1194
- const facets = validateFacetRequests(input.facets, validated.result.objectTypeIds, options);
1361
+ assertQueryViewable(input.projectId, validated, options);
1362
+ const facets = validateObjectFacetRequests(input.facets, validated.result.objectTypeIds, options);
1195
1363
  const aggregateQuery = stripOuterRowShape(validated.query);
1196
1364
  const capabilities = options.storage.queryCapabilities();
1197
1365
  const hasQueryObjects = typeof options.storage.queryObjects === "function";
@@ -1240,10 +1408,10 @@ async function facetObjects(input, options) {
1240
1408
  plan
1241
1409
  };
1242
1410
  }
1243
- function assertQueryViewable(validated, authorization) {
1411
+ function assertQueryViewable(projectId, validated, authorization) {
1244
1412
  if (!authorization.runtimeAuthorization && !authorization.authorization)
1245
1413
  return;
1246
- assertAuthorized(authorization, {
1414
+ assertAuthorized({ projectId, ...authorization }, {
1247
1415
  kind: "object.query",
1248
1416
  touchedObjectTypeIds: validated.touchedObjectTypeIds
1249
1417
  });
@@ -1508,31 +1676,20 @@ async function collectOutgoingEdges(projectId, parents, expansion, options) {
1508
1676
  });
1509
1677
  }
1510
1678
  async function collectIncomingEdges(projectId, parents, expansion, options) {
1511
- const incident = await options.storage.listIncidentLinksBatch({
1679
+ const linksByKey = await options.storage.listLinksBatch({
1512
1680
  projectId,
1681
+ direction: "incoming",
1513
1682
  items: parents.map((parent) => ({
1514
1683
  objectTypeId: parent.objectTypeId,
1515
- objectId: parent.primaryId
1684
+ objectId: parent.primaryId,
1685
+ linkId: expansion.linkId
1516
1686
  }))
1517
1687
  });
1518
- const byTarget = new Map;
1519
- for (const link of incident) {
1520
- if (link.linkId !== expansion.linkId)
1521
- continue;
1522
- if (expansion.sourceObjectTypeId && link.sourceTypeId !== expansion.sourceObjectTypeId)
1523
- continue;
1524
- const key = targetKey(link.targetTypeId, link.targetId);
1525
- const bucket = byTarget.get(key);
1526
- if (bucket)
1527
- bucket.push(link);
1528
- else
1529
- byTarget.set(key, [link]);
1530
- }
1531
1688
  return parents.map((parent) => {
1532
- const links = byTarget.get(targetKey(parent.objectTypeId, parent.primaryId));
1689
+ const links = linksByKey.get(linkBatchKey(parent.objectTypeId, parent.primaryId, expansion.linkId));
1533
1690
  if (!links)
1534
1691
  return [];
1535
- return links.map((link) => ({
1692
+ return links.filter((link) => !expansion.sourceObjectTypeId || link.sourceTypeId === expansion.sourceObjectTypeId).map((link) => ({
1536
1693
  neighborTypeId: link.sourceTypeId,
1537
1694
  neighborId: link.sourceId,
1538
1695
  edgeProperties: link.properties
@@ -1750,12 +1907,21 @@ function stripOuterRowShape(query) {
1750
1907
  return query;
1751
1908
  }
1752
1909
  }
1753
- function validateFacetRequests(facets, objectTypeIds, options) {
1910
+ function validateObjectFacetRequests(facets, objectTypeIds, options) {
1754
1911
  const issues = [];
1755
1912
  const maxLimit = options.maxFacetLimit ?? DEFAULT_MAX_FACET_LIMIT;
1756
1913
  if (facets.length === 0) {
1757
1914
  addFacetIssue(issues, "$.facets", "empty_facets", "At least one facet is required");
1758
1915
  }
1916
+ if (facets.length > MAX_OBJECT_READ_FACETS) {
1917
+ throw new ObjectQueryValidationError([
1918
+ {
1919
+ path: "$.facets",
1920
+ code: "too_many_facets",
1921
+ message: `facets must include at most ${MAX_OBJECT_READ_FACETS} facet requests`
1922
+ }
1923
+ ]);
1924
+ }
1759
1925
  if (!Number.isInteger(maxLimit) || maxLimit <= 0) {
1760
1926
  addFacetIssue(issues, "$.maxFacetLimit", "invalid_facet_bound", "maxFacetLimit must be positive");
1761
1927
  }
@@ -2020,19 +2186,32 @@ var MAX_LINK_QUERY_OBJECTS = 1000;
2020
2186
  var MAX_LINK_PAGE_SIZE = 1000;
2021
2187
  var DEFAULT_LINK_PAGE_SIZE = 100;
2022
2188
  var LINK_PAGE_TOKEN_PREFIX = "link:v1:";
2023
- async function executeObjectQueryLinks(input, options) {
2024
- const direction = input.direction ?? "both";
2189
+ function preflightObjectQueryLinks(input, options) {
2190
+ const projectId = input.projectId;
2191
+ const query = input.query;
2192
+ const requestedDirection = input.direction;
2193
+ const linkId = input.linkId;
2194
+ const requestedIncludeObjects = input.includeObjects;
2195
+ const requestedPageSize = input.pageSize;
2196
+ const pageToken = input.pageToken;
2197
+ const direction = requestedDirection ?? "both";
2025
2198
  if (direction !== "outgoing" && direction !== "incoming" && direction !== "both") {
2026
2199
  throw new ObjectQueryExecutionError("invalid_link_direction", "direction must be 'outgoing', 'incoming', or 'both'", "$.direction");
2027
2200
  }
2028
- if (input.linkId !== undefined && input.linkId.length === 0) {
2201
+ if (linkId !== undefined && typeof linkId !== "string") {
2202
+ throw new ObjectQueryExecutionError("invalid_link_id", "linkId must be a string", "$.linkId");
2203
+ }
2204
+ if (linkId !== undefined && linkId.length === 0) {
2029
2205
  throw new ObjectQueryExecutionError("invalid_link_id", "linkId must not be empty", "$.linkId");
2030
2206
  }
2031
- const pageSize = input.pageSize ?? DEFAULT_LINK_PAGE_SIZE;
2207
+ if (requestedIncludeObjects !== undefined && typeof requestedIncludeObjects !== "boolean") {
2208
+ throw new ObjectQueryExecutionError("invalid_link_include_objects", "includeObjects must be a boolean", "$.includeObjects");
2209
+ }
2210
+ const pageSize = requestedPageSize ?? DEFAULT_LINK_PAGE_SIZE;
2032
2211
  if (!Number.isInteger(pageSize) || pageSize <= 0 || pageSize > MAX_LINK_PAGE_SIZE) {
2033
2212
  throw new ObjectQueryExecutionError("invalid_link_page_size", `pageSize must be an integer between 1 and ${MAX_LINK_PAGE_SIZE}`, "$.pageSize");
2034
2213
  }
2035
- const validated = validateObjectQuery(normalizeObjectQuery(input.query), {
2214
+ const validated = validateObjectQuery(normalizeObjectQuery(query), {
2036
2215
  ontology: options.ontology,
2037
2216
  maxLimit: options.maxLimit,
2038
2217
  maxPageSize: options.maxPageSize,
@@ -2040,12 +2219,25 @@ async function executeObjectQueryLinks(input, options) {
2040
2219
  normalize: false
2041
2220
  });
2042
2221
  assertLinkSelectorShape(validated.query);
2043
- const selectorQuery = validated.query;
2044
- const pageScope = linkPageScope(input.projectId, selectorQuery, direction, input.linkId);
2045
- const cursor = decodeLinkPageToken(input.pageToken, pageScope);
2222
+ const pageScope = linkPageScope(projectId, validated.query, direction, linkId);
2223
+ const cursor = decodeLinkPageToken(pageToken, pageScope);
2224
+ return {
2225
+ projectId,
2226
+ validated,
2227
+ direction,
2228
+ ...linkId === undefined ? {} : { linkId },
2229
+ includeObjects: requestedIncludeObjects ?? false,
2230
+ pageSize,
2231
+ ...cursor === undefined ? {} : { cursor },
2232
+ pageScope
2233
+ };
2234
+ }
2235
+ async function executeObjectQueryLinks(input, options) {
2236
+ const preflight = preflightObjectQueryLinks(input, options);
2237
+ const selectorQuery = preflight.validated.query;
2046
2238
  const boundedSelector = selectorQuery.kind === "page" ? selectorQuery : { kind: "limit", limit: MAX_LINK_QUERY_OBJECTS + 1, input: selectorQuery };
2047
2239
  const selection = await executeObjectQuery({
2048
- projectId: input.projectId,
2240
+ projectId: preflight.projectId,
2049
2241
  query: boundedSelector,
2050
2242
  includeTotal: false
2051
2243
  }, {
@@ -2061,16 +2253,16 @@ async function executeObjectQueryLinks(input, options) {
2061
2253
  }
2062
2254
  const endpointObjectTypeIds = visibleEndpointTypeIds(options);
2063
2255
  const page = await options.storage.queryLinks({
2064
- projectId: input.projectId,
2256
+ projectId: preflight.projectId,
2065
2257
  objectRefs: selected.map((row) => ({
2066
2258
  objectTypeId: row.objectTypeId,
2067
2259
  primaryId: row.primaryId
2068
2260
  })),
2069
- direction,
2070
- ...input.linkId === undefined ? {} : { linkId: input.linkId },
2261
+ direction: preflight.direction,
2262
+ ...preflight.linkId === undefined ? {} : { linkId: preflight.linkId },
2071
2263
  ...endpointObjectTypeIds === undefined ? {} : { endpointObjectTypeIds },
2072
- ...cursor === undefined ? {} : { after: cursor },
2073
- limit: pageSize
2264
+ ...preflight.cursor === undefined ? {} : { after: preflight.cursor },
2265
+ limit: preflight.pageSize
2074
2266
  });
2075
2267
  const lastLink = page.links.at(-1);
2076
2268
  let nextPageToken;
@@ -2078,9 +2270,9 @@ async function executeObjectQueryLinks(input, options) {
2078
2270
  if (!lastLink) {
2079
2271
  throw new Error("[Sixb] Object storage returned hasMore for an empty link page.");
2080
2272
  }
2081
- nextPageToken = encodeLinkPageToken(objectLinkCursor(lastLink), pageScope);
2273
+ nextPageToken = encodeLinkPageToken(objectLinkCursor(lastLink), preflight.pageScope);
2082
2274
  }
2083
- const objects = input.includeObjects ? await hydrateLinkQueryObjects(input.projectId, selected, page.links, options.storage) : [];
2275
+ const objects = preflight.includeObjects ? await hydrateLinkQueryObjects(preflight.projectId, selected, page.links, options.storage) : [];
2084
2276
  return {
2085
2277
  objects,
2086
2278
  links: page.links,
@@ -2193,6 +2385,6 @@ async function hydrateLinkQueryObjects(projectId, selected, links, storage) {
2193
2385
  return row ? [row] : [];
2194
2386
  });
2195
2387
  }
2196
- export { planObjectQuery, validateObjectQuery, collectObjectQueryValidationIssues, resolveObjectQueryResultShape, executeObjectQuery, countObjects, existsObjects, facetObjects, explainObjectQuery, executeObjectQueryLinks };
2388
+ export { planObjectQuery, validateObjectQuery, validateObjectQueryWithAdmission, collectObjectQueryValidationIssues, resolveObjectQueryResultShape, executeObjectQuery, countObjects, existsObjects, facetObjects, validateObjectFacetRequests, explainObjectQuery, preflightObjectQueryLinks, executeObjectQueryLinks };
2197
2389
 
2198
- //# debugId=6AF3162EF872D1D064756E2164756E21
2390
+ //# debugId=B113F0A1FC28DC4164756E2164756E21