@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
@@ -30,6 +30,7 @@ export { isObjectRefSchema, objectRef, ref } from "./refs"
30
30
  export type {
31
31
  LinkToken,
32
32
  LinkTokenMap,
33
+ ObjectPropertiesMetadata,
33
34
  ObjectTypeWithPropertyTokens,
34
35
  ObjectTypeWithTokens,
35
36
  PropertyToken,
@@ -57,9 +58,12 @@ export type {
57
58
  PropertyQueryMetadata,
58
59
  Schema,
59
60
  SixbObjectTypeMap,
61
+ SixbValueTypeMap,
60
62
  ValueType,
61
63
  ValueTypeRefSchema,
62
64
  } from "./types"
65
+ export type { UserRef } from "./user-ref"
66
+ export { userRef } from "./user-ref"
63
67
 
64
68
  // ── Registry ──────────────────────────────────────────────
65
69
 
@@ -13,13 +13,16 @@ import type {
13
13
  ValueTypeRefSchema,
14
14
  } from ".."
15
15
  import type { DecimalValue } from "../decimal"
16
+ import type { RegisteredValueTypes } from "../registered"
16
17
  import type { QuantitativeTypeId, UnitsOf } from "../units"
18
+ import type { UserRef } from "../user-ref"
17
19
 
18
20
  type Simplify<T> = { [K in keyof T]: T[K] } & {}
19
21
 
20
22
  /**
21
23
  * Look up a referenced value type by `id` from the value-type tuple passed
22
- * into the inference utilities.
24
+ * into the inference utilities — the generated registry unless a caller passes
25
+ * its own tuple.
23
26
  */
24
27
  type ResolveValueType<
25
28
  TValueTypes extends readonly ValueType[],
@@ -30,13 +33,17 @@ type ResolveValueType<
30
33
  * Resolve `{ type: "valueTypeRef" }` recursively.
31
34
  *
32
35
  * Unknown references intentionally degrade to `unknown` so type-level callsites
33
- * can decide how strict they want to be.
36
+ * can decide how strict they want to be. The `[never]` guard is what keeps that
37
+ * promise: an unresolved lookup is `never`, and a distributive check over `never`
38
+ * would yield `never` — a value assignable to everything.
34
39
  */
35
40
  type InferValueTypeRef<TValueTypeId extends string, TValueTypes extends readonly ValueType[]> =
36
41
  ResolveValueType<TValueTypes, TValueTypeId> extends infer TValueType
37
- ? TValueType extends ValueType
38
- ? InferSchema<TValueType["schema"], TValueTypes>
39
- : unknown
42
+ ? [TValueType] extends [never]
43
+ ? unknown
44
+ : TValueType extends ValueType
45
+ ? InferSchema<TValueType["schema"], TValueTypes>
46
+ : unknown
40
47
  : unknown
41
48
 
42
49
  type RequiredFieldIds<TFields extends Record<string, ObjectFieldSchema>> = {
@@ -68,6 +75,7 @@ type InferObjectFields<
68
75
 
69
76
  interface PrimitiveSchemaValueMap {
70
77
  fileRef: FileRef
78
+ userRef: UserRef
71
79
  string: string
72
80
  uuid: string
73
81
  boolean: boolean
@@ -102,26 +110,37 @@ type InferValueTypeRefSchema<
102
110
  * Convert ontology schema definitions into runtime value types.
103
111
  *
104
112
  * This is the core typing bridge used by the future object SDK APIs.
113
+ *
114
+ * A schema typed as the whole `Schema` union (a helper returning `Schema`, say) infers `unknown`:
115
+ * its array, map and object children are `Schema` again, so inferring it never terminates.
105
116
  */
106
117
  export type InferSchema<
107
118
  TSchema extends Schema,
108
- TValueTypes extends readonly ValueType[] = [],
109
- > = TSchema extends PrimitiveSchema
110
- ? PrimitiveSchemaValueMap[TSchema]
111
- : TSchema extends ComplexSchema
112
- ? InferComplexSchema<TSchema, TValueTypes>
113
- : TSchema extends ValueTypeRefSchema
114
- ? InferValueTypeRefSchema<TSchema, TValueTypes>
115
- : never
119
+ TValueTypes extends readonly ValueType[] = RegisteredValueTypes,
120
+ > = Schema extends TSchema
121
+ ? unknown
122
+ : TSchema extends PrimitiveSchema
123
+ ? PrimitiveSchemaValueMap[TSchema]
124
+ : TSchema extends ComplexSchema
125
+ ? InferComplexSchema<TSchema, TValueTypes>
126
+ : TSchema extends ValueTypeRefSchema
127
+ ? InferValueTypeRefSchema<TSchema, TValueTypes>
128
+ : never
116
129
 
117
130
  /** Property-level value inference with nullable support. */
118
131
  export type InferPropertyValue<
119
132
  TProperty extends Pick<Property, "schema" | "nullable">,
120
- TValueTypes extends readonly ValueType[] = [],
133
+ TValueTypes extends readonly ValueType[] = RegisteredValueTypes,
121
134
  > = TProperty["nullable"] extends true
122
135
  ? InferSchema<TProperty["schema"], TValueTypes> | null
123
136
  : InferSchema<TProperty["schema"], TValueTypes>
124
137
 
138
+ /**
139
+ * A registered value type wins over the semantic type carried on the ref, as it does at runtime:
140
+ * the registry keeps an explicit value type and only auto-registers the ref's copy when none
141
+ * exists. `valueTypeRef(VT)` carries `_semanticType` so a value type that is not registered
142
+ * (defined outside `ontology/`) still constrains units.
143
+ */
125
144
  type InferPropertySemanticTypeFromValueTypeRef<
126
145
  TProperty extends Pick<Property, "schema">,
127
146
  TValueTypes extends readonly ValueType[],
@@ -129,16 +148,20 @@ type InferPropertySemanticTypeFromValueTypeRef<
129
148
  type: "valueTypeRef"
130
149
  valueTypeId: infer TValueTypeId extends string
131
150
  }
132
- ? ResolveValueType<TValueTypes, TValueTypeId> extends {
133
- semanticType: infer TSemanticType extends QuantitativeTypeId
134
- }
135
- ? TSemanticType
136
- : never
151
+ ? [ResolveValueType<TValueTypes, TValueTypeId>] extends [never]
152
+ ? TProperty["schema"] extends { _semanticType: infer TSemanticType extends QuantitativeTypeId }
153
+ ? TSemanticType
154
+ : never
155
+ : ResolveValueType<TValueTypes, TValueTypeId> extends {
156
+ semanticType: infer TSemanticType extends QuantitativeTypeId
157
+ }
158
+ ? TSemanticType
159
+ : never
137
160
  : never
138
161
 
139
162
  export type InferPropertySemanticType<
140
163
  TProperty extends Pick<Property, "schema" | "semanticType">,
141
- TValueTypes extends readonly ValueType[] = [],
164
+ TValueTypes extends readonly ValueType[] = RegisteredValueTypes,
142
165
  > = TProperty["semanticType"] extends QuantitativeTypeId
143
166
  ? TProperty["semanticType"]
144
167
  : InferPropertySemanticTypeFromValueTypeRef<TProperty, TValueTypes>
@@ -152,7 +175,7 @@ export type InferPropertySemanticType<
152
175
  */
153
176
  export type InferPropertyUnit<
154
177
  TProperty extends Pick<Property, "schema" | "semanticType">,
155
- TValueTypes extends readonly ValueType[] = [],
178
+ TValueTypes extends readonly ValueType[] = RegisteredValueTypes,
156
179
  > =
157
180
  InferPropertySemanticType<TProperty, TValueTypes> extends infer TSemanticType extends
158
181
  QuantitativeTypeId
@@ -163,7 +186,7 @@ export type InferPropertyUnit<
163
186
 
164
187
  export type InferObjectProperties<
165
188
  TObjectType extends { properties: readonly Property[] },
166
- TValueTypes extends readonly ValueType[] = [],
189
+ TValueTypes extends readonly ValueType[] = RegisteredValueTypes,
167
190
  > =
168
191
  // Object types whose property ids are not statically known (the broad
169
192
  // `ObjectTypeWithPropertyTokens` base, e.g. as a generic constraint or
@@ -197,22 +220,19 @@ export type InferTelemetryPropertyIds<TObjectType extends { properties: readonly
197
220
  *
198
221
  * Iterates over the extracted telemetry property union directly (via `as P["id"]` remapping)
199
222
  * so that `P` is already resolved — avoids repeated indexed access through the token map
200
- * which would cause TS2589 on object types with many telemetry properties.
223
+ * which would cause TS2589 on object types with many telemetry properties. The semantic type is
224
+ * resolved as for a single append, so a batch requires exactly the units `telemetry()` does.
201
225
  */
202
226
  export type InferTelemetryBatchProperties<
203
227
  TObjectType extends { properties: readonly Property[] },
204
- TValueTypes extends readonly ValueType[] = [],
228
+ TValueTypes extends readonly ValueType[] = RegisteredValueTypes,
205
229
  > = {
206
- [P in Extract<
207
- TObjectType["properties"][number],
208
- { mode: "telemetry" }
209
- > as P["id"]]?: P["semanticType"] extends QuantitativeTypeId
210
- ? { value: InferPropertyValue<P, TValueTypes>; unit: UnitsOf<P["semanticType"]> }
211
- : P["schema"] extends { type: "valueTypeRef"; valueTypeId: infer TVtId extends string }
212
- ? ResolveValueType<TValueTypes, TVtId> extends {
213
- semanticType: infer TSem extends QuantitativeTypeId
214
- }
215
- ? { value: InferPropertyValue<P, TValueTypes>; unit: UnitsOf<TSem> }
216
- : InferPropertyValue<P, TValueTypes>
217
- : InferPropertyValue<P, TValueTypes>
230
+ [P in Extract<TObjectType["properties"][number], { mode: "telemetry" }> as P["id"]]?: [
231
+ InferPropertySemanticType<P, TValueTypes>,
232
+ ] extends [never]
233
+ ? InferPropertyValue<P, TValueTypes>
234
+ : {
235
+ value: InferPropertyValue<P, TValueTypes>
236
+ unit: UnitsOf<InferPropertySemanticType<P, TValueTypes>>
237
+ }
218
238
  }
@@ -1,4 +1,5 @@
1
1
  export { schemaFieldsToJsonSchema, schemaRecordToJsonSchema } from "./json-schema"
2
+ export { resolvePropertyQueryCapabilities } from "./query-capabilities"
2
3
  export { validateSchemaOrRefValue } from "./refs"
3
4
  export { createLinkTokenMap, createPropertyTokenMap } from "./tokens"
4
5
  export {
@@ -101,6 +101,18 @@ function schemaJsonSchema(
101
101
  required: ["blobId", "digest", "sizeBytes"],
102
102
  additionalProperties: false,
103
103
  }
104
+ case "userRef":
105
+ return {
106
+ type: "object",
107
+ properties: {
108
+ type: { type: "string", enum: ["user"] },
109
+ id: { type: "string", minLength: 1 },
110
+ },
111
+ required: ["type", "id"],
112
+ additionalProperties: false,
113
+ }
114
+ default:
115
+ schema satisfies never
104
116
  }
105
117
  }
106
118
 
@@ -0,0 +1,91 @@
1
+ import type { QueryScalarKind } from "../objects/query/ir"
2
+ import type { PrimitiveSchema } from "./types"
3
+
4
+ /**
5
+ * Yes/no decisions a primitive schema makes for rules that several modules share.
6
+ *
7
+ * Every primitive states every decision: adding one to `PrimitiveSchema` fails to compile until it
8
+ * has a row here, instead of inheriting string-like behavior from a denylist. Per-type behavior
9
+ * (value validation, normalization, JSON Schema, inference) stays in exhaustive switches next to
10
+ * the code that performs it.
11
+ */
12
+ export interface PrimitiveTraits {
13
+ /** Scalar kind object queries compare values with; `undefined` when values are not comparable. */
14
+ readonly queryScalarKind: QueryScalarKind | undefined
15
+ /** Exact matching: `eq`/`neq`/`in`/`exists` predicates and `query.filterable`. */
16
+ readonly exact: boolean
17
+ /** Exact-match search profile: `query.exact` and `search.exact`, matched against search input. */
18
+ readonly exactSearch: boolean
19
+ /** Ordering: range predicates and `query.sortable`. */
20
+ readonly sortable: boolean
21
+ /** Keyword search: `query.text`, search titles, and vector sources. */
22
+ readonly text: boolean
23
+ /** Substring `contains` predicates. */
24
+ readonly contains: boolean
25
+ /** Facet buckets: `query.facet`. */
26
+ readonly facet: boolean
27
+ /** Allowed anywhere inside a telemetry property's schema. */
28
+ readonly telemetry: boolean
29
+ /** Allowed anywhere inside a shared Action parameter's schema. */
30
+ readonly shareableParam: boolean
31
+ }
32
+
33
+ const comparable = {
34
+ exact: true,
35
+ exactSearch: true,
36
+ sortable: true,
37
+ text: false,
38
+ contains: false,
39
+ facet: true,
40
+ telemetry: true,
41
+ shareableParam: true,
42
+ } as const
43
+
44
+ const PRIMITIVE_TRAITS = {
45
+ string: { ...comparable, queryScalarKind: "string", text: true, contains: true },
46
+ uuid: { ...comparable, queryScalarKind: "uuid", contains: true },
47
+ integer: { ...comparable, queryScalarKind: "integer" },
48
+ double: { ...comparable, queryScalarKind: "double" },
49
+ decimal: { ...comparable, queryScalarKind: "decimal" },
50
+ date: { ...comparable, queryScalarKind: "date" },
51
+ timestamp: { ...comparable, queryScalarKind: "timestamp" },
52
+ boolean: { ...comparable, queryScalarKind: "boolean", sortable: false },
53
+ // Blob references are resolved through the object that holds them, never compared.
54
+ fileRef: {
55
+ queryScalarKind: undefined,
56
+ exact: false,
57
+ exactSearch: false,
58
+ sortable: false,
59
+ text: false,
60
+ contains: false,
61
+ facet: false,
62
+ telemetry: false,
63
+ shareableParam: false,
64
+ },
65
+ // User references match by identity, never against typed search input. They are not text, carry
66
+ // no order, and stay out of telemetry and shared sessions, which cannot disclose who they point to.
67
+ userRef: {
68
+ queryScalarKind: "userRef",
69
+ exact: true,
70
+ exactSearch: false,
71
+ sortable: false,
72
+ text: false,
73
+ contains: false,
74
+ facet: true,
75
+ telemetry: false,
76
+ shareableParam: false,
77
+ },
78
+ } as const satisfies Record<PrimitiveSchema, PrimitiveTraits>
79
+
80
+ export function isPrimitiveSchema(schema: unknown): schema is PrimitiveSchema {
81
+ return typeof schema === "string" && Object.hasOwn(PRIMITIVE_TRAITS, schema)
82
+ }
83
+
84
+ /**
85
+ * Traits for a primitive schema. Property schemas are not shape-validated at registration, so an
86
+ * untyped definition can still carry a string outside `PrimitiveSchema`: it gets `undefined`, and
87
+ * callers treat it as supporting no query feature.
88
+ */
89
+ export function primitiveTraits(schema: PrimitiveSchema): PrimitiveTraits | undefined {
90
+ return isPrimitiveSchema(schema) ? PRIMITIVE_TRAITS[schema] : undefined
91
+ }
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Query rules for a schema whose `valueTypeRef`s are already resolved. Registration uses them to
3
+ * accept declared `query` flags, query validation to accept operators, and the ontology API to
4
+ * report both, so the three cannot drift.
5
+ */
6
+ import type { QueryScalarKind } from "../objects/query/ir"
7
+ import { primitiveTraits } from "./primitives"
8
+ import type { Property, Schema, ValueType } from "./types"
9
+
10
+ /** `eq`/`neq`/`in`/`exists` predicates. */
11
+ export function isExactSchema(schema: Schema): boolean {
12
+ if (typeof schema === "string") return primitiveTraits(schema)?.exact === true
13
+ return schema.type === "enum"
14
+ }
15
+
16
+ /** `query.exact`, and through it `search.exact`: matched against search input. */
17
+ export function isExactSearchSchema(schema: Schema): boolean {
18
+ if (typeof schema === "string") return primitiveTraits(schema)?.exactSearch === true
19
+ return schema.type === "enum"
20
+ }
21
+
22
+ /** `query.filterable`: exact matching, or `contains` over a collection. */
23
+ export function isFilterableSchema(schema: Schema): boolean {
24
+ return (
25
+ isExactSchema(schema) ||
26
+ (typeof schema !== "string" && (schema.type === "array" || schema.type === "map"))
27
+ )
28
+ }
29
+
30
+ /** Range predicates and `query.sortable`. */
31
+ export function isSortableSchema(schema: Schema): boolean {
32
+ if (typeof schema === "string") return primitiveTraits(schema)?.sortable === true
33
+ return schema.type === "enum"
34
+ }
35
+
36
+ /** Keyword search. */
37
+ export function isTextSchema(schema: Schema): boolean {
38
+ if (typeof schema === "string") return primitiveTraits(schema)?.text === true
39
+ return schema.type === "enum" && schema.valueType === "string"
40
+ }
41
+
42
+ /** `contains`: substring for scalars, item for arrays, key for maps. */
43
+ export function isContainsSchema(schema: Schema): boolean {
44
+ if (typeof schema === "string") return primitiveTraits(schema)?.contains === true
45
+ return schema.type === "array" || schema.type === "map"
46
+ }
47
+
48
+ /** `query.facet`. */
49
+ export function isFacetSchema(schema: Schema): boolean {
50
+ if (typeof schema === "string") return primitiveTraits(schema)?.facet === true
51
+ return schema.type === "enum"
52
+ }
53
+
54
+ export function queryScalarKindForSchema(schema: Schema): QueryScalarKind | undefined {
55
+ if (typeof schema === "string") return primitiveTraits(schema)?.queryScalarKind
56
+ if (schema.type === "enum") return schema.valueType === "integer" ? "integer" : "string"
57
+ return undefined
58
+ }
59
+
60
+ /** Predicate operators a property may use in an object query. */
61
+ export type PropertyQueryOperator =
62
+ | "eq"
63
+ | "neq"
64
+ | "lt"
65
+ | "lte"
66
+ | "gt"
67
+ | "gte"
68
+ | "in"
69
+ | "exists"
70
+ | "contains"
71
+
72
+ /** What an object query can do with one property, resolved from its schema and `query` flags. */
73
+ export interface PropertyQueryCapabilities {
74
+ readonly operators: readonly PropertyQueryOperator[]
75
+ readonly sortable: boolean
76
+ readonly facet: boolean
77
+ readonly text: boolean
78
+ }
79
+
80
+ const PRIMARY_OPERATORS: readonly PropertyQueryOperator[] = ["eq", "in"]
81
+ const EXACT_OPERATORS: readonly PropertyQueryOperator[] = ["eq", "neq", "in", "exists"]
82
+ const RANGE_OPERATORS: readonly PropertyQueryOperator[] = ["lt", "lte", "gt", "gte"]
83
+ const OPERATOR_ORDER: readonly PropertyQueryOperator[] = [
84
+ "eq",
85
+ "neq",
86
+ "lt",
87
+ "lte",
88
+ "gt",
89
+ "gte",
90
+ "in",
91
+ "contains",
92
+ "exists",
93
+ ]
94
+
95
+ /**
96
+ * Resolve what object queries accept for a property, applying the same rules as query validation:
97
+ * primary ids always accept `eq`/`in`; other predicates, sorting, faceting, and keyword search need
98
+ * `query.searchable` plus the matching flag and a schema that supports it.
99
+ */
100
+ export function resolvePropertyQueryCapabilities(
101
+ property: Property,
102
+ valueTypesById: ReadonlyMap<string, ValueType>
103
+ ): PropertyQueryCapabilities {
104
+ const query = property.query?.searchable === true ? property.query : undefined
105
+ const schema = resolveQuerySchema(property.schema, valueTypesById)
106
+ const operators = new Set<PropertyQueryOperator>(property.primary ? PRIMARY_OPERATORS : [])
107
+
108
+ if (query?.filterable === true && schema) {
109
+ if (isExactSchema(schema)) for (const op of EXACT_OPERATORS) operators.add(op)
110
+ if (isSortableSchema(schema)) for (const op of RANGE_OPERATORS) operators.add(op)
111
+ if (isContainsSchema(schema)) operators.add("contains")
112
+ }
113
+
114
+ return {
115
+ operators: OPERATOR_ORDER.filter((op) => operators.has(op)),
116
+ sortable: query?.sortable === true && schema !== undefined && isSortableSchema(schema),
117
+ facet: query?.facet === true && schema !== undefined && isFacetSchema(schema),
118
+ text:
119
+ query?.text === true &&
120
+ property.mode !== "telemetry" &&
121
+ schema !== undefined &&
122
+ isTextSchema(schema),
123
+ }
124
+ }
125
+
126
+ function resolveQuerySchema(
127
+ schema: Schema,
128
+ valueTypesById: ReadonlyMap<string, ValueType>,
129
+ seen = new Set<string>()
130
+ ): Schema | undefined {
131
+ if (typeof schema === "string" || schema.type !== "valueTypeRef") return schema
132
+ if (seen.has(schema.valueTypeId)) return undefined
133
+ seen.add(schema.valueTypeId)
134
+ const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema
135
+ return resolved ? resolveQuerySchema(resolved, valueTypesById, seen) : undefined
136
+ }
@@ -1,5 +1,6 @@
1
1
  import { OntologyValidationError } from "./errors"
2
2
  import type { InferSchema } from "./inference"
3
+ import type { RegisteredValueTypes } from "./registered"
3
4
  import type { ObjectType, Schema, ValueType } from "./types"
4
5
  import { isRecord, validateSchemaValue } from "./validation"
5
6
 
@@ -17,7 +18,7 @@ export type SchemaOrRef = Schema | ObjectRefSchema
17
18
 
18
19
  export type InferSchemaOrRef<
19
20
  TSchema extends SchemaOrRef,
20
- TValueTypes extends readonly ValueType[] = [],
21
+ TValueTypes extends readonly ValueType[] = RegisteredValueTypes,
21
22
  > =
22
23
  TSchema extends ObjectRefSchema<infer TObjectTypeId>
23
24
  ? ObjectRef<TObjectTypeId>
@@ -25,14 +26,40 @@ export type InferSchemaOrRef<
25
26
  ? InferSchema<TSchema, TValueTypes>
26
27
  : never
27
28
 
28
- export function ref<const TObjectType extends ObjectType>(
29
- objectType: TObjectType
30
- ): ObjectRefSchema<TObjectType["id"]> {
31
- return {
29
+ interface RefBuilder {
30
+ /**
31
+ * Reference to one object of `objectType`, for Action and Workflow parameters.
32
+ *
33
+ * Object properties point at other objects with `link(...)` instead: a link is traversable,
34
+ * queryable from both ends, and kept consistent when its target is deleted.
35
+ */
36
+ <const TObjectType extends ObjectType>(
37
+ objectType: TObjectType
38
+ ): ObjectRefSchema<TObjectType["id"]>
39
+ /** Reference to a Sixb user, valued `{ type: "user", id }`. Serialized as `"userRef"`. */
40
+ user(): "userRef"
41
+ /** Reference to a stored file, valued as a `FileRef`. Serialized as `"fileRef"`. */
42
+ file(): "fileRef"
43
+ }
44
+
45
+ /**
46
+ * Schemas that point outside the value itself.
47
+ *
48
+ * Scalars are plain strings (`"string"`, `"timestamp"`); anything that points elsewhere or takes
49
+ * parameters is a builder: `ref(Customer)`, `ref.user()`, `ref.file()`.
50
+ */
51
+ export const ref: RefBuilder = Object.assign(
52
+ <const TObjectType extends ObjectType>(
53
+ objectType: TObjectType
54
+ ): ObjectRefSchema<TObjectType["id"]> => ({
32
55
  type: "objectRef",
33
56
  objectTypeId: objectType.id,
57
+ }),
58
+ {
59
+ user: (): "userRef" => "userRef",
60
+ file: (): "fileRef" => "fileRef",
34
61
  }
35
- }
62
+ )
36
63
 
37
64
  /** Build an exact, typed reference to one object instance. */
38
65
  export function objectRef<const TObjectType extends ObjectType>(
@@ -0,0 +1,22 @@
1
+ import type { ObjectTypeWithPropertyTokens } from "./tokens"
2
+ import type { SixbObjectTypeMap, SixbValueTypeMap, ValueType } from "./types"
3
+
4
+ /**
5
+ * Every object type the generated ontology manifest registers.
6
+ *
7
+ * It is the one registry every typed surface resolves string link targets against, so the same
8
+ * query is typed the same way in an Action, a Workflow and the browser. Without a manifest it is the
9
+ * loose base type: id-only link targets then degrade gracefully instead of failing.
10
+ *
11
+ * Deliberately not generic. A registry parameterized per call site gives each site its own type
12
+ * identity, and TypeScript then has to compare otherwise identical SDK types structurally.
13
+ */
14
+ export type RegisteredObjectType = [keyof SixbObjectTypeMap] extends [never]
15
+ ? ObjectTypeWithPropertyTokens
16
+ : Extract<SixbObjectTypeMap[keyof SixbObjectTypeMap], ObjectTypeWithPropertyTokens>
17
+
18
+ /** Every value type the generated ontology manifest registers, for string-only `valueTypeRef`s. */
19
+ export type RegisteredValueTypes = readonly Extract<
20
+ SixbValueTypeMap[keyof SixbValueTypeMap],
21
+ ValueType
22
+ >[]
@@ -68,9 +68,11 @@ function isOntologyDocumentSource(
68
68
  * via `valueTypeRef` nodes that carry a `_resolved` schema.
69
69
  *
70
70
  * This enables auto-registration: when codegen emits `valueTypeRef(VT)`,
71
- * it stores the resolved schema inline. We extract it here so the runtime
72
- * `valueTypesById` registry is populated without requiring users to pass
73
- * ValueTypes explicitly.
71
+ * it stores the resolved schema (and the semantic type, if any) inline. We
72
+ * extract them here so the runtime `valueTypesById` registry is populated
73
+ * without requiring users to pass ValueTypes explicitly. Unit validation reads
74
+ * the semantic type from that registry, so dropping it would make a
75
+ * unit-bearing value type reject every unit.
74
76
  */
75
77
  function extractValueTypesFromSchema(
76
78
  schema: Schema,
@@ -89,6 +91,7 @@ function extractValueTypesFromSchema(
89
91
  id: schema.valueTypeId,
90
92
  name: localName,
91
93
  schema: schema._resolved,
94
+ ...(schema._semanticType === undefined ? {} : { semanticType: schema._semanticType }),
92
95
  })
93
96
  extractValueTypesFromSchema(schema._resolved, collected, seen)
94
97
  }
@@ -1,3 +1,4 @@
1
+ import type { InferObjectProperties } from "./inference"
1
2
  import {
2
3
  createLinkPathSelection,
3
4
  type LinkPathSelectionBuilder,
@@ -7,6 +8,7 @@ import type { ObjectLink, ObjectType, Property } from "./types"
7
8
 
8
9
  declare const propertyTokenBrand: unique symbol
9
10
  declare const linkTokenBrand: unique symbol
11
+ declare const objectPropertiesBrand: unique symbol
10
12
 
11
13
  /**
12
14
  * Strongly-typed handle to a property on a specific object type.
@@ -57,12 +59,49 @@ export type LinkTokenMap<TObjectType extends ObjectType> = {
57
59
  /**
58
60
  * Object type with property tokens (`p.*`).
59
61
  *
60
- * The original ontology shape is preserved; this only adds typed handles.
62
+ * The original ontology shape is preserved; this only adds typed handles, and the type-only
63
+ * property values every row of this object type carries.
61
64
  */
62
65
  export type ObjectTypeWithPropertyTokens<TObjectType extends ObjectType = ObjectType> =
63
66
  TObjectType & {
64
67
  readonly p: PropertyTokenMap<TObjectType>
65
- }
68
+ } & ObjectPropertiesMetadata<TObjectType>
69
+
70
+ /**
71
+ * Type-only property values of an object type, inferred once where the type is defined so SDK types
72
+ * read them back by indexed access instead of re-deriving them from `properties`.
73
+ *
74
+ * Exported only so declaration files can name it, like the token maps.
75
+ */
76
+ export type ObjectPropertiesMetadata<TObjectType extends ObjectType> = {
77
+ readonly [objectPropertiesBrand]?: string extends TObjectType["id"]
78
+ ? { readonly properties: Record<string, unknown> }
79
+ : ObjectPropertiesCarrier<TObjectType>
80
+ }
81
+
82
+ /**
83
+ * Carrier of an object type's inferred property values.
84
+ *
85
+ * When TypeScript relates, or infers between, two instantiations of a generic type it has not been
86
+ * told the variance of, it measures that variance by probing the type with marker types. A probe
87
+ * that reached the schema inference over a marker overflowed its depth limits (TS2589), in code as
88
+ * ordinary as reassigning a query. Declaring this carrier invariant stops every probe here, so an
89
+ * object type costs no more to relate than its tokens. The loose base type carries a plain record
90
+ * instead, which a concrete object type's carrier relates to structurally.
91
+ */
92
+ interface ObjectPropertiesCarrier<in out TObjectType extends ObjectType> {
93
+ readonly properties: InferObjectProperties<TObjectType>
94
+ }
95
+
96
+ /**
97
+ * The property values of an object type, as its rows carry them.
98
+ *
99
+ * Reads the type computed once by {@link ObjectTypeWithPropertyTokens}. For the loose base type,
100
+ * whose property ids are not statically known, it is `Record<string, unknown>`.
101
+ */
102
+ export type ObjectTypeProperties<TObjectType extends ObjectTypeWithPropertyTokens> = NonNullable<
103
+ TObjectType[typeof objectPropertiesBrand]
104
+ >["properties"]
66
105
 
67
106
  /**
68
107
  * Object type with property tokens (`p.*`) and link tokens (`l.*`).
@@ -22,6 +22,7 @@ import type { QuantitativeTypeId } from "./units"
22
22
  * - `"uuid"` for an external system identifier.
23
23
  * - `"timestamp"` for `lastObservedAt`.
24
24
  * - `"fileRef"` for blob-backed documents, images, and attachments.
25
+ * - `"userRef"` for a Sixb user, such as a task's assignee (author it with `ref.user()`).
25
26
  * - `"double"` for telemetry such as temperature or humidity.
26
27
  */
27
28
  export type PrimitiveSchema =
@@ -34,12 +35,18 @@ export type PrimitiveSchema =
34
35
  | "timestamp"
35
36
  | "uuid"
36
37
  | "fileRef"
38
+ | "userRef"
37
39
 
38
40
  export interface ValueTypeRefSchema {
39
41
  type: "valueTypeRef"
40
42
  valueTypeId: string
41
43
  /** Type-level: fully resolved schema for direct inference. Populated by codegen. */
42
44
  _resolved?: Schema
45
+ /**
46
+ * The referenced value type's `semanticType`, carried next to `_resolved` so a value type that
47
+ * is registered only through this ref keeps its unit constraint. Populated by `valueTypeRef(VT)`.
48
+ */
49
+ _semanticType?: QuantitativeTypeId
43
50
  }
44
51
 
45
52
  /**
@@ -414,13 +421,22 @@ export interface ObjectType {
414
421
  * Ambient id-to-object-type index for app ontology definitions.
415
422
  *
416
423
  * Sixb generates a `.sixb/types/ontology.d.ts` module augmentation that adds
417
- * entries here, letting client-side query types resolve string link targets
418
- * like `"Customer"` to the exported `Customer` object type without changing the
419
- * runtime ontology shape.
424
+ * entries here. Every typed surface — `sixb.objects(...)`, Action reads, the
425
+ * client query builder — resolves string link targets like `"Customer"` through
426
+ * it, without changing the runtime ontology shape.
420
427
  */
421
428
  // biome-ignore lint/suspicious/noEmptyInterface: App code augments this interface.
422
429
  export interface SixbObjectTypeMap {}
423
430
 
431
+ /**
432
+ * Ambient id-to-value-type index, generated alongside {@link SixbObjectTypeMap}.
433
+ *
434
+ * It types properties declared with a string-only `valueTypeRef("id")`, whose
435
+ * schema is not carried by the reference itself.
436
+ */
437
+ // biome-ignore lint/suspicious/noEmptyInterface: App code augments this interface.
438
+ export interface SixbValueTypeMap {}
439
+
424
440
  /**
425
441
  * Root ontology document for object type modeling.
426
442
  *