@sixb/core 0.1.19 → 0.1.21

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 (765) hide show
  1. package/dist/actions/execution.d.ts.map +1 -1
  2. package/dist/actions/index.js +54 -47
  3. package/dist/actions/index.js.map +1 -1
  4. package/dist/actions/request.d.ts.map +1 -1
  5. package/dist/actions/run-authorization.d.ts +9 -0
  6. package/dist/actions/run-authorization.d.ts.map +1 -1
  7. package/dist/activity/connection.d.ts +62 -0
  8. package/dist/activity/connection.d.ts.map +1 -0
  9. package/dist/activity/device.d.ts +8 -0
  10. package/dist/activity/device.d.ts.map +1 -0
  11. package/dist/activity/execution.d.ts +48 -0
  12. package/dist/activity/execution.d.ts.map +1 -0
  13. package/dist/activity/service.d.ts +79 -0
  14. package/dist/activity/service.d.ts.map +1 -0
  15. package/dist/activity/shares.d.ts +24 -0
  16. package/dist/activity/shares.d.ts.map +1 -0
  17. package/dist/activity/timeline.d.ts +96 -0
  18. package/dist/activity/timeline.d.ts.map +1 -0
  19. package/dist/agents/index.d.ts +2 -1
  20. package/dist/agents/index.d.ts.map +1 -1
  21. package/dist/agents/index.js +63 -50
  22. package/dist/agents/index.js.map +1 -1
  23. package/dist/agents/request.d.ts.map +1 -1
  24. package/dist/agents/skills.d.ts.map +1 -1
  25. package/dist/agents/streams/index.js +3 -3
  26. package/dist/agents/streams/internal.js +3 -3
  27. package/dist/agents/types.d.ts +8 -8
  28. package/dist/agents/types.d.ts.map +1 -1
  29. package/dist/agents/validation.d.ts +1 -1
  30. package/dist/agents/validation.d.ts.map +1 -1
  31. package/dist/artifacts/address.d.ts +48 -0
  32. package/dist/artifacts/address.d.ts.map +1 -0
  33. package/dist/artifacts/csv.d.ts +22 -0
  34. package/dist/artifacts/csv.d.ts.map +1 -0
  35. package/dist/artifacts/errors.d.ts +11 -0
  36. package/dist/artifacts/errors.d.ts.map +1 -0
  37. package/dist/artifacts/execution.d.ts +43 -0
  38. package/dist/artifacts/execution.d.ts.map +1 -0
  39. package/dist/artifacts/frames/assets.d.ts +28 -0
  40. package/dist/artifacts/frames/assets.d.ts.map +1 -0
  41. package/dist/artifacts/frames/grants.d.ts +37 -0
  42. package/dist/artifacts/frames/grants.d.ts.map +1 -0
  43. package/dist/artifacts/frames/index.d.ts +10 -0
  44. package/dist/artifacts/frames/index.d.ts.map +1 -0
  45. package/dist/artifacts/frames/index.js +892 -0
  46. package/dist/artifacts/frames/index.js.map +14 -0
  47. package/dist/artifacts/frames/kit.d.ts +66 -0
  48. package/dist/artifacts/frames/kit.d.ts.map +1 -0
  49. package/dist/artifacts/frames/probe.d.ts +41 -0
  50. package/dist/artifacts/frames/probe.d.ts.map +1 -0
  51. package/dist/artifacts/frames/protocol.d.ts +98 -0
  52. package/dist/artifacts/frames/protocol.d.ts.map +1 -0
  53. package/dist/artifacts/frames/runtime.d.ts +13 -0
  54. package/dist/artifacts/frames/runtime.d.ts.map +1 -0
  55. package/dist/artifacts/html.d.ts +6 -0
  56. package/dist/artifacts/html.d.ts.map +1 -0
  57. package/dist/artifacts/ids.d.ts +5 -0
  58. package/dist/artifacts/ids.d.ts.map +1 -0
  59. package/dist/artifacts/index.d.ts +16 -0
  60. package/dist/artifacts/index.d.ts.map +1 -0
  61. package/dist/artifacts/index.js +125 -0
  62. package/dist/artifacts/index.js.map +10 -0
  63. package/dist/artifacts/kinds.d.ts +5 -0
  64. package/dist/artifacts/kinds.d.ts.map +1 -0
  65. package/dist/artifacts/limits.d.ts +28 -0
  66. package/dist/artifacts/limits.d.ts.map +1 -0
  67. package/dist/artifacts/outline.d.ts +44 -0
  68. package/dist/artifacts/outline.d.ts.map +1 -0
  69. package/dist/artifacts/publish/files.d.ts +15 -0
  70. package/dist/artifacts/publish/files.d.ts.map +1 -0
  71. package/dist/artifacts/publish/index.d.ts +5 -0
  72. package/dist/artifacts/publish/index.d.ts.map +1 -0
  73. package/dist/artifacts/publish/index.js +36 -0
  74. package/dist/artifacts/publish/index.js.map +9 -0
  75. package/dist/artifacts/publish/publish.d.ts +52 -0
  76. package/dist/artifacts/publish/publish.d.ts.map +1 -0
  77. package/dist/artifacts/publish/references.d.ts +27 -0
  78. package/dist/artifacts/publish/references.d.ts.map +1 -0
  79. package/dist/artifacts/publish/validate/document.d.ts +17 -0
  80. package/dist/artifacts/publish/validate/document.d.ts.map +1 -0
  81. package/dist/artifacts/publish/validate/file.d.ts +8 -0
  82. package/dist/artifacts/publish/validate/file.d.ts.map +1 -0
  83. package/dist/artifacts/publish/validate/sheet.d.ts +15 -0
  84. package/dist/artifacts/publish/validate/sheet.d.ts.map +1 -0
  85. package/dist/artifacts/publish/validate/slides.d.ts +21 -0
  86. package/dist/artifacts/publish/validate/slides.d.ts.map +1 -0
  87. package/dist/artifacts/references.d.ts +12 -0
  88. package/dist/artifacts/references.d.ts.map +1 -0
  89. package/dist/artifacts/resolve.d.ts +41 -0
  90. package/dist/artifacts/resolve.d.ts.map +1 -0
  91. package/dist/artifacts/theme.d.ts +19 -0
  92. package/dist/artifacts/theme.d.ts.map +1 -0
  93. package/dist/artifacts/warnings.d.ts +11 -0
  94. package/dist/artifacts/warnings.d.ts.map +1 -0
  95. package/dist/artifacts/workbook.d.ts +64 -0
  96. package/dist/artifacts/workbook.d.ts.map +1 -0
  97. package/dist/auth/cookies.d.ts +2 -4
  98. package/dist/auth/cookies.d.ts.map +1 -1
  99. package/dist/auth/index.d.ts +0 -2
  100. package/dist/auth/index.d.ts.map +1 -1
  101. package/dist/auth/index.js +14 -20
  102. package/dist/auth/index.js.map +1 -1
  103. package/dist/auth/runtime.d.ts +8 -10
  104. package/dist/auth/runtime.d.ts.map +1 -1
  105. package/dist/auth/session-cache.d.ts +1 -5
  106. package/dist/auth/session-cache.d.ts.map +1 -1
  107. package/dist/auth/strategy.js +1 -1
  108. package/dist/auth/types.d.ts +4 -8
  109. package/dist/auth/types.d.ts.map +1 -1
  110. package/dist/auth/validation.d.ts +0 -1
  111. package/dist/auth/validation.d.ts.map +1 -1
  112. package/dist/authorization/decision.d.ts +2 -4
  113. package/dist/authorization/decision.d.ts.map +1 -1
  114. package/dist/authorization/grant-kinds.d.ts +6 -8
  115. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  116. package/dist/authorization/index.d.ts +0 -1
  117. package/dist/authorization/index.d.ts.map +1 -1
  118. package/dist/authorization/index.js +7 -11
  119. package/dist/authorization/index.js.map +1 -1
  120. package/dist/authorization/resolve.d.ts +1 -1
  121. package/dist/authorization/resolve.d.ts.map +1 -1
  122. package/dist/blob-storage/browser.js +1 -1
  123. package/dist/blob-storage/index.js +2 -2
  124. package/dist/blob-storage/internal.d.ts +1 -1
  125. package/dist/blob-storage/internal.d.ts.map +1 -1
  126. package/dist/blob-storage/internal.js +11 -5
  127. package/dist/blob-storage/internal.js.map +1 -1
  128. package/dist/blob-storage/media-type.d.ts +12 -0
  129. package/dist/blob-storage/media-type.d.ts.map +1 -1
  130. package/dist/bootstrap/index.js +54 -48
  131. package/dist/bootstrap/index.js.map +2 -2
  132. package/dist/{chunk-t6vq7bff.js → chunk-0bphap9y.js} +5 -5
  133. package/dist/{chunk-7mbzgd9m.js → chunk-1cc1xaf3.js} +3 -3
  134. package/dist/chunk-3jms7je7.js +14 -0
  135. package/dist/chunk-3jms7je7.js.map +10 -0
  136. package/dist/{chunk-s54c868q.js → chunk-3qct2mdc.js} +3 -13
  137. package/dist/chunk-3qct2mdc.js.map +12 -0
  138. package/dist/{chunk-6gmfggss.js → chunk-431pyp2c.js} +3 -3
  139. package/dist/{chunk-c85m1hyj.js → chunk-447a5c0p.js} +2 -2
  140. package/dist/chunk-48qjhh6v.js +185 -0
  141. package/dist/chunk-48qjhh6v.js.map +13 -0
  142. package/dist/{chunk-80mc0971.js → chunk-561r0yc9.js} +8 -8
  143. package/dist/{chunk-5e43w60z.js → chunk-5948n82c.js} +2 -2
  144. package/dist/{chunk-yzwja0mj.js → chunk-5hx48dnn.js} +2 -2
  145. package/dist/{chunk-tjb1mk5t.js → chunk-5vems3nx.js} +5 -6
  146. package/dist/{chunk-tjb1mk5t.js.map → chunk-5vems3nx.js.map} +3 -3
  147. package/dist/{chunk-aff7cyea.js → chunk-61y5xs4p.js} +563 -167
  148. package/dist/{chunk-aff7cyea.js.map → chunk-61y5xs4p.js.map} +12 -9
  149. package/dist/chunk-65abf64x.js +13 -0
  150. package/dist/chunk-65abf64x.js.map +10 -0
  151. package/dist/{chunk-z3y5kg1x.js → chunk-6eqsgvxk.js} +3 -3
  152. package/dist/{chunk-z3y5kg1x.js.map → chunk-6eqsgvxk.js.map} +2 -2
  153. package/dist/chunk-6rqgmkde.js +2028 -0
  154. package/dist/chunk-6rqgmkde.js.map +29 -0
  155. package/dist/{chunk-y7rqfrgg.js → chunk-6vb4st8k.js} +29 -38
  156. package/dist/chunk-6vb4st8k.js.map +23 -0
  157. package/dist/chunk-7q8t23v4.js +467 -0
  158. package/dist/chunk-7q8t23v4.js.map +14 -0
  159. package/dist/{chunk-kyzq4wy9.js → chunk-858emn8m.js} +17 -17
  160. package/dist/chunk-858emn8m.js.map +18 -0
  161. package/dist/{chunk-hvsb78a1.js → chunk-8frc8a4j.js} +26 -26
  162. package/dist/{chunk-hvsb78a1.js.map → chunk-8frc8a4j.js.map} +2 -2
  163. package/dist/{chunk-3zxk45er.js → chunk-8ncg20rd.js} +3 -68
  164. package/dist/{chunk-3zxk45er.js.map → chunk-8ncg20rd.js.map} +4 -5
  165. package/dist/{chunk-j2bp5ryw.js → chunk-918wwnaa.js} +495 -28
  166. package/dist/{chunk-j2bp5ryw.js.map → chunk-918wwnaa.js.map} +14 -12
  167. package/dist/{chunk-1f7wpmyp.js → chunk-9j4jw7as.js} +103 -110
  168. package/dist/chunk-9j4jw7as.js.map +14 -0
  169. package/dist/chunk-9kgkfg6v.js +502 -0
  170. package/dist/chunk-9kgkfg6v.js.map +14 -0
  171. package/dist/chunk-a3faa34j.js +74 -0
  172. package/dist/chunk-a3faa34j.js.map +10 -0
  173. package/dist/{chunk-ey3pyej1.js → chunk-akzryx9h.js} +347 -1174
  174. package/dist/{chunk-ey3pyej1.js.map → chunk-akzryx9h.js.map} +19 -25
  175. package/dist/chunk-arns890k.js +10 -0
  176. package/dist/chunk-arns890k.js.map +10 -0
  177. package/dist/{chunk-zrmy8zvw.js → chunk-bk9svbcq.js} +11 -11
  178. package/dist/{chunk-zrmy8zvw.js.map → chunk-bk9svbcq.js.map} +2 -2
  179. package/dist/{chunk-hkc3jct7.js → chunk-c06hmxyy.js} +2 -10
  180. package/dist/chunk-c06hmxyy.js.map +10 -0
  181. package/dist/{chunk-q1vkr2ys.js → chunk-c1rxbz5y.js} +3 -3
  182. package/dist/chunk-cfj9dfbb.js +288 -0
  183. package/dist/chunk-cfj9dfbb.js.map +12 -0
  184. package/dist/{chunk-4tcx876c.js → chunk-cn0fwwhy.js} +19 -19
  185. package/dist/{chunk-4tcx876c.js.map → chunk-cn0fwwhy.js.map} +1 -1
  186. package/dist/{chunk-gc4ntf7d.js → chunk-cwdzcv37.js} +1 -1
  187. package/dist/{chunk-fa02jy15.js → chunk-cy4mbddw.js} +1 -1
  188. package/dist/{chunk-7kg3k1m9.js → chunk-d09e3rax.js} +1 -1
  189. package/dist/chunk-d5rjr8c0.js +176 -0
  190. package/dist/chunk-d5rjr8c0.js.map +12 -0
  191. package/dist/{chunk-rhg02hxq.js → chunk-d7dnxdep.js} +3 -3
  192. package/dist/{chunk-b38szspf.js → chunk-dhcv7yxc.js} +1 -1
  193. package/dist/{chunk-b38szspf.js.map → chunk-dhcv7yxc.js.map} +1 -1
  194. package/dist/{chunk-enpsx8k5.js → chunk-dhdha526.js} +23 -21
  195. package/dist/chunk-dhdha526.js.map +10 -0
  196. package/dist/{chunk-8mx7qw3y.js → chunk-dvd2fp9q.js} +2 -2
  197. package/dist/{chunk-8mx7qw3y.js.map → chunk-dvd2fp9q.js.map} +3 -3
  198. package/dist/{chunk-bwjcehza.js → chunk-e17zdm62.js} +6 -12
  199. package/dist/{chunk-bwjcehza.js.map → chunk-e17zdm62.js.map} +3 -4
  200. package/dist/{chunk-tpn40322.js → chunk-e6k4thh5.js} +11 -10
  201. package/dist/{chunk-tpn40322.js.map → chunk-e6k4thh5.js.map} +3 -3
  202. package/dist/{chunk-tw03bsmb.js → chunk-eptrvnby.js} +224 -3
  203. package/dist/chunk-eptrvnby.js.map +12 -0
  204. package/dist/{chunk-xt1zt7gv.js → chunk-f4pamkt9.js} +30 -23
  205. package/dist/chunk-f4pamkt9.js.map +12 -0
  206. package/dist/chunk-ff5xkv0p.js +211 -0
  207. package/dist/chunk-ff5xkv0p.js.map +10 -0
  208. package/dist/{chunk-bpgy64fw.js → chunk-g257jwnc.js} +10 -4
  209. package/dist/{chunk-bpgy64fw.js.map → chunk-g257jwnc.js.map} +3 -3
  210. package/dist/chunk-g5bvzyyr.js +32 -0
  211. package/dist/chunk-g5bvzyyr.js.map +10 -0
  212. package/dist/{chunk-2jntasmh.js → chunk-hcbyfxbe.js} +25 -49
  213. package/dist/chunk-hcbyfxbe.js.map +12 -0
  214. package/dist/chunk-hke9aeen.js +9 -0
  215. package/dist/chunk-hke9aeen.js.map +10 -0
  216. package/dist/{chunk-1sr8ryzk.js → chunk-hwksyjks.js} +122 -1
  217. package/dist/{chunk-1sr8ryzk.js.map → chunk-hwksyjks.js.map} +3 -3
  218. package/dist/chunk-jcfw4h7m.js +9 -0
  219. package/dist/chunk-jcfw4h7m.js.map +10 -0
  220. package/dist/{chunk-85yvv5n0.js → chunk-k43ct2ke.js} +20 -11
  221. package/dist/chunk-k43ct2ke.js.map +12 -0
  222. package/dist/{chunk-dnmadg9k.js → chunk-kge7k6ey.js} +40 -8
  223. package/dist/chunk-kge7k6ey.js.map +15 -0
  224. package/dist/{chunk-wz0xs816.js → chunk-ky3j490c.js} +2 -2
  225. package/dist/chunk-mjddfa7k.js +129 -0
  226. package/dist/chunk-mjddfa7k.js.map +12 -0
  227. package/dist/{chunk-3gnrh4ve.js → chunk-nn5xnx3s.js} +86 -111
  228. package/dist/chunk-nn5xnx3s.js.map +40 -0
  229. package/dist/{chunk-rz53yb4v.js → chunk-q5e5tv4b.js} +35 -7
  230. package/dist/{chunk-rz53yb4v.js.map → chunk-q5e5tv4b.js.map} +3 -3
  231. package/dist/{chunk-vyf9kfqf.js → chunk-q7gn29y3.js} +1 -1
  232. package/dist/{chunk-d2ync1v3.js → chunk-rmakanzx.js} +10 -12
  233. package/dist/{chunk-d2ync1v3.js.map → chunk-rmakanzx.js.map} +3 -4
  234. package/dist/{chunk-v9xd5wzd.js → chunk-s7jg7pmn.js} +1 -1
  235. package/dist/chunk-tbc1ngpd.js +642 -0
  236. package/dist/chunk-tbc1ngpd.js.map +18 -0
  237. package/dist/chunk-twe4dx8p.js +676 -0
  238. package/dist/chunk-twe4dx8p.js.map +15 -0
  239. package/dist/{chunk-nre82s12.js → chunk-vf57cr4t.js} +2 -2
  240. package/dist/{chunk-9ybhtmg4.js → chunk-vvxtn22d.js} +1 -1
  241. package/dist/{chunk-jhm3zsa7.js → chunk-wkv3h3q7.js} +64 -2
  242. package/dist/{chunk-jhm3zsa7.js.map → chunk-wkv3h3q7.js.map} +3 -3
  243. package/dist/chunk-x0v3jd47.js +124 -0
  244. package/dist/chunk-x0v3jd47.js.map +10 -0
  245. package/dist/{chunk-7t429e3f.js → chunk-xvsc5m8n.js} +1 -1
  246. package/dist/{chunk-kg5j6fct.js → chunk-y5tah2kf.js} +1 -1
  247. package/dist/{chunk-52bk93x8.js → chunk-z58tm0hm.js} +2 -2
  248. package/dist/datasets/builders.d.ts +15 -2
  249. package/dist/datasets/builders.d.ts.map +1 -1
  250. package/dist/datasets/column-index.d.ts +7 -0
  251. package/dist/datasets/column-index.d.ts.map +1 -0
  252. package/dist/datasets/execution.d.ts +3 -2
  253. package/dist/datasets/execution.d.ts.map +1 -1
  254. package/dist/datasets/write.js +8 -8
  255. package/dist/deploy/internal.js +4 -3
  256. package/dist/deploy/internal.js.map +4 -4
  257. package/dist/deploy/services.d.ts.map +1 -1
  258. package/dist/deploy/types.d.ts +1 -2
  259. package/dist/deploy/types.d.ts.map +1 -1
  260. package/dist/error-reporting/internal.js +4 -4
  261. package/dist/errors/internal.d.ts +1 -0
  262. package/dist/errors/internal.d.ts.map +1 -1
  263. package/dist/errors/internal.js +7 -4
  264. package/dist/errors/internal.js.map +1 -1
  265. package/dist/events/execution.d.ts +12 -2
  266. package/dist/events/execution.d.ts.map +1 -1
  267. package/dist/events/index.js +4 -4
  268. package/dist/execution/agent.js +56 -49
  269. package/dist/execution/agent.js.map +1 -1
  270. package/dist/execution/authorization.d.ts.map +1 -1
  271. package/dist/execution/authorized-object-reader.d.ts +52 -11
  272. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  273. package/dist/execution/object-reader-clearance.d.ts +41 -0
  274. package/dist/execution/object-reader-clearance.d.ts.map +1 -0
  275. package/dist/execution/object-reader-ontology.d.ts +12 -0
  276. package/dist/execution/object-reader-ontology.d.ts.map +1 -0
  277. package/dist/execution/object-reader-security.d.ts +45 -0
  278. package/dist/execution/object-reader-security.d.ts.map +1 -0
  279. package/dist/execution/primitive.js +54 -47
  280. package/dist/execution/primitive.js.map +1 -1
  281. package/dist/execution/request.js +49 -42
  282. package/dist/execution/request.js.map +2 -2
  283. package/dist/http/api-routes.d.ts.map +1 -1
  284. package/dist/http/index.js +1 -1
  285. package/dist/index.d.ts +23 -7
  286. package/dist/index.d.ts.map +1 -1
  287. package/dist/index.js +111 -109
  288. package/dist/index.js.map +1 -1
  289. package/dist/lake-storage/in-memory.d.ts +1 -0
  290. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  291. package/dist/lake-storage/index.d.ts +6 -3
  292. package/dist/lake-storage/index.d.ts.map +1 -1
  293. package/dist/lake-storage/index.js +21 -13
  294. package/dist/lake-storage/index.js.map +1 -1
  295. package/dist/lake-storage/lineage.d.ts +94 -0
  296. package/dist/lake-storage/lineage.d.ts.map +1 -0
  297. package/dist/lake-storage/sql-transforms.d.ts +45 -0
  298. package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
  299. package/dist/lake-storage/types.d.ts +55 -1
  300. package/dist/lake-storage/types.d.ts.map +1 -1
  301. package/dist/lake-storage/version-inputs.d.ts +14 -3
  302. package/dist/lake-storage/version-inputs.d.ts.map +1 -1
  303. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  304. package/dist/materializer/index.js +31 -30
  305. package/dist/materializer/index.js.map +1 -1
  306. package/dist/models/execution/index.js +26 -25
  307. package/dist/models/execution/index.js.map +1 -1
  308. package/dist/objects/clearance-redaction.d.ts +27 -0
  309. package/dist/objects/clearance-redaction.d.ts.map +1 -0
  310. package/dist/objects/index.js +54 -47
  311. package/dist/objects/index.js.map +1 -1
  312. package/dist/objects/link/authorization.d.ts +8 -5
  313. package/dist/objects/link/authorization.d.ts.map +1 -1
  314. package/dist/objects/link/upsert-batch.d.ts.map +1 -1
  315. package/dist/objects/object/delete.d.ts.map +1 -1
  316. package/dist/objects/object/upsert-batch.d.ts.map +1 -1
  317. package/dist/objects/object/upsert.d.ts.map +1 -1
  318. package/dist/objects/property-clearance.d.ts +47 -24
  319. package/dist/objects/property-clearance.d.ts.map +1 -1
  320. package/dist/objects/query/clearance-admission.d.ts +10 -0
  321. package/dist/objects/query/clearance-admission.d.ts.map +1 -0
  322. package/dist/objects/query/index.js +29 -28
  323. package/dist/objects/query/index.js.map +1 -1
  324. package/dist/objects/query/link-query-clearance.d.ts +21 -0
  325. package/dist/objects/query/link-query-clearance.d.ts.map +1 -0
  326. package/dist/objects/vectors/handle.d.ts.map +1 -1
  327. package/dist/objects/vectors/profile.d.ts +5 -0
  328. package/dist/objects/vectors/profile.d.ts.map +1 -1
  329. package/dist/ontology/builders.d.ts.map +1 -1
  330. package/dist/ontology/docs-markdown.d.ts +1 -1
  331. package/dist/ontology/docs-markdown.d.ts.map +1 -1
  332. package/dist/ontology/index.js +7 -7
  333. package/dist/ontology/internal.js +4 -4
  334. package/dist/ontology/internal.js.map +1 -1
  335. package/dist/pipelines/index.d.ts +2 -0
  336. package/dist/pipelines/index.d.ts.map +1 -1
  337. package/dist/pipelines/index.js +47 -35
  338. package/dist/pipelines/index.js.map +1 -1
  339. package/dist/pipelines/lineage.d.ts +17 -0
  340. package/dist/pipelines/lineage.d.ts.map +1 -0
  341. package/dist/projections/internal.d.ts +2 -2
  342. package/dist/projections/internal.js +30 -29
  343. package/dist/projections/internal.js.map +1 -1
  344. package/dist/runtime/create.d.ts +3 -0
  345. package/dist/runtime/create.d.ts.map +1 -1
  346. package/dist/runtime/host.d.ts +6 -0
  347. package/dist/runtime/host.d.ts.map +1 -1
  348. package/dist/runtime/internal.d.ts +2 -0
  349. package/dist/runtime/internal.d.ts.map +1 -1
  350. package/dist/runtime/internal.js +46 -42
  351. package/dist/runtime/internal.js.map +1 -1
  352. package/dist/runtime/ontology-mutations.d.ts +2 -0
  353. package/dist/runtime/ontology-mutations.d.ts.map +1 -1
  354. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  355. package/dist/runtime/sixb.d.ts +8 -0
  356. package/dist/runtime/sixb.d.ts.map +1 -1
  357. package/dist/sandboxes/auth.d.ts +16 -0
  358. package/dist/sandboxes/auth.d.ts.map +1 -1
  359. package/dist/sandboxes/config.d.ts.map +1 -1
  360. package/dist/sandboxes/configuration.d.ts +26 -0
  361. package/dist/sandboxes/configuration.d.ts.map +1 -1
  362. package/dist/sandboxes/index.d.ts +1 -1
  363. package/dist/sandboxes/index.d.ts.map +1 -1
  364. package/dist/sandboxes/index.js +14 -13
  365. package/dist/sandboxes/index.js.map +1 -1
  366. package/dist/sandboxes/sandbox.d.ts +28 -5
  367. package/dist/sandboxes/sandbox.d.ts.map +1 -1
  368. package/dist/security/applied-markings-contribution.d.ts +58 -0
  369. package/dist/security/applied-markings-contribution.d.ts.map +1 -0
  370. package/dist/security/applied-markings-host.d.ts +10 -0
  371. package/dist/security/applied-markings-host.d.ts.map +1 -0
  372. package/dist/security/applied-markings-snapshot.d.ts +67 -0
  373. package/dist/security/applied-markings-snapshot.d.ts.map +1 -0
  374. package/dist/security/applied-markings.d.ts +73 -0
  375. package/dist/security/applied-markings.d.ts.map +1 -0
  376. package/dist/security/builders.d.ts.map +1 -1
  377. package/dist/security/dataset-version-markings.d.ts +47 -0
  378. package/dist/security/dataset-version-markings.d.ts.map +1 -0
  379. package/dist/security/every.d.ts +1 -4
  380. package/dist/security/every.d.ts.map +1 -1
  381. package/dist/security/grants.d.ts +4 -5
  382. package/dist/security/grants.d.ts.map +1 -1
  383. package/dist/security/index.d.ts +2 -2
  384. package/dist/security/index.d.ts.map +1 -1
  385. package/dist/security/internal.d.ts +15 -0
  386. package/dist/security/internal.d.ts.map +1 -0
  387. package/dist/security/internal.js +135 -0
  388. package/dist/security/internal.js.map +10 -0
  389. package/dist/security/marking-propagation.d.ts +62 -0
  390. package/dist/security/marking-propagation.d.ts.map +1 -0
  391. package/dist/security/marking-sets.d.ts +14 -0
  392. package/dist/security/marking-sets.d.ts.map +1 -0
  393. package/dist/security/markings.d.ts +6 -3
  394. package/dist/security/markings.d.ts.map +1 -1
  395. package/dist/security/membership-policies.d.ts.map +1 -1
  396. package/dist/security/pipeline-markings.d.ts +20 -0
  397. package/dist/security/pipeline-markings.d.ts.map +1 -0
  398. package/dist/security/project.d.ts +4 -0
  399. package/dist/security/project.d.ts.map +1 -0
  400. package/dist/security/projection-markings.d.ts +71 -0
  401. package/dist/security/projection-markings.d.ts.map +1 -0
  402. package/dist/security/public.d.ts +10 -0
  403. package/dist/security/public.d.ts.map +1 -0
  404. package/dist/security/public.js +10 -0
  405. package/dist/security/public.js.map +9 -0
  406. package/dist/security/redactions.d.ts +4 -1
  407. package/dist/security/redactions.d.ts.map +1 -1
  408. package/dist/security/registry.d.ts +0 -1
  409. package/dist/security/registry.d.ts.map +1 -1
  410. package/dist/security/types.d.ts +34 -19
  411. package/dist/security/types.d.ts.map +1 -1
  412. package/dist/security/validation.d.ts +0 -6
  413. package/dist/security/validation.d.ts.map +1 -1
  414. package/dist/shares/internal.js +25 -24
  415. package/dist/shares/internal.js.map +2 -2
  416. package/dist/storage/action-runs/failure.js +3 -3
  417. package/dist/storage/action-runs/in-memory.d.ts +4 -0
  418. package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
  419. package/dist/storage/action-runs/types.d.ts +8 -0
  420. package/dist/storage/action-runs/types.d.ts.map +1 -1
  421. package/dist/storage/activity/in-memory.d.ts +55 -0
  422. package/dist/storage/activity/in-memory.d.ts.map +1 -0
  423. package/dist/storage/activity/index.d.ts +3 -0
  424. package/dist/storage/activity/index.d.ts.map +1 -0
  425. package/dist/storage/activity/policy.d.ts +96 -0
  426. package/dist/storage/activity/policy.d.ts.map +1 -0
  427. package/dist/storage/activity/types.d.ts +191 -0
  428. package/dist/storage/activity/types.d.ts.map +1 -0
  429. package/dist/storage/agents/in-memory.d.ts +4 -0
  430. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  431. package/dist/storage/agents/provider.d.ts.map +1 -1
  432. package/dist/storage/agents/provider.js +2 -5
  433. package/dist/storage/agents/provider.js.map +1 -1
  434. package/dist/storage/agents/types.d.ts +10 -9
  435. package/dist/storage/agents/types.d.ts.map +1 -1
  436. package/dist/storage/ai-limits/enforcement.js +3 -3
  437. package/dist/storage/artifacts/errors.d.ts +8 -0
  438. package/dist/storage/artifacts/errors.d.ts.map +1 -0
  439. package/dist/storage/artifacts/in-memory.d.ts +34 -0
  440. package/dist/storage/artifacts/in-memory.d.ts.map +1 -0
  441. package/dist/storage/artifacts/index.d.ts +5 -0
  442. package/dist/storage/artifacts/index.d.ts.map +1 -0
  443. package/dist/storage/artifacts/record.d.ts +17 -0
  444. package/dist/storage/artifacts/record.d.ts.map +1 -0
  445. package/dist/storage/artifacts/types.d.ts +184 -0
  446. package/dist/storage/artifacts/types.d.ts.map +1 -0
  447. package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
  448. package/dist/storage/auth/in-memory/magic-links.d.ts.map +1 -1
  449. package/dist/storage/auth/in-memory/oidc-attempts.d.ts.map +1 -1
  450. package/dist/storage/auth/in-memory/sessions.d.ts +2 -11
  451. package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -1
  452. package/dist/storage/auth/in-memory/shared.d.ts +1 -2
  453. package/dist/storage/auth/in-memory/shared.d.ts.map +1 -1
  454. package/dist/storage/auth/index.d.ts +1 -1
  455. package/dist/storage/auth/index.d.ts.map +1 -1
  456. package/dist/storage/auth/types.d.ts +20 -17
  457. package/dist/storage/auth/types.d.ts.map +1 -1
  458. package/dist/storage/connector-connections/provider.js +2 -2
  459. package/dist/storage/executions/in-memory.d.ts +2 -1
  460. package/dist/storage/executions/in-memory.d.ts.map +1 -1
  461. package/dist/storage/executions/index.d.ts +1 -1
  462. package/dist/storage/executions/index.d.ts.map +1 -1
  463. package/dist/storage/executions/provider.d.ts +2 -0
  464. package/dist/storage/executions/provider.d.ts.map +1 -1
  465. package/dist/storage/executions/provider.js +9 -223
  466. package/dist/storage/executions/provider.js.map +3 -4
  467. package/dist/storage/executions/types.d.ts +31 -0
  468. package/dist/storage/executions/types.d.ts.map +1 -1
  469. package/dist/storage/file-upload-sessions/provider.js +12 -12
  470. package/dist/storage/in-memory/index.d.ts +8 -0
  471. package/dist/storage/in-memory/index.d.ts.map +1 -1
  472. package/dist/storage/index.d.ts +6 -4
  473. package/dist/storage/index.d.ts.map +1 -1
  474. package/dist/storage/index.js +47 -46
  475. package/dist/storage/index.js.map +1 -1
  476. package/dist/storage/internal.d.ts +3 -0
  477. package/dist/storage/internal.d.ts.map +1 -1
  478. package/dist/storage/internal.js +66 -16
  479. package/dist/storage/internal.js.map +1 -1
  480. package/dist/storage/ontology/in-memory/sources.d.ts +2 -1
  481. package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
  482. package/dist/storage/ontology/index.d.ts +1 -1
  483. package/dist/storage/ontology/index.d.ts.map +1 -1
  484. package/dist/storage/ontology/sources.d.ts +15 -0
  485. package/dist/storage/ontology/sources.d.ts.map +1 -1
  486. package/dist/storage/projection-runs/provider.js +3 -3
  487. package/dist/storage/share-grants/in-memory.d.ts +2 -1
  488. package/dist/storage/share-grants/in-memory.d.ts.map +1 -1
  489. package/dist/storage/share-grants/index.d.ts +1 -1
  490. package/dist/storage/share-grants/index.d.ts.map +1 -1
  491. package/dist/storage/share-grants/types.d.ts +6 -0
  492. package/dist/storage/share-grants/types.d.ts.map +1 -1
  493. package/dist/storage/types.d.ts +4 -0
  494. package/dist/storage/types.d.ts.map +1 -1
  495. package/dist/storage/workflow-runs/in-memory.d.ts +4 -0
  496. package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
  497. package/dist/storage/workflow-runs/provider.js +14 -13
  498. package/dist/storage/workflow-runs/provider.js.map +1 -1
  499. package/dist/storage/workflow-runs/types.d.ts +5 -0
  500. package/dist/storage/workflow-runs/types.d.ts.map +1 -1
  501. package/dist/syncs/index.js +35 -34
  502. package/dist/syncs/index.js.map +1 -1
  503. package/dist/testing/action-run-storage-contract.d.ts.map +1 -1
  504. package/dist/testing/activity-storage-contract.d.ts +14 -0
  505. package/dist/testing/activity-storage-contract.d.ts.map +1 -0
  506. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  507. package/dist/testing/artifact-storage-contract.d.ts +13 -0
  508. package/dist/testing/artifact-storage-contract.d.ts.map +1 -0
  509. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  510. package/dist/testing/execution-storage-contract.d.ts.map +1 -1
  511. package/dist/testing/index.d.ts +2 -0
  512. package/dist/testing/index.d.ts.map +1 -1
  513. package/dist/testing/index.js +4493 -3225
  514. package/dist/testing/index.js.map +14 -12
  515. package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
  516. package/dist/testing/lake-storage-contract.d.ts +2 -0
  517. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  518. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  519. package/dist/testing/share-grant-storage-contract.d.ts.map +1 -1
  520. package/dist/webhooks/internal.js +28 -27
  521. package/dist/webhooks/internal.js.map +2 -2
  522. package/dist/workers/index.js +2 -2
  523. package/dist/workflows/builders.d.ts.map +1 -1
  524. package/dist/workflows/index.js +57 -51
  525. package/dist/workflows/index.js.map +1 -1
  526. package/dist/workflows/types.d.ts +9 -0
  527. package/dist/workflows/types.d.ts.map +1 -1
  528. package/dist/workflows/validation.d.ts +7 -0
  529. package/dist/workflows/validation.d.ts.map +1 -1
  530. package/package.json +32 -2
  531. package/src/actions/execution.ts +18 -13
  532. package/src/actions/request.ts +18 -3
  533. package/src/actions/run-authorization.ts +23 -0
  534. package/src/activity/README.md +155 -0
  535. package/src/activity/connection.ts +217 -0
  536. package/src/activity/device.ts +41 -0
  537. package/src/activity/execution.ts +210 -0
  538. package/src/activity/service.ts +274 -0
  539. package/src/activity/shares.ts +62 -0
  540. package/src/activity/timeline.ts +424 -0
  541. package/src/agents/index.ts +8 -3
  542. package/src/agents/request.ts +5 -0
  543. package/src/agents/skills.ts +6 -0
  544. package/src/agents/types.ts +8 -8
  545. package/src/agents/validation.ts +2 -0
  546. package/src/artifacts/address.ts +132 -0
  547. package/src/artifacts/csv.ts +108 -0
  548. package/src/artifacts/errors.ts +21 -0
  549. package/src/artifacts/execution.ts +153 -0
  550. package/src/artifacts/frames/assets.ts +88 -0
  551. package/src/artifacts/frames/grants.ts +124 -0
  552. package/src/artifacts/frames/index.ts +15 -0
  553. package/src/artifacts/frames/kit.ts +392 -0
  554. package/src/artifacts/frames/probe.ts +309 -0
  555. package/src/artifacts/frames/protocol.ts +174 -0
  556. package/src/artifacts/frames/runtime.ts +213 -0
  557. package/src/artifacts/html.ts +25 -0
  558. package/src/artifacts/ids.ts +18 -0
  559. package/src/artifacts/index.ts +61 -0
  560. package/src/artifacts/kinds.ts +8 -0
  561. package/src/artifacts/limits.ts +27 -0
  562. package/src/artifacts/outline.ts +62 -0
  563. package/src/artifacts/publish/files.ts +87 -0
  564. package/src/artifacts/publish/index.ts +12 -0
  565. package/src/artifacts/publish/publish.ts +250 -0
  566. package/src/artifacts/publish/references.ts +130 -0
  567. package/src/artifacts/publish/validate/document.ts +114 -0
  568. package/src/artifacts/publish/validate/file.ts +19 -0
  569. package/src/artifacts/publish/validate/sheet.ts +251 -0
  570. package/src/artifacts/publish/validate/slides.ts +134 -0
  571. package/src/artifacts/references.ts +11 -0
  572. package/src/artifacts/resolve.ts +97 -0
  573. package/src/artifacts/theme.ts +116 -0
  574. package/src/artifacts/warnings.ts +10 -0
  575. package/src/artifacts/workbook.ts +315 -0
  576. package/src/auth/cookies.ts +3 -20
  577. package/src/auth/index.ts +0 -6
  578. package/src/auth/runtime.ts +59 -76
  579. package/src/auth/session-cache.ts +2 -9
  580. package/src/auth/types.ts +4 -8
  581. package/src/auth/validation.ts +0 -2
  582. package/src/authorization/decision.ts +13 -23
  583. package/src/authorization/grant-kinds.ts +33 -28
  584. package/src/authorization/index.ts +0 -1
  585. package/src/authorization/resolve.ts +10 -6
  586. package/src/blob-storage/internal.ts +1 -1
  587. package/src/blob-storage/media-type.ts +69 -0
  588. package/src/datasets/builders.ts +66 -2
  589. package/src/datasets/column-index.ts +19 -0
  590. package/src/datasets/execution.ts +23 -9
  591. package/src/deploy/services.ts +0 -1
  592. package/src/deploy/types.ts +1 -2
  593. package/src/deploy/validation.ts +3 -1
  594. package/src/errors/internal.ts +1 -0
  595. package/src/events/execution.ts +134 -21
  596. package/src/execution/authorization.ts +11 -5
  597. package/src/execution/authorized-object-reader.ts +270 -256
  598. package/src/execution/object-reader-clearance.ts +91 -0
  599. package/src/execution/object-reader-ontology.ts +63 -0
  600. package/src/execution/object-reader-security.ts +146 -0
  601. package/src/http/api-routes.ts +125 -0
  602. package/src/index.ts +72 -17
  603. package/src/lake-storage/in-memory.ts +26 -3
  604. package/src/lake-storage/index.ts +13 -1
  605. package/src/lake-storage/lineage.ts +385 -0
  606. package/src/lake-storage/sql-transforms.ts +45 -0
  607. package/src/lake-storage/types.ts +59 -1
  608. package/src/lake-storage/version-inputs.ts +35 -6
  609. package/src/maintenance/ontology-maintenance.ts +15 -0
  610. package/src/models/execution/embedding.ts +6 -6
  611. package/src/objects/clearance-redaction.ts +138 -0
  612. package/src/objects/link/authorization.ts +27 -7
  613. package/src/objects/link/remove.ts +2 -2
  614. package/src/objects/link/upsert-batch.ts +7 -5
  615. package/src/objects/link/upsert.ts +2 -2
  616. package/src/objects/object/delete.ts +2 -0
  617. package/src/objects/object/upsert-batch.ts +2 -4
  618. package/src/objects/object/upsert.ts +2 -3
  619. package/src/objects/property-clearance.ts +171 -152
  620. package/src/objects/query/clearance-admission.ts +112 -0
  621. package/src/objects/query/link-query-clearance.ts +73 -0
  622. package/src/objects/vectors/README.md +4 -0
  623. package/src/objects/vectors/handle.ts +11 -2
  624. package/src/objects/vectors/indexing-generate.ts +2 -2
  625. package/src/objects/vectors/profile.ts +5 -0
  626. package/src/ontology/builders.ts +12 -1
  627. package/src/ontology/docs-markdown.ts +1 -1
  628. package/src/pipelines/index.ts +2 -0
  629. package/src/pipelines/lineage.ts +45 -0
  630. package/src/projections/internal.ts +2 -2
  631. package/src/runtime/create.ts +4 -0
  632. package/src/runtime/host.ts +55 -0
  633. package/src/runtime/internal.ts +2 -0
  634. package/src/runtime/ontology-mutations.ts +19 -4
  635. package/src/runtime/resolve-definitions.ts +66 -3
  636. package/src/runtime/sixb.ts +18 -1
  637. package/src/sandboxes/README.md +29 -7
  638. package/src/sandboxes/auth.ts +16 -0
  639. package/src/sandboxes/config.ts +2 -7
  640. package/src/sandboxes/configuration.ts +61 -7
  641. package/src/sandboxes/index.ts +1 -0
  642. package/src/sandboxes/sandbox.ts +27 -5
  643. package/src/security/applied-markings-contribution.ts +277 -0
  644. package/src/security/applied-markings-host.ts +41 -0
  645. package/src/security/applied-markings-snapshot.ts +235 -0
  646. package/src/security/applied-markings.ts +405 -0
  647. package/src/security/builders.ts +7 -2
  648. package/src/security/dataset-version-markings.ts +163 -0
  649. package/src/security/every.ts +0 -4
  650. package/src/security/grants.ts +42 -27
  651. package/src/security/index.ts +3 -3
  652. package/src/security/internal.ts +18 -0
  653. package/src/security/marking-propagation.ts +255 -0
  654. package/src/security/marking-sets.ts +42 -0
  655. package/src/security/markings.ts +29 -178
  656. package/src/security/membership-policies.ts +3 -1
  657. package/src/security/pipeline-markings.ts +175 -0
  658. package/src/security/project.ts +8 -0
  659. package/src/security/projection-markings.ts +421 -0
  660. package/src/security/public.ts +10 -0
  661. package/src/security/redactions.ts +7 -2
  662. package/src/security/registry.ts +0 -8
  663. package/src/security/types.ts +38 -26
  664. package/src/security/validation.ts +28 -19
  665. package/src/storage/action-runs/in-memory.ts +18 -0
  666. package/src/storage/action-runs/types.ts +8 -0
  667. package/src/storage/activity/in-memory.ts +374 -0
  668. package/src/storage/activity/index.ts +27 -0
  669. package/src/storage/activity/policy.ts +430 -0
  670. package/src/storage/activity/types.ts +211 -0
  671. package/src/storage/agents/in-memory.ts +10 -0
  672. package/src/storage/agents/provider.ts +2 -13
  673. package/src/storage/agents/types.ts +10 -17
  674. package/src/storage/artifacts/errors.ts +16 -0
  675. package/src/storage/artifacts/in-memory.ts +240 -0
  676. package/src/storage/artifacts/index.ts +30 -0
  677. package/src/storage/artifacts/record.ts +200 -0
  678. package/src/storage/artifacts/types.ts +209 -0
  679. package/src/storage/auth/in-memory/auth-storage.ts +0 -18
  680. package/src/storage/auth/in-memory/magic-links.ts +0 -3
  681. package/src/storage/auth/in-memory/oidc-attempts.ts +0 -3
  682. package/src/storage/auth/in-memory/sessions.ts +22 -25
  683. package/src/storage/auth/in-memory/shared.ts +1 -10
  684. package/src/storage/auth/index.ts +2 -0
  685. package/src/storage/auth/types.ts +20 -18
  686. package/src/storage/executions/in-memory.ts +61 -1
  687. package/src/storage/executions/index.ts +3 -0
  688. package/src/storage/executions/provider.ts +12 -0
  689. package/src/storage/executions/types.ts +30 -0
  690. package/src/storage/in-memory/index.ts +16 -0
  691. package/src/storage/index.ts +63 -0
  692. package/src/storage/internal.ts +30 -0
  693. package/src/storage/ontology/in-memory/sources.ts +23 -0
  694. package/src/storage/ontology/index.ts +2 -0
  695. package/src/storage/ontology/sources.ts +17 -0
  696. package/src/storage/share-grants/in-memory.ts +8 -0
  697. package/src/storage/share-grants/index.ts +1 -0
  698. package/src/storage/share-grants/types.ts +8 -0
  699. package/src/storage/types.ts +4 -0
  700. package/src/storage/workflow-runs/in-memory.ts +16 -0
  701. package/src/storage/workflow-runs/types.ts +5 -0
  702. package/src/testing/action-run-storage-contract.ts +25 -0
  703. package/src/testing/activity-storage-contract.ts +840 -0
  704. package/src/testing/agent-storage-contract.ts +22 -21
  705. package/src/testing/artifact-storage-contract.ts +517 -0
  706. package/src/testing/auth-storage-contract.ts +61 -107
  707. package/src/testing/execution-storage-contract.ts +147 -3
  708. package/src/testing/index.ts +9 -0
  709. package/src/testing/lake-merge-storage-contract.ts +38 -0
  710. package/src/testing/lake-storage-contract.ts +247 -2
  711. package/src/testing/materializer-storage-contract.ts +1 -0
  712. package/src/testing/ontology-storage-contract.ts +57 -2
  713. package/src/testing/share-grant-storage-contract.ts +15 -0
  714. package/src/workflows/builders.ts +14 -0
  715. package/src/workflows/types.ts +9 -0
  716. package/src/workflows/validation.ts +72 -0
  717. package/dist/auth/audience.d.ts +0 -8
  718. package/dist/auth/audience.d.ts.map +0 -1
  719. package/dist/authorization/application-access.d.ts +0 -18
  720. package/dist/authorization/application-access.d.ts.map +0 -1
  721. package/dist/chunk-1f7wpmyp.js.map +0 -14
  722. package/dist/chunk-1k89ecfr.js +0 -85
  723. package/dist/chunk-1k89ecfr.js.map +0 -10
  724. package/dist/chunk-2jntasmh.js.map +0 -13
  725. package/dist/chunk-3gnrh4ve.js.map +0 -40
  726. package/dist/chunk-85yvv5n0.js.map +0 -12
  727. package/dist/chunk-9gyp8hg1.js +0 -363
  728. package/dist/chunk-9gyp8hg1.js.map +0 -14
  729. package/dist/chunk-dnmadg9k.js.map +0 -15
  730. package/dist/chunk-enpsx8k5.js.map +0 -10
  731. package/dist/chunk-hkc3jct7.js.map +0 -10
  732. package/dist/chunk-kyzq4wy9.js.map +0 -18
  733. package/dist/chunk-s16apyk9.js +0 -256
  734. package/dist/chunk-s16apyk9.js.map +0 -16
  735. package/dist/chunk-s54c868q.js.map +0 -12
  736. package/dist/chunk-tw03bsmb.js.map +0 -11
  737. package/dist/chunk-wwdfe68s.js +0 -128
  738. package/dist/chunk-wwdfe68s.js.map +0 -11
  739. package/dist/chunk-xt1zt7gv.js.map +0 -13
  740. package/dist/chunk-y7rqfrgg.js.map +0 -24
  741. package/dist/security/applications.d.ts +0 -15
  742. package/dist/security/applications.d.ts.map +0 -1
  743. package/src/auth/audience.ts +0 -28
  744. package/src/authorization/application-access.ts +0 -34
  745. package/src/security/applications.ts +0 -11
  746. /package/dist/{chunk-t6vq7bff.js.map → chunk-0bphap9y.js.map} +0 -0
  747. /package/dist/{chunk-7mbzgd9m.js.map → chunk-1cc1xaf3.js.map} +0 -0
  748. /package/dist/{chunk-6gmfggss.js.map → chunk-431pyp2c.js.map} +0 -0
  749. /package/dist/{chunk-c85m1hyj.js.map → chunk-447a5c0p.js.map} +0 -0
  750. /package/dist/{chunk-80mc0971.js.map → chunk-561r0yc9.js.map} +0 -0
  751. /package/dist/{chunk-5e43w60z.js.map → chunk-5948n82c.js.map} +0 -0
  752. /package/dist/{chunk-yzwja0mj.js.map → chunk-5hx48dnn.js.map} +0 -0
  753. /package/dist/{chunk-q1vkr2ys.js.map → chunk-c1rxbz5y.js.map} +0 -0
  754. /package/dist/{chunk-gc4ntf7d.js.map → chunk-cwdzcv37.js.map} +0 -0
  755. /package/dist/{chunk-fa02jy15.js.map → chunk-cy4mbddw.js.map} +0 -0
  756. /package/dist/{chunk-7kg3k1m9.js.map → chunk-d09e3rax.js.map} +0 -0
  757. /package/dist/{chunk-rhg02hxq.js.map → chunk-d7dnxdep.js.map} +0 -0
  758. /package/dist/{chunk-wz0xs816.js.map → chunk-ky3j490c.js.map} +0 -0
  759. /package/dist/{chunk-vyf9kfqf.js.map → chunk-q7gn29y3.js.map} +0 -0
  760. /package/dist/{chunk-v9xd5wzd.js.map → chunk-s7jg7pmn.js.map} +0 -0
  761. /package/dist/{chunk-nre82s12.js.map → chunk-vf57cr4t.js.map} +0 -0
  762. /package/dist/{chunk-9ybhtmg4.js.map → chunk-vvxtn22d.js.map} +0 -0
  763. /package/dist/{chunk-7t429e3f.js.map → chunk-xvsc5m8n.js.map} +0 -0
  764. /package/dist/{chunk-kg5j6fct.js.map → chunk-y5tah2kf.js.map} +0 -0
  765. /package/dist/{chunk-52bk93x8.js.map → chunk-z58tm0hm.js.map} +0 -0
@@ -1,209 +1,228 @@
1
1
  import { AuthorizationError } from "../authorization/errors"
2
- import type { StoredDomainEvent } from "../events/types"
3
2
  import type { OntologyDefinitionCatalog } from "../ontology/registry"
3
+ import {
4
+ type AppliedMarkingsSnapshot,
5
+ type AppliedSeal,
6
+ appliedLinkKey,
7
+ NO_APPLIED_MARKINGS,
8
+ } from "../security/applied-markings-snapshot"
4
9
  import { missingClearanceRedactions } from "../security/redactions"
5
- import type { ExpandedLinkValue, ExpandedObjectRow, ObjectRow } from "../storage"
6
- import type {
7
- ObjectQueryAdmissionState,
8
- ObjectQueryPropertyUse,
9
- ObjectQuerySemanticAdmission,
10
- } from "./query/validate"
10
+ import type { Redactions } from "../security/types"
11
11
 
12
12
  /**
13
13
  * The marked properties one reader cannot read, resolved once from its clearances.
14
14
  *
15
15
  * A property is readable when the reader clears every one of its markings. Unreadable properties
16
16
  * are omitted from rows and cannot be used to select, order, or aggregate objects.
17
+ *
18
+ * Markings a projection's applied dataset version still carries extend this: its properties keep
19
+ * them, and an object type or link whose key column carries markings the reader lacks is
20
+ * unreadable, like a type it has no view grant for.
17
21
  */
18
22
  export interface PropertyClearance {
19
- /** Marked properties of this object type the reader cannot read. */
20
- hiddenPropertyIds(objectTypeId: string): ReadonlySet<string>
23
+ /** What the reader cannot read on this object type; `undefined` when it reads every property. */
24
+ hiddenProperties(objectTypeId: string): HiddenProperties | undefined
21
25
  /** First marking on the property that the reader is not cleared for. */
22
26
  missingMarking(objectTypeId: string, propertyId: string): string | undefined
27
+ /** Why the reader cannot read this object type at all; `undefined` when it can. */
28
+ unreadableType(objectTypeId: string): Unreadable | undefined
29
+ /** Why the reader cannot read this link, keyed by its source type; `undefined` when it can. */
30
+ unreadableLink(objectTypeId: string, linkId: string): Unreadable | undefined
31
+ /** Every object type and link the reader cannot read, for link queries that name none. */
32
+ unreadable(): UnreadableTargets
33
+ }
34
+
35
+ /** A marking the reader lacks on what makes an object type or link unreadable, and why. */
36
+ export interface Unreadable {
37
+ readonly marking: string
38
+ readonly message: string
39
+ }
40
+
41
+ export interface UnreadableTargets {
42
+ readonly types: ReadonlyMap<string, Unreadable>
43
+ readonly links: readonly (Unreadable & {
44
+ readonly objectTypeId: string
45
+ readonly linkId: string
46
+ readonly targetObjectTypeId: string
47
+ })[]
48
+ }
49
+
50
+ /** The error a read of an unreadable object type or link fails with: a 403. */
51
+ export function unreadableError(unreadable: Unreadable): AuthorizationError {
52
+ return new AuthorizationError(`clearance:marking:${unreadable.marking}`, unreadable.message)
23
53
  }
24
54
 
25
- const NO_PROPERTIES: ReadonlySet<string> = new Set()
55
+ /**
56
+ * The properties of one object type a clearance set hides. It depends only on the type and the
57
+ * clearances, so it is computed once and shared by every row and event redacted with it.
58
+ */
59
+ export interface HiddenProperties {
60
+ readonly ids: ReadonlySet<string>
61
+ /**
62
+ * The `redactions` record of a redacted row or event. It lists every hidden property, whether or
63
+ * not a row holds a value: listing only present values would reveal which ones are empty.
64
+ *
65
+ * Deeply frozen, because every redacted row and event shares it.
66
+ */
67
+ readonly redactions: Redactions
68
+ }
26
69
 
27
70
  // Readers are built per execution, but few distinct clearance sets exist per ontology.
28
71
  const clearancesByOntology = new WeakMap<
29
72
  OntologyDefinitionCatalog,
30
73
  Map<string, PropertyClearance | undefined>
31
74
  >()
75
+ // Applied markings change rarely, and a snapshot is replaced only when its content changes.
76
+ const appliedClearancesByOntology = new WeakMap<
77
+ OntologyDefinitionCatalog,
78
+ WeakMap<AppliedMarkingsSnapshot, Map<string, PropertyClearance | undefined>>
79
+ >()
80
+
81
+ const NO_UNREADABLE_TARGETS: UnreadableTargets = Object.freeze({
82
+ types: new Map(),
83
+ links: Object.freeze([]),
84
+ })
32
85
 
33
86
  /**
34
87
  * Resolve what a reader with these clearances cannot read. Returns `undefined` when it can read
35
88
  * every property, so callers skip redaction entirely.
89
+ *
90
+ * A reader cleared for every marking the applied versions add receives the clearance of the code
91
+ * alone, the same object whatever the snapshot.
36
92
  */
37
93
  export function resolvePropertyClearance(
38
94
  ontology: OntologyDefinitionCatalog,
39
- clearances: ReadonlySet<string>
95
+ clearances: ReadonlySet<string>,
96
+ applied: AppliedMarkingsSnapshot = NO_APPLIED_MARKINGS
40
97
  ): PropertyClearance | undefined {
41
- let resolved = clearancesByOntology.get(ontology)
98
+ const key = JSON.stringify([...clearances].sort())
99
+
100
+ if (applied === NO_APPLIED_MARKINGS || clearsEvery(clearances, applied.markings)) {
101
+ let resolved = clearancesByOntology.get(ontology)
102
+ if (!resolved) {
103
+ resolved = new Map()
104
+ clearancesByOntology.set(ontology, resolved)
105
+ }
106
+
107
+ if (!resolved.has(key)) resolved.set(key, createPropertyClearance(ontology, clearances))
108
+ return resolved.get(key)
109
+ }
110
+
111
+ let bySnapshot = appliedClearancesByOntology.get(ontology)
112
+ if (!bySnapshot) {
113
+ bySnapshot = new WeakMap()
114
+ appliedClearancesByOntology.set(ontology, bySnapshot)
115
+ }
116
+
117
+ let resolved = bySnapshot.get(applied)
42
118
  if (!resolved) {
43
119
  resolved = new Map()
44
- clearancesByOntology.set(ontology, resolved)
120
+ bySnapshot.set(applied, resolved)
121
+ }
122
+
123
+ if (!resolved.has(key)) {
124
+ resolved.set(key, createPropertyClearance(ontology, clearances, applied))
45
125
  }
46
- const key = JSON.stringify([...clearances].sort())
47
- if (!resolved.has(key)) resolved.set(key, createPropertyClearance(ontology, clearances))
48
126
  return resolved.get(key)
49
127
  }
50
128
 
129
+ function clearsEvery(clearances: ReadonlySet<string>, markings: ReadonlySet<string>): boolean {
130
+ for (const markingId of markings) if (!clearances.has(markingId)) return false
131
+ return true
132
+ }
133
+
51
134
  function createPropertyClearance(
52
135
  ontology: OntologyDefinitionCatalog,
53
- clearances: ReadonlySet<string>
136
+ clearances: ReadonlySet<string>,
137
+ applied: AppliedMarkingsSnapshot = NO_APPLIED_MARKINGS
54
138
  ): PropertyClearance | undefined {
55
139
  const missingByType = new Map<string, ReadonlyMap<string, string>>()
140
+ const hiddenByType = new Map<string, HiddenProperties>()
56
141
  for (const objectType of ontology.listObjectTypes()) {
142
+ const surplus = applied.properties.get(objectType.id)
57
143
  const missing = new Map<string, string>()
58
144
  for (const property of objectType.properties) {
59
- const marking = property.markings?.find((markingId) => !clearances.has(markingId))
145
+ const marking =
146
+ property.markings?.find((markingId) => !clearances.has(markingId)) ??
147
+ firstMissing(surplus?.get(property.id), clearances)
60
148
  if (marking !== undefined) missing.set(property.id, marking)
61
149
  }
62
- if (missing.size > 0) missingByType.set(objectType.id, missing)
63
- }
64
- if (missingByType.size === 0) return undefined
65
150
 
66
- const hiddenByType = new Map(
67
- [...missingByType].map(([objectTypeId, missing]) => [objectTypeId, new Set(missing.keys())])
68
- )
69
- return Object.freeze({
70
- hiddenPropertyIds: (objectTypeId: string) => hiddenByType.get(objectTypeId) ?? NO_PROPERTIES,
71
- missingMarking: (objectTypeId: string, propertyId: string) =>
72
- missingByType.get(objectTypeId)?.get(propertyId),
73
- })
74
- }
151
+ if (missing.size === 0) continue
75
152
 
76
- /**
77
- * Omit unreadable properties from a row and the objects expanded under it.
78
- *
79
- * Every hidden property of the type is listed in `redactions`, whether or not the row holds a
80
- * value: listing only present values would reveal which hidden properties are empty.
81
- */
82
- export function redactObjectRow<TRow extends ObjectRow>(
83
- row: TRow,
84
- clearance: PropertyClearance
85
- ): TRow {
86
- const hidden = clearance.hiddenPropertyIds(row.objectTypeId)
87
- const links = row.links
88
- if (hidden.size === 0 && links === undefined) return row
89
-
90
- const redacted: TRow = { ...row }
91
- if (hidden.size > 0) {
92
- redacted.properties = withoutKeys(row.properties, hidden)
93
- redacted.redactions = missingClearanceRedactions(hidden)
94
- }
95
- if (links !== undefined) {
96
- redacted.links = Object.fromEntries(
97
- Object.entries(links).map(([linkId, value]) => [linkId, redactLinkValue(value, clearance)])
153
+ missingByType.set(objectType.id, missing)
154
+ hiddenByType.set(
155
+ objectType.id,
156
+ Object.freeze({
157
+ ids: new Set(missing.keys()),
158
+ redactions: missingClearanceRedactions(missing.keys()),
159
+ })
98
160
  )
99
161
  }
100
- return redacted
101
- }
102
162
 
103
- function redactLinkValue(
104
- value: ExpandedLinkValue,
105
- clearance: PropertyClearance
106
- ): ExpandedLinkValue {
107
- if (value === null) return null
108
- if (Array.isArray(value)) return value.map((row) => redactObjectRow(row, clearance))
109
- // Array.isArray does not narrow a readonly[] away, so assert the single-object case.
110
- return redactObjectRow(value as ExpandedObjectRow, clearance)
111
- }
112
-
113
- /**
114
- * Omit unreadable properties from an object event, under the same contract as rows. Other events
115
- * carry no markable value: link properties and telemetry properties cannot be marked.
116
- */
117
- export function redactDomainEvent(
118
- event: StoredDomainEvent,
119
- clearance: PropertyClearance
120
- ): StoredDomainEvent {
121
- if (event.topic !== "objects") return event
122
- const hidden = clearance.hiddenPropertyIds(event.payload.objectTypeId)
123
- if (hidden.size === 0) return event
124
-
125
- const payload = {
126
- ...event.payload,
127
- propertyChanges: withoutKeys(event.payload.propertyChanges, hidden),
128
- redactions: missingClearanceRedactions(hidden),
163
+ const types = new Map<string, Unreadable>()
164
+ for (const [objectTypeId, seals] of applied.types) {
165
+ const unreadable = unreadableBy(seals, clearances, `'${objectTypeId}'`)
166
+ if (unreadable) types.set(objectTypeId, unreadable)
129
167
  }
130
- if (event.type === "object.deleted") return { ...event, payload }
131
- return {
132
- ...event,
133
- payload: { ...payload, properties: withoutKeys(event.payload.properties, hidden) },
134
- }
135
- }
136
168
 
137
- function withoutKeys<TValue>(
138
- record: Readonly<Record<string, TValue>>,
139
- hidden: ReadonlySet<string>
140
- ): Record<string, TValue> {
141
- const kept: Record<string, TValue> = {}
142
- for (const [key, value] of Object.entries(record)) {
143
- if (!hidden.has(key)) kept[key] = value
169
+ const links: UnreadableTargets["links"][number][] = []
170
+ const linksByKey = new Map<string, Unreadable>()
171
+ for (const [key, link] of applied.links) {
172
+ const name = `link '${link.objectTypeId}.${link.linkId}'`
173
+ const unreadable = unreadableBy(link.seals, clearances, name)
174
+ if (!unreadable) continue
175
+
176
+ linksByKey.set(key, unreadable)
177
+ links.push(
178
+ Object.freeze({
179
+ ...unreadable,
180
+ objectTypeId: link.objectTypeId,
181
+ linkId: link.linkId,
182
+ targetObjectTypeId: link.targetObjectTypeId,
183
+ })
184
+ )
144
185
  }
145
- return kept
186
+
187
+ if (hiddenByType.size === 0 && types.size === 0 && links.length === 0) return undefined
188
+
189
+ const unreadable: UnreadableTargets =
190
+ types.size === 0 && links.length === 0
191
+ ? NO_UNREADABLE_TARGETS
192
+ : Object.freeze({ types, links: Object.freeze(links) })
193
+ return Object.freeze({
194
+ hiddenProperties: (objectTypeId: string) => hiddenByType.get(objectTypeId),
195
+ missingMarking: (objectTypeId: string, propertyId: string) =>
196
+ missingByType.get(objectTypeId)?.get(propertyId),
197
+ unreadableType: (objectTypeId: string) => types.get(objectTypeId),
198
+ unreadableLink: (objectTypeId: string, linkId: string) =>
199
+ linksByKey.get(appliedLinkKey(objectTypeId, linkId)),
200
+ unreadable: () => unreadable,
201
+ })
146
202
  }
147
203
 
148
- /**
149
- * Reject every query use of a property the reader cannot read, except projection.
150
- *
151
- * Filtering, ordering, searching, or faceting by a hidden value would reveal it through which
152
- * objects match and in what order. Projection only shapes the output, which is redacted anyway.
153
- */
154
- export function createClearanceQueryAdmission(
155
- clearance: PropertyClearance
156
- ): ObjectQuerySemanticAdmission {
157
- // Each state stands for the object types a query has reached so far. A property without an
158
- // explicit type is checked against all of them.
159
- const reachedTypes = new WeakMap<ObjectQueryAdmissionState, readonly string[]>()
160
- const state = (objectTypeIds: readonly string[]): ObjectQueryAdmissionState => {
161
- const created = Object.freeze({})
162
- reachedTypes.set(created, Object.freeze([...objectTypeIds]))
163
- return created
164
- }
165
- const reached = (input: ObjectQueryAdmissionState): readonly string[] => {
166
- const objectTypeIds = reachedTypes.get(input)
167
- if (!objectTypeIds) {
168
- throw new Error("[Sixb] Clearance query admission received a state it did not create.")
169
- }
170
- return objectTypeIds
171
- }
172
- const empty = state([])
173
-
174
- const admission: ObjectQuerySemanticAdmission = {
175
- empty: () => empty,
176
- source: (input) => ({ state: state(input.result.objectTypeIds) }),
177
- edge: (input) => ({ state: state(input.result.objectTypeIds) }),
178
- // A difference only returns objects of its first input.
179
- set: (input) =>
180
- input.op === "subtract"
181
- ? (input.states[0] ?? empty)
182
- : state([...new Set(input.states.flatMap(reached))]),
183
- property: (input) => {
184
- if (input.use === "project") return undefined
185
- const objectTypeIds =
186
- input.objectTypeId === undefined ? reached(input.state) : [input.objectTypeId]
187
- for (const objectTypeId of objectTypeIds) {
188
- const marking = clearance.missingMarking(objectTypeId, input.propertyId)
189
- if (marking === undefined) continue
190
- return new AuthorizationError(
191
- `clearance:marking:${marking}`,
192
- `[Sixb] Cannot ${PROPERTY_USE_VERBS[input.use]} '${objectTypeId}.${input.propertyId}' at '${input.path}': it requires clearance for marking '${marking}'.`
193
- )
194
- }
195
- return undefined
196
- },
197
- }
198
- return Object.freeze(admission)
204
+ function firstMissing(
205
+ markings: ReadonlySet<string> | undefined,
206
+ clearances: ReadonlySet<string>
207
+ ): string | undefined {
208
+ if (!markings) return undefined
209
+ for (const markingId of [...markings].sort()) if (!clearances.has(markingId)) return markingId
210
+ return undefined
199
211
  }
200
212
 
201
- const PROPERTY_USE_VERBS: Readonly<Record<ObjectQueryPropertyUse, string>> = {
202
- filter: "filter by",
203
- text: "search",
204
- vector: "run a vector search over",
205
- sort: "sort by",
206
- project: "project",
207
- "expand.orderBy": "order expanded objects by",
208
- facet: "facet by",
213
+ /** The first seal the reader lacks a marking for, as the message a denied read returns. */
214
+ function unreadableBy(
215
+ seals: readonly AppliedSeal[],
216
+ clearances: ReadonlySet<string>,
217
+ name: string
218
+ ): Unreadable | undefined {
219
+ for (const seal of seals) {
220
+ const marking = firstMissing(seal.markings, clearances)
221
+ if (marking === undefined) continue
222
+ return Object.freeze({
223
+ marking,
224
+ message: `[Sixb] Cannot read ${name} until projection '${seal.projectionId}' applies a compliant version: ${seal.reason} carries marking '${marking}'.`,
225
+ })
226
+ }
227
+ return undefined
209
228
  }
@@ -0,0 +1,112 @@
1
+ import { AuthorizationError } from "../../authorization/errors"
2
+ import { type PropertyClearance, type Unreadable, unreadableError } from "../property-clearance"
3
+ import type {
4
+ ObjectQueryAdmissionState,
5
+ ObjectQueryPropertyUse,
6
+ ObjectQuerySemanticAdmission,
7
+ } from "./validate"
8
+
9
+ /**
10
+ * Reject every query use of a property the reader cannot read, except projection.
11
+ *
12
+ * Filtering, ordering, searching, or faceting by a hidden value would reveal it through which
13
+ * objects match and in what order. Projection only shapes the output, which is redacted anyway.
14
+ */
15
+ export function createClearanceQueryAdmission(
16
+ clearance: PropertyClearance
17
+ ): ObjectQuerySemanticAdmission {
18
+ // Each state stands for the object types a query has reached so far. A property without an
19
+ // explicit type is checked against all of them.
20
+ const reachedTypes = new WeakMap<ObjectQueryAdmissionState, readonly string[]>()
21
+ const state = (objectTypeIds: readonly string[]): ObjectQueryAdmissionState => {
22
+ const created = Object.freeze({})
23
+ reachedTypes.set(created, Object.freeze([...objectTypeIds]))
24
+ return created
25
+ }
26
+
27
+ const reached = (input: ObjectQueryAdmissionState): readonly string[] => {
28
+ const objectTypeIds = reachedTypes.get(input)
29
+ if (!objectTypeIds) {
30
+ throw new Error("[Sixb] Clearance query admission received a state it did not create.")
31
+ }
32
+ return objectTypeIds
33
+ }
34
+
35
+ const empty = state([])
36
+
37
+ const admission: ObjectQuerySemanticAdmission = {
38
+ empty: () => empty,
39
+ // An object type or link the reader cannot read is denied like one it has no view grant for.
40
+ source: (input) => ({
41
+ state: state(input.result.objectTypeIds),
42
+ ...denied(unreadableTypeAmong(clearance, input.result.objectTypeIds)),
43
+ }),
44
+ edge: (input) => {
45
+ // A link is keyed by its source type: the reached types going out, the result coming in.
46
+ const sourceTypeIds =
47
+ input.direction === "outgoing"
48
+ ? reached(input.state)
49
+ : [
50
+ ...input.result.objectTypeIds,
51
+ ...(input.sourceObjectTypeId ? [input.sourceObjectTypeId] : []),
52
+ ]
53
+
54
+ const link = sourceTypeIds
55
+ .map((objectTypeId) => clearance.unreadableLink(objectTypeId, input.linkId))
56
+ .find((unreadable) => unreadable !== undefined)
57
+
58
+ return {
59
+ state: state(input.result.objectTypeIds),
60
+ ...denied(link ?? unreadableTypeAmong(clearance, input.result.objectTypeIds)),
61
+ }
62
+ },
63
+ // A difference only returns objects of its first input.
64
+ set: (input) =>
65
+ input.op === "subtract"
66
+ ? (input.states[0] ?? empty)
67
+ : state([...new Set(input.states.flatMap(reached))]),
68
+ property: (input) => {
69
+ if (input.use === "project") return undefined
70
+
71
+ const objectTypeIds =
72
+ input.objectTypeId === undefined ? reached(input.state) : [input.objectTypeId]
73
+ for (const objectTypeId of objectTypeIds) {
74
+ const marking = clearance.missingMarking(objectTypeId, input.propertyId)
75
+ if (marking === undefined) continue
76
+ return new AuthorizationError(
77
+ `clearance:marking:${marking}`,
78
+ `[Sixb] Cannot ${PROPERTY_USE_VERBS[input.use]} '${objectTypeId}.${input.propertyId}' at '${input.path}': it requires clearance for marking '${marking}'.`
79
+ )
80
+ }
81
+
82
+ return undefined
83
+ },
84
+ }
85
+
86
+ return Object.freeze(admission)
87
+ }
88
+
89
+ function unreadableTypeAmong(
90
+ clearance: PropertyClearance,
91
+ objectTypeIds: readonly string[]
92
+ ): Unreadable | undefined {
93
+ for (const objectTypeId of objectTypeIds) {
94
+ const unreadable = clearance.unreadableType(objectTypeId)
95
+ if (unreadable) return unreadable
96
+ }
97
+ return undefined
98
+ }
99
+
100
+ function denied(unreadable: Unreadable | undefined): { readonly denial?: Error } {
101
+ return unreadable ? { denial: unreadableError(unreadable) } : {}
102
+ }
103
+
104
+ const PROPERTY_USE_VERBS: Readonly<Record<ObjectQueryPropertyUse, string>> = {
105
+ filter: "filter by",
106
+ text: "search",
107
+ vector: "run a vector search over",
108
+ sort: "sort by",
109
+ project: "project",
110
+ "expand.orderBy": "order expanded objects by",
111
+ facet: "facet by",
112
+ }
@@ -0,0 +1,73 @@
1
+ import type { OntologyRegistry } from "../../ontology"
2
+ import { type PropertyClearance, unreadableError } from "../property-clearance"
3
+ import type { ObjectQuery } from "./ir"
4
+ import { type ExecuteObjectQueryLinksInput, preflightObjectQueryLinks } from "./links"
5
+
6
+ /**
7
+ * Refuse a link query that could return a link, or an endpoint, the reader cannot read.
8
+ *
9
+ * A link query returns every link incident to the objects it selects, a page at a time. The page
10
+ * cannot be filtered afterward without breaking its cursor, so what the reader cannot read is
11
+ * refused before the page is read, from the definitions: a link that is unreadable, or that leads
12
+ * to an unreadable object type, whether or not such a link exists.
13
+ */
14
+ export function assertLinkQueryReadable(input: {
15
+ readonly ontology: OntologyRegistry
16
+ readonly clearance: PropertyClearance
17
+ readonly query: ObjectQuery
18
+ readonly request: Omit<ExecuteObjectQueryLinksInput, "query">
19
+ /** Whether grants alone let the reader view the type: storage already leaves out the others. */
20
+ readonly viewableByGrants: (objectTypeId: string) => boolean
21
+ }): void {
22
+ const { ontology, clearance } = input
23
+ const { types, links } = clearance.unreadable()
24
+ if (types.size === 0 && links.length === 0) return
25
+
26
+ const preflight = preflightObjectQueryLinks(
27
+ { ...input.request, query: input.query },
28
+ { ontology }
29
+ )
30
+
31
+ const selected = preflight.validated.result.objectTypeIds
32
+ const outgoing = preflight.direction !== "incoming"
33
+ const incoming = preflight.direction !== "outgoing"
34
+
35
+ const named = (linkId: string) => preflight.linkId === undefined || preflight.linkId === linkId
36
+ const targets = (expected: string | readonly string[], objectTypeId: string) =>
37
+ (typeof expected === "string" ? [expected] : expected).some((target) =>
38
+ ontology.isValidLinkTarget(target, objectTypeId)
39
+ )
40
+
41
+ for (const link of links) {
42
+ if (!named(link.linkId)) continue
43
+ if (
44
+ (outgoing && selected.includes(link.objectTypeId)) ||
45
+ (incoming && selected.some((id) => targets(link.targetObjectTypeId, id)))
46
+ ) {
47
+ throw unreadableError(link)
48
+ }
49
+ }
50
+
51
+ const sealed = [...types].filter(([id]) => input.viewableByGrants(id))
52
+ if (sealed.length === 0) return
53
+
54
+ for (const objectType of ontology.listObjectTypes()) {
55
+ for (const link of objectType.links) {
56
+ if (!named(link.id)) continue
57
+ if (outgoing && selected.includes(objectType.id)) {
58
+ const other = sealed.find(([id]) => targets(link.targetObjectTypeId, id))
59
+ if (other) throw unreadableError(other[1])
60
+ }
61
+
62
+ const source = types.get(objectType.id)
63
+ if (
64
+ incoming &&
65
+ source &&
66
+ input.viewableByGrants(objectType.id) &&
67
+ selected.some((id) => targets(link.targetObjectTypeId, id))
68
+ ) {
69
+ throw unreadableError(source)
70
+ }
71
+ }
72
+ }
73
+ }
@@ -5,6 +5,10 @@ A named profile identifies a derived representation, separate from object proper
5
5
  Indexing sends embedding purpose `document`; search sends `query`. The execution wrapper preserves
6
6
  that role through model resolution, admission and accounting. Symmetric providers may ignore it.
7
7
 
8
+ Each caller sets its own deadline; the execution wrapper adds none. A search has someone waiting
9
+ and gives up after 30 seconds. Indexing, automatic or explicit, waits five minutes: the provider
10
+ bills a call whose response is abandoned, and an abandoned automatic call is a terminal failure.
11
+
8
12
  Vector candidates may come from filters, traversals, explicit refs or set operations. Canonical
9
13
  validation requires one concrete result type and admits every intermediate type, edge and source
10
14
  property. Model lookup uses that resolved result type, not the query's initial type. SQL ranks the
@@ -6,7 +6,12 @@ import type { PreparedObjectVector } from "../../materialization/vectors"
6
6
  import { sameEmbeddingModel } from "../../models/embedding-model"
7
7
  import { getOntologyMutationRuntime } from "../../runtime/ontology-mutations"
8
8
  import type { ExecutionObjectContext } from "../context"
9
- import { normalizeVector, vectorConfiguration, vectorSources } from "./profile"
9
+ import {
10
+ INDEXING_EMBEDDING_TIMEOUT_MS,
11
+ normalizeVector,
12
+ vectorConfiguration,
13
+ vectorSources,
14
+ } from "./profile"
10
15
  import type { ObjectVectorHandle } from "./types"
11
16
 
12
17
  export function createObjectVectorHandle(
@@ -65,7 +70,11 @@ export function createObjectVectorHandle(
65
70
  }
66
71
 
67
72
  // Network work never holds a storage transaction or retries an obsolete computation.
68
- const result = await model.embed({ texts: [input.text], purpose: "document" })
73
+ const result = await model.embed({
74
+ texts: [input.text],
75
+ purpose: "document",
76
+ signal: AbortSignal.timeout(INDEXING_EMBEDDING_TIMEOUT_MS),
77
+ })
69
78
  if (!Array.isArray(result?.vectors) || result.vectors.length !== 1) {
70
79
  throw new MaterializationValidationError(
71
80
  "Embedding model must return exactly one vector for one input text."
@@ -11,7 +11,7 @@ import { ModelExecutionSession } from "../../models/execution/session"
11
11
  import type { SixbHostContext } from "../../runtime/types"
12
12
  import type { VectorIndexingWork } from "../../storage/ontology/vector-indexing"
13
13
  import { fail, retryAt, VectorIndexingDeferred } from "./indexing-shared"
14
- import { normalizeVector } from "./profile"
14
+ import { INDEXING_EMBEDDING_TIMEOUT_MS, normalizeVector } from "./profile"
15
15
 
16
16
  export interface PreparedIndexingWork {
17
17
  readonly work: VectorIndexingWork
@@ -66,7 +66,7 @@ export async function generateVectors(
66
66
  const result = await model.embed({
67
67
  texts: entries.map((entry) => entry.input.text),
68
68
  purpose: "document",
69
- signal,
69
+ signal: AbortSignal.any([signal, AbortSignal.timeout(INDEXING_EMBEDDING_TIMEOUT_MS)]),
70
70
  })
71
71
  const values = normalizeEmbeddingResult(
72
72
  result,
@@ -4,6 +4,11 @@ import type { ObjectVectorSearchProfile } from "../../ontology/types"
4
4
 
5
5
  export const MAX_VECTOR_K = 1000
6
6
  export const VECTOR_INPUT_VERSION = 1
7
+ /**
8
+ * Nobody waits on indexing, and the provider bills a call whose response is abandoned. The
9
+ * deadline only frees the worker from a dead connection, so it is far longer than a search's.
10
+ */
11
+ export const INDEXING_EMBEDDING_TIMEOUT_MS = 5 * 60_000
7
12
 
8
13
  export function vectorConfiguration(profile: ObjectVectorSearchProfile): string {
9
14
  return sha256Canonical({
@@ -408,7 +408,12 @@ export function prop<
408
408
  const TOptions extends PropertyOptions,
409
409
  >(id: TId, schema: TSchema, options: TOptions): PropertyResult<TId, TSchema, TOptions>
410
410
  export function prop(id: string, schema: Schema, options?: PropertyOptions): Property {
411
- const { markings, ...rest } = options ?? {}
411
+ // Most properties carry no markings: skip the rest copy that only exists to drop the key.
412
+ if (!options || withoutMarkingsKey(options)) {
413
+ return { id, name: options?.name ?? id, schema, ...options }
414
+ }
415
+
416
+ const { markings, ...rest } = options
412
417
  return {
413
418
  id,
414
419
  name: options?.name ?? id,
@@ -420,6 +425,12 @@ export function prop(id: string, schema: Schema, options?: PropertyOptions): Pro
420
425
  }
421
426
  }
422
427
 
428
+ function withoutMarkingsKey(
429
+ options: PropertyOptions
430
+ ): options is PropertyOptions & { markings?: undefined } {
431
+ return !("markings" in options)
432
+ }
433
+
423
434
  // ── Link shorthand ──────────────────────────────────────────
424
435
 
425
436
  /**
@@ -24,7 +24,7 @@ export interface RenderOntologyDocsInput {
24
24
  * Marked properties the reader is not cleared for. Like the ontology API, docs still list them,
25
25
  * flagged, so the agent can say the information exists; their values cannot be read or queried.
26
26
  */
27
- readonly restrictedPropertyIds?: (objectTypeId: string) => ReadonlySet<string>
27
+ readonly restrictedPropertyIds?: (objectTypeId: string) => ReadonlySet<string> | undefined
28
28
  }
29
29
 
30
30
  export interface OntologyDocsIndexEntry {