@sixb/core 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (612) hide show
  1. package/dist/actions/delegated-admission.d.ts +24 -0
  2. package/dist/actions/delegated-admission.d.ts.map +1 -0
  3. package/dist/actions/descriptor.d.ts +29 -0
  4. package/dist/actions/descriptor.d.ts.map +1 -0
  5. package/dist/actions/execution.d.ts +5 -5
  6. package/dist/actions/execution.d.ts.map +1 -1
  7. package/dist/actions/index.js +36 -30
  8. package/dist/actions/index.js.map +1 -1
  9. package/dist/actions/request.d.ts.map +1 -1
  10. package/dist/actions/run-authorization.d.ts +20 -0
  11. package/dist/actions/run-authorization.d.ts.map +1 -0
  12. package/dist/actions/run-dispatch.d.ts +3 -1
  13. package/dist/actions/run-dispatch.d.ts.map +1 -1
  14. package/dist/actions/worker.js +3 -3
  15. package/dist/actions/worker.js.map +1 -1
  16. package/dist/agents/adapters.d.ts +5 -122
  17. package/dist/agents/adapters.d.ts.map +1 -1
  18. package/dist/agents/authority.d.ts +1 -1
  19. package/dist/agents/authority.d.ts.map +1 -1
  20. package/dist/agents/context-resolution.d.ts.map +1 -1
  21. package/dist/agents/context.js +1 -1
  22. package/dist/agents/errors.d.ts +0 -9
  23. package/dist/agents/errors.d.ts.map +1 -1
  24. package/dist/agents/execution.d.ts.map +1 -1
  25. package/dist/agents/identity.d.ts +3 -0
  26. package/dist/agents/identity.d.ts.map +1 -0
  27. package/dist/agents/index.d.ts +3 -3
  28. package/dist/agents/index.d.ts.map +1 -1
  29. package/dist/agents/index.js +43 -43
  30. package/dist/agents/index.js.map +1 -1
  31. package/dist/agents/message.d.ts +4 -5
  32. package/dist/agents/message.d.ts.map +1 -1
  33. package/dist/agents/model-loop.d.ts +2 -0
  34. package/dist/agents/model-loop.d.ts.map +1 -1
  35. package/dist/agents/request.d.ts.map +1 -1
  36. package/dist/agents/tool-definition.d.ts +0 -1
  37. package/dist/agents/tool-definition.d.ts.map +1 -1
  38. package/dist/agents/validation.d.ts +0 -4
  39. package/dist/agents/validation.d.ts.map +1 -1
  40. package/dist/ai-usage/execution.d.ts.map +1 -1
  41. package/dist/auth/index.js +8 -5
  42. package/dist/auth/index.js.map +1 -1
  43. package/dist/authorization/decision.d.ts +10 -2
  44. package/dist/authorization/decision.d.ts.map +1 -1
  45. package/dist/authorization/grant-kinds.d.ts +2 -1
  46. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  47. package/dist/authorization/index.d.ts +1 -1
  48. package/dist/authorization/index.d.ts.map +1 -1
  49. package/dist/authorization/index.js +7 -4
  50. package/dist/authorization/index.js.map +1 -1
  51. package/dist/bootstrap/discovery.d.ts +7 -1
  52. package/dist/bootstrap/discovery.d.ts.map +1 -1
  53. package/dist/bootstrap/index.js +46 -39
  54. package/dist/bootstrap/index.js.map +1 -1
  55. package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
  56. package/dist/chunk-19jp6g9d.js +131 -0
  57. package/dist/chunk-19jp6g9d.js.map +11 -0
  58. package/dist/{chunk-x0qhkqje.js → chunk-2dw777qw.js} +50 -5
  59. package/dist/{chunk-x0qhkqje.js.map → chunk-2dw777qw.js.map} +4 -3
  60. package/dist/chunk-359jm1jw.js +147 -0
  61. package/dist/chunk-359jm1jw.js.map +10 -0
  62. package/dist/{chunk-2b5qtban.js → chunk-3xep5cjx.js} +56 -21
  63. package/dist/chunk-3xep5cjx.js.map +15 -0
  64. package/dist/{chunk-qjycjdj6.js → chunk-3z1qec12.js} +6 -8
  65. package/dist/{chunk-qjycjdj6.js.map → chunk-3z1qec12.js.map} +2 -2
  66. package/dist/{chunk-5jcdmjam.js → chunk-4jjp5k14.js} +1 -1
  67. package/dist/{chunk-n2arzn6e.js → chunk-4qfkag59.js} +44 -221
  68. package/dist/chunk-4qfkag59.js.map +20 -0
  69. package/dist/{chunk-rre42skh.js → chunk-4sm0aznx.js} +515 -80
  70. package/dist/{chunk-rre42skh.js.map → chunk-4sm0aznx.js.map} +11 -7
  71. package/dist/chunk-4yqmp43v.js +159 -0
  72. package/dist/chunk-4yqmp43v.js.map +11 -0
  73. package/dist/{chunk-atmkaf60.js → chunk-5e3pq99w.js} +2 -6
  74. package/dist/{chunk-atmkaf60.js.map → chunk-5e3pq99w.js.map} +3 -3
  75. package/dist/{chunk-agsvg9ar.js → chunk-5ntny1qx.js} +1 -1
  76. package/dist/{chunk-z2sery1b.js → chunk-9nbmsvn5.js} +60 -20
  77. package/dist/chunk-9nbmsvn5.js.map +11 -0
  78. package/dist/{chunk-e4rvtvpw.js → chunk-aa2pen2v.js} +250 -78
  79. package/dist/chunk-aa2pen2v.js.map +34 -0
  80. package/dist/{chunk-64sr682n.js → chunk-ajnan18g.js} +11 -8
  81. package/dist/chunk-ajnan18g.js.map +12 -0
  82. package/dist/{chunk-9aehf39w.js → chunk-f26bck4t.js} +4 -4
  83. package/dist/{chunk-7ds9620f.js → chunk-fvt9rjsa.js} +23 -7
  84. package/dist/chunk-fvt9rjsa.js.map +10 -0
  85. package/dist/{chunk-kt81c11h.js → chunk-gbejpkex.js} +5 -5
  86. package/dist/{chunk-kt81c11h.js.map → chunk-gbejpkex.js.map} +1 -1
  87. package/dist/{chunk-vjjv9mrb.js → chunk-gzasd5b6.js} +5 -5
  88. package/dist/{chunk-vjjv9mrb.js.map → chunk-gzasd5b6.js.map} +3 -3
  89. package/dist/{chunk-d63tybny.js → chunk-h0k55pc7.js} +4 -4
  90. package/dist/{chunk-d63tybny.js.map → chunk-h0k55pc7.js.map} +1 -1
  91. package/dist/chunk-h5vqbfmd.js +1537 -0
  92. package/dist/chunk-h5vqbfmd.js.map +19 -0
  93. package/dist/{chunk-3kv70xwp.js → chunk-j1sbhm7p.js} +18 -2
  94. package/dist/chunk-j1sbhm7p.js.map +10 -0
  95. package/dist/{chunk-hdz94br2.js → chunk-k522z7v6.js} +10 -5
  96. package/dist/chunk-k522z7v6.js.map +10 -0
  97. package/dist/{chunk-wjgm6jjt.js → chunk-mth82m8t.js} +128 -94
  98. package/dist/chunk-mth82m8t.js.map +14 -0
  99. package/dist/{chunk-qv38twt8.js → chunk-mwsxn98e.js} +46 -25
  100. package/dist/{chunk-qv38twt8.js.map → chunk-mwsxn98e.js.map} +6 -6
  101. package/dist/chunk-n4khvw9n.js +111 -0
  102. package/dist/chunk-n4khvw9n.js.map +11 -0
  103. package/dist/{chunk-qjzp9xyb.js → chunk-nn0tekr1.js} +6 -8
  104. package/dist/chunk-nn0tekr1.js.map +12 -0
  105. package/dist/chunk-nx7k8tpr.js +436 -0
  106. package/dist/chunk-nx7k8tpr.js.map +12 -0
  107. package/dist/{chunk-08twe8m6.js → chunk-p1rzczbt.js} +1 -1
  108. package/dist/{chunk-37wk412q.js → chunk-p1x242ad.js} +587 -70
  109. package/dist/chunk-p1x242ad.js.map +25 -0
  110. package/dist/{chunk-tn7xcs2n.js → chunk-pc7ys28c.js} +68 -5
  111. package/dist/chunk-pc7ys28c.js.map +14 -0
  112. package/dist/{chunk-3fqt22c4.js → chunk-q0k9nc5a.js} +280 -88
  113. package/dist/chunk-q0k9nc5a.js.map +14 -0
  114. package/dist/chunk-r8jrnexe.js +403 -0
  115. package/dist/chunk-r8jrnexe.js.map +10 -0
  116. package/dist/{chunk-gbrpsx4m.js → chunk-rafagrwr.js} +30 -2
  117. package/dist/chunk-rafagrwr.js.map +11 -0
  118. package/dist/{chunk-xdpwpkha.js → chunk-rv2hkwwa.js} +1 -1
  119. package/dist/{chunk-6ed5bwnd.js → chunk-sbzzr4kx.js} +1203 -691
  120. package/dist/{chunk-6ed5bwnd.js.map → chunk-sbzzr4kx.js.map} +15 -9
  121. package/dist/{chunk-d2ndstdf.js → chunk-v1xppd0y.js} +13 -11
  122. package/dist/{chunk-d2ndstdf.js.map → chunk-v1xppd0y.js.map} +2 -2
  123. package/dist/chunk-v4en4jc2.js +252 -0
  124. package/dist/chunk-v4en4jc2.js.map +10 -0
  125. package/dist/{chunk-1kamz6j0.js → chunk-w1tvjszy.js} +1 -1
  126. package/dist/{chunk-rp1mvzb4.js → chunk-w9tg6yyb.js} +11 -6
  127. package/dist/{chunk-rp1mvzb4.js.map → chunk-w9tg6yyb.js.map} +3 -3
  128. package/dist/{chunk-4nxeacx7.js → chunk-wdage1eb.js} +1 -1
  129. package/dist/{chunk-ha58tjtt.js → chunk-wtf06et8.js} +9 -5
  130. package/dist/{chunk-ha58tjtt.js.map → chunk-wtf06et8.js.map} +3 -3
  131. package/dist/{chunk-h0knpbz5.js → chunk-xajtptbw.js} +782 -211
  132. package/dist/chunk-xajtptbw.js.map +40 -0
  133. package/dist/{chunk-xc7hq65b.js → chunk-yp8ee62z.js} +49 -2
  134. package/dist/chunk-yp8ee62z.js.map +11 -0
  135. package/dist/chunk-z4ccwbkz.js +139 -0
  136. package/dist/chunk-z4ccwbkz.js.map +10 -0
  137. package/dist/datasets/builders.d.ts +11 -2
  138. package/dist/datasets/builders.d.ts.map +1 -1
  139. package/dist/datasets/changes.d.ts +14 -4
  140. package/dist/datasets/changes.d.ts.map +1 -1
  141. package/dist/datasets/execution.d.ts +15 -1
  142. package/dist/datasets/execution.d.ts.map +1 -1
  143. package/dist/datasets/index.d.ts +1 -0
  144. package/dist/datasets/index.d.ts.map +1 -1
  145. package/dist/datasets/sequence.d.ts +7 -0
  146. package/dist/datasets/sequence.d.ts.map +1 -0
  147. package/dist/datasets/types.d.ts +1 -0
  148. package/dist/datasets/types.d.ts.map +1 -1
  149. package/dist/datasets/validation.d.ts.map +1 -1
  150. package/dist/datasets/write.d.ts +37 -0
  151. package/dist/datasets/write.d.ts.map +1 -0
  152. package/dist/datasets/write.js +17 -0
  153. package/dist/datasets/write.js.map +9 -0
  154. package/dist/events/execution.d.ts.map +1 -1
  155. package/dist/events/types/datasets.d.ts +2 -6
  156. package/dist/events/types/datasets.d.ts.map +1 -1
  157. package/dist/execution/agent.d.ts.map +1 -1
  158. package/dist/execution/agent.js +39 -32
  159. package/dist/execution/agent.js.map +1 -1
  160. package/dist/execution/authorization.d.ts +58 -20
  161. package/dist/execution/authorization.d.ts.map +1 -1
  162. package/dist/execution/authorized-object-reader.d.ts +69 -0
  163. package/dist/execution/authorized-object-reader.d.ts.map +1 -0
  164. package/dist/execution/durable.d.ts.map +1 -1
  165. package/dist/execution/index.d.ts +1 -1
  166. package/dist/execution/index.d.ts.map +1 -1
  167. package/dist/execution/primitive.js +39 -32
  168. package/dist/execution/primitive.js.map +2 -2
  169. package/dist/execution/request.d.ts +11 -0
  170. package/dist/execution/request.d.ts.map +1 -1
  171. package/dist/execution/request.js +76 -40
  172. package/dist/execution/request.js.map +3 -3
  173. package/dist/execution/scopes.d.ts +16 -0
  174. package/dist/execution/scopes.d.ts.map +1 -1
  175. package/dist/execution/types.d.ts +9 -0
  176. package/dist/execution/types.d.ts.map +1 -1
  177. package/dist/http/api-routes.d.ts +2 -0
  178. package/dist/http/api-routes.d.ts.map +1 -1
  179. package/dist/http/index.js +1 -1
  180. package/dist/index.d.ts +8 -5
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.js +92 -78
  183. package/dist/index.js.map +1 -1
  184. package/dist/lake-storage/definition-updates.d.ts.map +1 -1
  185. package/dist/lake-storage/errors.d.ts +5 -1
  186. package/dist/lake-storage/errors.d.ts.map +1 -1
  187. package/dist/lake-storage/in-memory.d.ts +1 -0
  188. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  189. package/dist/lake-storage/index.d.ts +6 -1
  190. package/dist/lake-storage/index.d.ts.map +1 -1
  191. package/dist/lake-storage/index.js +24 -7
  192. package/dist/lake-storage/index.js.map +1 -1
  193. package/dist/lake-storage/merge-validation.d.ts.map +1 -1
  194. package/dist/lake-storage/merge.d.ts +13 -2
  195. package/dist/lake-storage/merge.d.ts.map +1 -1
  196. package/dist/lake-storage/source-ordering.d.ts +19 -0
  197. package/dist/lake-storage/source-ordering.d.ts.map +1 -0
  198. package/dist/lake-storage/sql-transforms.d.ts +2 -1
  199. package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
  200. package/dist/lake-storage/types.d.ts +10 -5
  201. package/dist/lake-storage/types.d.ts.map +1 -1
  202. package/dist/lake-storage/version-inputs.d.ts +4 -0
  203. package/dist/lake-storage/version-inputs.d.ts.map +1 -0
  204. package/dist/materializer/index.js +25 -22
  205. package/dist/materializer/index.js.map +1 -1
  206. package/dist/objects/authorized-ontology-view.d.ts +25 -0
  207. package/dist/objects/authorized-ontology-view.d.ts.map +1 -0
  208. package/dist/objects/execution.d.ts +1 -1
  209. package/dist/objects/execution.d.ts.map +1 -1
  210. package/dist/objects/index.js +29 -26
  211. package/dist/objects/index.js.map +1 -1
  212. package/dist/objects/link/authorization.d.ts +2 -7
  213. package/dist/objects/link/authorization.d.ts.map +1 -1
  214. package/dist/objects/query/executor.d.ts +4 -2
  215. package/dist/objects/query/executor.d.ts.map +1 -1
  216. package/dist/objects/query/index.js +24 -21
  217. package/dist/objects/query/index.js.map +1 -1
  218. package/dist/objects/query/links.d.ts +22 -1
  219. package/dist/objects/query/links.d.ts.map +1 -1
  220. package/dist/objects/query/selected-read-admission.d.ts +27 -0
  221. package/dist/objects/query/selected-read-admission.d.ts.map +1 -0
  222. package/dist/objects/query/validate.d.ts +60 -2
  223. package/dist/objects/query/validate.d.ts.map +1 -1
  224. package/dist/objects/sdk/object-handle.d.ts.map +1 -1
  225. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  226. package/dist/objects/sdk/runtime-query-executor.d.ts +2 -7
  227. package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
  228. package/dist/objects/sdk/telemetry-channel.d.ts.map +1 -1
  229. package/dist/objects/service/list-service.d.ts +2 -3
  230. package/dist/objects/service/list-service.d.ts.map +1 -1
  231. package/dist/objects/telemetry/history.d.ts +8 -6
  232. package/dist/objects/telemetry/history.d.ts.map +1 -1
  233. package/dist/objects/telemetry/index.d.ts +2 -2
  234. package/dist/objects/telemetry/index.d.ts.map +1 -1
  235. package/dist/objects/telemetry/workload.d.ts +11 -0
  236. package/dist/objects/telemetry/workload.d.ts.map +1 -0
  237. package/dist/ontology/index.d.ts +2 -1
  238. package/dist/ontology/index.d.ts.map +1 -1
  239. package/dist/ontology/index.js +13 -12
  240. package/dist/ontology/index.js.map +1 -1
  241. package/dist/ontology/inference/index.d.ts +2 -1
  242. package/dist/ontology/inference/index.d.ts.map +1 -1
  243. package/dist/ontology/internal.d.ts +0 -1
  244. package/dist/ontology/internal.d.ts.map +1 -1
  245. package/dist/ontology/internal.js +5 -10
  246. package/dist/ontology/internal.js.map +3 -3
  247. package/dist/ontology/json-schema.d.ts +10 -6
  248. package/dist/ontology/json-schema.d.ts.map +1 -1
  249. package/dist/ontology/link-path-selection.d.ts +35 -0
  250. package/dist/ontology/link-path-selection.d.ts.map +1 -0
  251. package/dist/ontology/refs.d.ts +2 -0
  252. package/dist/ontology/refs.d.ts.map +1 -1
  253. package/dist/ontology/tokens.d.ts +2 -1
  254. package/dist/ontology/tokens.d.ts.map +1 -1
  255. package/dist/pipelines/execution.d.ts.map +1 -1
  256. package/dist/pipelines/index.js +27 -24
  257. package/dist/pipelines/index.js.map +1 -1
  258. package/dist/pipelines/request.d.ts.map +1 -1
  259. package/dist/projections/execution.d.ts.map +1 -1
  260. package/dist/projections/internal.js +25 -22
  261. package/dist/projections/internal.js.map +1 -1
  262. package/dist/projections/run-dispatch.d.ts.map +1 -1
  263. package/dist/rules/execution.d.ts.map +1 -1
  264. package/dist/runtime/create.d.ts +4 -1
  265. package/dist/runtime/create.d.ts.map +1 -1
  266. package/dist/runtime/definitions.d.ts +2 -0
  267. package/dist/runtime/definitions.d.ts.map +1 -1
  268. package/dist/runtime/host.d.ts +2 -0
  269. package/dist/runtime/host.d.ts.map +1 -1
  270. package/dist/runtime/internal.d.ts +1 -0
  271. package/dist/runtime/internal.d.ts.map +1 -1
  272. package/dist/runtime/resolve-definitions.d.ts +2 -0
  273. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  274. package/dist/runtime/sixb.d.ts +4 -0
  275. package/dist/runtime/sixb.d.ts.map +1 -1
  276. package/dist/runtime/types.d.ts +3 -0
  277. package/dist/runtime/types.d.ts.map +1 -1
  278. package/dist/schedules/execution.d.ts +2 -1
  279. package/dist/schedules/execution.d.ts.map +1 -1
  280. package/dist/security/every.d.ts +4 -1
  281. package/dist/security/every.d.ts.map +1 -1
  282. package/dist/security/grants.d.ts +7 -2
  283. package/dist/security/grants.d.ts.map +1 -1
  284. package/dist/security/index.d.ts +1 -1
  285. package/dist/security/index.d.ts.map +1 -1
  286. package/dist/security/registry.d.ts +1 -0
  287. package/dist/security/registry.d.ts.map +1 -1
  288. package/dist/security/types.d.ts +7 -1
  289. package/dist/security/types.d.ts.map +1 -1
  290. package/dist/security/validation.d.ts +2 -0
  291. package/dist/security/validation.d.ts.map +1 -1
  292. package/dist/shares/access-plan.d.ts +22 -0
  293. package/dist/shares/access-plan.d.ts.map +1 -0
  294. package/dist/shares/builders.d.ts +14 -0
  295. package/dist/shares/builders.d.ts.map +1 -0
  296. package/dist/shares/compiler.d.ts +14 -0
  297. package/dist/shares/compiler.d.ts.map +1 -0
  298. package/dist/shares/errors.d.ts +4 -0
  299. package/dist/shares/errors.d.ts.map +1 -0
  300. package/dist/shares/execution.d.ts +57 -0
  301. package/dist/shares/execution.d.ts.map +1 -0
  302. package/dist/shares/index.d.ts +10 -0
  303. package/dist/shares/index.d.ts.map +1 -0
  304. package/dist/shares/internal.d.ts +3 -0
  305. package/dist/shares/internal.d.ts.map +1 -0
  306. package/dist/shares/internal.js +239 -0
  307. package/dist/shares/internal.js.map +10 -0
  308. package/dist/shares/intersection.d.ts +9 -0
  309. package/dist/shares/intersection.d.ts.map +1 -0
  310. package/dist/shares/session-protocol.d.ts +41 -0
  311. package/dist/shares/session-protocol.d.ts.map +1 -0
  312. package/dist/shares/types.d.ts +51 -0
  313. package/dist/shares/types.d.ts.map +1 -0
  314. package/dist/shares/validation.d.ts +11 -0
  315. package/dist/shares/validation.d.ts.map +1 -0
  316. package/dist/storage/action-runs/provider.js +2 -2
  317. package/dist/storage/agents/provider.js +2 -2
  318. package/dist/storage/executions/in-memory.d.ts +3 -0
  319. package/dist/storage/executions/in-memory.d.ts.map +1 -1
  320. package/dist/storage/executions/provider.d.ts +4 -1
  321. package/dist/storage/executions/provider.d.ts.map +1 -1
  322. package/dist/storage/executions/provider.js +23 -3
  323. package/dist/storage/executions/provider.js.map +3 -3
  324. package/dist/storage/executions/run-link.d.ts +7 -0
  325. package/dist/storage/executions/run-link.d.ts.map +1 -1
  326. package/dist/storage/executions/validation.d.ts +6 -0
  327. package/dist/storage/executions/validation.d.ts.map +1 -1
  328. package/dist/storage/in-memory/index.d.ts +8 -0
  329. package/dist/storage/in-memory/index.d.ts.map +1 -1
  330. package/dist/storage/index.d.ts +8 -2
  331. package/dist/storage/index.d.ts.map +1 -1
  332. package/dist/storage/index.js +65 -36
  333. package/dist/storage/index.js.map +1 -1
  334. package/dist/storage/objects/execution-limits.d.ts +25 -0
  335. package/dist/storage/objects/execution-limits.d.ts.map +1 -0
  336. package/dist/storage/objects/guard.d.ts +16 -0
  337. package/dist/storage/objects/guard.d.ts.map +1 -0
  338. package/dist/storage/objects/in-memory/index.d.ts +3 -0
  339. package/dist/storage/objects/in-memory/index.d.ts.map +1 -0
  340. package/dist/storage/objects/in-memory/keys.d.ts +10 -0
  341. package/dist/storage/objects/in-memory/keys.d.ts.map +1 -0
  342. package/dist/storage/objects/in-memory/query.d.ts +31 -0
  343. package/dist/storage/objects/in-memory/query.d.ts.map +1 -0
  344. package/dist/storage/objects/in-memory/read-scope.d.ts +18 -0
  345. package/dist/storage/objects/in-memory/read-scope.d.ts.map +1 -0
  346. package/dist/storage/objects/in-memory/read-source.d.ts +10 -0
  347. package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -0
  348. package/dist/storage/objects/in-memory/selected-reader.d.ts +9 -0
  349. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -0
  350. package/dist/storage/objects/{in-memory.d.ts → in-memory/storage.d.ts} +13 -10
  351. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -0
  352. package/dist/storage/objects/index.d.ts +4 -1
  353. package/dist/storage/objects/index.d.ts.map +1 -1
  354. package/dist/storage/objects/keys.d.ts +1 -1
  355. package/dist/storage/objects/keys.d.ts.map +1 -1
  356. package/dist/storage/objects/read-scope.d.ts +25 -0
  357. package/dist/storage/objects/read-scope.d.ts.map +1 -0
  358. package/dist/storage/objects/types.d.ts +114 -22
  359. package/dist/storage/objects/types.d.ts.map +1 -1
  360. package/dist/storage/operation-scope.d.ts +3 -0
  361. package/dist/storage/operation-scope.d.ts.map +1 -1
  362. package/dist/storage/operation-scope.js +4 -2
  363. package/dist/storage/operation-scope.js.map +1 -1
  364. package/dist/storage/pipeline-runs/provider.js +2 -2
  365. package/dist/storage/projection-runs/provider.js +2 -2
  366. package/dist/storage/share-grants/errors.d.ts +8 -0
  367. package/dist/storage/share-grants/errors.d.ts.map +1 -0
  368. package/dist/storage/share-grants/in-memory.d.ts +11 -0
  369. package/dist/storage/share-grants/in-memory.d.ts.map +1 -0
  370. package/dist/storage/share-grants/index.d.ts +5 -0
  371. package/dist/storage/share-grants/index.d.ts.map +1 -0
  372. package/dist/storage/share-grants/provider.d.ts +4 -0
  373. package/dist/storage/share-grants/provider.d.ts.map +1 -0
  374. package/dist/storage/share-grants/provider.js +24 -0
  375. package/dist/storage/share-grants/provider.js.map +9 -0
  376. package/dist/storage/share-grants/record.d.ts +11 -0
  377. package/dist/storage/share-grants/record.d.ts.map +1 -0
  378. package/dist/storage/share-grants/types.d.ts +97 -0
  379. package/dist/storage/share-grants/types.d.ts.map +1 -0
  380. package/dist/storage/share-sessions/errors.d.ts +8 -0
  381. package/dist/storage/share-sessions/errors.d.ts.map +1 -0
  382. package/dist/storage/share-sessions/in-memory.d.ts +14 -0
  383. package/dist/storage/share-sessions/in-memory.d.ts.map +1 -0
  384. package/dist/storage/share-sessions/index.d.ts +5 -0
  385. package/dist/storage/share-sessions/index.d.ts.map +1 -0
  386. package/dist/storage/share-sessions/provider.d.ts +3 -0
  387. package/dist/storage/share-sessions/provider.d.ts.map +1 -0
  388. package/dist/storage/share-sessions/provider.js +20 -0
  389. package/dist/storage/share-sessions/provider.js.map +9 -0
  390. package/dist/storage/share-sessions/record.d.ts +8 -0
  391. package/dist/storage/share-sessions/record.d.ts.map +1 -0
  392. package/dist/storage/share-sessions/types.d.ts +50 -0
  393. package/dist/storage/share-sessions/types.d.ts.map +1 -0
  394. package/dist/storage/sync-runs/provider.js +2 -2
  395. package/dist/storage/transaction.d.ts +2 -1
  396. package/dist/storage/transaction.d.ts.map +1 -1
  397. package/dist/storage/types.d.ts +8 -0
  398. package/dist/storage/types.d.ts.map +1 -1
  399. package/dist/storage/webhook-runs/provider.js +2 -2
  400. package/dist/storage/workflow-runs/provider.js +10 -7
  401. package/dist/storage/workflow-runs/provider.js.map +1 -1
  402. package/dist/syncs/execution.d.ts.map +1 -1
  403. package/dist/syncs/index.js +27 -24
  404. package/dist/syncs/index.js.map +1 -1
  405. package/dist/syncs/request.d.ts.map +1 -1
  406. package/dist/testing/dataset-sequence-contract.d.ts +4 -0
  407. package/dist/testing/dataset-sequence-contract.d.ts.map +1 -0
  408. package/dist/testing/effective-storage-contract.d.ts.map +1 -1
  409. package/dist/testing/execution-storage-contract.d.ts +4 -0
  410. package/dist/testing/execution-storage-contract.d.ts.map +1 -1
  411. package/dist/testing/index.d.ts +3 -0
  412. package/dist/testing/index.d.ts.map +1 -1
  413. package/dist/testing/index.js +2555 -908
  414. package/dist/testing/index.js.map +11 -7
  415. package/dist/testing/lake-merge-storage-contract.d.ts +1 -0
  416. package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
  417. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  418. package/dist/testing/object-read-scope-contract.d.ts +22 -0
  419. package/dist/testing/object-read-scope-contract.d.ts.map +1 -0
  420. package/dist/testing/share-grant-storage-contract.d.ts +10 -0
  421. package/dist/testing/share-grant-storage-contract.d.ts.map +1 -0
  422. package/dist/testing/share-session-storage-contract.d.ts +9 -0
  423. package/dist/testing/share-session-storage-contract.d.ts.map +1 -0
  424. package/dist/webhooks/internal.js +24 -21
  425. package/dist/webhooks/internal.js.map +2 -2
  426. package/dist/workflows/execution.d.ts.map +1 -1
  427. package/dist/workflows/index.js +42 -35
  428. package/dist/workflows/index.js.map +1 -1
  429. package/dist/workflows/request.d.ts.map +1 -1
  430. package/package.json +25 -1
  431. package/src/actions/delegated-admission.ts +72 -0
  432. package/src/actions/descriptor.ts +58 -0
  433. package/src/actions/execution.ts +99 -24
  434. package/src/actions/request.ts +136 -19
  435. package/src/actions/run-authorization.ts +53 -0
  436. package/src/actions/run-dispatch.ts +8 -1
  437. package/src/agents/adapters.ts +30 -420
  438. package/src/agents/authority.ts +3 -4
  439. package/src/agents/context-resolution.ts +1 -4
  440. package/src/agents/errors.ts +0 -10
  441. package/src/agents/execution.ts +13 -5
  442. package/src/agents/identity.ts +4 -0
  443. package/src/agents/index.ts +1 -20
  444. package/src/agents/message.ts +4 -5
  445. package/src/agents/model-loop.ts +54 -6
  446. package/src/agents/request.ts +16 -3
  447. package/src/agents/tool-definition.ts +0 -19
  448. package/src/agents/validation.ts +6 -65
  449. package/src/ai-usage/execution.ts +4 -11
  450. package/src/authorization/decision.ts +29 -14
  451. package/src/authorization/grant-kinds.ts +10 -0
  452. package/src/authorization/index.ts +1 -0
  453. package/src/bootstrap/discovery.ts +3 -0
  454. package/src/bootstrap/ontology-type-manifest.ts +12 -6
  455. package/src/datasets/builders.ts +23 -2
  456. package/src/datasets/changes.ts +16 -4
  457. package/src/datasets/execution.ts +76 -5
  458. package/src/datasets/index.ts +1 -0
  459. package/src/datasets/sequence.ts +77 -0
  460. package/src/datasets/types.ts +1 -0
  461. package/src/datasets/validation.ts +26 -0
  462. package/src/datasets/write.ts +240 -0
  463. package/src/events/execution.ts +57 -7
  464. package/src/events/types/datasets.ts +2 -6
  465. package/src/execution/agent.ts +1 -4
  466. package/src/execution/authorization.ts +470 -90
  467. package/src/execution/authorized-object-reader.ts +695 -0
  468. package/src/execution/durable.ts +10 -2
  469. package/src/execution/index.ts +1 -0
  470. package/src/execution/request.ts +63 -13
  471. package/src/execution/scopes.ts +36 -6
  472. package/src/execution/types.ts +8 -0
  473. package/src/http/api-routes.ts +45 -0
  474. package/src/index.ts +36 -15
  475. package/src/lake-storage/definition-updates.ts +9 -0
  476. package/src/lake-storage/errors.ts +6 -1
  477. package/src/lake-storage/in-memory.ts +53 -17
  478. package/src/lake-storage/index.ts +10 -1
  479. package/src/lake-storage/merge-validation.ts +12 -2
  480. package/src/lake-storage/merge.ts +40 -2
  481. package/src/lake-storage/source-ordering.ts +95 -0
  482. package/src/lake-storage/sql-transforms.ts +2 -1
  483. package/src/lake-storage/types.ts +10 -5
  484. package/src/lake-storage/version-inputs.ts +14 -0
  485. package/src/objects/authorized-ontology-view.ts +512 -0
  486. package/src/objects/execution.ts +98 -143
  487. package/src/objects/link/authorization.ts +3 -2
  488. package/src/objects/query/executor.ts +45 -34
  489. package/src/objects/query/links.ts +84 -25
  490. package/src/objects/query/selected-read-admission.ts +310 -0
  491. package/src/objects/query/validate.ts +353 -36
  492. package/src/objects/sdk/object-handle.ts +2 -8
  493. package/src/objects/sdk/object-set.ts +10 -11
  494. package/src/objects/sdk/runtime-query-executor.ts +8 -28
  495. package/src/objects/sdk/telemetry-channel.ts +11 -7
  496. package/src/objects/service/list-service.ts +15 -29
  497. package/src/objects/telemetry/history.ts +297 -17
  498. package/src/objects/telemetry/index.ts +2 -2
  499. package/src/objects/telemetry/workload.ts +79 -0
  500. package/src/ontology/index.ts +7 -1
  501. package/src/ontology/inference/index.ts +4 -1
  502. package/src/ontology/internal.ts +0 -1
  503. package/src/ontology/json-schema.ts +13 -12
  504. package/src/ontology/link-path-selection.ts +193 -0
  505. package/src/ontology/refs.ts +19 -0
  506. package/src/ontology/tokens.ts +15 -8
  507. package/src/pipelines/execution.ts +30 -7
  508. package/src/pipelines/request.ts +5 -0
  509. package/src/projections/execution.ts +72 -11
  510. package/src/projections/run-dispatch.ts +6 -12
  511. package/src/rules/execution.ts +20 -8
  512. package/src/runtime/create.ts +5 -1
  513. package/src/runtime/definitions.ts +2 -0
  514. package/src/runtime/host.ts +25 -6
  515. package/src/runtime/internal.ts +1 -0
  516. package/src/runtime/resolve-definitions.ts +9 -0
  517. package/src/runtime/sixb.ts +23 -2
  518. package/src/runtime/types.ts +3 -0
  519. package/src/schedules/execution.ts +24 -2
  520. package/src/security/every.ts +4 -0
  521. package/src/security/grants.ts +45 -3
  522. package/src/security/index.ts +1 -0
  523. package/src/security/registry.ts +3 -0
  524. package/src/security/types.ts +8 -0
  525. package/src/security/validation.ts +3 -0
  526. package/src/shares/access-plan.ts +225 -0
  527. package/src/shares/builders.ts +381 -0
  528. package/src/shares/compiler.ts +359 -0
  529. package/src/shares/errors.ts +3 -0
  530. package/src/shares/execution.ts +394 -0
  531. package/src/shares/index.ts +28 -0
  532. package/src/shares/internal.ts +9 -0
  533. package/src/shares/intersection.ts +178 -0
  534. package/src/shares/session-protocol.ts +258 -0
  535. package/src/shares/types.ts +76 -0
  536. package/src/shares/validation.ts +40 -0
  537. package/src/storage/executions/in-memory.ts +9 -1
  538. package/src/storage/executions/provider.ts +30 -1
  539. package/src/storage/executions/run-link.ts +29 -0
  540. package/src/storage/executions/validation.ts +46 -1
  541. package/src/storage/in-memory/index.ts +21 -2
  542. package/src/storage/index.ts +51 -0
  543. package/src/storage/objects/execution-limits.ts +283 -0
  544. package/src/storage/objects/guard.ts +55 -0
  545. package/src/storage/objects/in-memory/index.ts +2 -0
  546. package/src/storage/objects/in-memory/keys.ts +46 -0
  547. package/src/storage/objects/in-memory/query.ts +754 -0
  548. package/src/storage/objects/in-memory/read-scope.ts +211 -0
  549. package/src/storage/objects/in-memory/read-source.ts +10 -0
  550. package/src/storage/objects/in-memory/selected-reader.ts +252 -0
  551. package/src/storage/objects/in-memory/storage.ts +589 -0
  552. package/src/storage/objects/index.ts +21 -0
  553. package/src/storage/objects/keys.ts +1 -1
  554. package/src/storage/objects/read-scope.ts +672 -0
  555. package/src/storage/objects/types.ts +123 -19
  556. package/src/storage/operation-scope.ts +16 -0
  557. package/src/storage/share-grants/errors.ts +14 -0
  558. package/src/storage/share-grants/in-memory.ts +107 -0
  559. package/src/storage/share-grants/index.ts +14 -0
  560. package/src/storage/share-grants/provider.ts +11 -0
  561. package/src/storage/share-grants/record.ts +347 -0
  562. package/src/storage/share-grants/types.ts +112 -0
  563. package/src/storage/share-sessions/errors.ts +14 -0
  564. package/src/storage/share-sessions/in-memory.ts +105 -0
  565. package/src/storage/share-sessions/index.ts +11 -0
  566. package/src/storage/share-sessions/provider.ts +9 -0
  567. package/src/storage/share-sessions/record.ts +176 -0
  568. package/src/storage/share-sessions/types.ts +57 -0
  569. package/src/storage/transaction.ts +14 -2
  570. package/src/storage/types.ts +27 -0
  571. package/src/syncs/execution.ts +25 -5
  572. package/src/syncs/request.ts +5 -0
  573. package/src/testing/dataset-sequence-contract.ts +373 -0
  574. package/src/testing/effective-storage-contract.ts +34 -0
  575. package/src/testing/execution-storage-contract.ts +79 -0
  576. package/src/testing/index.ts +16 -0
  577. package/src/testing/lake-merge-storage-contract.ts +3 -0
  578. package/src/testing/lake-storage-contract.ts +58 -0
  579. package/src/testing/object-read-scope-contract.ts +939 -0
  580. package/src/testing/share-grant-storage-contract.ts +325 -0
  581. package/src/testing/share-session-storage-contract.ts +235 -0
  582. package/src/workflows/execution.ts +53 -14
  583. package/src/workflows/request.ts +5 -0
  584. package/dist/chunk-2b5qtban.js.map +0 -14
  585. package/dist/chunk-37wk412q.js.map +0 -23
  586. package/dist/chunk-3fqt22c4.js.map +0 -14
  587. package/dist/chunk-3kv70xwp.js.map +0 -10
  588. package/dist/chunk-64sr682n.js.map +0 -12
  589. package/dist/chunk-7ds9620f.js.map +0 -10
  590. package/dist/chunk-dqn23610.js +0 -72
  591. package/dist/chunk-dqn23610.js.map +0 -11
  592. package/dist/chunk-e4rvtvpw.js.map +0 -34
  593. package/dist/chunk-gbrpsx4m.js.map +0 -11
  594. package/dist/chunk-h0knpbz5.js.map +0 -38
  595. package/dist/chunk-hdz94br2.js.map +0 -10
  596. package/dist/chunk-n2arzn6e.js.map +0 -20
  597. package/dist/chunk-qjzp9xyb.js.map +0 -12
  598. package/dist/chunk-tn7xcs2n.js.map +0 -13
  599. package/dist/chunk-wjgm6jjt.js.map +0 -13
  600. package/dist/chunk-xc7hq65b.js.map +0 -10
  601. package/dist/chunk-y35ma3mj.js +0 -551
  602. package/dist/chunk-y35ma3mj.js.map +0 -15
  603. package/dist/chunk-z2sery1b.js.map +0 -11
  604. package/dist/storage/objects/in-memory.d.ts.map +0 -1
  605. package/src/storage/objects/in-memory.ts +0 -1241
  606. /package/dist/{chunk-5jcdmjam.js.map → chunk-4jjp5k14.js.map} +0 -0
  607. /package/dist/{chunk-agsvg9ar.js.map → chunk-5ntny1qx.js.map} +0 -0
  608. /package/dist/{chunk-9aehf39w.js.map → chunk-f26bck4t.js.map} +0 -0
  609. /package/dist/{chunk-08twe8m6.js.map → chunk-p1rzczbt.js.map} +0 -0
  610. /package/dist/{chunk-xdpwpkha.js.map → chunk-rv2hkwwa.js.map} +0 -0
  611. /package/dist/{chunk-1kamz6j0.js.map → chunk-w1tvjszy.js.map} +0 -0
  612. /package/dist/{chunk-4nxeacx7.js.map → chunk-wdage1eb.js.map} +0 -0
@@ -0,0 +1,394 @@
1
+ import { createHash, randomBytes, randomUUID } from "node:crypto"
2
+ import { assertAuthorized, isRuntimeAllowed } from "../authorization"
3
+ import type { AuthorizablePrincipal, ExecutionContext } from "../execution"
4
+ import { resolveExecutionScopeAuthorization } from "../execution/authorization"
5
+ import type { ObjectRef } from "../ontology"
6
+ import type { DefinitionCatalog } from "../runtime/definitions"
7
+ import type { SixbRuntimeContext } from "../runtime/types"
8
+ import { ObjectNotFoundError, type ShareGrantRecord, ShareGrantStorageError } from "../storage"
9
+ import { compileShareAccessPlan } from "./compiler"
10
+ import type { ShareDefinition } from "./types"
11
+
12
+ const MAX_CREATE_ATTEMPTS = 5
13
+
14
+ export type ShareErrorReason =
15
+ | "invalid_input"
16
+ | "not_found"
17
+ | "unauthenticated"
18
+ | "storage_unavailable"
19
+ | "storage_failure"
20
+
21
+ export class ShareError extends Error {
22
+ readonly name = "ShareError"
23
+
24
+ constructor(
25
+ readonly reason: ShareErrorReason,
26
+ message: string,
27
+ options?: ErrorOptions
28
+ ) {
29
+ super(message, options)
30
+ }
31
+ }
32
+
33
+ type ShareTargetObjectTypeId<TDefinition extends ShareDefinition> =
34
+ TDefinition["target"]["objectTypeId"]
35
+
36
+ /** Public lifecycle view. Durable secrets and authority internals never cross this boundary. */
37
+ export type SharedAccessGrant = Omit<
38
+ ShareGrantRecord,
39
+ "projectId" | "authoritySnapshot" | "authorityDigest" | "tokenHash"
40
+ >
41
+
42
+ export interface SharedAccessInvitation {
43
+ readonly grant: SharedAccessGrant
44
+ /** Returned once. Storage retains only its SHA-256 digest. */
45
+ readonly secret: string
46
+ }
47
+
48
+ export interface IssueSharedAccessInput<TDefinition extends ShareDefinition = ShareDefinition> {
49
+ readonly target: ObjectRef<NoInfer<ShareTargetObjectTypeId<TDefinition>>>
50
+ readonly destinationPath: string
51
+ readonly expiresAt: Date
52
+ }
53
+
54
+ export interface IssueSharedAccessByIdInput extends IssueSharedAccessInput {
55
+ readonly definitionId: string
56
+ }
57
+
58
+ export interface ListSharedAccessInput<TDefinition extends ShareDefinition = ShareDefinition> {
59
+ readonly target?: ObjectRef<NoInfer<ShareTargetObjectTypeId<TDefinition>>>
60
+ readonly includeRevoked?: boolean
61
+ readonly includeExpired?: boolean
62
+ readonly limit?: number
63
+ readonly offset?: number
64
+ }
65
+
66
+ export interface ListSharedAccessByIdInput extends Omit<ListSharedAccessInput, "target"> {
67
+ readonly definitionId: string
68
+ /** Filter within the definition's target Object Type. */
69
+ readonly primaryId?: string
70
+ }
71
+
72
+ export interface SharedAccessGrantListResult {
73
+ readonly grants: readonly SharedAccessGrant[]
74
+ readonly total: number
75
+ readonly hasMore: boolean
76
+ }
77
+
78
+ export interface SharesRuntime {
79
+ listDefinitions(): readonly ShareDefinition[]
80
+ getDefinitionById(definitionId: string): ShareDefinition | null
81
+ issue<const TDefinition extends ShareDefinition>(
82
+ definition: TDefinition,
83
+ input: IssueSharedAccessInput<TDefinition>
84
+ ): Promise<SharedAccessInvitation>
85
+ issueById(input: IssueSharedAccessByIdInput): Promise<SharedAccessInvitation>
86
+ list<const TDefinition extends ShareDefinition>(
87
+ definition: TDefinition,
88
+ input?: ListSharedAccessInput<TDefinition>
89
+ ): Promise<SharedAccessGrantListResult>
90
+ listById(input: ListSharedAccessByIdInput): Promise<SharedAccessGrantListResult>
91
+ revoke(grantId: string): Promise<SharedAccessGrant | null>
92
+ }
93
+
94
+ export function createSharesRuntime(
95
+ runtime: SixbRuntimeContext,
96
+ execution: ExecutionContext,
97
+ definitions: DefinitionCatalog<ShareDefinition>
98
+ ): SharesRuntime {
99
+ const managementPrincipal = (): AuthorizablePrincipal => {
100
+ const authority = resolveExecutionScopeAuthorization(runtime.projectId, {
101
+ execution,
102
+ authorization: runtime.runtimeAuthorization,
103
+ })
104
+ if (authority.type !== "principal" || authority.context.principal.type === "system") {
105
+ throw new ShareError(
106
+ "unauthenticated",
107
+ "[Sixb] Shared access grants require user or service-account authority."
108
+ )
109
+ }
110
+ return {
111
+ type: authority.context.principal.type,
112
+ id: authority.context.principal.id,
113
+ }
114
+ }
115
+
116
+ const canManage = (shareId: string): boolean => {
117
+ try {
118
+ managementPrincipal()
119
+ return isRuntimeAllowed(runtime, { kind: "share.manage", shareId })
120
+ } catch {
121
+ return false
122
+ }
123
+ }
124
+
125
+ const resolveManageableDefinition = (definitionId: unknown): ShareDefinition => {
126
+ const id = validDefinitionId(definitionId)
127
+ managementPrincipal()
128
+ // Authorize the opaque id before resolving it so callers without `can.share` cannot use the
129
+ // 403/404 distinction as a Share-definition existence oracle.
130
+ assertCanManage(runtime, id)
131
+ return resolveDefinition(definitions, id)
132
+ }
133
+
134
+ const issueByDefinition = async (
135
+ definition: ShareDefinition,
136
+ input: IssueSharedAccessInput
137
+ ): Promise<SharedAccessInvitation> => {
138
+ assertInputObject(input, "Shared access issue input")
139
+ const issuer = managementPrincipal()
140
+ assertCanManage(runtime, definition.id)
141
+ const storage = requireShareStorage(runtime)
142
+ const createdAt = new Date()
143
+ const expiresAt = validFutureDate(input.expiresAt, createdAt)
144
+ const target = exactTarget(definition, input.target)
145
+
146
+ // This canonical read checks both the caller's current object authority and target existence.
147
+ const object = await runtime.objectReader.getByPrimaryId({
148
+ objectTypeId: target.objectTypeId,
149
+ primaryId: target.primaryId,
150
+ })
151
+ if (!object) {
152
+ throw new ObjectNotFoundError(target.objectTypeId, target.primaryId, "Share target not found")
153
+ }
154
+
155
+ const authoritySnapshot = {
156
+ version: 1 as const,
157
+ access: compileShareAccessPlan({
158
+ share: definition,
159
+ target,
160
+ ontology: runtime.ontology,
161
+ actions: runtime.actionRegistry,
162
+ }),
163
+ }
164
+
165
+ for (let attempt = 0; attempt < MAX_CREATE_ATTEMPTS; attempt += 1) {
166
+ const secret = randomBytes(32).toString("base64url")
167
+ try {
168
+ const grant = await storage.create({
169
+ id: `shr_${randomUUID()}`,
170
+ projectId: runtime.projectId,
171
+ definitionId: definition.id,
172
+ target,
173
+ issuedBy: issuer,
174
+ authoritySnapshot,
175
+ tokenHash: sha256(secret),
176
+ destinationPath: input.destinationPath,
177
+ createdAt,
178
+ expiresAt,
179
+ })
180
+ return { grant: publicGrant(grant), secret }
181
+ } catch (error) {
182
+ if (error instanceof ShareGrantStorageError && error.code === "invalid_input") {
183
+ throw new ShareError("invalid_input", error.message, { cause: error })
184
+ }
185
+ if (
186
+ !(error instanceof ShareGrantStorageError) ||
187
+ error.code !== "duplicate" ||
188
+ attempt === MAX_CREATE_ATTEMPTS - 1
189
+ ) {
190
+ throw storageFailure("issue", error)
191
+ }
192
+ }
193
+ }
194
+
195
+ throw storageFailure("issue")
196
+ }
197
+
198
+ const listByDefinition = async (
199
+ definition: ShareDefinition,
200
+ input: ListSharedAccessInput = {}
201
+ ): Promise<SharedAccessGrantListResult> => {
202
+ assertInputObject(input, "Shared access list input")
203
+ managementPrincipal()
204
+ assertCanManage(runtime, definition.id)
205
+ const storage = requireShareStorage(runtime)
206
+ const target = input.target === undefined ? undefined : exactTarget(definition, input.target)
207
+ try {
208
+ const result = await storage.list({
209
+ projectId: runtime.projectId,
210
+ definitionId: definition.id,
211
+ ...(target === undefined ? {} : { target }),
212
+ includeRevoked: input.includeRevoked,
213
+ includeExpired: input.includeExpired,
214
+ now: new Date(),
215
+ limit: input.limit,
216
+ offset: input.offset,
217
+ })
218
+ return { ...result, grants: result.grants.map(publicGrant) }
219
+ } catch (error) {
220
+ if (error instanceof ShareGrantStorageError && error.code === "invalid_input") {
221
+ throw new ShareError("invalid_input", error.message, { cause: error })
222
+ }
223
+ throw storageFailure("list", error)
224
+ }
225
+ }
226
+
227
+ return {
228
+ listDefinitions: () => definitions.list().filter((definition) => canManage(definition.id)),
229
+ getDefinitionById: (definitionId) => {
230
+ const definition = definitions.getById(definitionId)
231
+ return definition && canManage(definition.id) ? definition : null
232
+ },
233
+ async issue(definition, input) {
234
+ return issueByDefinition(
235
+ resolveManageableDefinition(definitionIdFromReference(definition)),
236
+ input
237
+ )
238
+ },
239
+ async issueById(input) {
240
+ assertInputObject(input, "Shared access issue input")
241
+ return issueByDefinition(resolveManageableDefinition(input.definitionId), input)
242
+ },
243
+ async list(definition, input) {
244
+ return listByDefinition(
245
+ resolveManageableDefinition(definitionIdFromReference(definition)),
246
+ input
247
+ )
248
+ },
249
+ async listById(input) {
250
+ assertInputObject(input, "Shared access list input")
251
+ const definition = resolveManageableDefinition(input.definitionId)
252
+ const { primaryId, includeRevoked, includeExpired, limit, offset } = input
253
+ return listByDefinition(definition, {
254
+ ...(primaryId === undefined
255
+ ? {}
256
+ : {
257
+ target: {
258
+ objectTypeId: definition.target.objectTypeId,
259
+ primaryId,
260
+ },
261
+ }),
262
+ includeRevoked,
263
+ includeExpired,
264
+ limit,
265
+ offset,
266
+ })
267
+ },
268
+ revoke: async (grantId) => {
269
+ const actor = managementPrincipal()
270
+ const storage = requireShareStorage(runtime)
271
+ if (typeof grantId !== "string" || !grantId.trim()) {
272
+ throw new ShareError("invalid_input", "[Sixb] Shared access grant id must not be empty.")
273
+ }
274
+ let current: ShareGrantRecord | null
275
+ try {
276
+ current = await storage.getById({ projectId: runtime.projectId, id: grantId })
277
+ } catch (error) {
278
+ throw storageFailure("load for revocation", error)
279
+ }
280
+ if (!current) return null
281
+ // Do not turn grant ids into an existence oracle. Missing definitions and grants outside the
282
+ // caller's management authority are indistinguishable from missing grants.
283
+ if (!definitions.getById(current.definitionId) || !canManage(current.definitionId)) {
284
+ return null
285
+ }
286
+ try {
287
+ const revoked = await storage.revoke({
288
+ projectId: runtime.projectId,
289
+ id: grantId,
290
+ revokedAt: new Date(),
291
+ revokedBy: actor,
292
+ })
293
+ return revoked ? publicGrant(revoked) : null
294
+ } catch (error) {
295
+ throw storageFailure("revoke", error)
296
+ }
297
+ },
298
+ }
299
+ }
300
+
301
+ function definitionIdFromReference(value: unknown): unknown {
302
+ return typeof value === "object" && value !== null
303
+ ? (value as { readonly id?: unknown }).id
304
+ : undefined
305
+ }
306
+
307
+ function assertInputObject(value: unknown, label: string): asserts value is object {
308
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
309
+ throw new ShareError("invalid_input", `[Sixb] ${label} must be an object.`)
310
+ }
311
+ }
312
+
313
+ function resolveDefinition(
314
+ definitions: DefinitionCatalog<ShareDefinition>,
315
+ definitionId: unknown
316
+ ): ShareDefinition {
317
+ const id = validDefinitionId(definitionId)
318
+ const definition = definitions.getById(id)
319
+ if (!definition) {
320
+ throw new ShareError("not_found", `[Sixb] Unknown Share definition '${id}'.`)
321
+ }
322
+ return definition
323
+ }
324
+
325
+ function validDefinitionId(value: unknown): string {
326
+ if (typeof value !== "string" || !value.trim()) {
327
+ throw new ShareError("invalid_input", "[Sixb] Share definition id must not be empty.")
328
+ }
329
+ return value
330
+ }
331
+
332
+ function assertCanManage(runtime: SixbRuntimeContext, shareId: string): void {
333
+ assertAuthorized(runtime, { kind: "share.manage", shareId })
334
+ }
335
+
336
+ function requireShareStorage(runtime: SixbRuntimeContext) {
337
+ const storage = runtime.storage.shareGrants
338
+ if (!storage) {
339
+ throw new ShareError(
340
+ "storage_unavailable",
341
+ "[Sixb] Share grant storage is not configured on this runtime."
342
+ )
343
+ }
344
+ return storage
345
+ }
346
+
347
+ function exactTarget(definition: ShareDefinition, value: unknown): ObjectRef {
348
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
349
+ throw new ShareError("invalid_input", "[Sixb] Share target must be an exact object reference.")
350
+ }
351
+ const objectTypeId = (value as { readonly objectTypeId?: unknown }).objectTypeId
352
+ const primaryId = (value as { readonly primaryId?: unknown }).primaryId
353
+ if (typeof objectTypeId !== "string" || typeof primaryId !== "string" || !primaryId.trim()) {
354
+ throw new ShareError("invalid_input", "[Sixb] Share target must be an exact object reference.")
355
+ }
356
+ if (objectTypeId !== definition.target.objectTypeId) {
357
+ throw new ShareError(
358
+ "invalid_input",
359
+ `[Sixb] Share '${definition.id}' targets '${definition.target.objectTypeId}', not '${objectTypeId}'.`
360
+ )
361
+ }
362
+ return Object.freeze({ objectTypeId, primaryId })
363
+ }
364
+
365
+ function validFutureDate(value: unknown, now: Date): Date {
366
+ if (!(value instanceof Date) || !Number.isFinite(value.getTime()) || value <= now) {
367
+ throw new ShareError(
368
+ "invalid_input",
369
+ "[Sixb] Shared access expiry must be a valid future date."
370
+ )
371
+ }
372
+ return new Date(value)
373
+ }
374
+
375
+ function sha256(value: string): string {
376
+ return createHash("sha256").update(value).digest("hex")
377
+ }
378
+
379
+ function publicGrant(record: ShareGrantRecord): SharedAccessGrant {
380
+ const {
381
+ projectId: _projectId,
382
+ authoritySnapshot: _authoritySnapshot,
383
+ authorityDigest: _authorityDigest,
384
+ tokenHash: _tokenHash,
385
+ ...grant
386
+ } = record
387
+ return structuredClone(grant)
388
+ }
389
+
390
+ function storageFailure(operation: string, cause?: unknown): ShareError {
391
+ return new ShareError("storage_failure", `[Sixb] Share grant storage failed to ${operation}.`, {
392
+ cause,
393
+ })
394
+ }
@@ -0,0 +1,28 @@
1
+ export { defineShare, isShareDefinition } from "./builders"
2
+ export type { CompileShareAccessPlanInput } from "./compiler"
3
+ export { compileShareAccessPlan } from "./compiler"
4
+ export { ShareDefinitionError } from "./errors"
5
+ export type {
6
+ IssueSharedAccessByIdInput,
7
+ IssueSharedAccessInput,
8
+ ListSharedAccessByIdInput,
9
+ ListSharedAccessInput,
10
+ SharedAccessGrant,
11
+ SharedAccessGrantListResult,
12
+ SharedAccessInvitation,
13
+ ShareErrorReason,
14
+ SharesRuntime,
15
+ } from "./execution"
16
+ export { ShareError } from "./execution"
17
+ export { intersectShareAccessPlans } from "./intersection"
18
+ export type {
19
+ DefineShareOptions,
20
+ ShareActionGrant,
21
+ ShareActionGrantBuilder,
22
+ ShareDefinition,
23
+ ShareScopeGrant,
24
+ ShareTarget,
25
+ ShareViewGrant,
26
+ ShareViewGrantBuilder,
27
+ } from "./types"
28
+ export { assertShareDefinitionEnvelope, validateSharesAtStartup } from "./validation"
@@ -0,0 +1,9 @@
1
+ export type {
2
+ SharedSessionContext,
3
+ SharedSessionCredential,
4
+ SharedSessionProtocolOptions,
5
+ } from "./session-protocol"
6
+ export {
7
+ DEFAULT_SHARED_SESSION_INACTIVITY_TTL_MS,
8
+ SharedSessionProtocol,
9
+ } from "./session-protocol"
@@ -0,0 +1,178 @@
1
+ import type { ObjectRef } from "../ontology"
2
+ import type {
3
+ ObjectReadLinkDefinitionSelection,
4
+ ObjectReadLinkSelection,
5
+ ObjectReadNode,
6
+ ObjectReadObjectSelection,
7
+ ObjectReadRoot,
8
+ } from "../storage/objects/types"
9
+ import { type ShareAccessPlan, snapshotShareAccessPlan } from "./access-plan"
10
+
11
+ /**
12
+ * Narrow an issued snapshot by the Share definition registered now.
13
+ *
14
+ * Intersection is recursive and id-based. Anything added to the definition or ontology after
15
+ * issuance is absent from `issued` and therefore cannot appear in the effective plan.
16
+ */
17
+ export function intersectShareAccessPlans(
18
+ issued: ShareAccessPlan,
19
+ current: ShareAccessPlan
20
+ ): ShareAccessPlan {
21
+ const issuedSnapshot = snapshotShareAccessPlan(issued)
22
+ const currentSnapshot = snapshotShareAccessPlan(current)
23
+ const grants: ShareAccessPlan["grants"][number][] = []
24
+
25
+ const issuedRoots = viewRoots(issuedSnapshot)
26
+ const currentRoots = viewRoots(currentSnapshot)
27
+ const roots: ObjectReadRoot[] = []
28
+ for (const issuedRoot of issuedRoots) {
29
+ for (const currentRoot of currentRoots) {
30
+ if (!refsEqual(issuedRoot.anchor, currentRoot.anchor)) continue
31
+ const node = intersectNodes(issuedRoot.node, currentRoot.node)
32
+ if (node.objects.length === 0) continue
33
+ roots.push({ anchor: { ...issuedRoot.anchor }, node })
34
+ }
35
+ }
36
+ if (roots.length > 0) {
37
+ grants.push({ kind: "object.view", selection: { kind: "selected", roots } })
38
+ }
39
+
40
+ for (const issuedGrant of issuedSnapshot.grants) {
41
+ if (issuedGrant.kind !== "action.apply") continue
42
+ const subjects = issuedGrant.subjects.filter((subject) =>
43
+ currentSnapshot.grants.some(
44
+ (currentGrant) =>
45
+ currentGrant.kind === "action.apply" &&
46
+ currentGrant.actionId === issuedGrant.actionId &&
47
+ currentGrant.subjects.some((currentSubject) => refsEqual(subject, currentSubject))
48
+ )
49
+ )
50
+ if (subjects.length > 0) {
51
+ grants.push({
52
+ kind: "action.apply",
53
+ actionId: issuedGrant.actionId,
54
+ subjects: subjects.map((subject) => ({ ...subject })),
55
+ })
56
+ }
57
+ }
58
+
59
+ return snapshotShareAccessPlan({ grants })
60
+ }
61
+
62
+ function viewRoots(plan: ShareAccessPlan): readonly ObjectReadRoot[] {
63
+ return plan.grants.flatMap((grant) =>
64
+ grant.kind === "object.view" ? [...grant.selection.roots] : []
65
+ )
66
+ }
67
+
68
+ function intersectNodes(issued: ObjectReadNode, current: ObjectReadNode): ObjectReadNode {
69
+ const objects: ObjectReadObjectSelection[] = []
70
+ for (const issuedObject of issued.objects) {
71
+ const currentObject = current.objects.find(
72
+ (candidate) => candidate.objectTypeId === issuedObject.objectTypeId
73
+ )
74
+ if (!currentObject) continue
75
+ objects.push({
76
+ objectTypeId: issuedObject.objectTypeId,
77
+ propertyIds: intersectStrings(issuedObject.propertyIds, currentObject.propertyIds),
78
+ })
79
+ }
80
+ const allowedSourceIds = new Set(objects.map((object) => object.objectTypeId))
81
+ const links: ObjectReadLinkSelection[] = []
82
+ for (const issuedLink of issued.links) {
83
+ for (const currentLink of current.links) {
84
+ const link = intersectLinkSelections(issuedLink, currentLink, allowedSourceIds)
85
+ if (link) links.push(link)
86
+ }
87
+ }
88
+ return {
89
+ objects: objects.sort((a, b) => a.objectTypeId.localeCompare(b.objectTypeId)),
90
+ links,
91
+ }
92
+ }
93
+
94
+ function intersectLinkSelections(
95
+ issued: ObjectReadLinkSelection,
96
+ current: ObjectReadLinkSelection,
97
+ allowedSourceIds: ReadonlySet<string>
98
+ ): ObjectReadLinkSelection | null {
99
+ const definitions: ObjectReadLinkDefinitionSelection[] = []
100
+ const allowedTargetIds = new Set<string>()
101
+ for (const issuedDefinition of issued.definitions) {
102
+ if (!allowedSourceIds.has(issuedDefinition.sourceObjectTypeId)) continue
103
+ for (const currentDefinition of current.definitions) {
104
+ if (
105
+ currentDefinition.sourceObjectTypeId !== issuedDefinition.sourceObjectTypeId ||
106
+ currentDefinition.linkId !== issuedDefinition.linkId
107
+ ) {
108
+ continue
109
+ }
110
+ const targetObjectTypeIds = intersectStrings(
111
+ issuedDefinition.targetObjectTypeIds,
112
+ currentDefinition.targetObjectTypeIds
113
+ )
114
+ if (targetObjectTypeIds.length === 0) continue
115
+ for (const id of targetObjectTypeIds) allowedTargetIds.add(id)
116
+ definitions.push({
117
+ sourceObjectTypeId: issuedDefinition.sourceObjectTypeId,
118
+ linkId: issuedDefinition.linkId,
119
+ targetObjectTypeIds,
120
+ propertyIds: intersectStrings(issuedDefinition.propertyIds, currentDefinition.propertyIds),
121
+ })
122
+ }
123
+ }
124
+ if (definitions.length === 0) return null
125
+
126
+ const intersectedTarget = intersectNodes(issued.target, current.target)
127
+ const target = restrictNodeToTypes(intersectedTarget, allowedTargetIds)
128
+ if (target.objects.length === 0) return null
129
+ const visibleTargetIds = new Set(target.objects.map((object) => object.objectTypeId))
130
+ const visibleDefinitions = definitions
131
+ .map((definition) => ({
132
+ ...definition,
133
+ targetObjectTypeIds: definition.targetObjectTypeIds.filter((id) => visibleTargetIds.has(id)),
134
+ }))
135
+ .filter((definition) => definition.targetObjectTypeIds.length > 0)
136
+ if (visibleDefinitions.length === 0) return null
137
+ return { definitions: visibleDefinitions, target }
138
+ }
139
+
140
+ function restrictNodeToTypes(
141
+ node: ObjectReadNode,
142
+ allowedIds: ReadonlySet<string>
143
+ ): ObjectReadNode {
144
+ const objects = node.objects.filter((object) => allowedIds.has(object.objectTypeId))
145
+ const sourceIds = new Set(objects.map((object) => object.objectTypeId))
146
+ const links: ObjectReadLinkSelection[] = []
147
+ for (const link of node.links) {
148
+ const definitions = link.definitions.filter((definition) =>
149
+ sourceIds.has(definition.sourceObjectTypeId)
150
+ )
151
+ if (definitions.length === 0) continue
152
+ const targetIds = new Set(definitions.flatMap((definition) => definition.targetObjectTypeIds))
153
+ const target = restrictNodeToTypes(link.target, targetIds)
154
+ if (target.objects.length === 0) continue
155
+ const visibleTargetIds = new Set(target.objects.map((object) => object.objectTypeId))
156
+ const visibleDefinitions = definitions
157
+ .map((definition) => ({
158
+ ...definition,
159
+ targetObjectTypeIds: definition.targetObjectTypeIds.filter((id) =>
160
+ visibleTargetIds.has(id)
161
+ ),
162
+ }))
163
+ .filter((definition) => definition.targetObjectTypeIds.length > 0)
164
+ if (visibleDefinitions.length > 0) links.push({ definitions: visibleDefinitions, target })
165
+ }
166
+ return { objects, links }
167
+ }
168
+
169
+ function intersectStrings(left: readonly string[], right: readonly string[]): string[] {
170
+ const rightSet = new Set(right)
171
+ return [...new Set(left.filter((value) => rightSet.has(value)))].sort((a, b) =>
172
+ a.localeCompare(b)
173
+ )
174
+ }
175
+
176
+ function refsEqual(left: ObjectRef, right: ObjectRef): boolean {
177
+ return left.objectTypeId === right.objectTypeId && left.primaryId === right.primaryId
178
+ }