@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
@@ -14,10 +14,11 @@ import type { EmbeddingModelCatalog } from "../models";
14
14
  import type { ModelExecutionSession } from "../models/execution/session";
15
15
  import type { ObjectQuery, ObjectQueryExplanation, ObjectQueryPredicateComparison, ObjectQueryPredicateContains, ObjectQueryPredicateExists, ObjectQueryPredicateGroup, ObjectQueryPredicateIn, ObjectQueryPredicateNot, ObjectQuerySortDirection, ValidatedObjectQuery } from "../objects/query";
16
16
  import type { ObjectVectorHandle, VectorProfileName } from "../objects/vectors/types";
17
- import type { ObjectLinkTargetType, ObjectRef, ObjectType, Property, ValueType } from "../ontology";
18
- import type { InferObjectProperties, InferPropertyUnit, InferPropertyValue, InferTelemetryBatchProperties, InferTelemetryPropertyIds } from "../ontology/inference";
17
+ import type { ObjectLinkTargetType, ObjectRef, Property } from "../ontology";
18
+ import type { InferPropertyUnit, InferPropertyValue, InferTelemetryBatchProperties, InferTelemetryPropertyIds } from "../ontology/inference";
19
+ import type { RegisteredObjectType } from "../ontology/registered";
19
20
  import type { OntologyDocumentInput, OntologyRegistry, OntologySource } from "../ontology/registry";
20
- import type { LinkToken, ObjectTypeWithPropertyTokens, PropertyToken } from "../ontology/tokens";
21
+ import type { LinkToken, ObjectTypeProperties, ObjectTypeWithPropertyTokens, PropertyToken } from "../ontology/tokens";
21
22
  import type { Queues } from "../queues";
22
23
  import type { ActionRunRecord, ObjectLinkRow, Storage } from "../storage";
23
24
  /**
@@ -63,28 +64,30 @@ export type BatchItemResult<T> = {
63
64
  readonly error: Error;
64
65
  };
65
66
  export type { OntologyDocumentInput, OntologySource };
66
- type ObjectTypeFromSource<TSource> = TSource extends {
67
- objectTypes: infer TObjectTypes extends readonly ObjectTypeWithPropertyTokens[];
68
- } ? TObjectTypes[number] : TSource extends ObjectTypeWithPropertyTokens ? TSource : never;
69
- type ValueTypeFromSource<TSource> = TSource extends {
70
- valueTypes: infer TValueTypes extends readonly ValueType[];
71
- } ? TValueTypes[number] : never;
72
- export type RegisteredObjectType<TOntologySources extends readonly OntologySource[]> = ObjectTypeFromSource<TOntologySources[number]>;
73
- export type RegisteredValueTypes<TOntologySources extends readonly OntologySource[]> = readonly ValueTypeFromSource<TOntologySources[number]>[];
74
- export type TwinObject<TObjectType extends ObjectType, TValueTypes extends readonly ValueType[]> = {
67
+ /** One stored object. Covariant: a row of an object type is a row of the loose base type. */
68
+ export type TwinObject<out TObjectType extends ObjectTypeWithPropertyTokens> = {
75
69
  primaryId: string;
76
70
  objectTypeId: TObjectType["id"];
77
- properties: InferObjectProperties<TObjectType, TValueTypes>;
71
+ properties: ObjectTypeProperties<TObjectType>;
78
72
  createdAt: Date;
79
73
  updatedAt: Date;
80
74
  };
81
- type MaterializedObjectRow<TObjectType extends Pick<ObjectType, "id" | "properties">, TValueTypes extends readonly ValueType[]> = {
82
- primaryId: string;
83
- objectTypeId: TObjectType["id"];
84
- properties: InferObjectProperties<TObjectType, TValueTypes>;
85
- createdAt: Date;
86
- updatedAt: Date;
75
+ /** A row returned by an object query, before any `.expand(...)`. */
76
+ export type ObjectQueryRow<TObjectType extends ObjectTypeWithPropertyTokens> = TwinObject<TObjectType> & {
77
+ /** Relevance, present when the query ranks its results (`search`, `vector`). */
78
+ score?: number;
79
+ };
80
+ /**
81
+ * An object attached under a row's `.links` by `.expand(...)`, before any nested expansion. The
82
+ * executor attaches `linkProperties` only when the relationship carries metadata.
83
+ */
84
+ export type ObjectExpansionRow<TObjectType extends ObjectTypeWithPropertyTokens> = TwinObject<TObjectType> & {
85
+ linkProperties?: Record<string, unknown>;
87
86
  };
87
+ /**
88
+ * Flattens a row built from intersections, so editors show its fields instead of the aliases it was
89
+ * built from. The `& {}` is what makes TypeScript print the fields.
90
+ */
88
91
  type Simplify<T> = {
89
92
  [K in keyof T]: T[K];
90
93
  } & {};
@@ -105,49 +108,49 @@ type LinkTokenForObjectType<TObjectType extends ObjectTypeWithPropertyTokens> =
105
108
  type PropertyById<TObjectType extends ObjectTypeWithPropertyTokens, TPropertyId extends TObjectType["properties"][number]["id"]> = Extract<TObjectType["properties"][number], {
106
109
  id: TPropertyId;
107
110
  }>;
108
- type PropertyWhereValue<TObjectType extends ObjectTypeWithPropertyTokens, TPropertyId extends TObjectType["properties"][number]["id"], TValueTypes extends readonly ValueType[]> = InferPropertyValue<PropertyById<TObjectType, TPropertyId>, TValueTypes>;
109
- type PropertyWhereContainsValue<TObjectType extends ObjectTypeWithPropertyTokens, TPropertyId extends TObjectType["properties"][number]["id"], TValueTypes extends readonly ValueType[]> = NonNullable<PropertyWhereValue<TObjectType, TPropertyId, TValueTypes>> extends string ? string : NonNullable<PropertyWhereValue<TObjectType, TPropertyId, TValueTypes>> extends readonly (infer TItem)[] ? TItem : NonNullable<PropertyWhereValue<TObjectType, TPropertyId, TValueTypes>> extends Record<string, unknown> ? string : never;
110
- type PropertyWhereComparisonClause<TObjectType extends ObjectTypeWithPropertyTokens, TPropertyId extends TObjectType["properties"][number]["id"], TValueTypes extends readonly ValueType[]> = Omit<ObjectQueryPredicateComparison, "propertyId" | "value"> & {
111
+ type PropertyWhereValue<TObjectType extends ObjectTypeWithPropertyTokens, TPropertyId extends TObjectType["properties"][number]["id"]> = InferPropertyValue<PropertyById<TObjectType, TPropertyId>>;
112
+ type PropertyWhereContainsValue<TObjectType extends ObjectTypeWithPropertyTokens, TPropertyId extends TObjectType["properties"][number]["id"]> = NonNullable<PropertyWhereValue<TObjectType, TPropertyId>> extends string ? string : NonNullable<PropertyWhereValue<TObjectType, TPropertyId>> extends readonly (infer TItem)[] ? TItem : NonNullable<PropertyWhereValue<TObjectType, TPropertyId>> extends Record<string, unknown> ? string : never;
113
+ type PropertyWhereComparisonClause<TObjectType extends ObjectTypeWithPropertyTokens, TPropertyId extends TObjectType["properties"][number]["id"]> = Omit<ObjectQueryPredicateComparison, "propertyId" | "value"> & {
111
114
  propertyId: TPropertyId;
112
- value: PropertyWhereValue<TObjectType, TPropertyId, TValueTypes>;
115
+ value: PropertyWhereValue<TObjectType, TPropertyId>;
113
116
  };
114
- type PropertyWhereInClause<TObjectType extends ObjectTypeWithPropertyTokens, TPropertyId extends TObjectType["properties"][number]["id"], TValueTypes extends readonly ValueType[]> = Omit<ObjectQueryPredicateIn, "propertyId" | "values"> & {
117
+ type PropertyWhereInClause<TObjectType extends ObjectTypeWithPropertyTokens, TPropertyId extends TObjectType["properties"][number]["id"]> = Omit<ObjectQueryPredicateIn, "propertyId" | "values"> & {
115
118
  propertyId: TPropertyId;
116
- values: readonly PropertyWhereValue<TObjectType, TPropertyId, TValueTypes>[];
119
+ values: readonly PropertyWhereValue<TObjectType, TPropertyId>[];
117
120
  };
118
121
  type PropertyWhereExistsClause<TObjectType extends ObjectTypeWithPropertyTokens, TPropertyId extends TObjectType["properties"][number]["id"]> = Omit<ObjectQueryPredicateExists, "propertyId"> & {
119
122
  propertyId: TPropertyId;
120
123
  };
121
- type PropertyWhereContainsClause<TObjectType extends ObjectTypeWithPropertyTokens, TPropertyId extends TObjectType["properties"][number]["id"], TValueTypes extends readonly ValueType[]> = Omit<ObjectQueryPredicateContains, "propertyId" | "value"> & {
124
+ type PropertyWhereContainsClause<TObjectType extends ObjectTypeWithPropertyTokens, TPropertyId extends TObjectType["properties"][number]["id"]> = Omit<ObjectQueryPredicateContains, "propertyId" | "value"> & {
122
125
  propertyId: TPropertyId;
123
- value: PropertyWhereContainsValue<TObjectType, TPropertyId, TValueTypes>;
126
+ value: PropertyWhereContainsValue<TObjectType, TPropertyId>;
124
127
  };
125
128
  /** Predicate operators exposed on `where` builder properties. */
126
- type PropertyPredicate<TObjectType extends ObjectTypeWithPropertyTokens, TPropertyId extends TObjectType["properties"][number]["id"], TValueTypes extends readonly ValueType[]> = {
127
- eq(value: PropertyWhereValue<TObjectType, TPropertyId, TValueTypes>): PropertyWhereComparisonClause<TObjectType, TPropertyId, TValueTypes> & {
129
+ type PropertyPredicate<TObjectType extends ObjectTypeWithPropertyTokens, TPropertyId extends TObjectType["properties"][number]["id"]> = {
130
+ eq(value: PropertyWhereValue<TObjectType, TPropertyId>): PropertyWhereComparisonClause<TObjectType, TPropertyId> & {
128
131
  op: "eq";
129
132
  };
130
- neq(value: PropertyWhereValue<TObjectType, TPropertyId, TValueTypes>): PropertyWhereComparisonClause<TObjectType, TPropertyId, TValueTypes> & {
133
+ neq(value: PropertyWhereValue<TObjectType, TPropertyId>): PropertyWhereComparisonClause<TObjectType, TPropertyId> & {
131
134
  op: "neq";
132
135
  };
133
- lt(value: PropertyWhereValue<TObjectType, TPropertyId, TValueTypes>): PropertyWhereComparisonClause<TObjectType, TPropertyId, TValueTypes> & {
136
+ lt(value: PropertyWhereValue<TObjectType, TPropertyId>): PropertyWhereComparisonClause<TObjectType, TPropertyId> & {
134
137
  op: "lt";
135
138
  };
136
- lte(value: PropertyWhereValue<TObjectType, TPropertyId, TValueTypes>): PropertyWhereComparisonClause<TObjectType, TPropertyId, TValueTypes> & {
139
+ lte(value: PropertyWhereValue<TObjectType, TPropertyId>): PropertyWhereComparisonClause<TObjectType, TPropertyId> & {
137
140
  op: "lte";
138
141
  };
139
- gt(value: PropertyWhereValue<TObjectType, TPropertyId, TValueTypes>): PropertyWhereComparisonClause<TObjectType, TPropertyId, TValueTypes> & {
142
+ gt(value: PropertyWhereValue<TObjectType, TPropertyId>): PropertyWhereComparisonClause<TObjectType, TPropertyId> & {
140
143
  op: "gt";
141
144
  };
142
- gte(value: PropertyWhereValue<TObjectType, TPropertyId, TValueTypes>): PropertyWhereComparisonClause<TObjectType, TPropertyId, TValueTypes> & {
145
+ gte(value: PropertyWhereValue<TObjectType, TPropertyId>): PropertyWhereComparisonClause<TObjectType, TPropertyId> & {
143
146
  op: "gte";
144
147
  };
145
- in(values: readonly PropertyWhereValue<TObjectType, TPropertyId, TValueTypes>[]): PropertyWhereInClause<TObjectType, TPropertyId, TValueTypes>;
148
+ in(values: readonly PropertyWhereValue<TObjectType, TPropertyId>[]): PropertyWhereInClause<TObjectType, TPropertyId>;
146
149
  exists(value?: boolean): PropertyWhereExistsClause<TObjectType, TPropertyId>;
147
- contains(value: PropertyWhereContainsValue<TObjectType, TPropertyId, TValueTypes>): PropertyWhereContainsClause<TObjectType, TPropertyId, TValueTypes>;
150
+ contains(value: PropertyWhereContainsValue<TObjectType, TPropertyId>): PropertyWhereContainsClause<TObjectType, TPropertyId>;
148
151
  };
149
- type PropertyWhereClause<TObjectType extends ObjectTypeWithPropertyTokens, TValueTypes extends readonly ValueType[]> = HasKnownPropertyIds<TObjectType> extends false ? ObjectQueryPredicateComparison | ObjectQueryPredicateIn | ObjectQueryPredicateExists | ObjectQueryPredicateContains : {
150
- [TPropertyId in TObjectType["properties"][number]["id"]]: PropertyWhereComparisonClause<TObjectType, TPropertyId, TValueTypes> | PropertyWhereInClause<TObjectType, TPropertyId, TValueTypes> | PropertyWhereExistsClause<TObjectType, TPropertyId> | PropertyWhereContainsClause<TObjectType, TPropertyId, TValueTypes>;
152
+ type PropertyWhereClause<TObjectType extends ObjectTypeWithPropertyTokens> = HasKnownPropertyIds<TObjectType> extends false ? ObjectQueryPredicateComparison | ObjectQueryPredicateIn | ObjectQueryPredicateExists | ObjectQueryPredicateContains : {
153
+ [TPropertyId in TObjectType["properties"][number]["id"]]: PropertyWhereComparisonClause<TObjectType, TPropertyId> | PropertyWhereInClause<TObjectType, TPropertyId> | PropertyWhereExistsClause<TObjectType, TPropertyId> | PropertyWhereContainsClause<TObjectType, TPropertyId>;
151
154
  }[TObjectType["properties"][number]["id"]];
152
155
  /**
153
156
  * Predicate operators for an object type whose properties are not statically
@@ -182,23 +185,23 @@ type UntypedPropertyPredicate = {
182
185
  /** True when the object type's property ids are statically known literals. */
183
186
  type HasKnownPropertyIds<TObjectType extends ObjectTypeWithPropertyTokens> = string extends TObjectType["properties"][number]["id"] ? false : true;
184
187
  /** Typed ObjectSet where predicate. Serialized shape matches object query IR predicates. */
185
- export type ObjectWhereClause<TObjectType extends ObjectTypeWithPropertyTokens, TValueTypes extends readonly ValueType[]> = PropertyWhereClause<TObjectType, TValueTypes> | (Omit<ObjectQueryPredicateGroup, "items"> & {
186
- items: readonly ObjectWhereClause<TObjectType, TValueTypes>[];
188
+ export type ObjectWhereClause<TObjectType extends ObjectTypeWithPropertyTokens> = PropertyWhereClause<TObjectType> | (Omit<ObjectQueryPredicateGroup, "items"> & {
189
+ items: readonly ObjectWhereClause<TObjectType>[];
187
190
  }) | (Omit<ObjectQueryPredicateNot, "item"> & {
188
- item: ObjectWhereClause<TObjectType, TValueTypes>;
191
+ item: ObjectWhereClause<TObjectType>;
189
192
  });
190
193
  /**
191
194
  * Builder object passed to object query `where` callbacks.
192
195
  *
193
196
  * Example: `(r) => r.p.externalId.eq("RM-101")`
194
197
  */
195
- export type ObjectWhereBuilder<TObjectType extends ObjectTypeWithPropertyTokens, TValueTypes extends readonly ValueType[]> = {
198
+ export type ObjectWhereBuilder<TObjectType extends ObjectTypeWithPropertyTokens> = {
196
199
  p: HasKnownPropertyIds<TObjectType> extends false ? Record<string, UntypedPropertyPredicate> : {
197
- [TPropertyId in TObjectType["properties"][number]["id"]]: PropertyPredicate<TObjectType, TPropertyId, TValueTypes>;
200
+ [TPropertyId in TObjectType["properties"][number]["id"]]: PropertyPredicate<TObjectType, TPropertyId>;
198
201
  };
199
- and(...items: readonly ObjectWhereClause<TObjectType, TValueTypes>[]): ObjectWhereClause<TObjectType, TValueTypes>;
200
- or(...items: readonly ObjectWhereClause<TObjectType, TValueTypes>[]): ObjectWhereClause<TObjectType, TValueTypes>;
201
- not(item: ObjectWhereClause<TObjectType, TValueTypes>): ObjectWhereClause<TObjectType, TValueTypes>;
202
+ and(...items: readonly ObjectWhereClause<TObjectType>[]): ObjectWhereClause<TObjectType>;
203
+ or(...items: readonly ObjectWhereClause<TObjectType>[]): ObjectWhereClause<TObjectType>;
204
+ not(item: ObjectWhereClause<TObjectType>): ObjectWhereClause<TObjectType>;
202
205
  };
203
206
  export type TelemetryPropertyToken<TObjectType extends ObjectTypeWithPropertyTokens> = TObjectType["p"][InferTelemetryPropertyIds<TObjectType>];
204
207
  type AnyPropertyToken = PropertyToken<string, string, Property>;
@@ -209,15 +212,15 @@ export type ObjectSetQueryPropertyToken<TObjectType extends ObjectTypeWithProper
209
212
  * - if property has a semantic type, unit is required
210
213
  * - otherwise unit is disallowed
211
214
  */
212
- type TelemetryUnitField<TToken extends AnyPropertyToken, TValueTypes extends readonly ValueType[]> = InferPropertyUnit<TToken["property"], TValueTypes> extends never ? {
215
+ type TelemetryUnitField<TToken extends AnyPropertyToken> = InferPropertyUnit<TToken["property"]> extends never ? {
213
216
  unit?: never;
214
217
  } : {
215
- unit: InferPropertyUnit<TToken["property"], TValueTypes>;
218
+ unit: InferPropertyUnit<TToken["property"]>;
216
219
  };
217
- export type TelemetryAppendInput<TToken extends AnyPropertyToken, TValueTypes extends readonly ValueType[]> = {
218
- value: InferPropertyValue<TToken["property"], TValueTypes>;
220
+ export type TelemetryAppendInput<TToken extends AnyPropertyToken> = {
221
+ value: InferPropertyValue<TToken["property"]>;
219
222
  at: Date;
220
- } & TelemetryUnitField<TToken, TValueTypes>;
223
+ } & TelemetryUnitField<TToken>;
221
224
  export interface TelemetryHistoryInput {
222
225
  readonly from?: Date;
223
226
  readonly to?: Date;
@@ -231,8 +234,8 @@ export interface TelemetryHistoryInput {
231
234
  * same series back, typed through the same token, instead of sending the caller under the typed
232
235
  * surface to `sixb.storage.timeseries`.
233
236
  */
234
- export type TelemetryChannel<TToken extends AnyPropertyToken, TValueTypes extends readonly ValueType[]> = {
235
- append(input: TelemetryAppendInput<TToken, TValueTypes>): Promise<void>;
237
+ export type TelemetryChannel<TToken extends AnyPropertyToken> = {
238
+ append(input: TelemetryAppendInput<TToken>): Promise<void>;
236
239
  /**
237
240
  * Points for this series, oldest first unless `order: "desc"`.
238
241
  *
@@ -241,15 +244,15 @@ export type TelemetryChannel<TToken extends AnyPropertyToken, TValueTypes extend
241
244
  *
242
245
  * The point shape is written inline rather than extracted into a named alias. One more level of
243
246
  * alias indirection around `InferPropertyValue` in this output position overflows TS's instantiation
244
- * depth (TS2589) in consumers as ordinary as `points.map(...)` — the same budget the note on
245
- * `TwinObject` describes. `unit` is inferred through the same token as `append` writes it, rather
246
- * than widened to `string`: a read that kept `value` precise and gave up on `unit` would be an
247
- * arbitrary line, and both are the current ontology's view of a series it validated on write.
247
+ * depth (TS2589) in consumers as ordinary as `points.map(...)`. `unit` is inferred through the
248
+ * same token as `append` writes it, rather than widened to `string`: a read that kept `value`
249
+ * precise and gave up on `unit` would be an arbitrary line, and both are the current ontology's
250
+ * view of a series it validated on write.
248
251
  */
249
252
  history(input?: TelemetryHistoryInput): Promise<readonly {
250
- readonly value: InferPropertyValue<TToken["property"], TValueTypes>;
253
+ readonly value: InferPropertyValue<TToken["property"]>;
251
254
  readonly at: Date;
252
- readonly unit?: InferPropertyUnit<TToken["property"], TValueTypes>;
255
+ readonly unit?: InferPropertyUnit<TToken["property"]>;
253
256
  }[]>;
254
257
  };
255
258
  type TypedActionReference<TParams extends ActionParamsConfig = ActionParamsConfig> = {
@@ -299,16 +302,32 @@ export type ObjectSetListInput = {
299
302
  };
300
303
  type LinkTargetObjectTypeIdValue = string | readonly string[];
301
304
  type LinkTargetObjectTypeId<TLinkToken> = TLinkToken extends LinkToken<string, string, infer TTargetObjectTypeId> ? TTargetObjectTypeId extends readonly (infer TTargetId extends string)[] ? TTargetId : TTargetObjectTypeId extends string ? TTargetObjectTypeId : never : never;
302
- type ObjectTypeForId<TRegisteredObjectTypes extends ObjectTypeWithPropertyTokens, TObjectTypeId extends string> = [Extract<TRegisteredObjectTypes, {
305
+ type ObjectTypeForRegisteredId<TObjectTypeId extends string, TFallback extends ObjectTypeWithPropertyTokens> = [Extract<RegisteredObjectType, {
303
306
  id: TObjectTypeId;
304
- }>] extends [never] ? ObjectTypeWithPropertyTokens : Extract<TRegisteredObjectTypes, {
307
+ }>] extends [never] ? TFallback : Extract<RegisteredObjectType, {
305
308
  id: TObjectTypeId;
306
309
  }>;
310
+ /**
311
+ * Resolve an object type named by id, as seen from `TSource`.
312
+ *
313
+ * A self-reference (`link.self(...)`, or traversing one backwards) names the source's own id, so it
314
+ * resolves to the source. Every other id resolves through the generated registry first: a type
315
+ * reached through a link is then the very type the app imports and passes to `objects(...)`, which
316
+ * matters because builders are invariant in their object type. `TFallback` applies when the
317
+ * registry does not know the id — without a manifest, or for a stale one.
318
+ */
319
+ type ObjectTypeForId<TSource extends ObjectTypeWithPropertyTokens, TObjectTypeId extends string, TFallback extends ObjectTypeWithPropertyTokens = ObjectTypeWithPropertyTokens> = [TObjectTypeId] extends [TSource["id"]] ? [TSource["id"]] extends [TObjectTypeId] ? TSource : ObjectTypeForRegisteredId<TObjectTypeId, TFallback> : ObjectTypeForRegisteredId<TObjectTypeId, TFallback>;
307
320
  type DirectObjectTypeForLink<TLinkToken> = TLinkToken extends LinkToken<string, string, LinkTargetObjectTypeIdValue, infer TLink> ? Extract<ObjectLinkTargetType<TLink>, ObjectTypeWithPropertyTokens> : never;
308
- type ObjectTypeForLinkTarget<TRegisteredObjectTypes extends ObjectTypeWithPropertyTokens, TLinkToken> = [DirectObjectTypeForLink<TLinkToken>] extends [never] ? ObjectTypeForId<TRegisteredObjectTypes, LinkTargetObjectTypeId<TLinkToken>> : DirectObjectTypeForLink<TLinkToken>;
321
+ /**
322
+ * The object type a link token points to: the registered type, else the target `link(id, Target)`
323
+ * captured, else the loose base type.
324
+ */
325
+ type ObjectTypeForLinkTarget<TSource extends ObjectTypeWithPropertyTokens, TLinkToken> = ObjectTypeForId<TSource, LinkTargetObjectTypeId<TLinkToken>, [
326
+ DirectObjectTypeForLink<TLinkToken>
327
+ ] extends [never] ? ObjectTypeWithPropertyTokens : DirectObjectTypeForLink<TLinkToken>>;
309
328
  /**
310
329
  * True when the target type is a concrete ontology type rather than the degraded
311
- * generic base. Direct ObjectType links resolve before this point; unresolved
330
+ * generic base. Registered and direct targets resolve before this point; unresolved
312
331
  * id-only refs fall back to the base type, whose property ids are `string`.
313
332
  * Instantiating the typed token map over the broad `Property` union there
314
333
  * overflows TypeScript (the same reason `UntypedPropertyPredicate` exists). The
@@ -340,51 +359,11 @@ type LinkTokenCardinality<TLinkToken> = TLinkToken extends LinkToken<string, str
340
359
  cardinality: infer TCardinality extends string;
341
360
  } ? TCardinality : "many" : "many";
342
361
  type LinkTokenId<TLinkToken> = TLinkToken extends LinkToken<string, infer TLinkId, LinkTargetObjectTypeIdValue> ? TLinkId : never;
343
- type LinkTokenSourceObjectTypeId<TLinkToken> = TLinkToken extends LinkToken<infer TObjectTypeId, string, LinkTargetObjectTypeIdValue> ? TObjectTypeId : string;
344
- type ObjectLinkCardinality<TLink> = TLink extends {
345
- cardinality: infer TCardinality extends string;
346
- } ? TCardinality : "many";
347
- type ObjectLinkTarget<TRegisteredObjectTypes extends ObjectTypeWithPropertyTokens, TLink> = [
348
- Extract<ObjectLinkTargetType<TLink>, ObjectTypeWithPropertyTokens>
349
- ] extends [never] ? TLink extends {
350
- targetObjectTypeId: infer TTargetObjectTypeId extends LinkTargetObjectTypeIdValue;
351
- } ? ObjectTypeForId<TRegisteredObjectTypes, ResolveTargetTypeId<TTargetObjectTypeId>> : ObjectTypeWithPropertyTokens : Extract<ObjectLinkTargetType<TLink>, ObjectTypeWithPropertyTokens>;
352
- type ObjectLinkById<TObjectType extends Pick<ObjectType, "links">, TLinkId extends string> = Extract<TObjectType["links"][number], {
353
- id: TLinkId;
354
- }>;
355
- type HasKnownObjectLinkIds<TObjectType extends Pick<ObjectType, "links">> = string extends TObjectType["links"][number]["id"] ? false : true;
356
- /**
357
- * A branded accumulator entry for one expanded link. Unconstrained on purpose —
358
- * keeping recursion out of constraints is what avoids TS2589.
359
- */
360
- type ExpansionNode<TLinkToken, TRegisteredObjectTypes, TTarget, TCardinality, TChildren> = {
361
- readonly __linkToken: TLinkToken;
362
- readonly __registeredObjectTypes: TRegisteredObjectTypes;
363
- readonly __target: TTarget;
364
- readonly __cardinality: TCardinality;
365
- readonly __children: TChildren;
366
- };
367
- /** The single-key accumulator contribution of one `.expand(link, …)` call. */
368
- type ExpansionEntry<TLinkToken extends LinkToken<string, string, LinkTargetObjectTypeIdValue>, TRegisteredObjectTypes extends ObjectTypeWithPropertyTokens, TChild> = {
369
- [K in TLinkToken["id"]]: ExpansionNode<TLinkToken, TRegisteredObjectTypes, ObjectTypeForLinkTarget<TRegisteredObjectTypes, TLinkToken>, LinkTokenCardinality<TLinkToken>, TChild>;
370
- };
371
- type ExpansionNodeForSource<TNode, TObjectType extends Pick<ObjectType, "id" | "links">> = TNode extends ExpansionNode<infer TLinkToken, infer TRegisteredObjectTypes extends ObjectTypeWithPropertyTokens, infer TTarget, infer TCardinality, infer TChildren> ? LinkTokenId<TLinkToken> extends infer TLinkId extends string ? HasKnownObjectLinkIds<TObjectType> extends true ? [ObjectLinkById<TObjectType, TLinkId>] extends [never] ? never : ExpansionNode<TLinkToken, TRegisteredObjectTypes, ObjectLinkTarget<TRegisteredObjectTypes, ObjectLinkById<TObjectType, TLinkId>>, ObjectLinkCardinality<ObjectLinkById<TObjectType, TLinkId>>, TChildren> : LinkTokenSourceObjectTypeId<TLinkToken> extends TObjectType["id"] ? ExpansionNode<TLinkToken, TRegisteredObjectTypes, TTarget, TCardinality, TChildren> : never : never : never;
372
- type ExpansionLinksForSource<TLinks, TObjectType extends Pick<ObjectType, "id" | "links">> = {
373
- [K in keyof TLinks as [ExpansionNodeForSource<TLinks[K], TObjectType>] extends [never] ? never : K]: ExpansionNodeForSource<TLinks[K], TObjectType>;
374
- };
375
- /** Materialize one accumulated expansion entry into its row value. */
376
- type ExpandedLinkType<TNode, TValueTypes extends readonly ValueType[]> = TNode extends ExpansionNode<unknown, infer TRegisteredObjectTypes extends ObjectTypeWithPropertyTokens, infer TTarget, infer TCardinality, infer TChildren> ? TCardinality extends "one" ? ExpandedRowType<TTarget, TChildren, TValueTypes, TRegisteredObjectTypes> | null : ExpandedRowType<TTarget, TChildren, TValueTypes, TRegisteredObjectTypes>[] : never;
377
- /**
378
- * An expanded child row: the target object, optional edge `linkProperties` (the
379
- * executor attaches it only when the relationship carries metadata), and its own
380
- * nested `links` (present only when the child was itself expanded). The recursion
381
- * is confined to this lazily-evaluated position.
382
- */
383
362
  /**
384
363
  * Loud row substituted for a `.expand()` whose target type is MISSING from an
385
364
  * otherwise-present ontology manifest (a stale manifest, or a wrong link target
386
365
  * id). Reading a real property is then a compile error pointing at the fix,
387
- * instead of the old silent `Record<string, unknown>`. The no-manifest loose
366
+ * instead of a silent `Record<string, unknown>`. The no-manifest loose
388
367
  * default stays graceful — this only fires when the registry is concrete yet the
389
368
  * target id is absent, i.e. precision was expected but lost.
390
369
  */
@@ -396,111 +375,95 @@ type UnresolvedExpansionRow = {
396
375
  };
397
376
  createdAt: Date;
398
377
  updatedAt: Date;
399
- };
400
- type ExpandedRowType<TTarget, TChildren, TValueTypes extends readonly ValueType[], TRegisteredObjectTypes extends ObjectTypeWithPropertyTokens> = TTarget extends Pick<ObjectType, "id" | "properties" | "links"> ? string extends TTarget["id"] ? string extends TRegisteredObjectTypes["id"] ? ExpandedRowForSource<TTarget, TValueTypes, ExpansionLinksForSource<TChildren, TTarget>, {
401
- linkProperties?: Record<string, unknown>;
402
- }> : UnresolvedExpansionRow : ExpandedRowForSource<TTarget, TValueTypes, ExpansionLinksForSource<TChildren, TTarget>, {
403
378
  linkProperties?: Record<string, unknown>;
404
- }> : never;
405
- type ExpandedRowForSource<TObjectType extends Pick<ObjectType, "id" | "properties" | "links">, TValueTypes extends readonly ValueType[], TLinks, TExtra = unknown> = Simplify<MaterializedObjectRow<TObjectType, TValueTypes> & TExtra & ([keyof TLinks] extends [never] ? unknown : {
379
+ };
380
+ /**
381
+ * The row an expanded target contributes before its own nested expansions. A polymorphic target
382
+ * (`link(id, [A, B])`) yields a union of rows, discriminated by `objectTypeId`.
383
+ */
384
+ type ExpandedTargetRow<TTarget extends ObjectTypeWithPropertyTokens> = TTarget extends ObjectTypeWithPropertyTokens ? HasKnownObjectType<TTarget> extends true ? ObjectExpansionRow<TTarget> : string extends RegisteredObjectType["id"] ? ObjectExpansionRow<TTarget> : UnresolvedExpansionRow : never;
385
+ /** The `.links` entry one `.expand(link, …)` adds: `Target | null` for `"one"`, else `Target[]`. */
386
+ type ObjectExpansionLinks<TLinkToken, TChildRow> = {
406
387
  links: {
407
- [K in keyof TLinks]: ExpandedLinkType<TLinks[K], TValueTypes>;
388
+ [K in LinkTokenId<TLinkToken>]: LinkTokenCardinality<TLinkToken> extends "one" ? Simplify<TChildRow> | null : Simplify<TChildRow>[];
408
389
  };
409
- })>;
390
+ };
410
391
  /**
411
- * The terminal row of a query: the matched object, plus a typed `links` map once
412
- * the query accumulated expansions. A query with no `.expand(...)` returns the
413
- * plain materialized row, so existing `list`/`first` consumers are unchanged.
392
+ * Add the `.links` entry of one expansion to `TRow`. Distributes over a polymorphic row, so a
393
+ * nested expansion declared on one member type (`owner.expand(User.l.region)`) only reaches the
394
+ * rows of that type.
414
395
  */
415
- export type ObjectQueryRow<TObjectType extends ObjectTypeWithPropertyTokens, TValueTypes extends readonly ValueType[], TLinks> = TObjectType extends ObjectTypeWithPropertyTokens ? ExpandedRowForSource<TObjectType, TValueTypes, ExpansionLinksForSource<TLinks, TObjectType>> & {
416
- score?: number;
417
- } : never;
396
+ type WithExpansion<TRow, TLinkToken extends LinkToken<string, string, LinkTargetObjectTypeIdValue>, TChildRow> = TRow extends {
397
+ objectTypeId: infer TObjectTypeId;
398
+ } ? TLinkToken["objectTypeId"] extends TObjectTypeId ? TRow & ObjectExpansionLinks<TLinkToken, TChildRow> : TRow : TRow;
418
399
  /**
419
- * Builder passed to the nested `.expand(..., (e) => …)` callback. Exposes only
420
- * `expand`, resolving the next target type from direct metadata or the id
421
- * registry so deeper hops stay typed and accumulating `TAccumulated` so the
422
- * nested `.links` shape is recovered from the callback's return.
400
+ * The nested-expansion callback for a link token's resolved target type. `TChildRow`
401
+ * is inferred from the returned builder, recovering the nested `.links` shape.
423
402
  *
424
- * A type alias (not an interface) so relating two instantiations stays
425
- * structural — the same discipline `TwinObject` follows to avoid TS2589
426
- * (see the note above `TwinObject`). The only recursion is in the lazily
427
- * evaluated return/callback positions.
428
- *
429
- * When the target type is the degraded base (an unresolved id-only target), the
430
- * builder collapses to the untyped, non-generic {@link UntypedExpandBuilder}:
431
- * nested expansion still works, just without target-specific link/property
432
- * checking, and — crucially — without the self-referential generic instantiation
433
- * over the broad base type that would otherwise overflow TypeScript.
403
+ * Kept a plain (non-conditional) function type on purpose: wrapping the callback
404
+ * in a `TLinkToken extends … ? … : never` conditional blocks inference of
405
+ * `TChildRow` from the argument, so it would silently fall back to its default.
434
406
  */
435
- export type ObjectExpandBuilder<TObjectType extends ObjectTypeWithPropertyTokens, TRegisteredObjectTypes extends ObjectTypeWithPropertyTokens, TAccumulated = unknown> = HasKnownObjectType<TObjectType> extends false ? UntypedExpandBuilder : {
436
- readonly __links?: TAccumulated;
437
- expand<TLinkToken extends LinkToken<TObjectType["id"], string, LinkTargetObjectTypeIdValue>, TChild = unknown>(link: TLinkToken, build: ObjectExpandNested<TLinkToken, TRegisteredObjectTypes, TChild>): ObjectExpandBuilder<TObjectType, TRegisteredObjectTypes, TAccumulated & ExpansionEntry<TLinkToken, TRegisteredObjectTypes, TChild>>;
438
- expand<TLinkToken extends LinkToken<TObjectType["id"], string, LinkTargetObjectTypeIdValue>, TChild = unknown>(link: TLinkToken, options?: ObjectExpandOptions<ObjectTypeForLinkTarget<TRegisteredObjectTypes, TLinkToken>>, build?: ObjectExpandNested<TLinkToken, TRegisteredObjectTypes, TChild>): ObjectExpandBuilder<TObjectType, TRegisteredObjectTypes, TAccumulated & ExpansionEntry<TLinkToken, TRegisteredObjectTypes, TChild>>;
439
- };
407
+ type ObjectExpandNested<TSource extends ObjectTypeWithPropertyTokens, TLinkToken extends LinkToken<string, string, LinkTargetObjectTypeIdValue>, TChildRow> = (nested: ObjectExpandBuilder<ObjectTypeForLinkTarget<TSource, TLinkToken>>) => ObjectExpandBuilder<ObjectTypeForLinkTarget<TSource, TLinkToken>, TChildRow>;
440
408
  /**
441
- * Loose expand builder for degraded targets. Non-generic and self-referential,
442
- * so it never instantiates the typed token machinery over the broad base type.
443
- * Nested expansions still run; their shape simply degrades to the loose row.
409
+ * Builder passed to the nested `.expand(..., (e) => …)` callback. Exposes only `expand`; each call
410
+ * adds a `.links` entry to `TRow`, the row this expanded target contributes to its parent.
444
411
  */
445
- type UntypedExpandBuilder = {
446
- expand(link: LinkToken, optionsOrBuild?: ObjectExpandOptions<ObjectTypeWithPropertyTokens> | ((nested: UntypedExpandBuilder) => UntypedExpandBuilder), build?: (nested: UntypedExpandBuilder) => UntypedExpandBuilder): UntypedExpandBuilder;
447
- };
412
+ export interface ObjectExpandBuilder<in out TObjectType extends ObjectTypeWithPropertyTokens, out TRow = ExpandedTargetRow<TObjectType>> {
413
+ expand<TLinkToken extends LinkToken<TObjectType["id"], string, LinkTargetObjectTypeIdValue>, TChildRow = ExpandedTargetRow<ObjectTypeForLinkTarget<TObjectType, TLinkToken>>>(link: TLinkToken, build: ObjectExpandNested<TObjectType, TLinkToken, TChildRow>): ObjectExpandBuilder<TObjectType, WithExpansion<TRow, TLinkToken, TChildRow>>;
414
+ expand<TLinkToken extends LinkToken<TObjectType["id"], string, LinkTargetObjectTypeIdValue>, TChildRow = ExpandedTargetRow<ObjectTypeForLinkTarget<TObjectType, TLinkToken>>>(link: TLinkToken, options?: ObjectExpandOptions<ObjectTypeForLinkTarget<TObjectType, TLinkToken>>, build?: ObjectExpandNested<TObjectType, TLinkToken, TChildRow>): ObjectExpandBuilder<TObjectType, WithExpansion<TRow, TLinkToken, TChildRow>>;
415
+ }
448
416
  /**
449
- * The nested-expansion callback for a link token's resolved target type. `TChild`
450
- * is inferred from the returned builder's accumulator, recovering the nested
451
- * `.links` shape; on the degraded path the builder collapses and `TChild` stays
452
- * its `unknown` default.
417
+ * Executable object query rooted at `TObjectType`, returning `TRow` rows.
453
418
  *
454
- * Kept a plain (non-conditional) function type on purpose: wrapping the callback
455
- * in a `TLinkToken extends … ? … : never` conditional blocks inference of
456
- * `TChild` from the argument, so it would silently fall back to `unknown`.
419
+ * Invariant in the object type, whose predicates and tokens it both accepts and produces, and
420
+ * covariant in the row.
457
421
  */
458
- type ObjectExpandNested<TLinkToken extends LinkToken<string, string, LinkTargetObjectTypeIdValue>, TRegisteredObjectTypes extends ObjectTypeWithPropertyTokens, TChild> = (nested: ObjectExpandBuilder<ObjectTypeForLinkTarget<TRegisteredObjectTypes, TLinkToken>, TRegisteredObjectTypes>) => ObjectExpandBuilder<ObjectTypeForLinkTarget<TRegisteredObjectTypes, TLinkToken>, TRegisteredObjectTypes, TChild>;
459
- export interface ObjectQueryBuilder<TObjectType extends ObjectTypeWithPropertyTokens, TRegisteredObjectTypes extends ObjectTypeWithPropertyTokens, TValueTypes extends readonly ValueType[], TLinks = unknown> {
422
+ export interface ObjectQueryBuilder<in out TObjectType extends ObjectTypeWithPropertyTokens, out TRow = ObjectQueryRow<TObjectType>> {
460
423
  /** Normalized provider-neutral query IR. */
461
424
  readonly ir: ObjectQuery;
462
425
  /** Add a typed property predicate at the current object type. */
463
- where(where: (builder: ObjectWhereBuilder<TObjectType, TValueTypes>) => ObjectWhereClause<TObjectType, TValueTypes> | readonly ObjectWhereClause<TObjectType, TValueTypes>[]): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes, TLinks>;
426
+ where(where: (builder: ObjectWhereBuilder<TObjectType>) => ObjectWhereClause<TObjectType> | readonly ObjectWhereClause<TObjectType>[]): ObjectQueryBuilder<TObjectType, TRow>;
464
427
  /** Search configured text fields at the current object type. */
465
428
  search(query: string, options?: {
466
429
  fields?: readonly ObjectSetQueryPropertyToken<TObjectType>[];
467
- }): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes, TLinks>;
430
+ }): ObjectQueryBuilder<TObjectType, TRow>;
468
431
  /** Search a profile; text is embedded server-side with its configured model. */
469
432
  vector(profile: VectorProfileName<TObjectType>, vector: string, options: {
470
433
  k: number;
471
- }): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes, TLinks>;
434
+ }): ObjectQueryBuilder<TObjectType, TRow>;
472
435
  /** Follow an outgoing link and make the linked object type the current result type. */
473
436
  traverse<TLinkToken extends LinkToken<TObjectType["id"], string, LinkTargetObjectTypeIdValue>>(link: TLinkToken, options?: {
474
437
  direction?: "outgoing";
475
- }): ObjectQueryBuilder<ObjectTypeForLinkTarget<TRegisteredObjectTypes, TLinkToken>, TRegisteredObjectTypes, TValueTypes>;
438
+ }): ObjectQueryBuilder<ObjectTypeForLinkTarget<TObjectType, TLinkToken>>;
476
439
  /** Follow an incoming link and make the link source object type the current result type. */
477
440
  traverse<TLinkToken extends LinkToken<string, string, TObjectType["id"] | readonly string[]>>(link: TLinkToken, options: {
478
441
  direction: "incoming";
479
- }): ObjectQueryBuilder<ObjectTypeForId<TRegisteredObjectTypes, TLinkToken["objectTypeId"]>, TRegisteredObjectTypes, TValueTypes>;
442
+ }): ObjectQueryBuilder<ObjectTypeForId<TObjectType, TLinkToken["objectTypeId"]>>;
480
443
  /**
481
444
  * Attach an outgoing link's target objects to each row under `.links`, without
482
445
  * changing the result type — the additive counterpart to `traverse` (which
483
446
  * replaces the set). The callback nests deeper hops.
484
447
  *
485
- * Each call widens `TLinks`, so `list`/`first` rows gain a typed `.links` entry
486
- * for this link (cardinality `"one"` → `Target | null`, `"many"` → `Target[]`,
487
- * each carrying optional `linkProperties` and its own nested `.links`). Nested
488
- * targets stay precise when the link uses direct object targets or when the id
489
- * target resolves through the registry, and otherwise degrade to the loose base.
448
+ * Each call adds a typed `.links` entry to the rows `list`/`first` return
449
+ * (cardinality `"one"` → `Target | null`, `"many"` → `Target[]`, each carrying
450
+ * optional `linkProperties` and its own nested `.links`). Targets are precise
451
+ * when they are registered or linked directly, and otherwise degrade to the
452
+ * loose base.
490
453
  */
491
- expand<TLinkToken extends LinkToken<TObjectType["id"], string, LinkTargetObjectTypeIdValue>, TChild = unknown>(link: TLinkToken, build: ObjectExpandNested<TLinkToken, TRegisteredObjectTypes, TChild>): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes, TLinks & ExpansionEntry<TLinkToken, TRegisteredObjectTypes, TChild>>;
492
- expand<TLinkToken extends LinkToken<TObjectType["id"], string, LinkTargetObjectTypeIdValue>, TChild = unknown>(link: TLinkToken, options?: ObjectExpandOptions<ObjectTypeForLinkTarget<TRegisteredObjectTypes, TLinkToken>>, build?: ObjectExpandNested<TLinkToken, TRegisteredObjectTypes, TChild>): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes, TLinks & ExpansionEntry<TLinkToken, TRegisteredObjectTypes, TChild>>;
454
+ expand<TLinkToken extends LinkToken<TObjectType["id"], string, LinkTargetObjectTypeIdValue>, TChildRow = ExpandedTargetRow<ObjectTypeForLinkTarget<TObjectType, TLinkToken>>>(link: TLinkToken, build: ObjectExpandNested<TObjectType, TLinkToken, TChildRow>): ObjectQueryBuilder<TObjectType, WithExpansion<TRow, TLinkToken, TChildRow>>;
455
+ expand<TLinkToken extends LinkToken<TObjectType["id"], string, LinkTargetObjectTypeIdValue>, TChildRow = ExpandedTargetRow<ObjectTypeForLinkTarget<TObjectType, TLinkToken>>>(link: TLinkToken, options?: ObjectExpandOptions<ObjectTypeForLinkTarget<TObjectType, TLinkToken>>, build?: ObjectExpandNested<TObjectType, TLinkToken, TChildRow>): ObjectQueryBuilder<TObjectType, WithExpansion<TRow, TLinkToken, TChildRow>>;
493
456
  /** Add property ordering at the current object type. */
494
- orderBy(property: ObjectSetQueryPropertyToken<TObjectType>, direction?: ObjectQuerySortDirection): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes, TLinks>;
457
+ orderBy(property: ObjectSetQueryPropertyToken<TObjectType>, direction?: ObjectQuerySortDirection): ObjectQueryBuilder<TObjectType, TRow>;
495
458
  /** Add relevance ordering for providers that support ranked search. */
496
- orderByRelevance(direction?: ObjectQuerySortDirection): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes, TLinks>;
459
+ orderByRelevance(direction?: ObjectQuerySortDirection): ObjectQueryBuilder<TObjectType, TRow>;
497
460
  /** Bound the result count. */
498
- limit(limit: number): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes, TLinks>;
461
+ limit(limit: number): ObjectQueryBuilder<TObjectType, TRow>;
499
462
  /** Request one page of results. */
500
463
  page(input: {
501
464
  pageSize: number;
502
465
  pageToken?: string;
503
- }): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes, TLinks>;
466
+ }): ObjectQueryBuilder<TObjectType, TRow>;
504
467
  /** Validate this query against the registered ontology. */
505
468
  validate(): ValidatedObjectQuery;
506
469
  /** Return a provider-neutral explanation tree for this query. */
@@ -508,16 +471,16 @@ export interface ObjectQueryBuilder<TObjectType extends ObjectTypeWithPropertyTo
508
471
  /** Format `explain()` as a compact diagnostic string. */
509
472
  formatExplanation(): string;
510
473
  /** Execute this query and return matching objects (rows carry `.links` when expanded). */
511
- list(): Promise<ListResult<ObjectQueryRow<TObjectType, TValueTypes, TLinks>>>;
474
+ list(): Promise<ListResult<Simplify<TRow>>>;
512
475
  list(options: {
513
476
  includeTotal: false;
514
477
  signal?: AbortSignal;
515
- }): Promise<ListResultWithoutTotal<ObjectQueryRow<TObjectType, TValueTypes, TLinks>>>;
478
+ }): Promise<ListResultWithoutTotal<Simplify<TRow>>>;
516
479
  list(options: {
517
480
  includeTotal?: true;
518
481
  signal?: AbortSignal;
519
- }): Promise<ListResult<ObjectQueryRow<TObjectType, TValueTypes, TLinks>>>;
520
- list(options?: ObjectQueryListOptions): Promise<ListResult<ObjectQueryRow<TObjectType, TValueTypes, TLinks>> | ListResultWithoutTotal<ObjectQueryRow<TObjectType, TValueTypes, TLinks>>>;
482
+ }): Promise<ListResult<Simplify<TRow>>>;
483
+ list(options?: ObjectQueryListOptions): Promise<ListResult<Simplify<TRow>> | ListResultWithoutTotal<Simplify<TRow>>>;
521
484
  /** Count the matching objects without returning rows. */
522
485
  count(): Promise<number>;
523
486
  /** Check whether any object matches without returning rows. */
@@ -525,14 +488,40 @@ export interface ObjectQueryBuilder<TObjectType extends ObjectTypeWithPropertyTo
525
488
  /** Count matching objects by configured facetable properties. */
526
489
  facets(input: readonly ObjectQueryFacetInput<TObjectType>[]): Promise<ObjectQueryFacetResult[]>;
527
490
  /** Execute this query with an outer limit of one and return the first object. */
528
- first(): Promise<ObjectQueryRow<TObjectType, TValueTypes, TLinks> | null>;
491
+ first(): Promise<Simplify<TRow> | null>;
529
492
  }
530
- export interface ObjectByIdHandle<TObjectType extends ObjectTypeWithPropertyTokens, TValueTypes extends readonly ValueType[]> {
531
- vector(profile: VectorProfileName<TObjectType>): ObjectVectorHandle;
493
+ /** Reads bound to one object id. */
494
+ export interface ObjectReadByIdHandle<out TObjectType extends ObjectTypeWithPropertyTokens> {
532
495
  /** Get the object at this id, or null if it doesn't exist. */
533
- get(): Promise<TwinObject<TObjectType, TValueTypes> | null>;
496
+ get(): Promise<TwinObject<TObjectType> | null>;
534
497
  /** List links from this object, optionally filtered by link token. */
535
498
  listLinks(link?: LinkTokenForObjectType<TObjectType>): Promise<readonly ObjectLinkRow[]>;
499
+ }
500
+ /**
501
+ * The reads of an object set, declared once: `sixb.objects(Type)`, a Workflow step's
502
+ * `sixb.objects(Type)` and an Action's `read.objects(Type)` add only their own writes on top.
503
+ */
504
+ export interface ObjectReadSet<in out TObjectType extends ObjectTypeWithPropertyTokens> {
505
+ /** Get an object by id, or null if it doesn't exist. */
506
+ get(id: string): Promise<TwinObject<TObjectType> | null>;
507
+ /** Build an executable provider-neutral object query rooted at this object type. */
508
+ query(): ObjectQueryBuilder<TObjectType>;
509
+ /** Bind reads to a specific object id. */
510
+ byId(id: string): ObjectReadByIdHandle<TObjectType>;
511
+ /** List stored objects of this type with storage-system filtering and pagination. */
512
+ list(input?: ObjectSetListInput): Promise<ListResult<TwinObject<TObjectType>>>;
513
+ }
514
+ /**
515
+ * Reads objects without writing them.
516
+ *
517
+ * An Action's `read`, a Workflow step's `sixb` and a `Sixb` runtime are all object readers, so a
518
+ * helper that takes an `ObjectReader` works in each of them.
519
+ */
520
+ export interface ObjectReader {
521
+ objects<const TObjectType extends ObjectTypeWithPropertyTokens>(objectType: TObjectType): ObjectReadSet<TObjectType>;
522
+ }
523
+ export interface ObjectByIdHandle<TObjectType extends ObjectTypeWithPropertyTokens> extends ObjectReadByIdHandle<TObjectType> {
524
+ vector(profile: VectorProfileName<TObjectType>): ObjectVectorHandle;
536
525
  /** Create or update a link from the current object to a target object. */
537
526
  link<TLinkToken extends LinkTokenForObjectType<TObjectType>>(link: TLinkToken, target: ObjectRef<ResolveTargetTypeId<TLinkToken["targetObjectTypeId"]>>, options?: {
538
527
  properties?: Record<string, unknown>;
@@ -582,25 +571,19 @@ export interface ObjectByIdHandle<TObjectType extends ObjectTypeWithPropertyToke
582
571
  /** Withdraw a previous `delete()`. A no-op unless a projection still asserts this object. */
583
572
  restore(): Promise<void>;
584
573
  /** Read and write telemetry for one telemetry-mode property token. */
585
- telemetry<TToken extends TelemetryPropertyToken<TObjectType>>(property: TToken): TelemetryChannel<TToken, TValueTypes>;
574
+ telemetry<TToken extends TelemetryPropertyToken<TObjectType>>(property: TToken): TelemetryChannel<TToken>;
586
575
  }
587
- export interface ObjectSet<TObjectType extends ObjectTypeWithPropertyTokens, TValueTypes extends readonly ValueType[], TRegisteredObjectTypes extends ObjectTypeWithPropertyTokens = TObjectType> {
588
- /** Get an object by id, or null if it doesn't exist. */
589
- get(id: string): Promise<TwinObject<TObjectType, TValueTypes> | null>;
576
+ export interface ObjectSet<TObjectType extends ObjectTypeWithPropertyTokens> extends ObjectReadSet<TObjectType> {
590
577
  /** Upsert object state facts (latest projection). */
591
578
  upsert(input: {
592
- properties: InferObjectProperties<TObjectType, TValueTypes>;
593
- }): Promise<TwinObject<TObjectType, TValueTypes>>;
594
- /** Build an executable provider-neutral object query rooted at this object type. */
595
- query(): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes>;
579
+ properties: ObjectTypeProperties<TObjectType>;
580
+ }): Promise<TwinObject<TObjectType>>;
596
581
  /** Bind operations to a specific object id. */
597
- byId(id: string): ObjectByIdHandle<TObjectType, TValueTypes>;
598
- /** List stored objects of this type with storage-system filtering and pagination. */
599
- list(input?: ObjectSetListInput): Promise<ListResult<TwinObject<TObjectType, TValueTypes>>>;
582
+ byId(id: string): ObjectByIdHandle<TObjectType>;
600
583
  /** Append telemetry for multiple objects in a single batch. */
601
584
  appendTelemetryBatch(items: readonly {
602
585
  id: string;
603
- properties: InferTelemetryBatchProperties<TObjectType, TValueTypes>;
586
+ properties: InferTelemetryBatchProperties<TObjectType>;
604
587
  at?: Date;
605
588
  }[]): Promise<void>;
606
589
  /** Request an action on an object of this type by id (dynamic / server contexts). */