@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
@@ -13,8 +13,10 @@ import { ObjectQueryValidationError } from "./errors"
13
13
  import type {
14
14
  ObjectExpansion,
15
15
  ObjectQuery,
16
+ ObjectQueryDirection,
16
17
  ObjectQueryPredicate,
17
18
  ObjectQueryResultShape,
19
+ ObjectQuerySetOperation,
18
20
  ObjectQuerySortField,
19
21
  QueryScalarKind,
20
22
  } from "./ir"
@@ -41,6 +43,71 @@ export interface ObjectQueryValidationOptions {
41
43
  normalize?: boolean
42
44
  }
43
45
 
46
+ /** Opaque semantic state carried by the canonical query validator for an internal admission. */
47
+ export type ObjectQueryAdmissionState = object
48
+
49
+ export type ObjectQueryPropertyUse =
50
+ | "filter"
51
+ | "text"
52
+ | "vector"
53
+ | "sort"
54
+ | "project"
55
+ | "expand.orderBy"
56
+ | "facet"
57
+
58
+ export type ObjectQueryEdgeUse = "traverse" | "expand" | "queryLinks"
59
+
60
+ export interface ObjectQueryAdmissionTransition {
61
+ readonly state: ObjectQueryAdmissionState
62
+ /** Recorded during the walk and raised only after ordinary validation succeeds. */
63
+ readonly denial?: Error
64
+ }
65
+
66
+ /**
67
+ * Internal semantic admission reducer driven by the canonical query validator.
68
+ *
69
+ * It deliberately has no AST visitor: validation owns recursion through query nodes, predicates,
70
+ * and expansions, while an admission only reduces the semantic sources, properties, edges, and
71
+ * set operations it observes.
72
+ */
73
+ export interface ObjectQuerySemanticAdmission {
74
+ empty(): ObjectQueryAdmissionState
75
+ source(input: {
76
+ readonly kind: "start" | "refs"
77
+ readonly result: ObjectQueryResultShape
78
+ readonly objectTypeId?: string
79
+ readonly refs?: readonly ObjectRef[]
80
+ readonly path: string
81
+ }): ObjectQueryAdmissionTransition
82
+ property(input: {
83
+ readonly state: ObjectQueryAdmissionState
84
+ readonly propertyId: string
85
+ readonly objectTypeId?: string
86
+ readonly use: ObjectQueryPropertyUse
87
+ readonly path: string
88
+ }): Error | undefined
89
+ edge(input: {
90
+ readonly state: ObjectQueryAdmissionState
91
+ /** Ontology-resolved shape after following this edge. */
92
+ readonly result: ObjectQueryResultShape
93
+ readonly linkId: string
94
+ readonly direction: ObjectQueryDirection
95
+ readonly sourceObjectTypeId?: string
96
+ readonly use: ObjectQueryEdgeUse
97
+ readonly path: string
98
+ }): ObjectQueryAdmissionTransition
99
+ set(input: {
100
+ readonly op: ObjectQuerySetOperation
101
+ readonly states: readonly ObjectQueryAdmissionState[]
102
+ readonly path: string
103
+ }): ObjectQueryAdmissionState
104
+ }
105
+
106
+ export interface AdmittedObjectQuery extends ValidatedObjectQuery {
107
+ /** Root provenance for terminal-specific checks such as facets and physical link queries. */
108
+ admissionState: ObjectQueryAdmissionState
109
+ }
110
+
44
111
  type QueryValidationContext = Required<
45
112
  Pick<ObjectQueryValidationOptions, "maxLimit" | "maxPageSize" | "maxRefs">
46
113
  > & {
@@ -48,13 +115,19 @@ type QueryValidationContext = Required<
48
115
  valueTypesById: ReadonlyMap<string, ValueType>
49
116
  issues: ObjectQueryValidationIssue[]
50
117
  touchedObjectTypeIds: Set<string>
118
+ admission: ObjectQuerySemanticAdmission
119
+ admissionDenials: Error[]
51
120
  }
52
121
 
53
- interface QueryValidationResult {
122
+ interface QueryNodeValidation {
54
123
  result: ObjectQueryResultShape
55
124
  query: ObjectQuery
56
125
  }
57
126
 
127
+ interface QueryValidationResult extends QueryNodeValidation {
128
+ admissionState: ObjectQueryAdmissionState
129
+ }
130
+
58
131
  interface TextFieldResolution {
59
132
  fieldsByObjectType?: Record<string, string[]>
60
133
  }
@@ -63,22 +136,55 @@ const DEFAULT_MAX_LIMIT = 1_000
63
136
  const DEFAULT_MAX_PAGE_SIZE = 1_000
64
137
  const DEFAULT_MAX_REFS = 1_000
65
138
 
139
+ const NOOP_ADMISSION_STATE = Object.freeze({})
140
+ const NOOP_QUERY_ADMISSION: ObjectQuerySemanticAdmission = Object.freeze({
141
+ empty: () => NOOP_ADMISSION_STATE,
142
+ source: () => ({ state: NOOP_ADMISSION_STATE }),
143
+ property: () => undefined,
144
+ edge: (input: Parameters<ObjectQuerySemanticAdmission["edge"]>[0]) => ({
145
+ state: input.state,
146
+ }),
147
+ set: (input: Parameters<ObjectQuerySemanticAdmission["set"]>[0]) =>
148
+ input.states[0] ?? NOOP_ADMISSION_STATE,
149
+ })
150
+
66
151
  export function validateObjectQuery(
67
152
  query: ObjectQuery,
68
153
  options: ObjectQueryValidationOptions
69
154
  ): ValidatedObjectQuery {
155
+ const admitted = validateObjectQueryWithAdmission(query, options, NOOP_QUERY_ADMISSION)
156
+ return {
157
+ query: admitted.query,
158
+ result: admitted.result,
159
+ touchedObjectTypeIds: admitted.touchedObjectTypeIds,
160
+ }
161
+ }
162
+
163
+ /**
164
+ * Validate and semantically admit one query in the same canonical walk.
165
+ *
166
+ * This is an internal direct-file API. It is intentionally absent from public query barrels.
167
+ */
168
+ export function validateObjectQueryWithAdmission(
169
+ query: ObjectQuery,
170
+ options: ObjectQueryValidationOptions,
171
+ admission: ObjectQuerySemanticAdmission
172
+ ): AdmittedObjectQuery {
70
173
  const normalized = options.normalize === false ? query : normalizeObjectQuery(query)
71
- const ctx = createValidationContext(options)
174
+ const ctx = createValidationContext(options, admission)
72
175
  const validation = validateQueryNode(normalized, "$", ctx)
73
176
 
74
177
  if (ctx.issues.length > 0) {
75
178
  throw new ObjectQueryValidationError(ctx.issues)
76
179
  }
180
+ const denial = ctx.admissionDenials[0]
181
+ if (denial) throw denial
77
182
 
78
183
  return {
79
184
  query: validation.query,
80
185
  result: validation.result,
81
186
  touchedObjectTypeIds: [...ctx.touchedObjectTypeIds],
187
+ admissionState: validation.admissionState,
82
188
  }
83
189
  }
84
190
 
@@ -87,7 +193,7 @@ export function collectObjectQueryValidationIssues(
87
193
  options: ObjectQueryValidationOptions
88
194
  ): readonly ObjectQueryValidationIssue[] {
89
195
  const normalized = options.normalize === false ? query : normalizeObjectQuery(query)
90
- const ctx = createValidationContext(options)
196
+ const ctx = createValidationContext(options, NOOP_QUERY_ADMISSION)
91
197
  validateQueryNode(normalized, "$", ctx)
92
198
  return ctx.issues
93
199
  }
@@ -99,7 +205,10 @@ export function resolveObjectQueryResultShape(
99
205
  return validateObjectQuery(query, options).result
100
206
  }
101
207
 
102
- function createValidationContext(options: ObjectQueryValidationOptions): QueryValidationContext {
208
+ function createValidationContext(
209
+ options: ObjectQueryValidationOptions,
210
+ admission: ObjectQuerySemanticAdmission
211
+ ): QueryValidationContext {
103
212
  return {
104
213
  ontology: options.ontology,
105
214
  valueTypesById: options.ontology.getValueTypesById(),
@@ -108,6 +217,8 @@ function createValidationContext(options: ObjectQueryValidationOptions): QueryVa
108
217
  maxRefs: options.maxRefs ?? DEFAULT_MAX_REFS,
109
218
  issues: [],
110
219
  touchedObjectTypeIds: new Set<string>(),
220
+ admission,
221
+ admissionDenials: [],
111
222
  }
112
223
  }
113
224
 
@@ -133,18 +244,61 @@ function dispatchQueryNode(
133
244
  ctx: QueryValidationContext
134
245
  ): QueryValidationResult {
135
246
  switch (query.kind) {
136
- case "start":
137
- return validateStart(query.objectTypeId, query.includeSubtypes, path, ctx)
138
- case "refs":
139
- return validateRefs(query.refs, path, ctx)
247
+ case "start": {
248
+ const validation = validateStart(query.objectTypeId, query.includeSubtypes, path, ctx)
249
+ return {
250
+ ...validation,
251
+ admissionState: admitTransition(
252
+ ctx,
253
+ ctx.admission.source({
254
+ kind: "start",
255
+ result: validation.result,
256
+ objectTypeId: query.objectTypeId,
257
+ path,
258
+ })
259
+ ),
260
+ }
261
+ }
262
+ case "refs": {
263
+ const validation = validateRefs(query.refs, path, ctx)
264
+ return {
265
+ ...validation,
266
+ admissionState: admitTransition(
267
+ ctx,
268
+ ctx.admission.source({
269
+ kind: "refs",
270
+ result: validation.result,
271
+ refs: validation.query.kind === "refs" ? validation.query.refs : query.refs,
272
+ path,
273
+ })
274
+ ),
275
+ }
276
+ }
140
277
  case "filter": {
141
278
  const input = validateQueryNode(query.input, `${path}.input`, ctx)
142
- const predicate = validatePredicate(query.predicate, input.result, `${path}.predicate`, ctx)
143
- return { result: input.result, query: { ...query, input: input.query, predicate } }
279
+ const predicate = validatePredicate(
280
+ query.predicate,
281
+ input.result,
282
+ input.admissionState,
283
+ `${path}.predicate`,
284
+ ctx
285
+ )
286
+ return {
287
+ result: input.result,
288
+ query: { ...query, input: input.query, predicate },
289
+ admissionState: input.admissionState,
290
+ }
144
291
  }
145
292
  case "text": {
146
293
  const input = validateQueryNode(query.input, `${path}.input`, ctx)
147
- const textFields = validateTextQuery(query.query, query.fields, input.result, path, ctx)
294
+ const textFields = validateTextQuery(
295
+ query.query,
296
+ query.fields,
297
+ input.result,
298
+ input.admissionState,
299
+ path,
300
+ ctx
301
+ )
148
302
  return {
149
303
  result: input.result,
150
304
  query: {
@@ -153,48 +307,97 @@ function dispatchQueryNode(
153
307
  fields: query.fields,
154
308
  fieldsByObjectType: query.fields ? undefined : textFields.fieldsByObjectType,
155
309
  },
310
+ admissionState: input.admissionState,
156
311
  }
157
312
  }
158
313
  case "vector": {
159
314
  const input = validateQueryNode(query.input, `${path}.input`, ctx)
160
- validateVectorQuery(query.vector, query.propertyId, query.k, input.result, path, ctx)
161
- return { result: input.result, query: { ...query, input: input.query } }
315
+ validateVectorQuery(
316
+ query.vector,
317
+ query.propertyId,
318
+ query.k,
319
+ input.result,
320
+ input.admissionState,
321
+ path,
322
+ ctx
323
+ )
324
+ return {
325
+ result: input.result,
326
+ query: { ...query, input: input.query },
327
+ admissionState: input.admissionState,
328
+ }
162
329
  }
163
330
  case "traverse": {
164
331
  const input = validateQueryNode(query.input, `${path}.input`, ctx)
332
+ const result = validateTraverse(
333
+ query.linkId,
334
+ query.direction,
335
+ query.sourceObjectTypeId,
336
+ input.result,
337
+ path,
338
+ ctx
339
+ )
165
340
  return {
166
- result: validateTraverse(
167
- query.linkId,
168
- query.direction,
169
- query.sourceObjectTypeId,
170
- input.result,
171
- path,
172
- ctx
173
- ),
341
+ result,
174
342
  query: { ...query, input: input.query },
343
+ admissionState: admitTransition(
344
+ ctx,
345
+ ctx.admission.edge({
346
+ state: input.admissionState,
347
+ result,
348
+ linkId: query.linkId,
349
+ direction: query.direction,
350
+ sourceObjectTypeId: query.sourceObjectTypeId,
351
+ use: "traverse",
352
+ path,
353
+ })
354
+ ),
175
355
  }
176
356
  }
177
357
  case "set":
178
358
  return validateSet(query.inputs, query.op, path, ctx)
179
359
  case "sort": {
180
360
  const input = validateQueryNode(query.input, `${path}.input`, ctx)
181
- const fields = validateSortFields(query.fields, input.result, path, ctx)
182
- return { result: input.result, query: { ...query, input: input.query, fields } }
361
+ const fields = validateSortFields(
362
+ query.fields,
363
+ input.result,
364
+ input.admissionState,
365
+ "sort",
366
+ path,
367
+ ctx
368
+ )
369
+ return {
370
+ result: input.result,
371
+ query: { ...query, input: input.query, fields },
372
+ admissionState: input.admissionState,
373
+ }
183
374
  }
184
375
  case "limit": {
185
376
  const input = validateQueryNode(query.input, `${path}.input`, ctx)
186
377
  validateLimit(query.limit, path, ctx)
187
- return { result: input.result, query: { ...query, input: input.query } }
378
+ return {
379
+ result: input.result,
380
+ query: { ...query, input: input.query },
381
+ admissionState: input.admissionState,
382
+ }
188
383
  }
189
384
  case "page": {
190
385
  const input = validateQueryNode(query.input, `${path}.input`, ctx)
191
386
  validatePage(query.pageSize, query.pageToken, path, ctx)
192
- return { result: input.result, query: { ...query, input: input.query } }
387
+ return {
388
+ result: input.result,
389
+ query: { ...query, input: input.query },
390
+ admissionState: input.admissionState,
391
+ }
193
392
  }
194
393
  case "project": {
195
394
  const input = validateQueryNode(query.input, `${path}.input`, ctx)
196
- validateProjection(query.properties, input.result, path, ctx)
197
- return { result: input.result, query: { ...query, input: input.query } }
395
+ validateProjection(query.properties, input.result, input.admissionState, path, ctx)
396
+ return {
397
+ result: input.result,
398
+ query: { ...query, input: input.query },
399
+ admissionState: input.admissionState,
400
+ }
198
401
  }
199
402
  case "expand": {
200
403
  const input = validateQueryNode(query.input, `${path}.input`, ctx)
@@ -203,10 +406,15 @@ function dispatchQueryNode(
203
406
  const expansions = validateExpansions(
204
407
  query.expansions,
205
408
  input.result,
409
+ input.admissionState,
206
410
  `${path}.expansions`,
207
411
  ctx
208
412
  )
209
- return { result: input.result, query: { ...query, input: input.query, expansions } }
413
+ return {
414
+ result: input.result,
415
+ query: { ...query, input: input.query, expansions },
416
+ admissionState: input.admissionState,
417
+ }
210
418
  }
211
419
  }
212
420
  }
@@ -215,7 +423,7 @@ function validateRefs(
215
423
  refs: readonly ObjectRef[],
216
424
  path: string,
217
425
  ctx: QueryValidationContext
218
- ): QueryValidationResult {
426
+ ): QueryNodeValidation {
219
427
  if (refs.length === 0) {
220
428
  addIssue(ctx, `${path}.refs`, "empty_refs", "refs must include at least one object reference")
221
429
  }
@@ -260,7 +468,7 @@ function validateStart(
260
468
  includeSubtypes: boolean | undefined,
261
469
  path: string,
262
470
  ctx: QueryValidationContext
263
- ): QueryValidationResult {
471
+ ): QueryNodeValidation {
264
472
  if (!objectTypeId) {
265
473
  addIssue(ctx, path, "missing_object_type", "start.objectTypeId is required")
266
474
  return { result: { objectTypeIds: [] }, query: { kind: "start", objectTypeId } }
@@ -281,6 +489,7 @@ function validateStart(
281
489
  function validatePredicate(
282
490
  predicate: ObjectQueryPredicate,
283
491
  shape: ObjectQueryResultShape,
492
+ admissionState: ObjectQueryAdmissionState,
284
493
  path: string,
285
494
  ctx: QueryValidationContext
286
495
  ): ObjectQueryPredicate {
@@ -298,13 +507,13 @@ function validatePredicate(
298
507
  return {
299
508
  ...predicate,
300
509
  items: predicate.items.map((item, index) =>
301
- validatePredicate(item, shape, `${path}.items[${index}]`, ctx)
510
+ validatePredicate(item, shape, admissionState, `${path}.items[${index}]`, ctx)
302
511
  ),
303
512
  }
304
513
  case "not":
305
514
  return {
306
515
  ...predicate,
307
- item: validatePredicate(predicate.item, shape, `${path}.item`, ctx),
516
+ item: validatePredicate(predicate.item, shape, admissionState, `${path}.item`, ctx),
308
517
  }
309
518
  case "eq":
310
519
  case "neq":
@@ -321,6 +530,12 @@ function validatePredicate(
321
530
  ctx
322
531
  )
323
532
  validatePredicateValue(predicate.propertyId, predicate.value, shape, path, ctx)
533
+ admitProperty(ctx, {
534
+ state: admissionState,
535
+ propertyId: predicate.propertyId,
536
+ use: "filter",
537
+ path,
538
+ })
324
539
  return {
325
540
  ...authoredPredicate,
326
541
  value: normalizeObjectQueryValue(predicate.value, scalarKind),
@@ -342,6 +557,12 @@ function validatePredicate(
342
557
  predicate.values.forEach((value, index) => {
343
558
  validatePredicateValue(predicate.propertyId, value, shape, `${path}.values[${index}]`, ctx)
344
559
  })
560
+ admitProperty(ctx, {
561
+ state: admissionState,
562
+ propertyId: predicate.propertyId,
563
+ use: "filter",
564
+ path,
565
+ })
345
566
  return {
346
567
  ...authoredPredicate,
347
568
  values: predicate.values.map((value) => normalizeObjectQueryValue(value, scalarKind)),
@@ -350,6 +571,12 @@ function validatePredicate(
350
571
  }
351
572
  case "exists":
352
573
  resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx)
574
+ admitProperty(ctx, {
575
+ state: admissionState,
576
+ propertyId: predicate.propertyId,
577
+ use: "filter",
578
+ path,
579
+ })
353
580
  if (typeof predicate.value !== "boolean") {
354
581
  addIssue(ctx, path, "invalid_exists_value", "Predicate 'exists' value must be boolean")
355
582
  }
@@ -357,6 +584,12 @@ function validatePredicate(
357
584
  case "contains":
358
585
  resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx)
359
586
  validateContainsValue(predicate.propertyId, predicate.value, shape, path, ctx)
587
+ admitProperty(ctx, {
588
+ state: admissionState,
589
+ propertyId: predicate.propertyId,
590
+ use: "filter",
591
+ path,
592
+ })
360
593
  return predicate
361
594
  }
362
595
  }
@@ -552,6 +785,7 @@ function validateTextQuery(
552
785
  query: string,
553
786
  fields: readonly string[] | undefined,
554
787
  shape: ObjectQueryResultShape,
788
+ admissionState: ObjectQueryAdmissionState,
555
789
  path: string,
556
790
  ctx: QueryValidationContext
557
791
  ): TextFieldResolution {
@@ -576,6 +810,13 @@ function validateTextQuery(
576
810
  if (fieldsByObjectType) fieldsByObjectType[objectType.id] = uniqueStrings(fieldIds)
577
811
 
578
812
  for (const fieldId of fieldIds) {
813
+ admitProperty(ctx, {
814
+ state: admissionState,
815
+ propertyId: fieldId,
816
+ objectTypeId: objectType.id,
817
+ use: "text",
818
+ path: `${path}.fields`,
819
+ })
579
820
  const property = getProperty(objectType, fieldId)
580
821
  if (!property) {
581
822
  addIssue(
@@ -609,6 +850,7 @@ function validateVectorQuery(
609
850
  propertyId: string,
610
851
  k: number,
611
852
  shape: ObjectQueryResultShape,
853
+ admissionState: ObjectQueryAdmissionState,
612
854
  path: string,
613
855
  ctx: QueryValidationContext
614
856
  ): void {
@@ -625,6 +867,13 @@ function validateVectorQuery(
625
867
  }
626
868
 
627
869
  for (const objectType of getObjectTypesForResult(shape, ctx)) {
870
+ admitProperty(ctx, {
871
+ state: admissionState,
872
+ propertyId,
873
+ objectTypeId: objectType.id,
874
+ use: "vector",
875
+ path,
876
+ })
628
877
  const property = getProperty(objectType, propertyId)
629
878
  if (!property) {
630
879
  addIssue(
@@ -795,17 +1044,19 @@ function validateIncomingTraverse(
795
1044
  function validateExpansions(
796
1045
  expansions: readonly ObjectExpansion[],
797
1046
  shape: ObjectQueryResultShape,
1047
+ admissionState: ObjectQueryAdmissionState,
798
1048
  path: string,
799
1049
  ctx: QueryValidationContext
800
1050
  ): ObjectExpansion[] {
801
1051
  return expansions.map((expansion, index) =>
802
- validateExpansion(expansion, shape, `${path}[${index}]`, ctx)
1052
+ validateExpansion(expansion, shape, admissionState, `${path}[${index}]`, ctx)
803
1053
  )
804
1054
  }
805
1055
 
806
1056
  function validateExpansion(
807
1057
  expansion: ObjectExpansion,
808
1058
  shape: ObjectQueryResultShape,
1059
+ admissionState: ObjectQueryAdmissionState,
809
1060
  path: string,
810
1061
  ctx: QueryValidationContext
811
1062
  ): ObjectExpansion {
@@ -830,6 +1081,18 @@ function validateExpansion(
830
1081
  path,
831
1082
  ctx
832
1083
  )
1084
+ const targetAdmissionState = admitTransition(
1085
+ ctx,
1086
+ ctx.admission.edge({
1087
+ state: admissionState,
1088
+ result: targetShape,
1089
+ linkId: expansion.linkId,
1090
+ direction: expansion.direction,
1091
+ sourceObjectTypeId: expansion.sourceObjectTypeId,
1092
+ use: "expand",
1093
+ path,
1094
+ })
1095
+ )
833
1096
 
834
1097
  // Expansion targets are touched types: the principal must be able to `view`
835
1098
  // every type a query hydrates, exactly like `start`/`traverse`. `dispatch`'s
@@ -841,10 +1104,17 @@ function validateExpansion(
841
1104
 
842
1105
  validateExpansionLimit(expansion.limit, path, ctx)
843
1106
  const orderBy = expansion.orderBy
844
- ? validateSortFields(expansion.orderBy, targetShape, `${path}.orderBy`, ctx)
1107
+ ? validateSortFields(
1108
+ expansion.orderBy,
1109
+ targetShape,
1110
+ targetAdmissionState,
1111
+ "expand.orderBy",
1112
+ `${path}.orderBy`,
1113
+ ctx
1114
+ )
845
1115
  : undefined
846
1116
  const expand = expansion.expand
847
- ? validateExpansions(expansion.expand, targetShape, `${path}.expand`, ctx)
1117
+ ? validateExpansions(expansion.expand, targetShape, targetAdmissionState, `${path}.expand`, ctx)
848
1118
  : undefined
849
1119
 
850
1120
  return { ...expansion, orderBy, expand }
@@ -996,7 +1266,11 @@ function validateSet(
996
1266
  ): QueryValidationResult {
997
1267
  if (inputs.length === 0) {
998
1268
  addIssue(ctx, path, "empty_set", `Set operation '${op}' must include at least one input`)
999
- return { result: { objectTypeIds: [] }, query: { kind: "set", op, inputs } }
1269
+ return {
1270
+ result: { objectTypeIds: [] },
1271
+ query: { kind: "set", op, inputs },
1272
+ admissionState: ctx.admission.empty(),
1273
+ }
1000
1274
  }
1001
1275
 
1002
1276
  const results = inputs.map((input, index) =>
@@ -1019,12 +1293,19 @@ function validateSet(
1019
1293
  return {
1020
1294
  result: first,
1021
1295
  query: { kind: "set", op, inputs: results.map((result) => result.query) },
1296
+ admissionState: ctx.admission.set({
1297
+ op,
1298
+ states: results.map((result) => result.admissionState),
1299
+ path,
1300
+ }),
1022
1301
  }
1023
1302
  }
1024
1303
 
1025
1304
  function validateSortFields(
1026
1305
  fields: readonly ObjectQuerySortField[],
1027
1306
  shape: ObjectQueryResultShape,
1307
+ admissionState: ObjectQueryAdmissionState,
1308
+ use: Extract<ObjectQueryPropertyUse, "sort" | "expand.orderBy">,
1028
1309
  path: string,
1029
1310
  ctx: QueryValidationContext
1030
1311
  ): ObjectQuerySortField[] {
@@ -1057,6 +1338,13 @@ function validateSortFields(
1057
1338
 
1058
1339
  if (field.kind === "relevance") return field
1059
1340
 
1341
+ admitProperty(ctx, {
1342
+ state: admissionState,
1343
+ propertyId: field.propertyId,
1344
+ use,
1345
+ path: `${path}.fields[${index}]`,
1346
+ })
1347
+
1060
1348
  const { scalarKind: _authoredScalarKind, ...authoredField } = field
1061
1349
 
1062
1350
  const schemas: Schema[] = []
@@ -1132,6 +1420,7 @@ function validatePage(
1132
1420
  function validateProjection(
1133
1421
  properties: readonly string[] | undefined,
1134
1422
  shape: ObjectQueryResultShape,
1423
+ admissionState: ObjectQueryAdmissionState,
1135
1424
  path: string,
1136
1425
  ctx: QueryValidationContext
1137
1426
  ): void {
@@ -1142,6 +1431,12 @@ function validateProjection(
1142
1431
 
1143
1432
  const seen = new Set<string>()
1144
1433
  properties.forEach((propertyId, index) => {
1434
+ admitProperty(ctx, {
1435
+ state: admissionState,
1436
+ propertyId,
1437
+ use: "project",
1438
+ path: `${path}.properties[${index}]`,
1439
+ })
1145
1440
  if (seen.has(propertyId)) {
1146
1441
  addIssue(
1147
1442
  ctx,
@@ -1327,6 +1622,28 @@ function uniqueStrings(values: readonly string[]): string[] {
1327
1622
  return [...new Set(values)]
1328
1623
  }
1329
1624
 
1625
+ function admitTransition(
1626
+ ctx: QueryValidationContext,
1627
+ transition: ObjectQueryAdmissionTransition
1628
+ ): ObjectQueryAdmissionState {
1629
+ if (transition.denial) recordAdmissionDenial(ctx, transition.denial)
1630
+ return transition.state
1631
+ }
1632
+
1633
+ function admitProperty(
1634
+ ctx: QueryValidationContext,
1635
+ input: Parameters<ObjectQuerySemanticAdmission["property"]>[0]
1636
+ ): void {
1637
+ const denial = ctx.admission.property(input)
1638
+ if (denial) recordAdmissionDenial(ctx, denial)
1639
+ }
1640
+
1641
+ function recordAdmissionDenial(ctx: QueryValidationContext, denial: Error): void {
1642
+ // Only the first deterministic denial is observable. Keep walking so ordinary validation keeps
1643
+ // priority, but do not retain attacker-controlled messages for every rejected field or edge.
1644
+ if (ctx.admissionDenials.length === 0) ctx.admissionDenials.push(denial)
1645
+ }
1646
+
1330
1647
  function addIssue(ctx: QueryValidationContext, path: string, code: string, message: string): void {
1331
1648
  ctx.issues.push({ path, code, message })
1332
1649
  }
@@ -4,7 +4,6 @@
4
4
  * per-property telemetry appenders with compile-time unit and value type safety.
5
5
  */
6
6
  import type { ActionDefinition } from "../../actions"
7
- import { assertAuthorized, assertPrivileged } from "../../authorization"
8
7
  import type { ObjectLink, ObjectRef, ValueType } from "../../ontology"
9
8
  import { OntologyValidationError } from "../../ontology/errors"
10
9
  import type { LinkToken, ObjectTypeWithPropertyTokens } from "../../ontology/tokens"
@@ -28,9 +27,7 @@ export function createObjectByIdHandle<
28
27
  >(ctx: ExecutionObjectContext, primaryId: string): ObjectByIdHandle<TObjectType, TValueTypes> {
29
28
  const objectHandle = {
30
29
  get: async () => {
31
- assertAuthorized(ctx, { kind: "object.view", objectTypeId: ctx.objectType.id })
32
- const row = await ctx.storage.objects.getByPrimaryId({
33
- projectId: ctx.projectId,
30
+ const row = await ctx.objectReader.getByPrimaryId({
34
31
  objectTypeId: ctx.objectType.id,
35
32
  primaryId,
36
33
  })
@@ -38,13 +35,10 @@ export function createObjectByIdHandle<
38
35
  },
39
36
 
40
37
  listLinks: async (linkToken?: AnyLinkToken) => {
41
- // Link rows reveal target types; no link grant semantics exist yet.
42
- assertPrivileged(ctx, "listLinks")
43
38
  if (linkToken) {
44
39
  assertLinkTokenBelongsToObjectType(ctx.objectType, linkToken)
45
40
  }
46
- return ctx.storage.objects.listLinks({
47
- projectId: ctx.projectId,
41
+ return ctx.objectReader.listLinks({
48
42
  objectTypeId: ctx.objectType.id,
49
43
  objectId: primaryId,
50
44
  linkId: linkToken?.id,