@sixb/core 0.1.17 → 0.1.19

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 (715) hide show
  1. package/README.md +7 -6
  2. package/dist/actions/commit-edits.d.ts +7 -19
  3. package/dist/actions/commit-edits.d.ts.map +1 -1
  4. package/dist/actions/errors.d.ts +0 -3
  5. package/dist/actions/errors.d.ts.map +1 -1
  6. package/dist/actions/execution.d.ts +10 -3
  7. package/dist/actions/execution.d.ts.map +1 -1
  8. package/dist/actions/index.d.ts +6 -9
  9. package/dist/actions/index.d.ts.map +1 -1
  10. package/dist/actions/index.js +56 -52
  11. package/dist/actions/index.js.map +1 -1
  12. package/dist/actions/read-facade.d.ts +1 -1
  13. package/dist/actions/request.d.ts +14 -25
  14. package/dist/actions/request.d.ts.map +1 -1
  15. package/dist/actions/run/context.d.ts +40 -0
  16. package/dist/actions/run/context.d.ts.map +1 -0
  17. package/dist/actions/run/edits-commit.d.ts +31 -0
  18. package/dist/actions/run/edits-commit.d.ts.map +1 -0
  19. package/dist/actions/run/effects.d.ts +23 -0
  20. package/dist/actions/run/effects.d.ts.map +1 -0
  21. package/dist/actions/run/execute.d.ts +30 -0
  22. package/dist/actions/run/execute.d.ts.map +1 -0
  23. package/dist/actions/run/executor.d.ts +95 -0
  24. package/dist/actions/run/executor.d.ts.map +1 -0
  25. package/dist/actions/run/normalize.d.ts +36 -0
  26. package/dist/actions/run/normalize.d.ts.map +1 -0
  27. package/dist/actions/run/phase-types.d.ts +18 -0
  28. package/dist/actions/run/phase-types.d.ts.map +1 -0
  29. package/dist/actions/run/phases.d.ts +20 -0
  30. package/dist/actions/run/phases.d.ts.map +1 -0
  31. package/dist/actions/run/run-action.d.ts +25 -0
  32. package/dist/actions/run/run-action.d.ts.map +1 -0
  33. package/dist/actions/run/signals.d.ts +67 -0
  34. package/dist/actions/run/signals.d.ts.map +1 -0
  35. package/dist/actions/run/state.d.ts +47 -0
  36. package/dist/actions/run/state.d.ts.map +1 -0
  37. package/dist/actions/run/types.d.ts +54 -0
  38. package/dist/actions/run/types.d.ts.map +1 -0
  39. package/dist/actions/run/writeback.d.ts +17 -0
  40. package/dist/actions/run/writeback.d.ts.map +1 -0
  41. package/dist/actions/run-authorization.d.ts +1 -1
  42. package/dist/actions/run-authorization.d.ts.map +1 -1
  43. package/dist/actions/run-persistence.d.ts +53 -0
  44. package/dist/actions/run-persistence.d.ts.map +1 -0
  45. package/dist/actions/types/context.d.ts +10 -0
  46. package/dist/actions/types/context.d.ts.map +1 -1
  47. package/dist/actions/validation.d.ts.map +1 -1
  48. package/dist/agents/adapters.d.ts +7 -0
  49. package/dist/agents/adapters.d.ts.map +1 -1
  50. package/dist/agents/authority.d.ts +7 -0
  51. package/dist/agents/authority.d.ts.map +1 -1
  52. package/dist/agents/context/entries.d.ts +10 -1
  53. package/dist/agents/context/entries.d.ts.map +1 -1
  54. package/dist/agents/context/index.d.ts +1 -1
  55. package/dist/agents/context/index.d.ts.map +1 -1
  56. package/dist/agents/context/index.js +4 -2
  57. package/dist/agents/context/index.js.map +1 -1
  58. package/dist/agents/context-compaction.d.ts.map +1 -1
  59. package/dist/agents/errors.d.ts +1 -1
  60. package/dist/agents/errors.d.ts.map +1 -1
  61. package/dist/agents/index.d.ts +6 -4
  62. package/dist/agents/index.d.ts.map +1 -1
  63. package/dist/agents/index.js +63 -59
  64. package/dist/agents/index.js.map +1 -1
  65. package/dist/agents/message.d.ts +8 -1
  66. package/dist/agents/message.d.ts.map +1 -1
  67. package/dist/agents/request.d.ts +19 -5
  68. package/dist/agents/request.d.ts.map +1 -1
  69. package/dist/agents/skills.d.ts +41 -0
  70. package/dist/agents/skills.d.ts.map +1 -0
  71. package/dist/agents/streams/index.js +2 -2
  72. package/dist/agents/streams/internal.js +2 -2
  73. package/dist/agents/types.d.ts +33 -4
  74. package/dist/agents/types.d.ts.map +1 -1
  75. package/dist/auth/index.js +12 -9
  76. package/dist/auth/index.js.map +1 -1
  77. package/dist/auth/runtime.d.ts.map +1 -1
  78. package/dist/auth/types.d.ts +6 -0
  79. package/dist/auth/types.d.ts.map +1 -1
  80. package/dist/authorization/event-visibility.d.ts.map +1 -1
  81. package/dist/authorization/index.js +6 -4
  82. package/dist/authorization/index.js.map +1 -1
  83. package/dist/authorization/resolve.d.ts +1 -1
  84. package/dist/authorization/resolve.d.ts.map +1 -1
  85. package/dist/authorization/types.d.ts +7 -0
  86. package/dist/authorization/types.d.ts.map +1 -1
  87. package/dist/blob-storage/browser.js +1 -1
  88. package/dist/blob-storage/execution.d.ts.map +1 -1
  89. package/dist/blob-storage/file-content.d.ts +18 -0
  90. package/dist/blob-storage/file-content.d.ts.map +1 -0
  91. package/dist/blob-storage/index.d.ts +1 -1
  92. package/dist/blob-storage/index.d.ts.map +1 -1
  93. package/dist/blob-storage/index.js +2 -2
  94. package/dist/blob-storage/internal.d.ts +2 -0
  95. package/dist/blob-storage/internal.d.ts.map +1 -1
  96. package/dist/blob-storage/internal.js +16 -4
  97. package/dist/blob-storage/internal.js.map +1 -1
  98. package/dist/blob-storage/media-type.d.ts +8 -0
  99. package/dist/blob-storage/media-type.d.ts.map +1 -0
  100. package/dist/blob-storage/types.d.ts +12 -1
  101. package/dist/blob-storage/types.d.ts.map +1 -1
  102. package/dist/blob-storage/validation.d.ts +6 -0
  103. package/dist/blob-storage/validation.d.ts.map +1 -1
  104. package/dist/bootstrap/agent-context.d.ts +33 -0
  105. package/dist/bootstrap/agent-context.d.ts.map +1 -0
  106. package/dist/bootstrap/discovery.d.ts +23 -3
  107. package/dist/bootstrap/discovery.d.ts.map +1 -1
  108. package/dist/bootstrap/index.d.ts +2 -1
  109. package/dist/bootstrap/index.d.ts.map +1 -1
  110. package/dist/bootstrap/index.js +285 -77
  111. package/dist/bootstrap/index.js.map +4 -3
  112. package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
  113. package/dist/{chunk-t9shqx3w.js → chunk-1f7wpmyp.js} +143 -7
  114. package/dist/chunk-1f7wpmyp.js.map +14 -0
  115. package/dist/{chunk-jjrn5v0p.js → chunk-1k89ecfr.js} +1 -1
  116. package/dist/{chunk-9vx5e9g1.js → chunk-1sr8ryzk.js} +3 -3
  117. package/dist/chunk-1sr8ryzk.js.map +11 -0
  118. package/dist/{chunk-s7ftxrdr.js → chunk-29yx306f.js} +20 -3
  119. package/dist/{chunk-s7ftxrdr.js.map → chunk-29yx306f.js.map} +3 -3
  120. package/dist/{chunk-svabwqdq.js → chunk-3gnrh4ve.js} +44 -420
  121. package/dist/{chunk-svabwqdq.js.map → chunk-3gnrh4ve.js.map} +9 -13
  122. package/dist/{chunk-4ra628t7.js → chunk-3zxk45er.js} +70 -6
  123. package/dist/{chunk-4ra628t7.js.map → chunk-3zxk45er.js.map} +5 -4
  124. package/dist/{chunk-pja9jfz6.js → chunk-4tcx876c.js} +126 -64
  125. package/dist/chunk-4tcx876c.js.map +19 -0
  126. package/dist/{chunk-vre348sb.js → chunk-52bk93x8.js} +2 -2
  127. package/dist/{chunk-4gmng3vf.js → chunk-5e43w60z.js} +2 -2
  128. package/dist/{chunk-91kcnbf0.js → chunk-6gmfggss.js} +22 -9
  129. package/dist/chunk-6gmfggss.js.map +10 -0
  130. package/dist/{chunk-33saed7g.js → chunk-7kg3k1m9.js} +1 -1
  131. package/dist/{chunk-7ecp4v7a.js → chunk-7mbzgd9m.js} +10 -4
  132. package/dist/{chunk-7ecp4v7a.js.map → chunk-7mbzgd9m.js.map} +3 -3
  133. package/dist/{chunk-b9affek3.js → chunk-7n440zgt.js} +30 -30
  134. package/dist/{chunk-b9affek3.js.map → chunk-7n440zgt.js.map} +4 -4
  135. package/dist/{chunk-kkqwzy6h.js → chunk-7t429e3f.js} +1 -1
  136. package/dist/{chunk-xcy5ddha.js → chunk-80mc0971.js} +356 -301
  137. package/dist/chunk-80mc0971.js.map +15 -0
  138. package/dist/{chunk-gf7yht60.js → chunk-85yvv5n0.js} +27 -10
  139. package/dist/chunk-85yvv5n0.js.map +12 -0
  140. package/dist/{chunk-6fsr7y93.js → chunk-8mx7qw3y.js} +14 -13
  141. package/dist/{chunk-6fsr7y93.js.map → chunk-8mx7qw3y.js.map} +4 -4
  142. package/dist/{chunk-kpx7jrmn.js → chunk-91mg3nj9.js} +59 -59
  143. package/dist/{chunk-kpx7jrmn.js.map → chunk-91mg3nj9.js.map} +5 -5
  144. package/dist/{chunk-2am3db31.js → chunk-9gyp8hg1.js} +2 -2
  145. package/dist/{chunk-ewqa58h9.js → chunk-9k93ah50.js} +4 -4
  146. package/dist/{chunk-ewqa58h9.js.map → chunk-9k93ah50.js.map} +1 -1
  147. package/dist/{chunk-4wn7bxxa.js → chunk-9ybhtmg4.js} +1 -1
  148. package/dist/{chunk-fc5zfxy1.js → chunk-a40ad1ft.js} +5 -13
  149. package/dist/chunk-a40ad1ft.js.map +10 -0
  150. package/dist/{chunk-dam456ve.js → chunk-aff7cyea.js} +431 -70
  151. package/dist/{chunk-dam456ve.js.map → chunk-aff7cyea.js.map} +10 -7
  152. package/dist/{chunk-y2aq6ag9.js → chunk-b38szspf.js} +5 -14
  153. package/dist/chunk-b38szspf.js.map +11 -0
  154. package/dist/{chunk-r2y23egw.js → chunk-bkpke1sg.js} +1 -10
  155. package/dist/chunk-bkpke1sg.js.map +10 -0
  156. package/dist/{chunk-xyvy73tj.js → chunk-bpgy64fw.js} +8 -3
  157. package/dist/chunk-bpgy64fw.js.map +12 -0
  158. package/dist/{chunk-rb143ggb.js → chunk-bwjcehza.js} +1 -1
  159. package/dist/{chunk-5thzcb8g.js → chunk-c85m1hyj.js} +2 -2
  160. package/dist/{chunk-e67ynxcr.js → chunk-d2ync1v3.js} +5 -5
  161. package/dist/{chunk-3rrezgyc.js → chunk-dnmadg9k.js} +2 -2
  162. package/dist/chunk-enpsx8k5.js +127 -0
  163. package/dist/chunk-enpsx8k5.js.map +10 -0
  164. package/dist/chunk-ey3pyej1.js +8807 -0
  165. package/dist/chunk-ey3pyej1.js.map +106 -0
  166. package/dist/{chunk-vjcd8d27.js → chunk-fa02jy15.js} +1 -1
  167. package/dist/{chunk-9se093qz.js → chunk-gc4ntf7d.js} +4 -4
  168. package/dist/{chunk-9se093qz.js.map → chunk-gc4ntf7d.js.map} +1 -1
  169. package/dist/{chunk-98cw09sw.js → chunk-hkc3jct7.js} +4 -2
  170. package/dist/chunk-hkc3jct7.js.map +10 -0
  171. package/dist/{chunk-rpxz486p.js → chunk-hvsb78a1.js} +24 -8
  172. package/dist/{chunk-rpxz486p.js.map → chunk-hvsb78a1.js.map} +3 -3
  173. package/dist/{chunk-5yd8cchh.js → chunk-j2bp5ryw.js} +55 -246
  174. package/dist/{chunk-5yd8cchh.js.map → chunk-j2bp5ryw.js.map} +4 -4
  175. package/dist/{chunk-h3v76ams.js → chunk-jhm3zsa7.js} +25 -2
  176. package/dist/chunk-jhm3zsa7.js.map +12 -0
  177. package/dist/{chunk-w9yycd3t.js → chunk-kg5j6fct.js} +4 -8
  178. package/dist/{chunk-w9yycd3t.js.map → chunk-kg5j6fct.js.map} +3 -3
  179. package/dist/{chunk-vp3z1ckh.js → chunk-kyzq4wy9.js} +7 -7
  180. package/dist/{chunk-wr8qp979.js → chunk-m427qgq0.js} +9 -5
  181. package/dist/{chunk-wr8qp979.js.map → chunk-m427qgq0.js.map} +4 -3
  182. package/dist/{chunk-c2rga5cx.js → chunk-mfs23znk.js} +1 -1
  183. package/dist/{chunk-e1c18xjx.js → chunk-nq6gpjt7.js} +4 -45
  184. package/dist/{chunk-e1c18xjx.js.map → chunk-nq6gpjt7.js.map} +5 -5
  185. package/dist/{chunk-a7er86jd.js → chunk-nre82s12.js} +1 -1
  186. package/dist/{chunk-1hqwggsn.js → chunk-nzapm6p0.js} +1 -2
  187. package/dist/chunk-nzapm6p0.js.map +12 -0
  188. package/dist/{chunk-wt4szfec.js → chunk-pbcbn83d.js} +4 -4
  189. package/dist/{chunk-wt4szfec.js.map → chunk-pbcbn83d.js.map} +1 -1
  190. package/dist/{chunk-dmn70ztd.js → chunk-pfp1txq2.js} +25 -6
  191. package/dist/chunk-pfp1txq2.js.map +11 -0
  192. package/dist/chunk-pqajwytd.js.map +2 -2
  193. package/dist/{chunk-f1xh7a32.js → chunk-q1vkr2ys.js} +4 -4
  194. package/dist/chunk-rdghfsss.js.map +2 -2
  195. package/dist/{chunk-23xs4qp9.js → chunk-rhg02hxq.js} +4 -4
  196. package/dist/{chunk-cd234ba4.js → chunk-rz53yb4v.js} +10 -5
  197. package/dist/chunk-rz53yb4v.js.map +14 -0
  198. package/dist/{chunk-aq39q04r.js → chunk-s16apyk9.js} +104 -18
  199. package/dist/chunk-s16apyk9.js.map +16 -0
  200. package/dist/{chunk-69266efg.js → chunk-s54c868q.js} +12 -4
  201. package/dist/chunk-s54c868q.js.map +12 -0
  202. package/dist/{chunk-k4g51s47.js → chunk-t6vq7bff.js} +5 -5
  203. package/dist/{chunk-sk0hcjsz.js → chunk-tjb1mk5t.js} +3 -3
  204. package/dist/{chunk-cnb5kv05.js → chunk-tpn40322.js} +23 -8
  205. package/dist/chunk-tpn40322.js.map +19 -0
  206. package/dist/{chunk-rx7h5fdx.js → chunk-v9xd5wzd.js} +1 -1
  207. package/dist/{chunk-2vhg6ysa.js → chunk-vyf9kfqf.js} +1 -1
  208. package/dist/chunk-wwdfe68s.js +128 -0
  209. package/dist/chunk-wwdfe68s.js.map +11 -0
  210. package/dist/{chunk-jnfxmr3f.js → chunk-wz0xs816.js} +6 -6
  211. package/dist/{chunk-jnfxmr3f.js.map → chunk-wz0xs816.js.map} +1 -1
  212. package/dist/chunk-xt1zt7gv.js +471 -0
  213. package/dist/chunk-xt1zt7gv.js.map +13 -0
  214. package/dist/chunk-y0c4e6ex.js +16 -0
  215. package/dist/chunk-y0c4e6ex.js.map +10 -0
  216. package/dist/{chunk-5be2ath4.js → chunk-y7rqfrgg.js} +20 -138
  217. package/dist/{chunk-5be2ath4.js.map → chunk-y7rqfrgg.js.map} +8 -9
  218. package/dist/{chunk-z5rnrmz1.js → chunk-yw9pyg66.js} +5 -3
  219. package/dist/chunk-yw9pyg66.js.map +11 -0
  220. package/dist/{chunk-dfm066qg.js → chunk-yxd3nnqt.js} +2 -29
  221. package/dist/chunk-yxd3nnqt.js.map +11 -0
  222. package/dist/{chunk-70jmg2zx.js → chunk-yzwja0mj.js} +4 -19
  223. package/dist/{chunk-70jmg2zx.js.map → chunk-yzwja0mj.js.map} +3 -3
  224. package/dist/{chunk-fggq3d9k.js → chunk-zrmy8zvw.js} +66 -47
  225. package/dist/{chunk-fggq3d9k.js.map → chunk-zrmy8zvw.js.map} +4 -4
  226. package/dist/datasets/builders.d.ts +12 -1
  227. package/dist/datasets/builders.d.ts.map +1 -1
  228. package/dist/datasets/execution.d.ts +27 -1
  229. package/dist/datasets/execution.d.ts.map +1 -1
  230. package/dist/datasets/index.d.ts +1 -1
  231. package/dist/datasets/index.d.ts.map +1 -1
  232. package/dist/datasets/types.d.ts +2 -0
  233. package/dist/datasets/types.d.ts.map +1 -1
  234. package/dist/datasets/write.d.ts +5 -0
  235. package/dist/datasets/write.d.ts.map +1 -1
  236. package/dist/datasets/write.js +10 -5
  237. package/dist/datasets/write.js.map +1 -1
  238. package/dist/deploy/index.d.ts +1 -1
  239. package/dist/deploy/index.d.ts.map +1 -1
  240. package/dist/deploy/internal.js +10 -8
  241. package/dist/deploy/internal.js.map +4 -4
  242. package/dist/deploy/services.d.ts +1 -2
  243. package/dist/deploy/services.d.ts.map +1 -1
  244. package/dist/deploy/types.d.ts +6 -5
  245. package/dist/deploy/types.d.ts.map +1 -1
  246. package/dist/deploy/validation.d.ts.map +1 -1
  247. package/dist/edits/index.js +3 -5
  248. package/dist/edits/index.js.map +1 -1
  249. package/dist/edits/properties.d.ts.map +1 -1
  250. package/dist/error-reporting/internal.js +3 -3
  251. package/dist/error-reporting/types.d.ts +2 -9
  252. package/dist/error-reporting/types.d.ts.map +1 -1
  253. package/dist/errors/catalog.d.ts +12 -0
  254. package/dist/errors/catalog.d.ts.map +1 -1
  255. package/dist/errors/internal.js +1 -1
  256. package/dist/events/definitions.d.ts +0 -5
  257. package/dist/events/definitions.d.ts.map +1 -1
  258. package/dist/events/execution.d.ts +2 -1
  259. package/dist/events/execution.d.ts.map +1 -1
  260. package/dist/events/index.d.ts +3 -3
  261. package/dist/events/index.d.ts.map +1 -1
  262. package/dist/events/index.js +6 -8
  263. package/dist/events/index.js.map +1 -1
  264. package/dist/events/scope.d.ts +0 -1
  265. package/dist/events/scope.d.ts.map +1 -1
  266. package/dist/events/scope.js +1 -1
  267. package/dist/events/selectors/builder.d.ts +1 -8
  268. package/dist/events/selectors/builder.d.ts.map +1 -1
  269. package/dist/events/selectors/index.d.ts +2 -2
  270. package/dist/events/selectors/index.d.ts.map +1 -1
  271. package/dist/events/selectors/index.js +2 -2
  272. package/dist/events/selectors/predicate.d.ts.map +1 -1
  273. package/dist/events/selectors/types.d.ts +2 -33
  274. package/dist/events/selectors/types.d.ts.map +1 -1
  275. package/dist/events/types/index.d.ts +1 -12
  276. package/dist/events/types/index.d.ts.map +1 -1
  277. package/dist/events/types/objects.d.ts +5 -0
  278. package/dist/events/types/objects.d.ts.map +1 -1
  279. package/dist/execution/agent.d.ts +10 -0
  280. package/dist/execution/agent.d.ts.map +1 -1
  281. package/dist/execution/agent.js +50 -48
  282. package/dist/execution/agent.js.map +1 -1
  283. package/dist/execution/authorized-object-reader.d.ts +6 -1
  284. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  285. package/dist/execution/primitive.js +60 -88
  286. package/dist/execution/primitive.js.map +3 -4
  287. package/dist/execution/request.js +46 -46
  288. package/dist/execution/request.js.map +1 -1
  289. package/dist/http/api-routes.d.ts.map +1 -1
  290. package/dist/http/index.js +1 -1
  291. package/dist/index.d.ts +12 -11
  292. package/dist/index.d.ts.map +1 -1
  293. package/dist/index.js +120 -124
  294. package/dist/index.js.map +1 -1
  295. package/dist/lake-storage/index.js +8 -5
  296. package/dist/lake-storage/index.js.map +1 -1
  297. package/dist/materialization/index.js +3 -3
  298. package/dist/materialization/index.js.map +1 -1
  299. package/dist/materialization/model.d.ts +19 -6
  300. package/dist/materialization/model.d.ts.map +1 -1
  301. package/dist/materializer/index.js +35 -32
  302. package/dist/materializer/index.js.map +1 -1
  303. package/dist/materializer/shared/normalize.d.ts.map +1 -1
  304. package/dist/models/catalog.d.ts +1 -1
  305. package/dist/models/catalog.d.ts.map +1 -1
  306. package/dist/models/execution/binding.d.ts +6 -0
  307. package/dist/models/execution/binding.d.ts.map +1 -1
  308. package/dist/models/execution/index.js +26 -23
  309. package/dist/models/execution/index.js.map +1 -1
  310. package/dist/models/execution/model-call-recorder.d.ts +4 -0
  311. package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
  312. package/dist/models/execution.d.ts.map +1 -1
  313. package/dist/models/index.js +1 -1
  314. package/dist/models/language-model.d.ts +6 -0
  315. package/dist/models/language-model.d.ts.map +1 -1
  316. package/dist/objects/action/errors.d.ts +0 -9
  317. package/dist/objects/action/errors.d.ts.map +1 -1
  318. package/dist/objects/action/index.d.ts +3 -3
  319. package/dist/objects/action/index.d.ts.map +1 -1
  320. package/dist/objects/action/request.d.ts +2 -8
  321. package/dist/objects/action/request.d.ts.map +1 -1
  322. package/dist/objects/context/index.d.ts +1 -1
  323. package/dist/objects/context/index.d.ts.map +1 -1
  324. package/dist/objects/context/types.d.ts +6 -0
  325. package/dist/objects/context/types.d.ts.map +1 -1
  326. package/dist/objects/execution.d.ts +2 -3
  327. package/dist/objects/execution.d.ts.map +1 -1
  328. package/dist/objects/index.js +49 -30
  329. package/dist/objects/index.js.map +1 -1
  330. package/dist/objects/materializer-adapter.d.ts.map +1 -1
  331. package/dist/objects/object/upsert-batch.d.ts.map +1 -1
  332. package/dist/objects/object/upsert.d.ts.map +1 -1
  333. package/dist/objects/property-clearance.d.ts +41 -0
  334. package/dist/objects/property-clearance.d.ts.map +1 -0
  335. package/dist/objects/query/executor.d.ts +3 -0
  336. package/dist/objects/query/executor.d.ts.map +1 -1
  337. package/dist/objects/query/index.js +34 -31
  338. package/dist/objects/query/index.js.map +1 -1
  339. package/dist/objects/query/validate.d.ts +10 -1
  340. package/dist/objects/query/validate.d.ts.map +1 -1
  341. package/dist/objects/sdk/file-handle.d.ts +6 -0
  342. package/dist/objects/sdk/file-handle.d.ts.map +1 -0
  343. package/dist/objects/sdk/object-handle.d.ts +2 -2
  344. package/dist/objects/sdk/object-handle.d.ts.map +1 -1
  345. package/dist/objects/sdk/object-set.d.ts +2 -0
  346. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  347. package/dist/objects/service/index.d.ts +0 -1
  348. package/dist/objects/service/index.d.ts.map +1 -1
  349. package/dist/ontology/builders.d.ts +12 -1
  350. package/dist/ontology/builders.d.ts.map +1 -1
  351. package/dist/ontology/docs-markdown.d.ts +35 -0
  352. package/dist/ontology/docs-markdown.d.ts.map +1 -0
  353. package/dist/ontology/docs.d.ts +50 -0
  354. package/dist/ontology/docs.d.ts.map +1 -0
  355. package/dist/ontology/index.js +7 -4
  356. package/dist/ontology/index.js.map +1 -1
  357. package/dist/ontology/inference/index.d.ts +19 -0
  358. package/dist/ontology/inference/index.d.ts.map +1 -1
  359. package/dist/ontology/internal.d.ts +3 -1
  360. package/dist/ontology/internal.d.ts.map +1 -1
  361. package/dist/ontology/internal.js +276 -3
  362. package/dist/ontology/internal.js.map +4 -3
  363. package/dist/ontology/tokens.d.ts +8 -1
  364. package/dist/ontology/tokens.d.ts.map +1 -1
  365. package/dist/ontology/types.d.ts +5 -0
  366. package/dist/ontology/types.d.ts.map +1 -1
  367. package/dist/ontology/validation/index.d.ts +1 -1
  368. package/dist/ontology/validation/index.d.ts.map +1 -1
  369. package/dist/ontology/validation/schema.d.ts +7 -0
  370. package/dist/ontology/validation/schema.d.ts.map +1 -1
  371. package/dist/pipelines/index.js +34 -31
  372. package/dist/pipelines/index.js.map +1 -1
  373. package/dist/projections/internal.js +27 -24
  374. package/dist/projections/internal.js.map +1 -1
  375. package/dist/query.js +2 -2
  376. package/dist/queues/in-memory.d.ts +1 -2
  377. package/dist/queues/in-memory.d.ts.map +1 -1
  378. package/dist/queues/index.d.ts +1 -1
  379. package/dist/queues/index.d.ts.map +1 -1
  380. package/dist/queues/index.js +1 -1
  381. package/dist/queues/types.d.ts +0 -7
  382. package/dist/queues/types.d.ts.map +1 -1
  383. package/dist/runtime/create.d.ts +11 -2
  384. package/dist/runtime/create.d.ts.map +1 -1
  385. package/dist/runtime/definitions.d.ts +3 -1
  386. package/dist/runtime/definitions.d.ts.map +1 -1
  387. package/dist/runtime/host.d.ts +13 -2
  388. package/dist/runtime/host.d.ts.map +1 -1
  389. package/dist/runtime/index.d.ts +1 -1
  390. package/dist/runtime/index.d.ts.map +1 -1
  391. package/dist/runtime/internal.js +30 -28
  392. package/dist/runtime/internal.js.map +1 -1
  393. package/dist/runtime/locale.d.ts +9 -0
  394. package/dist/runtime/locale.d.ts.map +1 -0
  395. package/dist/runtime/resolve-definitions.d.ts +4 -2
  396. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  397. package/dist/runtime/types.d.ts +46 -39
  398. package/dist/runtime/types.d.ts.map +1 -1
  399. package/dist/sandboxes/index.js +7 -6
  400. package/dist/sandboxes/index.js.map +1 -1
  401. package/dist/scheduler/index.js +1 -1
  402. package/dist/scheduler/runtime.d.ts +3 -0
  403. package/dist/scheduler/runtime.d.ts.map +1 -1
  404. package/dist/schedules/builders.d.ts.map +1 -1
  405. package/dist/schedules/index.js +3 -3
  406. package/dist/schedules/runtime.d.ts.map +1 -1
  407. package/dist/schedules/validation.d.ts +0 -1
  408. package/dist/schedules/validation.d.ts.map +1 -1
  409. package/dist/security/builders.d.ts +11 -2
  410. package/dist/security/builders.d.ts.map +1 -1
  411. package/dist/security/every.d.ts +1 -1
  412. package/dist/security/index.d.ts +4 -4
  413. package/dist/security/index.d.ts.map +1 -1
  414. package/dist/security/markings.d.ts +19 -0
  415. package/dist/security/markings.d.ts.map +1 -0
  416. package/dist/security/redactions.d.ts +4 -0
  417. package/dist/security/redactions.d.ts.map +1 -0
  418. package/dist/security/registry.d.ts +7 -1
  419. package/dist/security/registry.d.ts.map +1 -1
  420. package/dist/security/types.d.ts +25 -0
  421. package/dist/security/types.d.ts.map +1 -1
  422. package/dist/security/validation.d.ts +4 -1
  423. package/dist/security/validation.d.ts.map +1 -1
  424. package/dist/shares/internal.js +24 -21
  425. package/dist/shares/internal.js.map +2 -2
  426. package/dist/storage/action-runs/failure.js +2 -2
  427. package/dist/storage/action-runs/idempotency.d.ts +3 -4
  428. package/dist/storage/action-runs/idempotency.d.ts.map +1 -1
  429. package/dist/storage/action-runs/in-memory.d.ts +2 -9
  430. package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
  431. package/dist/storage/action-runs/index.d.ts +1 -3
  432. package/dist/storage/action-runs/index.d.ts.map +1 -1
  433. package/dist/storage/action-runs/provider.js +1 -1
  434. package/dist/storage/action-runs/record.d.ts +20 -0
  435. package/dist/storage/action-runs/record.d.ts.map +1 -0
  436. package/dist/storage/action-runs/types.d.ts +39 -68
  437. package/dist/storage/action-runs/types.d.ts.map +1 -1
  438. package/dist/storage/agents/provider.d.ts.map +1 -1
  439. package/dist/storage/agents/provider.js +5 -4
  440. package/dist/storage/agents/provider.js.map +1 -1
  441. package/dist/storage/agents/types.d.ts +15 -9
  442. package/dist/storage/agents/types.d.ts.map +1 -1
  443. package/dist/storage/ai-limits/enforcement.js +2 -2
  444. package/dist/storage/connector-connections/provider.js +1 -1
  445. package/dist/storage/file-upload-sessions/provider.js +12 -9
  446. package/dist/storage/file-upload-sessions/provider.js.map +1 -1
  447. package/dist/storage/index.d.ts +3 -2
  448. package/dist/storage/index.d.ts.map +1 -1
  449. package/dist/storage/index.js +36 -34
  450. package/dist/storage/index.js.map +1 -1
  451. package/dist/storage/internal.d.ts +1 -1
  452. package/dist/storage/internal.d.ts.map +1 -1
  453. package/dist/storage/internal.js +11 -13
  454. package/dist/storage/internal.js.map +1 -1
  455. package/dist/storage/objects/execution-limits.d.ts +1 -1
  456. package/dist/storage/objects/execution-limits.d.ts.map +1 -1
  457. package/dist/storage/objects/types.d.ts +7 -0
  458. package/dist/storage/objects/types.d.ts.map +1 -1
  459. package/dist/storage/ontology/provider.js +2 -2
  460. package/dist/storage/projection-runs/provider.js +2 -2
  461. package/dist/storage/types.d.ts +1 -1
  462. package/dist/storage/types.d.ts.map +1 -1
  463. package/dist/storage/workflow-runs/provider.js +12 -9
  464. package/dist/storage/workflow-runs/provider.js.map +1 -1
  465. package/dist/syncs/index.js +35 -32
  466. package/dist/syncs/index.js.map +1 -1
  467. package/dist/testing/action-execution.d.ts +34 -4
  468. package/dist/testing/action-execution.d.ts.map +1 -1
  469. package/dist/testing/action-run-storage-contract.d.ts +11 -0
  470. package/dist/testing/action-run-storage-contract.d.ts.map +1 -0
  471. package/dist/testing/index.d.ts +2 -1
  472. package/dist/testing/index.d.ts.map +1 -1
  473. package/dist/testing/index.js +3213 -2869
  474. package/dist/testing/index.js.map +7 -6
  475. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  476. package/dist/testing/queues-contract.d.ts.map +1 -1
  477. package/dist/webhooks/internal.js +29 -26
  478. package/dist/webhooks/internal.js.map +2 -2
  479. package/dist/workers/index.js +1 -1
  480. package/dist/workflows/builders.d.ts.map +1 -1
  481. package/dist/workflows/index.js +55 -55
  482. package/dist/workflows/index.js.map +1 -1
  483. package/dist/workflows/request.d.ts.map +1 -1
  484. package/dist/workflows/types.d.ts +6 -3
  485. package/dist/workflows/types.d.ts.map +1 -1
  486. package/dist/workflows/validation.d.ts +2 -1
  487. package/dist/workflows/validation.d.ts.map +1 -1
  488. package/package.json +1 -7
  489. package/src/actions/commit-edits.ts +9 -37
  490. package/src/actions/errors.ts +0 -4
  491. package/src/actions/execution.ts +10 -10
  492. package/src/actions/index.ts +5 -24
  493. package/src/actions/read-facade.ts +2 -1
  494. package/src/actions/request.ts +157 -295
  495. package/src/actions/run/context.ts +193 -0
  496. package/src/actions/run/edits-commit.ts +102 -0
  497. package/src/actions/run/effects.ts +105 -0
  498. package/src/actions/run/execute.ts +113 -0
  499. package/src/actions/run/executor.ts +314 -0
  500. package/src/actions/run/normalize.ts +142 -0
  501. package/src/actions/run/phase-types.ts +20 -0
  502. package/src/actions/run/phases.ts +150 -0
  503. package/src/actions/run/run-action.ts +170 -0
  504. package/src/actions/run/signals.ts +118 -0
  505. package/src/actions/run/state.ts +95 -0
  506. package/src/actions/run/types.ts +61 -0
  507. package/src/actions/run/writeback.ts +79 -0
  508. package/src/actions/run-authorization.ts +1 -1
  509. package/src/actions/run-persistence.ts +105 -0
  510. package/src/actions/types/context.ts +10 -0
  511. package/src/actions/validation.ts +4 -1
  512. package/src/agents/adapters.ts +15 -0
  513. package/src/agents/authority.ts +15 -0
  514. package/src/agents/context/entries.ts +48 -4
  515. package/src/agents/context/index.ts +1 -0
  516. package/src/agents/context-compaction.ts +6 -0
  517. package/src/agents/errors.ts +3 -0
  518. package/src/agents/index.ts +13 -1
  519. package/src/agents/message.ts +9 -0
  520. package/src/agents/request.ts +178 -22
  521. package/src/agents/skills.ts +63 -0
  522. package/src/agents/types.ts +35 -5
  523. package/src/auth/runtime.ts +14 -0
  524. package/src/auth/types.ts +6 -0
  525. package/src/authorization/event-visibility.ts +0 -12
  526. package/src/authorization/resolve.ts +6 -1
  527. package/src/authorization/types.ts +7 -0
  528. package/src/blob-storage/execution.ts +12 -0
  529. package/src/blob-storage/file-content.ts +106 -0
  530. package/src/blob-storage/index.ts +1 -0
  531. package/src/blob-storage/internal.ts +7 -0
  532. package/src/blob-storage/media-type.ts +29 -0
  533. package/src/blob-storage/types.ts +13 -1
  534. package/src/blob-storage/validation.ts +13 -0
  535. package/src/bootstrap/agent-context.ts +356 -0
  536. package/src/bootstrap/discovery.ts +100 -33
  537. package/src/bootstrap/index.ts +1 -1
  538. package/src/bootstrap/ontology-type-manifest.ts +3 -38
  539. package/src/datasets/builders.ts +17 -1
  540. package/src/datasets/execution.ts +110 -2
  541. package/src/datasets/index.ts +7 -1
  542. package/src/datasets/types.ts +2 -0
  543. package/src/datasets/write.ts +21 -2
  544. package/src/deploy/index.ts +0 -1
  545. package/src/deploy/services.ts +2 -11
  546. package/src/deploy/types.ts +6 -6
  547. package/src/deploy/validation.ts +12 -6
  548. package/src/edits/properties.ts +3 -0
  549. package/src/error-reporting/types.ts +2 -10
  550. package/src/errors/catalog.ts +13 -0
  551. package/src/events/definitions.ts +0 -17
  552. package/src/events/execution.ts +15 -16
  553. package/src/events/index.ts +0 -14
  554. package/src/events/scope.ts +0 -12
  555. package/src/events/selectors/builder.ts +0 -51
  556. package/src/events/selectors/index.ts +0 -6
  557. package/src/events/selectors/predicate.ts +0 -2
  558. package/src/events/selectors/types.ts +7 -65
  559. package/src/events/types/index.ts +0 -11
  560. package/src/events/types/objects.ts +5 -0
  561. package/src/execution/agent.ts +27 -0
  562. package/src/execution/authorization.ts +1 -0
  563. package/src/execution/authorized-object-reader.ts +96 -34
  564. package/src/execution/scopes.ts +2 -6
  565. package/src/http/api-routes.ts +4 -3
  566. package/src/index.ts +28 -21
  567. package/src/materialization/model.ts +26 -9
  568. package/src/materializer/README.md +6 -1
  569. package/src/materializer/edits/commit.ts +42 -32
  570. package/src/materializer/shared/normalize.ts +25 -14
  571. package/src/models/catalog.ts +26 -2
  572. package/src/models/execution/README.md +4 -3
  573. package/src/models/execution/binding.ts +6 -0
  574. package/src/models/execution/model-call-recorder.ts +10 -0
  575. package/src/models/execution/session.ts +2 -2
  576. package/src/models/execution.ts +6 -2
  577. package/src/models/language-model.ts +6 -0
  578. package/src/objects/action/errors.ts +0 -12
  579. package/src/objects/action/index.ts +3 -3
  580. package/src/objects/action/request.ts +2 -29
  581. package/src/objects/context/index.ts +1 -0
  582. package/src/objects/context/types.ts +7 -0
  583. package/src/objects/execution.ts +6 -3
  584. package/src/objects/materializer-adapter.ts +3 -0
  585. package/src/objects/object/upsert-batch.ts +4 -1
  586. package/src/objects/object/upsert.ts +3 -1
  587. package/src/objects/property-clearance.ts +209 -0
  588. package/src/objects/query/executor.ts +43 -36
  589. package/src/objects/query/validate.ts +133 -14
  590. package/src/objects/sdk/file-handle.ts +77 -0
  591. package/src/objects/sdk/object-handle.ts +11 -33
  592. package/src/objects/sdk/object-set.ts +10 -32
  593. package/src/objects/service/index.ts +0 -1
  594. package/src/ontology/builders.ts +18 -2
  595. package/src/ontology/docs-markdown.ts +394 -0
  596. package/src/ontology/docs.ts +196 -0
  597. package/src/ontology/inference/index.ts +25 -0
  598. package/src/ontology/internal.ts +7 -0
  599. package/src/ontology/tokens.ts +13 -2
  600. package/src/ontology/types.ts +5 -0
  601. package/src/ontology/validation/index.ts +1 -0
  602. package/src/ontology/validation/schema.ts +26 -1
  603. package/src/queues/in-memory.ts +0 -6
  604. package/src/queues/index.ts +0 -2
  605. package/src/queues/types.ts +0 -11
  606. package/src/runtime/create.ts +34 -4
  607. package/src/runtime/definitions.ts +3 -1
  608. package/src/runtime/host.ts +50 -1
  609. package/src/runtime/index.ts +3 -0
  610. package/src/runtime/locale.ts +26 -0
  611. package/src/runtime/resolve-definitions.ts +28 -2
  612. package/src/runtime/sixb.ts +1 -1
  613. package/src/runtime/types.ts +55 -48
  614. package/src/scheduler/runtime.ts +11 -2
  615. package/src/schedules/builders.ts +1 -4
  616. package/src/schedules/runtime.ts +0 -41
  617. package/src/schedules/validation.ts +2 -16
  618. package/src/security/builders.ts +49 -5
  619. package/src/security/every.ts +1 -1
  620. package/src/security/index.ts +6 -1
  621. package/src/security/markings.ts +313 -0
  622. package/src/security/redactions.ts +6 -0
  623. package/src/security/registry.ts +21 -1
  624. package/src/security/types.ts +26 -0
  625. package/src/security/validation.ts +59 -2
  626. package/src/storage/action-runs/idempotency.ts +13 -41
  627. package/src/storage/action-runs/in-memory.ts +20 -311
  628. package/src/storage/action-runs/index.ts +1 -16
  629. package/src/storage/action-runs/record.ts +130 -0
  630. package/src/storage/action-runs/types.ts +37 -92
  631. package/src/storage/agents/provider.ts +11 -0
  632. package/src/storage/agents/types.ts +15 -7
  633. package/src/storage/index.ts +2 -9
  634. package/src/storage/internal.ts +1 -7
  635. package/src/storage/objects/execution-limits.ts +3 -2
  636. package/src/storage/objects/types.ts +7 -0
  637. package/src/storage/types.ts +2 -4
  638. package/src/testing/action-execution.ts +73 -13
  639. package/src/testing/action-run-storage-contract.ts +335 -0
  640. package/src/testing/index.ts +8 -1
  641. package/src/testing/materializer-storage-contract.ts +174 -18
  642. package/src/testing/queues-contract.ts +0 -18
  643. package/src/workflows/builders.ts +24 -1
  644. package/src/workflows/request.ts +3 -0
  645. package/src/workflows/types.ts +6 -3
  646. package/src/workflows/validation.ts +32 -4
  647. package/dist/actions/run-dispatch.d.ts +0 -25
  648. package/dist/actions/run-dispatch.d.ts.map +0 -1
  649. package/dist/actions/worker.d.ts +0 -3
  650. package/dist/actions/worker.d.ts.map +0 -1
  651. package/dist/actions/worker.js +0 -321
  652. package/dist/actions/worker.js.map +0 -11
  653. package/dist/chunk-10styjgk.js +0 -1572
  654. package/dist/chunk-10styjgk.js.map +0 -20
  655. package/dist/chunk-1hqwggsn.js.map +0 -12
  656. package/dist/chunk-52c5zb0z.js +0 -81
  657. package/dist/chunk-52c5zb0z.js.map +0 -10
  658. package/dist/chunk-69266efg.js.map +0 -12
  659. package/dist/chunk-6wbm6ymz.js +0 -4399
  660. package/dist/chunk-6wbm6ymz.js.map +0 -48
  661. package/dist/chunk-85cd7e8c.js +0 -51
  662. package/dist/chunk-85cd7e8c.js.map +0 -10
  663. package/dist/chunk-91kcnbf0.js.map +0 -10
  664. package/dist/chunk-98cw09sw.js.map +0 -10
  665. package/dist/chunk-9g6jz9kk.js +0 -592
  666. package/dist/chunk-9g6jz9kk.js.map +0 -15
  667. package/dist/chunk-9vx5e9g1.js.map +0 -11
  668. package/dist/chunk-aq39q04r.js.map +0 -15
  669. package/dist/chunk-cd234ba4.js.map +0 -14
  670. package/dist/chunk-cnb5kv05.js.map +0 -19
  671. package/dist/chunk-dfm066qg.js.map +0 -11
  672. package/dist/chunk-dmn70ztd.js.map +0 -11
  673. package/dist/chunk-fc5zfxy1.js.map +0 -11
  674. package/dist/chunk-gf7yht60.js.map +0 -12
  675. package/dist/chunk-h3v76ams.js.map +0 -11
  676. package/dist/chunk-pja9jfz6.js.map +0 -19
  677. package/dist/chunk-r2y23egw.js.map +0 -10
  678. package/dist/chunk-t9shqx3w.js.map +0 -12
  679. package/dist/chunk-tjjgy3z4.js +0 -1277
  680. package/dist/chunk-tjjgy3z4.js.map +0 -35
  681. package/dist/chunk-xcy5ddha.js.map +0 -15
  682. package/dist/chunk-xyvy73tj.js.map +0 -12
  683. package/dist/chunk-y2aq6ag9.js.map +0 -11
  684. package/dist/chunk-z5rnrmz1.js.map +0 -11
  685. package/dist/chunk-zvx7h87b.js +0 -12
  686. package/dist/chunk-zvx7h87b.js.map +0 -10
  687. package/dist/events/types/actions.d.ts +0 -39
  688. package/dist/events/types/actions.d.ts.map +0 -1
  689. package/dist/objects/service/action-service.d.ts +0 -13
  690. package/dist/objects/service/action-service.d.ts.map +0 -1
  691. package/src/actions/run-dispatch.ts +0 -282
  692. package/src/actions/worker.ts +0 -2
  693. package/src/events/types/actions.ts +0 -42
  694. package/src/objects/service/action-service.ts +0 -43
  695. /package/dist/{chunk-jjrn5v0p.js.map → chunk-1k89ecfr.js.map} +0 -0
  696. /package/dist/{chunk-vre348sb.js.map → chunk-52bk93x8.js.map} +0 -0
  697. /package/dist/{chunk-4gmng3vf.js.map → chunk-5e43w60z.js.map} +0 -0
  698. /package/dist/{chunk-33saed7g.js.map → chunk-7kg3k1m9.js.map} +0 -0
  699. /package/dist/{chunk-kkqwzy6h.js.map → chunk-7t429e3f.js.map} +0 -0
  700. /package/dist/{chunk-2am3db31.js.map → chunk-9gyp8hg1.js.map} +0 -0
  701. /package/dist/{chunk-4wn7bxxa.js.map → chunk-9ybhtmg4.js.map} +0 -0
  702. /package/dist/{chunk-rb143ggb.js.map → chunk-bwjcehza.js.map} +0 -0
  703. /package/dist/{chunk-5thzcb8g.js.map → chunk-c85m1hyj.js.map} +0 -0
  704. /package/dist/{chunk-e67ynxcr.js.map → chunk-d2ync1v3.js.map} +0 -0
  705. /package/dist/{chunk-3rrezgyc.js.map → chunk-dnmadg9k.js.map} +0 -0
  706. /package/dist/{chunk-vjcd8d27.js.map → chunk-fa02jy15.js.map} +0 -0
  707. /package/dist/{chunk-vp3z1ckh.js.map → chunk-kyzq4wy9.js.map} +0 -0
  708. /package/dist/{chunk-c2rga5cx.js.map → chunk-mfs23znk.js.map} +0 -0
  709. /package/dist/{chunk-a7er86jd.js.map → chunk-nre82s12.js.map} +0 -0
  710. /package/dist/{chunk-f1xh7a32.js.map → chunk-q1vkr2ys.js.map} +0 -0
  711. /package/dist/{chunk-23xs4qp9.js.map → chunk-rhg02hxq.js.map} +0 -0
  712. /package/dist/{chunk-k4g51s47.js.map → chunk-t6vq7bff.js.map} +0 -0
  713. /package/dist/{chunk-sk0hcjsz.js.map → chunk-tjb1mk5t.js.map} +0 -0
  714. /package/dist/{chunk-rx7h5fdx.js.map → chunk-v9xd5wzd.js.map} +0 -0
  715. /package/dist/{chunk-2vhg6ysa.js.map → chunk-vyf9kfqf.js.map} +0 -0
@@ -1,10 +1,10 @@
1
1
  // @bun
2
+ import {
3
+ isFileRef2
4
+ } from "./chunk-jhm3zsa7.js";
2
5
  import {
3
6
  BlobStorageError2
4
7
  } from "./chunk-h8teetr0.js";
5
- import {
6
- isFileRef2
7
- } from "./chunk-h3v76ams.js";
8
8
 
9
9
  // src/blob-storage/download-urls.ts
10
10
  import { createHash, randomBytes, randomUUID } from "crypto";
@@ -82,7 +82,71 @@ function expiryFrom(createdAt, expiresInMs) {
82
82
  }
83
83
  return new Date(expiresAt);
84
84
  }
85
+ // src/blob-storage/file-content.ts
86
+ function resolveFileRefAtPath2(root, path) {
87
+ const value = resolveJsonPointer(root, path);
88
+ return isFileRef2(value) ? value : null;
89
+ }
90
+ async function statFileRef2(blobStorage, fileRef) {
91
+ const stat = await blobStorage.stat(fileRef.blobId);
92
+ return stat && stat.blobId === fileRef.blobId && stat.digest === fileRef.digest && stat.sizeBytes === fileRef.sizeBytes ? stat : null;
93
+ }
94
+ async function openFileRef2(blobStorage, fileRef) {
95
+ const stat = await statFileRef2(blobStorage, fileRef);
96
+ if (!stat)
97
+ return null;
98
+ return { fileRef, body: openOnFirstRead(blobStorage, fileRef.blobId) };
99
+ }
100
+ function openOnFirstRead(blobStorage, blobId) {
101
+ let reader;
102
+ return new ReadableStream({
103
+ async pull(controller) {
104
+ reader ??= (await blobStorage.open(blobId)).getReader();
105
+ const { done, value } = await reader.read();
106
+ if (done)
107
+ controller.close();
108
+ else
109
+ controller.enqueue(value);
110
+ },
111
+ async cancel(reason) {
112
+ await reader?.cancel(reason);
113
+ }
114
+ }, { highWaterMark: 0 });
115
+ }
116
+ function jsonPointerSegment2(segment) {
117
+ return String(segment).replaceAll("~", "~0").replaceAll("/", "~1");
118
+ }
119
+ function resolveJsonPointer(root, pointer) {
120
+ if (pointer === "") {
121
+ return root;
122
+ }
123
+ if (!pointer.startsWith("/")) {
124
+ return;
125
+ }
126
+ let current = root;
127
+ for (const rawSegment of pointer.slice(1).split("/")) {
128
+ const segment = decodeJsonPointerSegment(rawSegment);
129
+ if (Array.isArray(current)) {
130
+ const index = Number.parseInt(segment, 10);
131
+ if (!Number.isInteger(index) || index < 0 || index.toString() !== segment) {
132
+ return;
133
+ }
134
+ if (!Object.hasOwn(current, segment)) {
135
+ return;
136
+ }
137
+ current = current[index];
138
+ continue;
139
+ }
140
+ if (typeof current !== "object" || current === null || !Object.hasOwn(current, segment)) {
141
+ return;
142
+ }
143
+ current = current[segment];
144
+ }
145
+ return current;
146
+ }
147
+ function decodeJsonPointerSegment(segment) {
148
+ return segment.replaceAll("~1", "/").replaceAll("~0", "~");
149
+ }
150
+ export { FILE_DOWNLOAD_ROUTE_PREFIX2, createFileDownloadUrl, revokeFileDownloadUrl, resolveFileDownload2, resolveFileRefAtPath2, statFileRef2, openFileRef2, jsonPointerSegment2 };
85
151
 
86
- export { FILE_DOWNLOAD_ROUTE_PREFIX2, createFileDownloadUrl, revokeFileDownloadUrl, resolveFileDownload2 };
87
-
88
- //# debugId=0DA1ED5935603AF264756E2164756E21
152
+ //# debugId=14717FDAE9DF0DDF64756E2164756E21
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/blob-storage/download-urls.ts"],
3
+ "sources": ["../src/blob-storage/download-urls.ts", "../src/blob-storage/file-content.ts"],
4
4
  "sourcesContent": [
5
- "import { createHash, randomBytes, randomUUID } from \"node:crypto\"\nimport type { FileDownloadGrantRecord, FileDownloadGrantStorage, Storage } from \"../storage\"\nimport { BlobStorageError } from \"./errors\"\nimport type { BlobStorage, FileRef } from \"./types\"\nimport { isFileRef } from \"./validation\"\n\n/**\n * Download URLs let a third party that cannot hold a Sixb session — a social network fetching\n * media to publish, for instance — read one file for a bounded time.\n *\n * Each URL carries a random token. Storage keeps only its SHA-256, with the file, the expiry, and\n * the execution that issued it. The API looks the token up on every request, so any process\n * sharing the storage can issue a URL, and a URL can be revoked before it expires.\n *\n * The API serves the bytes itself rather than redirecting to the blob provider: fetchers such as\n * TikTok refuse redirects and accept only hosts whose ownership the developer verified.\n */\n\n/** Path prefix of the public route that serves download URLs. */\nexport const FILE_DOWNLOAD_ROUTE_PREFIX = \"/api/files/downloads/\"\n\nconst DEFAULT_EXPIRY_MS = 60 * 60 * 1000\n// SQLite compares ISO timestamps as text, which orders them correctly only for four-digit years.\nconst LATEST_EXPIRY_MS = Date.UTC(9999, 11, 31, 23, 59, 59, 999)\n/** 32 random bytes in base64url. */\nconst TOKEN_PATTERN = /^[A-Za-z0-9_-]{43}$/\n\nexport interface CreateFileDownloadUrlOptions {\n /** How long the URL stays valid. Defaults to one hour. */\n readonly expiresInMs?: number\n}\n\nexport interface FileDownloadUrl {\n /** Pass to `blobs.revokeDownloadUrl()` to stop the URL before it expires. */\n readonly id: string\n readonly url: string\n readonly expiresAt: Date\n}\n\n/** What issuing and revoking need from the execution that asks. */\nexport interface FileDownloadUrlContext {\n readonly projectId: string\n readonly storage: Storage\n readonly blobStorage: BlobStorage\n readonly executionId: string\n readonly apiPublicOrigin: string | undefined\n}\n\nexport async function createFileDownloadUrl(\n context: FileDownloadUrlContext,\n file: FileRef,\n options: CreateFileDownloadUrlOptions = {}\n): Promise<FileDownloadUrl> {\n if (!isFileRef(file)) {\n throw new Error(\"[Sixb] blobs.createDownloadUrl() requires a valid file reference.\")\n }\n const createdAt = new Date()\n const expiresAt = expiryFrom(createdAt, options.expiresInMs ?? DEFAULT_EXPIRY_MS)\n const grants = requireGrantStorage(context.storage)\n if (context.apiPublicOrigin === undefined) {\n throw new Error(\n \"[Sixb] blobs.createDownloadUrl() needs the API's public origin. Set SIXB_API_PUBLIC_ORIGIN for the API and every worker.\"\n )\n }\n // Fail here, not when a third party fetches the URL minutes later and gets a bare 404.\n const stat = await context.blobStorage.stat(file.blobId)\n if (!stat || stat.digest !== file.digest || stat.sizeBytes !== file.sizeBytes) {\n throw new BlobStorageError(`[Sixb] No stored blob matches file '${file.blobId}'.`)\n }\n\n const token = randomBytes(32).toString(\"base64url\")\n const { logicalPath: _logicalPath, ...served } = file\n const grant: FileDownloadGrantRecord = {\n id: `filedownload_${randomUUID()}`,\n projectId: context.projectId,\n tokenHash: hashToken(token),\n file: served,\n executionId: context.executionId,\n createdAt,\n expiresAt,\n }\n await grants.create(grant)\n\n return {\n id: grant.id,\n url: new URL(`${FILE_DOWNLOAD_ROUTE_PREFIX}${token}`, context.apiPublicOrigin).toString(),\n expiresAt: grant.expiresAt,\n }\n}\n\nexport async function revokeFileDownloadUrl(\n context: FileDownloadUrlContext,\n id: string\n): Promise<void> {\n const revoked = await requireGrantStorage(context.storage).revoke({\n projectId: context.projectId,\n id,\n revokedAt: new Date(),\n })\n if (!revoked) {\n throw new Error(`[Sixb] Download URL '${id}' does not exist.`)\n }\n}\n\n/** The file a token serves, or `null` when the token is unknown, expired, or revoked. */\nexport async function resolveFileDownload(\n host: { readonly id: string; readonly storage: Storage },\n token: string\n): Promise<FileRef | null> {\n const grants = host.storage.fileDownloadGrants\n if (!grants || !TOKEN_PATTERN.test(token)) return null\n\n const grant = await grants.findByTokenHash({ projectId: host.id, tokenHash: hashToken(token) })\n if (!grant || grant.revokedAt || grant.expiresAt.getTime() <= Date.now()) return null\n return grant.file\n}\n\nfunction hashToken(token: string): string {\n return createHash(\"sha256\").update(token).digest(\"hex\")\n}\n\nfunction requireGrantStorage(storage: Storage): FileDownloadGrantStorage {\n if (!storage.fileDownloadGrants) {\n throw new Error(\"[Sixb] Download URLs require storage.fileDownloadGrants.\")\n }\n return storage.fileDownloadGrants\n}\n\nfunction expiryFrom(createdAt: Date, expiresInMs: number): Date {\n if (!Number.isSafeInteger(expiresInMs) || expiresInMs <= 0) {\n throw new Error(\"[Sixb] expiresInMs must be a positive integer.\")\n }\n const expiresAt = createdAt.getTime() + expiresInMs\n if (expiresAt > LATEST_EXPIRY_MS) {\n throw new Error(\"[Sixb] expiresInMs must end before the year 10000.\")\n }\n return new Date(expiresAt)\n}\n"
5
+ "import { createHash, randomBytes, randomUUID } from \"node:crypto\"\nimport type { FileDownloadGrantRecord, FileDownloadGrantStorage, Storage } from \"../storage\"\nimport { BlobStorageError } from \"./errors\"\nimport type { BlobStorage, FileRef } from \"./types\"\nimport { isFileRef } from \"./validation\"\n\n/**\n * Download URLs let a third party that cannot hold a Sixb session — a social network fetching\n * media to publish, for instance — read one file for a bounded time.\n *\n * Each URL carries a random token. Storage keeps only its SHA-256, with the file, the expiry, and\n * the execution that issued it. The API looks the token up on every request, so any process\n * sharing the storage can issue a URL, and a URL can be revoked before it expires.\n *\n * The API serves the bytes itself rather than redirecting to the blob provider: fetchers such as\n * TikTok refuse redirects and accept only hosts whose ownership the developer verified.\n */\n\n/** Path prefix of the public route that serves download URLs. */\nexport const FILE_DOWNLOAD_ROUTE_PREFIX = \"/api/files/downloads/\"\n\nconst DEFAULT_EXPIRY_MS = 60 * 60 * 1000\n// SQLite compares ISO timestamps as text, which orders them correctly only for four-digit years.\nconst LATEST_EXPIRY_MS = Date.UTC(9999, 11, 31, 23, 59, 59, 999)\n/** 32 random bytes in base64url. */\nconst TOKEN_PATTERN = /^[A-Za-z0-9_-]{43}$/\n\nexport interface CreateFileDownloadUrlOptions {\n /** How long the URL stays valid. Defaults to one hour. */\n readonly expiresInMs?: number\n}\n\nexport interface FileDownloadUrl {\n /** Pass to `blobs.revokeDownloadUrl()` to stop the URL before it expires. */\n readonly id: string\n readonly url: string\n readonly expiresAt: Date\n}\n\n/** What issuing and revoking need from the execution that asks. */\nexport interface FileDownloadUrlContext {\n readonly projectId: string\n readonly storage: Storage\n readonly blobStorage: BlobStorage\n readonly executionId: string\n readonly apiPublicOrigin: string | undefined\n}\n\nexport async function createFileDownloadUrl(\n context: FileDownloadUrlContext,\n file: FileRef,\n options: CreateFileDownloadUrlOptions = {}\n): Promise<FileDownloadUrl> {\n if (!isFileRef(file)) {\n throw new Error(\"[Sixb] blobs.createDownloadUrl() requires a valid file reference.\")\n }\n const createdAt = new Date()\n const expiresAt = expiryFrom(createdAt, options.expiresInMs ?? DEFAULT_EXPIRY_MS)\n const grants = requireGrantStorage(context.storage)\n if (context.apiPublicOrigin === undefined) {\n throw new Error(\n \"[Sixb] blobs.createDownloadUrl() needs the API's public origin. Set SIXB_API_PUBLIC_ORIGIN for the API and every worker.\"\n )\n }\n // Fail here, not when a third party fetches the URL minutes later and gets a bare 404.\n const stat = await context.blobStorage.stat(file.blobId)\n if (!stat || stat.digest !== file.digest || stat.sizeBytes !== file.sizeBytes) {\n throw new BlobStorageError(`[Sixb] No stored blob matches file '${file.blobId}'.`)\n }\n\n const token = randomBytes(32).toString(\"base64url\")\n const { logicalPath: _logicalPath, ...served } = file\n const grant: FileDownloadGrantRecord = {\n id: `filedownload_${randomUUID()}`,\n projectId: context.projectId,\n tokenHash: hashToken(token),\n file: served,\n executionId: context.executionId,\n createdAt,\n expiresAt,\n }\n await grants.create(grant)\n\n return {\n id: grant.id,\n url: new URL(`${FILE_DOWNLOAD_ROUTE_PREFIX}${token}`, context.apiPublicOrigin).toString(),\n expiresAt: grant.expiresAt,\n }\n}\n\nexport async function revokeFileDownloadUrl(\n context: FileDownloadUrlContext,\n id: string\n): Promise<void> {\n const revoked = await requireGrantStorage(context.storage).revoke({\n projectId: context.projectId,\n id,\n revokedAt: new Date(),\n })\n if (!revoked) {\n throw new Error(`[Sixb] Download URL '${id}' does not exist.`)\n }\n}\n\n/** The file a token serves, or `null` when the token is unknown, expired, or revoked. */\nexport async function resolveFileDownload(\n host: { readonly id: string; readonly storage: Storage },\n token: string\n): Promise<FileRef | null> {\n const grants = host.storage.fileDownloadGrants\n if (!grants || !TOKEN_PATTERN.test(token)) return null\n\n const grant = await grants.findByTokenHash({ projectId: host.id, tokenHash: hashToken(token) })\n if (!grant || grant.revokedAt || grant.expiresAt.getTime() <= Date.now()) return null\n return grant.file\n}\n\nfunction hashToken(token: string): string {\n return createHash(\"sha256\").update(token).digest(\"hex\")\n}\n\nfunction requireGrantStorage(storage: Storage): FileDownloadGrantStorage {\n if (!storage.fileDownloadGrants) {\n throw new Error(\"[Sixb] Download URLs require storage.fileDownloadGrants.\")\n }\n return storage.fileDownloadGrants\n}\n\nfunction expiryFrom(createdAt: Date, expiresInMs: number): Date {\n if (!Number.isSafeInteger(expiresInMs) || expiresInMs <= 0) {\n throw new Error(\"[Sixb] expiresInMs must be a positive integer.\")\n }\n const expiresAt = createdAt.getTime() + expiresInMs\n if (expiresAt > LATEST_EXPIRY_MS) {\n throw new Error(\"[Sixb] expiresInMs must end before the year 10000.\")\n }\n return new Date(expiresAt)\n}\n",
6
+ "import type { BlobInfo, BlobStorage, FileRef, OpenedFileRef } from \"./types\"\nimport { isFileRef } from \"./validation\"\n\n/**\n * A file is served only through the record that references it: the caller reads that record with\n * its own authority, resolves the FileRef inside it, then checks the FileRef against the stored\n * blob. File content routes and the SDK's `file().open()` share these steps.\n */\n\n/** The FileRef at a JSON Pointer in an authorized record, or null when none is there. */\nexport function resolveFileRefAtPath(root: unknown, path: string): FileRef | null {\n const value = resolveJsonPointer(root, path)\n return isFileRef(value) ? value : null\n}\n\n/** The stored blob a FileRef names, or null when it is absent or no longer matches it. */\nexport async function statFileRef(\n blobStorage: Pick<BlobStorage, \"stat\">,\n fileRef: FileRef\n): Promise<BlobInfo | null> {\n const stat = await blobStorage.stat(fileRef.blobId)\n return stat &&\n stat.blobId === fileRef.blobId &&\n stat.digest === fileRef.digest &&\n stat.sizeBytes === fileRef.sizeBytes\n ? stat\n : null\n}\n\n/**\n * Open a FileRef resolved from an authorized record, or return null when its blob is gone. The\n * blob itself is opened on the body's first read, so a body nobody reads holds nothing.\n */\nexport async function openFileRef(\n blobStorage: Pick<BlobStorage, \"stat\" | \"open\">,\n fileRef: FileRef\n): Promise<OpenedFileRef | null> {\n const stat = await statFileRef(blobStorage, fileRef)\n if (!stat) return null\n return { fileRef, body: openOnFirstRead(blobStorage, fileRef.blobId) }\n}\n\nfunction openOnFirstRead(\n blobStorage: Pick<BlobStorage, \"open\">,\n blobId: string\n): ReadableStream<Uint8Array> {\n let reader: ReadableStreamDefaultReader<Uint8Array> | undefined\n return new ReadableStream<Uint8Array>(\n {\n async pull(controller) {\n reader ??= (await blobStorage.open(blobId)).getReader()\n const { done, value } = await reader.read()\n if (done) controller.close()\n else controller.enqueue(value)\n },\n async cancel(reason) {\n await reader?.cancel(reason)\n },\n },\n // No read-ahead: the first pull waits for the first read.\n { highWaterMark: 0 }\n )\n}\n\n/** Escape one segment of a JSON Pointer. */\nexport function jsonPointerSegment(segment: string | number): string {\n return String(segment).replaceAll(\"~\", \"~0\").replaceAll(\"/\", \"~1\")\n}\n\nfunction resolveJsonPointer(root: unknown, pointer: string): unknown {\n if (pointer === \"\") {\n return root\n }\n\n if (!pointer.startsWith(\"/\")) {\n return undefined\n }\n\n let current = root\n for (const rawSegment of pointer.slice(1).split(\"/\")) {\n const segment = decodeJsonPointerSegment(rawSegment)\n if (Array.isArray(current)) {\n const index = Number.parseInt(segment, 10)\n if (!Number.isInteger(index) || index < 0 || index.toString() !== segment) {\n return undefined\n }\n if (!Object.hasOwn(current, segment)) {\n return undefined\n }\n current = current[index]\n continue\n }\n\n if (typeof current !== \"object\" || current === null || !Object.hasOwn(current, segment)) {\n return undefined\n }\n\n current = (current as Record<string, unknown>)[segment]\n }\n\n return current\n}\n\nfunction decodeJsonPointerSegment(segment: string): string {\n return segment.replaceAll(\"~1\", \"/\").replaceAll(\"~0\", \"~\")\n}\n"
6
7
  ],
7
- "mappings": "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",
8
- "debugId": "0DA1ED5935603AF264756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "14717FDAE9DF0DDF64756E2164756E21",
9
10
  "names": []
10
11
  }
@@ -3,7 +3,7 @@ import {
3
3
  MAX_OBJECT_READ_FACETS2,
4
4
  isAllowed2,
5
5
  assertAuthorized2
6
- } from "./chunk-5be2ath4.js";
6
+ } from "./chunk-y7rqfrgg.js";
7
7
  import {
8
8
  validateSchemaValue2,
9
9
  validatePropertyValue2,
@@ -12,35 +12,35 @@ import {
12
12
  isTextSchema,
13
13
  isContainsSchema,
14
14
  queryScalarKindForSchema
15
- } from "./chunk-rpxz486p.js";
15
+ } from "./chunk-hvsb78a1.js";
16
16
  import {
17
17
  validateRerankingResults
18
- } from "./chunk-s7ftxrdr.js";
18
+ } from "./chunk-29yx306f.js";
19
19
  import {
20
+ MAX_VECTOR_K,
21
+ vectorConfiguration,
22
+ vectorSources,
23
+ normalizeVector2,
20
24
  hasVectorProfile2,
21
25
  isVectorProfileQuery2,
22
26
  objectBatchKey2,
23
27
  linkBatchKey2,
24
28
  objectLinkCursor2,
25
29
  compareQueryScalarValues,
26
- queryScalarValuesEqual,
27
- MAX_VECTOR_K,
28
- vectorConfiguration,
29
- vectorSources,
30
- normalizeVector2
31
- } from "./chunk-5yd8cchh.js";
30
+ queryScalarValuesEqual
31
+ } from "./chunk-j2bp5ryw.js";
32
32
  import {
33
- normalizeObjectQuery2,
34
33
  ObjectQueryValidationError2,
35
34
  ObjectQueryPlanningError2,
36
- ObjectQueryExecutionError2
37
- } from "./chunk-kpx7jrmn.js";
38
- import {
39
- formatUnknownObjectTypeMessage
40
- } from "./chunk-cqr3acm1.js";
35
+ ObjectQueryExecutionError2,
36
+ normalizeObjectQuery2
37
+ } from "./chunk-91mg3nj9.js";
41
38
  import {
42
39
  sameEmbeddingModel
43
40
  } from "./chunk-kyjcwqz6.js";
41
+ import {
42
+ formatUnknownObjectTypeMessage
43
+ } from "./chunk-cqr3acm1.js";
44
44
  import {
45
45
  normalizeDecimalValue2
46
46
  } from "./chunk-3bh94gbw.js";
@@ -67,6 +67,41 @@ var NOOP_QUERY_ADMISSION = Object.freeze({
67
67
  }),
68
68
  set: (input) => input.states[0] ?? NOOP_ADMISSION_STATE
69
69
  });
70
+ function composeObjectQueryAdmissions(first, second) {
71
+ const parts = new WeakMap;
72
+ const join = (left, right) => {
73
+ const state = Object.freeze({});
74
+ parts.set(state, [left, right]);
75
+ return state;
76
+ };
77
+ const split = (state) => {
78
+ const pair = parts.get(state);
79
+ if (!pair)
80
+ throw new Error("[Sixb] Composed query admission received a foreign state.");
81
+ return pair;
82
+ };
83
+ const transition = (left, right) => {
84
+ const denial = left.denial ?? right.denial;
85
+ return { state: join(left.state, right.state), ...denial ? { denial } : {} };
86
+ };
87
+ const admission = {
88
+ empty: () => join(first.empty(), second.empty()),
89
+ source: (input) => transition(first.source(input), second.source(input)),
90
+ edge: (input) => {
91
+ const [left, right] = split(input.state);
92
+ return transition(first.edge({ ...input, state: left }), second.edge({ ...input, state: right }));
93
+ },
94
+ property: (input) => {
95
+ const [left, right] = split(input.state);
96
+ return first.property({ ...input, state: left }) ?? second.property({ ...input, state: right });
97
+ },
98
+ set: (input) => {
99
+ const pairs = input.states.map(split);
100
+ return join(first.set({ ...input, states: pairs.map(([left]) => left) }), second.set({ ...input, states: pairs.map(([, right]) => right) }));
101
+ }
102
+ };
103
+ return Object.freeze(admission);
104
+ }
70
105
  function validateObjectQuery2(query, options) {
71
106
  const admitted = validateObjectQueryWithAdmission(query, options, NOOP_QUERY_ADMISSION);
72
107
  return {
@@ -299,7 +334,7 @@ function validateStart(objectTypeId, includeSubtypes, path, ctx) {
299
334
  addIssue(ctx, path, "unknown_object_type", formatUnknownObjectTypeMessage(objectTypeId));
300
335
  return { result: { objectTypeIds: [] }, query: { kind: "start", objectTypeId } };
301
336
  }
302
- const objectTypeIds = includeSubtypes ? uniqueStrings([objectTypeId, ...ctx.ontology.listSubTypes(objectTypeId)]) : [objectTypeId];
337
+ const objectTypeIds = includeSubtypes ? withSubtypes([objectTypeId], ctx) : [objectTypeId];
303
338
  return { result: { objectTypeIds }, query: { kind: "start", objectTypeId, includeSubtypes } };
304
339
  }
305
340
  function validatePredicate(predicate, shape, admissionState, path, ctx) {
@@ -513,16 +548,15 @@ function validateTextQuery(query, fields, shape, admissionState, path, ctx) {
513
548
  addIssue(ctx, path, "missing_text_fields", `Object type '${objectType.id}' must define search.defaultText or the text query must specify fields`);
514
549
  continue;
515
550
  }
551
+ const admitted = admitTextFields(fieldIds, fields === undefined, {
552
+ state: admissionState,
553
+ objectTypeId: objectType.id,
554
+ path: `${path}.fields`,
555
+ ctx
556
+ });
516
557
  if (fieldsByObjectType)
517
- fieldsByObjectType[objectType.id] = uniqueStrings(fieldIds);
558
+ fieldsByObjectType[objectType.id] = uniqueStrings(admitted);
518
559
  for (const fieldId of fieldIds) {
519
- admitProperty(ctx, {
520
- state: admissionState,
521
- propertyId: fieldId,
522
- objectTypeId: objectType.id,
523
- use: "text",
524
- path: `${path}.fields`
525
- });
526
560
  const property = getProperty(objectType, fieldId);
527
561
  if (!property) {
528
562
  addIssue(ctx, path, "unknown_text_field", `Text query references unknown property '${fieldId}' on '${objectType.id}'`);
@@ -538,6 +572,29 @@ function validateTextQuery(query, fields, shape, admissionState, path, ctx) {
538
572
  }
539
573
  return fieldsByObjectType ? { fieldsByObjectType } : {};
540
574
  }
575
+ function admitTextFields(fieldIds, defaults, input) {
576
+ const admitted = [];
577
+ let firstDenial;
578
+ for (const fieldId of fieldIds) {
579
+ const denial = input.ctx.admission.property({
580
+ state: input.state,
581
+ propertyId: fieldId,
582
+ objectTypeId: input.objectTypeId,
583
+ use: "text",
584
+ path: input.path
585
+ });
586
+ if (!denial) {
587
+ admitted.push(fieldId);
588
+ } else if (!defaults) {
589
+ recordAdmissionDenial(input.ctx, denial);
590
+ } else {
591
+ firstDenial ??= denial;
592
+ }
593
+ }
594
+ if (admitted.length === 0 && firstDenial)
595
+ recordAdmissionDenial(input.ctx, firstDenial);
596
+ return admitted;
597
+ }
541
598
  function validateVectorProfileQuery(query, shape, state, path, ctx) {
542
599
  const types = getObjectTypesForResult(shape, ctx);
543
600
  if (types.length !== 1 || !Number.isSafeInteger(query.k) || query.k < 1 || query.k > MAX_VECTOR_K) {
@@ -605,7 +662,9 @@ function validateOutgoingTraverse(linkId, shape, path, ctx) {
605
662
  }
606
663
  }
607
664
  }
608
- return { objectTypeIds: uniqueStrings(targetTypeIds) };
665
+ const objectTypeIds = uniqueStrings(targetTypeIds);
666
+ touchLinkTargets(objectTypeIds, ctx);
667
+ return { objectTypeIds };
609
668
  }
610
669
  function validateIncomingTraverse(linkId, sourceObjectTypeId, shape, path, ctx) {
611
670
  let candidateTypes = ctx.ontology.listObjectTypes();
@@ -688,7 +747,14 @@ function resolveOutgoingExpansionTargets(linkId, sourceObjectTypeId, shape, path
688
747
  if (!foundOnAnyType) {
689
748
  addIssue(ctx, path, "unknown_expand_link", `Expansion references link '${linkId}' not present on result type ${shape.objectTypeIds.join(" | ")} (an expand abandoned by a later traverse?)`);
690
749
  }
691
- return { objectTypeIds: uniqueStrings(targetTypeIds) };
750
+ const objectTypeIds = uniqueStrings(targetTypeIds);
751
+ touchLinkTargets(objectTypeIds, ctx);
752
+ return { objectTypeIds };
753
+ }
754
+ function touchLinkTargets(objectTypeIds, ctx) {
755
+ for (const objectTypeId of withSubtypes(objectTypeIds, ctx)) {
756
+ ctx.touchedObjectTypeIds.add(objectTypeId);
757
+ }
692
758
  }
693
759
  function resolveIncomingExpansionTargets(linkId, sourceObjectTypeId, shape, path, ctx) {
694
760
  let candidateTypes = ctx.ontology.listObjectTypes();
@@ -900,6 +966,9 @@ function keyForTypeIds(typeIds) {
900
966
  function uniqueStrings(values) {
901
967
  return [...new Set(values)];
902
968
  }
969
+ function withSubtypes(objectTypeIds, ctx) {
970
+ return uniqueStrings(objectTypeIds.flatMap((id) => [id, ...ctx.ontology.listSubTypes(id)]));
971
+ }
903
972
  function admitTransition(ctx, transition) {
904
973
  if (transition.denial)
905
974
  recordAdmissionDenial(ctx, transition.denial);
@@ -1385,15 +1454,7 @@ var DEFAULT_MAX_FACET_LIMIT = 1000;
1385
1454
  var DEFAULT_MAX_EXPANSION_FANOUT = 1000;
1386
1455
  var PAGE_TOKEN_PREFIX = "offset:";
1387
1456
  async function executeObjectQuery2(input, options) {
1388
- const normalized = normalizeObjectQuery2(input.query);
1389
- const validated = validateObjectQuery2(normalized, {
1390
- ontology: options.ontology,
1391
- maxLimit: options.maxLimit,
1392
- maxPageSize: options.maxPageSize,
1393
- maxRefs: options.maxRefs,
1394
- normalize: false
1395
- });
1396
- assertQueryViewable(input.projectId, validated, options);
1457
+ const validated = validateExecutableQuery(input, options);
1397
1458
  const capabilities = options.storage.queryCapabilities();
1398
1459
  const hasQueryObjects = typeof options.storage.queryObjects === "function";
1399
1460
  const hasCountObjects = typeof options.storage.countObjects === "function";
@@ -1458,15 +1519,7 @@ async function executeObjectQuery2(input, options) {
1458
1519
  return { ...fallback, plan };
1459
1520
  }
1460
1521
  async function countObjects2(input, options) {
1461
- const normalized = normalizeObjectQuery2(input.query);
1462
- const validated = validateObjectQuery2(normalized, {
1463
- ontology: options.ontology,
1464
- maxLimit: options.maxLimit,
1465
- maxPageSize: options.maxPageSize,
1466
- maxRefs: options.maxRefs,
1467
- normalize: false
1468
- });
1469
- assertQueryViewable(input.projectId, validated, options);
1522
+ const validated = validateExecutableQuery(input, options);
1470
1523
  const capabilities = options.storage.queryCapabilities();
1471
1524
  const hasQueryObjects = typeof options.storage.queryObjects === "function";
1472
1525
  const hasCountObjects = typeof options.storage.countObjects === "function";
@@ -1512,15 +1565,7 @@ async function countObjects2(input, options) {
1512
1565
  return { count: evaluation.total, plan };
1513
1566
  }
1514
1567
  async function existsObjects2(input, options) {
1515
- const normalized = normalizeObjectQuery2(input.query);
1516
- const validated = validateObjectQuery2(normalized, {
1517
- ontology: options.ontology,
1518
- maxLimit: options.maxLimit,
1519
- maxPageSize: options.maxPageSize,
1520
- maxRefs: options.maxRefs,
1521
- normalize: false
1522
- });
1523
- assertQueryViewable(input.projectId, validated, options);
1568
+ const validated = validateExecutableQuery(input, options);
1524
1569
  const capabilities = options.storage.queryCapabilities();
1525
1570
  const hasQueryObjects = typeof options.storage.queryObjects === "function";
1526
1571
  const hasCountObjects = typeof options.storage.countObjects === "function";
@@ -1566,16 +1611,18 @@ async function existsObjects2(input, options) {
1566
1611
  return { exists: evaluation.total > 0, plan };
1567
1612
  }
1568
1613
  async function facetObjects2(input, options) {
1569
- const normalized = normalizeObjectQuery2(input.query);
1570
- const validated = validateObjectQuery2(normalized, {
1571
- ontology: options.ontology,
1572
- maxLimit: options.maxLimit,
1573
- maxPageSize: options.maxPageSize,
1574
- maxRefs: options.maxRefs,
1575
- normalize: false
1576
- });
1577
- assertQueryViewable(input.projectId, validated, options);
1614
+ const validated = validateExecutableQuery(input, options);
1578
1615
  const facets = validateObjectFacetRequests(input.facets, validated.result.objectTypeIds, options);
1616
+ facets.forEach((facet, index) => {
1617
+ const denial = options.admission?.property({
1618
+ state: validated.admissionState,
1619
+ propertyId: facet.propertyId,
1620
+ use: "facet",
1621
+ path: `$.facets[${index}].propertyId`
1622
+ });
1623
+ if (denial)
1624
+ throw denial;
1625
+ });
1579
1626
  const aggregateQuery = stripOuterRowShape(validated.query);
1580
1627
  const capabilities = options.storage.queryCapabilities();
1581
1628
  const hasQueryObjects = typeof options.storage.queryObjects === "function";
@@ -1625,6 +1672,21 @@ async function facetObjects2(input, options) {
1625
1672
  plan
1626
1673
  };
1627
1674
  }
1675
+ function validateExecutableQuery(input, options) {
1676
+ const validationOptions = {
1677
+ ontology: options.ontology,
1678
+ maxLimit: options.maxLimit,
1679
+ maxPageSize: options.maxPageSize,
1680
+ maxRefs: options.maxRefs,
1681
+ normalize: false
1682
+ };
1683
+ const normalized = normalizeObjectQuery2(input.query);
1684
+ const validated = validateObjectQuery2(normalized, validationOptions);
1685
+ assertQueryViewable(input.projectId, validated, options);
1686
+ if (!options.admission)
1687
+ return { ...validated, admissionState: {} };
1688
+ return validateObjectQueryWithAdmission(normalized, validationOptions, options.admission);
1689
+ }
1628
1690
  function assertQueryViewable(projectId, validated, authorization) {
1629
1691
  if (!authorization.runtimeAuthorization && !authorization.authorization)
1630
1692
  return;
@@ -2619,6 +2681,6 @@ async function hydrateLinkQueryObjects(projectId, selected, links, storage) {
2619
2681
  return row ? [row] : [];
2620
2682
  });
2621
2683
  }
2622
- export { validateObjectQuery2, validateObjectQueryWithAdmission, collectObjectQueryValidationIssues2, resolveObjectQueryResultShape2, planObjectQuery2, executeObjectQuery2, countObjects2, existsObjects2, facetObjects2, validateObjectFacetRequests, explainObjectQuery2, preflightObjectQueryLinks, executeObjectQueryLinks2 };
2684
+ export { composeObjectQueryAdmissions, validateObjectQuery2, validateObjectQueryWithAdmission, collectObjectQueryValidationIssues2, resolveObjectQueryResultShape2, planObjectQuery2, executeObjectQuery2, countObjects2, existsObjects2, facetObjects2, validateObjectFacetRequests, explainObjectQuery2, preflightObjectQueryLinks, executeObjectQueryLinks2 };
2623
2685
 
2624
- //# debugId=A31A747EB003D67964756E2164756E21
2686
+ //# debugId=6A00FC17EF4657DE64756E2164756E21