@sixb/core 0.0.1

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 (1582) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +470 -0
  3. package/dist/actions/builders/define-action.d.ts +7 -0
  4. package/dist/actions/builders/define-action.d.ts.map +1 -0
  5. package/dist/actions/builders/params.d.ts +23 -0
  6. package/dist/actions/builders/params.d.ts.map +1 -0
  7. package/dist/actions/builders.d.ts +3 -0
  8. package/dist/actions/builders.d.ts.map +1 -0
  9. package/dist/actions/commit-edits.d.ts +54 -0
  10. package/dist/actions/commit-edits.d.ts.map +1 -0
  11. package/dist/actions/errors.d.ts +9 -0
  12. package/dist/actions/errors.d.ts.map +1 -0
  13. package/dist/actions/index.d.ts +14 -0
  14. package/dist/actions/index.d.ts.map +1 -0
  15. package/dist/actions/index.js +73 -0
  16. package/dist/actions/index.js.map +9 -0
  17. package/dist/actions/read-facade.d.ts +56 -0
  18. package/dist/actions/read-facade.d.ts.map +1 -0
  19. package/dist/actions/registry.d.ts +17 -0
  20. package/dist/actions/registry.d.ts.map +1 -0
  21. package/dist/actions/request.d.ts +37 -0
  22. package/dist/actions/request.d.ts.map +1 -0
  23. package/dist/actions/run-id.d.ts +3 -0
  24. package/dist/actions/run-id.d.ts.map +1 -0
  25. package/dist/actions/runtime.d.ts +11 -0
  26. package/dist/actions/runtime.d.ts.map +1 -0
  27. package/dist/actions/types/context.d.ts +147 -0
  28. package/dist/actions/types/context.d.ts.map +1 -0
  29. package/dist/actions/types/definitions.d.ts +67 -0
  30. package/dist/actions/types/definitions.d.ts.map +1 -0
  31. package/dist/actions/types/handlers.d.ts +19 -0
  32. package/dist/actions/types/handlers.d.ts.map +1 -0
  33. package/dist/actions/types/params.d.ts +45 -0
  34. package/dist/actions/types/params.d.ts.map +1 -0
  35. package/dist/actions/types.d.ts +5 -0
  36. package/dist/actions/types.d.ts.map +1 -0
  37. package/dist/actions/validation.d.ts +33 -0
  38. package/dist/actions/validation.d.ts.map +1 -0
  39. package/dist/actions/validators.d.ts +8 -0
  40. package/dist/actions/validators.d.ts.map +1 -0
  41. package/dist/actions/worker.d.ts +3 -0
  42. package/dist/actions/worker.d.ts.map +1 -0
  43. package/dist/actions/worker.js +324 -0
  44. package/dist/actions/worker.js.map +11 -0
  45. package/dist/agents/adapters.d.ts +185 -0
  46. package/dist/agents/adapters.d.ts.map +1 -0
  47. package/dist/agents/api-gateway.d.ts +21 -0
  48. package/dist/agents/api-gateway.d.ts.map +1 -0
  49. package/dist/agents/builders.d.ts +10 -0
  50. package/dist/agents/builders.d.ts.map +1 -0
  51. package/dist/agents/context-model.d.ts +4 -0
  52. package/dist/agents/context-model.d.ts.map +1 -0
  53. package/dist/agents/context-resolution.d.ts +5 -0
  54. package/dist/agents/context-resolution.d.ts.map +1 -0
  55. package/dist/agents/context.d.ts +57 -0
  56. package/dist/agents/context.d.ts.map +1 -0
  57. package/dist/agents/context.js +23 -0
  58. package/dist/agents/context.js.map +9 -0
  59. package/dist/agents/dispatch.d.ts +36 -0
  60. package/dist/agents/dispatch.d.ts.map +1 -0
  61. package/dist/agents/errors.d.ts +27 -0
  62. package/dist/agents/errors.d.ts.map +1 -0
  63. package/dist/agents/ids.d.ts +11 -0
  64. package/dist/agents/ids.d.ts.map +1 -0
  65. package/dist/agents/index.d.ts +24 -0
  66. package/dist/agents/index.d.ts.map +1 -0
  67. package/dist/agents/index.js +121 -0
  68. package/dist/agents/index.js.map +9 -0
  69. package/dist/agents/message.d.ts +78 -0
  70. package/dist/agents/message.d.ts.map +1 -0
  71. package/dist/agents/prompt.d.ts +15 -0
  72. package/dist/agents/prompt.d.ts.map +1 -0
  73. package/dist/agents/request.d.ts +42 -0
  74. package/dist/agents/request.d.ts.map +1 -0
  75. package/dist/agents/runtime.d.ts +41 -0
  76. package/dist/agents/runtime.d.ts.map +1 -0
  77. package/dist/agents/streams.d.ts +72 -0
  78. package/dist/agents/streams.d.ts.map +1 -0
  79. package/dist/agents/streams.js +32 -0
  80. package/dist/agents/streams.js.map +9 -0
  81. package/dist/agents/types.d.ts +52 -0
  82. package/dist/agents/types.d.ts.map +1 -0
  83. package/dist/agents/validation.d.ts +10 -0
  84. package/dist/agents/validation.d.ts.map +1 -0
  85. package/dist/auth/access-tokens.d.ts +19 -0
  86. package/dist/auth/access-tokens.d.ts.map +1 -0
  87. package/dist/auth/audience.d.ts +8 -0
  88. package/dist/auth/audience.d.ts.map +1 -0
  89. package/dist/auth/cookies.d.ts +50 -0
  90. package/dist/auth/cookies.d.ts.map +1 -0
  91. package/dist/auth/csrf.d.ts +8 -0
  92. package/dist/auth/csrf.d.ts.map +1 -0
  93. package/dist/auth/errors.d.ts +7 -0
  94. package/dist/auth/errors.d.ts.map +1 -0
  95. package/dist/auth/index.d.ts +15 -0
  96. package/dist/auth/index.d.ts.map +1 -0
  97. package/dist/auth/index.js +101 -0
  98. package/dist/auth/index.js.map +9 -0
  99. package/dist/auth/runtime.d.ts +129 -0
  100. package/dist/auth/runtime.d.ts.map +1 -0
  101. package/dist/auth/session-cache.d.ts +44 -0
  102. package/dist/auth/session-cache.d.ts.map +1 -0
  103. package/dist/auth/sessions.d.ts +16 -0
  104. package/dist/auth/sessions.d.ts.map +1 -0
  105. package/dist/auth/strategy.d.ts +11 -0
  106. package/dist/auth/strategy.d.ts.map +1 -0
  107. package/dist/auth/strategy.js +14 -0
  108. package/dist/auth/strategy.js.map +9 -0
  109. package/dist/auth/types.d.ts +460 -0
  110. package/dist/auth/types.d.ts.map +1 -0
  111. package/dist/auth/validation.d.ts +26 -0
  112. package/dist/auth/validation.d.ts.map +1 -0
  113. package/dist/authorization/application-access.d.ts +18 -0
  114. package/dist/authorization/application-access.d.ts.map +1 -0
  115. package/dist/authorization/decision.d.ts +104 -0
  116. package/dist/authorization/decision.d.ts.map +1 -0
  117. package/dist/authorization/errors.d.ts +10 -0
  118. package/dist/authorization/errors.d.ts.map +1 -0
  119. package/dist/authorization/event-visibility.d.ts +16 -0
  120. package/dist/authorization/event-visibility.d.ts.map +1 -0
  121. package/dist/authorization/grant-kinds.d.ts +48 -0
  122. package/dist/authorization/grant-kinds.d.ts.map +1 -0
  123. package/dist/authorization/index.d.ts +11 -0
  124. package/dist/authorization/index.d.ts.map +1 -0
  125. package/dist/authorization/index.js +48 -0
  126. package/dist/authorization/index.js.map +9 -0
  127. package/dist/authorization/resolve.d.ts +28 -0
  128. package/dist/authorization/resolve.d.ts.map +1 -0
  129. package/dist/authorization/run-visibility.d.ts +15 -0
  130. package/dist/authorization/run-visibility.d.ts.map +1 -0
  131. package/dist/authorization/types.d.ts +46 -0
  132. package/dist/authorization/types.d.ts.map +1 -0
  133. package/dist/blob-storage/browser.d.ts +14 -0
  134. package/dist/blob-storage/browser.d.ts.map +1 -0
  135. package/dist/blob-storage/browser.js +22 -0
  136. package/dist/blob-storage/browser.js.map +9 -0
  137. package/dist/blob-storage/constants.d.ts +10 -0
  138. package/dist/blob-storage/constants.d.ts.map +1 -0
  139. package/dist/blob-storage/derive.d.ts +4 -0
  140. package/dist/blob-storage/derive.d.ts.map +1 -0
  141. package/dist/blob-storage/errors.d.ts +7 -0
  142. package/dist/blob-storage/errors.d.ts.map +1 -0
  143. package/dist/blob-storage/in-memory.d.ts +10 -0
  144. package/dist/blob-storage/in-memory.d.ts.map +1 -0
  145. package/dist/blob-storage/index.d.ts +8 -0
  146. package/dist/blob-storage/index.d.ts.map +1 -0
  147. package/dist/blob-storage/index.js +44 -0
  148. package/dist/blob-storage/index.js.map +9 -0
  149. package/dist/blob-storage/types.d.ts +126 -0
  150. package/dist/blob-storage/types.d.ts.map +1 -0
  151. package/dist/blob-storage/utils.d.ts +9 -0
  152. package/dist/blob-storage/utils.d.ts.map +1 -0
  153. package/dist/blob-storage/validation.d.ts +6 -0
  154. package/dist/blob-storage/validation.d.ts.map +1 -0
  155. package/dist/bootstrap/discovery.d.ts +34 -0
  156. package/dist/bootstrap/discovery.d.ts.map +1 -0
  157. package/dist/bootstrap/index.d.ts +4 -0
  158. package/dist/bootstrap/index.d.ts.map +1 -0
  159. package/dist/bootstrap/index.js +80 -0
  160. package/dist/bootstrap/index.js.map +9 -0
  161. package/dist/bootstrap/ontology-type-manifest.d.ts +22 -0
  162. package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -0
  163. package/dist/broker/errors.d.ts +12 -0
  164. package/dist/broker/errors.d.ts.map +1 -0
  165. package/dist/broker/in-memory.d.ts +53 -0
  166. package/dist/broker/in-memory.d.ts.map +1 -0
  167. package/dist/broker/index.d.ts +5 -0
  168. package/dist/broker/index.d.ts.map +1 -0
  169. package/dist/broker/index.js +15 -0
  170. package/dist/broker/index.js.map +9 -0
  171. package/dist/broker/types.d.ts +119 -0
  172. package/dist/broker/types.d.ts.map +1 -0
  173. package/dist/chunk-04b07a9q.js +89 -0
  174. package/dist/chunk-04b07a9q.js.map +10 -0
  175. package/dist/chunk-0fygrz37.js +354 -0
  176. package/dist/chunk-0fygrz37.js.map +17 -0
  177. package/dist/chunk-0psb6kdw.js +989 -0
  178. package/dist/chunk-0psb6kdw.js.map +15 -0
  179. package/dist/chunk-1evzqhks.js +76 -0
  180. package/dist/chunk-1evzqhks.js.map +10 -0
  181. package/dist/chunk-1vffvydj.js +109 -0
  182. package/dist/chunk-1vffvydj.js.map +10 -0
  183. package/dist/chunk-2ab72m2h.js +59 -0
  184. package/dist/chunk-2ab72m2h.js.map +10 -0
  185. package/dist/chunk-2gpr6jsz.js +1968 -0
  186. package/dist/chunk-2gpr6jsz.js.map +13 -0
  187. package/dist/chunk-2s6sydsh.js +368 -0
  188. package/dist/chunk-2s6sydsh.js.map +12 -0
  189. package/dist/chunk-45tw90k7.js +72 -0
  190. package/dist/chunk-45tw90k7.js.map +11 -0
  191. package/dist/chunk-4pycxcj3.js +35 -0
  192. package/dist/chunk-4pycxcj3.js.map +11 -0
  193. package/dist/chunk-50kv63vj.js +523 -0
  194. package/dist/chunk-50kv63vj.js.map +12 -0
  195. package/dist/chunk-51fjndv0.js +17 -0
  196. package/dist/chunk-51fjndv0.js.map +11 -0
  197. package/dist/chunk-590dejbp.js +49 -0
  198. package/dist/chunk-590dejbp.js.map +10 -0
  199. package/dist/chunk-5yny9z0e.js +60 -0
  200. package/dist/chunk-5yny9z0e.js.map +10 -0
  201. package/dist/chunk-6wetht33.js +89 -0
  202. package/dist/chunk-6wetht33.js.map +10 -0
  203. package/dist/chunk-74drx9gd.js +362 -0
  204. package/dist/chunk-74drx9gd.js.map +11 -0
  205. package/dist/chunk-867jxh7c.js +1156 -0
  206. package/dist/chunk-867jxh7c.js.map +19 -0
  207. package/dist/chunk-88ppkr54.js +257 -0
  208. package/dist/chunk-88ppkr54.js.map +12 -0
  209. package/dist/chunk-8r8cw2xw.js +373 -0
  210. package/dist/chunk-8r8cw2xw.js.map +11 -0
  211. package/dist/chunk-8ydjhh27.js +95 -0
  212. package/dist/chunk-8ydjhh27.js.map +11 -0
  213. package/dist/chunk-9dzba0f2.js +43 -0
  214. package/dist/chunk-9dzba0f2.js.map +10 -0
  215. package/dist/chunk-aebzcsxr.js +5272 -0
  216. package/dist/chunk-aebzcsxr.js.map +48 -0
  217. package/dist/chunk-b49dgvsj.js +49 -0
  218. package/dist/chunk-b49dgvsj.js.map +10 -0
  219. package/dist/chunk-btpe64e4.js +554 -0
  220. package/dist/chunk-btpe64e4.js.map +13 -0
  221. package/dist/chunk-c3zd880g.js +629 -0
  222. package/dist/chunk-c3zd880g.js.map +14 -0
  223. package/dist/chunk-dcgrzj1t.js +2954 -0
  224. package/dist/chunk-dcgrzj1t.js.map +36 -0
  225. package/dist/chunk-dhmj53mx.js +501 -0
  226. package/dist/chunk-dhmj53mx.js.map +16 -0
  227. package/dist/chunk-dktq02ne.js +16 -0
  228. package/dist/chunk-dktq02ne.js.map +10 -0
  229. package/dist/chunk-f2b5e2gf.js +141 -0
  230. package/dist/chunk-f2b5e2gf.js.map +11 -0
  231. package/dist/chunk-gqdd7508.js +273 -0
  232. package/dist/chunk-gqdd7508.js.map +11 -0
  233. package/dist/chunk-hsv43v58.js +1390 -0
  234. package/dist/chunk-hsv43v58.js.map +21 -0
  235. package/dist/chunk-jdwx7vzs.js +454 -0
  236. package/dist/chunk-jdwx7vzs.js.map +14 -0
  237. package/dist/chunk-k25jm1x5.js +102 -0
  238. package/dist/chunk-k25jm1x5.js.map +10 -0
  239. package/dist/chunk-k41ajtz7.js +352 -0
  240. package/dist/chunk-k41ajtz7.js.map +13 -0
  241. package/dist/chunk-k6j72mtt.js +9 -0
  242. package/dist/chunk-k6j72mtt.js.map +10 -0
  243. package/dist/chunk-mx84y05q.js +426 -0
  244. package/dist/chunk-mx84y05q.js.map +11 -0
  245. package/dist/chunk-nvamz5dv.js +819 -0
  246. package/dist/chunk-nvamz5dv.js.map +21 -0
  247. package/dist/chunk-p6r5g77m.js +113 -0
  248. package/dist/chunk-p6r5g77m.js.map +10 -0
  249. package/dist/chunk-pv1yad91.js +1165 -0
  250. package/dist/chunk-pv1yad91.js.map +27 -0
  251. package/dist/chunk-q4qzq0ea.js +832 -0
  252. package/dist/chunk-q4qzq0ea.js.map +14 -0
  253. package/dist/chunk-r65yscvk.js +187 -0
  254. package/dist/chunk-r65yscvk.js.map +11 -0
  255. package/dist/chunk-ry24jbr1.js +50 -0
  256. package/dist/chunk-ry24jbr1.js.map +10 -0
  257. package/dist/chunk-t358gywy.js +991 -0
  258. package/dist/chunk-t358gywy.js.map +34 -0
  259. package/dist/chunk-t72dvahb.js +167 -0
  260. package/dist/chunk-t72dvahb.js.map +12 -0
  261. package/dist/chunk-tsk2bxs3.js +1254 -0
  262. package/dist/chunk-tsk2bxs3.js.map +17 -0
  263. package/dist/chunk-v5c085yp.js +49 -0
  264. package/dist/chunk-v5c085yp.js.map +10 -0
  265. package/dist/chunk-vj723r3p.js +146 -0
  266. package/dist/chunk-vj723r3p.js.map +12 -0
  267. package/dist/chunk-wj01s5hr.js +363 -0
  268. package/dist/chunk-wj01s5hr.js.map +11 -0
  269. package/dist/chunk-wxhdnwh4.js +37 -0
  270. package/dist/chunk-wxhdnwh4.js.map +10 -0
  271. package/dist/chunk-xqbtf4wn.js +170 -0
  272. package/dist/chunk-xqbtf4wn.js.map +10 -0
  273. package/dist/chunk-xwnf87e1.js +324 -0
  274. package/dist/chunk-xwnf87e1.js.map +13 -0
  275. package/dist/chunk-xz5g49bp.js +239 -0
  276. package/dist/chunk-xz5g49bp.js.map +11 -0
  277. package/dist/chunk-y64skrwp.js +19 -0
  278. package/dist/chunk-y64skrwp.js.map +9 -0
  279. package/dist/chunk-ya6brh8a.js +136 -0
  280. package/dist/chunk-ya6brh8a.js.map +11 -0
  281. package/dist/chunk-yt8wphsx.js +12 -0
  282. package/dist/chunk-yt8wphsx.js.map +10 -0
  283. package/dist/chunk-yvef9xwc.js +3842 -0
  284. package/dist/chunk-yvef9xwc.js.map +44 -0
  285. package/dist/chunk-yxss87qa.js +821 -0
  286. package/dist/chunk-yxss87qa.js.map +14 -0
  287. package/dist/connectors/builders.d.ts +10 -0
  288. package/dist/connectors/builders.d.ts.map +1 -0
  289. package/dist/connectors/errors.d.ts +14 -0
  290. package/dist/connectors/errors.d.ts.map +1 -0
  291. package/dist/connectors/index.d.ts +5 -0
  292. package/dist/connectors/index.d.ts.map +1 -0
  293. package/dist/connectors/runtime.d.ts +13 -0
  294. package/dist/connectors/runtime.d.ts.map +1 -0
  295. package/dist/connectors/types.d.ts +39 -0
  296. package/dist/connectors/types.d.ts.map +1 -0
  297. package/dist/datasets/builders.d.ts +54 -0
  298. package/dist/datasets/builders.d.ts.map +1 -0
  299. package/dist/datasets/errors.d.ts +4 -0
  300. package/dist/datasets/errors.d.ts.map +1 -0
  301. package/dist/datasets/index.d.ts +5 -0
  302. package/dist/datasets/index.d.ts.map +1 -0
  303. package/dist/datasets/types.d.ts +23 -0
  304. package/dist/datasets/types.d.ts.map +1 -0
  305. package/dist/datasets/validation.d.ts +8 -0
  306. package/dist/datasets/validation.d.ts.map +1 -0
  307. package/dist/edits/errors.d.ts +4 -0
  308. package/dist/edits/errors.d.ts.map +1 -0
  309. package/dist/edits/index.d.ts +4 -0
  310. package/dist/edits/index.d.ts.map +1 -0
  311. package/dist/edits/index.js +14 -0
  312. package/dist/edits/index.js.map +9 -0
  313. package/dist/edits/normalize.d.ts +14 -0
  314. package/dist/edits/normalize.d.ts.map +1 -0
  315. package/dist/edits/properties.d.ts +25 -0
  316. package/dist/edits/properties.d.ts.map +1 -0
  317. package/dist/edits/recorder.d.ts +4 -0
  318. package/dist/edits/recorder.d.ts.map +1 -0
  319. package/dist/edits/types.d.ts +159 -0
  320. package/dist/edits/types.d.ts.map +1 -0
  321. package/dist/error-reporting/capability.d.ts +57 -0
  322. package/dist/error-reporting/capability.d.ts.map +1 -0
  323. package/dist/error-reporting/internal.d.ts +4 -0
  324. package/dist/error-reporting/internal.d.ts.map +1 -0
  325. package/dist/error-reporting/internal.js +24 -0
  326. package/dist/error-reporting/internal.js.map +9 -0
  327. package/dist/error-reporting/normalize.d.ts +3 -0
  328. package/dist/error-reporting/normalize.d.ts.map +1 -0
  329. package/dist/error-reporting/reporter.d.ts +10 -0
  330. package/dist/error-reporting/reporter.d.ts.map +1 -0
  331. package/dist/error-reporting/types.d.ts +112 -0
  332. package/dist/error-reporting/types.d.ts.map +1 -0
  333. package/dist/events/definitions.d.ts +76 -0
  334. package/dist/events/definitions.d.ts.map +1 -0
  335. package/dist/events/envelope.d.ts +56 -0
  336. package/dist/events/envelope.d.ts.map +1 -0
  337. package/dist/events/errors.d.ts +8 -0
  338. package/dist/events/errors.d.ts.map +1 -0
  339. package/dist/events/index.d.ts +11 -0
  340. package/dist/events/index.d.ts.map +1 -0
  341. package/dist/events/index.js +68 -0
  342. package/dist/events/index.js.map +9 -0
  343. package/dist/events/outbox-dispatcher.d.ts +82 -0
  344. package/dist/events/outbox-dispatcher.d.ts.map +1 -0
  345. package/dist/events/property-changes.d.ts +16 -0
  346. package/dist/events/property-changes.d.ts.map +1 -0
  347. package/dist/events/runtime.d.ts +87 -0
  348. package/dist/events/runtime.d.ts.map +1 -0
  349. package/dist/events/scope.d.ts +25 -0
  350. package/dist/events/scope.d.ts.map +1 -0
  351. package/dist/events/scope.js +10 -0
  352. package/dist/events/scope.js.map +9 -0
  353. package/dist/events/selectors/builder.d.ts +64 -0
  354. package/dist/events/selectors/builder.d.ts.map +1 -0
  355. package/dist/events/selectors/index.d.ts +5 -0
  356. package/dist/events/selectors/index.d.ts.map +1 -0
  357. package/dist/events/selectors/index.js +15 -0
  358. package/dist/events/selectors/index.js.map +9 -0
  359. package/dist/events/selectors/predicate.d.ts +5 -0
  360. package/dist/events/selectors/predicate.d.ts.map +1 -0
  361. package/dist/events/selectors/types.d.ts +141 -0
  362. package/dist/events/selectors/types.d.ts.map +1 -0
  363. package/dist/events/toStoredEvent.d.ts +10 -0
  364. package/dist/events/toStoredEvent.d.ts.map +1 -0
  365. package/dist/events/types/actions.d.ts +39 -0
  366. package/dist/events/types/actions.d.ts.map +1 -0
  367. package/dist/events/types/datasets.d.ts +20 -0
  368. package/dist/events/types/datasets.d.ts.map +1 -0
  369. package/dist/events/types/index.d.ts +137 -0
  370. package/dist/events/types/index.d.ts.map +1 -0
  371. package/dist/events/types/links.d.ts +37 -0
  372. package/dist/events/types/links.d.ts.map +1 -0
  373. package/dist/events/types/objects.d.ts +33 -0
  374. package/dist/events/types/objects.d.ts.map +1 -0
  375. package/dist/events/types/pipelines.d.ts +59 -0
  376. package/dist/events/types/pipelines.d.ts.map +1 -0
  377. package/dist/events/types/rules.d.ts +28 -0
  378. package/dist/events/types/rules.d.ts.map +1 -0
  379. package/dist/events/types/schedules.d.ts +14 -0
  380. package/dist/events/types/schedules.d.ts.map +1 -0
  381. package/dist/events/types/syncs.d.ts +25 -0
  382. package/dist/events/types/syncs.d.ts.map +1 -0
  383. package/dist/events/types/telemetry.d.ts +17 -0
  384. package/dist/events/types/telemetry.d.ts.map +1 -0
  385. package/dist/events/types/workflows.d.ts +150 -0
  386. package/dist/events/types/workflows.d.ts.map +1 -0
  387. package/dist/http/api-routes.d.ts +24 -0
  388. package/dist/http/api-routes.d.ts.map +1 -0
  389. package/dist/http/index.d.ts +4 -0
  390. package/dist/http/index.d.ts.map +1 -0
  391. package/dist/http/index.js +16 -0
  392. package/dist/http/index.js.map +9 -0
  393. package/dist/http/route-pattern.d.ts +14 -0
  394. package/dist/http/route-pattern.d.ts.map +1 -0
  395. package/dist/index.d.ts +70 -0
  396. package/dist/index.d.ts.map +1 -0
  397. package/dist/index.js +430 -0
  398. package/dist/index.js.map +9 -0
  399. package/dist/json.d.ts +14 -0
  400. package/dist/json.d.ts.map +1 -0
  401. package/dist/lake-storage/definition-updates.d.ts +40 -0
  402. package/dist/lake-storage/definition-updates.d.ts.map +1 -0
  403. package/dist/lake-storage/errors.d.ts +7 -0
  404. package/dist/lake-storage/errors.d.ts.map +1 -0
  405. package/dist/lake-storage/in-memory.d.ts +25 -0
  406. package/dist/lake-storage/in-memory.d.ts.map +1 -0
  407. package/dist/lake-storage/index.d.ts +9 -0
  408. package/dist/lake-storage/index.d.ts.map +1 -0
  409. package/dist/lake-storage/index.js +24 -0
  410. package/dist/lake-storage/index.js.map +9 -0
  411. package/dist/lake-storage/sql-transforms.d.ts +45 -0
  412. package/dist/lake-storage/sql-transforms.d.ts.map +1 -0
  413. package/dist/lake-storage/types.d.ts +114 -0
  414. package/dist/lake-storage/types.d.ts.map +1 -0
  415. package/dist/logging/console-logger.d.ts +17 -0
  416. package/dist/logging/console-logger.d.ts.map +1 -0
  417. package/dist/logging/index.d.ts +5 -0
  418. package/dist/logging/index.d.ts.map +1 -0
  419. package/dist/logging/index.js +45 -0
  420. package/dist/logging/index.js.map +9 -0
  421. package/dist/logging/record.d.ts +10 -0
  422. package/dist/logging/record.d.ts.map +1 -0
  423. package/dist/logging/run-logger.d.ts +61 -0
  424. package/dist/logging/run-logger.d.ts.map +1 -0
  425. package/dist/logging/runtime.d.ts +87 -0
  426. package/dist/logging/runtime.d.ts.map +1 -0
  427. package/dist/logging/stream.d.ts +24 -0
  428. package/dist/logging/stream.d.ts.map +1 -0
  429. package/dist/logging/types.d.ts +82 -0
  430. package/dist/logging/types.d.ts.map +1 -0
  431. package/dist/logging/types.js +27 -0
  432. package/dist/logging/types.js.map +9 -0
  433. package/dist/maintenance/index.d.ts +3 -0
  434. package/dist/maintenance/index.d.ts.map +1 -0
  435. package/dist/maintenance/ontology-maintenance.d.ts +48 -0
  436. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -0
  437. package/dist/maintenance/types.d.ts +53 -0
  438. package/dist/maintenance/types.d.ts.map +1 -0
  439. package/dist/materialization/dataset-watermark.d.ts +5 -0
  440. package/dist/materialization/dataset-watermark.d.ts.map +1 -0
  441. package/dist/materialization/errors.d.ts +37 -0
  442. package/dist/materialization/errors.d.ts.map +1 -0
  443. package/dist/materialization/events.d.ts +57 -0
  444. package/dist/materialization/events.d.ts.map +1 -0
  445. package/dist/materialization/identity.d.ts +8 -0
  446. package/dist/materialization/identity.d.ts.map +1 -0
  447. package/dist/materialization/index.d.ts +13 -0
  448. package/dist/materialization/index.d.ts.map +1 -0
  449. package/dist/materialization/index.js +56 -0
  450. package/dist/materialization/index.js.map +9 -0
  451. package/dist/materialization/model.d.ts +342 -0
  452. package/dist/materialization/model.d.ts.map +1 -0
  453. package/dist/materialization/refs.d.ts +24 -0
  454. package/dist/materialization/refs.d.ts.map +1 -0
  455. package/dist/materializer/context.d.ts +34 -0
  456. package/dist/materializer/context.d.ts.map +1 -0
  457. package/dist/materializer/edits/apply.d.ts +35 -0
  458. package/dist/materializer/edits/apply.d.ts.map +1 -0
  459. package/dist/materializer/edits/commit.d.ts +4 -0
  460. package/dist/materializer/edits/commit.d.ts.map +1 -0
  461. package/dist/materializer/edits/execution-units.d.ts +14 -0
  462. package/dist/materializer/edits/execution-units.d.ts.map +1 -0
  463. package/dist/materializer/edits/load-state.d.ts +6 -0
  464. package/dist/materializer/edits/load-state.d.ts.map +1 -0
  465. package/dist/materializer/edits/operations.d.ts +32 -0
  466. package/dist/materializer/edits/operations.d.ts.map +1 -0
  467. package/dist/materializer/edits/plan.d.ts +18 -0
  468. package/dist/materializer/edits/plan.d.ts.map +1 -0
  469. package/dist/materializer/edits/read-set.d.ts +8 -0
  470. package/dist/materializer/edits/read-set.d.ts.map +1 -0
  471. package/dist/materializer/edits/working-state.d.ts +30 -0
  472. package/dist/materializer/edits/working-state.d.ts.map +1 -0
  473. package/dist/materializer/effective/build-events.d.ts +26 -0
  474. package/dist/materializer/effective/build-events.d.ts.map +1 -0
  475. package/dist/materializer/effective/diff.d.ts +15 -0
  476. package/dist/materializer/effective/diff.d.ts.map +1 -0
  477. package/dist/materializer/effective/load-state.d.ts +7 -0
  478. package/dist/materializer/effective/load-state.d.ts.map +1 -0
  479. package/dist/materializer/effective/resolve.d.ts +26 -0
  480. package/dist/materializer/effective/resolve.d.ts.map +1 -0
  481. package/dist/materializer/effective/validate.d.ts +11 -0
  482. package/dist/materializer/effective/validate.d.ts.map +1 -0
  483. package/dist/materializer/execution/commit-lifecycle.d.ts +8 -0
  484. package/dist/materializer/execution/commit-lifecycle.d.ts.map +1 -0
  485. package/dist/materializer/execution/plan-stream.d.ts +8 -0
  486. package/dist/materializer/execution/plan-stream.d.ts.map +1 -0
  487. package/dist/materializer/execution/run-correlation.d.ts +19 -0
  488. package/dist/materializer/execution/run-correlation.d.ts.map +1 -0
  489. package/dist/materializer/execution/work-executor.d.ts +13 -0
  490. package/dist/materializer/execution/work-executor.d.ts.map +1 -0
  491. package/dist/materializer/execution/work-records.d.ts +15 -0
  492. package/dist/materializer/execution/work-records.d.ts.map +1 -0
  493. package/dist/materializer/index.d.ts +15 -0
  494. package/dist/materializer/index.d.ts.map +1 -0
  495. package/dist/materializer/index.js +134 -0
  496. package/dist/materializer/index.js.map +9 -0
  497. package/dist/materializer/materializer.d.ts +27 -0
  498. package/dist/materializer/materializer.d.ts.map +1 -0
  499. package/dist/materializer/projections/entry-validator.d.ts +8 -0
  500. package/dist/materializer/projections/entry-validator.d.ts.map +1 -0
  501. package/dist/materializer/projections/finish-run.d.ts +4 -0
  502. package/dist/materializer/projections/finish-run.d.ts.map +1 -0
  503. package/dist/materializer/projections/replace.d.ts +4 -0
  504. package/dist/materializer/projections/replace.d.ts.map +1 -0
  505. package/dist/materializer/projections/replacement-plan.d.ts +14 -0
  506. package/dist/materializer/projections/replacement-plan.d.ts.map +1 -0
  507. package/dist/materializer/projections/source-materialization.d.ts +27 -0
  508. package/dist/materializer/projections/source-materialization.d.ts.map +1 -0
  509. package/dist/materializer/shared/abort.d.ts +2 -0
  510. package/dist/materializer/shared/abort.d.ts.map +1 -0
  511. package/dist/materializer/shared/batching.d.ts +11 -0
  512. package/dist/materializer/shared/batching.d.ts.map +1 -0
  513. package/dist/materializer/shared/chunking.d.ts +6 -0
  514. package/dist/materializer/shared/chunking.d.ts.map +1 -0
  515. package/dist/materializer/shared/identity.d.ts +38 -0
  516. package/dist/materializer/shared/identity.d.ts.map +1 -0
  517. package/dist/materializer/shared/normalize.d.ts +10 -0
  518. package/dist/materializer/shared/normalize.d.ts.map +1 -0
  519. package/dist/materializer/shared/projection-run.d.ts +19 -0
  520. package/dist/materializer/shared/projection-run.d.ts.map +1 -0
  521. package/dist/materializer/telemetry/append.d.ts +4 -0
  522. package/dist/materializer/telemetry/append.d.ts.map +1 -0
  523. package/dist/materializer/telemetry/plan.d.ts +12 -0
  524. package/dist/materializer/telemetry/plan.d.ts.map +1 -0
  525. package/dist/objects/action/errors.d.ts +39 -0
  526. package/dist/objects/action/errors.d.ts.map +1 -0
  527. package/dist/objects/action/index.d.ts +4 -0
  528. package/dist/objects/action/index.d.ts.map +1 -0
  529. package/dist/objects/action/request.d.ts +23 -0
  530. package/dist/objects/action/request.d.ts.map +1 -0
  531. package/dist/objects/context/index.d.ts +3 -0
  532. package/dist/objects/context/index.d.ts.map +1 -0
  533. package/dist/objects/context/resolve.d.ts +27 -0
  534. package/dist/objects/context/resolve.d.ts.map +1 -0
  535. package/dist/objects/context/types.d.ts +28 -0
  536. package/dist/objects/context/types.d.ts.map +1 -0
  537. package/dist/objects/contexts.d.ts +45 -0
  538. package/dist/objects/contexts.d.ts.map +1 -0
  539. package/dist/objects/errors.d.ts +8 -0
  540. package/dist/objects/errors.d.ts.map +1 -0
  541. package/dist/objects/helpers.d.ts +7 -0
  542. package/dist/objects/helpers.d.ts.map +1 -0
  543. package/dist/objects/index.d.ts +18 -0
  544. package/dist/objects/index.d.ts.map +1 -0
  545. package/dist/objects/index.js +71 -0
  546. package/dist/objects/index.js.map +9 -0
  547. package/dist/objects/link/authorization.d.ts +25 -0
  548. package/dist/objects/link/authorization.d.ts.map +1 -0
  549. package/dist/objects/link/endpoints.d.ts +28 -0
  550. package/dist/objects/link/endpoints.d.ts.map +1 -0
  551. package/dist/objects/link/index.d.ts +4 -0
  552. package/dist/objects/link/index.d.ts.map +1 -0
  553. package/dist/objects/link/remove.d.ts +8 -0
  554. package/dist/objects/link/remove.d.ts.map +1 -0
  555. package/dist/objects/link/upsert-batch.d.ts +11 -0
  556. package/dist/objects/link/upsert-batch.d.ts.map +1 -0
  557. package/dist/objects/link/upsert.d.ts +12 -0
  558. package/dist/objects/link/upsert.d.ts.map +1 -0
  559. package/dist/objects/materializer-adapter.d.ts +114 -0
  560. package/dist/objects/materializer-adapter.d.ts.map +1 -0
  561. package/dist/objects/object/delete.d.ts +17 -0
  562. package/dist/objects/object/delete.d.ts.map +1 -0
  563. package/dist/objects/object/index.d.ts +4 -0
  564. package/dist/objects/object/index.d.ts.map +1 -0
  565. package/dist/objects/object/upsert-batch.d.ts +7 -0
  566. package/dist/objects/object/upsert-batch.d.ts.map +1 -0
  567. package/dist/objects/object/upsert.d.ts +7 -0
  568. package/dist/objects/object/upsert.d.ts.map +1 -0
  569. package/dist/objects/query/errors.d.ts +23 -0
  570. package/dist/objects/query/errors.d.ts.map +1 -0
  571. package/dist/objects/query/executor.d.ts +63 -0
  572. package/dist/objects/query/executor.d.ts.map +1 -0
  573. package/dist/objects/query/explain-format.d.ts +10 -0
  574. package/dist/objects/query/explain-format.d.ts.map +1 -0
  575. package/dist/objects/query/explain.d.ts +26 -0
  576. package/dist/objects/query/explain.d.ts.map +1 -0
  577. package/dist/objects/query/index.d.ts +14 -0
  578. package/dist/objects/query/index.d.ts.map +1 -0
  579. package/dist/objects/query/index.js +54 -0
  580. package/dist/objects/query/index.js.map +9 -0
  581. package/dist/objects/query/ir.d.ts +166 -0
  582. package/dist/objects/query/ir.d.ts.map +1 -0
  583. package/dist/objects/query/normalize.d.ts +12 -0
  584. package/dist/objects/query/normalize.d.ts.map +1 -0
  585. package/dist/objects/query/planner.d.ts +32 -0
  586. package/dist/objects/query/planner.d.ts.map +1 -0
  587. package/dist/objects/query/scalar-values.d.ts +6 -0
  588. package/dist/objects/query/scalar-values.d.ts.map +1 -0
  589. package/dist/objects/query/validate.d.ts +23 -0
  590. package/dist/objects/query/validate.d.ts.map +1 -0
  591. package/dist/objects/runtime-batch.d.ts +29 -0
  592. package/dist/objects/runtime-batch.d.ts.map +1 -0
  593. package/dist/objects/sdk/index.d.ts +3 -0
  594. package/dist/objects/sdk/index.d.ts.map +1 -0
  595. package/dist/objects/sdk/object-handle.d.ts +6 -0
  596. package/dist/objects/sdk/object-handle.d.ts.map +1 -0
  597. package/dist/objects/sdk/object-set.d.ts +14 -0
  598. package/dist/objects/sdk/object-set.d.ts.map +1 -0
  599. package/dist/objects/sdk/query-builder.d.ts +20 -0
  600. package/dist/objects/sdk/query-builder.d.ts.map +1 -0
  601. package/dist/objects/sdk/query-executor.d.ts +51 -0
  602. package/dist/objects/sdk/query-executor.d.ts.map +1 -0
  603. package/dist/objects/sdk/runtime-query-executor.d.ts +16 -0
  604. package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -0
  605. package/dist/objects/sdk/telemetry-channel.d.ts +6 -0
  606. package/dist/objects/sdk/telemetry-channel.d.ts.map +1 -0
  607. package/dist/objects/sdk/where.d.ts +15 -0
  608. package/dist/objects/sdk/where.d.ts.map +1 -0
  609. package/dist/objects/service/action-service.d.ts +12 -0
  610. package/dist/objects/service/action-service.d.ts.map +1 -0
  611. package/dist/objects/service/index.d.ts +7 -0
  612. package/dist/objects/service/index.d.ts.map +1 -0
  613. package/dist/objects/service/link-service.d.ts +26 -0
  614. package/dist/objects/service/link-service.d.ts.map +1 -0
  615. package/dist/objects/service/list-service.d.ts +24 -0
  616. package/dist/objects/service/list-service.d.ts.map +1 -0
  617. package/dist/objects/service/object-service.d.ts +12 -0
  618. package/dist/objects/service/object-service.d.ts.map +1 -0
  619. package/dist/objects/service/telemetry-service.d.ts +12 -0
  620. package/dist/objects/service/telemetry-service.d.ts.map +1 -0
  621. package/dist/objects/telemetry/append-batch.d.ts +10 -0
  622. package/dist/objects/telemetry/append-batch.d.ts.map +1 -0
  623. package/dist/objects/telemetry/history.d.ts +8 -0
  624. package/dist/objects/telemetry/history.d.ts.map +1 -0
  625. package/dist/objects/telemetry/index.d.ts +5 -0
  626. package/dist/objects/telemetry/index.d.ts.map +1 -0
  627. package/dist/objects/telemetry/write-batch.d.ts +8 -0
  628. package/dist/objects/telemetry/write-batch.d.ts.map +1 -0
  629. package/dist/ontology/builders.d.ts +323 -0
  630. package/dist/ontology/builders.d.ts.map +1 -0
  631. package/dist/ontology/decimal.d.ts +28 -0
  632. package/dist/ontology/decimal.d.ts.map +1 -0
  633. package/dist/ontology/errors.d.ts +20 -0
  634. package/dist/ontology/errors.d.ts.map +1 -0
  635. package/dist/ontology/index.d.ts +23 -0
  636. package/dist/ontology/index.d.ts.map +1 -0
  637. package/dist/ontology/index.js +120 -0
  638. package/dist/ontology/index.js.map +9 -0
  639. package/dist/ontology/inference/index.d.ts +112 -0
  640. package/dist/ontology/inference/index.d.ts.map +1 -0
  641. package/dist/ontology/internal.d.ts +4 -0
  642. package/dist/ontology/internal.d.ts.map +1 -0
  643. package/dist/ontology/internal.js +118 -0
  644. package/dist/ontology/internal.js.map +10 -0
  645. package/dist/ontology/json-schema.d.ts +9 -0
  646. package/dist/ontology/json-schema.d.ts.map +1 -0
  647. package/dist/ontology/refs.d.ts +16 -0
  648. package/dist/ontology/refs.d.ts.map +1 -0
  649. package/dist/ontology/registry.d.ts +82 -0
  650. package/dist/ontology/registry.d.ts.map +1 -0
  651. package/dist/ontology/tokens.d.ts +54 -0
  652. package/dist/ontology/tokens.d.ts.map +1 -0
  653. package/dist/ontology/types.d.ts +402 -0
  654. package/dist/ontology/types.d.ts.map +1 -0
  655. package/dist/ontology/units/index.d.ts +74 -0
  656. package/dist/ontology/units/index.d.ts.map +1 -0
  657. package/dist/ontology/units/quantitative-types.d.ts +1605 -0
  658. package/dist/ontology/units/quantitative-types.d.ts.map +1 -0
  659. package/dist/ontology/units/types.d.ts +26 -0
  660. package/dist/ontology/units/types.d.ts.map +1 -0
  661. package/dist/ontology/validation/index.d.ts +7 -0
  662. package/dist/ontology/validation/index.d.ts.map +1 -0
  663. package/dist/ontology/validation/links.d.ts +18 -0
  664. package/dist/ontology/validation/links.d.ts.map +1 -0
  665. package/dist/ontology/validation/normalize.d.ts +21 -0
  666. package/dist/ontology/validation/normalize.d.ts.map +1 -0
  667. package/dist/ontology/validation/properties.d.ts +19 -0
  668. package/dist/ontology/validation/properties.d.ts.map +1 -0
  669. package/dist/ontology/validation/query.d.ts +3 -0
  670. package/dist/ontology/validation/query.d.ts.map +1 -0
  671. package/dist/ontology/validation/schema.d.ts +7 -0
  672. package/dist/ontology/validation/schema.d.ts.map +1 -0
  673. package/dist/ontology/validation/telemetry.d.ts +7 -0
  674. package/dist/ontology/validation/telemetry.d.ts.map +1 -0
  675. package/dist/pipelines/builders.d.ts +14 -0
  676. package/dist/pipelines/builders.d.ts.map +1 -0
  677. package/dist/pipelines/errors.d.ts +4 -0
  678. package/dist/pipelines/errors.d.ts.map +1 -0
  679. package/dist/pipelines/index.d.ts +7 -0
  680. package/dist/pipelines/index.d.ts.map +1 -0
  681. package/dist/pipelines/request.d.ts +31 -0
  682. package/dist/pipelines/request.d.ts.map +1 -0
  683. package/dist/pipelines/types.d.ts +84 -0
  684. package/dist/pipelines/types.d.ts.map +1 -0
  685. package/dist/predicates/builders.d.ts +24 -0
  686. package/dist/predicates/builders.d.ts.map +1 -0
  687. package/dist/predicates/evaluate.d.ts +8 -0
  688. package/dist/predicates/evaluate.d.ts.map +1 -0
  689. package/dist/predicates/index.d.ts +5 -0
  690. package/dist/predicates/index.d.ts.map +1 -0
  691. package/dist/predicates/types.d.ts +69 -0
  692. package/dist/predicates/types.d.ts.map +1 -0
  693. package/dist/predicates/validation.d.ts +15 -0
  694. package/dist/predicates/validation.d.ts.map +1 -0
  695. package/dist/projections/builders.d.ts +212 -0
  696. package/dist/projections/builders.d.ts.map +1 -0
  697. package/dist/projections/errors.d.ts +4 -0
  698. package/dist/projections/errors.d.ts.map +1 -0
  699. package/dist/projections/index.d.ts +5 -0
  700. package/dist/projections/index.d.ts.map +1 -0
  701. package/dist/projections/internal.d.ts +24 -0
  702. package/dist/projections/internal.d.ts.map +1 -0
  703. package/dist/projections/internal.js +26 -0
  704. package/dist/projections/internal.js.map +9 -0
  705. package/dist/projections/ownership.d.ts +9 -0
  706. package/dist/projections/ownership.d.ts.map +1 -0
  707. package/dist/projections/registry.d.ts +30 -0
  708. package/dist/projections/registry.d.ts.map +1 -0
  709. package/dist/projections/revision.d.ts +7 -0
  710. package/dist/projections/revision.d.ts.map +1 -0
  711. package/dist/projections/types.d.ts +153 -0
  712. package/dist/projections/types.d.ts.map +1 -0
  713. package/dist/projections/validation.d.ts +97 -0
  714. package/dist/projections/validation.d.ts.map +1 -0
  715. package/dist/provider-scope.d.ts +12 -0
  716. package/dist/provider-scope.d.ts.map +1 -0
  717. package/dist/query.d.ts +17 -0
  718. package/dist/query.d.ts.map +1 -0
  719. package/dist/query.js +21 -0
  720. package/dist/query.js.map +9 -0
  721. package/dist/queues/errors.d.ts +7 -0
  722. package/dist/queues/errors.d.ts.map +1 -0
  723. package/dist/queues/in-memory.d.ts +73 -0
  724. package/dist/queues/in-memory.d.ts.map +1 -0
  725. package/dist/queues/index.d.ts +5 -0
  726. package/dist/queues/index.d.ts.map +1 -0
  727. package/dist/queues/index.js +12 -0
  728. package/dist/queues/index.js.map +9 -0
  729. package/dist/queues/types.d.ts +182 -0
  730. package/dist/queues/types.d.ts.map +1 -0
  731. package/dist/rules/builders.d.ts +10 -0
  732. package/dist/rules/builders.d.ts.map +1 -0
  733. package/dist/rules/dependencies.d.ts +9 -0
  734. package/dist/rules/dependencies.d.ts.map +1 -0
  735. package/dist/rules/errors.d.ts +11 -0
  736. package/dist/rules/errors.d.ts.map +1 -0
  737. package/dist/rules/index.d.ts +6 -0
  738. package/dist/rules/index.d.ts.map +1 -0
  739. package/dist/rules/internal.d.ts +9 -0
  740. package/dist/rules/internal.d.ts.map +1 -0
  741. package/dist/rules/internal.js +10 -0
  742. package/dist/rules/internal.js.map +9 -0
  743. package/dist/rules/types.d.ts +72 -0
  744. package/dist/rules/types.d.ts.map +1 -0
  745. package/dist/rules/validation.d.ts +23 -0
  746. package/dist/rules/validation.d.ts.map +1 -0
  747. package/dist/runtime/create.d.ts +68 -0
  748. package/dist/runtime/create.d.ts.map +1 -0
  749. package/dist/runtime/errors.d.ts +9 -0
  750. package/dist/runtime/errors.d.ts.map +1 -0
  751. package/dist/runtime/index.d.ts +26 -0
  752. package/dist/runtime/index.d.ts.map +1 -0
  753. package/dist/runtime/internal.d.ts +3 -0
  754. package/dist/runtime/internal.d.ts.map +1 -0
  755. package/dist/runtime/internal.js +16 -0
  756. package/dist/runtime/internal.js.map +9 -0
  757. package/dist/runtime/ontology-mutations.d.ts +16 -0
  758. package/dist/runtime/ontology-mutations.d.ts.map +1 -0
  759. package/dist/runtime/scoped.d.ts +158 -0
  760. package/dist/runtime/scoped.d.ts.map +1 -0
  761. package/dist/runtime/sixb.d.ts +226 -0
  762. package/dist/runtime/sixb.d.ts.map +1 -0
  763. package/dist/runtime/storage-readiness.d.ts +20 -0
  764. package/dist/runtime/storage-readiness.d.ts.map +1 -0
  765. package/dist/runtime/types.d.ts +840 -0
  766. package/dist/runtime/types.d.ts.map +1 -0
  767. package/dist/sandboxes/errors.d.ts +20 -0
  768. package/dist/sandboxes/errors.d.ts.map +1 -0
  769. package/dist/sandboxes/exec.d.ts +17 -0
  770. package/dist/sandboxes/exec.d.ts.map +1 -0
  771. package/dist/sandboxes/index.d.ts +5 -0
  772. package/dist/sandboxes/index.d.ts.map +1 -0
  773. package/dist/sandboxes/index.js +18 -0
  774. package/dist/sandboxes/index.js.map +9 -0
  775. package/dist/sandboxes/sandbox.d.ts +110 -0
  776. package/dist/sandboxes/sandbox.d.ts.map +1 -0
  777. package/dist/scheduler/errors.d.ts +7 -0
  778. package/dist/scheduler/errors.d.ts.map +1 -0
  779. package/dist/scheduler/index.d.ts +4 -0
  780. package/dist/scheduler/index.d.ts.map +1 -0
  781. package/dist/scheduler/index.js +18 -0
  782. package/dist/scheduler/index.js.map +9 -0
  783. package/dist/scheduler/runtime.d.ts +32 -0
  784. package/dist/scheduler/runtime.d.ts.map +1 -0
  785. package/dist/schedules/builders.d.ts +4 -0
  786. package/dist/schedules/builders.d.ts.map +1 -0
  787. package/dist/schedules/cron.d.ts +14 -0
  788. package/dist/schedules/cron.d.ts.map +1 -0
  789. package/dist/schedules/errors.d.ts +7 -0
  790. package/dist/schedules/errors.d.ts.map +1 -0
  791. package/dist/schedules/index.d.ts +12 -0
  792. package/dist/schedules/index.d.ts.map +1 -0
  793. package/dist/schedules/index.js +37 -0
  794. package/dist/schedules/index.js.map +9 -0
  795. package/dist/schedules/next-occurrence.d.ts +11 -0
  796. package/dist/schedules/next-occurrence.d.ts.map +1 -0
  797. package/dist/schedules/runtime.d.ts +17 -0
  798. package/dist/schedules/runtime.d.ts.map +1 -0
  799. package/dist/schedules/types.d.ts +99 -0
  800. package/dist/schedules/types.d.ts.map +1 -0
  801. package/dist/schedules/validation.d.ts +13 -0
  802. package/dist/schedules/validation.d.ts.map +1 -0
  803. package/dist/security/applications.d.ts +15 -0
  804. package/dist/security/applications.d.ts.map +1 -0
  805. package/dist/security/builders.d.ts +20 -0
  806. package/dist/security/builders.d.ts.map +1 -0
  807. package/dist/security/errors.d.ts +4 -0
  808. package/dist/security/errors.d.ts.map +1 -0
  809. package/dist/security/every.d.ts +68 -0
  810. package/dist/security/every.d.ts.map +1 -0
  811. package/dist/security/grants.d.ts +40 -0
  812. package/dist/security/grants.d.ts.map +1 -0
  813. package/dist/security/index.d.ts +12 -0
  814. package/dist/security/index.d.ts.map +1 -0
  815. package/dist/security/membership-policies.d.ts +17 -0
  816. package/dist/security/membership-policies.d.ts.map +1 -0
  817. package/dist/security/runtime.d.ts +16 -0
  818. package/dist/security/runtime.d.ts.map +1 -0
  819. package/dist/security/types.d.ts +133 -0
  820. package/dist/security/types.d.ts.map +1 -0
  821. package/dist/security/validation.d.ts +36 -0
  822. package/dist/security/validation.d.ts.map +1 -0
  823. package/dist/storage/action-runs/errors.d.ts +10 -0
  824. package/dist/storage/action-runs/errors.d.ts.map +1 -0
  825. package/dist/storage/action-runs/idempotency.d.ts +10 -0
  826. package/dist/storage/action-runs/idempotency.d.ts.map +1 -0
  827. package/dist/storage/action-runs/in-memory.d.ts +28 -0
  828. package/dist/storage/action-runs/in-memory.d.ts.map +1 -0
  829. package/dist/storage/action-runs/index.d.ts +6 -0
  830. package/dist/storage/action-runs/index.d.ts.map +1 -0
  831. package/dist/storage/action-runs/types.d.ts +138 -0
  832. package/dist/storage/action-runs/types.d.ts.map +1 -0
  833. package/dist/storage/agents/errors.d.ts +11 -0
  834. package/dist/storage/agents/errors.d.ts.map +1 -0
  835. package/dist/storage/agents/in-memory.d.ts +70 -0
  836. package/dist/storage/agents/in-memory.d.ts.map +1 -0
  837. package/dist/storage/agents/index.d.ts +7 -0
  838. package/dist/storage/agents/index.d.ts.map +1 -0
  839. package/dist/storage/agents/types.d.ts +295 -0
  840. package/dist/storage/agents/types.d.ts.map +1 -0
  841. package/dist/storage/auth/errors.d.ts +10 -0
  842. package/dist/storage/auth/errors.d.ts.map +1 -0
  843. package/dist/storage/auth/in-memory/access-tokens.d.ts +32 -0
  844. package/dist/storage/auth/in-memory/access-tokens.d.ts.map +1 -0
  845. package/dist/storage/auth/in-memory/auth-storage.d.ts +36 -0
  846. package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -0
  847. package/dist/storage/auth/in-memory/group-memberships.d.ts +21 -0
  848. package/dist/storage/auth/in-memory/group-memberships.d.ts.map +1 -0
  849. package/dist/storage/auth/in-memory/identities.d.ts +17 -0
  850. package/dist/storage/auth/in-memory/identities.d.ts.map +1 -0
  851. package/dist/storage/auth/in-memory/index.d.ts +2 -0
  852. package/dist/storage/auth/in-memory/index.d.ts.map +1 -0
  853. package/dist/storage/auth/in-memory/invitations.d.ts +28 -0
  854. package/dist/storage/auth/in-memory/invitations.d.ts.map +1 -0
  855. package/dist/storage/auth/in-memory/magic-links.d.ts +28 -0
  856. package/dist/storage/auth/in-memory/magic-links.d.ts.map +1 -0
  857. package/dist/storage/auth/in-memory/oidc-attempts.d.ts +18 -0
  858. package/dist/storage/auth/in-memory/oidc-attempts.d.ts.map +1 -0
  859. package/dist/storage/auth/in-memory/service-account-group-memberships.d.ts +17 -0
  860. package/dist/storage/auth/in-memory/service-account-group-memberships.d.ts.map +1 -0
  861. package/dist/storage/auth/in-memory/service-accounts.d.ts +14 -0
  862. package/dist/storage/auth/in-memory/service-accounts.d.ts.map +1 -0
  863. package/dist/storage/auth/in-memory/sessions.d.ts +55 -0
  864. package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -0
  865. package/dist/storage/auth/in-memory/shared.d.ts +71 -0
  866. package/dist/storage/auth/in-memory/shared.d.ts.map +1 -0
  867. package/dist/storage/auth/in-memory/users.d.ts +19 -0
  868. package/dist/storage/auth/in-memory/users.d.ts.map +1 -0
  869. package/dist/storage/auth/in-memory.d.ts +2 -0
  870. package/dist/storage/auth/in-memory.d.ts.map +1 -0
  871. package/dist/storage/auth/index.d.ts +5 -0
  872. package/dist/storage/auth/index.d.ts.map +1 -0
  873. package/dist/storage/auth/types.d.ts +584 -0
  874. package/dist/storage/auth/types.d.ts.map +1 -0
  875. package/dist/storage/errors.d.ts +27 -0
  876. package/dist/storage/errors.d.ts.map +1 -0
  877. package/dist/storage/file-upload-sessions/errors.d.ts +15 -0
  878. package/dist/storage/file-upload-sessions/errors.d.ts.map +1 -0
  879. package/dist/storage/file-upload-sessions/in-memory.d.ts +27 -0
  880. package/dist/storage/file-upload-sessions/in-memory.d.ts.map +1 -0
  881. package/dist/storage/file-upload-sessions/index.d.ts +6 -0
  882. package/dist/storage/file-upload-sessions/index.d.ts.map +1 -0
  883. package/dist/storage/file-upload-sessions/types.d.ts +53 -0
  884. package/dist/storage/file-upload-sessions/types.d.ts.map +1 -0
  885. package/dist/storage/file-upload-sessions/utils.d.ts +11 -0
  886. package/dist/storage/file-upload-sessions/utils.d.ts.map +1 -0
  887. package/dist/storage/in-memory/index.d.ts +105 -0
  888. package/dist/storage/in-memory/index.d.ts.map +1 -0
  889. package/dist/storage/in-memory/testing.d.ts +8 -0
  890. package/dist/storage/in-memory/testing.d.ts.map +1 -0
  891. package/dist/storage/index.d.ts +44 -0
  892. package/dist/storage/index.d.ts.map +1 -0
  893. package/dist/storage/index.js +144 -0
  894. package/dist/storage/index.js.map +9 -0
  895. package/dist/storage/migrations/check-schema.d.ts +19 -0
  896. package/dist/storage/migrations/check-schema.d.ts.map +1 -0
  897. package/dist/storage/migrations/index.d.ts +5 -0
  898. package/dist/storage/migrations/index.d.ts.map +1 -0
  899. package/dist/storage/migrations/migrate-storage.d.ts +6 -0
  900. package/dist/storage/migrations/migrate-storage.d.ts.map +1 -0
  901. package/dist/storage/migrations/migration-set.d.ts +27 -0
  902. package/dist/storage/migrations/migration-set.d.ts.map +1 -0
  903. package/dist/storage/migrations/types.d.ts +115 -0
  904. package/dist/storage/migrations/types.d.ts.map +1 -0
  905. package/dist/storage/objects/in-memory.d.ts +126 -0
  906. package/dist/storage/objects/in-memory.d.ts.map +1 -0
  907. package/dist/storage/objects/index.d.ts +2 -0
  908. package/dist/storage/objects/index.d.ts.map +1 -0
  909. package/dist/storage/objects/types.d.ts +222 -0
  910. package/dist/storage/objects/types.d.ts.map +1 -0
  911. package/dist/storage/ontology/commits.d.ts +117 -0
  912. package/dist/storage/ontology/commits.d.ts.map +1 -0
  913. package/dist/storage/ontology/in-memory/commits.d.ts +12 -0
  914. package/dist/storage/ontology/in-memory/commits.d.ts.map +1 -0
  915. package/dist/storage/ontology/in-memory/index.d.ts +36 -0
  916. package/dist/storage/ontology/in-memory/index.d.ts.map +1 -0
  917. package/dist/storage/ontology/in-memory/materializations-finalization.d.ts +5 -0
  918. package/dist/storage/ontology/in-memory/materializations-finalization.d.ts.map +1 -0
  919. package/dist/storage/ontology/in-memory/materializations-state.d.ts +20 -0
  920. package/dist/storage/ontology/in-memory/materializations-state.d.ts.map +1 -0
  921. package/dist/storage/ontology/in-memory/materializations-work.d.ts +6 -0
  922. package/dist/storage/ontology/in-memory/materializations-work.d.ts.map +1 -0
  923. package/dist/storage/ontology/in-memory/materializations.d.ts +101 -0
  924. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -0
  925. package/dist/storage/ontology/in-memory/outbox.d.ts +19 -0
  926. package/dist/storage/ontology/in-memory/outbox.d.ts.map +1 -0
  927. package/dist/storage/ontology/in-memory/shared-state.d.ts +48 -0
  928. package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -0
  929. package/dist/storage/ontology/in-memory/sources.d.ts +23 -0
  930. package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -0
  931. package/dist/storage/ontology/in-memory/testing.d.ts +11 -0
  932. package/dist/storage/ontology/in-memory/testing.d.ts.map +1 -0
  933. package/dist/storage/ontology/index.d.ts +16 -0
  934. package/dist/storage/ontology/index.d.ts.map +1 -0
  935. package/dist/storage/ontology/materializations.d.ts +333 -0
  936. package/dist/storage/ontology/materializations.d.ts.map +1 -0
  937. package/dist/storage/ontology/outbox.d.ts +66 -0
  938. package/dist/storage/ontology/outbox.d.ts.map +1 -0
  939. package/dist/storage/ontology/provider-header-validation.d.ts +4 -0
  940. package/dist/storage/ontology/provider-header-validation.d.ts.map +1 -0
  941. package/dist/storage/ontology/provider-validation.d.ts +6 -0
  942. package/dist/storage/ontology/provider-validation.d.ts.map +1 -0
  943. package/dist/storage/ontology/provider-work.d.ts +12 -0
  944. package/dist/storage/ontology/provider-work.d.ts.map +1 -0
  945. package/dist/storage/ontology/provider.d.ts +191 -0
  946. package/dist/storage/ontology/provider.d.ts.map +1 -0
  947. package/dist/storage/ontology/provider.js +115 -0
  948. package/dist/storage/ontology/provider.js.map +9 -0
  949. package/dist/storage/ontology/sources.d.ts +151 -0
  950. package/dist/storage/ontology/sources.d.ts.map +1 -0
  951. package/dist/storage/operation-scope.d.ts +32 -0
  952. package/dist/storage/operation-scope.d.ts.map +1 -0
  953. package/dist/storage/operation-scope.js +22 -0
  954. package/dist/storage/operation-scope.js.map +9 -0
  955. package/dist/storage/pagination.d.ts +11 -0
  956. package/dist/storage/pagination.d.ts.map +1 -0
  957. package/dist/storage/pipeline-runs/errors.d.ts +7 -0
  958. package/dist/storage/pipeline-runs/errors.d.ts.map +1 -0
  959. package/dist/storage/pipeline-runs/in-memory.d.ts +26 -0
  960. package/dist/storage/pipeline-runs/in-memory.d.ts.map +1 -0
  961. package/dist/storage/pipeline-runs/index.d.ts +4 -0
  962. package/dist/storage/pipeline-runs/index.d.ts.map +1 -0
  963. package/dist/storage/pipeline-runs/types.d.ts +133 -0
  964. package/dist/storage/pipeline-runs/types.d.ts.map +1 -0
  965. package/dist/storage/projection-runs/errors.d.ts +9 -0
  966. package/dist/storage/projection-runs/errors.d.ts.map +1 -0
  967. package/dist/storage/projection-runs/in-memory.d.ts +42 -0
  968. package/dist/storage/projection-runs/in-memory.d.ts.map +1 -0
  969. package/dist/storage/projection-runs/index.d.ts +5 -0
  970. package/dist/storage/projection-runs/index.d.ts.map +1 -0
  971. package/dist/storage/projection-runs/lifecycle.d.ts +93 -0
  972. package/dist/storage/projection-runs/lifecycle.d.ts.map +1 -0
  973. package/dist/storage/projection-runs/lifecycle.js +64 -0
  974. package/dist/storage/projection-runs/lifecycle.js.map +9 -0
  975. package/dist/storage/projection-runs/types.d.ts +175 -0
  976. package/dist/storage/projection-runs/types.d.ts.map +1 -0
  977. package/dist/storage/rules/in-memory.d.ts +26 -0
  978. package/dist/storage/rules/in-memory.d.ts.map +1 -0
  979. package/dist/storage/rules/index.d.ts +3 -0
  980. package/dist/storage/rules/index.d.ts.map +1 -0
  981. package/dist/storage/rules/types.d.ts +60 -0
  982. package/dist/storage/rules/types.d.ts.map +1 -0
  983. package/dist/storage/run-listing.d.ts +36 -0
  984. package/dist/storage/run-listing.d.ts.map +1 -0
  985. package/dist/storage/sync-runs/errors.d.ts +8 -0
  986. package/dist/storage/sync-runs/errors.d.ts.map +1 -0
  987. package/dist/storage/sync-runs/in-memory.d.ts +16 -0
  988. package/dist/storage/sync-runs/in-memory.d.ts.map +1 -0
  989. package/dist/storage/sync-runs/index.d.ts +4 -0
  990. package/dist/storage/sync-runs/index.d.ts.map +1 -0
  991. package/dist/storage/sync-runs/types.d.ts +85 -0
  992. package/dist/storage/sync-runs/types.d.ts.map +1 -0
  993. package/dist/storage/timeseries/index.d.ts +2 -0
  994. package/dist/storage/timeseries/index.d.ts.map +1 -0
  995. package/dist/storage/timeseries/store.d.ts +46 -0
  996. package/dist/storage/timeseries/store.d.ts.map +1 -0
  997. package/dist/storage/timeseries/types.d.ts +50 -0
  998. package/dist/storage/timeseries/types.d.ts.map +1 -0
  999. package/dist/storage/transaction.d.ts +4 -0
  1000. package/dist/storage/transaction.d.ts.map +1 -0
  1001. package/dist/storage/types.d.ts +78 -0
  1002. package/dist/storage/types.d.ts.map +1 -0
  1003. package/dist/storage/webhook-deliveries/in-memory.d.ts +18 -0
  1004. package/dist/storage/webhook-deliveries/in-memory.d.ts.map +1 -0
  1005. package/dist/storage/webhook-deliveries/index.d.ts +3 -0
  1006. package/dist/storage/webhook-deliveries/index.d.ts.map +1 -0
  1007. package/dist/storage/webhook-deliveries/types.d.ts +43 -0
  1008. package/dist/storage/webhook-deliveries/types.d.ts.map +1 -0
  1009. package/dist/storage/webhook-runs/errors.d.ts +7 -0
  1010. package/dist/storage/webhook-runs/errors.d.ts.map +1 -0
  1011. package/dist/storage/webhook-runs/in-memory.d.ts +16 -0
  1012. package/dist/storage/webhook-runs/in-memory.d.ts.map +1 -0
  1013. package/dist/storage/webhook-runs/index.d.ts +4 -0
  1014. package/dist/storage/webhook-runs/index.d.ts.map +1 -0
  1015. package/dist/storage/webhook-runs/types.d.ts +66 -0
  1016. package/dist/storage/webhook-runs/types.d.ts.map +1 -0
  1017. package/dist/storage/workflow-interventions/errors.d.ts +7 -0
  1018. package/dist/storage/workflow-interventions/errors.d.ts.map +1 -0
  1019. package/dist/storage/workflow-interventions/in-memory.d.ts +18 -0
  1020. package/dist/storage/workflow-interventions/in-memory.d.ts.map +1 -0
  1021. package/dist/storage/workflow-interventions/index.d.ts +4 -0
  1022. package/dist/storage/workflow-interventions/index.d.ts.map +1 -0
  1023. package/dist/storage/workflow-interventions/types.d.ts +94 -0
  1024. package/dist/storage/workflow-interventions/types.d.ts.map +1 -0
  1025. package/dist/storage/workflow-runs/errors.d.ts +7 -0
  1026. package/dist/storage/workflow-runs/errors.d.ts.map +1 -0
  1027. package/dist/storage/workflow-runs/in-memory.d.ts +83 -0
  1028. package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -0
  1029. package/dist/storage/workflow-runs/index.d.ts +4 -0
  1030. package/dist/storage/workflow-runs/index.d.ts.map +1 -0
  1031. package/dist/storage/workflow-runs/types.d.ts +305 -0
  1032. package/dist/storage/workflow-runs/types.d.ts.map +1 -0
  1033. package/dist/syncs/builders.d.ts +9 -0
  1034. package/dist/syncs/builders.d.ts.map +1 -0
  1035. package/dist/syncs/errors.d.ts +4 -0
  1036. package/dist/syncs/errors.d.ts.map +1 -0
  1037. package/dist/syncs/index.d.ts +7 -0
  1038. package/dist/syncs/index.d.ts.map +1 -0
  1039. package/dist/syncs/request.d.ts +41 -0
  1040. package/dist/syncs/request.d.ts.map +1 -0
  1041. package/dist/syncs/types.d.ts +76 -0
  1042. package/dist/syncs/types.d.ts.map +1 -0
  1043. package/dist/testing/agent-storage-contract.d.ts +16 -0
  1044. package/dist/testing/agent-storage-contract.d.ts.map +1 -0
  1045. package/dist/testing/auth-storage-contract.d.ts +16 -0
  1046. package/dist/testing/auth-storage-contract.d.ts.map +1 -0
  1047. package/dist/testing/blob-storage-contract.d.ts +10 -0
  1048. package/dist/testing/blob-storage-contract.d.ts.map +1 -0
  1049. package/dist/testing/broker-contract.d.ts +39 -0
  1050. package/dist/testing/broker-contract.d.ts.map +1 -0
  1051. package/dist/testing/effective-storage-contract.d.ts +7 -0
  1052. package/dist/testing/effective-storage-contract.d.ts.map +1 -0
  1053. package/dist/testing/index.d.ts +15 -0
  1054. package/dist/testing/index.d.ts.map +1 -0
  1055. package/dist/testing/index.js +7000 -0
  1056. package/dist/testing/index.js.map +24 -0
  1057. package/dist/testing/lake-storage-contract.d.ts +29 -0
  1058. package/dist/testing/lake-storage-contract.d.ts.map +1 -0
  1059. package/dist/testing/materialization-failure-contract.d.ts +26 -0
  1060. package/dist/testing/materialization-failure-contract.d.ts.map +1 -0
  1061. package/dist/testing/materializer-fixture.d.ts +35 -0
  1062. package/dist/testing/materializer-fixture.d.ts.map +1 -0
  1063. package/dist/testing/materializer-storage-contract.d.ts +7 -0
  1064. package/dist/testing/materializer-storage-contract.d.ts.map +1 -0
  1065. package/dist/testing/object-query-contract.d.ts +21 -0
  1066. package/dist/testing/object-query-contract.d.ts.map +1 -0
  1067. package/dist/testing/ontology-contract-fixture.d.ts +33 -0
  1068. package/dist/testing/ontology-contract-fixture.d.ts.map +1 -0
  1069. package/dist/testing/ontology-storage-contract.d.ts +21 -0
  1070. package/dist/testing/ontology-storage-contract.d.ts.map +1 -0
  1071. package/dist/testing/projection-run-storage-contract.d.ts +10 -0
  1072. package/dist/testing/projection-run-storage-contract.d.ts.map +1 -0
  1073. package/dist/testing/queues-contract.d.ts +31 -0
  1074. package/dist/testing/queues-contract.d.ts.map +1 -0
  1075. package/dist/testing/sandboxes-contract.d.ts +31 -0
  1076. package/dist/testing/sandboxes-contract.d.ts.map +1 -0
  1077. package/dist/tsconfig.json +5 -0
  1078. package/dist/webhooks/builders.d.ts +41 -0
  1079. package/dist/webhooks/builders.d.ts.map +1 -0
  1080. package/dist/webhooks/connector.d.ts +10 -0
  1081. package/dist/webhooks/connector.d.ts.map +1 -0
  1082. package/dist/webhooks/errors.d.ts +4 -0
  1083. package/dist/webhooks/errors.d.ts.map +1 -0
  1084. package/dist/webhooks/index.d.ts +9 -0
  1085. package/dist/webhooks/index.d.ts.map +1 -0
  1086. package/dist/webhooks/registry.d.ts +7 -0
  1087. package/dist/webhooks/registry.d.ts.map +1 -0
  1088. package/dist/webhooks/types.d.ts +79 -0
  1089. package/dist/webhooks/types.d.ts.map +1 -0
  1090. package/dist/webhooks/unverified.d.ts +57 -0
  1091. package/dist/webhooks/unverified.d.ts.map +1 -0
  1092. package/dist/workers/errors.d.ts +17 -0
  1093. package/dist/workers/errors.d.ts.map +1 -0
  1094. package/dist/workers/index.d.ts +7 -0
  1095. package/dist/workers/index.d.ts.map +1 -0
  1096. package/dist/workers/index.js +506 -0
  1097. package/dist/workers/index.js.map +13 -0
  1098. package/dist/workers/queue-delivery.d.ts +38 -0
  1099. package/dist/workers/queue-delivery.d.ts.map +1 -0
  1100. package/dist/workers/queue-worker.d.ts +30 -0
  1101. package/dist/workers/queue-worker.d.ts.map +1 -0
  1102. package/dist/workers/worker.d.ts +14 -0
  1103. package/dist/workers/worker.d.ts.map +1 -0
  1104. package/dist/workflows/builders.d.ts +27 -0
  1105. package/dist/workflows/builders.d.ts.map +1 -0
  1106. package/dist/workflows/errors.d.ts +11 -0
  1107. package/dist/workflows/errors.d.ts.map +1 -0
  1108. package/dist/workflows/index.d.ts +9 -0
  1109. package/dist/workflows/index.d.ts.map +1 -0
  1110. package/dist/workflows/index.js +108 -0
  1111. package/dist/workflows/index.js.map +9 -0
  1112. package/dist/workflows/request.d.ts +29 -0
  1113. package/dist/workflows/request.d.ts.map +1 -0
  1114. package/dist/workflows/runtime.d.ts +33 -0
  1115. package/dist/workflows/runtime.d.ts.map +1 -0
  1116. package/dist/workflows/snapshot.d.ts +55 -0
  1117. package/dist/workflows/snapshot.d.ts.map +1 -0
  1118. package/dist/workflows/types.d.ts +288 -0
  1119. package/dist/workflows/types.d.ts.map +1 -0
  1120. package/dist/workflows/validation.d.ts +66 -0
  1121. package/dist/workflows/validation.d.ts.map +1 -0
  1122. package/package.json +312 -0
  1123. package/src/actions/builders/define-action.ts +243 -0
  1124. package/src/actions/builders/params.ts +48 -0
  1125. package/src/actions/builders.ts +2 -0
  1126. package/src/actions/commit-edits.ts +110 -0
  1127. package/src/actions/errors.ts +15 -0
  1128. package/src/actions/index.ts +75 -0
  1129. package/src/actions/read-facade.ts +224 -0
  1130. package/src/actions/registry.ts +135 -0
  1131. package/src/actions/request.ts +407 -0
  1132. package/src/actions/run-id.ts +17 -0
  1133. package/src/actions/runtime.ts +31 -0
  1134. package/src/actions/types/context.ts +224 -0
  1135. package/src/actions/types/definitions.ts +181 -0
  1136. package/src/actions/types/handlers.ts +68 -0
  1137. package/src/actions/types/params.ts +82 -0
  1138. package/src/actions/types.ts +4 -0
  1139. package/src/actions/validation.ts +186 -0
  1140. package/src/actions/validators.ts +56 -0
  1141. package/src/actions/worker.ts +2 -0
  1142. package/src/agents/adapters.ts +647 -0
  1143. package/src/agents/api-gateway.ts +57 -0
  1144. package/src/agents/builders.ts +46 -0
  1145. package/src/agents/context-model.ts +41 -0
  1146. package/src/agents/context-resolution.ts +43 -0
  1147. package/src/agents/context.ts +185 -0
  1148. package/src/agents/dispatch.ts +107 -0
  1149. package/src/agents/errors.ts +40 -0
  1150. package/src/agents/ids.ts +24 -0
  1151. package/src/agents/index.ts +122 -0
  1152. package/src/agents/message.ts +91 -0
  1153. package/src/agents/prompt.ts +45 -0
  1154. package/src/agents/request.ts +198 -0
  1155. package/src/agents/runtime.ts +124 -0
  1156. package/src/agents/streams.ts +194 -0
  1157. package/src/agents/types.ts +70 -0
  1158. package/src/agents/validation.ts +151 -0
  1159. package/src/auth/access-tokens.ts +125 -0
  1160. package/src/auth/audience.ts +28 -0
  1161. package/src/auth/cookies.ts +263 -0
  1162. package/src/auth/csrf.ts +41 -0
  1163. package/src/auth/errors.ts +19 -0
  1164. package/src/auth/index.ts +149 -0
  1165. package/src/auth/runtime.ts +1642 -0
  1166. package/src/auth/session-cache.ts +112 -0
  1167. package/src/auth/sessions.ts +55 -0
  1168. package/src/auth/strategy.ts +46 -0
  1169. package/src/auth/types.ts +573 -0
  1170. package/src/auth/validation.ts +241 -0
  1171. package/src/authorization/application-access.ts +34 -0
  1172. package/src/authorization/decision.ts +215 -0
  1173. package/src/authorization/errors.ts +12 -0
  1174. package/src/authorization/event-visibility.ts +99 -0
  1175. package/src/authorization/grant-kinds.ts +149 -0
  1176. package/src/authorization/index.ts +24 -0
  1177. package/src/authorization/resolve.ts +101 -0
  1178. package/src/authorization/run-visibility.ts +78 -0
  1179. package/src/authorization/types.ts +52 -0
  1180. package/src/blob-storage/browser.ts +28 -0
  1181. package/src/blob-storage/constants.ts +9 -0
  1182. package/src/blob-storage/derive.ts +13 -0
  1183. package/src/blob-storage/errors.ts +6 -0
  1184. package/src/blob-storage/in-memory.ts +74 -0
  1185. package/src/blob-storage/index.ts +37 -0
  1186. package/src/blob-storage/types.ts +143 -0
  1187. package/src/blob-storage/utils.ts +126 -0
  1188. package/src/blob-storage/validation.ts +58 -0
  1189. package/src/bootstrap/discovery.ts +507 -0
  1190. package/src/bootstrap/index.ts +26 -0
  1191. package/src/bootstrap/ontology-type-manifest.ts +316 -0
  1192. package/src/broker/errors.ts +15 -0
  1193. package/src/broker/in-memory.ts +511 -0
  1194. package/src/broker/index.ts +12 -0
  1195. package/src/broker/types.ts +129 -0
  1196. package/src/connectors/builders.ts +33 -0
  1197. package/src/connectors/errors.ts +15 -0
  1198. package/src/connectors/index.ts +9 -0
  1199. package/src/connectors/runtime.ts +100 -0
  1200. package/src/connectors/types.ts +64 -0
  1201. package/src/datasets/builders.ts +233 -0
  1202. package/src/datasets/errors.ts +3 -0
  1203. package/src/datasets/index.ts +13 -0
  1204. package/src/datasets/types.ts +52 -0
  1205. package/src/datasets/validation.ts +251 -0
  1206. package/src/edits/errors.ts +6 -0
  1207. package/src/edits/index.ts +24 -0
  1208. package/src/edits/normalize.ts +87 -0
  1209. package/src/edits/properties.ts +153 -0
  1210. package/src/edits/recorder.ts +312 -0
  1211. package/src/edits/types.ts +275 -0
  1212. package/src/error-reporting/capability.ts +160 -0
  1213. package/src/error-reporting/internal.ts +13 -0
  1214. package/src/error-reporting/normalize.ts +35 -0
  1215. package/src/error-reporting/reporter.ts +65 -0
  1216. package/src/error-reporting/types.ts +125 -0
  1217. package/src/events/definitions.ts +241 -0
  1218. package/src/events/envelope.ts +68 -0
  1219. package/src/events/errors.ts +7 -0
  1220. package/src/events/index.ts +167 -0
  1221. package/src/events/outbox-dispatcher.ts +534 -0
  1222. package/src/events/property-changes.ts +9 -0
  1223. package/src/events/runtime.ts +401 -0
  1224. package/src/events/scope.ts +71 -0
  1225. package/src/events/selectors/builder.ts +531 -0
  1226. package/src/events/selectors/index.ts +42 -0
  1227. package/src/events/selectors/predicate.ts +91 -0
  1228. package/src/events/selectors/types.ts +258 -0
  1229. package/src/events/toStoredEvent.ts +35 -0
  1230. package/src/events/types/actions.ts +42 -0
  1231. package/src/events/types/datasets.ts +21 -0
  1232. package/src/events/types/index.ts +206 -0
  1233. package/src/events/types/links.ts +42 -0
  1234. package/src/events/types/objects.ts +38 -0
  1235. package/src/events/types/pipelines.ts +67 -0
  1236. package/src/events/types/rules.ts +31 -0
  1237. package/src/events/types/schedules.ts +15 -0
  1238. package/src/events/types/syncs.ts +27 -0
  1239. package/src/events/types/telemetry.ts +19 -0
  1240. package/src/events/types/workflows.ts +172 -0
  1241. package/src/http/api-routes.ts +384 -0
  1242. package/src/http/index.ts +3 -0
  1243. package/src/http/route-pattern.ts +37 -0
  1244. package/src/index.ts +916 -0
  1245. package/src/json.ts +137 -0
  1246. package/src/lake-storage/definition-updates.ts +263 -0
  1247. package/src/lake-storage/errors.ts +6 -0
  1248. package/src/lake-storage/in-memory.ts +348 -0
  1249. package/src/lake-storage/index.ts +48 -0
  1250. package/src/lake-storage/sql-transforms.ts +67 -0
  1251. package/src/lake-storage/types.ts +135 -0
  1252. package/src/logging/console-logger.ts +63 -0
  1253. package/src/logging/index.ts +43 -0
  1254. package/src/logging/record.ts +126 -0
  1255. package/src/logging/run-logger.ts +350 -0
  1256. package/src/logging/runtime.ts +341 -0
  1257. package/src/logging/stream.ts +38 -0
  1258. package/src/logging/types.ts +156 -0
  1259. package/src/maintenance/index.ts +9 -0
  1260. package/src/maintenance/ontology-maintenance.ts +351 -0
  1261. package/src/maintenance/types.ts +57 -0
  1262. package/src/materialization/dataset-watermark.ts +52 -0
  1263. package/src/materialization/errors.ts +73 -0
  1264. package/src/materialization/events.ts +92 -0
  1265. package/src/materialization/identity.ts +36 -0
  1266. package/src/materialization/index.ts +75 -0
  1267. package/src/materialization/model.ts +394 -0
  1268. package/src/materialization/refs.ts +134 -0
  1269. package/src/materializer/README.md +130 -0
  1270. package/src/materializer/context.ts +75 -0
  1271. package/src/materializer/edits/apply.ts +241 -0
  1272. package/src/materializer/edits/commit.ts +311 -0
  1273. package/src/materializer/edits/execution-units.ts +32 -0
  1274. package/src/materializer/edits/load-state.ts +148 -0
  1275. package/src/materializer/edits/operations.ts +298 -0
  1276. package/src/materializer/edits/plan.ts +192 -0
  1277. package/src/materializer/edits/read-set.ts +79 -0
  1278. package/src/materializer/edits/working-state.ts +171 -0
  1279. package/src/materializer/effective/build-events.ts +197 -0
  1280. package/src/materializer/effective/diff.ts +169 -0
  1281. package/src/materializer/effective/load-state.ts +75 -0
  1282. package/src/materializer/effective/resolve.ts +96 -0
  1283. package/src/materializer/effective/validate.ts +180 -0
  1284. package/src/materializer/execution/commit-lifecycle.ts +57 -0
  1285. package/src/materializer/execution/plan-stream.ts +97 -0
  1286. package/src/materializer/execution/run-correlation.ts +73 -0
  1287. package/src/materializer/execution/work-executor.ts +143 -0
  1288. package/src/materializer/execution/work-records.ts +186 -0
  1289. package/src/materializer/index.ts +109 -0
  1290. package/src/materializer/materializer.ts +64 -0
  1291. package/src/materializer/projections/entry-validator.ts +162 -0
  1292. package/src/materializer/projections/finish-run.ts +194 -0
  1293. package/src/materializer/projections/replace.ts +447 -0
  1294. package/src/materializer/projections/replacement-plan.ts +376 -0
  1295. package/src/materializer/projections/source-materialization.ts +99 -0
  1296. package/src/materializer/shared/abort.ts +7 -0
  1297. package/src/materializer/shared/batching.ts +32 -0
  1298. package/src/materializer/shared/chunking.ts +27 -0
  1299. package/src/materializer/shared/identity.ts +141 -0
  1300. package/src/materializer/shared/normalize.ts +527 -0
  1301. package/src/materializer/shared/projection-run.ts +61 -0
  1302. package/src/materializer/telemetry/append.ts +503 -0
  1303. package/src/materializer/telemetry/plan.ts +363 -0
  1304. package/src/objects/action/errors.ts +56 -0
  1305. package/src/objects/action/index.ts +3 -0
  1306. package/src/objects/action/request.ts +63 -0
  1307. package/src/objects/context/index.ts +6 -0
  1308. package/src/objects/context/resolve.ts +51 -0
  1309. package/src/objects/context/types.ts +31 -0
  1310. package/src/objects/contexts.ts +64 -0
  1311. package/src/objects/errors.ts +7 -0
  1312. package/src/objects/helpers.ts +18 -0
  1313. package/src/objects/index.ts +26 -0
  1314. package/src/objects/link/authorization.ts +26 -0
  1315. package/src/objects/link/endpoints.ts +66 -0
  1316. package/src/objects/link/index.ts +3 -0
  1317. package/src/objects/link/remove.ts +42 -0
  1318. package/src/objects/link/upsert-batch.ts +80 -0
  1319. package/src/objects/link/upsert.ts +56 -0
  1320. package/src/objects/materializer-adapter.ts +307 -0
  1321. package/src/objects/object/delete.ts +47 -0
  1322. package/src/objects/object/index.ts +3 -0
  1323. package/src/objects/object/upsert-batch.ts +57 -0
  1324. package/src/objects/object/upsert.ts +38 -0
  1325. package/src/objects/query/errors.ts +55 -0
  1326. package/src/objects/query/executor.ts +1345 -0
  1327. package/src/objects/query/explain-format.ts +34 -0
  1328. package/src/objects/query/explain.ts +215 -0
  1329. package/src/objects/query/index.ts +77 -0
  1330. package/src/objects/query/ir.ts +211 -0
  1331. package/src/objects/query/normalize.ts +245 -0
  1332. package/src/objects/query/planner.ts +538 -0
  1333. package/src/objects/query/scalar-values.ts +100 -0
  1334. package/src/objects/query/validate.ts +1276 -0
  1335. package/src/objects/runtime-batch.ts +105 -0
  1336. package/src/objects/sdk/index.ts +2 -0
  1337. package/src/objects/sdk/object-handle.ts +139 -0
  1338. package/src/objects/sdk/object-set.ts +224 -0
  1339. package/src/objects/sdk/query-builder.ts +386 -0
  1340. package/src/objects/sdk/query-executor.ts +62 -0
  1341. package/src/objects/sdk/runtime-query-executor.ts +88 -0
  1342. package/src/objects/sdk/telemetry-channel.ts +81 -0
  1343. package/src/objects/sdk/where.ts +87 -0
  1344. package/src/objects/service/action-service.ts +40 -0
  1345. package/src/objects/service/index.ts +6 -0
  1346. package/src/objects/service/link-service.ts +74 -0
  1347. package/src/objects/service/list-service.ts +89 -0
  1348. package/src/objects/service/object-service.ts +28 -0
  1349. package/src/objects/service/telemetry-service.ts +17 -0
  1350. package/src/objects/telemetry/append-batch.ts +74 -0
  1351. package/src/objects/telemetry/history.ts +32 -0
  1352. package/src/objects/telemetry/index.ts +4 -0
  1353. package/src/objects/telemetry/write-batch.ts +52 -0
  1354. package/src/ontology/builders.ts +695 -0
  1355. package/src/ontology/decimal.ts +120 -0
  1356. package/src/ontology/errors.ts +25 -0
  1357. package/src/ontology/index.ts +80 -0
  1358. package/src/ontology/inference/index.ts +215 -0
  1359. package/src/ontology/internal.ts +3 -0
  1360. package/src/ontology/json-schema.ts +123 -0
  1361. package/src/ontology/refs.ts +80 -0
  1362. package/src/ontology/registry.ts +417 -0
  1363. package/src/ontology/tokens.ts +113 -0
  1364. package/src/ontology/types.ts +436 -0
  1365. package/src/ontology/units/index.ts +115 -0
  1366. package/src/ontology/units/quantitative-types.ts +608 -0
  1367. package/src/ontology/units/types.ts +27 -0
  1368. package/src/ontology/validation/index.ts +36 -0
  1369. package/src/ontology/validation/links.ts +126 -0
  1370. package/src/ontology/validation/normalize.ts +215 -0
  1371. package/src/ontology/validation/properties.ts +235 -0
  1372. package/src/ontology/validation/query.ts +300 -0
  1373. package/src/ontology/validation/schema.ts +174 -0
  1374. package/src/ontology/validation/telemetry.ts +53 -0
  1375. package/src/pipelines/builders.ts +155 -0
  1376. package/src/pipelines/errors.ts +3 -0
  1377. package/src/pipelines/index.ts +26 -0
  1378. package/src/pipelines/request.ts +71 -0
  1379. package/src/pipelines/types.ts +199 -0
  1380. package/src/predicates/builders.ts +152 -0
  1381. package/src/predicates/evaluate.ts +107 -0
  1382. package/src/predicates/index.ts +28 -0
  1383. package/src/predicates/types.ts +124 -0
  1384. package/src/predicates/validation.ts +152 -0
  1385. package/src/projections/builders.ts +770 -0
  1386. package/src/projections/errors.ts +3 -0
  1387. package/src/projections/index.ts +32 -0
  1388. package/src/projections/internal.ts +75 -0
  1389. package/src/projections/ownership.ts +134 -0
  1390. package/src/projections/registry.ts +269 -0
  1391. package/src/projections/revision.ts +245 -0
  1392. package/src/projections/types.ts +165 -0
  1393. package/src/projections/validation.ts +531 -0
  1394. package/src/provider-scope.ts +11 -0
  1395. package/src/query.ts +75 -0
  1396. package/src/queues/errors.ts +6 -0
  1397. package/src/queues/in-memory.ts +364 -0
  1398. package/src/queues/index.ts +23 -0
  1399. package/src/queues/types.ts +230 -0
  1400. package/src/rules/builders.ts +126 -0
  1401. package/src/rules/dependencies.ts +76 -0
  1402. package/src/rules/errors.ts +11 -0
  1403. package/src/rules/index.ts +30 -0
  1404. package/src/rules/internal.ts +8 -0
  1405. package/src/rules/types.ts +113 -0
  1406. package/src/rules/validation.ts +153 -0
  1407. package/src/runtime/create.ts +163 -0
  1408. package/src/runtime/errors.ts +8 -0
  1409. package/src/runtime/index.ts +67 -0
  1410. package/src/runtime/internal.ts +7 -0
  1411. package/src/runtime/ontology-mutations.ts +90 -0
  1412. package/src/runtime/scoped.ts +436 -0
  1413. package/src/runtime/sixb.ts +822 -0
  1414. package/src/runtime/storage-readiness.ts +91 -0
  1415. package/src/runtime/types.ts +1401 -0
  1416. package/src/sandboxes/errors.ts +22 -0
  1417. package/src/sandboxes/exec.ts +102 -0
  1418. package/src/sandboxes/index.ts +19 -0
  1419. package/src/sandboxes/sandbox.ts +124 -0
  1420. package/src/scheduler/errors.ts +7 -0
  1421. package/src/scheduler/index.ts +3 -0
  1422. package/src/scheduler/runtime.ts +174 -0
  1423. package/src/schedules/builders.ts +257 -0
  1424. package/src/schedules/cron.ts +166 -0
  1425. package/src/schedules/errors.ts +7 -0
  1426. package/src/schedules/index.ts +44 -0
  1427. package/src/schedules/next-occurrence.ts +217 -0
  1428. package/src/schedules/runtime.ts +241 -0
  1429. package/src/schedules/types.ts +212 -0
  1430. package/src/schedules/validation.ts +398 -0
  1431. package/src/security/applications.ts +11 -0
  1432. package/src/security/builders.ts +128 -0
  1433. package/src/security/errors.ts +3 -0
  1434. package/src/security/every.ts +108 -0
  1435. package/src/security/grants.ts +215 -0
  1436. package/src/security/index.ts +51 -0
  1437. package/src/security/membership-policies.ts +101 -0
  1438. package/src/security/runtime.ts +101 -0
  1439. package/src/security/types.ts +156 -0
  1440. package/src/security/validation.ts +430 -0
  1441. package/src/storage/action-runs/errors.ts +13 -0
  1442. package/src/storage/action-runs/idempotency.ts +68 -0
  1443. package/src/storage/action-runs/in-memory.ts +420 -0
  1444. package/src/storage/action-runs/index.ts +31 -0
  1445. package/src/storage/action-runs/types.ts +169 -0
  1446. package/src/storage/agents/errors.ts +22 -0
  1447. package/src/storage/agents/in-memory.ts +498 -0
  1448. package/src/storage/agents/index.ts +42 -0
  1449. package/src/storage/agents/types.ts +348 -0
  1450. package/src/storage/auth/errors.ts +40 -0
  1451. package/src/storage/auth/in-memory/access-tokens.ts +123 -0
  1452. package/src/storage/auth/in-memory/auth-storage.ts +559 -0
  1453. package/src/storage/auth/in-memory/group-memberships.ts +46 -0
  1454. package/src/storage/auth/in-memory/identities.ts +66 -0
  1455. package/src/storage/auth/in-memory/index.ts +1 -0
  1456. package/src/storage/auth/in-memory/invitations.ts +165 -0
  1457. package/src/storage/auth/in-memory/magic-links.ts +98 -0
  1458. package/src/storage/auth/in-memory/oidc-attempts.ts +75 -0
  1459. package/src/storage/auth/in-memory/service-account-group-memberships.ts +102 -0
  1460. package/src/storage/auth/in-memory/service-accounts.ts +80 -0
  1461. package/src/storage/auth/in-memory/sessions.ts +177 -0
  1462. package/src/storage/auth/in-memory/shared.ts +602 -0
  1463. package/src/storage/auth/in-memory/users.ts +139 -0
  1464. package/src/storage/auth/in-memory.ts +1 -0
  1465. package/src/storage/auth/index.ts +58 -0
  1466. package/src/storage/auth/types.ts +639 -0
  1467. package/src/storage/errors.ts +45 -0
  1468. package/src/storage/file-upload-sessions/errors.ts +24 -0
  1469. package/src/storage/file-upload-sessions/in-memory.ts +161 -0
  1470. package/src/storage/file-upload-sessions/index.ts +19 -0
  1471. package/src/storage/file-upload-sessions/types.ts +61 -0
  1472. package/src/storage/file-upload-sessions/utils.ts +49 -0
  1473. package/src/storage/in-memory/index.ts +297 -0
  1474. package/src/storage/in-memory/testing.ts +21 -0
  1475. package/src/storage/index.ts +489 -0
  1476. package/src/storage/migrations/check-schema.ts +49 -0
  1477. package/src/storage/migrations/index.ts +23 -0
  1478. package/src/storage/migrations/migrate-storage.ts +24 -0
  1479. package/src/storage/migrations/migration-set.ts +270 -0
  1480. package/src/storage/migrations/types.ts +129 -0
  1481. package/src/storage/objects/in-memory.ts +1154 -0
  1482. package/src/storage/objects/index.ts +24 -0
  1483. package/src/storage/objects/types.ts +244 -0
  1484. package/src/storage/ontology/commits.ts +132 -0
  1485. package/src/storage/ontology/in-memory/commits.ts +122 -0
  1486. package/src/storage/ontology/in-memory/index.ts +94 -0
  1487. package/src/storage/ontology/in-memory/materializations-finalization.ts +484 -0
  1488. package/src/storage/ontology/in-memory/materializations-state.ts +183 -0
  1489. package/src/storage/ontology/in-memory/materializations-work.ts +62 -0
  1490. package/src/storage/ontology/in-memory/materializations.ts +1192 -0
  1491. package/src/storage/ontology/in-memory/outbox.ts +227 -0
  1492. package/src/storage/ontology/in-memory/shared-state.ts +161 -0
  1493. package/src/storage/ontology/in-memory/sources.ts +566 -0
  1494. package/src/storage/ontology/in-memory/testing.ts +29 -0
  1495. package/src/storage/ontology/index.ts +119 -0
  1496. package/src/storage/ontology/materializations.ts +414 -0
  1497. package/src/storage/ontology/outbox.ts +79 -0
  1498. package/src/storage/ontology/provider-header-validation.ts +173 -0
  1499. package/src/storage/ontology/provider-validation.ts +36 -0
  1500. package/src/storage/ontology/provider-work.ts +330 -0
  1501. package/src/storage/ontology/provider.ts +852 -0
  1502. package/src/storage/ontology/sources.ts +195 -0
  1503. package/src/storage/operation-scope.ts +248 -0
  1504. package/src/storage/pagination.ts +23 -0
  1505. package/src/storage/pipeline-runs/errors.ts +6 -0
  1506. package/src/storage/pipeline-runs/in-memory.ts +307 -0
  1507. package/src/storage/pipeline-runs/index.ts +19 -0
  1508. package/src/storage/pipeline-runs/types.ts +148 -0
  1509. package/src/storage/projection-runs/errors.ts +15 -0
  1510. package/src/storage/projection-runs/in-memory.ts +321 -0
  1511. package/src/storage/projection-runs/index.ts +36 -0
  1512. package/src/storage/projection-runs/lifecycle.ts +793 -0
  1513. package/src/storage/projection-runs/types.ts +254 -0
  1514. package/src/storage/rules/in-memory.ts +191 -0
  1515. package/src/storage/rules/index.ts +12 -0
  1516. package/src/storage/rules/types.ts +80 -0
  1517. package/src/storage/run-listing.ts +107 -0
  1518. package/src/storage/sync-runs/errors.ts +7 -0
  1519. package/src/storage/sync-runs/in-memory.ts +181 -0
  1520. package/src/storage/sync-runs/index.ts +14 -0
  1521. package/src/storage/sync-runs/types.ts +93 -0
  1522. package/src/storage/timeseries/index.ts +7 -0
  1523. package/src/storage/timeseries/store.ts +214 -0
  1524. package/src/storage/timeseries/types.ts +57 -0
  1525. package/src/storage/transaction.ts +56 -0
  1526. package/src/storage/types.ts +299 -0
  1527. package/src/storage/webhook-deliveries/in-memory.ts +108 -0
  1528. package/src/storage/webhook-deliveries/index.ts +9 -0
  1529. package/src/storage/webhook-deliveries/types.ts +41 -0
  1530. package/src/storage/webhook-runs/errors.ts +6 -0
  1531. package/src/storage/webhook-runs/in-memory.ts +131 -0
  1532. package/src/storage/webhook-runs/index.ts +12 -0
  1533. package/src/storage/webhook-runs/types.ts +69 -0
  1534. package/src/storage/workflow-interventions/errors.ts +6 -0
  1535. package/src/storage/workflow-interventions/in-memory.ts +192 -0
  1536. package/src/storage/workflow-interventions/index.ts +14 -0
  1537. package/src/storage/workflow-interventions/types.ts +100 -0
  1538. package/src/storage/workflow-runs/errors.ts +6 -0
  1539. package/src/storage/workflow-runs/in-memory.ts +777 -0
  1540. package/src/storage/workflow-runs/index.ts +45 -0
  1541. package/src/storage/workflow-runs/types.ts +344 -0
  1542. package/src/syncs/builders.ts +101 -0
  1543. package/src/syncs/errors.ts +3 -0
  1544. package/src/syncs/index.ts +22 -0
  1545. package/src/syncs/request.ts +91 -0
  1546. package/src/syncs/types.ts +136 -0
  1547. package/src/testing/agent-storage-contract.ts +824 -0
  1548. package/src/testing/auth-storage-contract.ts +1932 -0
  1549. package/src/testing/blob-storage-contract.ts +108 -0
  1550. package/src/testing/broker-contract.ts +819 -0
  1551. package/src/testing/effective-storage-contract.ts +182 -0
  1552. package/src/testing/index.ts +65 -0
  1553. package/src/testing/lake-storage-contract.ts +699 -0
  1554. package/src/testing/materialization-failure-contract.ts +66 -0
  1555. package/src/testing/materializer-fixture.ts +119 -0
  1556. package/src/testing/materializer-storage-contract.ts +389 -0
  1557. package/src/testing/object-query-contract.ts +1205 -0
  1558. package/src/testing/ontology-contract-fixture.ts +192 -0
  1559. package/src/testing/ontology-storage-contract.ts +922 -0
  1560. package/src/testing/projection-run-storage-contract.ts +372 -0
  1561. package/src/testing/queues-contract.ts +634 -0
  1562. package/src/testing/sandboxes-contract.ts +404 -0
  1563. package/src/webhooks/builders.ts +154 -0
  1564. package/src/webhooks/connector.ts +19 -0
  1565. package/src/webhooks/errors.ts +3 -0
  1566. package/src/webhooks/index.ts +25 -0
  1567. package/src/webhooks/registry.ts +127 -0
  1568. package/src/webhooks/types.ts +98 -0
  1569. package/src/webhooks/unverified.ts +82 -0
  1570. package/src/workers/errors.ts +25 -0
  1571. package/src/workers/index.ts +6 -0
  1572. package/src/workers/queue-delivery.ts +309 -0
  1573. package/src/workers/queue-worker.ts +260 -0
  1574. package/src/workers/worker.ts +87 -0
  1575. package/src/workflows/builders.ts +471 -0
  1576. package/src/workflows/errors.ts +13 -0
  1577. package/src/workflows/index.ts +94 -0
  1578. package/src/workflows/request.ts +161 -0
  1579. package/src/workflows/runtime.ts +68 -0
  1580. package/src/workflows/snapshot.ts +383 -0
  1581. package/src/workflows/types.ts +781 -0
  1582. package/src/workflows/validation.ts +572 -0
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/objects/query/planner.ts", "../src/objects/query/validate.ts", "../src/objects/query/executor.ts", "../src/objects/query/explain.ts"],
4
+ "sourcesContent": [
5
+ "import type { ObjectQueryCapabilities, ObjectQueryScalarOperation } from \"../../storage\"\nimport type { ObjectQueryPlanningIssue } from \"./errors\"\nimport type { ObjectExpansion, ObjectQuery, ObjectQueryPredicate, ObjectQuerySortField } from \"./ir\"\n\nexport type ObjectQueryPlanMode = \"pushdown\" | \"fallback\" | \"rejected\"\nexport type ObjectQueryProviderOperation =\n | \"queryObjects\"\n | \"countObjects\"\n | \"existsObjects\"\n | \"facetObjects\"\n\nexport interface ObjectQueryPlan {\n mode: ObjectQueryPlanMode\n query: ObjectQuery\n providerIssues: readonly ObjectQueryPlanningIssue[]\n fallbackIssues: readonly ObjectQueryPlanningIssue[]\n issues: readonly ObjectQueryPlanningIssue[]\n fallback?: {\n maxRows: number\n requiresExplicitBound: boolean\n }\n}\n\nexport interface ObjectQueryPlanningOptions {\n capabilities: ObjectQueryCapabilities\n operation?: ObjectQueryProviderOperation\n hasQueryObjects?: boolean\n hasCountObjects?: boolean\n hasExistsObjects?: boolean\n hasFacetObjects?: boolean\n allowFallback?: boolean\n maxFallbackRows?: number\n requiresExplicitFallbackBound?: boolean\n}\n\nconst DEFAULT_MAX_FALLBACK_ROWS = 1_000\n\n// Fallback executes over ObjectStorage.list and is intentionally narrower than\n// provider pushdown. Complex semantics stay provider-owned and cannot become\n// accidental full scans.\nconst fallbackNodeKinds = new Set<ObjectQuery[\"kind\"]>([\n \"start\",\n \"filter\",\n \"sort\",\n \"limit\",\n \"page\",\n \"project\",\n \"expand\",\n])\n\nexport class QueryPlanner {\n plan(query: ObjectQuery, options: ObjectQueryPlanningOptions): ObjectQueryPlan {\n return planObjectQuery(query, options)\n }\n}\n\nexport function planObjectQuery(\n query: ObjectQuery,\n options: ObjectQueryPlanningOptions\n): ObjectQueryPlan {\n const operation = options.operation ?? \"queryObjects\"\n // Providers get first refusal. Fallback is considered only after the provider\n // declares that pushdown is unavailable or incomplete for this query.\n const providerIssues = collectProviderIssues(query, options.capabilities, {\n operation,\n hasImplementation: hasProviderImplementation(operation, options),\n })\n\n if (providerIssues.length === 0) {\n return {\n mode: \"pushdown\",\n query,\n providerIssues,\n fallbackIssues: [],\n issues: [],\n }\n }\n\n const fallbackIssues = collectFallbackIssues(query, options)\n const issues = [...providerIssues, ...fallbackIssues]\n\n if (fallbackIssues.length === 0) {\n return {\n mode: \"fallback\",\n query,\n providerIssues,\n fallbackIssues,\n issues: [],\n fallback: {\n maxRows: options.maxFallbackRows ?? DEFAULT_MAX_FALLBACK_ROWS,\n requiresExplicitBound: options.requiresExplicitFallbackBound !== false,\n },\n }\n }\n\n return {\n mode: \"rejected\",\n query,\n providerIssues,\n fallbackIssues,\n issues,\n }\n}\n\nfunction collectProviderIssues(\n query: ObjectQuery,\n capabilities: ObjectQueryCapabilities,\n options: { operation: ObjectQueryProviderOperation; hasImplementation: boolean }\n): ObjectQueryPlanningIssue[] {\n const issues: ObjectQueryPlanningIssue[] = []\n\n // Capability maps are allowlists: missing flags mean unsupported.\n collectOperationProviderIssues(capabilities, options, issues)\n\n collectNodeProviderIssues(query, \"$\", capabilities, issues)\n return issues\n}\n\nfunction collectOperationProviderIssues(\n capabilities: ObjectQueryCapabilities,\n options: { operation: ObjectQueryProviderOperation; hasImplementation: boolean },\n issues: ObjectQueryPlanningIssue[]\n): void {\n const enabled =\n options.operation === \"queryObjects\"\n ? capabilities.queryObjects === true\n : options.operation === \"countObjects\"\n ? capabilities.countObjects === true\n : options.operation === \"existsObjects\"\n ? capabilities.existsObjects === true\n : capabilities.facetObjects === true\n\n if (!enabled) {\n const code = `${operationIssuePrefix(options.operation)}_not_enabled`\n addIssue(\n issues,\n \"$\",\n code,\n `Object storage capabilities do not enable ${options.operation} pushdown`\n )\n }\n\n if (options.hasImplementation) return\n\n const code = `${operationIssuePrefix(options.operation)}_not_implemented`\n addIssue(issues, \"$\", code, `Object storage does not implement ${options.operation}`)\n}\n\nfunction hasProviderImplementation(\n operation: ObjectQueryProviderOperation,\n options: ObjectQueryPlanningOptions\n): boolean {\n switch (operation) {\n case \"queryObjects\":\n return options.hasQueryObjects === true\n case \"countObjects\":\n return options.hasCountObjects === true\n case \"existsObjects\":\n return options.hasExistsObjects === true\n case \"facetObjects\":\n return options.hasFacetObjects === true\n }\n}\n\nfunction operationIssuePrefix(operation: ObjectQueryProviderOperation): string {\n switch (operation) {\n case \"queryObjects\":\n return \"query_objects\"\n case \"countObjects\":\n return \"count_objects\"\n case \"existsObjects\":\n return \"exists_objects\"\n case \"facetObjects\":\n return \"facet_objects\"\n }\n}\n\nfunction collectNodeProviderIssues(\n query: ObjectQuery,\n path: string,\n capabilities: ObjectQueryCapabilities,\n issues: ObjectQueryPlanningIssue[]\n): void {\n if (capabilities.nodes?.[query.kind] !== true) {\n addIssue(\n issues,\n path,\n \"query_node_not_supported\",\n `Provider does not support query node '${query.kind}'`\n )\n }\n\n switch (query.kind) {\n case \"start\":\n if (query.includeSubtypes === true && capabilities.features?.includeSubtypes !== true) {\n addIssue(\n issues,\n path,\n \"include_subtypes_not_supported\",\n \"Provider does not support start.includeSubtypes expansion\"\n )\n }\n return\n case \"filter\":\n collectPredicateProviderIssues(query.predicate, `${path}.predicate`, capabilities, issues)\n collectNodeProviderIssues(query.input, `${path}.input`, capabilities, issues)\n return\n case \"text\":\n case \"vector\":\n case \"project\":\n collectNodeProviderIssues(query.input, `${path}.input`, capabilities, issues)\n return\n case \"limit\":\n collectProviderMaxLimitIssues(query.limit, path, capabilities, issues)\n collectNodeProviderIssues(query.input, `${path}.input`, capabilities, issues)\n return\n case \"page\":\n collectProviderMaxPageSizeIssues(query.pageSize, path, capabilities, issues)\n collectNodeProviderIssues(query.input, `${path}.input`, capabilities, issues)\n return\n case \"traverse\":\n if (capabilities.traversalDirections?.[query.direction] !== true) {\n addIssue(\n issues,\n path,\n \"traversal_direction_not_supported\",\n `Provider does not support ${query.direction} traversal`\n )\n }\n collectNodeProviderIssues(query.input, `${path}.input`, capabilities, issues)\n return\n case \"set\":\n if (capabilities.setOps?.[query.op] !== true) {\n addIssue(\n issues,\n path,\n \"set_operation_not_supported\",\n `Provider does not support set operation '${query.op}'`\n )\n }\n query.inputs.forEach((input, index) => {\n collectNodeProviderIssues(input, `${path}.inputs[${index}]`, capabilities, issues)\n })\n return\n case \"sort\":\n query.fields.forEach((field, index) => {\n collectSortProviderIssues(field, `${path}.fields[${index}]`, capabilities, issues)\n })\n collectNodeProviderIssues(query.input, `${path}.input`, capabilities, issues)\n return\n case \"expand\":\n query.expansions.forEach((expansion, index) => {\n collectExpansionProviderIssues(\n expansion,\n `${path}.expansions[${index}]`,\n capabilities,\n issues\n )\n })\n collectNodeProviderIssues(query.input, `${path}.input`, capabilities, issues)\n return\n }\n}\n\n// An expansion only pushes down once core has resolved its cardinality; an\n// unresolved one (e.g. a polymorphic parent whose branches disagree) keeps the\n// whole query on the bounded fallback, which re-derives cardinality per row.\nfunction collectExpansionProviderIssues(\n expansion: ObjectExpansion,\n path: string,\n capabilities: ObjectQueryCapabilities,\n issues: ObjectQueryPlanningIssue[]\n): void {\n if (expansion.cardinality === undefined) {\n addIssue(\n issues,\n path,\n \"expand_cardinality_unresolved\",\n `Provider cannot push down expansion '${expansion.linkId}' without a resolved cardinality`\n )\n }\n\n expansion.orderBy?.forEach((field, index) => {\n collectSortProviderIssues(field, `${path}.orderBy[${index}]`, capabilities, issues)\n })\n\n expansion.expand?.forEach((nested, index) => {\n collectExpansionProviderIssues(nested, `${path}.expand[${index}]`, capabilities, issues)\n })\n}\n\nfunction collectPredicateProviderIssues(\n predicate: ObjectQueryPredicate,\n path: string,\n capabilities: ObjectQueryCapabilities,\n issues: ObjectQueryPlanningIssue[]\n): void {\n const scalarOperation = predicateScalarOperation(predicate)\n if (\n \"scalarKind\" in predicate &&\n predicate.scalarKind !== undefined &&\n scalarOperation !== undefined &&\n capabilities.scalarOperations?.[predicate.scalarKind]?.[scalarOperation] !== true\n ) {\n addIssue(\n issues,\n path,\n \"scalar_operation_not_supported\",\n `Provider does not support ${scalarOperation} for '${predicate.scalarKind}' values`\n )\n }\n\n if (capabilities.predicateOps?.[predicate.op] !== true) {\n addIssue(\n issues,\n path,\n \"predicate_operation_not_supported\",\n `Provider does not support predicate operation '${predicate.op}'`\n )\n }\n\n switch (predicate.op) {\n case \"and\":\n case \"or\":\n predicate.items.forEach((item, index) => {\n collectPredicateProviderIssues(item, `${path}.items[${index}]`, capabilities, issues)\n })\n return\n case \"not\":\n collectPredicateProviderIssues(predicate.item, `${path}.item`, capabilities, issues)\n return\n default:\n return\n }\n}\n\nfunction predicateScalarOperation(\n predicate: ObjectQueryPredicate\n): ObjectQueryScalarOperation | undefined {\n switch (predicate.op) {\n case \"eq\":\n case \"neq\":\n case \"in\":\n return \"equality\"\n case \"lt\":\n case \"lte\":\n case \"gt\":\n case \"gte\":\n return \"ordering\"\n default:\n return undefined\n }\n}\n\nfunction collectSortProviderIssues(\n field: ObjectQuerySortField,\n path: string,\n capabilities: ObjectQueryCapabilities,\n issues: ObjectQueryPlanningIssue[]\n): void {\n if (\n field.kind === \"property\" &&\n field.scalarKind !== undefined &&\n capabilities.scalarOperations?.[field.scalarKind]?.ordering !== true\n ) {\n addIssue(\n issues,\n path,\n \"scalar_operation_not_supported\",\n `Provider does not support ordering for '${field.scalarKind}' values`\n )\n }\n\n if (capabilities.sortKinds?.[field.kind] === true) return\n addIssue(\n issues,\n path,\n \"sort_kind_not_supported\",\n `Provider does not support sort kind '${field.kind}'`\n )\n}\n\nfunction collectProviderMaxLimitIssues(\n limit: number,\n path: string,\n capabilities: ObjectQueryCapabilities,\n issues: ObjectQueryPlanningIssue[]\n): void {\n const maxLimit = capabilities.limits?.maxLimit\n if (maxLimit === undefined) return\n\n if (!Number.isInteger(maxLimit) || maxLimit < 0) {\n addIssue(\n issues,\n path,\n \"invalid_provider_limit_capability\",\n \"Provider limit capability maxLimit must be a non-negative integer\"\n )\n return\n }\n\n if (limit > maxLimit) {\n addIssue(issues, path, \"provider_limit_too_large\", `Provider supports limit up to ${maxLimit}`)\n }\n}\n\nfunction collectProviderMaxPageSizeIssues(\n pageSize: number,\n path: string,\n capabilities: ObjectQueryCapabilities,\n issues: ObjectQueryPlanningIssue[]\n): void {\n const maxPageSize = capabilities.limits?.maxPageSize\n if (maxPageSize === undefined) return\n\n if (!Number.isInteger(maxPageSize) || maxPageSize <= 0) {\n addIssue(\n issues,\n path,\n \"invalid_provider_page_size_capability\",\n \"Provider limit capability maxPageSize must be a positive integer\"\n )\n return\n }\n\n if (pageSize > maxPageSize) {\n addIssue(\n issues,\n path,\n \"provider_page_size_too_large\",\n `Provider supports pageSize up to ${maxPageSize}`\n )\n }\n}\n\nfunction collectFallbackIssues(\n query: ObjectQuery,\n options: ObjectQueryPlanningOptions\n): ObjectQueryPlanningIssue[] {\n const issues: ObjectQueryPlanningIssue[] = []\n\n if (options.allowFallback === false) {\n addIssue(issues, \"$\", \"fallback_disabled\", \"Object query fallback is disabled\")\n return issues\n }\n\n const maxFallbackRows = options.maxFallbackRows ?? DEFAULT_MAX_FALLBACK_ROWS\n if (!Number.isInteger(maxFallbackRows) || maxFallbackRows <= 0) {\n addIssue(issues, \"$\", \"invalid_fallback_bound\", \"maxFallbackRows must be a positive integer\")\n }\n\n // The result bound protects API callers from unbounded fallback responses.\n // The executor still enforces maxFallbackRows on the source scan separately.\n if (options.requiresExplicitFallbackBound !== false && !hasExplicitResultBound(query)) {\n addIssue(\n issues,\n \"$\",\n \"fallback_requires_bound\",\n \"Fallback requires an explicit limit or page node\"\n )\n }\n\n collectFallbackNodeIssues(query, \"$\", issues)\n return issues\n}\n\nfunction collectFallbackNodeIssues(\n query: ObjectQuery,\n path: string,\n issues: ObjectQueryPlanningIssue[]\n): void {\n if (!fallbackNodeKinds.has(query.kind)) {\n addIssue(\n issues,\n path,\n \"fallback_node_not_supported\",\n `Fallback does not support query node '${query.kind}'`\n )\n }\n\n switch (query.kind) {\n case \"start\":\n return\n case \"filter\":\n case \"limit\":\n case \"page\":\n case \"project\":\n case \"expand\":\n collectFallbackNodeIssues(query.input, `${path}.input`, issues)\n return\n case \"sort\":\n query.fields.forEach((field, index) => {\n if (field.kind === \"relevance\") {\n addIssue(\n issues,\n `${path}.fields[${index}]`,\n \"fallback_sort_kind_not_supported\",\n \"Fallback does not support relevance sorting\"\n )\n }\n })\n collectFallbackNodeIssues(query.input, `${path}.input`, issues)\n return\n case \"text\":\n case \"vector\":\n case \"traverse\":\n collectFallbackNodeIssues(query.input, `${path}.input`, issues)\n return\n case \"set\":\n query.inputs.forEach((input, index) => {\n collectFallbackNodeIssues(input, `${path}.inputs[${index}]`, issues)\n })\n return\n }\n}\n\nfunction hasExplicitResultBound(query: ObjectQuery): boolean {\n switch (query.kind) {\n case \"limit\":\n case \"page\":\n return true\n case \"start\":\n return false\n case \"set\":\n return query.inputs.some(hasExplicitResultBound)\n default:\n return hasExplicitResultBound(query.input)\n }\n}\n\nfunction addIssue(\n issues: ObjectQueryPlanningIssue[],\n path: string,\n code: string,\n message: string\n): void {\n issues.push({ path, code, message })\n}\n",
6
+ "import type { ObjectType, OntologyRegistry, Property, Schema, ValueType } from \"../../ontology\"\nimport { normalizeDecimalValue } from \"../../ontology\"\nimport { formatUnknownObjectTypeMessage } from \"../../ontology/errors\"\nimport { validatePropertyValue, validateSchemaValue } from \"../../ontology/validation\"\nimport { ObjectQueryValidationError } from \"./errors\"\nimport type {\n ObjectExpansion,\n ObjectQuery,\n ObjectQueryPredicate,\n ObjectQueryResultShape,\n ObjectQuerySortField,\n QueryScalarKind,\n} from \"./ir\"\nimport { normalizeObjectQuery } from \"./normalize\"\n\nexport interface ObjectQueryValidationIssue {\n path: string\n code: string\n message: string\n}\n\nexport interface ValidatedObjectQuery {\n query: ObjectQuery\n result: ObjectQueryResultShape\n /** Every object type the query touches, including intermediate traversal types. */\n touchedObjectTypeIds: readonly string[]\n}\n\nexport interface ObjectQueryValidationOptions {\n ontology: OntologyRegistry\n maxLimit?: number\n maxPageSize?: number\n normalize?: boolean\n}\n\ntype QueryValidationContext = Required<\n Pick<ObjectQueryValidationOptions, \"maxLimit\" | \"maxPageSize\">\n> & {\n ontology: OntologyRegistry\n valueTypesById: ReadonlyMap<string, ValueType>\n issues: ObjectQueryValidationIssue[]\n touchedObjectTypeIds: Set<string>\n}\n\ninterface QueryValidationResult {\n result: ObjectQueryResultShape\n query: ObjectQuery\n}\n\ninterface TextFieldResolution {\n fieldsByObjectType?: Record<string, string[]>\n}\n\nconst DEFAULT_MAX_LIMIT = 1_000\nconst DEFAULT_MAX_PAGE_SIZE = 1_000\n\nexport function validateObjectQuery(\n query: ObjectQuery,\n options: ObjectQueryValidationOptions\n): ValidatedObjectQuery {\n const normalized = options.normalize === false ? query : normalizeObjectQuery(query)\n const ctx = createValidationContext(options)\n const validation = validateQueryNode(normalized, \"$\", ctx)\n\n if (ctx.issues.length > 0) {\n throw new ObjectQueryValidationError(ctx.issues)\n }\n\n return {\n query: validation.query,\n result: validation.result,\n touchedObjectTypeIds: [...ctx.touchedObjectTypeIds],\n }\n}\n\nexport function collectObjectQueryValidationIssues(\n query: ObjectQuery,\n options: ObjectQueryValidationOptions\n): readonly ObjectQueryValidationIssue[] {\n const normalized = options.normalize === false ? query : normalizeObjectQuery(query)\n const ctx = createValidationContext(options)\n validateQueryNode(normalized, \"$\", ctx)\n return ctx.issues\n}\n\nexport function resolveObjectQueryResultShape(\n query: ObjectQuery,\n options: ObjectQueryValidationOptions\n): ObjectQueryResultShape {\n return validateObjectQuery(query, options).result\n}\n\nfunction createValidationContext(options: ObjectQueryValidationOptions): QueryValidationContext {\n return {\n ontology: options.ontology,\n valueTypesById: options.ontology.getValueTypesById(),\n maxLimit: options.maxLimit ?? DEFAULT_MAX_LIMIT,\n maxPageSize: options.maxPageSize ?? DEFAULT_MAX_PAGE_SIZE,\n issues: [],\n touchedObjectTypeIds: new Set<string>(),\n }\n}\n\nfunction validateQueryNode(\n query: ObjectQuery,\n path: string,\n ctx: QueryValidationContext\n): QueryValidationResult {\n const validation = dispatchQueryNode(query, path, ctx)\n\n // Record every intermediate result shape so callers can authorize all\n // object types a query touches, not just the types it returns.\n for (const objectTypeId of validation.result.objectTypeIds) {\n ctx.touchedObjectTypeIds.add(objectTypeId)\n }\n\n return validation\n}\n\nfunction dispatchQueryNode(\n query: ObjectQuery,\n path: string,\n ctx: QueryValidationContext\n): QueryValidationResult {\n switch (query.kind) {\n case \"start\":\n return validateStart(query.objectTypeId, query.includeSubtypes, path, ctx)\n case \"filter\": {\n const input = validateQueryNode(query.input, `${path}.input`, ctx)\n const predicate = validatePredicate(query.predicate, input.result, `${path}.predicate`, ctx)\n return { result: input.result, query: { ...query, input: input.query, predicate } }\n }\n case \"text\": {\n const input = validateQueryNode(query.input, `${path}.input`, ctx)\n const textFields = validateTextQuery(query.query, query.fields, input.result, path, ctx)\n return {\n result: input.result,\n query: {\n ...query,\n input: input.query,\n fields: query.fields,\n fieldsByObjectType: query.fields ? undefined : textFields.fieldsByObjectType,\n },\n }\n }\n case \"vector\": {\n const input = validateQueryNode(query.input, `${path}.input`, ctx)\n validateVectorQuery(query.vector, query.propertyId, query.k, input.result, path, ctx)\n return { result: input.result, query: { ...query, input: input.query } }\n }\n case \"traverse\": {\n const input = validateQueryNode(query.input, `${path}.input`, ctx)\n return {\n result: validateTraverse(\n query.linkId,\n query.direction,\n query.sourceObjectTypeId,\n input.result,\n path,\n ctx\n ),\n query: { ...query, input: input.query },\n }\n }\n case \"set\":\n return validateSet(query.inputs, query.op, path, ctx)\n case \"sort\": {\n const input = validateQueryNode(query.input, `${path}.input`, ctx)\n const fields = validateSortFields(query.fields, input.result, path, ctx)\n return { result: input.result, query: { ...query, input: input.query, fields } }\n }\n case \"limit\": {\n const input = validateQueryNode(query.input, `${path}.input`, ctx)\n validateLimit(query.limit, path, ctx)\n return { result: input.result, query: { ...query, input: input.query } }\n }\n case \"page\": {\n const input = validateQueryNode(query.input, `${path}.input`, ctx)\n validatePage(query.pageSize, query.pageToken, path, ctx)\n return { result: input.result, query: { ...query, input: input.query } }\n }\n case \"project\": {\n const input = validateQueryNode(query.input, `${path}.input`, ctx)\n validateProjection(query.properties, input.result, path, ctx)\n return { result: input.result, query: { ...query, input: input.query } }\n }\n case \"expand\": {\n const input = validateQueryNode(query.input, `${path}.input`, ctx)\n // expand is output-shaping: it attaches links without changing the matched\n // set, so the result type is the input's result type.\n const expansions = validateExpansions(\n query.expansions,\n input.result,\n `${path}.expansions`,\n ctx\n )\n return { result: input.result, query: { ...query, input: input.query, expansions } }\n }\n }\n}\n\nfunction validateStart(\n objectTypeId: string,\n includeSubtypes: boolean | undefined,\n path: string,\n ctx: QueryValidationContext\n): QueryValidationResult {\n if (!objectTypeId) {\n addIssue(ctx, path, \"missing_object_type\", \"start.objectTypeId is required\")\n return { result: { objectTypeIds: [] }, query: { kind: \"start\", objectTypeId } }\n }\n\n if (!ctx.ontology.getObjectTypeById(objectTypeId)) {\n addIssue(ctx, path, \"unknown_object_type\", formatUnknownObjectTypeMessage(objectTypeId))\n return { result: { objectTypeIds: [] }, query: { kind: \"start\", objectTypeId } }\n }\n\n const objectTypeIds = includeSubtypes\n ? uniqueStrings([objectTypeId, ...ctx.ontology.listSubTypes(objectTypeId)])\n : [objectTypeId]\n\n return { result: { objectTypeIds }, query: { kind: \"start\", objectTypeId, includeSubtypes } }\n}\n\nfunction validatePredicate(\n predicate: ObjectQueryPredicate,\n shape: ObjectQueryResultShape,\n path: string,\n ctx: QueryValidationContext\n): ObjectQueryPredicate {\n switch (predicate.op) {\n case \"and\":\n case \"or\":\n if (predicate.items.length === 0) {\n addIssue(\n ctx,\n path,\n \"empty_predicate_group\",\n `Predicate '${predicate.op}' must not be empty`\n )\n }\n return {\n ...predicate,\n items: predicate.items.map((item, index) =>\n validatePredicate(item, shape, `${path}.items[${index}]`, ctx)\n ),\n }\n case \"not\":\n return {\n ...predicate,\n item: validatePredicate(predicate.item, shape, `${path}.item`, ctx),\n }\n case \"eq\":\n case \"neq\":\n case \"lt\":\n case \"lte\":\n case \"gt\":\n case \"gte\": {\n const { scalarKind: _authoredScalarKind, ...authoredPredicate } = predicate\n const scalarKind = resolveAndValidatePredicateProperty(\n predicate.propertyId,\n predicate.op,\n shape,\n path,\n ctx\n )\n validatePredicateValue(predicate.propertyId, predicate.value, shape, path, ctx)\n return {\n ...authoredPredicate,\n value: normalizeObjectQueryValue(predicate.value, scalarKind),\n ...(scalarKind ? { scalarKind } : {}),\n }\n }\n case \"in\": {\n const { scalarKind: _authoredScalarKind, ...authoredPredicate } = predicate\n const scalarKind = resolveAndValidatePredicateProperty(\n predicate.propertyId,\n predicate.op,\n shape,\n path,\n ctx\n )\n if (predicate.values.length === 0) {\n addIssue(ctx, path, \"empty_in_values\", \"Predicate 'in' must include at least one value\")\n }\n predicate.values.forEach((value, index) => {\n validatePredicateValue(predicate.propertyId, value, shape, `${path}.values[${index}]`, ctx)\n })\n return {\n ...authoredPredicate,\n values: predicate.values.map((value) => normalizeObjectQueryValue(value, scalarKind)),\n ...(scalarKind ? { scalarKind } : {}),\n }\n }\n case \"exists\":\n resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx)\n if (typeof predicate.value !== \"boolean\") {\n addIssue(ctx, path, \"invalid_exists_value\", \"Predicate 'exists' value must be boolean\")\n }\n return predicate\n case \"contains\":\n resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx)\n validateContainsValue(predicate.propertyId, predicate.value, shape, path, ctx)\n return predicate\n }\n}\n\nfunction resolveAndValidatePredicateProperty(\n propertyId: string,\n op: ObjectQueryPredicate[\"op\"],\n shape: ObjectQueryResultShape,\n path: string,\n ctx: QueryValidationContext\n): QueryScalarKind | undefined {\n const properties = getPropertiesForResult(propertyId, shape, path, ctx)\n if (properties.length === 0) return undefined\n const schemas: Schema[] = []\n\n for (const { objectType, property } of properties) {\n const schema = resolveSchemaForProperty(property, objectType.id, ctx, path)\n if (schema) schemas.push(schema)\n\n if (isPrimaryExactPredicate(property, op)) {\n continue\n }\n\n if (property.query?.searchable !== true || property.query.filterable !== true) {\n addIssue(\n ctx,\n path,\n \"property_not_filterable\",\n `Property '${propertyId}' on '${objectType.id}' must set query.searchable: true and query.filterable: true before it can be used in predicates`\n )\n continue\n }\n\n if (!schema) continue\n\n if ((op === \"lt\" || op === \"lte\" || op === \"gt\" || op === \"gte\") && !isSortableSchema(schema)) {\n addIssue(\n ctx,\n path,\n \"operator_not_supported_for_schema\",\n `Predicate '${op}' cannot be used with property '${propertyId}' on '${objectType.id}' because its schema is not orderable`\n )\n }\n\n if ((op === \"eq\" || op === \"neq\" || op === \"in\" || op === \"exists\") && !isExactSchema(schema)) {\n addIssue(\n ctx,\n path,\n \"operator_not_supported_for_schema\",\n `Predicate '${op}' cannot be used with property '${propertyId}' on '${objectType.id}' because its schema cannot be exact-matched`\n )\n }\n\n if (op === \"contains\" && !isContainsSchema(schema)) {\n addIssue(\n ctx,\n path,\n \"operator_not_supported_for_schema\",\n `Predicate 'contains' cannot be used with property '${propertyId}' on '${objectType.id}' because its schema is not string, array, or map`\n )\n }\n }\n\n if (op === \"exists\" || op === \"contains\") return undefined\n return resolveCommonQueryScalarKind(schemas, propertyId, path, ctx)\n}\n\nfunction normalizeObjectQueryValue(value: unknown, scalarKind: QueryScalarKind | undefined) {\n if (scalarKind !== \"decimal\" || typeof value !== \"string\") return value\n try {\n return normalizeDecimalValue(value)\n } catch {\n return value\n }\n}\n\nfunction resolveCommonQueryScalarKind(\n schemas: readonly Schema[],\n propertyId: string,\n path: string,\n ctx: QueryValidationContext\n): QueryScalarKind | undefined {\n const scalarKinds = schemas.map(queryScalarKindForSchema)\n if (scalarKinds.length === 0 || scalarKinds.some((kind) => kind === undefined)) {\n return undefined\n }\n\n const resolvedKinds = new Set(scalarKinds)\n if (resolvedKinds.size === 1) return scalarKinds[0]\n\n addIssue(\n ctx,\n path,\n \"incompatible_property_scalar_kinds\",\n `Property '${propertyId}' resolves to incompatible scalar schemas: ${[...resolvedKinds].join(\n \", \"\n )}`\n )\n return undefined\n}\n\nfunction queryScalarKindForSchema(schema: Schema): QueryScalarKind | undefined {\n if (typeof schema === \"string\") return schema === \"fileRef\" ? undefined : schema\n if (schema.type === \"enum\") return schema.valueType === \"integer\" ? \"integer\" : \"string\"\n return undefined\n}\n\nfunction validatePredicateValue(\n propertyId: string,\n value: unknown,\n shape: ObjectQueryResultShape,\n path: string,\n ctx: QueryValidationContext\n): void {\n for (const { objectType, property } of getPropertiesForResult(propertyId, shape, path, ctx, {\n reportMissing: false,\n })) {\n try {\n validatePropertyValue(property, value, `${objectType.id}.${property.id}`, ctx.valueTypesById)\n } catch (error) {\n addIssue(\n ctx,\n path,\n \"invalid_predicate_value\",\n error instanceof Error\n ? error.message\n : `Invalid value for property '${property.id}' on '${objectType.id}'`\n )\n }\n }\n}\n\nfunction validateContainsValue(\n propertyId: string,\n value: unknown,\n shape: ObjectQueryResultShape,\n path: string,\n ctx: QueryValidationContext\n): void {\n for (const { objectType, property } of getPropertiesForResult(propertyId, shape, path, ctx, {\n reportMissing: false,\n })) {\n const schema = resolveSchemaForProperty(property, objectType.id, ctx, path)\n if (!schema) continue\n\n if (typeof schema === \"string\") {\n if (schema === \"string\" || schema === \"uuid\") {\n if (typeof value !== \"string\") {\n addIssue(\n ctx,\n path,\n \"invalid_contains_value\",\n `Predicate 'contains' value for '${objectType.id}.${property.id}' must be a string`\n )\n }\n }\n continue\n }\n\n if (schema.type === \"array\") {\n try {\n validateSchemaValue(\n schema.items,\n value,\n `${objectType.id}.${property.id}[]`,\n ctx.valueTypesById\n )\n } catch (error) {\n addIssue(\n ctx,\n path,\n \"invalid_contains_value\",\n error instanceof Error\n ? error.message\n : `Invalid contains value for '${objectType.id}.${property.id}'`\n )\n }\n continue\n }\n\n if (schema.type === \"map\" && typeof value !== \"string\") {\n addIssue(\n ctx,\n path,\n \"invalid_contains_value\",\n `Predicate 'contains' value for '${objectType.id}.${property.id}' must be a map key string`\n )\n }\n }\n}\n\nfunction validateTextQuery(\n query: string,\n fields: readonly string[] | undefined,\n shape: ObjectQueryResultShape,\n path: string,\n ctx: QueryValidationContext\n): TextFieldResolution {\n if (query.trim().length === 0) {\n addIssue(ctx, path, \"empty_text_query\", \"Text query must not be empty\")\n }\n\n const fieldsByObjectType: Record<string, string[]> | undefined = fields ? undefined : {}\n\n for (const objectType of getObjectTypesForResult(shape, ctx)) {\n const fieldIds = fields ?? objectType.search?.defaultText\n if (!fieldIds || fieldIds.length === 0) {\n addIssue(\n ctx,\n path,\n \"missing_text_fields\",\n `Object type '${objectType.id}' must define search.defaultText or the text query must specify fields`\n )\n continue\n }\n\n if (fieldsByObjectType) fieldsByObjectType[objectType.id] = uniqueStrings(fieldIds)\n\n for (const fieldId of fieldIds) {\n const property = getProperty(objectType, fieldId)\n if (!property) {\n addIssue(\n ctx,\n path,\n \"unknown_text_field\",\n `Text query references unknown property '${fieldId}' on '${objectType.id}'`\n )\n continue\n }\n\n assertStaticSearchProperty(objectType.id, property, \"text query\", path, ctx)\n assertQueryFlag(objectType.id, property, \"text\", \"text query\", path, ctx)\n const schema = resolveSchemaForProperty(property, objectType.id, ctx, path)\n if (schema && !isTextSchema(schema)) {\n addIssue(\n ctx,\n path,\n \"text_field_not_string_like\",\n `Text query field '${fieldId}' on '${objectType.id}' must be string-like`\n )\n }\n }\n }\n\n return fieldsByObjectType ? { fieldsByObjectType } : {}\n}\n\nfunction validateVectorQuery(\n vector: readonly number[],\n propertyId: string,\n k: number,\n shape: ObjectQueryResultShape,\n path: string,\n ctx: QueryValidationContext\n): void {\n if (!Number.isInteger(k) || k <= 0) {\n addIssue(ctx, path, \"invalid_vector_k\", \"Vector query k must be a positive integer\")\n }\n\n if (vector.length === 0) {\n addIssue(ctx, path, \"empty_vector\", \"Vector query vector must not be empty\")\n }\n\n if (vector.some((value) => typeof value !== \"number\" || !Number.isFinite(value))) {\n addIssue(ctx, path, \"invalid_vector_value\", \"Vector query vector values must be finite numbers\")\n }\n\n for (const objectType of getObjectTypesForResult(shape, ctx)) {\n const property = getProperty(objectType, propertyId)\n if (!property) {\n addIssue(\n ctx,\n path,\n \"unknown_vector_property\",\n `Vector query references unknown property '${propertyId}' on '${objectType.id}'`\n )\n continue\n }\n\n assertStaticSearchProperty(objectType.id, property, \"vector query\", path, ctx)\n assertQueryFlag(objectType.id, property, \"vector\", \"vector query\", path, ctx)\n\n if (objectType.search?.vector?.property !== propertyId) {\n addIssue(\n ctx,\n path,\n \"vector_profile_missing\",\n `Object type '${objectType.id}' must declare search.vector.property '${propertyId}' before vector search can use it`\n )\n }\n\n const schema = resolveSchemaForProperty(property, objectType.id, ctx, path)\n if (schema && !isVectorSchema(schema, ctx)) {\n addIssue(\n ctx,\n path,\n \"vector_property_not_numeric_array\",\n `Vector query property '${propertyId}' on '${objectType.id}' must be a numeric array`\n )\n }\n }\n}\n\nfunction validateTraverse(\n linkId: string,\n direction: \"outgoing\" | \"incoming\",\n sourceObjectTypeId: string | undefined,\n shape: ObjectQueryResultShape,\n path: string,\n ctx: QueryValidationContext\n): ObjectQueryResultShape {\n if (!linkId) {\n addIssue(ctx, path, \"missing_link_id\", \"traverse.linkId is required\")\n return { objectTypeIds: [] }\n }\n\n if (direction === \"outgoing\") {\n if (sourceObjectTypeId !== undefined) {\n addIssue(\n ctx,\n path,\n \"traverse_source_not_applicable\",\n \"traverse.sourceObjectTypeId only applies to incoming traversal\"\n )\n }\n return validateOutgoingTraverse(linkId, shape, path, ctx)\n }\n\n return validateIncomingTraverse(linkId, sourceObjectTypeId, shape, path, ctx)\n}\n\nfunction validateOutgoingTraverse(\n linkId: string,\n shape: ObjectQueryResultShape,\n path: string,\n ctx: QueryValidationContext\n): ObjectQueryResultShape {\n const targetTypeIds: string[] = []\n\n for (const objectType of getObjectTypesForResult(shape, ctx)) {\n const link = objectType.links.find((candidate) => candidate.id === linkId)\n if (!link) {\n addIssue(\n ctx,\n path,\n \"unknown_link\",\n `Outgoing traversal references unknown link '${linkId}' on '${objectType.id}'`\n )\n continue\n }\n\n if (link.targetObjectTypeId === \"*\") {\n addIssue(\n ctx,\n path,\n \"wildcard_traverse_target\",\n `Outgoing traversal over wildcard link '${objectType.id}.${linkId}' cannot infer a target object type`\n )\n continue\n }\n\n const declaredTargets = Array.isArray(link.targetObjectTypeId)\n ? link.targetObjectTypeId\n : [link.targetObjectTypeId]\n\n for (const targetId of declaredTargets) {\n if (!ctx.ontology.getObjectTypeById(targetId)) {\n addIssue(\n ctx,\n path,\n \"unknown_link_target\",\n `Outgoing traversal over '${objectType.id}.${linkId}' targets unknown object type '${targetId}'`\n )\n } else {\n targetTypeIds.push(targetId)\n }\n }\n }\n\n return { objectTypeIds: uniqueStrings(targetTypeIds) }\n}\n\nfunction validateIncomingTraverse(\n linkId: string,\n sourceObjectTypeId: string | undefined,\n shape: ObjectQueryResultShape,\n path: string,\n ctx: QueryValidationContext\n): ObjectQueryResultShape {\n let candidateTypes = ctx.ontology.listObjectTypes()\n if (sourceObjectTypeId !== undefined) {\n const sourceType = ctx.ontology.getObjectTypeById(sourceObjectTypeId)\n if (!sourceType) {\n addIssue(\n ctx,\n path,\n \"unknown_traverse_source\",\n `Incoming traversal references unknown source object type '${sourceObjectTypeId}'`\n )\n return { objectTypeIds: [] }\n }\n candidateTypes = [sourceType]\n }\n\n const sourceTypeIds: string[] = []\n\n for (const sourceType of candidateTypes) {\n const link = sourceType.links.find((candidate) => candidate.id === linkId)\n if (!link) continue\n\n if (link.targetObjectTypeId === \"*\") {\n sourceTypeIds.push(sourceType.id)\n continue\n }\n\n const matches = shape.objectTypeIds.some((targetTypeId) =>\n ctx.ontology.isValidLinkTarget(link.targetObjectTypeId, targetTypeId)\n )\n if (matches) sourceTypeIds.push(sourceType.id)\n }\n\n if (sourceTypeIds.length === 0) {\n addIssue(\n ctx,\n path,\n \"incoming_link_not_found\",\n `Incoming traversal found no source object types with link '${linkId}' targeting ${shape.objectTypeIds.join(\n \" | \"\n )}`\n )\n }\n\n return { objectTypeIds: uniqueStrings(sourceTypeIds) }\n}\n\nfunction validateExpansions(\n expansions: readonly ObjectExpansion[],\n shape: ObjectQueryResultShape,\n path: string,\n ctx: QueryValidationContext\n): ObjectExpansion[] {\n return expansions.map((expansion, index) =>\n validateExpansion(expansion, shape, `${path}[${index}]`, ctx)\n )\n}\n\nfunction validateExpansion(\n expansion: ObjectExpansion,\n shape: ObjectQueryResultShape,\n path: string,\n ctx: QueryValidationContext\n): ObjectExpansion {\n if (!expansion.linkId) {\n addIssue(ctx, path, \"missing_expand_link\", \"expand.linkId is required\")\n return expansion\n }\n\n const targetShape =\n expansion.direction === \"incoming\"\n ? resolveIncomingExpansionTargets(\n expansion.linkId,\n expansion.sourceObjectTypeId,\n shape,\n path,\n ctx\n )\n : resolveOutgoingExpansionTargets(\n expansion.linkId,\n expansion.sourceObjectTypeId,\n shape,\n path,\n ctx\n )\n\n // Expansion targets are touched types: the principal must be able to `view`\n // every type a query hydrates, exactly like `start`/`traverse`. `dispatch`'s\n // automatic fold only covers result types, and expansion targets are not in\n // the result — so add them here (recursively, via the nested call below).\n for (const targetTypeId of targetShape.objectTypeIds) {\n ctx.touchedObjectTypeIds.add(targetTypeId)\n }\n\n validateExpansionLimit(expansion.limit, path, ctx)\n const orderBy = expansion.orderBy\n ? validateSortFields(expansion.orderBy, targetShape, `${path}.orderBy`, ctx)\n : undefined\n const expand = expansion.expand\n ? validateExpansions(expansion.expand, targetShape, `${path}.expand`, ctx)\n : undefined\n\n return { ...expansion, orderBy, expand }\n}\n\nfunction resolveOutgoingExpansionTargets(\n linkId: string,\n sourceObjectTypeId: string | undefined,\n shape: ObjectQueryResultShape,\n path: string,\n ctx: QueryValidationContext\n): ObjectQueryResultShape {\n if (sourceObjectTypeId !== undefined) {\n addIssue(\n ctx,\n path,\n \"expand_source_not_applicable\",\n \"expand.sourceObjectTypeId only applies to incoming expansion\"\n )\n }\n\n const targetTypeIds: string[] = []\n let foundOnAnyType = false\n\n for (const objectType of getObjectTypesForResult(shape, ctx)) {\n const link = objectType.links.find((candidate) => candidate.id === linkId)\n if (!link) continue\n foundOnAnyType = true\n\n if (link.targetObjectTypeId === \"*\") {\n addIssue(\n ctx,\n path,\n \"wildcard_expand_target\",\n `Expansion over wildcard link '${objectType.id}.${linkId}' cannot infer a target object type`\n )\n continue\n }\n\n const declaredTargets = Array.isArray(link.targetObjectTypeId)\n ? link.targetObjectTypeId\n : [link.targetObjectTypeId]\n\n for (const targetId of declaredTargets) {\n if (!ctx.ontology.getObjectTypeById(targetId)) {\n addIssue(\n ctx,\n path,\n \"unknown_expand_target\",\n `Expansion over '${objectType.id}.${linkId}' targets unknown object type '${targetId}'`\n )\n } else {\n targetTypeIds.push(targetId)\n }\n }\n }\n\n // A link absent from every result type is the \"abandoned by a later traverse\"\n // case: expands hoist above traverse, so an expand on a type the traverse\n // replaced cannot resolve its link on the final result type.\n if (!foundOnAnyType) {\n addIssue(\n ctx,\n path,\n \"unknown_expand_link\",\n `Expansion references link '${linkId}' not present on result type ${shape.objectTypeIds.join(\n \" | \"\n )} (an expand abandoned by a later traverse?)`\n )\n }\n\n return { objectTypeIds: uniqueStrings(targetTypeIds) }\n}\n\nfunction resolveIncomingExpansionTargets(\n linkId: string,\n sourceObjectTypeId: string | undefined,\n shape: ObjectQueryResultShape,\n path: string,\n ctx: QueryValidationContext\n): ObjectQueryResultShape {\n let candidateTypes = ctx.ontology.listObjectTypes()\n if (sourceObjectTypeId !== undefined) {\n const sourceType = ctx.ontology.getObjectTypeById(sourceObjectTypeId)\n if (!sourceType) {\n addIssue(\n ctx,\n path,\n \"unknown_expand_source\",\n `Incoming expansion references unknown source object type '${sourceObjectTypeId}'`\n )\n return { objectTypeIds: [] }\n }\n candidateTypes = [sourceType]\n }\n\n const sourceTypeIds: string[] = []\n\n for (const sourceType of candidateTypes) {\n const link = sourceType.links.find((candidate) => candidate.id === linkId)\n if (!link) continue\n\n if (link.targetObjectTypeId === \"*\") {\n sourceTypeIds.push(sourceType.id)\n continue\n }\n\n const matches = shape.objectTypeIds.some((targetTypeId) =>\n ctx.ontology.isValidLinkTarget(link.targetObjectTypeId, targetTypeId)\n )\n if (matches) sourceTypeIds.push(sourceType.id)\n }\n\n if (sourceTypeIds.length === 0) {\n addIssue(\n ctx,\n path,\n \"incoming_expand_link_not_found\",\n `Incoming expansion found no source object types with link '${linkId}' targeting ${shape.objectTypeIds.join(\n \" | \"\n )}`\n )\n }\n\n return { objectTypeIds: uniqueStrings(sourceTypeIds) }\n}\n\nfunction validateExpansionLimit(\n limit: number | undefined,\n path: string,\n ctx: QueryValidationContext\n): void {\n if (limit === undefined) return\n if (!Number.isInteger(limit) || limit < 0) {\n addIssue(\n ctx,\n `${path}.limit`,\n \"invalid_expand_limit\",\n \"expand.limit must be a non-negative integer\"\n )\n }\n}\n\nfunction validateSet(\n inputs: readonly ObjectQuery[],\n op: \"union\" | \"intersect\" | \"subtract\",\n path: string,\n ctx: QueryValidationContext\n): QueryValidationResult {\n if (inputs.length === 0) {\n addIssue(ctx, path, \"empty_set\", `Set operation '${op}' must include at least one input`)\n return { result: { objectTypeIds: [] }, query: { kind: \"set\", op, inputs } }\n }\n\n const results = inputs.map((input, index) =>\n validateQueryNode(input, `${path}.inputs[${index}]`, ctx)\n )\n const first = results[0]?.result ?? { objectTypeIds: [] }\n const expected = keyForTypeIds(first.objectTypeIds)\n\n results.forEach((result, index) => {\n if (keyForTypeIds(result.result.objectTypeIds) !== expected) {\n addIssue(\n ctx,\n `${path}.inputs[${index}]`,\n \"incompatible_set_input\",\n `Set operation '${op}' inputs must produce the same object type set`\n )\n }\n })\n\n return {\n result: first,\n query: { kind: \"set\", op, inputs: results.map((result) => result.query) },\n }\n}\n\nfunction validateSortFields(\n fields: readonly ObjectQuerySortField[],\n shape: ObjectQueryResultShape,\n path: string,\n ctx: QueryValidationContext\n): ObjectQuerySortField[] {\n if (fields.length === 0) {\n addIssue(ctx, path, \"empty_sort\", \"Sort must include at least one field\")\n return []\n }\n\n const seen = new Set<string>()\n return fields.map((field, index) => {\n if (field.direction && field.direction !== \"asc\" && field.direction !== \"desc\") {\n addIssue(\n ctx,\n `${path}.fields[${index}]`,\n \"invalid_sort_direction\",\n \"Sort direction must be asc or desc\"\n )\n }\n\n const key = field.kind === \"property\" ? `property:${field.propertyId}` : \"relevance\"\n if (seen.has(key)) {\n addIssue(\n ctx,\n `${path}.fields[${index}]`,\n \"duplicate_sort_field\",\n `Duplicate sort field '${key}'`\n )\n }\n seen.add(key)\n\n if (field.kind === \"relevance\") return field\n\n const { scalarKind: _authoredScalarKind, ...authoredField } = field\n\n const schemas: Schema[] = []\n\n for (const { objectType, property } of getPropertiesForResult(\n field.propertyId,\n shape,\n `${path}.fields[${index}]`,\n ctx\n )) {\n if (property.query?.searchable !== true || property.query.sortable !== true) {\n addIssue(\n ctx,\n `${path}.fields[${index}]`,\n \"property_not_sortable\",\n `Property '${property.id}' on '${objectType.id}' must set query.searchable: true and query.sortable: true before it can be sorted`\n )\n continue\n }\n\n const schema = resolveSchemaForProperty(\n property,\n objectType.id,\n ctx,\n `${path}.fields[${index}]`\n )\n if (schema) schemas.push(schema)\n if (schema && !isSortableSchema(schema)) {\n addIssue(\n ctx,\n `${path}.fields[${index}]`,\n \"sort_field_not_orderable\",\n `Sort field '${property.id}' on '${objectType.id}' is not orderable`\n )\n }\n }\n\n const scalarKind = resolveCommonQueryScalarKind(\n schemas,\n field.propertyId,\n `${path}.fields[${index}]`,\n ctx\n )\n return { ...authoredField, ...(scalarKind ? { scalarKind } : {}) }\n })\n}\n\nfunction validateLimit(limit: number, path: string, ctx: QueryValidationContext): void {\n if (!Number.isInteger(limit) || limit < 0) {\n addIssue(ctx, path, \"invalid_limit\", \"limit must be a non-negative integer\")\n } else if (limit > ctx.maxLimit) {\n addIssue(ctx, path, \"limit_too_large\", `limit must be <= ${ctx.maxLimit}`)\n }\n}\n\nfunction validatePage(\n pageSize: number,\n pageToken: string | undefined,\n path: string,\n ctx: QueryValidationContext\n): void {\n if (!Number.isInteger(pageSize) || pageSize <= 0) {\n addIssue(ctx, path, \"invalid_page_size\", \"pageSize must be a positive integer\")\n } else if (pageSize > ctx.maxPageSize) {\n addIssue(ctx, path, \"page_size_too_large\", `pageSize must be <= ${ctx.maxPageSize}`)\n }\n\n if (pageToken !== undefined && pageToken.length === 0) {\n addIssue(ctx, path, \"empty_page_token\", \"pageToken must not be empty when provided\")\n }\n}\n\nfunction validateProjection(\n properties: readonly string[] | undefined,\n shape: ObjectQueryResultShape,\n path: string,\n ctx: QueryValidationContext\n): void {\n if (!properties) return\n if (properties.length === 0) {\n addIssue(ctx, path, \"empty_projection\", \"project.properties must not be empty when provided\")\n }\n\n const seen = new Set<string>()\n properties.forEach((propertyId, index) => {\n if (seen.has(propertyId)) {\n addIssue(\n ctx,\n `${path}.properties[${index}]`,\n \"duplicate_projection_property\",\n `Duplicate projected property '${propertyId}'`\n )\n }\n seen.add(propertyId)\n getPropertiesForResult(propertyId, shape, `${path}.properties[${index}]`, ctx)\n })\n}\n\nfunction getObjectTypesForResult(\n shape: ObjectQueryResultShape,\n ctx: QueryValidationContext\n): ObjectType[] {\n const objectTypes: ObjectType[] = []\n for (const objectTypeId of shape.objectTypeIds) {\n const objectType = ctx.ontology.getObjectTypeById(objectTypeId)\n if (objectType) objectTypes.push(objectType)\n }\n return objectTypes\n}\n\nfunction getPropertiesForResult(\n propertyId: string,\n shape: ObjectQueryResultShape,\n path: string,\n ctx: QueryValidationContext,\n options: { reportMissing?: boolean } = {}\n): { objectType: ObjectType; property: Property }[] {\n const results: { objectType: ObjectType; property: Property }[] = []\n\n for (const objectType of getObjectTypesForResult(shape, ctx)) {\n const property = getProperty(objectType, propertyId)\n if (!property) {\n if (options.reportMissing === false) {\n continue\n }\n addIssue(\n ctx,\n path,\n \"unknown_property\",\n `Property '${propertyId}' does not exist on object type '${objectType.id}'`\n )\n continue\n }\n results.push({ objectType, property })\n }\n\n return results\n}\n\nfunction getProperty(objectType: ObjectType, propertyId: string): Property | undefined {\n return objectType.properties.find((property) => property.id === propertyId)\n}\n\nfunction assertStaticSearchProperty(\n objectTypeId: string,\n property: Property,\n context: string,\n path: string,\n ctx: QueryValidationContext\n): void {\n if (property.mode === \"telemetry\") {\n addIssue(\n ctx,\n path,\n \"telemetry_search_property\",\n `${context} references telemetry property '${property.id}' on '${objectTypeId}'. Search can only reference static properties because telemetry latest values are not object-query indexed.`\n )\n }\n}\n\nfunction assertQueryFlag(\n objectTypeId: string,\n property: Property,\n flag: \"text\" | \"vector\",\n context: string,\n path: string,\n ctx: QueryValidationContext\n): void {\n if (property.query?.searchable === true && property.query[flag] === true) return\n addIssue(\n ctx,\n path,\n \"query_field_not_enabled\",\n `${context} field '${property.id}' on '${objectTypeId}' must set query.searchable: true and query.${flag}: true`\n )\n}\n\nfunction resolveSchemaForProperty(\n property: Property,\n objectTypeId: string,\n ctx: QueryValidationContext,\n path: string\n): Schema | null {\n try {\n return resolveSchema(property.schema, ctx.valueTypesById)\n } catch (error) {\n addIssue(\n ctx,\n path,\n \"unresolved_property_schema\",\n error instanceof Error\n ? error.message\n : `Could not resolve schema for '${objectTypeId}.${property.id}'`\n )\n return null\n }\n}\n\nfunction resolveSchema(\n schema: Schema,\n valueTypesById: ReadonlyMap<string, ValueType>,\n seenValueTypeIds = new Set<string>()\n): Schema {\n if (typeof schema === \"string\") return schema\n if (schema.type !== \"valueTypeRef\") return schema\n if (seenValueTypeIds.has(schema.valueTypeId)) {\n throw new Error(`Circular valueTypeRef '${schema.valueTypeId}'`)\n }\n\n const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema\n if (!resolved) {\n throw new Error(`Unknown valueTypeRef '${schema.valueTypeId}'`)\n }\n\n seenValueTypeIds.add(schema.valueTypeId)\n return resolveSchema(resolved, valueTypesById, seenValueTypeIds)\n}\n\nfunction isPrimaryExactPredicate(property: Property, op: ObjectQueryPredicate[\"op\"]): boolean {\n return property.primary === true && (op === \"eq\" || op === \"in\")\n}\n\nfunction isTextSchema(schema: Schema): boolean {\n if (schema === \"string\") return true\n return typeof schema !== \"string\" && schema.type === \"enum\" && schema.valueType === \"string\"\n}\n\nfunction isExactSchema(schema: Schema): boolean {\n if (typeof schema === \"string\") return schema !== \"fileRef\"\n return schema.type === \"enum\"\n}\n\nfunction isSortableSchema(schema: Schema): boolean {\n if (typeof schema === \"string\") {\n return (\n schema === \"string\" ||\n schema === \"uuid\" ||\n schema === \"integer\" ||\n schema === \"double\" ||\n schema === \"decimal\" ||\n schema === \"date\" ||\n schema === \"timestamp\"\n )\n }\n return schema.type === \"enum\"\n}\n\nfunction isContainsSchema(schema: Schema): boolean {\n return (\n schema === \"string\" ||\n schema === \"uuid\" ||\n (typeof schema !== \"string\" && (schema.type === \"array\" || schema.type === \"map\"))\n )\n}\n\nfunction isVectorSchema(schema: Schema, ctx: QueryValidationContext): boolean {\n if (typeof schema === \"string\") return false\n if (schema.type !== \"array\") return false\n const itemSchema = resolveSchema(schema.items, ctx.valueTypesById)\n return itemSchema === \"integer\" || itemSchema === \"double\" || itemSchema === \"decimal\"\n}\n\nfunction keyForTypeIds(typeIds: readonly string[]): string {\n return uniqueStrings(typeIds).sort().join(\"\\0\")\n}\n\nfunction uniqueStrings(values: readonly string[]): string[] {\n return [...new Set(values)]\n}\n\nfunction addIssue(ctx: QueryValidationContext, path: string, code: string, message: string): void {\n ctx.issues.push({ path, code, message })\n}\n",
7
+ "import { type AuthorizationContext, assertAuthorized } from \"../../authorization\"\nimport type { OntologyRegistry } from \"../../ontology\"\nimport type {\n CountObjectsResult,\n ExistsObjectsResult,\n ExpandedLinkValue,\n ExpandedObjectRow,\n FacetObjectsResult,\n ObjectFacetRequest,\n ObjectFacetResult,\n ObjectLinkRow,\n ObjectQueryCapabilities,\n ObjectRow,\n ObjectRowLinks,\n ObjectStorage,\n QueryObjectsResult,\n} from \"../../storage\"\nimport {\n ObjectQueryExecutionError,\n ObjectQueryPlanningError,\n ObjectQueryValidationError,\n} from \"./errors\"\nimport type {\n ObjectExpansion,\n ObjectQuery,\n ObjectQueryPredicate,\n ObjectQueryResultShape,\n ObjectQuerySortField,\n} from \"./ir\"\nimport { normalizeObjectQuery } from \"./normalize\"\nimport { type ObjectQueryPlan, type ObjectQueryPlanningOptions, planObjectQuery } from \"./planner\"\nimport { compareQueryScalarValues, queryScalarValuesEqual } from \"./scalar-values\"\nimport {\n type ObjectQueryValidationIssue,\n resolveObjectQueryResultShape,\n type ValidatedObjectQuery,\n validateObjectQuery,\n} from \"./validate\"\n\nexport interface QueryExecutorOptions\n extends Omit<\n ObjectQueryPlanningOptions,\n | \"capabilities\"\n | \"operation\"\n | \"hasQueryObjects\"\n | \"hasCountObjects\"\n | \"hasExistsObjects\"\n | \"hasFacetObjects\"\n > {\n ontology: OntologyRegistry\n storage: ObjectStorage\n maxLimit?: number\n maxPageSize?: number\n maxFacetLimit?: number\n /**\n * Per-parent cap on how many links a single `expand` hydrates, applied as a\n * top-N trim after `orderBy` (mirrors `maxLimit` for the result set). An\n * expansion's own `limit` narrows this further; the cap is the backstop.\n */\n maxExpansionFanout?: number\n /** When present, every object type the query touches must be viewable. */\n authorization?: AuthorizationContext\n}\n\nexport interface ExecuteObjectQueryInput {\n projectId: string\n query: ObjectQuery\n includeTotal?: boolean\n}\n\nexport interface ExecuteObjectQueryResult extends QueryObjectsResult {\n plan: ObjectQueryPlan\n}\n\nexport interface ExecuteObjectCountInput {\n projectId: string\n query: ObjectQuery\n}\n\nexport interface ExecuteObjectCountResult extends CountObjectsResult {\n plan: ObjectQueryPlan\n}\n\nexport interface ExecuteObjectExistsInput {\n projectId: string\n query: ObjectQuery\n}\n\nexport interface ExecuteObjectExistsResult extends ExistsObjectsResult {\n plan: ObjectQueryPlan\n}\n\nexport interface ExecuteObjectFacetsInput {\n projectId: string\n query: ObjectQuery\n facets: readonly ObjectFacetRequest[]\n}\n\nexport interface ExecuteObjectFacetsResult extends FacetObjectsResult {\n plan: ObjectQueryPlan\n}\n\ntype FallbackEntry = {\n row: ObjectRow\n order: number\n}\n\ntype FallbackEvaluation = {\n entries: FallbackEntry[]\n total: number\n hasMore: boolean\n nextPageToken?: string\n}\n\nconst DEFAULT_MAX_FALLBACK_ROWS = 1_000\nconst DEFAULT_MAX_FACET_LIMIT = 1_000\nconst DEFAULT_MAX_EXPANSION_FANOUT = 1_000\n\n// Fallback page tokens are local to the core executor. Provider page tokens are\n// opaque and should only be interpreted by the provider that returned them.\nconst PAGE_TOKEN_PREFIX = \"offset:\"\n\nexport class QueryExecutor {\n constructor(private readonly options: QueryExecutorOptions) {}\n\n async execute(input: ExecuteObjectQueryInput): Promise<ExecuteObjectQueryResult> {\n return executeObjectQuery(input, this.options)\n }\n\n async count(input: ExecuteObjectCountInput): Promise<ExecuteObjectCountResult> {\n return countObjects(input, this.options)\n }\n\n async exists(input: ExecuteObjectExistsInput): Promise<ExecuteObjectExistsResult> {\n return existsObjects(input, this.options)\n }\n\n async facets(input: ExecuteObjectFacetsInput): Promise<ExecuteObjectFacetsResult> {\n return facetObjects(input, this.options)\n }\n}\n\nexport async function executeObjectQuery(\n input: ExecuteObjectQueryInput,\n options: QueryExecutorOptions\n): Promise<ExecuteObjectQueryResult> {\n const normalized = normalizeObjectQuery(input.query)\n const validated = validateObjectQuery(normalized, {\n ontology: options.ontology,\n maxLimit: options.maxLimit,\n maxPageSize: options.maxPageSize,\n normalize: false,\n })\n assertQueryViewable(validated, options.authorization)\n const capabilities = options.storage.queryCapabilities()\n const hasQueryObjects = typeof options.storage.queryObjects === \"function\"\n const hasCountObjects = typeof options.storage.countObjects === \"function\"\n const hasExistsObjects = typeof options.storage.existsObjects === \"function\"\n const hasFacetObjects = typeof options.storage.facetObjects === \"function\"\n const plannedQuery = expandPushdownQuery(\n validated.query,\n options.ontology,\n capabilities,\n {\n hasQueryObjects,\n hasCountObjects,\n hasExistsObjects,\n hasFacetObjects,\n allowFallback: options.allowFallback,\n maxFallbackRows: options.maxFallbackRows,\n requiresExplicitFallbackBound: options.requiresExplicitFallbackBound,\n },\n options.maxExpansionFanout\n )\n const plan = planObjectQuery(plannedQuery, {\n capabilities,\n hasQueryObjects,\n hasCountObjects,\n hasExistsObjects,\n hasFacetObjects,\n allowFallback: options.allowFallback,\n maxFallbackRows: options.maxFallbackRows,\n requiresExplicitFallbackBound: options.requiresExplicitFallbackBound,\n })\n\n if (plan.mode === \"rejected\") {\n throw new ObjectQueryPlanningError(plan.issues)\n }\n\n if (plan.mode === \"pushdown\") {\n if (!options.storage.queryObjects) {\n throw new ObjectQueryPlanningError(plan.providerIssues)\n }\n const result = await options.storage.queryObjects({\n projectId: input.projectId,\n query: plan.query,\n includeTotal: input.includeTotal,\n })\n return { ...result, plan }\n }\n\n // The planner admits only the small fallback subset; unsupported cases below\n // remain as defensive guards against future planner drift.\n const fallback = await executeFallbackQuery(input.projectId, validated.query, options, {\n includeTotal: input.includeTotal,\n })\n return { ...fallback, plan }\n}\n\nexport async function countObjects(\n input: ExecuteObjectCountInput,\n options: QueryExecutorOptions\n): Promise<ExecuteObjectCountResult> {\n const normalized = normalizeObjectQuery(input.query)\n const validated = validateObjectQuery(normalized, {\n ontology: options.ontology,\n maxLimit: options.maxLimit,\n maxPageSize: options.maxPageSize,\n normalize: false,\n })\n assertQueryViewable(validated, options.authorization)\n const capabilities = options.storage.queryCapabilities()\n const hasQueryObjects = typeof options.storage.queryObjects === \"function\"\n const hasCountObjects = typeof options.storage.countObjects === \"function\"\n const hasExistsObjects = typeof options.storage.existsObjects === \"function\"\n const hasFacetObjects = typeof options.storage.facetObjects === \"function\"\n const aggregateQuery = stripOuterRowShape(validated.query)\n const plannedQuery = expandPushdownQuery(aggregateQuery, options.ontology, capabilities, {\n operation: \"countObjects\",\n hasQueryObjects,\n hasCountObjects,\n hasExistsObjects,\n hasFacetObjects,\n allowFallback: options.allowFallback,\n maxFallbackRows: options.maxFallbackRows,\n requiresExplicitFallbackBound: options.requiresExplicitFallbackBound,\n })\n const plan = planObjectQuery(plannedQuery, {\n capabilities,\n operation: \"countObjects\",\n hasQueryObjects,\n hasCountObjects,\n hasExistsObjects,\n hasFacetObjects,\n allowFallback: options.allowFallback,\n maxFallbackRows: options.maxFallbackRows,\n requiresExplicitFallbackBound: options.requiresExplicitFallbackBound,\n })\n\n if (plan.mode === \"rejected\") {\n throw new ObjectQueryPlanningError(plan.issues)\n }\n\n if (plan.mode === \"pushdown\") {\n if (!options.storage.countObjects) {\n throw new ObjectQueryPlanningError(plan.providerIssues)\n }\n const result = await options.storage.countObjects({\n projectId: input.projectId,\n query: plan.query,\n })\n return { ...result, plan }\n }\n\n const maxRows = options.maxFallbackRows ?? DEFAULT_MAX_FALLBACK_ROWS\n const evaluation = await evaluateFallbackQuery(input.projectId, aggregateQuery, options, maxRows)\n return { count: evaluation.total, plan }\n}\n\nexport async function existsObjects(\n input: ExecuteObjectExistsInput,\n options: QueryExecutorOptions\n): Promise<ExecuteObjectExistsResult> {\n const normalized = normalizeObjectQuery(input.query)\n const validated = validateObjectQuery(normalized, {\n ontology: options.ontology,\n maxLimit: options.maxLimit,\n maxPageSize: options.maxPageSize,\n normalize: false,\n })\n assertQueryViewable(validated, options.authorization)\n const capabilities = options.storage.queryCapabilities()\n const hasQueryObjects = typeof options.storage.queryObjects === \"function\"\n const hasCountObjects = typeof options.storage.countObjects === \"function\"\n const hasExistsObjects = typeof options.storage.existsObjects === \"function\"\n const hasFacetObjects = typeof options.storage.facetObjects === \"function\"\n const aggregateQuery = stripOuterRowShape(validated.query)\n const plannedQuery = expandPushdownQuery(aggregateQuery, options.ontology, capabilities, {\n operation: \"existsObjects\",\n hasQueryObjects,\n hasCountObjects,\n hasExistsObjects,\n hasFacetObjects,\n allowFallback: options.allowFallback,\n maxFallbackRows: options.maxFallbackRows,\n requiresExplicitFallbackBound: options.requiresExplicitFallbackBound,\n })\n const plan = planObjectQuery(plannedQuery, {\n capabilities,\n operation: \"existsObjects\",\n hasQueryObjects,\n hasCountObjects,\n hasExistsObjects,\n hasFacetObjects,\n allowFallback: options.allowFallback,\n maxFallbackRows: options.maxFallbackRows,\n requiresExplicitFallbackBound: options.requiresExplicitFallbackBound,\n })\n\n if (plan.mode === \"rejected\") {\n throw new ObjectQueryPlanningError(plan.issues)\n }\n\n if (plan.mode === \"pushdown\") {\n if (!options.storage.existsObjects) {\n throw new ObjectQueryPlanningError(plan.providerIssues)\n }\n const result = await options.storage.existsObjects({\n projectId: input.projectId,\n query: plan.query,\n })\n return { ...result, plan }\n }\n\n const maxRows = options.maxFallbackRows ?? DEFAULT_MAX_FALLBACK_ROWS\n const evaluation = await evaluateFallbackQuery(input.projectId, aggregateQuery, options, maxRows)\n return { exists: evaluation.total > 0, plan }\n}\n\nexport async function facetObjects(\n input: ExecuteObjectFacetsInput,\n options: QueryExecutorOptions\n): Promise<ExecuteObjectFacetsResult> {\n const normalized = normalizeObjectQuery(input.query)\n const validated = validateObjectQuery(normalized, {\n ontology: options.ontology,\n maxLimit: options.maxLimit,\n maxPageSize: options.maxPageSize,\n normalize: false,\n })\n assertQueryViewable(validated, options.authorization)\n const facets = validateFacetRequests(input.facets, validated.result.objectTypeIds, options)\n const aggregateQuery = stripOuterRowShape(validated.query)\n const capabilities = options.storage.queryCapabilities()\n const hasQueryObjects = typeof options.storage.queryObjects === \"function\"\n const hasCountObjects = typeof options.storage.countObjects === \"function\"\n const hasExistsObjects = typeof options.storage.existsObjects === \"function\"\n const hasFacetObjects = typeof options.storage.facetObjects === \"function\"\n const plannedQuery = expandPushdownQuery(aggregateQuery, options.ontology, capabilities, {\n operation: \"facetObjects\",\n hasQueryObjects,\n hasCountObjects,\n hasExistsObjects,\n hasFacetObjects,\n allowFallback: options.allowFallback,\n maxFallbackRows: options.maxFallbackRows,\n requiresExplicitFallbackBound: options.requiresExplicitFallbackBound,\n })\n const plan = planObjectQuery(plannedQuery, {\n capabilities,\n operation: \"facetObjects\",\n hasQueryObjects,\n hasCountObjects,\n hasExistsObjects,\n hasFacetObjects,\n allowFallback: options.allowFallback,\n maxFallbackRows: options.maxFallbackRows,\n requiresExplicitFallbackBound: options.requiresExplicitFallbackBound,\n })\n\n if (plan.mode === \"rejected\") {\n throw new ObjectQueryPlanningError(plan.issues)\n }\n\n if (plan.mode === \"pushdown\") {\n if (!options.storage.facetObjects) {\n throw new ObjectQueryPlanningError(plan.providerIssues)\n }\n const result = await options.storage.facetObjects({\n projectId: input.projectId,\n query: plan.query,\n facets,\n })\n return { ...result, plan }\n }\n\n const maxRows = options.maxFallbackRows ?? DEFAULT_MAX_FALLBACK_ROWS\n const evaluation = await evaluateFallbackQuery(input.projectId, aggregateQuery, options, maxRows)\n return {\n facets: buildFacetResults(\n evaluation.entries.map((entry) => entry.row),\n facets\n ),\n plan,\n }\n}\n\n// Authorization happens at planning time: a scoped query must hold a view\n// grant for every object type it touches, before any storage call runs.\nfunction assertQueryViewable(\n validated: ValidatedObjectQuery,\n authorization: AuthorizationContext | undefined\n): void {\n assertAuthorized(\n { authorization },\n { kind: \"object.query\", touchedObjectTypeIds: validated.touchedObjectTypeIds }\n )\n}\n\ninterface ExpansionResolutionContext {\n ontology: OntologyRegistry\n maxExpansionFanout: number | undefined\n}\n\nfunction expandPushdownQuery(\n query: ObjectQuery,\n ontology: OntologyRegistry,\n capabilities: ObjectQueryCapabilities,\n planning: Omit<ObjectQueryPlanningOptions, \"capabilities\">,\n maxExpansionFanout?: number\n): ObjectQuery {\n // Resolve each expansion's cardinality and effective per-parent limit from the\n // ontology so a provider can push the graph read down without one. The planner\n // only admits expand pushdown once every expansion carries a cardinality, so a\n // mixed/unresolved expansion (e.g. a polymorphic parent whose branches\n // disagree) cleanly stays on the fallback.\n const ctx: ExpansionResolutionContext = { ontology, maxExpansionFanout }\n const annotated = resolveExpansions(query, ctx)\n const expanded = expandIncludeSubtypes(annotated, ontology)\n if (expanded === annotated) return annotated\n\n const plan = planObjectQuery(expanded, { ...planning, capabilities, allowFallback: false })\n return plan.mode === \"pushdown\" ? expanded : annotated\n}\n\n// Walk to the (normalized, outermost) expand node and annotate every expansion\n// with its resolved cardinality and bounded limit. Output-shaping only — never\n// changes which objects match — so it composes with `expandIncludeSubtypes`.\nfunction resolveExpansions(query: ObjectQuery, ctx: ExpansionResolutionContext): ObjectQuery {\n switch (query.kind) {\n case \"expand\": {\n const parentShape = safeResultShape(query.input, ctx.ontology)\n return {\n ...query,\n input: resolveExpansions(query.input, ctx),\n expansions: query.expansions.map((expansion) =>\n annotateExpansion(expansion, parentShape, ctx)\n ),\n }\n }\n case \"start\":\n return query\n case \"set\":\n return {\n ...query,\n inputs: query.inputs.map((input) => resolveExpansions(input, ctx)),\n }\n case \"filter\":\n case \"text\":\n case \"vector\":\n case \"traverse\":\n case \"sort\":\n case \"limit\":\n case \"page\":\n case \"project\":\n return { ...query, input: resolveExpansions(query.input, ctx) }\n }\n}\n\nfunction annotateExpansion(\n expansion: ObjectExpansion,\n parentShape: ObjectQueryResultShape,\n ctx: ExpansionResolutionContext\n): ObjectExpansion {\n const cardinality = resolveUniformCardinality(expansion, parentShape, ctx.ontology)\n // Bake the per-parent top-N the provider must apply: the authored limit clamped\n // by the fanout backstop (the fallback computes the same via\n // `effectiveExpansionFanout`). Always defined afterwards, so the compiler need\n // not re-derive the cap.\n const limit = effectiveExpansionFanout(expansion.limit, ctx.maxExpansionFanout)\n const base: ObjectExpansion = cardinality\n ? { ...expansion, cardinality, limit }\n : { ...expansion, limit }\n\n if (!expansion.expand || expansion.expand.length === 0) return base\n\n const targetShape = resolveExpansionTargetShape(expansion, parentShape, ctx.ontology)\n return {\n ...base,\n expand: expansion.expand.map((nested) => annotateExpansion(nested, targetShape, ctx)),\n }\n}\n\n// The attached value shape is uniform only when every parent type resolves the\n// link to the same cardinality. A non-declaring parent type contributes \"many\"\n// (matching the fallback's `link?.cardinality ?? \"many\"`); incoming is always\n// many-to-one. A mixed result returns undefined, keeping the query on fallback.\nfunction resolveUniformCardinality(\n expansion: ObjectExpansion,\n parentShape: ObjectQueryResultShape,\n ontology: OntologyRegistry\n): \"one\" | \"many\" | undefined {\n if (expansion.direction === \"incoming\") return \"many\"\n if (parentShape.objectTypeIds.length === 0) return undefined\n\n const cardinalities = new Set<\"one\" | \"many\">()\n for (const objectTypeId of parentShape.objectTypeIds) {\n const objectType = ontology.getObjectTypeById(objectTypeId)\n const link = objectType?.links.find((candidate) => candidate.id === expansion.linkId)\n cardinalities.add(link?.cardinality ?? \"many\")\n }\n return cardinalities.size === 1 ? [...cardinalities][0] : undefined\n}\n\n// The objects reached by an expansion are exactly the result of the equivalent\n// traverse, so reuse the shared shape resolver instead of re-deriving link\n// targets. Used to carry the parent context into nested expansions.\nfunction resolveExpansionTargetShape(\n expansion: ObjectExpansion,\n parentShape: ObjectQueryResultShape,\n ontology: OntologyRegistry\n): ObjectQueryResultShape {\n if (parentShape.objectTypeIds.length === 0) return { objectTypeIds: [] }\n\n const input: ObjectQuery =\n parentShape.objectTypeIds.length === 1\n ? { kind: \"start\", objectTypeId: parentShape.objectTypeIds[0] }\n : {\n kind: \"set\",\n op: \"union\",\n inputs: parentShape.objectTypeIds.map((objectTypeId) => ({\n kind: \"start\",\n objectTypeId,\n })),\n }\n const traverse: ObjectQuery = {\n kind: \"traverse\",\n input,\n linkId: expansion.linkId,\n direction: expansion.direction,\n ...(expansion.sourceObjectTypeId === undefined\n ? {}\n : { sourceObjectTypeId: expansion.sourceObjectTypeId }),\n }\n return safeResultShape(traverse, ontology)\n}\n\n// Cardinality resolution is a pushdown optimization, never a correctness\n// requirement: any failure to resolve a shape (the resolver throws on a query it\n// considers invalid) must degrade to \"unresolved\", which the planner reads as\n// \"keep this on the fallback\" rather than surfacing an error.\nfunction safeResultShape(query: ObjectQuery, ontology: OntologyRegistry): ObjectQueryResultShape {\n try {\n return resolveObjectQueryResultShape(query, { ontology })\n } catch {\n return { objectTypeIds: [] }\n }\n}\n\nfunction expandIncludeSubtypes(query: ObjectQuery, ontology: OntologyRegistry): ObjectQuery {\n switch (query.kind) {\n case \"start\": {\n if (query.includeSubtypes !== true) return query\n const objectTypeIds = [query.objectTypeId, ...ontology.listSubTypes(query.objectTypeId)]\n if (objectTypeIds.length === 1) return { kind: \"start\", objectTypeId: query.objectTypeId }\n return {\n kind: \"set\",\n op: \"union\",\n inputs: objectTypeIds.map((objectTypeId) => ({ kind: \"start\", objectTypeId })),\n }\n }\n case \"filter\":\n case \"text\":\n case \"vector\":\n case \"traverse\":\n case \"sort\":\n case \"limit\":\n case \"page\":\n case \"project\":\n case \"expand\":\n return { ...query, input: expandIncludeSubtypes(query.input, ontology) }\n case \"set\":\n return {\n ...query,\n inputs: query.inputs.map((input) => expandIncludeSubtypes(input, ontology)),\n }\n }\n}\n\nasync function executeFallbackQuery(\n projectId: string,\n query: ObjectQuery,\n options: QueryExecutorOptions,\n resultOptions: { includeTotal?: boolean }\n): Promise<QueryObjectsResult> {\n const maxRows = options.maxFallbackRows ?? DEFAULT_MAX_FALLBACK_ROWS\n const evaluation = await evaluateFallbackQuery(projectId, query, options, maxRows)\n return {\n objects: evaluation.entries.map((entry) => entry.row),\n hasMore: evaluation.hasMore,\n nextPageToken: evaluation.nextPageToken,\n ...(resultOptions.includeTotal === false ? {} : { total: evaluation.total }),\n }\n}\n\nasync function evaluateFallbackQuery(\n projectId: string,\n query: ObjectQuery,\n options: QueryExecutorOptions,\n maxRows: number\n): Promise<FallbackEvaluation> {\n switch (query.kind) {\n case \"start\":\n return evaluateFallbackStart(projectId, query, options, maxRows)\n case \"filter\": {\n const input = await evaluateFallbackQuery(projectId, query.input, options, maxRows)\n return completeFallbackEvaluation(\n input.entries.filter((entry) => matchesPredicate(entry.row, query.predicate))\n )\n }\n case \"sort\": {\n const input = await evaluateFallbackQuery(projectId, query.input, options, maxRows)\n return {\n ...input,\n entries: sortEntries(input.entries, query.fields),\n }\n }\n case \"limit\": {\n const input = await evaluateFallbackQuery(projectId, query.input, options, maxRows)\n const limit = Math.max(0, query.limit)\n return {\n entries: input.entries.slice(0, limit),\n total: input.entries.length,\n hasMore: limit < input.entries.length,\n }\n }\n case \"page\": {\n const input = await evaluateFallbackQuery(projectId, query.input, options, maxRows)\n const offset = decodePageOffset(query.pageToken)\n const pageSize = Math.max(0, query.pageSize)\n const nextOffset = offset + pageSize\n const hasMore = pageSize > 0 && nextOffset < input.entries.length\n return {\n entries: input.entries.slice(offset, nextOffset),\n total: input.entries.length,\n hasMore,\n nextPageToken: hasMore ? encodePageOffset(nextOffset) : undefined,\n }\n }\n case \"project\": {\n const input = await evaluateFallbackQuery(projectId, query.input, options, maxRows)\n if (!query.properties) return input\n const properties = query.properties\n return {\n ...input,\n entries: input.entries.map((entry) => ({\n ...entry,\n row: projectRow(entry.row, properties),\n })),\n }\n }\n case \"expand\": {\n // `expand` is output-shaping and normalized to the outermost layer: the\n // input produces the bounded parent set, then we attach hydrated links\n // without changing which objects match.\n const input = await evaluateFallbackQuery(projectId, query.input, options, maxRows)\n const enriched = await hydrateExpansions(\n projectId,\n input.entries.map((entry) => entry.row),\n query.expansions,\n options\n )\n return {\n ...input,\n entries: input.entries.map((entry, index) => ({ ...entry, row: enriched[index] })),\n }\n }\n case \"text\":\n case \"vector\":\n case \"traverse\":\n case \"set\":\n throw new ObjectQueryExecutionError(\n \"fallback_node_not_supported\",\n `Fallback execution does not support query node '${query.kind}'`\n )\n }\n}\n\n/**\n * A candidate neighbour for one parent under a single expansion: the object to\n * hydrate plus the metadata carried on the link edge. For outgoing expansions\n * the neighbour is the link target; for incoming it is the link source.\n */\ntype ExpansionEdge = {\n neighborTypeId: string\n neighborId: string\n edgeProperties?: Record<string, unknown>\n}\n\n// Attach `links` to each parent row by hydrating every expansion over the batch\n// storage primitives. Returns fresh rows — stored rows are read by reference, so\n// we never mutate them in place.\nasync function hydrateExpansions(\n projectId: string,\n parents: readonly ObjectRow[],\n expansions: readonly ObjectExpansion[],\n options: QueryExecutorOptions\n): Promise<ObjectRow[]> {\n if (expansions.length === 0) {\n return parents.map((parent) => ({ ...parent }))\n }\n\n const linksByParent: ObjectRowLinks[] = parents.map(() => ({}))\n for (const expansion of expansions) {\n const values = await hydrateExpansion(projectId, parents, expansion, options)\n values.forEach((value, index) => {\n // Keyed by link id, matching the `row.links.<linkId>` authoring surface.\n // Same-id expansions in opposing directions would collide here, but\n // normalization keeps them distinct and that pairing is not yet exposed.\n linksByParent[index][expansion.linkId] = value\n })\n }\n\n return parents.map((parent, index) => ({ ...parent, links: linksByParent[index] }))\n}\n\n// Resolve one expansion for every parent, returning a value aligned to `parents`.\nasync function hydrateExpansion(\n projectId: string,\n parents: readonly ObjectRow[],\n expansion: ObjectExpansion,\n options: QueryExecutorOptions\n): Promise<ExpandedLinkValue[]> {\n const edgesByParent =\n expansion.direction === \"incoming\"\n ? await collectIncomingEdges(projectId, parents, expansion, options)\n : await collectOutgoingEdges(projectId, parents, expansion, options)\n\n // Ordering is against target properties, so the target rows must be loaded\n // before the per-parent top-N trim can run.\n const baseTargets = await fetchExpansionTargets(projectId, edgesByParent, options)\n const trimmedByParent = edgesByParent.map((edges) =>\n trimExpansionEdges(edges, expansion, baseTargets, options)\n )\n\n const enrichedByKey = await enrichExpansionTargets(\n projectId,\n trimmedByParent,\n baseTargets,\n expansion,\n options\n )\n\n return parents.map((parent, index) => {\n const expanded: ExpandedObjectRow[] = []\n for (const edge of trimmedByParent[index]) {\n const target = enrichedByKey.get(targetKey(edge.neighborTypeId, edge.neighborId))\n // A dangling link (target removed) hydrates to nothing.\n if (!target) continue\n expanded.push(\n edge.edgeProperties && Object.keys(edge.edgeProperties).length > 0\n ? { ...target, linkProperties: edge.edgeProperties }\n : { ...target }\n )\n }\n return toLinkValue(expanded, expansionCardinality(parent, expansion, options))\n })\n}\n\nasync function collectOutgoingEdges(\n projectId: string,\n parents: readonly ObjectRow[],\n expansion: ObjectExpansion,\n options: QueryExecutorOptions\n): Promise<ExpansionEdge[][]> {\n const linksByKey = await options.storage.listLinksBatch({\n projectId,\n items: parents.map((parent) => ({\n objectTypeId: parent.objectTypeId,\n objectId: parent.primaryId,\n linkId: expansion.linkId,\n })),\n })\n\n return parents.map((parent) => {\n const links = linksByKey.get(`${parent.objectTypeId}:${parent.primaryId}:${expansion.linkId}`)\n if (!links) return []\n return links.map((link) => ({\n neighborTypeId: link.targetTypeId,\n neighborId: link.targetId,\n edgeProperties: link.properties,\n }))\n })\n}\n\nasync function collectIncomingEdges(\n projectId: string,\n parents: readonly ObjectRow[],\n expansion: ObjectExpansion,\n options: QueryExecutorOptions\n): Promise<ExpansionEdge[][]> {\n const incident = await options.storage.listIncidentLinksBatch({\n projectId,\n items: parents.map((parent) => ({\n objectTypeId: parent.objectTypeId,\n objectId: parent.primaryId,\n })),\n })\n\n // Index links that point AT a parent (incoming) by that parent. The incident\n // batch also returns outgoing links, so filter on the parent being the target.\n const byTarget = new Map<string, ObjectLinkRow[]>()\n for (const link of incident) {\n if (link.linkId !== expansion.linkId) continue\n if (expansion.sourceObjectTypeId && link.sourceTypeId !== expansion.sourceObjectTypeId) continue\n const key = targetKey(link.targetTypeId, link.targetId)\n const bucket = byTarget.get(key)\n if (bucket) bucket.push(link)\n else byTarget.set(key, [link])\n }\n\n return parents.map((parent) => {\n const links = byTarget.get(targetKey(parent.objectTypeId, parent.primaryId))\n if (!links) return []\n // For an incoming expansion the hydrated object is the link's source.\n return links.map((link) => ({\n neighborTypeId: link.sourceTypeId,\n neighborId: link.sourceId,\n edgeProperties: link.properties,\n }))\n })\n}\n\nasync function fetchExpansionTargets(\n projectId: string,\n edgesByParent: readonly ExpansionEdge[][],\n options: QueryExecutorOptions\n): Promise<Map<string, ObjectRow>> {\n const seen = new Set<string>()\n const items: { objectTypeId: string; primaryId: string }[] = []\n for (const edges of edgesByParent) {\n for (const edge of edges) {\n const key = targetKey(edge.neighborTypeId, edge.neighborId)\n if (seen.has(key)) continue\n seen.add(key)\n items.push({ objectTypeId: edge.neighborTypeId, primaryId: edge.neighborId })\n }\n }\n if (items.length === 0) return new Map()\n return options.storage.getByPrimaryIdBatch({ projectId, items })\n}\n\n// Recurse nested expansions over the unique retained targets so each target is\n// hydrated once even when shared across parents, then key them for lookup.\nasync function enrichExpansionTargets(\n projectId: string,\n trimmedByParent: readonly ExpansionEdge[][],\n baseTargets: Map<string, ObjectRow>,\n expansion: ObjectExpansion,\n options: QueryExecutorOptions\n): Promise<Map<string, ObjectRow>> {\n if (!expansion.expand || expansion.expand.length === 0) {\n return baseTargets\n }\n\n const uniqueTargets: ObjectRow[] = []\n const seen = new Set<string>()\n for (const edges of trimmedByParent) {\n for (const edge of edges) {\n const key = targetKey(edge.neighborTypeId, edge.neighborId)\n if (seen.has(key)) continue\n seen.add(key)\n const base = baseTargets.get(key)\n if (base) uniqueTargets.push(base)\n }\n }\n\n const enriched = await hydrateExpansions(projectId, uniqueTargets, expansion.expand, options)\n const enrichedByKey = new Map<string, ObjectRow>()\n for (const row of enriched) {\n enrichedByKey.set(targetKey(row.objectTypeId, row.primaryId), row)\n }\n return enrichedByKey\n}\n\nfunction trimExpansionEdges(\n edges: readonly ExpansionEdge[],\n expansion: ObjectExpansion,\n baseTargets: Map<string, ObjectRow>,\n options: QueryExecutorOptions\n): ExpansionEdge[] {\n let ordered = edges\n if (expansion.orderBy && expansion.orderBy.length > 0) {\n const fields = expansion.orderBy\n ordered = [...edges].sort((left, right) =>\n compareExpansionEdges(left, right, fields, baseTargets)\n )\n }\n\n const limit = effectiveExpansionFanout(expansion.limit, options.maxExpansionFanout)\n return ordered.length > limit ? ordered.slice(0, limit) : [...ordered]\n}\n\nfunction effectiveExpansionFanout(\n limit: number | undefined,\n maxExpansionFanout: number | undefined\n): number {\n const cap = maxExpansionFanout !== undefined ? maxExpansionFanout : DEFAULT_MAX_EXPANSION_FANOUT\n return limit !== undefined ? Math.min(limit, cap) : cap\n}\n\nfunction compareExpansionEdges(\n left: ExpansionEdge,\n right: ExpansionEdge,\n fields: readonly ObjectQuerySortField[],\n baseTargets: Map<string, ObjectRow>\n): number {\n const leftRow = baseTargets.get(targetKey(left.neighborTypeId, left.neighborId))\n const rightRow = baseTargets.get(targetKey(right.neighborTypeId, right.neighborId))\n for (const field of fields) {\n const comparison = compareRowsBySortField(leftRow, rightRow, field)\n if (comparison !== 0) return comparison\n }\n // Identity tiebreak keeps the trim deterministic for equal sort keys.\n return targetKey(left.neighborTypeId, left.neighborId).localeCompare(\n targetKey(right.neighborTypeId, right.neighborId)\n )\n}\n\nfunction compareRowsBySortField(\n left: ObjectRow | undefined,\n right: ObjectRow | undefined,\n field: ObjectQuerySortField\n): number {\n if (field.kind === \"relevance\") return 0\n\n const leftValue = left?.properties[field.propertyId]\n const rightValue = right?.properties[field.propertyId]\n const leftMissing = leftValue === undefined || leftValue === null\n const rightMissing = rightValue === undefined || rightValue === null\n if (leftMissing && rightMissing) return 0\n if (leftMissing) return 1\n if (rightMissing) return -1\n\n const comparison = compareQueryScalarValues(leftValue, rightValue, field.scalarKind)\n if (Number.isNaN(comparison)) return 0\n return field.direction === \"desc\" ? -comparison : comparison\n}\n\n// Outgoing cardinality comes from the parent type's link; incoming is inherently\n// many-to-one, so an incoming expansion always yields an array.\nfunction expansionCardinality(\n parent: ObjectRow,\n expansion: ObjectExpansion,\n options: QueryExecutorOptions\n): \"one\" | \"many\" {\n if (expansion.direction === \"incoming\") return \"many\"\n const objectType = options.ontology.getObjectTypeById(parent.objectTypeId)\n const link = objectType?.links.find((candidate) => candidate.id === expansion.linkId)\n return link?.cardinality ?? \"many\"\n}\n\nfunction toLinkValue(\n rows: readonly ExpandedObjectRow[],\n cardinality: \"one\" | \"many\"\n): ExpandedLinkValue {\n if (cardinality === \"one\") return rows[0] ?? null\n return rows\n}\n\nfunction targetKey(objectTypeId: string, id: string): string {\n return `${objectTypeId}:${id}`\n}\n\nasync function evaluateFallbackStart(\n projectId: string,\n query: Extract<ObjectQuery, { kind: \"start\" }>,\n options: QueryExecutorOptions,\n maxRows: number\n): Promise<FallbackEvaluation> {\n const objectTypeIds = query.includeSubtypes\n ? [query.objectTypeId, ...options.ontology.listSubTypes(query.objectTypeId)]\n : [query.objectTypeId]\n\n const result = await options.storage.list({\n projectId,\n objectTypeId: objectTypeIds,\n limit: maxRows + 1,\n orderBy: \"primaryId\",\n order: \"asc\",\n })\n // Request one extra row so the executor can prove the source scan stayed\n // within its bound even when the storage backend does not return total counts.\n if (result.objects.length > maxRows || result.hasMore || result.total > maxRows) {\n throw new ObjectQueryExecutionError(\n \"fallback_row_limit_exceeded\",\n `Fallback start '${query.objectTypeId}' exceeded maxFallbackRows=${maxRows}`,\n \"$.start\"\n )\n }\n\n return completeFallbackEvaluation(\n result.objects.map((row, index) => ({\n row,\n order: index,\n }))\n )\n}\n\nfunction completeFallbackEvaluation(entries: FallbackEntry[]): FallbackEvaluation {\n return {\n entries,\n total: entries.length,\n hasMore: false,\n }\n}\n\nfunction matchesPredicate(row: ObjectRow, predicate: ObjectQueryPredicate): boolean {\n switch (predicate.op) {\n case \"and\":\n return predicate.items.every((item) => matchesPredicate(row, item))\n case \"or\":\n return predicate.items.some((item) => matchesPredicate(row, item))\n case \"not\":\n return !matchesPredicate(row, predicate.item)\n case \"eq\":\n return queryScalarValuesEqual(\n row.properties[predicate.propertyId],\n predicate.value,\n predicate.scalarKind\n )\n case \"neq\":\n return !queryScalarValuesEqual(\n row.properties[predicate.propertyId],\n predicate.value,\n predicate.scalarKind\n )\n case \"lt\":\n return (\n compareQueryScalarValues(\n row.properties[predicate.propertyId],\n predicate.value,\n predicate.scalarKind\n ) < 0\n )\n case \"lte\":\n return (\n compareQueryScalarValues(\n row.properties[predicate.propertyId],\n predicate.value,\n predicate.scalarKind\n ) <= 0\n )\n case \"gt\":\n return (\n compareQueryScalarValues(\n row.properties[predicate.propertyId],\n predicate.value,\n predicate.scalarKind\n ) > 0\n )\n case \"gte\":\n return (\n compareQueryScalarValues(\n row.properties[predicate.propertyId],\n predicate.value,\n predicate.scalarKind\n ) >= 0\n )\n case \"in\":\n return predicate.values.some((value) =>\n queryScalarValuesEqual(row.properties[predicate.propertyId], value, predicate.scalarKind)\n )\n case \"exists\": {\n const exists =\n Object.hasOwn(row.properties, predicate.propertyId) &&\n row.properties[predicate.propertyId] !== undefined\n return predicate.value ? exists : !exists\n }\n case \"contains\":\n return containsValue(row.properties[predicate.propertyId], predicate.value)\n }\n}\n\nfunction containsValue(actual: unknown, expected: unknown): boolean {\n if (typeof actual === \"string\" && typeof expected === \"string\") {\n return actual.includes(expected)\n }\n\n if (Array.isArray(actual)) {\n return actual.some((item) => queryScalarValuesEqual(item, expected))\n }\n\n if (isPlainObject(actual) && typeof expected === \"string\") {\n return Object.hasOwn(actual, expected)\n }\n\n return false\n}\n\nfunction sortEntries(\n entries: readonly FallbackEntry[],\n fields: readonly ObjectQuerySortField[]\n): FallbackEntry[] {\n return [...entries].sort((left, right) => {\n for (const field of fields) {\n const comparison = compareSortField(left, right, field)\n if (comparison !== 0) return comparison\n }\n // Preserve storage order for true ties, then use identity as a deterministic\n // final fallback so tests and page tokens stay stable.\n return (\n left.order - right.order || rowIdentityKey(left.row).localeCompare(rowIdentityKey(right.row))\n )\n })\n}\n\nfunction compareSortField(\n left: FallbackEntry,\n right: FallbackEntry,\n field: ObjectQuerySortField\n): number {\n if (field.kind === \"relevance\") return 0\n\n const leftValue = left.row.properties[field.propertyId]\n const rightValue = right.row.properties[field.propertyId]\n const leftMissing = leftValue === undefined || leftValue === null\n const rightMissing = rightValue === undefined || rightValue === null\n if (leftMissing && rightMissing) return 0\n if (leftMissing) return 1\n if (rightMissing) return -1\n\n const comparison = compareQueryScalarValues(leftValue, rightValue, field.scalarKind)\n if (Number.isNaN(comparison)) return 0\n return field.direction === \"desc\" ? -comparison : comparison\n}\n\nfunction projectRow(row: ObjectRow, properties: readonly string[]): ObjectRow {\n const projected: Record<string, unknown> = {}\n for (const propertyId of properties) {\n if (Object.hasOwn(row.properties, propertyId)) {\n projected[propertyId] = row.properties[propertyId]\n }\n }\n return { ...row, properties: projected }\n}\n\nfunction stripOuterRowShape(query: ObjectQuery): ObjectQuery {\n switch (query.kind) {\n case \"limit\":\n case \"page\":\n case \"project\":\n case \"sort\":\n // `expand` is output-shaping: it attaches links but does not change which\n // objects match, so aggregates (count/exists/facets) ignore it.\n case \"expand\":\n return stripOuterRowShape(query.input)\n default:\n return query\n }\n}\n\nfunction validateFacetRequests(\n facets: readonly ObjectFacetRequest[],\n objectTypeIds: readonly string[],\n options: QueryExecutorOptions\n): ObjectFacetRequest[] {\n const issues: ObjectQueryValidationIssue[] = []\n const maxLimit = options.maxFacetLimit ?? DEFAULT_MAX_FACET_LIMIT\n\n if (facets.length === 0) {\n addFacetIssue(issues, \"$.facets\", \"empty_facets\", \"At least one facet is required\")\n }\n\n if (!Number.isInteger(maxLimit) || maxLimit <= 0) {\n addFacetIssue(\n issues,\n \"$.maxFacetLimit\",\n \"invalid_facet_bound\",\n \"maxFacetLimit must be positive\"\n )\n }\n\n const seenPropertyIds = new Set<string>()\n const normalizedFacets: ObjectFacetRequest[] = []\n\n facets.forEach((facet, index) => {\n const path = `$.facets[${index}]`\n const propertyId = typeof facet.propertyId === \"string\" ? facet.propertyId.trim() : \"\"\n\n if (!propertyId) {\n addFacetIssue(\n issues,\n `${path}.propertyId`,\n \"missing_facet_property\",\n \"Facet propertyId is required\"\n )\n } else if (seenPropertyIds.has(propertyId)) {\n addFacetIssue(\n issues,\n `${path}.propertyId`,\n \"duplicate_facet\",\n `Facet property '${propertyId}' is requested more than once`\n )\n } else {\n seenPropertyIds.add(propertyId)\n }\n\n if (!Number.isInteger(facet.limit) || facet.limit <= 0) {\n addFacetIssue(\n issues,\n `${path}.limit`,\n \"invalid_facet_limit\",\n \"Facet limit must be a positive integer\"\n )\n } else if (facet.limit > maxLimit) {\n addFacetIssue(\n issues,\n `${path}.limit`,\n \"facet_limit_too_large\",\n `Facet limit must be less than or equal to ${maxLimit}`\n )\n }\n\n if (!propertyId) return\n\n for (const objectTypeId of objectTypeIds) {\n const objectType = options.ontology.getObjectTypeById(objectTypeId)\n const property = objectType?.properties.find((candidate) => candidate.id === propertyId)\n\n if (!objectType || !property) {\n addFacetIssue(\n issues,\n `${path}.propertyId`,\n \"unknown_facet_property\",\n `Property '${propertyId}' is not defined on '${objectTypeId}'`\n )\n continue\n }\n\n if (property.query?.searchable !== true || property.query.facet !== true) {\n addFacetIssue(\n issues,\n `${path}.propertyId`,\n \"property_not_facetable\",\n `Property '${propertyId}' on '${objectTypeId}' must set query.searchable: true and query.facet: true before it can be used as a facet`\n )\n }\n }\n\n normalizedFacets.push({ propertyId, limit: facet.limit })\n })\n\n if (issues.length > 0) {\n throw new ObjectQueryValidationError(issues)\n }\n\n return normalizedFacets\n}\n\nfunction addFacetIssue(\n issues: ObjectQueryValidationIssue[],\n path: string,\n code: string,\n message: string\n): void {\n issues.push({ path, code, message })\n}\n\nfunction buildFacetResults(\n rows: readonly ObjectRow[],\n facets: readonly ObjectFacetRequest[]\n): ObjectFacetResult[] {\n return facets.map((facet) => ({\n propertyId: facet.propertyId,\n buckets: buildFacetBuckets(rows, facet),\n }))\n}\n\nfunction buildFacetBuckets(\n rows: readonly ObjectRow[],\n facet: ObjectFacetRequest\n): ObjectFacetResult[\"buckets\"] {\n const buckets = new Map<string, { value: unknown; count: number }>()\n\n for (const row of rows) {\n if (!Object.hasOwn(row.properties, facet.propertyId)) continue\n const value = row.properties[facet.propertyId]\n if (value === undefined) continue\n const key = facetValueKey(value)\n const existing = buckets.get(key)\n if (existing) {\n existing.count += 1\n } else {\n buckets.set(key, { value, count: 1 })\n }\n }\n\n return [...buckets.values()]\n .sort(\n (left, right) =>\n right.count - left.count ||\n facetValueSortKey(left.value).localeCompare(facetValueSortKey(right.value))\n )\n .slice(0, facet.limit)\n}\n\nfunction facetValueKey(value: unknown): string {\n return JSON.stringify(value) ?? String(value)\n}\n\nfunction facetValueSortKey(value: unknown): string {\n return JSON.stringify(value) ?? String(value)\n}\n\nfunction rowIdentityKey(row: ObjectRow): string {\n return `${row.objectTypeId}:${row.primaryId}`\n}\n\nfunction encodePageOffset(offset: number): string {\n return `${PAGE_TOKEN_PREFIX}${offset}`\n}\n\nfunction decodePageOffset(token: string | undefined): number {\n if (!token) return 0\n if (!token.startsWith(PAGE_TOKEN_PREFIX)) {\n throw new ObjectQueryExecutionError(\n \"invalid_page_token\",\n \"Fallback page token must use the offset token format\"\n )\n }\n\n const offset = Number(token.slice(PAGE_TOKEN_PREFIX.length))\n if (!Number.isInteger(offset) || offset < 0) {\n throw new ObjectQueryExecutionError(\n \"invalid_page_token\",\n \"Fallback page token contains an invalid offset\"\n )\n }\n return offset\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n",
8
+ "import type { OntologyRegistry } from \"../../ontology\"\nimport type {\n ObjectExpansion,\n ObjectQuery,\n ObjectQueryPredicate,\n ObjectQueryResultShape,\n ObjectQuerySortField,\n} from \"./ir\"\nimport { normalizeObjectQuery } from \"./normalize\"\nimport {\n collectObjectQueryValidationIssues,\n type ObjectQueryValidationIssue,\n validateObjectQuery,\n} from \"./validate\"\n\nexport interface ObjectQueryExplainOptions {\n ontology?: OntologyRegistry\n normalize?: boolean\n maxLimit?: number\n maxPageSize?: number\n}\n\nexport interface ObjectQueryExplanation {\n query: ObjectQuery\n normalizedQuery: ObjectQuery\n valid?: boolean\n result?: ObjectQueryResultShape\n issues: readonly ObjectQueryValidationIssue[]\n tree: ObjectQueryExplainNode\n}\n\nexport interface ObjectQueryExplainNode {\n path: string\n kind: ObjectQuery[\"kind\"]\n summary: string\n details: Record<string, unknown>\n children: readonly ObjectQueryExplainNode[]\n}\n\nexport function explainObjectQuery(\n query: ObjectQuery,\n options: ObjectQueryExplainOptions = {}\n): ObjectQueryExplanation {\n const normalizedQuery = options.normalize === false ? query : normalizeObjectQuery(query)\n const issues = options.ontology\n ? collectObjectQueryValidationIssues(normalizedQuery, {\n ontology: options.ontology,\n maxLimit: options.maxLimit,\n maxPageSize: options.maxPageSize,\n normalize: false,\n })\n : []\n\n const result =\n options.ontology && issues.length === 0\n ? validateObjectQuery(normalizedQuery, {\n ontology: options.ontology,\n maxLimit: options.maxLimit,\n maxPageSize: options.maxPageSize,\n normalize: false,\n }).result\n : undefined\n\n return {\n query,\n normalizedQuery,\n valid: options.ontology ? issues.length === 0 : undefined,\n result,\n issues,\n tree: buildExplainNode(normalizedQuery, \"$\"),\n }\n}\n\nfunction buildExplainNode(query: ObjectQuery, path: string): ObjectQueryExplainNode {\n switch (query.kind) {\n case \"start\":\n return {\n path,\n kind: query.kind,\n summary: `start ${query.objectTypeId}`,\n details: {\n objectTypeId: query.objectTypeId,\n includeSubtypes: query.includeSubtypes === true,\n },\n children: [],\n }\n case \"filter\":\n return {\n path,\n kind: query.kind,\n summary: `filter ${summarizePredicate(query.predicate)}`,\n details: { predicate: query.predicate },\n children: [buildExplainNode(query.input, `${path}.input`)],\n }\n case \"text\":\n return {\n path,\n kind: query.kind,\n summary: `text \"${query.query}\"`,\n details: {\n query: query.query,\n fields: query.fields,\n fieldsByObjectType: query.fieldsByObjectType,\n },\n children: [buildExplainNode(query.input, `${path}.input`)],\n }\n case \"vector\":\n return {\n path,\n kind: query.kind,\n summary: `vector ${query.propertyId} k=${query.k}`,\n details: { propertyId: query.propertyId, dimensions: query.vector.length, k: query.k },\n children: [buildExplainNode(query.input, `${path}.input`)],\n }\n case \"traverse\":\n return {\n path,\n kind: query.kind,\n summary:\n query.sourceObjectTypeId === undefined\n ? `traverse ${query.direction} ${query.linkId}`\n : `traverse ${query.direction} ${query.sourceObjectTypeId}.${query.linkId}`,\n details: {\n linkId: query.linkId,\n direction: query.direction,\n ...(query.sourceObjectTypeId === undefined\n ? {}\n : { sourceObjectTypeId: query.sourceObjectTypeId }),\n },\n children: [buildExplainNode(query.input, `${path}.input`)],\n }\n case \"set\":\n return {\n path,\n kind: query.kind,\n summary: `set ${query.op}`,\n details: { op: query.op, inputCount: query.inputs.length },\n children: query.inputs.map((input, index) =>\n buildExplainNode(input, `${path}.inputs[${index}]`)\n ),\n }\n case \"sort\":\n return {\n path,\n kind: query.kind,\n summary: `sort ${query.fields.map(summarizeSortField).join(\", \")}`,\n details: { fields: query.fields },\n children: [buildExplainNode(query.input, `${path}.input`)],\n }\n case \"limit\":\n return {\n path,\n kind: query.kind,\n summary: `limit ${query.limit}`,\n details: { limit: query.limit },\n children: [buildExplainNode(query.input, `${path}.input`)],\n }\n case \"page\":\n return {\n path,\n kind: query.kind,\n summary: `page ${query.pageSize}`,\n details: { pageSize: query.pageSize, hasPageToken: query.pageToken !== undefined },\n children: [buildExplainNode(query.input, `${path}.input`)],\n }\n case \"project\":\n return {\n path,\n kind: query.kind,\n summary: `project ${query.properties?.join(\", \") ?? \"*\"}`,\n details: { properties: query.properties },\n children: [buildExplainNode(query.input, `${path}.input`)],\n }\n case \"expand\":\n return {\n path,\n kind: query.kind,\n summary: `expand ${query.expansions.map(summarizeExpansion).join(\", \")}`,\n details: { expansions: query.expansions },\n children: [buildExplainNode(query.input, `${path}.input`)],\n }\n }\n}\n\nfunction summarizeExpansion(expansion: ObjectExpansion): string {\n const head = expansion.direction === \"incoming\" ? `<-${expansion.linkId}` : expansion.linkId\n const nested =\n expansion.expand && expansion.expand.length > 0\n ? `(${expansion.expand.map(summarizeExpansion).join(\", \")})`\n : \"\"\n return `${head}${nested}`\n}\n\nfunction summarizePredicate(predicate: ObjectQueryPredicate): string {\n switch (predicate.op) {\n case \"and\":\n case \"or\":\n return `${predicate.op}(${predicate.items.map(summarizePredicate).join(\", \")})`\n case \"not\":\n return `not(${summarizePredicate(predicate.item)})`\n case \"in\":\n return `${predicate.propertyId} in [${predicate.values.length}]`\n case \"exists\":\n return `${predicate.propertyId} exists=${predicate.value}`\n case \"contains\":\n return `${predicate.propertyId} contains`\n default:\n return `${predicate.propertyId} ${predicate.op}`\n }\n}\n\nfunction summarizeSortField(field: ObjectQuerySortField): string {\n if (field.kind === \"relevance\") return `relevance ${field.direction ?? \"desc\"}`\n return `${field.propertyId} ${field.direction ?? \"asc\"}`\n}\n"
9
+ ],
10
+ "mappings": "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",
11
+ "debugId": "1EDFA79E601FFF1364756E2164756E21",
12
+ "names": []
13
+ }