@sixb/core 0.1.12 → 0.1.13

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 (527) hide show
  1. package/dist/actions/index.d.ts +2 -2
  2. package/dist/actions/index.d.ts.map +1 -1
  3. package/dist/actions/index.js +28 -26
  4. package/dist/actions/index.js.map +1 -1
  5. package/dist/actions/read-facade.d.ts +14 -16
  6. package/dist/actions/read-facade.d.ts.map +1 -1
  7. package/dist/actions/request.d.ts.map +1 -1
  8. package/dist/actions/run-dispatch.d.ts +2 -0
  9. package/dist/actions/run-dispatch.d.ts.map +1 -1
  10. package/dist/actions/types/context.d.ts +18 -31
  11. package/dist/actions/types/context.d.ts.map +1 -1
  12. package/dist/actions/types/params.d.ts +2 -1
  13. package/dist/actions/types/params.d.ts.map +1 -1
  14. package/dist/actions/worker.js +1 -1
  15. package/dist/agents/index.js +41 -39
  16. package/dist/agents/index.js.map +1 -1
  17. package/dist/agents/streams/index.js +2 -2
  18. package/dist/agents/streams/internal.js +2 -2
  19. package/dist/assert-never.d.ts +6 -0
  20. package/dist/assert-never.d.ts.map +1 -0
  21. package/dist/auth/client-address.d.ts +3 -0
  22. package/dist/auth/client-address.d.ts.map +1 -0
  23. package/dist/auth/csrf.d.ts +5 -1
  24. package/dist/auth/csrf.d.ts.map +1 -1
  25. package/dist/auth/index.d.ts +3 -2
  26. package/dist/auth/index.d.ts.map +1 -1
  27. package/dist/auth/index.js +14 -8
  28. package/dist/auth/index.js.map +1 -1
  29. package/dist/auth/runtime.d.ts +58 -41
  30. package/dist/auth/runtime.d.ts.map +1 -1
  31. package/dist/auth/session-cache.d.ts +10 -3
  32. package/dist/auth/session-cache.d.ts.map +1 -1
  33. package/dist/auth/sessions.d.ts +12 -0
  34. package/dist/auth/sessions.d.ts.map +1 -1
  35. package/dist/auth/strategy.js +1 -1
  36. package/dist/auth/types.d.ts +8 -15
  37. package/dist/auth/types.d.ts.map +1 -1
  38. package/dist/authorization/index.js +3 -3
  39. package/dist/bootstrap/index.d.ts +1 -1
  40. package/dist/bootstrap/index.d.ts.map +1 -1
  41. package/dist/bootstrap/index.js +45 -43
  42. package/dist/bootstrap/index.js.map +1 -1
  43. package/dist/bootstrap/ontology-type-manifest.d.ts +8 -0
  44. package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
  45. package/dist/{chunk-q5gz3g2j.js → chunk-0321g649.js} +2 -16
  46. package/dist/{chunk-q5gz3g2j.js.map → chunk-0321g649.js.map} +2 -2
  47. package/dist/{chunk-e1f1sqba.js → chunk-04h4t2b5.js} +3 -3
  48. package/dist/{chunk-y3ev53cq.js → chunk-2fv8sajb.js} +2 -2
  49. package/dist/{chunk-3bnt2wna.js → chunk-2hbhn1ff.js} +1 -1
  50. package/dist/{chunk-eyjzgav0.js → chunk-3nx8vj5a.js} +6 -4
  51. package/dist/chunk-3nx8vj5a.js.map +12 -0
  52. package/dist/{chunk-5tetw4hn.js → chunk-4tnrzqqh.js} +1 -1
  53. package/dist/{chunk-g50nxqs5.js → chunk-63fp9x3q.js} +63 -20
  54. package/dist/chunk-63fp9x3q.js.map +20 -0
  55. package/dist/{chunk-qm535afa.js → chunk-693f3zn8.js} +66 -24
  56. package/dist/chunk-693f3zn8.js.map +15 -0
  57. package/dist/{chunk-7zgecwy1.js → chunk-6x0pqh32.js} +12 -1
  58. package/dist/{chunk-7zgecwy1.js.map → chunk-6x0pqh32.js.map} +3 -3
  59. package/dist/{chunk-6ma8dvzc.js → chunk-898y24dd.js} +49 -42
  60. package/dist/chunk-898y24dd.js.map +15 -0
  61. package/dist/{chunk-7qnvhtcd.js → chunk-91wthfwe.js} +17 -17
  62. package/dist/{chunk-7qnvhtcd.js.map → chunk-91wthfwe.js.map} +5 -5
  63. package/dist/chunk-96yw3pwd.js.map +2 -2
  64. package/dist/{chunk-2cxv584m.js → chunk-9pfw47qx.js} +309 -204
  65. package/dist/chunk-9pfw47qx.js.map +44 -0
  66. package/dist/{chunk-4k53sm9e.js → chunk-a0073121.js} +59 -59
  67. package/dist/{chunk-4k53sm9e.js.map → chunk-a0073121.js.map} +5 -5
  68. package/dist/{chunk-jjwhy3rs.js → chunk-a69fkrtr.js} +5 -5
  69. package/dist/{chunk-y1ahv8b7.js → chunk-bdhfn0ww.js} +1 -1
  70. package/dist/{chunk-4ph94nhd.js → chunk-bep5rrdq.js} +2 -2
  71. package/dist/{chunk-kept9cdd.js → chunk-bxx3ms5t.js} +1 -1
  72. package/dist/{chunk-xtfryrfb.js → chunk-cbn96bve.js} +2 -2
  73. package/dist/{chunk-nzsy3xrp.js → chunk-cvrbhvtr.js} +69 -44
  74. package/dist/{chunk-nzsy3xrp.js.map → chunk-cvrbhvtr.js.map} +7 -7
  75. package/dist/{chunk-vsg0g7h9.js → chunk-d8yes9yx.js} +304 -45
  76. package/dist/chunk-d8yes9yx.js.map +20 -0
  77. package/dist/{chunk-tg4g4zh0.js → chunk-darm7eeg.js} +9 -9
  78. package/dist/{chunk-tg4g4zh0.js.map → chunk-darm7eeg.js.map} +3 -3
  79. package/dist/{chunk-vpxss818.js → chunk-drz59ve0.js} +9 -8
  80. package/dist/chunk-drz59ve0.js.map +10 -0
  81. package/dist/{chunk-7c2g3sz9.js → chunk-dsfw1bdr.js} +5 -5
  82. package/dist/{chunk-7c2g3sz9.js.map → chunk-dsfw1bdr.js.map} +1 -1
  83. package/dist/{chunk-p6r1ex7t.js → chunk-ffwvdgk1.js} +5 -13
  84. package/dist/chunk-ffwvdgk1.js.map +10 -0
  85. package/dist/{chunk-r5zythxp.js → chunk-gbcrz0gr.js} +7 -7
  86. package/dist/{chunk-ybhz3j9g.js → chunk-gc226ten.js} +104 -148
  87. package/dist/{chunk-ybhz3j9g.js.map → chunk-gc226ten.js.map} +7 -8
  88. package/dist/{chunk-3ghw2t5q.js → chunk-gmt22nxx.js} +10 -16
  89. package/dist/chunk-gmt22nxx.js.map +10 -0
  90. package/dist/chunk-h89wz928.js +42 -0
  91. package/dist/chunk-h89wz928.js.map +10 -0
  92. package/dist/{chunk-hkw8rykk.js → chunk-ht4a7mjg.js} +74 -4
  93. package/dist/chunk-ht4a7mjg.js.map +15 -0
  94. package/dist/{chunk-t7dzd1tm.js → chunk-jhyc777j.js} +2 -2
  95. package/dist/{chunk-xn686q2e.js → chunk-jmwy25mf.js} +75 -57
  96. package/dist/{chunk-xn686q2e.js.map → chunk-jmwy25mf.js.map} +3 -3
  97. package/dist/{chunk-f06sf7rr.js → chunk-k4kkp58d.js} +18 -5
  98. package/dist/chunk-k4kkp58d.js.map +11 -0
  99. package/dist/{chunk-2h63nrde.js → chunk-ky7zpbtt.js} +5 -7
  100. package/dist/{chunk-2h63nrde.js.map → chunk-ky7zpbtt.js.map} +3 -4
  101. package/dist/chunk-m4ehq95f.js +9 -0
  102. package/dist/chunk-m4ehq95f.js.map +10 -0
  103. package/dist/{chunk-0mza4xb2.js → chunk-m8zkvep1.js} +2 -2
  104. package/dist/{chunk-b768c93y.js → chunk-mf6hwpzh.js} +83 -28
  105. package/dist/{chunk-b768c93y.js.map → chunk-mf6hwpzh.js.map} +5 -5
  106. package/dist/{chunk-yxb4c62x.js → chunk-mr60an99.js} +3 -2
  107. package/dist/{chunk-yxb4c62x.js.map → chunk-mr60an99.js.map} +3 -3
  108. package/dist/chunk-n33e8dz8.js +191 -0
  109. package/dist/chunk-n33e8dz8.js.map +11 -0
  110. package/dist/chunk-rdghfsss.js.map +2 -2
  111. package/dist/{chunk-m7cx05vp.js → chunk-rqtdtm43.js} +126 -59
  112. package/dist/{chunk-m7cx05vp.js.map → chunk-rqtdtm43.js.map} +13 -12
  113. package/dist/{chunk-bbaa1fet.js → chunk-rzcjp5m2.js} +7 -3
  114. package/dist/chunk-rzcjp5m2.js.map +25 -0
  115. package/dist/{chunk-hzw7yv5g.js → chunk-rzkr70gr.js} +5 -1
  116. package/dist/{chunk-hzw7yv5g.js.map → chunk-rzkr70gr.js.map} +3 -3
  117. package/dist/{chunk-sfypc7mk.js → chunk-s24qbp32.js} +4 -4
  118. package/dist/{chunk-axndsymr.js → chunk-tw03bsmb.js} +2 -2
  119. package/dist/{chunk-axndsymr.js.map → chunk-tw03bsmb.js.map} +3 -3
  120. package/dist/{chunk-y0v18c2j.js → chunk-vef6qa14.js} +2 -2
  121. package/dist/{chunk-gzt6v1ja.js → chunk-vn3yh259.js} +1 -1
  122. package/dist/{chunk-bg2bs62d.js → chunk-w9bp61e7.js} +5 -5
  123. package/dist/{chunk-3h7ctayx.js → chunk-xgptywp0.js} +4 -3
  124. package/dist/chunk-xgptywp0.js.map +11 -0
  125. package/dist/{chunk-gswwr35f.js → chunk-y487ywrv.js} +4 -4
  126. package/dist/{chunk-bet1rb9h.js → chunk-y6vnvayj.js} +1 -1
  127. package/dist/{chunk-x9tmx3fc.js → chunk-ypj2wqtj.js} +3 -6
  128. package/dist/{chunk-x9tmx3fc.js.map → chunk-ypj2wqtj.js.map} +4 -4
  129. package/dist/{chunk-g2gezsg5.js → chunk-z9h698s8.js} +1 -1
  130. package/dist/{chunk-wjffn5m4.js → chunk-zdkcdshk.js} +3 -36
  131. package/dist/{chunk-wjffn5m4.js.map → chunk-zdkcdshk.js.map} +3 -4
  132. package/dist/{chunk-bfjv1adk.js → chunk-znw0zvy4.js} +1 -1
  133. package/dist/edits/types.d.ts +19 -19
  134. package/dist/edits/types.d.ts.map +1 -1
  135. package/dist/error-reporting/internal.js +3 -3
  136. package/dist/errors/catalog.d.ts +4 -0
  137. package/dist/errors/catalog.d.ts.map +1 -1
  138. package/dist/errors/internal.js +1 -1
  139. package/dist/events/envelope.d.ts +0 -12
  140. package/dist/events/envelope.d.ts.map +1 -1
  141. package/dist/events/index.d.ts +1 -1
  142. package/dist/events/index.d.ts.map +1 -1
  143. package/dist/events/index.js +3 -3
  144. package/dist/events/service.d.ts +1 -2
  145. package/dist/events/service.d.ts.map +1 -1
  146. package/dist/events/toStoredEvent.d.ts +1 -2
  147. package/dist/events/toStoredEvent.d.ts.map +1 -1
  148. package/dist/events/types/index.d.ts +2 -1
  149. package/dist/events/types/index.d.ts.map +1 -1
  150. package/dist/execution/agent.d.ts +1 -2
  151. package/dist/execution/agent.d.ts.map +1 -1
  152. package/dist/execution/agent.js +39 -37
  153. package/dist/execution/agent.js.map +1 -1
  154. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  155. package/dist/execution/primitive.d.ts +1 -2
  156. package/dist/execution/primitive.d.ts.map +1 -1
  157. package/dist/execution/primitive.js +38 -36
  158. package/dist/execution/primitive.js.map +3 -3
  159. package/dist/execution/request.d.ts +1 -2
  160. package/dist/execution/request.d.ts.map +1 -1
  161. package/dist/execution/request.js +39 -37
  162. package/dist/execution/request.js.map +3 -3
  163. package/dist/index.d.ts +6 -6
  164. package/dist/index.d.ts.map +1 -1
  165. package/dist/index.js +56 -50
  166. package/dist/index.js.map +1 -1
  167. package/dist/maintenance/ontology-maintenance.d.ts +11 -1
  168. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  169. package/dist/materialization/errors.d.ts +3 -1
  170. package/dist/materialization/errors.d.ts.map +1 -1
  171. package/dist/materialization/events.d.ts +27 -2
  172. package/dist/materialization/events.d.ts.map +1 -1
  173. package/dist/materializer/edits/commit.d.ts.map +1 -1
  174. package/dist/materializer/edits/operations.d.ts +2 -1
  175. package/dist/materializer/edits/operations.d.ts.map +1 -1
  176. package/dist/materializer/edits/plan.d.ts +2 -2
  177. package/dist/materializer/edits/plan.d.ts.map +1 -1
  178. package/dist/materializer/edits/user-refs.d.ts +30 -0
  179. package/dist/materializer/edits/user-refs.d.ts.map +1 -0
  180. package/dist/materializer/effective/build-events.d.ts +2 -2
  181. package/dist/materializer/effective/build-events.d.ts.map +1 -1
  182. package/dist/materializer/execution/scope.d.ts +11 -3
  183. package/dist/materializer/execution/scope.d.ts.map +1 -1
  184. package/dist/materializer/index.js +23 -21
  185. package/dist/materializer/index.js.map +1 -1
  186. package/dist/materializer/projections/replacement-plan.d.ts +2 -0
  187. package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
  188. package/dist/materializer/telemetry/plan.d.ts +2 -2
  189. package/dist/materializer/telemetry/plan.d.ts.map +1 -1
  190. package/dist/models/execution/index.js +23 -21
  191. package/dist/models/execution/index.js.map +1 -1
  192. package/dist/models/index.js +1 -1
  193. package/dist/objects/execution.d.ts +21 -27
  194. package/dist/objects/execution.d.ts.map +1 -1
  195. package/dist/objects/index.js +28 -26
  196. package/dist/objects/index.js.map +1 -1
  197. package/dist/objects/query/executor.d.ts.map +1 -1
  198. package/dist/objects/query/index.js +27 -25
  199. package/dist/objects/query/index.js.map +1 -1
  200. package/dist/objects/query/ir.d.ts +8 -1
  201. package/dist/objects/query/ir.d.ts.map +1 -1
  202. package/dist/objects/query/scalar-values.d.ts.map +1 -1
  203. package/dist/objects/query/validate.d.ts.map +1 -1
  204. package/dist/objects/sdk/object-handle.d.ts +1 -2
  205. package/dist/objects/sdk/object-handle.d.ts.map +1 -1
  206. package/dist/objects/sdk/object-set.d.ts +2 -3
  207. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  208. package/dist/objects/sdk/query-builder.d.ts +8 -10
  209. package/dist/objects/sdk/query-builder.d.ts.map +1 -1
  210. package/dist/objects/sdk/telemetry-channel.d.ts +1 -2
  211. package/dist/objects/sdk/telemetry-channel.d.ts.map +1 -1
  212. package/dist/objects/sdk/where.d.ts +2 -3
  213. package/dist/objects/sdk/where.d.ts.map +1 -1
  214. package/dist/ontology/builders.d.ts +11 -10
  215. package/dist/ontology/builders.d.ts.map +1 -1
  216. package/dist/ontology/index.d.ts +4 -2
  217. package/dist/ontology/index.d.ts.map +1 -1
  218. package/dist/ontology/index.js +6 -4
  219. package/dist/ontology/index.js.map +1 -1
  220. package/dist/ontology/inference/index.d.ts +34 -22
  221. package/dist/ontology/inference/index.d.ts.map +1 -1
  222. package/dist/ontology/internal.d.ts +1 -0
  223. package/dist/ontology/internal.d.ts.map +1 -1
  224. package/dist/ontology/internal.js +9 -7
  225. package/dist/ontology/internal.js.map +1 -1
  226. package/dist/ontology/primitives.d.ts +38 -0
  227. package/dist/ontology/primitives.d.ts.map +1 -0
  228. package/dist/ontology/query-capabilities.d.ts +38 -0
  229. package/dist/ontology/query-capabilities.d.ts.map +1 -0
  230. package/dist/ontology/refs.d.ts +23 -2
  231. package/dist/ontology/refs.d.ts.map +1 -1
  232. package/dist/ontology/registered.d.ts +16 -0
  233. package/dist/ontology/registered.d.ts.map +1 -0
  234. package/dist/ontology/registry.d.ts.map +1 -1
  235. package/dist/ontology/tokens.d.ts +35 -1
  236. package/dist/ontology/tokens.d.ts.map +1 -1
  237. package/dist/ontology/types.d.ts +18 -4
  238. package/dist/ontology/types.d.ts.map +1 -1
  239. package/dist/ontology/user-ref.d.ts +35 -0
  240. package/dist/ontology/user-ref.d.ts.map +1 -0
  241. package/dist/ontology/validation/definition.d.ts.map +1 -1
  242. package/dist/ontology/validation/index.d.ts +1 -1
  243. package/dist/ontology/validation/index.d.ts.map +1 -1
  244. package/dist/ontology/validation/normalize.d.ts.map +1 -1
  245. package/dist/ontology/validation/properties.d.ts +6 -1
  246. package/dist/ontology/validation/properties.d.ts.map +1 -1
  247. package/dist/ontology/validation/query.d.ts.map +1 -1
  248. package/dist/ontology/validation/schema.d.ts.map +1 -1
  249. package/dist/pipelines/index.js +26 -24
  250. package/dist/pipelines/index.js.map +1 -1
  251. package/dist/predicates/types.d.ts +53 -3
  252. package/dist/predicates/types.d.ts.map +1 -1
  253. package/dist/projections/builders.d.ts +19 -1
  254. package/dist/projections/builders.d.ts.map +1 -1
  255. package/dist/projections/internal.js +23 -21
  256. package/dist/projections/internal.js.map +1 -1
  257. package/dist/projections/validation.d.ts.map +1 -1
  258. package/dist/query.js +2 -2
  259. package/dist/queues/in-memory.d.ts +1 -1
  260. package/dist/queues/in-memory.d.ts.map +1 -1
  261. package/dist/runtime/create.d.ts +1 -1
  262. package/dist/runtime/create.d.ts.map +1 -1
  263. package/dist/runtime/host.d.ts +5 -5
  264. package/dist/runtime/host.d.ts.map +1 -1
  265. package/dist/runtime/index.d.ts +1 -1
  266. package/dist/runtime/index.d.ts.map +1 -1
  267. package/dist/runtime/internal.js +27 -25
  268. package/dist/runtime/internal.js.map +1 -1
  269. package/dist/runtime/sixb.d.ts +5 -5
  270. package/dist/runtime/sixb.d.ts.map +1 -1
  271. package/dist/runtime/types.d.ts +171 -188
  272. package/dist/runtime/types.d.ts.map +1 -1
  273. package/dist/sandboxes/index.js +5 -5
  274. package/dist/sandboxes/sandbox.d.ts +4 -1
  275. package/dist/sandboxes/sandbox.d.ts.map +1 -1
  276. package/dist/shared/params/types.d.ts +4 -3
  277. package/dist/shared/params/types.d.ts.map +1 -1
  278. package/dist/shared/params/user-refs.d.ts +19 -0
  279. package/dist/shared/params/user-refs.d.ts.map +1 -0
  280. package/dist/shares/compiler.d.ts.map +1 -1
  281. package/dist/shares/internal.js +24 -22
  282. package/dist/shares/internal.js.map +2 -2
  283. package/dist/storage/action-runs/failure.js +2 -2
  284. package/dist/storage/action-runs/types.d.ts +1 -1
  285. package/dist/storage/action-runs/types.d.ts.map +1 -1
  286. package/dist/storage/agents/provider.js +1 -1
  287. package/dist/storage/ai-limits/enforcement.js +2 -2
  288. package/dist/storage/auth/in-memory/access-tokens.d.ts.map +1 -1
  289. package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
  290. package/dist/storage/auth/in-memory/device-authorizations.d.ts.map +1 -1
  291. package/dist/storage/auth/in-memory/sessions.d.ts +8 -1
  292. package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -1
  293. package/dist/storage/auth/in-memory/shared.d.ts.map +1 -1
  294. package/dist/storage/auth/index.d.ts +1 -1
  295. package/dist/storage/auth/index.d.ts.map +1 -1
  296. package/dist/storage/auth/types.d.ts +62 -13
  297. package/dist/storage/auth/types.d.ts.map +1 -1
  298. package/dist/storage/connector-connections/provider.js +1 -1
  299. package/dist/storage/executions/provider.js +1 -1
  300. package/dist/storage/file-upload-sessions/in-memory.d.ts +9 -18
  301. package/dist/storage/file-upload-sessions/in-memory.d.ts.map +1 -1
  302. package/dist/storage/file-upload-sessions/index.d.ts +1 -1
  303. package/dist/storage/file-upload-sessions/index.d.ts.map +1 -1
  304. package/dist/storage/file-upload-sessions/provider.d.ts +52 -0
  305. package/dist/storage/file-upload-sessions/provider.d.ts.map +1 -0
  306. package/dist/storage/file-upload-sessions/provider.js +24 -0
  307. package/dist/storage/file-upload-sessions/provider.js.map +9 -0
  308. package/dist/storage/file-upload-sessions/types.d.ts +19 -1
  309. package/dist/storage/file-upload-sessions/types.d.ts.map +1 -1
  310. package/dist/storage/file-upload-sessions/utils.d.ts +8 -2
  311. package/dist/storage/file-upload-sessions/utils.d.ts.map +1 -1
  312. package/dist/storage/index.d.ts +3 -3
  313. package/dist/storage/index.d.ts.map +1 -1
  314. package/dist/storage/index.js +29 -25
  315. package/dist/storage/index.js.map +1 -1
  316. package/dist/storage/internal.js +11 -9
  317. package/dist/storage/internal.js.map +1 -1
  318. package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
  319. package/dist/storage/ontology/commits.d.ts +6 -2
  320. package/dist/storage/ontology/commits.d.ts.map +1 -1
  321. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  322. package/dist/storage/ontology/provider-work.d.ts.map +1 -1
  323. package/dist/storage/ontology/provider.d.ts +14 -1
  324. package/dist/storage/ontology/provider.d.ts.map +1 -1
  325. package/dist/storage/ontology/provider.js +8 -2
  326. package/dist/storage/ontology/provider.js.map +1 -1
  327. package/dist/storage/operation-scope.d.ts.map +1 -1
  328. package/dist/storage/operation-scope.js +1 -1
  329. package/dist/storage/projection-runs/provider.js +2 -2
  330. package/dist/storage/types.d.ts +1 -1
  331. package/dist/storage/types.d.ts.map +1 -1
  332. package/dist/storage/workflow-interventions/index.d.ts +1 -1
  333. package/dist/storage/workflow-interventions/index.d.ts.map +1 -1
  334. package/dist/storage/workflow-interventions/types.d.ts +5 -8
  335. package/dist/storage/workflow-interventions/types.d.ts.map +1 -1
  336. package/dist/storage/workflow-runs/provider.js +8 -8
  337. package/dist/syncs/index.js +27 -25
  338. package/dist/syncs/index.js.map +1 -1
  339. package/dist/testing/action-execution.d.ts +4 -0
  340. package/dist/testing/action-execution.d.ts.map +1 -1
  341. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  342. package/dist/testing/execution.d.ts +1 -2
  343. package/dist/testing/execution.d.ts.map +1 -1
  344. package/dist/testing/file-upload-session-storage-contract.d.ts +12 -0
  345. package/dist/testing/file-upload-session-storage-contract.d.ts.map +1 -0
  346. package/dist/testing/index.d.ts +2 -0
  347. package/dist/testing/index.d.ts.map +1 -1
  348. package/dist/testing/index.js +1951 -1242
  349. package/dist/testing/index.js.map +15 -13
  350. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  351. package/dist/testing/object-query-contract.d.ts.map +1 -1
  352. package/dist/testing/ontology-contract-fixture.d.ts +8 -0
  353. package/dist/testing/ontology-contract-fixture.d.ts.map +1 -1
  354. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  355. package/dist/testing/sandboxes-contract.d.ts.map +1 -1
  356. package/dist/testing/workflow-intervention-storage-contract.d.ts +8 -0
  357. package/dist/testing/workflow-intervention-storage-contract.d.ts.map +1 -0
  358. package/dist/webhooks/internal.js +24 -22
  359. package/dist/webhooks/internal.js.map +2 -2
  360. package/dist/webhooks/types.d.ts +2 -2
  361. package/dist/webhooks/types.d.ts.map +1 -1
  362. package/dist/workers/index.js +1 -1
  363. package/dist/workflows/index.js +42 -40
  364. package/dist/workflows/index.js.map +1 -1
  365. package/dist/workflows/run-dispatch.d.ts.map +1 -1
  366. package/dist/workflows/types.d.ts +2 -2
  367. package/dist/workflows/types.d.ts.map +1 -1
  368. package/package.json +7 -1
  369. package/src/actions/index.ts +0 -3
  370. package/src/actions/read-facade.ts +102 -62
  371. package/src/actions/request.ts +13 -0
  372. package/src/actions/run-dispatch.ts +3 -0
  373. package/src/actions/types/context.ts +17 -65
  374. package/src/actions/types/params.ts +2 -1
  375. package/src/agents/authority.ts +1 -1
  376. package/src/assert-never.ts +7 -0
  377. package/src/auth/client-address.ts +12 -0
  378. package/src/auth/csrf.ts +14 -5
  379. package/src/auth/index.ts +3 -2
  380. package/src/auth/runtime.ts +299 -277
  381. package/src/auth/session-cache.ts +18 -6
  382. package/src/auth/sessions.ts +30 -0
  383. package/src/auth/types.ts +7 -17
  384. package/src/bootstrap/index.ts +1 -0
  385. package/src/bootstrap/ontology-type-manifest.ts +112 -60
  386. package/src/edits/types.ts +47 -63
  387. package/src/errors/catalog.ts +4 -0
  388. package/src/events/envelope.ts +0 -13
  389. package/src/events/index.ts +1 -1
  390. package/src/events/service.ts +1 -11
  391. package/src/events/toStoredEvent.ts +1 -3
  392. package/src/events/types/index.ts +1 -1
  393. package/src/execution/agent.ts +1 -2
  394. package/src/execution/authorized-object-reader.ts +5 -7
  395. package/src/execution/primitive.ts +1 -2
  396. package/src/execution/request.ts +1 -2
  397. package/src/index.ts +8 -7
  398. package/src/maintenance/ontology-maintenance.ts +77 -1
  399. package/src/materialization/errors.ts +2 -0
  400. package/src/materialization/events.ts +27 -2
  401. package/src/materializer/README.md +2 -0
  402. package/src/materializer/edits/commit.ts +21 -12
  403. package/src/materializer/edits/operations.ts +32 -4
  404. package/src/materializer/edits/plan.ts +4 -5
  405. package/src/materializer/edits/user-refs.ts +115 -0
  406. package/src/materializer/effective/build-events.ts +4 -5
  407. package/src/materializer/execution/scope.ts +40 -7
  408. package/src/materializer/projections/replace.ts +2 -0
  409. package/src/materializer/projections/replacement-plan.ts +4 -0
  410. package/src/materializer/telemetry/append.ts +4 -12
  411. package/src/materializer/telemetry/plan.ts +4 -5
  412. package/src/objects/execution.ts +33 -62
  413. package/src/objects/query/executor.ts +12 -3
  414. package/src/objects/query/ir.ts +7 -0
  415. package/src/objects/query/planner.ts +1 -0
  416. package/src/objects/query/scalar-values.ts +19 -0
  417. package/src/objects/query/validate.ts +55 -44
  418. package/src/objects/sdk/object-handle.ts +8 -8
  419. package/src/objects/sdk/object-set.ts +8 -15
  420. package/src/objects/sdk/query-builder.ts +59 -71
  421. package/src/objects/sdk/telemetry-channel.ts +6 -7
  422. package/src/objects/sdk/where.ts +6 -13
  423. package/src/ontology/builders.ts +15 -11
  424. package/src/ontology/index.ts +4 -0
  425. package/src/ontology/inference/index.ts +56 -36
  426. package/src/ontology/internal.ts +1 -0
  427. package/src/ontology/json-schema.ts +12 -0
  428. package/src/ontology/primitives.ts +91 -0
  429. package/src/ontology/query-capabilities.ts +136 -0
  430. package/src/ontology/refs.ts +33 -6
  431. package/src/ontology/registered.ts +22 -0
  432. package/src/ontology/registry.ts +6 -3
  433. package/src/ontology/tokens.ts +41 -2
  434. package/src/ontology/types.ts +19 -3
  435. package/src/ontology/user-ref.ts +120 -0
  436. package/src/ontology/validation/definition.ts +2 -13
  437. package/src/ontology/validation/index.ts +1 -0
  438. package/src/ontology/validation/normalize.ts +39 -3
  439. package/src/ontology/validation/properties.ts +95 -19
  440. package/src/ontology/validation/query.ts +11 -42
  441. package/src/ontology/validation/schema.ts +16 -0
  442. package/src/predicates/types.ts +43 -33
  443. package/src/projections/builders.ts +24 -3
  444. package/src/projections/validation.ts +15 -1
  445. package/src/runtime/create.ts +2 -2
  446. package/src/runtime/host.ts +10 -12
  447. package/src/runtime/index.ts +3 -2
  448. package/src/runtime/sixb.ts +13 -23
  449. package/src/runtime/types.ts +277 -479
  450. package/src/sandboxes/sandbox.ts +4 -1
  451. package/src/shared/params/types.ts +4 -3
  452. package/src/shared/params/user-refs.ts +48 -0
  453. package/src/shares/compiler.ts +6 -16
  454. package/src/storage/action-runs/types.ts +1 -0
  455. package/src/storage/auth/in-memory/access-tokens.ts +5 -2
  456. package/src/storage/auth/in-memory/auth-storage.ts +5 -8
  457. package/src/storage/auth/in-memory/device-authorizations.ts +0 -2
  458. package/src/storage/auth/in-memory/sessions.ts +69 -1
  459. package/src/storage/auth/in-memory/shared.ts +13 -7
  460. package/src/storage/auth/index.ts +2 -1
  461. package/src/storage/auth/types.ts +57 -13
  462. package/src/storage/executions/validation.ts +1 -1
  463. package/src/storage/file-upload-sessions/in-memory.ts +64 -113
  464. package/src/storage/file-upload-sessions/index.ts +1 -0
  465. package/src/storage/file-upload-sessions/provider.ts +258 -0
  466. package/src/storage/file-upload-sessions/types.ts +20 -1
  467. package/src/storage/file-upload-sessions/utils.ts +25 -9
  468. package/src/storage/index.ts +3 -2
  469. package/src/storage/objects/in-memory/query.ts +13 -3
  470. package/src/storage/ontology/commits.ts +6 -2
  471. package/src/storage/ontology/in-memory/materializations.ts +6 -34
  472. package/src/storage/ontology/provider-header-validation.ts +57 -0
  473. package/src/storage/ontology/provider-work.ts +15 -3
  474. package/src/storage/ontology/provider.ts +59 -1
  475. package/src/storage/operation-scope.ts +1 -0
  476. package/src/storage/types.ts +0 -1
  477. package/src/storage/workflow-interventions/index.ts +0 -1
  478. package/src/storage/workflow-interventions/types.ts +5 -9
  479. package/src/testing/action-execution.ts +13 -3
  480. package/src/testing/auth-storage-contract.ts +149 -62
  481. package/src/testing/execution-storage-contract.ts +1 -2
  482. package/src/testing/execution.ts +4 -7
  483. package/src/testing/file-upload-session-storage-contract.ts +335 -0
  484. package/src/testing/index.ts +8 -0
  485. package/src/testing/materializer-storage-contract.ts +86 -4
  486. package/src/testing/object-query-contract.ts +121 -2
  487. package/src/testing/ontology-contract-fixture.ts +23 -3
  488. package/src/testing/ontology-storage-contract.ts +58 -0
  489. package/src/testing/sandboxes-contract.ts +27 -0
  490. package/src/testing/workflow-intervention-storage-contract.ts +203 -0
  491. package/src/webhooks/types.ts +2 -2
  492. package/src/workflows/run-dispatch.ts +12 -1
  493. package/src/workflows/snapshot.ts +16 -7
  494. package/src/workflows/types.ts +2 -2
  495. package/dist/chunk-2cxv584m.js.map +0 -43
  496. package/dist/chunk-3ghw2t5q.js.map +0 -10
  497. package/dist/chunk-3h7ctayx.js.map +0 -11
  498. package/dist/chunk-6ma8dvzc.js.map +0 -15
  499. package/dist/chunk-bbaa1fet.js.map +0 -25
  500. package/dist/chunk-eyjzgav0.js.map +0 -12
  501. package/dist/chunk-f06sf7rr.js.map +0 -11
  502. package/dist/chunk-g50nxqs5.js.map +0 -18
  503. package/dist/chunk-hkw8rykk.js.map +0 -15
  504. package/dist/chunk-p6r1ex7t.js.map +0 -10
  505. package/dist/chunk-qm535afa.js.map +0 -15
  506. package/dist/chunk-vpxss818.js.map +0 -10
  507. package/dist/chunk-vsg0g7h9.js.map +0 -17
  508. /package/dist/{chunk-e1f1sqba.js.map → chunk-04h4t2b5.js.map} +0 -0
  509. /package/dist/{chunk-y3ev53cq.js.map → chunk-2fv8sajb.js.map} +0 -0
  510. /package/dist/{chunk-3bnt2wna.js.map → chunk-2hbhn1ff.js.map} +0 -0
  511. /package/dist/{chunk-5tetw4hn.js.map → chunk-4tnrzqqh.js.map} +0 -0
  512. /package/dist/{chunk-jjwhy3rs.js.map → chunk-a69fkrtr.js.map} +0 -0
  513. /package/dist/{chunk-y1ahv8b7.js.map → chunk-bdhfn0ww.js.map} +0 -0
  514. /package/dist/{chunk-4ph94nhd.js.map → chunk-bep5rrdq.js.map} +0 -0
  515. /package/dist/{chunk-kept9cdd.js.map → chunk-bxx3ms5t.js.map} +0 -0
  516. /package/dist/{chunk-xtfryrfb.js.map → chunk-cbn96bve.js.map} +0 -0
  517. /package/dist/{chunk-r5zythxp.js.map → chunk-gbcrz0gr.js.map} +0 -0
  518. /package/dist/{chunk-t7dzd1tm.js.map → chunk-jhyc777j.js.map} +0 -0
  519. /package/dist/{chunk-0mza4xb2.js.map → chunk-m8zkvep1.js.map} +0 -0
  520. /package/dist/{chunk-sfypc7mk.js.map → chunk-s24qbp32.js.map} +0 -0
  521. /package/dist/{chunk-y0v18c2j.js.map → chunk-vef6qa14.js.map} +0 -0
  522. /package/dist/{chunk-gzt6v1ja.js.map → chunk-vn3yh259.js.map} +0 -0
  523. /package/dist/{chunk-bg2bs62d.js.map → chunk-w9bp61e7.js.map} +0 -0
  524. /package/dist/{chunk-gswwr35f.js.map → chunk-y487ywrv.js.map} +0 -0
  525. /package/dist/{chunk-bet1rb9h.js.map → chunk-y6vnvayj.js.map} +0 -0
  526. /package/dist/{chunk-g2gezsg5.js.map → chunk-z9h698s8.js.map} +0 -0
  527. /package/dist/{chunk-bfjv1adk.js.map → chunk-znw0zvy4.js.map} +0 -0
@@ -3,6 +3,7 @@ import type { AuthenticatedAuthSession } from "./types"
3
3
 
4
4
  interface SessionCacheEntry {
5
5
  readonly tokenHash: string
6
+ readonly transport: "cookie" | "bearer"
6
7
  readonly audience: AuthSessionAudience
7
8
  readonly session: AuthenticatedAuthSession
8
9
  readonly expiresAtMs: number
@@ -11,11 +12,18 @@ interface SessionCacheEntry {
11
12
  export interface SessionCacheGetInput {
12
13
  readonly sessionId: string
13
14
  readonly tokenHash: string
14
- readonly audience: AuthSessionAudience
15
+ /** A cookie is only ever answered from a cookie entry, and a bearer token from a bearer entry. */
16
+ readonly transport: "cookie" | "bearer"
17
+ /** The browser audience a cookie was read for. Bearer sessions carry their own. */
18
+ readonly audience?: AuthSessionAudience
15
19
  readonly nowMs: number
16
20
  }
17
21
 
18
- export interface SessionCacheSetInput extends SessionCacheGetInput {
22
+ export interface SessionCacheSetInput {
23
+ readonly sessionId: string
24
+ readonly tokenHash: string
25
+ readonly audience: AuthSessionAudience
26
+ readonly nowMs: number
19
27
  readonly session: AuthenticatedAuthSession
20
28
  readonly sessionExpiresAtMs: number
21
29
  readonly sessionAbsoluteExpiresAtMs?: number
@@ -30,7 +38,7 @@ export interface SessionCacheSetInput extends SessionCacheGetInput {
30
38
  * API stalls. Caching the resolved result for a short TTL collapses those reads to one
31
39
  * per session per window.
32
40
  *
33
- * Safety: entries are pinned to the exact token hash + audience that produced them and
41
+ * Safety: entries are pinned to the exact token hash, transport, and audience that produced them and
34
42
  * are never served past the session's rolling or absolute deadline. The short TTL bounds how long
35
43
  * a revoked session can linger; sign-out additionally invalidates eagerly via
36
44
  * {@link SessionCache.invalidate}.
@@ -52,7 +60,8 @@ export class SessionCache {
52
60
  if (
53
61
  entry.expiresAtMs <= input.nowMs ||
54
62
  entry.tokenHash !== input.tokenHash ||
55
- entry.audience !== input.audience
63
+ entry.transport !== input.transport ||
64
+ (input.audience !== undefined && entry.audience !== input.audience)
56
65
  ) {
57
66
  this.entries.delete(input.sessionId)
58
67
  return undefined
@@ -62,11 +71,13 @@ export class SessionCache {
62
71
  }
63
72
 
64
73
  set(input: SessionCacheSetInput): void {
65
- // Never let a cached session outlive the real session it represents.
74
+ // Never let a cached session outlive the real session, or a bearer session its access token.
75
+ const bearer = input.session.session.bearer
66
76
  const expiresAtMs = Math.min(
67
77
  input.nowMs + this.ttlMs,
68
78
  input.sessionExpiresAtMs,
69
- input.sessionAbsoluteExpiresAtMs ?? Number.POSITIVE_INFINITY
79
+ input.sessionAbsoluteExpiresAtMs ?? Number.POSITIVE_INFINITY,
80
+ bearer?.accessExpiresAt.getTime() ?? Number.POSITIVE_INFINITY
70
81
  )
71
82
  if (expiresAtMs <= input.nowMs) {
72
83
  return
@@ -76,6 +87,7 @@ export class SessionCache {
76
87
  this.entries.delete(input.sessionId)
77
88
  this.entries.set(input.sessionId, {
78
89
  tokenHash: input.tokenHash,
90
+ transport: bearer ? "bearer" : "cookie",
79
91
  audience: input.audience,
80
92
  session: input.session,
81
93
  expiresAtMs,
@@ -53,3 +53,33 @@ export function createSessionCredential(sessionId = `ses_${randomUUID()}`): Sess
53
53
  cookieValue: formatSessionCookieValue(sessionId, sessionSecret),
54
54
  }
55
55
  }
56
+
57
+ export const SESSION_ACCESS_TOKEN_PREFIX = "sixb_at_"
58
+ export const SESSION_REFRESH_TOKEN_PREFIX = "sixb_rt_"
59
+
60
+ export interface BearerSessionTokens {
61
+ readonly accessToken: string
62
+ readonly refreshToken: string
63
+ readonly tokenHash: string
64
+ readonly refreshTokenHash: string
65
+ }
66
+
67
+ /** Fresh access and refresh tokens for a native client's session. Only their hashes are stored. */
68
+ export function createBearerSessionTokens(sessionId: string): BearerSessionTokens {
69
+ const accessSecret = generateSessionSecret()
70
+ const refreshSecret = generateSessionSecret()
71
+ return {
72
+ accessToken: `${SESSION_ACCESS_TOKEN_PREFIX}${formatSessionCookieValue(sessionId, accessSecret)}`,
73
+ refreshToken: `${SESSION_REFRESH_TOKEN_PREFIX}${formatSessionCookieValue(sessionId, refreshSecret)}`,
74
+ tokenHash: hashSessionSecret(accessSecret),
75
+ refreshTokenHash: hashSessionSecret(refreshSecret),
76
+ }
77
+ }
78
+
79
+ /** The session id and secret in a bearer session token, or null when it is not one. */
80
+ export function parseBearerSessionToken(
81
+ prefix: typeof SESSION_ACCESS_TOKEN_PREFIX | typeof SESSION_REFRESH_TOKEN_PREFIX,
82
+ value: string
83
+ ): SessionCookieParts | null {
84
+ return value.startsWith(prefix) ? parseSessionCookieValue(value.slice(prefix.length)) : null
85
+ }
package/src/auth/types.ts CHANGED
@@ -30,13 +30,6 @@ export function principalsEqual(left: Principal, right: Principal): boolean {
30
30
  return left.type === right.type && left.id === right.id
31
31
  }
32
32
 
33
- export interface SecurityContext {
34
- readonly principal: Principal
35
- readonly sessionId?: string
36
- readonly projectId: string
37
- readonly correlationId: string
38
- }
39
-
40
33
  export type AuthStrategyKind = "magicLink" | "oidc" | "dev" | "disabled"
41
34
 
42
35
  export interface AuthStrategy {
@@ -225,7 +218,6 @@ export interface InviteUserInput {
225
218
  readonly groups?: readonly GroupDefinition[]
226
219
  readonly groupIds?: readonly string[]
227
220
  readonly expiresAt?: Date
228
- readonly returnTo?: string
229
221
  /** Reveal the delivered link once in the result. Defaults to false. */
230
222
  readonly revealLink?: boolean
231
223
  }
@@ -368,7 +360,8 @@ export interface ReactivateMemberResult {
368
360
  readonly groupIds: readonly string[]
369
361
  }
370
362
 
371
- export type AuthCredentialSource = "session" | "accessToken" | "any"
363
+ /** `"session"` reads only the cookie; `"any"` reads a bearer access token, else the cookie. */
364
+ export type AuthCredentialSource = "session" | "any"
372
365
 
373
366
  export interface AuthSessionResolutionOptions extends AuthSessionAudienceOptions {
374
367
  readonly credentialSource?: AuthCredentialSource
@@ -376,12 +369,11 @@ export interface AuthSessionResolutionOptions extends AuthSessionAudienceOptions
376
369
  readonly sessionActivity?: "foreground"
377
370
  }
378
371
 
379
- export interface InviteUserOptions extends AuthSessionAudienceOptions {
380
- readonly delivery?: {
381
- readonly audience?: AuthSessionAudience
382
- readonly requestOrigin?: string
383
- readonly returnTo?: string
384
- }
372
+ /** Where an invitation link sends its recipient. */
373
+ export interface InvitationDestination {
374
+ readonly audience: AuthSessionAudience
375
+ readonly requestOrigin: string
376
+ readonly returnTo: string
385
377
  }
386
378
 
387
379
  export interface RevokeInvitationInput {
@@ -521,9 +513,7 @@ export type SixbAuthConfig =
521
513
 
522
514
  export type AuthSessionFailureReason =
523
515
  | "auth_disabled"
524
- | "missing_credentials"
525
516
  | "missing_cookie"
526
- | "missing_access_token"
527
517
  | "invalid_cookie"
528
518
  | "invalid_access_token"
529
519
  | "invalid_session"
@@ -15,6 +15,7 @@ export type {
15
15
  GenerateOntologyTypeManifestResult,
16
16
  OntologyTypeManifestDiscovery,
17
17
  OntologyTypeManifestEntry,
18
+ OntologyValueTypeManifestEntry,
18
19
  } from "./ontology-type-manifest"
19
20
  export {
20
21
  discoverOntologyTypeManifest,
@@ -3,6 +3,7 @@ import { dirname, extname, join, relative, resolve, sep } from "node:path"
3
3
  import { pathToFileURL } from "node:url"
4
4
  import type { OntologyDocumentInput } from "../ontology/registry"
5
5
  import type { ObjectTypeWithPropertyTokens } from "../ontology/tokens"
6
+ import type { ValueType } from "../ontology/types"
6
7
  import { RuntimeError } from "../runtime/errors"
7
8
 
8
9
  const moduleExtensions = new Set([".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"])
@@ -14,8 +15,17 @@ export interface OntologyTypeManifestEntry {
14
15
  readonly typeExpression: string
15
16
  }
16
17
 
18
+ /** A value type the manifest registers, so a string-only `valueTypeRef("id")` is typed. */
19
+ export interface OntologyValueTypeManifestEntry {
20
+ readonly valueTypeId: string
21
+ readonly modulePath: string
22
+ readonly exportName: string
23
+ readonly typeExpression: string
24
+ }
25
+
17
26
  export interface OntologyTypeManifestDiscovery {
18
27
  readonly entries: readonly OntologyTypeManifestEntry[]
28
+ readonly valueTypeEntries: readonly OntologyValueTypeManifestEntry[]
19
29
  readonly moduleCount: number
20
30
  }
21
31
 
@@ -37,7 +47,8 @@ export async function discoverOntologyTypeManifest(
37
47
  const ontologyDir = join(resolvedProjectRoot, "ontology")
38
48
  const modulePaths = await listModuleFiles(ontologyDir)
39
49
  const entries = new Map<string, OntologyTypeManifestEntry>()
40
- const seenObjectTypes = new Set<unknown>()
50
+ const valueTypeEntries = new Map<string, OntologyValueTypeManifestEntry>()
51
+ const seen = new Set<unknown>()
41
52
 
42
53
  for (const modulePath of modulePaths) {
43
54
  const moduleSpecifier = toGeneratedModuleSpecifier({
@@ -56,13 +67,17 @@ export async function discoverOntologyTypeManifest(
56
67
  modulePath,
57
68
  moduleSpecifier,
58
69
  entries,
59
- seenObjectTypes,
70
+ valueTypeEntries,
71
+ seen,
60
72
  })
61
73
  }
62
74
  }
63
75
 
64
76
  return {
65
77
  entries: [...entries.values()].sort((a, b) => a.objectTypeId.localeCompare(b.objectTypeId)),
78
+ valueTypeEntries: [...valueTypeEntries.values()].sort((a, b) =>
79
+ a.valueTypeId.localeCompare(b.valueTypeId)
80
+ ),
66
81
  moduleCount: modulePaths.length,
67
82
  }
68
83
  }
@@ -89,7 +104,7 @@ export async function generateOntologyTypeManifest(
89
104
  }
90
105
  }
91
106
 
92
- const content = renderOntologyTypeManifest(discovery.entries)
107
+ const content = renderOntologyTypeManifest(discovery)
93
108
  await mkdir(dirname(outFile), { recursive: true })
94
109
  const written = await writeFileIfChanged(outFile, content)
95
110
 
@@ -101,98 +116,114 @@ export async function generateOntologyTypeManifest(
101
116
  }
102
117
  }
103
118
 
119
+ /**
120
+ * Mirrors what runtime discovery registers from an `ontology/` module: exported object types and
121
+ * value types, the ones an exported ontology document carries, and those inside exported arrays.
122
+ */
104
123
  function collectManifestEntries(input: {
105
124
  readonly exportedValue: unknown
106
125
  readonly exportName: string
107
126
  readonly modulePath: string
108
127
  readonly moduleSpecifier: string
109
128
  readonly entries: Map<string, OntologyTypeManifestEntry>
110
- readonly seenObjectTypes: Set<unknown>
129
+ readonly valueTypeEntries: Map<string, OntologyValueTypeManifestEntry>
130
+ readonly seen: Set<unknown>
111
131
  }): void {
112
- if (isObjectTypeWithPropertyTokens(input.exportedValue)) {
113
- addManifestEntry({
114
- objectType: input.exportedValue,
115
- modulePath: input.modulePath,
116
- exportName: input.exportName,
117
- typeExpression: `typeof import(${JSON.stringify(input.moduleSpecifier)})[${JSON.stringify(
118
- input.exportName
119
- )}]`,
120
- entries: input.entries,
121
- seenObjectTypes: input.seenObjectTypes,
122
- })
123
- return
132
+ const exported = `(typeof import(${JSON.stringify(input.moduleSpecifier)})[${JSON.stringify(
133
+ input.exportName
134
+ )}])`
135
+ const add = (value: unknown, typeExpression: (id: string) => string): void => {
136
+ if (isObjectTypeWithPropertyTokens(value)) {
137
+ addManifestEntry({
138
+ kind: "object type",
139
+ definition: value,
140
+ entry: {
141
+ objectTypeId: value.id,
142
+ modulePath: input.modulePath,
143
+ exportName: input.exportName,
144
+ typeExpression: typeExpression(value.id),
145
+ },
146
+ idOf: (entry) => entry.objectTypeId,
147
+ entries: input.entries,
148
+ seen: input.seen,
149
+ })
150
+ } else if (isValueType(value)) {
151
+ addManifestEntry({
152
+ kind: "value type",
153
+ definition: value,
154
+ entry: {
155
+ valueTypeId: value.id,
156
+ modulePath: input.modulePath,
157
+ exportName: input.exportName,
158
+ typeExpression: typeExpression(value.id),
159
+ },
160
+ idOf: (entry) => entry.valueTypeId,
161
+ entries: input.valueTypeEntries,
162
+ seen: input.seen,
163
+ })
164
+ }
124
165
  }
125
166
 
126
167
  if (isOntologyDocumentInput(input.exportedValue)) {
127
168
  for (const objectType of input.exportedValue.objectTypes) {
128
- addManifestEntry({
169
+ add(
129
170
  objectType,
130
- modulePath: input.modulePath,
131
- exportName: input.exportName,
132
- typeExpression: `Extract<(typeof import(${JSON.stringify(
133
- input.moduleSpecifier
134
- )})[${JSON.stringify(input.exportName)}])["objectTypes"][number], { id: ${JSON.stringify(
135
- objectType.id
136
- )} }>`,
137
- entries: input.entries,
138
- seenObjectTypes: input.seenObjectTypes,
139
- })
171
+ (id) => `Extract<${exported}["objectTypes"][number], { id: ${JSON.stringify(id)} }>`
172
+ )
173
+ }
174
+ for (const valueType of input.exportedValue.valueTypes ?? []) {
175
+ add(
176
+ valueType,
177
+ (id) => `Extract<${exported}["valueTypes"][number], { id: ${JSON.stringify(id)} }>`
178
+ )
140
179
  }
141
180
  return
142
181
  }
143
182
 
144
183
  if (Array.isArray(input.exportedValue)) {
145
184
  for (const item of input.exportedValue) {
146
- if (!isObjectTypeWithPropertyTokens(item)) continue
147
- addManifestEntry({
148
- objectType: item,
149
- modulePath: input.modulePath,
150
- exportName: input.exportName,
151
- typeExpression: `Extract<(typeof import(${JSON.stringify(
152
- input.moduleSpecifier
153
- )})[${JSON.stringify(input.exportName)}])[number], { id: ${JSON.stringify(item.id)} }>`,
154
- entries: input.entries,
155
- seenObjectTypes: input.seenObjectTypes,
156
- })
185
+ add(item, (id) => `Extract<${exported}[number], { id: ${JSON.stringify(id)} }>`)
157
186
  }
187
+ return
158
188
  }
189
+
190
+ add(
191
+ input.exportedValue,
192
+ () =>
193
+ `typeof import(${JSON.stringify(input.moduleSpecifier)})[${JSON.stringify(input.exportName)}]`
194
+ )
159
195
  }
160
196
 
161
- function addManifestEntry(input: {
162
- readonly objectType: ObjectTypeWithPropertyTokens
163
- readonly modulePath: string
164
- readonly exportName: string
165
- readonly typeExpression: string
166
- readonly entries: Map<string, OntologyTypeManifestEntry>
167
- readonly seenObjectTypes: Set<unknown>
197
+ function addManifestEntry<TEntry extends { readonly modulePath: string }>(input: {
198
+ readonly kind: "object type" | "value type"
199
+ readonly definition: unknown
200
+ readonly entry: TEntry
201
+ readonly idOf: (entry: TEntry) => string
202
+ readonly entries: Map<string, TEntry>
203
+ readonly seen: Set<unknown>
168
204
  }): void {
169
- if (input.seenObjectTypes.has(input.objectType)) {
205
+ // The same definition re-exported from several places is one registration.
206
+ if (input.seen.has(input.definition)) {
170
207
  return
171
208
  }
172
- input.seenObjectTypes.add(input.objectType)
173
-
174
- const existing = input.entries.get(input.objectType.id)
175
- const entry: OntologyTypeManifestEntry = {
176
- objectTypeId: input.objectType.id,
177
- modulePath: input.modulePath,
178
- exportName: input.exportName,
179
- typeExpression: input.typeExpression,
180
- }
209
+ input.seen.add(input.definition)
181
210
 
211
+ const id = input.idOf(input.entry)
212
+ const existing = input.entries.get(id)
182
213
  if (!existing) {
183
- input.entries.set(input.objectType.id, entry)
214
+ input.entries.set(id, input.entry)
184
215
  return
185
216
  }
186
217
 
187
218
  throw new RuntimeError(
188
- `[Sixb] Duplicate ontology object type id "${input.objectType.id}" while generating `.concat(
219
+ `[Sixb] Duplicate ontology ${input.kind} id "${id}" while generating `.concat(
189
220
  `the type manifest: ${relative(process.cwd(), existing.modulePath)} and `,
190
- `${relative(process.cwd(), input.modulePath)}.`
221
+ `${relative(process.cwd(), input.entry.modulePath)}.`
191
222
  )
192
223
  )
193
224
  }
194
225
 
195
- function renderOntologyTypeManifest(entries: readonly OntologyTypeManifestEntry[]): string {
226
+ function renderOntologyTypeManifest(discovery: OntologyTypeManifestDiscovery): string {
196
227
  const lines = [
197
228
  "// This file is auto-generated by Sixb.",
198
229
  "// Do not edit this file directly.",
@@ -201,10 +232,16 @@ function renderOntologyTypeManifest(entries: readonly OntologyTypeManifestEntry[
201
232
  " interface SixbObjectTypeMap {",
202
233
  ]
203
234
 
204
- for (const entry of entries) {
235
+ for (const entry of discovery.entries) {
205
236
  lines.push(` ${JSON.stringify(entry.objectTypeId)}: ${entry.typeExpression}`)
206
237
  }
207
238
 
239
+ lines.push(" }", " interface SixbValueTypeMap {")
240
+
241
+ for (const entry of discovery.valueTypeEntries) {
242
+ lines.push(` ${JSON.stringify(entry.valueTypeId)}: ${entry.typeExpression}`)
243
+ }
244
+
208
245
  lines.push(" }", "}", "", "export {}", "")
209
246
  return lines.join("\n")
210
247
  }
@@ -309,6 +346,21 @@ function isObjectTypeWithPropertyTokens(value: unknown): value is ObjectTypeWith
309
346
  )
310
347
  }
311
348
 
349
+ /** Same shape test runtime discovery applies to an exported value type. */
350
+ function isValueType(value: unknown): value is ValueType {
351
+ if (!isRecord(value)) {
352
+ return false
353
+ }
354
+
355
+ return (
356
+ typeof value.id === "string" &&
357
+ typeof value.name === "string" &&
358
+ "schema" in value &&
359
+ !Array.isArray(value.properties) &&
360
+ !Array.isArray(value.objectTypes)
361
+ )
362
+ }
363
+
312
364
  function isOntologyDocumentInput(value: unknown): value is OntologyDocumentInput {
313
365
  if (!isRecord(value)) {
314
366
  return false
@@ -114,25 +114,24 @@ export type EditablePropertyId<TObjectType extends ObjectType> =
114
114
 
115
115
  type StaticPropertyMap<
116
116
  TProperties extends readonly Property[],
117
- TValueTypes extends readonly ValueType[],
118
117
  TMode extends "create" | "update",
119
118
  > = string extends TProperties[number]["id"]
120
119
  ? Record<string, unknown>
121
120
  : Simplify<{
122
121
  [TProp in TProperties[number] as TMode extends "create"
123
122
  ? CreatablePropertyId<TProp>
124
- : SettablePropertyId<TProp>]?: InferPropertyValue<TProp, TValueTypes>
123
+ : SettablePropertyId<TProp>]?: InferPropertyValue<TProp>
125
124
  }>
126
125
 
127
- export type EditCreateProperties<
128
- TObjectType extends ObjectType,
129
- TValueTypes extends readonly ValueType[] = [],
130
- > = StaticPropertyMap<TObjectType["properties"], TValueTypes, "create">
126
+ export type EditCreateProperties<TObjectType extends ObjectType> = StaticPropertyMap<
127
+ TObjectType["properties"],
128
+ "create"
129
+ >
131
130
 
132
- export type EditUpdateProperties<
133
- TObjectType extends ObjectType,
134
- TValueTypes extends readonly ValueType[] = [],
135
- > = StaticPropertyMap<TObjectType["properties"], TValueTypes, "update">
131
+ export type EditUpdateProperties<TObjectType extends ObjectType> = StaticPropertyMap<
132
+ TObjectType["properties"],
133
+ "update"
134
+ >
136
135
 
137
136
  type LinkProperties<TLink extends { properties?: readonly Property[] }> = TLink extends {
138
137
  properties: infer TProperties extends readonly Property[]
@@ -147,23 +146,18 @@ type RequiredLinkPropertyId<TProperty extends Property> = TProperty extends { re
147
146
  ? LinkPropertyId<TProperty>
148
147
  : never
149
148
 
150
- type EditLinkProperties<
151
- TLink extends { properties?: readonly Property[] },
152
- TValueTypes extends readonly ValueType[],
153
- > = string extends LinkProperties<TLink>[number]["id"]
154
- ? Record<string, unknown>
155
- : Simplify<
156
- {
157
- [TProp in LinkProperties<TLink>[number] as RequiredLinkPropertyId<TProp>]: InferPropertyValue<
158
- TProp,
159
- TValueTypes
160
- >
161
- } & {
162
- [TProp in LinkProperties<TLink>[number] as TProp extends { required: true }
163
- ? never
164
- : LinkPropertyId<TProp>]?: InferPropertyValue<TProp, TValueTypes>
165
- }
166
- >
149
+ type EditLinkProperties<TLink extends { properties?: readonly Property[] }> =
150
+ string extends LinkProperties<TLink>[number]["id"]
151
+ ? Record<string, unknown>
152
+ : Simplify<
153
+ {
154
+ [TProp in LinkProperties<TLink>[number] as RequiredLinkPropertyId<TProp>]: InferPropertyValue<TProp>
155
+ } & {
156
+ [TProp in LinkProperties<TLink>[number] as TProp extends { required: true }
157
+ ? never
158
+ : LinkPropertyId<TProp>]?: InferPropertyValue<TProp>
159
+ }
160
+ >
167
161
 
168
162
  type RequiredLinkPropertyIds<TLink extends { properties?: readonly Property[] }> =
169
163
  LinkProperties<TLink>[number] extends infer TProperty extends Property
@@ -191,34 +185,32 @@ type EditLinkTargetRef<TLinkToken extends LinkToken<string, string, string | rea
191
185
  ? EditObjectRef<string>
192
186
  : EditObjectRef<ResolveTargetObjectTypeId<TLinkToken["targetObjectTypeId"]>>
193
187
 
194
- type EditLinkOptionsArg<
195
- TLinkToken extends LinkToken<string, string, string | readonly string[]>,
196
- TValueTypes extends readonly ValueType[],
197
- > = string extends TLinkToken["id"]
198
- ? [options?: { readonly properties?: Readonly<Record<string, unknown>> }]
199
- : HasLinkProperties<TLinkToken["link"]> extends false
200
- ? [options?: { readonly properties?: never }]
201
- : HasRequiredLinkProperties<TLinkToken["link"]> extends true
202
- ? [
203
- options: {
204
- readonly properties: EditLinkProperties<TLinkToken["link"], TValueTypes>
205
- },
206
- ]
207
- : [
208
- options?: {
209
- readonly properties?: EditLinkProperties<TLinkToken["link"], TValueTypes>
210
- },
211
- ]
188
+ type EditLinkOptionsArg<TLinkToken extends LinkToken<string, string, string | readonly string[]>> =
189
+ string extends TLinkToken["id"]
190
+ ? [options?: { readonly properties?: Readonly<Record<string, unknown>> }]
191
+ : HasLinkProperties<TLinkToken["link"]> extends false
192
+ ? [options?: { readonly properties?: never }]
193
+ : HasRequiredLinkProperties<TLinkToken["link"]> extends true
194
+ ? [
195
+ options: {
196
+ readonly properties: EditLinkProperties<TLinkToken["link"]>
197
+ },
198
+ ]
199
+ : [
200
+ options?: {
201
+ readonly properties?: EditLinkProperties<TLinkToken["link"]>
202
+ },
203
+ ]
212
204
 
213
205
  export interface RecordEditsOptions {
214
206
  readonly runId: string
215
207
  readonly valueTypesById?: ReadonlyMap<string, ValueType>
216
208
  }
217
209
 
218
- export interface RecordEditsContext<TValueTypes extends readonly ValueType[] = []> {
210
+ export interface RecordEditsContext {
219
211
  objects<const TObjectType extends ObjectTypeWithPropertyTokens>(
220
212
  objectType: TObjectType
221
- ): EditObjectSetRecorder<TObjectType, TValueTypes>
213
+ ): EditObjectSetRecorder<TObjectType>
222
214
  }
223
215
 
224
216
  export type RecordEditsHandlerResult = ReturnType<() => void>
@@ -226,26 +218,18 @@ export type RecordEditsHandlerResult = ReturnType<() => void>
226
218
  export type RecordEditsHandlerReturn = RecordEditsHandlerResult | Promise<RecordEditsHandlerResult>
227
219
 
228
220
  export type RecordEditsHandler<
229
- TValueTypes extends readonly ValueType[] = [],
230
221
  TResult extends RecordEditsHandlerReturn = RecordEditsHandlerReturn,
231
- > = (ctx: RecordEditsContext<TValueTypes>) => TResult
222
+ > = (ctx: RecordEditsContext) => TResult
232
223
 
233
- export interface EditObjectSetRecorder<
234
- TObjectType extends ObjectType,
235
- TValueTypes extends readonly ValueType[] = [],
236
- > {
237
- byId(primaryId: string): EditObjectHandle<TObjectType, TValueTypes>
224
+ export interface EditObjectSetRecorder<TObjectType extends ObjectType> {
225
+ byId(primaryId: string): EditObjectHandle<TObjectType>
238
226
 
239
- create(
240
- properties: EditCreateProperties<TObjectType, TValueTypes>
241
- ): EditObjectHandle<TObjectType, TValueTypes>
227
+ create(properties: EditCreateProperties<TObjectType>): EditObjectHandle<TObjectType>
242
228
  }
243
229
 
244
- export interface EditObjectHandle<
245
- TObjectType extends ObjectType = ObjectType,
246
- TValueTypes extends readonly ValueType[] = [],
247
- > extends TypedEditObjectRef<TObjectType> {
248
- update(properties: EditUpdateProperties<TObjectType, TValueTypes>): void
230
+ export interface EditObjectHandle<TObjectType extends ObjectType = ObjectType>
231
+ extends TypedEditObjectRef<TObjectType> {
232
+ update(properties: EditUpdateProperties<TObjectType>): void
249
233
 
250
234
  /** Clears managed values, leaving the property absent from managed authority. */
251
235
  unset(...propertyIds: readonly EditablePropertyId<TObjectType>[]): void
@@ -260,7 +244,7 @@ export interface EditObjectHandle<
260
244
  link<const TLinkToken extends LinkToken<TObjectType["id"], string, string | readonly string[]>>(
261
245
  link: TLinkToken,
262
246
  target: EditLinkTargetRef<TLinkToken>,
263
- ...options: EditLinkOptionsArg<TLinkToken, TValueTypes>
247
+ ...options: EditLinkOptionsArg<TLinkToken>
264
248
  ): void
265
249
 
266
250
  unlink<const TLinkToken extends LinkToken<TObjectType["id"], string, string | readonly string[]>>(
@@ -14,6 +14,10 @@ export const SIXB_ERROR_DEFINITIONS = {
14
14
  publicMessage: "Action execution failed.",
15
15
  retryable: false,
16
16
  },
17
+ "action.read_conflict": {
18
+ publicMessage: "Data the Action read changed before its commit.",
19
+ retryable: true,
20
+ },
17
21
  "agent.execution_failed": {
18
22
  publicMessage: "Agent execution failed.",
19
23
  retryable: false,
@@ -1,17 +1,5 @@
1
1
  import type { JsonValue } from "../json"
2
2
 
3
- /**
4
- * Who made a change.
5
- *
6
- * The type literals are exactly `Principal["type"]` from `auth/types`, on purpose: an actor *is* a
7
- * principal recorded on an event, and two spellings of the same concept meant a translation layer
8
- * between them, which is one more place for the two to drift.
9
- */
10
- export interface EventActor {
11
- type: "user" | "serviceAccount" | "system"
12
- id: string
13
- }
14
-
15
3
  export interface ActionEventOrigin {
16
4
  readonly kind: "action"
17
5
  readonly actionId: string
@@ -62,7 +50,6 @@ export interface EventEnvelope {
62
50
  correlationId?: string
63
51
  causationId?: string
64
52
  idempotencyKey?: string
65
- actor?: EventActor
66
53
  origin?: EventOrigin
67
54
  metadata?: Record<string, JsonValue>
68
55
  }
@@ -93,9 +93,9 @@ export type {
93
93
  DatasetVersionCommittedEvent,
94
94
  DomainEvent,
95
95
  DomainEventDraft,
96
- EventActor,
97
96
  EventDraft,
98
97
  EventEnvelope,
98
+ EventExecutor,
99
99
  EventOrigin,
100
100
  LinkCreatedEvent,
101
101
  LinkDeletedEvent,