@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,347 @@
1
+ import { createHash } from "node:crypto"
2
+ import type { Principal } from "../../auth"
3
+ import type { AuthorizablePrincipal } from "../../execution/types"
4
+ import { stableJsonStringify } from "../../json"
5
+ import type { ObjectRef } from "../../ontology"
6
+ import { snapshotShareAccessPlan } from "../../shares/access-plan"
7
+ import { ShareGrantStorageError } from "./errors"
8
+ import type {
9
+ CreateShareGrantInput,
10
+ GetShareGrantByIdInput,
11
+ ListShareGrantsInput,
12
+ NormalizedListShareGrantsInput,
13
+ RevokeShareGrantInput,
14
+ ShareAuthoritySnapshot,
15
+ ShareGrantRecord,
16
+ } from "./types"
17
+
18
+ const DEFAULT_LIST_LIMIT = 50
19
+ const MAX_LIST_LIMIT = 200
20
+ const MAX_DESTINATION_PATH_LENGTH = 4_096
21
+ const SHA256_HEX = /^[0-9a-f]{64}$/
22
+ const SHARED_APP_PATH_PREFIX = "/shared"
23
+
24
+ /** Normalize, detach, and derive every persisted field owned by Share grant storage. */
25
+ export function normalizeShareGrantCreate(input: CreateShareGrantInput): ShareGrantRecord {
26
+ if (!isRecord(input)) throw invalidInput("Share grant create input must be an object.")
27
+ const projectId = identifier(input.projectId, "Project id")
28
+ const id = identifier(input.id, "Share grant id")
29
+ const definitionId = identifier(input.definitionId, "Share definition id")
30
+ const target = normalizeObjectRef(input.target, "Share target")
31
+ const issuedBy = normalizeAuthorizablePrincipal(input.issuedBy, "Share issuer")
32
+ const authoritySnapshot = normalizeAuthoritySnapshot(input.authoritySnapshot, target)
33
+ const tokenHash = sha256(input.tokenHash, "Share token hash")
34
+ const destinationPath = normalizeDestinationPath(input.destinationPath)
35
+ const createdAt = inputDate(input.createdAt, "Share creation time")
36
+ const expiresAt = inputDate(input.expiresAt, "Share expiry time")
37
+
38
+ if (expiresAt.getTime() <= createdAt.getTime()) {
39
+ throw invalidInput("Share expiry time must be later than creation time.")
40
+ }
41
+
42
+ return {
43
+ id,
44
+ projectId,
45
+ definitionId,
46
+ target,
47
+ issuedBy,
48
+ authoritySnapshot,
49
+ authorityDigest: shareAuthorityDigest(authoritySnapshot),
50
+ tokenHash,
51
+ destinationPath,
52
+ createdAt,
53
+ expiresAt,
54
+ }
55
+ }
56
+
57
+ /** Parse a provider row and reject unknown/corrupt durable authority instead of widening it. */
58
+ export function parseShareGrantRecord(input: unknown): ShareGrantRecord {
59
+ if (!isRecord(input)) throw invalidRecord("Share grant row must be an object.")
60
+
61
+ try {
62
+ const projectId = identifier(input.projectId, "Project id")
63
+ const id = identifier(input.id, "Share grant id")
64
+ const definitionId = identifier(input.definitionId, "Share definition id")
65
+ const target = normalizeObjectRef(input.target, "Share target")
66
+ const issuedBy = normalizeAuthorizablePrincipal(input.issuedBy, "Share issuer")
67
+ const authoritySnapshot = normalizeAuthoritySnapshot(input.authoritySnapshot, target)
68
+ const authorityDigest = sha256(input.authorityDigest, "Share authority digest")
69
+ const expectedDigest = shareAuthorityDigest(authoritySnapshot)
70
+ if (authorityDigest !== expectedDigest) {
71
+ throw invalidRecord("Share authority digest does not match its snapshot.")
72
+ }
73
+ const tokenHash = sha256(input.tokenHash, "Share token hash")
74
+ const destinationPath = normalizeDestinationPath(input.destinationPath)
75
+ const createdAt = storedDate(input.createdAt, "Share creation time")
76
+ const expiresAt = storedDate(input.expiresAt, "Share expiry time")
77
+ if (expiresAt.getTime() <= createdAt.getTime()) {
78
+ throw invalidRecord("Share expiry time must be later than creation time.")
79
+ }
80
+
81
+ const revokedAtValue = input.revokedAt
82
+ const revokedByValue = input.revokedBy
83
+ if ((revokedAtValue === undefined) !== (revokedByValue === undefined)) {
84
+ throw invalidRecord("Share revocation time and actor must be stored together.")
85
+ }
86
+ if (revokedAtValue === null || revokedByValue === null) {
87
+ throw invalidRecord("Share revocation fields must be omitted rather than null.")
88
+ }
89
+
90
+ const revokedAt =
91
+ revokedAtValue === undefined ? undefined : storedDate(revokedAtValue, "Share revocation time")
92
+ const revokedBy =
93
+ revokedByValue === undefined
94
+ ? undefined
95
+ : normalizePrincipal(revokedByValue, "Share revocation actor")
96
+ if (revokedAt && revokedAt.getTime() < createdAt.getTime()) {
97
+ throw invalidRecord("Share revocation time must not precede creation time.")
98
+ }
99
+
100
+ return {
101
+ id,
102
+ projectId,
103
+ definitionId,
104
+ target,
105
+ issuedBy,
106
+ authoritySnapshot,
107
+ authorityDigest,
108
+ tokenHash,
109
+ destinationPath,
110
+ createdAt,
111
+ expiresAt,
112
+ ...(revokedAt === undefined ? {} : { revokedAt }),
113
+ ...(revokedBy === undefined ? {} : { revokedBy }),
114
+ }
115
+ } catch (error) {
116
+ if (error instanceof ShareGrantStorageError) {
117
+ if (error.code === "invalid_record") throw error
118
+ throw invalidRecord(error.message.replace(/^\[Sixb\] /, ""), error)
119
+ }
120
+ throw error
121
+ }
122
+ }
123
+
124
+ export function normalizeGetShareGrantByIdInput(
125
+ input: GetShareGrantByIdInput
126
+ ): GetShareGrantByIdInput {
127
+ if (!isRecord(input)) throw invalidInput("Share grant lookup input must be an object.")
128
+ return {
129
+ projectId: identifier(input.projectId, "Project id"),
130
+ id: identifier(input.id, "Share grant id"),
131
+ }
132
+ }
133
+
134
+ export function normalizeListShareGrantsInput(
135
+ input: ListShareGrantsInput
136
+ ): NormalizedListShareGrantsInput {
137
+ if (!isRecord(input)) throw invalidInput("Share grant list input must be an object.")
138
+ const projectId = identifier(input.projectId, "Project id")
139
+ const definitionId =
140
+ input.definitionId === undefined
141
+ ? undefined
142
+ : identifier(input.definitionId, "Share definition id")
143
+ const target =
144
+ input.target === undefined ? undefined : normalizeObjectRef(input.target, "Share target")
145
+ const includeRevoked = optionalBoolean(input.includeRevoked, "includeRevoked")
146
+ const includeExpired = optionalBoolean(input.includeExpired, "includeExpired")
147
+ const now = inputDate(input.now, "Share grant list time")
148
+ const limit = safeInteger(input.limit ?? DEFAULT_LIST_LIMIT, "Share grant list limit", 1)
149
+ const offset = safeInteger(input.offset ?? 0, "Share grant list offset", 0)
150
+ if (limit > MAX_LIST_LIMIT) {
151
+ throw invalidInput(`Share grant list limit must not exceed ${MAX_LIST_LIMIT}.`)
152
+ }
153
+
154
+ return {
155
+ projectId,
156
+ ...(definitionId === undefined ? {} : { definitionId }),
157
+ ...(target === undefined ? {} : { target }),
158
+ includeRevoked,
159
+ includeExpired,
160
+ now,
161
+ limit,
162
+ offset,
163
+ }
164
+ }
165
+
166
+ export function normalizeRevokeShareGrantInput(
167
+ input: RevokeShareGrantInput,
168
+ createdAt?: Date
169
+ ): RevokeShareGrantInput {
170
+ if (!isRecord(input)) throw invalidInput("Share grant revocation input must be an object.")
171
+ const normalized = {
172
+ projectId: identifier(input.projectId, "Project id"),
173
+ id: identifier(input.id, "Share grant id"),
174
+ revokedAt: inputDate(input.revokedAt, "Share revocation time"),
175
+ revokedBy: normalizePrincipal(input.revokedBy, "Share revocation actor"),
176
+ }
177
+ if (createdAt && normalized.revokedAt.getTime() < createdAt.getTime()) {
178
+ throw invalidInput("Share revocation time must not precede creation time.")
179
+ }
180
+ return normalized
181
+ }
182
+
183
+ export function cloneShareGrantRecord(input: ShareGrantRecord): ShareGrantRecord {
184
+ return structuredClone(input)
185
+ }
186
+
187
+ export function shareAuthorityDigest(snapshot: ShareAuthoritySnapshot): string {
188
+ return createHash("sha256").update(stableJsonStringify(snapshot)).digest("hex")
189
+ }
190
+
191
+ function normalizeAuthoritySnapshot(value: unknown, target: ObjectRef): ShareAuthoritySnapshot {
192
+ if (!isRecord(value) || value.version !== 1 || !isRecord(value.access)) {
193
+ throw invalidInput("Share authority snapshot version is unsupported.")
194
+ }
195
+ let access: ShareAuthoritySnapshot["access"]
196
+ try {
197
+ access = snapshotShareAccessPlan(value.access as never)
198
+ } catch (error) {
199
+ if (error instanceof ShareGrantStorageError) throw error
200
+ const reason = error instanceof Error ? error.message.replace(/^\[Sixb\] /, "") : String(error)
201
+ throw invalidInput(`Share authority snapshot is invalid: ${reason}`, error)
202
+ }
203
+ assertAccessTargets(access, target)
204
+ return Object.freeze({ version: 1, access })
205
+ }
206
+
207
+ function assertAccessTargets(access: ShareAuthoritySnapshot["access"], target: ObjectRef): void {
208
+ for (const grant of access.grants) {
209
+ if (grant.kind === "object.view") {
210
+ for (const root of grant.selection.roots) {
211
+ if (!sameObjectRef(root.anchor, target)) {
212
+ throw invalidInput("Every Share view root must match the exact Share target.")
213
+ }
214
+ }
215
+ continue
216
+ }
217
+ for (const subject of grant.subjects) {
218
+ if (!sameObjectRef(subject, target)) {
219
+ throw invalidInput("Every shared Action subject must match the exact Share target.")
220
+ }
221
+ }
222
+ }
223
+ }
224
+
225
+ function sameObjectRef(left: ObjectRef, right: ObjectRef): boolean {
226
+ return left.objectTypeId === right.objectTypeId && left.primaryId === right.primaryId
227
+ }
228
+
229
+ function normalizeObjectRef(value: unknown, label: string): ObjectRef {
230
+ if (!isRecord(value)) throw invalidInput(`${label} must be an exact object reference.`)
231
+ return Object.freeze({
232
+ objectTypeId: identifier(value.objectTypeId, `${label} object type id`),
233
+ primaryId: identifier(value.primaryId, `${label} primary id`),
234
+ })
235
+ }
236
+
237
+ function normalizeAuthorizablePrincipal(value: unknown, label: string): AuthorizablePrincipal {
238
+ const principal = normalizePrincipal(value, label)
239
+ if (principal.type === "system") {
240
+ throw invalidInput(`${label} must be a user or service account.`)
241
+ }
242
+ return principal
243
+ }
244
+
245
+ function normalizePrincipal(value: unknown, label: string): Principal {
246
+ if (!isRecord(value)) throw invalidInput(`${label} must be a principal.`)
247
+ if (value.type !== "user" && value.type !== "serviceAccount" && value.type !== "system") {
248
+ throw invalidInput(`${label} has an unsupported type.`)
249
+ }
250
+ return Object.freeze({ type: value.type, id: identifier(value.id, `${label} id`) })
251
+ }
252
+
253
+ function normalizeDestinationPath(value: unknown): string {
254
+ if (typeof value !== "string" || value.length === 0) {
255
+ throw invalidInput("Share destination path must not be empty.")
256
+ }
257
+ if (value.length > MAX_DESTINATION_PATH_LENGTH) {
258
+ throw invalidInput(
259
+ `Share destination path must not exceed ${MAX_DESTINATION_PATH_LENGTH} characters.`
260
+ )
261
+ }
262
+ if (
263
+ !value.startsWith("/") ||
264
+ value.includes("//") ||
265
+ value.includes("?") ||
266
+ value.includes("#") ||
267
+ value.includes("\\") ||
268
+ value.includes("\0")
269
+ ) {
270
+ throw invalidInput(
271
+ "Share destination path must be an absolute same-origin pathname without query or fragment."
272
+ )
273
+ }
274
+ const normalized = new URL(value, "https://sixb.invalid").pathname
275
+ if (normalized !== value) {
276
+ throw invalidInput("Share destination path must already be canonical.")
277
+ }
278
+ let decoded: string
279
+ try {
280
+ decoded = decodeURIComponent(value).replaceAll("\\", "/")
281
+ } catch {
282
+ throw invalidInput("Share destination path must contain valid percent-encoding.")
283
+ }
284
+ if (decoded === SHARED_APP_PATH_PREFIX || decoded.startsWith(`${SHARED_APP_PATH_PREFIX}/`)) {
285
+ throw invalidInput(
286
+ "Share destination path must not use the framework-owned '/shared' namespace."
287
+ )
288
+ }
289
+ return value
290
+ }
291
+
292
+ function identifier(value: unknown, label: string): string {
293
+ if (typeof value !== "string" || value.trim().length === 0 || value.includes("\0")) {
294
+ throw invalidInput(`${label} must be a non-empty string without NUL bytes.`)
295
+ }
296
+ return value
297
+ }
298
+
299
+ function sha256(value: unknown, label: string): string {
300
+ if (typeof value !== "string" || !SHA256_HEX.test(value)) {
301
+ throw invalidInput(`${label} must be a lowercase SHA-256 hex digest.`)
302
+ }
303
+ return value
304
+ }
305
+
306
+ function inputDate(value: unknown, label: string): Date {
307
+ if (!(value instanceof Date) || !Number.isFinite(value.getTime())) {
308
+ throw invalidInput(`${label} must be a valid Date.`)
309
+ }
310
+ return new Date(value)
311
+ }
312
+
313
+ function storedDate(value: unknown, label: string): Date {
314
+ const parsed =
315
+ value instanceof Date
316
+ ? new Date(value)
317
+ : typeof value === "string"
318
+ ? new Date(value)
319
+ : new Date(Number.NaN)
320
+ if (!Number.isFinite(parsed.getTime())) throw invalidRecord(`${label} is invalid.`)
321
+ return parsed
322
+ }
323
+
324
+ function optionalBoolean(value: unknown, label: string): boolean {
325
+ if (value === undefined) return false
326
+ if (typeof value !== "boolean") throw invalidInput(`${label} must be a boolean.`)
327
+ return value
328
+ }
329
+
330
+ function safeInteger(value: unknown, label: string, minimum: number): number {
331
+ if (!Number.isSafeInteger(value) || (value as number) < minimum) {
332
+ throw invalidInput(`${label} must be a safe integer greater than or equal to ${minimum}.`)
333
+ }
334
+ return value as number
335
+ }
336
+
337
+ function isRecord(value: unknown): value is Record<string, unknown> {
338
+ return typeof value === "object" && value !== null && !Array.isArray(value)
339
+ }
340
+
341
+ function invalidInput(message: string, cause?: unknown): ShareGrantStorageError {
342
+ return new ShareGrantStorageError("invalid_input", `[Sixb] ${message}`, { cause })
343
+ }
344
+
345
+ function invalidRecord(message: string, cause?: unknown): ShareGrantStorageError {
346
+ return new ShareGrantStorageError("invalid_record", `[Sixb] ${message}`, { cause })
347
+ }
@@ -0,0 +1,112 @@
1
+ import type { Principal } from "../../auth"
2
+ import type { AuthorizablePrincipal } from "../../execution/types"
3
+ import type { ObjectRef } from "../../ontology"
4
+ import type { ShareAccessPlan } from "../../shares/access-plan"
5
+
6
+ /** First durable encoding of the exact authority captured when a Share is issued. */
7
+ export interface ShareAuthoritySnapshotV1 {
8
+ readonly version: 1
9
+ readonly access: ShareAccessPlan
10
+ }
11
+
12
+ /** Versioned so persisted grants can fail closed when a future encoding is introduced. */
13
+ export type ShareAuthoritySnapshot = ShareAuthoritySnapshotV1
14
+
15
+ /** Durable audit and authority record for one issued Share link. */
16
+ export interface ShareGrantRecord {
17
+ readonly id: string
18
+ readonly projectId: string
19
+ readonly definitionId: string
20
+ readonly target: ObjectRef
21
+ /** Audit attribution only. The issuer never contributes ambient authority to the Share. */
22
+ readonly issuedBy: AuthorizablePrincipal
23
+ readonly authoritySnapshot: ShareAuthoritySnapshot
24
+ /** SHA-256 of the canonical authority snapshot. */
25
+ readonly authorityDigest: string
26
+ /** SHA-256 of the one-time link secret. The plaintext secret is never durable. */
27
+ readonly tokenHash: string
28
+ readonly destinationPath: string
29
+ readonly createdAt: Date
30
+ readonly expiresAt: Date
31
+ readonly revokedAt?: Date
32
+ readonly revokedBy?: Principal
33
+ }
34
+
35
+ /** Create input omits fields derived by storage or written only by revocation. */
36
+ export type CreateShareGrantInput = Omit<
37
+ ShareGrantRecord,
38
+ "authorityDigest" | "revokedAt" | "revokedBy"
39
+ >
40
+
41
+ export interface GetShareGrantByIdInput {
42
+ readonly projectId: string
43
+ readonly id: string
44
+ }
45
+
46
+ export interface ListShareGrantsInput {
47
+ readonly projectId: string
48
+ readonly definitionId?: string
49
+ readonly target?: ObjectRef
50
+ readonly includeRevoked?: boolean
51
+ readonly includeExpired?: boolean
52
+ /** Explicit clock keeps expiry semantics deterministic across providers. */
53
+ readonly now: Date
54
+ readonly limit?: number
55
+ readonly offset?: number
56
+ }
57
+
58
+ export interface NormalizedListShareGrantsInput {
59
+ readonly projectId: string
60
+ readonly definitionId?: string
61
+ readonly target?: ObjectRef
62
+ readonly includeRevoked: boolean
63
+ readonly includeExpired: boolean
64
+ readonly now: Date
65
+ readonly limit: number
66
+ readonly offset: number
67
+ }
68
+
69
+ export interface ListShareGrantsResult {
70
+ readonly grants: readonly ShareGrantRecord[]
71
+ /** Matching rows before offset/limit are applied. */
72
+ readonly total: number
73
+ /** True when at least one matching row remains after this page. */
74
+ readonly hasMore: boolean
75
+ }
76
+
77
+ export interface RevokeShareGrantInput {
78
+ readonly projectId: string
79
+ readonly id: string
80
+ readonly revokedAt: Date
81
+ readonly revokedBy: Principal
82
+ }
83
+
84
+ /**
85
+ * Persistence only. Secret generation, verification, and current-definition intersection are
86
+ * Core. Every returned record must be detached from provider state; deeply immutable records also
87
+ * satisfy that isolation contract.
88
+ */
89
+ export interface ShareGrantStorage {
90
+ /**
91
+ * Persist a normalized grant, deriving `authorityDigest`. The `(projectId, id)` and
92
+ * `(projectId, tokenHash)` pairs must both be unique; either collision reports `duplicate`.
93
+ */
94
+ create(input: CreateShareGrantInput): Promise<ShareGrantRecord>
95
+
96
+ /** Load one project-scoped grant, including expired or revoked grants, or return null. */
97
+ getById(input: GetShareGrantByIdInput): Promise<ShareGrantRecord | null>
98
+
99
+ /**
100
+ * List in deterministic `createdAt DESC, id DESC` order. Expired and revoked rows are excluded
101
+ * unless requested; `total` is computed after filtering and before pagination. A root call may
102
+ * be weakly consistent with concurrent writes; callers that need one snapshot use
103
+ * `Storage.transaction`.
104
+ */
105
+ list(input: ListShareGrantsInput): Promise<ListShareGrantsResult>
106
+
107
+ /**
108
+ * Atomically preserve the first revocation. Repeating a revocation returns that first record;
109
+ * a missing grant returns null.
110
+ */
111
+ revoke(input: RevokeShareGrantInput): Promise<ShareGrantRecord | null>
112
+ }
@@ -0,0 +1,14 @@
1
+ export type ShareSessionStorageErrorCode = "duplicate" | "invalid_input" | "invalid_record"
2
+
3
+ /** Provider-level control signal for durable Share session persistence. */
4
+ export class ShareSessionStorageError extends Error {
5
+ readonly name = "ShareSessionStorageError"
6
+
7
+ constructor(
8
+ readonly code: ShareSessionStorageErrorCode,
9
+ message: string,
10
+ options?: ErrorOptions
11
+ ) {
12
+ super(message, options)
13
+ }
14
+ }
@@ -0,0 +1,105 @@
1
+ import type { ShareGrantStorage } from "../share-grants"
2
+ import { ShareSessionStorageError } from "./errors"
3
+ import {
4
+ cloneShareSessionRecord,
5
+ normalizeGetShareSessionByIdInput,
6
+ normalizeRenewShareSessionIfValidInput,
7
+ normalizeRevokeShareSessionInput,
8
+ normalizeShareSessionCreate,
9
+ parseShareSessionRecord,
10
+ } from "./record"
11
+ import type {
12
+ CreateShareSessionInput,
13
+ GetShareSessionByIdInput,
14
+ RenewShareSessionIfValidInput,
15
+ RevokeShareSessionInput,
16
+ ShareSessionRecord,
17
+ ShareSessionStorage,
18
+ } from "./types"
19
+
20
+ export class InMemoryShareSessionStorage implements ShareSessionStorage {
21
+ private rows = new Map<string, ShareSessionRecord>()
22
+
23
+ constructor(private readonly grants: Pick<ShareGrantStorage, "getById">) {}
24
+
25
+ async create(input: CreateShareSessionInput): Promise<ShareSessionRecord> {
26
+ const record = normalizeShareSessionCreate(input)
27
+ const grant = await this.grants.getById({ projectId: record.projectId, id: record.grantId })
28
+ if (!grant) {
29
+ throw new ShareSessionStorageError(
30
+ "invalid_input",
31
+ `[Sixb] Share grant '${record.grantId}' does not exist in project '${record.projectId}'.`
32
+ )
33
+ }
34
+ const key = rowKey(record.projectId, record.id)
35
+ const duplicateTokenHash = [...this.rows.values()].some(
36
+ (current) => current.projectId === record.projectId && current.tokenHash === record.tokenHash
37
+ )
38
+ if (this.rows.has(key) || duplicateTokenHash) {
39
+ throw new ShareSessionStorageError(
40
+ "duplicate",
41
+ `[Sixb] Share session '${record.id}' conflicts with an existing record.`
42
+ )
43
+ }
44
+ this.rows.set(key, record)
45
+ return cloneShareSessionRecord(record)
46
+ }
47
+
48
+ async getById(input: GetShareSessionByIdInput): Promise<ShareSessionRecord | null> {
49
+ const normalized = normalizeGetShareSessionByIdInput(input)
50
+ const record = this.rows.get(rowKey(normalized.projectId, normalized.id))
51
+ return record ? cloneShareSessionRecord(record) : null
52
+ }
53
+
54
+ async renewIfValid(input: RenewShareSessionIfValidInput): Promise<ShareSessionRecord | null> {
55
+ const normalized = normalizeRenewShareSessionIfValidInput(input)
56
+ const key = rowKey(normalized.projectId, normalized.id)
57
+ const current = this.rows.get(key)
58
+ if (
59
+ !current ||
60
+ current.grantId !== normalized.grantId ||
61
+ current.tokenHash !== normalized.tokenHash ||
62
+ current.revokedAt !== undefined ||
63
+ current.createdAt.getTime() > normalized.now.getTime() ||
64
+ current.expiresAt.getTime() <= normalized.now.getTime() ||
65
+ current.absoluteExpiresAt.getTime() <= normalized.now.getTime()
66
+ ) {
67
+ return null
68
+ }
69
+
70
+ const nextExpiry = Math.min(
71
+ current.absoluteExpiresAt.getTime(),
72
+ Math.max(current.expiresAt.getTime(), normalized.expiresAt.getTime())
73
+ )
74
+ const updated = { ...current, expiresAt: new Date(nextExpiry) }
75
+ this.rows.set(key, updated)
76
+ return cloneShareSessionRecord(updated)
77
+ }
78
+
79
+ async revoke(input: RevokeShareSessionInput): Promise<ShareSessionRecord | null> {
80
+ const normalized = normalizeRevokeShareSessionInput(input)
81
+ const key = rowKey(normalized.projectId, normalized.id)
82
+ const current = this.rows.get(key)
83
+ if (!current) return null
84
+ if (current.revokedAt) return cloneShareSessionRecord(current)
85
+
86
+ const revocation = normalizeRevokeShareSessionInput(normalized, current.createdAt)
87
+ const updated = { ...current, revokedAt: new Date(revocation.revokedAt) }
88
+ this.rows.set(key, updated)
89
+ return cloneShareSessionRecord(updated)
90
+ }
91
+
92
+ snapshot(): ReadonlyMap<string, ShareSessionRecord> {
93
+ return new Map([...this.rows].map(([key, record]) => [key, cloneShareSessionRecord(record)]))
94
+ }
95
+
96
+ restore(snapshot: ReadonlyMap<string, ShareSessionRecord>): void {
97
+ this.rows = new Map(
98
+ [...snapshot].map(([key, record]) => [key, parseShareSessionRecord(record)])
99
+ )
100
+ }
101
+ }
102
+
103
+ function rowKey(projectId: string, id: string): string {
104
+ return `${projectId}\0${id}`
105
+ }
@@ -0,0 +1,11 @@
1
+ export type { ShareSessionStorageErrorCode } from "./errors"
2
+ export { ShareSessionStorageError } from "./errors"
3
+ export { InMemoryShareSessionStorage } from "./in-memory"
4
+ export type {
5
+ CreateShareSessionInput,
6
+ GetShareSessionByIdInput,
7
+ RenewShareSessionIfValidInput,
8
+ RevokeShareSessionInput,
9
+ ShareSessionRecord,
10
+ ShareSessionStorage,
11
+ } from "./types"
@@ -0,0 +1,9 @@
1
+ /** @internal Repository storage-provider helpers; not part of the app-author API. */
2
+ export {
3
+ cloneShareSessionRecord,
4
+ normalizeGetShareSessionByIdInput,
5
+ normalizeRenewShareSessionIfValidInput,
6
+ normalizeRevokeShareSessionInput,
7
+ normalizeShareSessionCreate,
8
+ parseShareSessionRecord,
9
+ } from "./record"