@sixb/core 0.1.21 → 0.1.22
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.
- package/dist/actions/commit-edits.d.ts +3 -1
- package/dist/actions/commit-edits.d.ts.map +1 -1
- package/dist/actions/execution.d.ts.map +1 -1
- package/dist/actions/index.js +63 -59
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/read-facade.d.ts +9 -1
- package/dist/actions/read-facade.d.ts.map +1 -1
- package/dist/actions/request.d.ts +15 -1
- package/dist/actions/request.d.ts.map +1 -1
- package/dist/actions/run/context.d.ts +1 -0
- package/dist/actions/run/context.d.ts.map +1 -1
- package/dist/actions/run/execute.d.ts +2 -3
- package/dist/actions/run/execute.d.ts.map +1 -1
- package/dist/actions/run/executor.d.ts +3 -0
- package/dist/actions/run/executor.d.ts.map +1 -1
- package/dist/actions/run/normalize.d.ts +2 -1
- package/dist/actions/run/normalize.d.ts.map +1 -1
- package/dist/actions/run/signals.d.ts +1 -3
- package/dist/actions/run/signals.d.ts.map +1 -1
- package/dist/actions/run/types.d.ts +16 -1
- package/dist/actions/run/types.d.ts.map +1 -1
- package/dist/actions/run-authorization.d.ts +14 -0
- package/dist/actions/run-authorization.d.ts.map +1 -1
- package/dist/actions/types/context.d.ts +17 -1
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/validators.d.ts.map +1 -1
- package/dist/activity/timeline.d.ts +8 -1
- package/dist/activity/timeline.d.ts.map +1 -1
- package/dist/agents/accounting.d.ts +15 -0
- package/dist/agents/accounting.d.ts.map +1 -0
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/agent-mail.d.ts +9 -0
- package/dist/agents/agent-mail.d.ts.map +1 -0
- package/dist/agents/api-gateway.d.ts +5 -0
- package/dist/agents/api-gateway.d.ts.map +1 -1
- package/dist/agents/approval-continuation.d.ts +23 -0
- package/dist/agents/approval-continuation.d.ts.map +1 -0
- package/dist/agents/approval-executor.d.ts +56 -0
- package/dist/agents/approval-executor.d.ts.map +1 -0
- package/dist/agents/approval-outcome.d.ts +8 -0
- package/dist/agents/approval-outcome.d.ts.map +1 -0
- package/dist/agents/approvals.d.ts +210 -0
- package/dist/agents/approvals.d.ts.map +1 -0
- package/dist/agents/authority.d.ts +10 -0
- package/dist/agents/authority.d.ts.map +1 -1
- package/dist/agents/builders.d.ts.map +1 -1
- package/dist/agents/cancel.d.ts +23 -0
- package/dist/agents/cancel.d.ts.map +1 -0
- package/dist/agents/child-question.d.ts +18 -0
- package/dist/agents/child-question.d.ts.map +1 -0
- package/dist/agents/children.d.ts +99 -0
- package/dist/agents/children.d.ts.map +1 -0
- package/dist/agents/context/index.js +1 -1
- package/dist/agents/context-compaction.d.ts.map +1 -1
- package/dist/agents/errors.d.ts +13 -1
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/execution.d.ts +180 -14
- package/dist/agents/execution.d.ts.map +1 -1
- package/dist/agents/fork.d.ts +16 -0
- package/dist/agents/fork.d.ts.map +1 -0
- package/dist/agents/ids.d.ts +7 -0
- package/dist/agents/ids.d.ts.map +1 -1
- package/dist/agents/index.d.ts +19 -8
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +159 -86
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/memory-execution.d.ts +57 -0
- package/dist/agents/memory-execution.d.ts.map +1 -0
- package/dist/agents/memory.d.ts +49 -0
- package/dist/agents/memory.d.ts.map +1 -0
- package/dist/agents/message.d.ts +50 -1
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/model-loop.d.ts +19 -0
- package/dist/agents/model-loop.d.ts.map +1 -1
- package/dist/agents/model-routing.d.ts +19 -0
- package/dist/agents/model-routing.d.ts.map +1 -0
- package/dist/agents/participants.d.ts +18 -0
- package/dist/agents/participants.d.ts.map +1 -0
- package/dist/agents/reference.d.ts.map +1 -1
- package/dist/agents/request.d.ts +36 -2
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/run-scope.d.ts +51 -0
- package/dist/agents/run-scope.d.ts.map +1 -0
- package/dist/agents/streams/index.d.ts +3 -2
- package/dist/agents/streams/index.d.ts.map +1 -1
- package/dist/agents/streams/index.js +7 -3
- package/dist/agents/streams/index.js.map +1 -1
- package/dist/agents/streams/internal.d.ts +1 -1
- package/dist/agents/streams/internal.d.ts.map +1 -1
- package/dist/agents/streams/internal.js +5 -3
- package/dist/agents/streams/internal.js.map +1 -1
- package/dist/agents/streams/protocol.d.ts +122 -3
- package/dist/agents/streams/protocol.d.ts.map +1 -1
- package/dist/agents/subagent-runs.d.ts +12 -0
- package/dist/agents/subagent-runs.d.ts.map +1 -0
- package/dist/agents/thread-access.d.ts +53 -0
- package/dist/agents/thread-access.d.ts.map +1 -0
- package/dist/agents/tool-definition.d.ts +5 -4
- package/dist/agents/tool-definition.d.ts.map +1 -1
- package/dist/agents/types.d.ts +23 -4
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/validation.d.ts +1 -1
- package/dist/agents/validation.d.ts.map +1 -1
- package/dist/artifacts/access.d.ts +52 -0
- package/dist/artifacts/access.d.ts.map +1 -0
- package/dist/artifacts/canvas.d.ts +92 -0
- package/dist/artifacts/canvas.d.ts.map +1 -0
- package/dist/artifacts/csv.d.ts +5 -0
- package/dist/artifacts/csv.d.ts.map +1 -1
- package/dist/artifacts/errors.d.ts +7 -2
- package/dist/artifacts/errors.d.ts.map +1 -1
- package/dist/artifacts/execution.d.ts +102 -7
- package/dist/artifacts/execution.d.ts.map +1 -1
- package/dist/artifacts/formula/check.d.ts +24 -0
- package/dist/artifacts/formula/check.d.ts.map +1 -0
- package/dist/artifacts/formula/evaluate.d.ts +32 -0
- package/dist/artifacts/formula/evaluate.d.ts.map +1 -0
- package/dist/artifacts/formula/index.d.ts +38 -0
- package/dist/artifacts/formula/index.d.ts.map +1 -0
- package/dist/artifacts/formula/parser.d.ts +67 -0
- package/dist/artifacts/formula/parser.d.ts.map +1 -0
- package/dist/artifacts/frames/assets.d.ts +11 -9
- package/dist/artifacts/frames/assets.d.ts.map +1 -1
- package/dist/artifacts/frames/entries.d.ts +19 -0
- package/dist/artifacts/frames/entries.d.ts.map +1 -0
- package/dist/artifacts/frames/grants.d.ts +6 -6
- package/dist/artifacts/frames/grants.d.ts.map +1 -1
- package/dist/artifacts/frames/index.d.ts +4 -2
- package/dist/artifacts/frames/index.d.ts.map +1 -1
- package/dist/artifacts/frames/index.js +444 -51
- package/dist/artifacts/frames/index.js.map +10 -8
- package/dist/artifacts/frames/kit.d.ts +10 -5
- package/dist/artifacts/frames/kit.d.ts.map +1 -1
- package/dist/artifacts/frames/probe.d.ts +16 -12
- package/dist/artifacts/frames/probe.d.ts.map +1 -1
- package/dist/artifacts/frames/protocol.d.ts +79 -10
- package/dist/artifacts/frames/protocol.d.ts.map +1 -1
- package/dist/artifacts/frames/runtime.d.ts +27 -9
- package/dist/artifacts/frames/runtime.d.ts.map +1 -1
- package/dist/artifacts/index.d.ts +11 -5
- package/dist/artifacts/index.d.ts.map +1 -1
- package/dist/artifacts/index.js +128 -6
- package/dist/artifacts/index.js.map +3 -3
- package/dist/artifacts/kinds.d.ts +1 -1
- package/dist/artifacts/kinds.d.ts.map +1 -1
- package/dist/artifacts/limits.d.ts +30 -0
- package/dist/artifacts/limits.d.ts.map +1 -1
- package/dist/artifacts/live-sheet.d.ts +65 -0
- package/dist/artifacts/live-sheet.d.ts.map +1 -0
- package/dist/artifacts/outline.d.ts +27 -1
- package/dist/artifacts/outline.d.ts.map +1 -1
- package/dist/artifacts/publish/index.d.ts +2 -0
- package/dist/artifacts/publish/index.d.ts.map +1 -1
- package/dist/artifacts/publish/index.js +59 -19
- package/dist/artifacts/publish/index.js.map +1 -1
- package/dist/artifacts/publish/publish.d.ts +43 -11
- package/dist/artifacts/publish/publish.d.ts.map +1 -1
- package/dist/artifacts/publish/queries.d.ts +33 -0
- package/dist/artifacts/publish/queries.d.ts.map +1 -0
- package/dist/artifacts/publish/references.d.ts +6 -3
- package/dist/artifacts/publish/references.d.ts.map +1 -1
- package/dist/artifacts/publish/validate/canvas.d.ts +18 -0
- package/dist/artifacts/publish/validate/canvas.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/html.d.ts +20 -0
- package/dist/artifacts/publish/validate/html.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/page.d.ts +15 -0
- package/dist/artifacts/publish/validate/page.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/sheet.d.ts +11 -3
- package/dist/artifacts/publish/validate/sheet.d.ts.map +1 -1
- package/dist/artifacts/publish/validate/slides.d.ts +1 -7
- package/dist/artifacts/publish/validate/slides.d.ts.map +1 -1
- package/dist/artifacts/queries.d.ts +95 -0
- package/dist/artifacts/queries.d.ts.map +1 -0
- package/dist/artifacts/resolve.d.ts +6 -0
- package/dist/artifacts/resolve.d.ts.map +1 -1
- package/dist/artifacts/run-query.d.ts +26 -0
- package/dist/artifacts/run-query.d.ts.map +1 -0
- package/dist/artifacts/serialize-query.d.ts +12 -0
- package/dist/artifacts/serialize-query.d.ts.map +1 -0
- package/dist/artifacts/sheet-rules.d.ts +26 -0
- package/dist/artifacts/sheet-rules.d.ts.map +1 -0
- package/dist/artifacts/tones.d.ts +8 -0
- package/dist/artifacts/tones.d.ts.map +1 -0
- package/dist/artifacts/workbook.d.ts +76 -5
- package/dist/artifacts/workbook.d.ts.map +1 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +14 -11
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/member-events.d.ts +13 -0
- package/dist/auth/member-events.d.ts.map +1 -0
- package/dist/auth/profile.d.ts +11 -0
- package/dist/auth/profile.d.ts.map +1 -0
- package/dist/auth/runtime.d.ts +31 -3
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/auth/strategy.d.ts +3 -1
- package/dist/auth/strategy.d.ts.map +1 -1
- package/dist/auth/strategy.js +7 -3
- package/dist/auth/strategy.js.map +1 -1
- package/dist/auth/types.d.ts +30 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/authorization/decision.d.ts +15 -0
- package/dist/authorization/decision.d.ts.map +1 -1
- package/dist/authorization/event-visibility.d.ts +5 -1
- package/dist/authorization/event-visibility.d.ts.map +1 -1
- package/dist/authorization/grant-kinds.d.ts +2 -2
- package/dist/authorization/grant-kinds.d.ts.map +1 -1
- package/dist/authorization/index.d.ts +2 -2
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +12 -7
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/resolve.d.ts +19 -1
- package/dist/authorization/resolve.d.ts.map +1 -1
- package/dist/authorization/run-visibility.d.ts +8 -1
- package/dist/authorization/run-visibility.d.ts.map +1 -1
- package/dist/authorization/types.d.ts +14 -0
- package/dist/authorization/types.d.ts.map +1 -1
- package/dist/bootstrap/index.js +69 -65
- package/dist/bootstrap/index.js.map +2 -2
- package/dist/{chunk-ky3j490c.js → chunk-02bzjgnt.js} +6 -6
- package/dist/{chunk-ky3j490c.js.map → chunk-02bzjgnt.js.map} +1 -1
- package/dist/{chunk-mfs23znk.js → chunk-07kkp2e1.js} +1 -1
- package/dist/{chunk-c1rxbz5y.js → chunk-098anw4f.js} +21 -19
- package/dist/chunk-098anw4f.js.map +12 -0
- package/dist/{chunk-z58tm0hm.js → chunk-0phpbbvm.js} +3 -3
- package/dist/{chunk-ere85b8y.js → chunk-0xmt5p5y.js} +116 -27
- package/dist/chunk-0xmt5p5y.js.map +14 -0
- package/dist/{chunk-t6f3tdnr.js → chunk-16a9dmfy.js} +33 -2
- package/dist/{chunk-t6f3tdnr.js.map → chunk-16a9dmfy.js.map} +5 -4
- package/dist/chunk-18sk89cg.js +47 -0
- package/dist/chunk-18sk89cg.js.map +10 -0
- package/dist/{chunk-e17zdm62.js → chunk-1t6k1avb.js} +1 -1
- package/dist/chunk-2626mh4m.js +693 -0
- package/dist/chunk-2626mh4m.js.map +19 -0
- package/dist/{chunk-qczk96d9.js → chunk-2adz0h75.js} +13 -4
- package/dist/chunk-2adz0h75.js.map +11 -0
- package/dist/{chunk-kge7k6ey.js → chunk-2fn60nvs.js} +2 -2
- package/dist/{chunk-99nd4rc1.js → chunk-2gjj5dx3.js} +5 -4
- package/dist/{chunk-99nd4rc1.js.map → chunk-2gjj5dx3.js.map} +3 -3
- package/dist/{chunk-mjddfa7k.js → chunk-3fqxbn31.js} +2 -24
- package/dist/{chunk-mjddfa7k.js.map → chunk-3fqxbn31.js.map} +3 -4
- package/dist/{chunk-y0c4e6ex.js → chunk-3gbefjg5.js} +1 -1
- package/dist/{chunk-5hx48dnn.js → chunk-45ngkxkp.js} +52 -31
- package/dist/chunk-45ngkxkp.js.map +13 -0
- package/dist/{chunk-cy4mbddw.js → chunk-48jezz3j.js} +1 -1
- package/dist/{chunk-561r0yc9.js → chunk-4b26qwbg.js} +13 -13
- package/dist/{chunk-561r0yc9.js.map → chunk-4b26qwbg.js.map} +1 -1
- package/dist/{chunk-9k93ah50.js → chunk-4f3ydv7t.js} +33 -69
- package/dist/chunk-4f3ydv7t.js.map +10 -0
- package/dist/chunk-4y26vs3v.js +97 -0
- package/dist/chunk-4y26vs3v.js.map +10 -0
- package/dist/{chunk-4as3wt1c.js → chunk-4ymrcdbm.js} +7 -3
- package/dist/chunk-4ymrcdbm.js.map +12 -0
- package/dist/{chunk-hcbyfxbe.js → chunk-5grk14e5.js} +76 -2
- package/dist/{chunk-hcbyfxbe.js.map → chunk-5grk14e5.js.map} +4 -3
- package/dist/{chunk-8frc8a4j.js → chunk-65pyhyas.js} +90 -83
- package/dist/chunk-65pyhyas.js.map +20 -0
- package/dist/{chunk-hwksyjks.js → chunk-661ezhks.js} +182 -6
- package/dist/chunk-661ezhks.js.map +11 -0
- package/dist/{chunk-447a5c0p.js → chunk-6n69k945.js} +2 -2
- package/dist/{chunk-0bphap9y.js → chunk-6p0pastb.js} +5 -5
- package/dist/{chunk-9j4jw7as.js → chunk-6rrtzea3.js} +18 -5
- package/dist/chunk-6rrtzea3.js.map +14 -0
- package/dist/{chunk-431pyp2c.js → chunk-6y0mkhex.js} +2 -2
- package/dist/{chunk-f4pamkt9.js → chunk-73v685wb.js} +10 -10
- package/dist/{chunk-f4pamkt9.js.map → chunk-73v685wb.js.map} +3 -3
- package/dist/{chunk-akzryx9h.js → chunk-7gr4j2eq.js} +7836 -5047
- package/dist/chunk-7gr4j2eq.js.map +120 -0
- package/dist/{chunk-bk9svbcq.js → chunk-7mc2wkre.js} +386 -86
- package/dist/chunk-7mc2wkre.js.map +50 -0
- package/dist/{chunk-6rqgmkde.js → chunk-7z5p905k.js} +335 -703
- package/dist/chunk-7z5p905k.js.map +22 -0
- package/dist/{chunk-yxd3nnqt.js → chunk-9mab3dvg.js} +26 -2
- package/dist/chunk-9mab3dvg.js.map +11 -0
- package/dist/chunk-9wr3yajk.js +42 -0
- package/dist/chunk-9wr3yajk.js.map +10 -0
- package/dist/chunk-az47zep4.js +41 -0
- package/dist/chunk-az47zep4.js.map +10 -0
- package/dist/{chunk-s7jg7pmn.js → chunk-bab05bhg.js} +1 -1
- package/dist/{chunk-858emn8m.js → chunk-bktev1ds.js} +14 -11
- package/dist/{chunk-858emn8m.js.map → chunk-bktev1ds.js.map} +3 -3
- package/dist/{chunk-dhcv7yxc.js → chunk-c0vk1djt.js} +5 -3
- package/dist/chunk-c0vk1djt.js.map +11 -0
- package/dist/chunk-c69nj7se.js +3 -0
- package/dist/{chunk-7n30ybym.js.map → chunk-c69nj7se.js.map} +1 -1
- package/dist/{chunk-q5e5tv4b.js → chunk-c844dkwd.js} +1 -1
- package/dist/{chunk-g257jwnc.js → chunk-cdk3egjj.js} +17 -4
- package/dist/chunk-cdk3egjj.js.map +12 -0
- package/dist/chunk-cswhawa2.js +113 -0
- package/dist/chunk-cswhawa2.js.map +10 -0
- package/dist/{chunk-cfj9dfbb.js → chunk-d2m879s4.js} +2 -2
- package/dist/{chunk-arns890k.js → chunk-d7vyc7k6.js} +2 -2
- package/dist/chunk-d7vyc7k6.js.map +10 -0
- package/dist/{chunk-q7gn29y3.js → chunk-dp0cdtj2.js} +2 -2
- package/dist/{chunk-6x0pqh32.js → chunk-e5wf5vz0.js} +3 -1
- package/dist/chunk-e5wf5vz0.js.map +10 -0
- package/dist/{chunk-cn0fwwhy.js → chunk-efmm01gj.js} +108 -1045
- package/dist/chunk-efmm01gj.js.map +18 -0
- package/dist/{chunk-918wwnaa.js → chunk-ezne9wc9.js} +1224 -430
- package/dist/chunk-ezne9wc9.js.map +71 -0
- package/dist/{chunk-tbc1ngpd.js → chunk-fe8zwt8b.js} +58 -12
- package/dist/{chunk-tbc1ngpd.js.map → chunk-fe8zwt8b.js.map} +5 -4
- package/dist/{chunk-br3k6qbf.js → chunk-fm62y49k.js} +1 -1
- package/dist/{chunk-nq6gpjt7.js → chunk-fntqb7qy.js} +30 -4
- package/dist/{chunk-nq6gpjt7.js.map → chunk-fntqb7qy.js.map} +5 -5
- package/dist/{chunk-1cc1xaf3.js → chunk-fp2kq35z.js} +26 -10
- package/dist/{chunk-1cc1xaf3.js.map → chunk-fp2kq35z.js.map} +5 -5
- package/dist/{chunk-vvxtn22d.js → chunk-g663fahq.js} +2 -2
- package/dist/{chunk-k43ct2ke.js → chunk-gvj5cd3b.js} +16 -9
- package/dist/chunk-gvj5cd3b.js.map +12 -0
- package/dist/{chunk-rmakanzx.js → chunk-h33shhq6.js} +5 -5
- package/dist/{chunk-nn5xnx3s.js → chunk-h3pbv7n8.js} +1738 -38
- package/dist/chunk-h3pbv7n8.js.map +48 -0
- package/dist/chunk-hn2r7z41.js.map +1 -1
- package/dist/{chunk-pbcbn83d.js → chunk-hqsp2sx4.js} +54 -8
- package/dist/chunk-hqsp2sx4.js.map +14 -0
- package/dist/{chunk-d09e3rax.js → chunk-hwarjrgf.js} +1 -1
- package/dist/{chunk-vf57cr4t.js → chunk-hyesv9dv.js} +1 -1
- package/dist/chunk-hz5d43gn.js +45 -0
- package/dist/chunk-hz5d43gn.js.map +10 -0
- package/dist/{chunk-91mg3nj9.js → chunk-j936th07.js} +86 -41
- package/dist/chunk-j936th07.js.map +12 -0
- package/dist/chunk-kcqpk9w1.js +75 -0
- package/dist/chunk-kcqpk9w1.js.map +10 -0
- package/dist/{chunk-5vems3nx.js → chunk-m2nevja0.js} +2 -2
- package/dist/{chunk-x9v4cx1d.js → chunk-m36fw8ft.js} +1 -1
- package/dist/{chunk-a40ad1ft.js → chunk-mbsbxarb.js} +1 -1
- package/dist/chunk-mzx71snp.js +129 -0
- package/dist/chunk-mzx71snp.js.map +10 -0
- package/dist/{chunk-6aawea28.js → chunk-n8q5j6y5.js} +1 -1
- package/dist/{chunk-d7dnxdep.js → chunk-n9zpx9c6.js} +4 -4
- package/dist/{chunk-xvsc5m8n.js → chunk-npcr0228.js} +1 -1
- package/dist/chunk-nydf3dbe.js +663 -0
- package/dist/chunk-nydf3dbe.js.map +13 -0
- package/dist/chunk-pdt5cw8z.js +233 -0
- package/dist/chunk-pdt5cw8z.js.map +11 -0
- package/dist/{chunk-rj69qcrd.js → chunk-pgrf64hp.js} +55 -7
- package/dist/chunk-pgrf64hp.js.map +12 -0
- package/dist/{chunk-y5tah2kf.js → chunk-q4pmvkg0.js} +1 -1
- package/dist/chunk-qhqgp4jf.js +1418 -0
- package/dist/chunk-qhqgp4jf.js.map +22 -0
- package/dist/{chunk-48qjhh6v.js → chunk-qx00vjrj.js} +19 -60
- package/dist/chunk-qx00vjrj.js.map +13 -0
- package/dist/{chunk-5948n82c.js → chunk-r6szek0x.js} +184 -7
- package/dist/chunk-r6szek0x.js.map +10 -0
- package/dist/{chunk-v4jbb3rs.js → chunk-rap5w0x0.js} +156 -2
- package/dist/chunk-rap5w0x0.js.map +10 -0
- package/dist/{chunk-pfp1txq2.js → chunk-sgx82nnt.js} +5 -31
- package/dist/{chunk-pfp1txq2.js.map → chunk-sgx82nnt.js.map} +3 -4
- package/dist/{chunk-bkpke1sg.js → chunk-t5608tkq.js} +3 -1
- package/dist/{chunk-bkpke1sg.js.map → chunk-t5608tkq.js.map} +3 -3
- package/dist/{chunk-29yx306f.js → chunk-tdxfsg1c.js} +507 -265
- package/dist/chunk-tdxfsg1c.js.map +23 -0
- package/dist/{chunk-d5rjr8c0.js → chunk-vabga7fk.js} +1 -1
- package/dist/{chunk-dhdha526.js → chunk-vhbw5sqm.js} +26 -2
- package/dist/chunk-vhbw5sqm.js.map +10 -0
- package/dist/{chunk-e6k4thh5.js → chunk-vpgwq5nf.js} +98 -12
- package/dist/chunk-vpgwq5nf.js.map +21 -0
- package/dist/{chunk-61y5xs4p.js → chunk-vyt322b6.js} +69 -50
- package/dist/{chunk-61y5xs4p.js.map → chunk-vyt322b6.js.map} +4 -4
- package/dist/chunk-waqk73p1.js +2380 -0
- package/dist/chunk-waqk73p1.js.map +23 -0
- package/dist/chunk-wsc1brye.js +27 -0
- package/dist/chunk-wsc1brye.js.map +10 -0
- package/dist/{chunk-96yw3pwd.js → chunk-y7dbmaqh.js} +28 -2
- package/dist/chunk-y7dbmaqh.js.map +10 -0
- package/dist/{chunk-6vb4st8k.js → chunk-yc9ners4.js} +120 -19
- package/dist/{chunk-6vb4st8k.js.map → chunk-yc9ners4.js.map} +8 -8
- package/dist/{chunk-dvd2fp9q.js → chunk-zbc929zg.js} +28 -4
- package/dist/chunk-zbc929zg.js.map +13 -0
- package/dist/chunk-zrvhsq7f.js +37 -0
- package/dist/chunk-zrvhsq7f.js.map +10 -0
- package/dist/datasets/write.js +5 -5
- package/dist/error-reporting/internal.js +3 -3
- package/dist/errors/catalog.d.ts +26 -0
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/internal.d.ts.map +1 -1
- package/dist/errors/internal.js +1 -1
- package/dist/events/definitions.d.ts +7 -0
- package/dist/events/definitions.d.ts.map +1 -1
- package/dist/events/execution.d.ts.map +1 -1
- package/dist/events/index.d.ts +2 -3
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +8 -10
- package/dist/events/index.js.map +1 -1
- package/dist/events/scope.d.ts.map +1 -1
- package/dist/events/scope.js +1 -1
- package/dist/events/selectors/builder.d.ts +12 -1
- package/dist/events/selectors/builder.d.ts.map +1 -1
- package/dist/events/selectors/index.d.ts +2 -2
- package/dist/events/selectors/index.d.ts.map +1 -1
- package/dist/events/selectors/index.js +2 -2
- package/dist/events/selectors/types.d.ts +19 -3
- package/dist/events/selectors/types.d.ts.map +1 -1
- package/dist/events/service.d.ts +17 -2
- package/dist/events/service.d.ts.map +1 -1
- package/dist/events/types/index.d.ts +3 -1
- package/dist/events/types/index.d.ts.map +1 -1
- package/dist/events/types/users.d.ts +63 -0
- package/dist/events/types/users.d.ts.map +1 -0
- package/dist/events/view-conditions.d.ts +34 -0
- package/dist/events/view-conditions.d.ts.map +1 -0
- package/dist/execution/agent.d.ts +15 -0
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +63 -57
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorization.d.ts.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts +51 -2
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- package/dist/execution/lineage.d.ts +7 -0
- package/dist/execution/lineage.d.ts.map +1 -0
- package/dist/execution/object-reader-ontology.d.ts +2 -2
- package/dist/execution/object-reader-ontology.d.ts.map +1 -1
- package/dist/execution/object-reader-security.d.ts +24 -3
- package/dist/execution/object-reader-security.d.ts.map +1 -1
- package/dist/execution/object-reader-users.d.ts +20 -0
- package/dist/execution/object-reader-users.d.ts.map +1 -0
- package/dist/execution/preparation.d.ts +23 -0
- package/dist/execution/preparation.d.ts.map +1 -0
- package/dist/execution/primitive.js +61 -57
- package/dist/execution/primitive.js.map +1 -1
- package/dist/execution/request.d.ts +2 -1
- package/dist/execution/request.d.ts.map +1 -1
- package/dist/execution/request.js +64 -56
- package/dist/execution/request.js.map +3 -3
- package/dist/execution/unique-lookup.d.ts +14 -0
- package/dist/execution/unique-lookup.d.ts.map +1 -0
- package/dist/execution/visible-objects.d.ts +12 -0
- package/dist/execution/visible-objects.d.ts.map +1 -0
- package/dist/http/api-routes.d.ts +17 -0
- package/dist/http/api-routes.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/index.d.ts +32 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +137 -126
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/index.js +5 -5
- package/dist/materialization/errors.d.ts +25 -0
- package/dist/materialization/errors.d.ts.map +1 -1
- package/dist/materialization/event-envelopes.d.ts +5 -0
- package/dist/materialization/event-envelopes.d.ts.map +1 -1
- package/dist/materialization/index.d.ts +1 -1
- package/dist/materialization/index.d.ts.map +1 -1
- package/dist/materialization/index.js +14 -8
- package/dist/materialization/index.js.map +1 -1
- package/dist/materialization/model.d.ts +20 -2
- package/dist/materialization/model.d.ts.map +1 -1
- package/dist/materializer/edits/commit.d.ts.map +1 -1
- package/dist/materializer/edits/load-state.d.ts +5 -1
- package/dist/materializer/edits/load-state.d.ts.map +1 -1
- package/dist/materializer/edits/plan.d.ts.map +1 -1
- package/dist/materializer/edits/unique-values.d.ts +47 -0
- package/dist/materializer/edits/unique-values.d.ts.map +1 -0
- package/dist/materializer/edits/working-state.d.ts +6 -1
- package/dist/materializer/edits/working-state.d.ts.map +1 -1
- package/dist/materializer/execution/work-records.d.ts +7 -1
- package/dist/materializer/execution/work-records.d.ts.map +1 -1
- package/dist/materializer/index.js +45 -41
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
- package/dist/materializer/projections/source-materialization.d.ts +1 -0
- package/dist/materializer/projections/source-materialization.d.ts.map +1 -1
- package/dist/materializer/shared/normalize.d.ts.map +1 -1
- package/dist/materializer/shared/projection-run.d.ts +0 -1
- package/dist/materializer/shared/projection-run.d.ts.map +1 -1
- package/dist/materializer/telemetry/plan.d.ts.map +1 -1
- package/dist/models/audio/catalog.d.ts +13 -1
- package/dist/models/audio/catalog.d.ts.map +1 -1
- package/dist/models/audio/errors.d.ts +6 -1
- package/dist/models/audio/errors.d.ts.map +1 -1
- package/dist/models/audio/runtime.d.ts.map +1 -1
- package/dist/models/audio/speech.d.ts +8 -0
- package/dist/models/audio/speech.d.ts.map +1 -0
- package/dist/models/audio/types.d.ts +93 -0
- package/dist/models/audio/types.d.ts.map +1 -1
- package/dist/models/calls.d.ts +27 -0
- package/dist/models/calls.d.ts.map +1 -0
- package/dist/models/catalog-index.d.ts +7 -4
- package/dist/models/catalog-index.d.ts.map +1 -1
- package/dist/models/catalog.d.ts +55 -3
- package/dist/models/catalog.d.ts.map +1 -1
- package/dist/models/decision/runtime.d.ts +6 -1
- package/dist/models/decision/runtime.d.ts.map +1 -1
- package/dist/models/decision/validation.d.ts +4 -1
- package/dist/models/decision/validation.d.ts.map +1 -1
- package/dist/models/definitions.d.ts +23 -1
- package/dist/models/definitions.d.ts.map +1 -1
- package/dist/models/events.d.ts +12 -1
- package/dist/models/events.d.ts.map +1 -1
- package/dist/models/execution/binding.d.ts +3 -1
- package/dist/models/execution/binding.d.ts.map +1 -1
- package/dist/models/execution/index.d.ts +1 -0
- package/dist/models/execution/index.d.ts.map +1 -1
- package/dist/models/execution/index.js +44 -34
- package/dist/models/execution/index.js.map +1 -1
- package/dist/models/execution/model-call-accounting.d.ts.map +1 -1
- package/dist/models/execution/model-call-recorder.d.ts +3 -0
- package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
- package/dist/models/execution/usage.d.ts.map +1 -1
- package/dist/models/execution.d.ts +4 -2
- package/dist/models/execution.d.ts.map +1 -1
- package/dist/models/generation-types.d.ts +8 -1
- package/dist/models/generation-types.d.ts.map +1 -1
- package/dist/models/image/catalog.d.ts +13 -0
- package/dist/models/image/catalog.d.ts.map +1 -0
- package/dist/models/image/errors.d.ts +8 -0
- package/dist/models/image/errors.d.ts.map +1 -0
- package/dist/models/image/runtime.d.ts +8 -0
- package/dist/models/image/runtime.d.ts.map +1 -0
- package/dist/models/image/types.d.ts +103 -0
- package/dist/models/image/types.d.ts.map +1 -0
- package/dist/models/index.d.ts +12 -8
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +17 -7
- package/dist/models/index.js.map +1 -1
- package/dist/models/input-file.d.ts +9 -0
- package/dist/models/input-file.d.ts.map +1 -0
- package/dist/models/language-model.d.ts +13 -0
- package/dist/models/language-model.d.ts.map +1 -1
- package/dist/models/pricing.d.ts +25 -10
- package/dist/models/pricing.d.ts.map +1 -1
- package/dist/models/rate-card.d.ts +44 -6
- package/dist/models/rate-card.d.ts.map +1 -1
- package/dist/objects/conditional-writes.d.ts +37 -0
- package/dist/objects/conditional-writes.d.ts.map +1 -0
- package/dist/objects/execution.d.ts +2 -0
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.d.ts +1 -0
- package/dist/objects/index.d.ts.map +1 -1
- package/dist/objects/index.js +68 -58
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/link/authorization.d.ts +3 -0
- package/dist/objects/link/authorization.d.ts.map +1 -1
- package/dist/objects/link/endpoints.d.ts +21 -2
- package/dist/objects/link/endpoints.d.ts.map +1 -1
- package/dist/objects/link/remove.d.ts.map +1 -1
- package/dist/objects/link/upsert-batch.d.ts.map +1 -1
- package/dist/objects/link/upsert.d.ts.map +1 -1
- package/dist/objects/materializer-adapter.d.ts +13 -4
- package/dist/objects/materializer-adapter.d.ts.map +1 -1
- package/dist/objects/object/delete.d.ts +3 -0
- package/dist/objects/object/delete.d.ts.map +1 -1
- package/dist/objects/object/upsert-batch.d.ts.map +1 -1
- package/dist/objects/object/upsert.d.ts.map +1 -1
- package/dist/objects/query/current-user.d.ts +17 -0
- package/dist/objects/query/current-user.d.ts.map +1 -0
- package/dist/objects/query/executor.d.ts +14 -0
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.d.ts +2 -2
- package/dist/objects/query/index.d.ts.map +1 -1
- package/dist/objects/query/index.js +49 -44
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/ir.d.ts +19 -1
- package/dist/objects/query/ir.d.ts.map +1 -1
- package/dist/objects/query/matches-predicate.d.ts +9 -0
- package/dist/objects/query/matches-predicate.d.ts.map +1 -0
- package/dist/objects/query/normalize.d.ts.map +1 -1
- package/dist/objects/query/user-expansions.d.ts +27 -0
- package/dist/objects/query/user-expansions.d.ts.map +1 -0
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/runtime-batch.d.ts +3 -1
- package/dist/objects/runtime-batch.d.ts.map +1 -1
- package/dist/objects/sdk/object-set.d.ts.map +1 -1
- package/dist/objects/sdk/query-executor.d.ts +6 -0
- package/dist/objects/sdk/query-executor.d.ts.map +1 -1
- package/dist/objects/serialize.d.ts +39 -0
- package/dist/objects/serialize.d.ts.map +1 -0
- package/dist/objects/unique-violation.d.ts +22 -0
- package/dist/objects/unique-violation.d.ts.map +1 -0
- package/dist/ontology/builders.d.ts +3 -1
- package/dist/ontology/builders.d.ts.map +1 -1
- package/dist/ontology/index.d.ts +2 -2
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +11 -7
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/internal.js +7 -5
- package/dist/ontology/internal.js.map +3 -3
- package/dist/ontology/json-schema.d.ts.map +1 -1
- package/dist/ontology/primitives.d.ts +3 -0
- package/dist/ontology/primitives.d.ts.map +1 -1
- package/dist/ontology/registry.d.ts +6 -0
- package/dist/ontology/registry.d.ts.map +1 -1
- package/dist/ontology/types.d.ts +9 -0
- package/dist/ontology/types.d.ts.map +1 -1
- package/dist/ontology/unique-values.d.ts +26 -0
- package/dist/ontology/unique-values.d.ts.map +1 -0
- package/dist/ontology/user-ref.d.ts +23 -0
- package/dist/ontology/user-ref.d.ts.map +1 -1
- package/dist/ontology/validation/properties.d.ts.map +1 -1
- package/dist/ontology/validation/schema.d.ts.map +1 -1
- package/dist/pipelines/index.js +43 -40
- package/dist/pipelines/index.js.map +1 -1
- package/dist/projections/internal.js +36 -33
- package/dist/projections/internal.js.map +1 -1
- package/dist/projections/registry.d.ts +4 -0
- package/dist/projections/registry.d.ts.map +1 -1
- package/dist/projections/revision.d.ts +15 -0
- package/dist/projections/revision.d.ts.map +1 -1
- package/dist/projections/run-dispatch.d.ts.map +1 -1
- package/dist/projections/types.d.ts +2 -0
- package/dist/projections/types.d.ts.map +1 -1
- package/dist/query.d.ts +4 -2
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +2 -2
- package/dist/rules/execution.d.ts.map +1 -1
- package/dist/runtime/ai-cost.d.ts +2 -0
- package/dist/runtime/ai-cost.d.ts.map +1 -1
- package/dist/runtime/ai-usage.d.ts +7 -0
- package/dist/runtime/ai-usage.d.ts.map +1 -1
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/internal.js +42 -38
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/sixb.d.ts +2 -0
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +66 -8
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandboxes/index.js +7 -6
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/schedules/builders.d.ts.map +1 -1
- package/dist/schedules/index.js +3 -3
- package/dist/schedules/runtime.d.ts.map +1 -1
- package/dist/schedules/validation.d.ts.map +1 -1
- package/dist/security/grants.d.ts +12 -4
- package/dist/security/grants.d.ts.map +1 -1
- package/dist/security/index.d.ts +1 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/internal.js +1 -1
- package/dist/security/project.d.ts +4 -1
- package/dist/security/project.d.ts.map +1 -1
- package/dist/security/public.js +2 -2
- package/dist/security/registry.d.ts +6 -0
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +47 -9
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/security/view-conditions.d.ts +37 -0
- package/dist/security/view-conditions.d.ts.map +1 -0
- package/dist/shares/execution.d.ts.map +1 -1
- package/dist/shares/internal.js +34 -31
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/action-runs/failure.js +2 -2
- package/dist/storage/action-runs/provider.js +1 -1
- package/dist/storage/action-runs/types.d.ts +1 -1
- package/dist/storage/action-runs/types.d.ts.map +1 -1
- package/dist/storage/agents/errors.d.ts +3 -1
- package/dist/storage/agents/errors.d.ts.map +1 -1
- package/dist/storage/agents/in-memory.d.ts +120 -3
- package/dist/storage/agents/in-memory.d.ts.map +1 -1
- package/dist/storage/agents/index.d.ts +2 -2
- package/dist/storage/agents/index.d.ts.map +1 -1
- package/dist/storage/agents/provider.d.ts +154 -4
- package/dist/storage/agents/provider.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +60 -5
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +565 -13
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/analytics.d.ts +10 -1
- package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
- package/dist/storage/ai-cost/groups.d.ts +9 -0
- package/dist/storage/ai-cost/groups.d.ts.map +1 -1
- package/dist/storage/ai-cost/index.d.ts +1 -1
- package/dist/storage/ai-cost/index.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.d.ts +2 -1
- package/dist/storage/ai-cost/provider.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.js +11 -5
- package/dist/storage/ai-cost/provider.js.map +1 -1
- package/dist/storage/ai-cost/types.d.ts +14 -2
- package/dist/storage/ai-cost/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/validation.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +5 -4
- package/dist/storage/ai-limits/enforcement.js.map +1 -1
- package/dist/storage/ai-limits/provider.d.ts +1 -1
- package/dist/storage/ai-limits/provider.d.ts.map +1 -1
- package/dist/storage/ai-limits/provider.js +3 -2
- package/dist/storage/ai-limits/provider.js.map +1 -1
- package/dist/storage/ai-usage/in-memory.d.ts +5 -1
- package/dist/storage/ai-usage/in-memory.d.ts.map +1 -1
- package/dist/storage/ai-usage/index.d.ts +2 -2
- package/dist/storage/ai-usage/index.d.ts.map +1 -1
- package/dist/storage/ai-usage/record.d.ts +5 -1
- package/dist/storage/ai-usage/record.d.ts.map +1 -1
- package/dist/storage/ai-usage/types.d.ts +33 -0
- package/dist/storage/ai-usage/types.d.ts.map +1 -1
- package/dist/storage/ai-usage/usage.d.ts +2 -0
- package/dist/storage/ai-usage/usage.d.ts.map +1 -1
- package/dist/storage/artifacts/errors.d.ts +12 -2
- package/dist/storage/artifacts/errors.d.ts.map +1 -1
- package/dist/storage/artifacts/in-memory.d.ts +23 -2
- package/dist/storage/artifacts/in-memory.d.ts.map +1 -1
- package/dist/storage/artifacts/index.d.ts +2 -2
- package/dist/storage/artifacts/index.d.ts.map +1 -1
- package/dist/storage/artifacts/record.d.ts +19 -2
- package/dist/storage/artifacts/record.d.ts.map +1 -1
- package/dist/storage/artifacts/types.d.ts +87 -8
- package/dist/storage/artifacts/types.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/auth-storage.d.ts +3 -2
- package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/users.d.ts +7 -3
- package/dist/storage/auth/in-memory/users.d.ts.map +1 -1
- package/dist/storage/auth/index.d.ts +1 -1
- package/dist/storage/auth/index.d.ts.map +1 -1
- package/dist/storage/auth/types.d.ts +40 -9
- package/dist/storage/auth/types.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +1 -1
- package/dist/storage/executions/in-memory.d.ts +2 -1
- package/dist/storage/executions/in-memory.d.ts.map +1 -1
- package/dist/storage/executions/index.d.ts +1 -1
- package/dist/storage/executions/index.d.ts.map +1 -1
- package/dist/storage/executions/types.d.ts +15 -0
- package/dist/storage/executions/types.d.ts.map +1 -1
- package/dist/storage/file-upload-sessions/provider.js +15 -12
- package/dist/storage/file-upload-sessions/provider.js.map +1 -1
- package/dist/storage/index.d.ts +13 -11
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +50 -39
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +2 -2
- package/dist/storage/internal.d.ts.map +1 -1
- package/dist/storage/internal.js +19 -8
- package/dist/storage/internal.js.map +1 -1
- package/dist/storage/migrations/migrate-storage.d.ts +4 -1
- package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
- package/dist/storage/migrations/prepare-unique-properties.d.ts +18 -0
- package/dist/storage/migrations/prepare-unique-properties.d.ts.map +1 -0
- package/dist/storage/objects/guard.d.ts +1 -1
- package/dist/storage/objects/guard.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/conditional-reader.d.ts +5 -0
- package/dist/storage/objects/in-memory/conditional-reader.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/read-scope.d.ts +3 -9
- package/dist/storage/objects/in-memory/read-scope.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/read-source.d.ts +10 -1
- package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/scoped-reader.d.ts +14 -0
- package/dist/storage/objects/in-memory/scoped-reader.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/storage.d.ts +36 -1
- package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
- package/dist/storage/objects/index.d.ts +2 -2
- package/dist/storage/objects/index.d.ts.map +1 -1
- package/dist/storage/objects/read-scope.d.ts +9 -1
- package/dist/storage/objects/read-scope.d.ts.map +1 -1
- package/dist/storage/objects/types.d.ts +64 -1
- package/dist/storage/objects/types.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/index.d.ts +2 -0
- package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts +1 -0
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/unique-values.d.ts +32 -0
- package/dist/storage/ontology/in-memory/unique-values.d.ts.map +1 -0
- package/dist/storage/ontology/index.d.ts +4 -1
- package/dist/storage/ontology/index.d.ts.map +1 -1
- package/dist/storage/ontology/materializations.d.ts +34 -1
- package/dist/storage/ontology/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/provider-work.d.ts +15 -2
- package/dist/storage/ontology/provider-work.d.ts.map +1 -1
- package/dist/storage/ontology/provider.d.ts +1 -1
- package/dist/storage/ontology/provider.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +9 -4
- package/dist/storage/ontology/provider.js.map +1 -1
- package/dist/storage/ontology/unique-values.d.ts +54 -0
- package/dist/storage/ontology/unique-values.d.ts.map +1 -0
- package/dist/storage/operation-scope.d.ts +1 -1
- package/dist/storage/operation-scope.d.ts.map +1 -1
- package/dist/storage/operation-scope.js +1 -1
- package/dist/storage/projection-runs/in-memory.d.ts +0 -6
- package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/projection-runs/provider.js +2 -2
- package/dist/storage/share-grants/provider.js +4 -3
- package/dist/storage/share-grants/provider.js.map +1 -1
- package/dist/storage/types.d.ts +2 -2
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +15 -12
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/syncs/index.js +42 -39
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/agent-approval-storage-contract.d.ts +17 -0
- package/dist/testing/agent-approval-storage-contract.d.ts.map +1 -0
- package/dist/testing/agent-memory-storage-contract.d.ts +12 -0
- package/dist/testing/agent-memory-storage-contract.d.ts.map +1 -0
- package/dist/testing/agent-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-limit-storage-contract.d.ts +0 -1
- package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -1
- package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
- package/dist/testing/artifact-storage-contract.d.ts.map +1 -1
- package/dist/testing/auth-storage-contract.d.ts +13 -0
- package/dist/testing/auth-storage-contract.d.ts.map +1 -1
- package/dist/testing/broker-contract.d.ts +5 -0
- package/dist/testing/broker-contract.d.ts.map +1 -1
- package/dist/testing/effective-storage-contract.d.ts.map +1 -1
- package/dist/testing/execution-storage-contract.d.ts.map +1 -1
- package/dist/testing/file-upload-session-storage-contract.d.ts.map +1 -1
- package/dist/testing/index.d.ts +9 -5
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +7938 -3743
- package/dist/testing/index.js.map +29 -25
- package/dist/testing/lake-storage-contract.d.ts.map +1 -1
- package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
- package/dist/testing/object-conditional-read-scope-contract.d.ts +11 -0
- package/dist/testing/object-conditional-read-scope-contract.d.ts.map +1 -0
- package/dist/testing/object-query-contract.d.ts +0 -2
- package/dist/testing/object-query-contract.d.ts.map +1 -1
- package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
- package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
- package/dist/testing/queues-contract.d.ts +5 -0
- package/dist/testing/queues-contract.d.ts.map +1 -1
- package/dist/testing/sandboxes-contract.d.ts.map +1 -1
- package/dist/testing/share-grant-storage-contract.d.ts.map +1 -1
- package/dist/testing/share-session-storage-contract.d.ts.map +1 -1
- package/dist/testing/unique-values-contract.d.ts +21 -0
- package/dist/testing/unique-values-contract.d.ts.map +1 -0
- package/dist/testing/webhook-execution.d.ts +0 -8
- package/dist/testing/webhook-execution.d.ts.map +1 -1
- package/dist/testing/webhook-run-storage-contract.d.ts.map +1 -1
- package/dist/users/execution.d.ts +40 -0
- package/dist/users/execution.d.ts.map +1 -0
- package/dist/users/index.d.ts +3 -0
- package/dist/users/index.d.ts.map +1 -0
- package/dist/webhooks/internal.js +34 -31
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +4 -6
- package/dist/workers/index.js.map +4 -4
- package/dist/workers/queue-worker.d.ts +0 -2
- package/dist/workers/queue-worker.d.ts.map +1 -1
- package/dist/workers/worker.d.ts +0 -2
- package/dist/workers/worker.d.ts.map +1 -1
- package/dist/workflows/builders.d.ts.map +1 -1
- package/dist/workflows/index.js +67 -63
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/request.d.ts +12 -1
- package/dist/workflows/request.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +6 -2
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/validation.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/actions/commit-edits.ts +6 -1
- package/src/actions/execution.ts +42 -15
- package/src/actions/read-facade.ts +33 -0
- package/src/actions/request.ts +224 -71
- package/src/actions/run/context.ts +47 -1
- package/src/actions/run/execute.ts +13 -6
- package/src/actions/run/executor.ts +11 -2
- package/src/actions/run/normalize.ts +12 -2
- package/src/actions/run/phases.ts +2 -0
- package/src/actions/run/run-action.ts +12 -3
- package/src/actions/run/signals.ts +3 -9
- package/src/actions/run/types.ts +17 -1
- package/src/actions/run-authorization.ts +72 -0
- package/src/actions/types/context.ts +20 -3
- package/src/actions/validators.ts +19 -8
- package/src/activity/README.md +5 -2
- package/src/activity/timeline.ts +39 -78
- package/src/agents/accounting.ts +59 -0
- package/src/agents/adapters.ts +10 -0
- package/src/agents/agent-mail.ts +29 -0
- package/src/agents/api-gateway.ts +14 -3
- package/src/agents/approval-continuation.ts +48 -0
- package/src/agents/approval-executor.ts +318 -0
- package/src/agents/approval-outcome.ts +59 -0
- package/src/agents/approvals.ts +566 -0
- package/src/agents/authority.ts +24 -1
- package/src/agents/builders.ts +5 -3
- package/src/agents/cancel.ts +103 -0
- package/src/agents/child-question.ts +46 -0
- package/src/agents/children.ts +404 -0
- package/src/agents/context-compaction.ts +12 -0
- package/src/agents/errors.ts +31 -0
- package/src/agents/execution.ts +788 -90
- package/src/agents/fork.ts +158 -0
- package/src/agents/ids.ts +18 -6
- package/src/agents/index.ts +55 -0
- package/src/agents/memory-execution.ts +186 -0
- package/src/agents/memory.ts +178 -0
- package/src/agents/message.ts +57 -0
- package/src/agents/model-loop.ts +93 -6
- package/src/agents/model-routing.ts +193 -0
- package/src/agents/participants.ts +213 -0
- package/src/agents/reference.ts +2 -0
- package/src/agents/request.ts +398 -69
- package/src/agents/run-scope.ts +134 -0
- package/src/agents/streams/index.ts +5 -0
- package/src/agents/streams/internal.ts +1 -0
- package/src/agents/streams/protocol.ts +385 -7
- package/src/agents/subagent-runs.ts +41 -0
- package/src/agents/thread-access.ts +137 -0
- package/src/agents/tool-definition.ts +5 -3
- package/src/agents/types.ts +35 -10
- package/src/agents/validation.ts +2 -0
- package/src/artifacts/access.ts +125 -0
- package/src/artifacts/canvas.ts +369 -0
- package/src/artifacts/csv.ts +10 -0
- package/src/artifacts/errors.ts +12 -1
- package/src/artifacts/execution.ts +436 -36
- package/src/artifacts/formula/check.ts +171 -0
- package/src/artifacts/formula/evaluate.ts +288 -0
- package/src/artifacts/formula/index.ts +199 -0
- package/src/artifacts/formula/parser.ts +357 -0
- package/src/artifacts/frames/assets.ts +35 -19
- package/src/artifacts/frames/entries.ts +35 -0
- package/src/artifacts/frames/grants.ts +10 -9
- package/src/artifacts/frames/index.ts +8 -2
- package/src/artifacts/frames/kit.ts +191 -14
- package/src/artifacts/frames/probe.ts +66 -18
- package/src/artifacts/frames/protocol.ts +164 -10
- package/src/artifacts/frames/runtime.ts +273 -28
- package/src/artifacts/index.ts +66 -2
- package/src/artifacts/kinds.ts +1 -1
- package/src/artifacts/limits.ts +31 -0
- package/src/artifacts/live-sheet.ts +345 -0
- package/src/artifacts/outline.ts +34 -1
- package/src/artifacts/publish/index.ts +2 -0
- package/src/artifacts/publish/publish.ts +120 -34
- package/src/artifacts/publish/queries.ts +336 -0
- package/src/artifacts/publish/references.ts +18 -13
- package/src/artifacts/publish/validate/canvas.ts +118 -0
- package/src/artifacts/publish/validate/html.ts +78 -0
- package/src/artifacts/publish/validate/page.ts +65 -0
- package/src/artifacts/publish/validate/sheet.ts +115 -69
- package/src/artifacts/publish/validate/slides.ts +11 -63
- package/src/artifacts/queries.ts +512 -0
- package/src/artifacts/resolve.ts +20 -5
- package/src/artifacts/run-query.ts +212 -0
- package/src/artifacts/serialize-query.ts +25 -0
- package/src/artifacts/sheet-rules.ts +180 -0
- package/src/artifacts/tones.ts +20 -0
- package/src/artifacts/workbook.ts +374 -15
- package/src/auth/index.ts +4 -0
- package/src/auth/member-events.ts +114 -0
- package/src/auth/profile.ts +118 -0
- package/src/auth/runtime.ts +190 -9
- package/src/auth/strategy.ts +3 -0
- package/src/auth/types.ts +32 -0
- package/src/authorization/decision.ts +47 -0
- package/src/authorization/event-visibility.ts +17 -16
- package/src/authorization/grant-kinds.ts +32 -0
- package/src/authorization/index.ts +6 -1
- package/src/authorization/resolve.ts +58 -1
- package/src/authorization/run-visibility.ts +8 -1
- package/src/authorization/types.ts +14 -0
- package/src/errors/catalog.ts +26 -1
- package/src/errors/internal.ts +17 -8
- package/src/events/definitions.ts +26 -0
- package/src/events/execution.ts +43 -6
- package/src/events/index.ts +10 -1
- package/src/events/scope.ts +2 -0
- package/src/events/selectors/builder.ts +50 -0
- package/src/events/selectors/index.ts +4 -0
- package/src/events/selectors/types.ts +32 -1
- package/src/events/service.ts +55 -2
- package/src/events/types/index.ts +10 -0
- package/src/events/types/users.ts +73 -0
- package/src/events/view-conditions.ts +241 -0
- package/src/execution/agent.ts +25 -0
- package/src/execution/authorization.ts +70 -0
- package/src/execution/authorized-object-reader.ts +238 -32
- package/src/execution/lineage.ts +14 -0
- package/src/execution/object-reader-ontology.ts +11 -14
- package/src/execution/object-reader-security.ts +134 -10
- package/src/execution/object-reader-users.ts +122 -0
- package/src/execution/preparation.ts +78 -0
- package/src/execution/request.ts +2 -0
- package/src/execution/unique-lookup.ts +55 -0
- package/src/execution/visible-objects.ts +26 -0
- package/src/http/api-routes.ts +206 -7
- package/src/index.ts +99 -2
- package/src/materialization/errors.ts +37 -0
- package/src/materialization/event-envelopes.ts +11 -3
- package/src/materialization/index.ts +1 -0
- package/src/materialization/model.ts +24 -4
- package/src/materializer/README.md +7 -1
- package/src/materializer/edits/commit.ts +56 -12
- package/src/materializer/edits/load-state.ts +15 -7
- package/src/materializer/edits/operations.ts +12 -0
- package/src/materializer/edits/plan.ts +2 -0
- package/src/materializer/edits/unique-values.ts +255 -0
- package/src/materializer/edits/working-state.ts +8 -1
- package/src/materializer/execution/work-records.ts +47 -0
- package/src/materializer/projections/finish-run.ts +0 -1
- package/src/materializer/projections/replace.ts +1 -1
- package/src/materializer/projections/replacement-plan.ts +4 -1
- package/src/materializer/projections/source-materialization.ts +2 -1
- package/src/materializer/shared/normalize.ts +37 -6
- package/src/materializer/shared/projection-run.ts +1 -2
- package/src/materializer/telemetry/append.ts +14 -17
- package/src/materializer/telemetry/plan.ts +2 -0
- package/src/models/audio/catalog.ts +89 -10
- package/src/models/audio/errors.ts +18 -1
- package/src/models/audio/runtime.ts +10 -13
- package/src/models/audio/speech.ts +261 -0
- package/src/models/audio/types.ts +97 -0
- package/src/models/calls.ts +100 -0
- package/src/models/catalog-index.ts +21 -2
- package/src/models/catalog.ts +211 -35
- package/src/models/decision/runtime.ts +21 -22
- package/src/models/decision/validation.ts +4 -1
- package/src/models/definitions.ts +57 -8
- package/src/models/events.ts +72 -1
- package/src/models/execution/README.md +34 -5
- package/src/models/execution/binding.ts +3 -1
- package/src/models/execution/embedding.ts +1 -0
- package/src/models/execution/index.ts +5 -0
- package/src/models/execution/model-call-accounting.ts +3 -1
- package/src/models/execution/model-call-recorder.ts +29 -1
- package/src/models/execution/usage.ts +8 -0
- package/src/models/execution.ts +20 -22
- package/src/models/generation-types.ts +8 -1
- package/src/models/image/catalog.ts +89 -0
- package/src/models/image/errors.ts +19 -0
- package/src/models/image/runtime.ts +335 -0
- package/src/models/image/types.ts +111 -0
- package/src/models/index.ts +38 -4
- package/src/models/{audio/file.ts → input-file.ts} +22 -13
- package/src/models/language-model.ts +13 -0
- package/src/models/pricing.ts +263 -42
- package/src/models/rate-card.ts +161 -12
- package/src/objects/authorized-ontology-view.ts +1 -0
- package/src/objects/conditional-writes.ts +109 -0
- package/src/objects/execution.ts +4 -0
- package/src/objects/index.ts +8 -0
- package/src/objects/link/authorization.ts +12 -3
- package/src/objects/link/endpoints.ts +42 -11
- package/src/objects/link/remove.ts +25 -10
- package/src/objects/link/upsert-batch.ts +2 -0
- package/src/objects/link/upsert.ts +18 -12
- package/src/objects/materializer-adapter.ts +55 -18
- package/src/objects/object/delete.ts +24 -7
- package/src/objects/object/upsert-batch.ts +44 -14
- package/src/objects/object/upsert.ts +23 -5
- package/src/objects/query/current-user.ts +76 -0
- package/src/objects/query/executor.ts +39 -103
- package/src/objects/query/explain.ts +20 -7
- package/src/objects/query/index.ts +2 -0
- package/src/objects/query/ir.ts +20 -0
- package/src/objects/query/links.ts +8 -0
- package/src/objects/query/matches-predicate.ts +108 -0
- package/src/objects/query/normalize.ts +50 -19
- package/src/objects/query/scalar-values.ts +19 -3
- package/src/objects/query/user-expansions.ts +65 -0
- package/src/objects/query/validate.ts +248 -10
- package/src/objects/runtime-batch.ts +8 -2
- package/src/objects/sdk/object-set.ts +12 -1
- package/src/objects/sdk/query-builder.ts +39 -8
- package/src/objects/sdk/query-executor.ts +6 -0
- package/src/objects/serialize.ts +79 -0
- package/src/objects/unique-violation.ts +59 -0
- package/src/objects/vectors/handle.ts +3 -3
- package/src/ontology/builders.ts +3 -0
- package/src/ontology/docs-markdown.ts +1 -0
- package/src/ontology/index.ts +2 -2
- package/src/ontology/json-schema.ts +4 -0
- package/src/ontology/primitives.ts +21 -8
- package/src/ontology/registry.ts +16 -0
- package/src/ontology/types.ts +9 -0
- package/src/ontology/unique-values.ts +84 -0
- package/src/ontology/user-ref.ts +39 -0
- package/src/ontology/validation/properties.ts +43 -0
- package/src/ontology/validation/schema.ts +9 -1
- package/src/projections/registry.ts +16 -10
- package/src/projections/revision.ts +112 -45
- package/src/projections/run-dispatch.ts +38 -25
- package/src/projections/types.ts +2 -0
- package/src/query.ts +5 -0
- package/src/rules/execution.ts +43 -11
- package/src/runtime/ai-cost.ts +30 -0
- package/src/runtime/ai-usage.ts +32 -1
- package/src/runtime/host.ts +18 -1
- package/src/runtime/index.ts +2 -0
- package/src/runtime/resolve-definitions.ts +3 -0
- package/src/runtime/sixb.ts +35 -8
- package/src/runtime/types.ts +99 -9
- package/src/schedules/builders.ts +3 -1
- package/src/schedules/runtime.ts +6 -0
- package/src/schedules/validation.ts +23 -1
- package/src/security/README.md +62 -0
- package/src/security/grants.ts +155 -10
- package/src/security/index.ts +3 -1
- package/src/security/project.ts +6 -1
- package/src/security/registry.ts +32 -7
- package/src/security/types.ts +54 -9
- package/src/security/validation.ts +27 -11
- package/src/security/view-conditions.ts +215 -0
- package/src/shares/execution.ts +43 -10
- package/src/storage/action-runs/types.ts +2 -0
- package/src/storage/agents/errors.ts +3 -0
- package/src/storage/agents/in-memory.ts +779 -32
- package/src/storage/agents/index.ts +42 -0
- package/src/storage/agents/provider.ts +733 -8
- package/src/storage/agents/types.ts +620 -12
- package/src/storage/ai-cost/analytics.ts +60 -7
- package/src/storage/ai-cost/codec.ts +6 -1
- package/src/storage/ai-cost/groups.ts +44 -1
- package/src/storage/ai-cost/index.ts +1 -0
- package/src/storage/ai-cost/provider.ts +2 -0
- package/src/storage/ai-cost/types.ts +18 -1
- package/src/storage/ai-cost/validation.ts +39 -12
- package/src/storage/ai-limits/provider.ts +4 -7
- package/src/storage/ai-usage/in-memory.ts +28 -1
- package/src/storage/ai-usage/index.ts +9 -1
- package/src/storage/ai-usage/record.ts +44 -7
- package/src/storage/ai-usage/types.ts +38 -0
- package/src/storage/ai-usage/usage.ts +15 -1
- package/src/storage/artifacts/errors.ts +13 -1
- package/src/storage/artifacts/in-memory.ts +156 -8
- package/src/storage/artifacts/index.ts +6 -1
- package/src/storage/artifacts/record.ts +61 -1
- package/src/storage/artifacts/types.ts +92 -8
- package/src/storage/auth/in-memory/auth-storage.ts +27 -2
- package/src/storage/auth/in-memory/users.ts +40 -6
- package/src/storage/auth/index.ts +1 -0
- package/src/storage/auth/types.ts +43 -7
- package/src/storage/executions/in-memory.ts +32 -0
- package/src/storage/executions/index.ts +2 -0
- package/src/storage/executions/types.ts +17 -0
- package/src/storage/index.ts +69 -1
- package/src/storage/internal.ts +9 -1
- package/src/storage/migrations/migrate-storage.ts +8 -1
- package/src/storage/migrations/prepare-unique-properties.ts +161 -0
- package/src/storage/objects/guard.ts +7 -3
- package/src/storage/objects/in-memory/conditional-reader.ts +72 -0
- package/src/storage/objects/in-memory/query.ts +4 -105
- package/src/storage/objects/in-memory/read-scope.ts +15 -14
- package/src/storage/objects/in-memory/read-source.ts +11 -1
- package/src/storage/objects/in-memory/scoped-reader.ts +243 -0
- package/src/storage/objects/in-memory/selected-reader.ts +6 -231
- package/src/storage/objects/in-memory/storage.ts +183 -1
- package/src/storage/objects/index.ts +9 -1
- package/src/storage/objects/read-scope.ts +191 -0
- package/src/storage/objects/types.ts +68 -1
- package/src/storage/ontology/in-memory/index.ts +3 -0
- package/src/storage/ontology/in-memory/materializations.ts +35 -0
- package/src/storage/ontology/in-memory/replacement-plans.ts +4 -0
- package/src/storage/ontology/in-memory/unique-values.ts +62 -0
- package/src/storage/ontology/index.ts +10 -0
- package/src/storage/ontology/materializations.ts +35 -1
- package/src/storage/ontology/provider-work.ts +76 -0
- package/src/storage/ontology/provider.ts +3 -0
- package/src/storage/ontology/unique-values.ts +56 -0
- package/src/storage/operation-scope.ts +9 -1
- package/src/storage/projection-runs/in-memory.ts +3 -35
- package/src/storage/types.ts +2 -0
- package/src/testing/agent-approval-storage-contract.ts +1117 -0
- package/src/testing/agent-memory-storage-contract.ts +400 -0
- package/src/testing/agent-storage-contract.ts +1188 -33
- package/src/testing/ai-cost-storage-contract.ts +31 -1
- package/src/testing/ai-limit-storage-contract.ts +9 -7
- package/src/testing/ai-model-call-groups-contract.ts +76 -0
- package/src/testing/ai-usage-storage-contract.ts +120 -13
- package/src/testing/artifact-storage-contract.ts +338 -4
- package/src/testing/auth-storage-contract.ts +550 -73
- package/src/testing/broker-contract.ts +28 -23
- package/src/testing/effective-storage-contract.ts +3 -8
- package/src/testing/execution-storage-contract.ts +53 -0
- package/src/testing/file-upload-session-storage-contract.ts +12 -24
- package/src/testing/index.ts +17 -4
- package/src/testing/lake-storage-contract.ts +22 -28
- package/src/testing/materializer-storage-contract.ts +36 -9
- package/src/testing/object-conditional-read-scope-contract.ts +634 -0
- package/src/testing/object-query-contract.ts +386 -186
- package/src/testing/ontology-storage-contract.ts +230 -21
- package/src/testing/projection-run-storage-contract.ts +8 -18
- package/src/testing/queues-contract.ts +39 -70
- package/src/testing/sandboxes-contract.ts +3 -14
- package/src/testing/share-grant-storage-contract.ts +13 -16
- package/src/testing/share-session-storage-contract.ts +4 -14
- package/src/testing/unique-values-contract.ts +907 -0
- package/src/testing/webhook-execution.ts +1 -1
- package/src/testing/webhook-run-storage-contract.ts +6 -9
- package/src/users/execution.ts +131 -0
- package/src/users/index.ts +2 -0
- package/src/workers/queue-worker.ts +1 -3
- package/src/workers/worker.ts +1 -3
- package/src/workflows/builders.ts +6 -0
- package/src/workflows/request.ts +46 -8
- package/src/workflows/types.ts +6 -2
- package/src/workflows/validation.ts +23 -9
- package/dist/chunk-29yx306f.js.map +0 -22
- package/dist/chunk-3jms7je7.js +0 -14
- package/dist/chunk-3jms7je7.js.map +0 -10
- package/dist/chunk-3qct2mdc.js +0 -297
- package/dist/chunk-3qct2mdc.js.map +0 -12
- package/dist/chunk-48qjhh6v.js.map +0 -13
- package/dist/chunk-4as3wt1c.js.map +0 -12
- package/dist/chunk-5948n82c.js.map +0 -10
- package/dist/chunk-5hx48dnn.js.map +0 -14
- package/dist/chunk-6rqgmkde.js.map +0 -29
- package/dist/chunk-6x0pqh32.js.map +0 -10
- package/dist/chunk-7n30ybym.js +0 -3
- package/dist/chunk-7n440zgt.js +0 -261
- package/dist/chunk-7n440zgt.js.map +0 -12
- package/dist/chunk-7q8t23v4.js +0 -467
- package/dist/chunk-7q8t23v4.js.map +0 -14
- package/dist/chunk-8frc8a4j.js.map +0 -20
- package/dist/chunk-918wwnaa.js.map +0 -68
- package/dist/chunk-91mg3nj9.js.map +0 -12
- package/dist/chunk-96yw3pwd.js.map +0 -10
- package/dist/chunk-9j4jw7as.js.map +0 -14
- package/dist/chunk-9k93ah50.js.map +0 -11
- package/dist/chunk-9kgkfg6v.js +0 -502
- package/dist/chunk-9kgkfg6v.js.map +0 -14
- package/dist/chunk-akzryx9h.js.map +0 -100
- package/dist/chunk-arns890k.js.map +0 -10
- package/dist/chunk-bk9svbcq.js.map +0 -49
- package/dist/chunk-c06hmxyy.js +0 -31
- package/dist/chunk-c06hmxyy.js.map +0 -10
- package/dist/chunk-c1rxbz5y.js.map +0 -12
- package/dist/chunk-cn0fwwhy.js.map +0 -19
- package/dist/chunk-dhcv7yxc.js.map +0 -11
- package/dist/chunk-dhdha526.js.map +0 -10
- package/dist/chunk-dvd2fp9q.js.map +0 -13
- package/dist/chunk-e6k4thh5.js.map +0 -19
- package/dist/chunk-ere85b8y.js.map +0 -15
- package/dist/chunk-g257jwnc.js.map +0 -12
- package/dist/chunk-hwksyjks.js.map +0 -11
- package/dist/chunk-k43ct2ke.js.map +0 -12
- package/dist/chunk-nn5xnx3s.js.map +0 -40
- package/dist/chunk-pbcbn83d.js.map +0 -14
- package/dist/chunk-pqajwytd.js +0 -68
- package/dist/chunk-pqajwytd.js.map +0 -11
- package/dist/chunk-qczk96d9.js.map +0 -11
- package/dist/chunk-rdghfsss.js +0 -39
- package/dist/chunk-rdghfsss.js.map +0 -10
- package/dist/chunk-rj69qcrd.js.map +0 -11
- package/dist/chunk-v4jbb3rs.js.map +0 -10
- package/dist/chunk-yxd3nnqt.js.map +0 -11
- package/dist/events/toStoredEvent.d.ts +0 -9
- package/dist/events/toStoredEvent.d.ts.map +0 -1
- package/dist/models/audio/file.d.ts +0 -9
- package/dist/models/audio/file.d.ts.map +0 -1
- package/src/events/toStoredEvent.ts +0 -33
- /package/dist/{chunk-mfs23znk.js.map → chunk-07kkp2e1.js.map} +0 -0
- /package/dist/{chunk-z58tm0hm.js.map → chunk-0phpbbvm.js.map} +0 -0
- /package/dist/{chunk-e17zdm62.js.map → chunk-1t6k1avb.js.map} +0 -0
- /package/dist/{chunk-kge7k6ey.js.map → chunk-2fn60nvs.js.map} +0 -0
- /package/dist/{chunk-y0c4e6ex.js.map → chunk-3gbefjg5.js.map} +0 -0
- /package/dist/{chunk-cy4mbddw.js.map → chunk-48jezz3j.js.map} +0 -0
- /package/dist/{chunk-twe4dx8p.js → chunk-5tfev0fv.js} +0 -0
- /package/dist/{chunk-twe4dx8p.js.map → chunk-5tfev0fv.js.map} +0 -0
- /package/dist/{chunk-447a5c0p.js.map → chunk-6n69k945.js.map} +0 -0
- /package/dist/{chunk-0bphap9y.js.map → chunk-6p0pastb.js.map} +0 -0
- /package/dist/{chunk-431pyp2c.js.map → chunk-6y0mkhex.js.map} +0 -0
- /package/dist/{chunk-s7jg7pmn.js.map → chunk-bab05bhg.js.map} +0 -0
- /package/dist/{chunk-q5e5tv4b.js.map → chunk-c844dkwd.js.map} +0 -0
- /package/dist/{chunk-cfj9dfbb.js.map → chunk-d2m879s4.js.map} +0 -0
- /package/dist/{chunk-q7gn29y3.js.map → chunk-dp0cdtj2.js.map} +0 -0
- /package/dist/{chunk-br3k6qbf.js.map → chunk-fm62y49k.js.map} +0 -0
- /package/dist/{chunk-vvxtn22d.js.map → chunk-g663fahq.js.map} +0 -0
- /package/dist/{chunk-rmakanzx.js.map → chunk-h33shhq6.js.map} +0 -0
- /package/dist/{chunk-d09e3rax.js.map → chunk-hwarjrgf.js.map} +0 -0
- /package/dist/{chunk-vf57cr4t.js.map → chunk-hyesv9dv.js.map} +0 -0
- /package/dist/{chunk-5vems3nx.js.map → chunk-m2nevja0.js.map} +0 -0
- /package/dist/{chunk-x9v4cx1d.js.map → chunk-m36fw8ft.js.map} +0 -0
- /package/dist/{chunk-a40ad1ft.js.map → chunk-mbsbxarb.js.map} +0 -0
- /package/dist/{chunk-6aawea28.js.map → chunk-n8q5j6y5.js.map} +0 -0
- /package/dist/{chunk-d7dnxdep.js.map → chunk-n9zpx9c6.js.map} +0 -0
- /package/dist/{chunk-xvsc5m8n.js.map → chunk-npcr0228.js.map} +0 -0
- /package/dist/{chunk-y5tah2kf.js.map → chunk-q4pmvkg0.js.map} +0 -0
- /package/dist/{chunk-d5rjr8c0.js.map → chunk-vabga7fk.js.map} +0 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/objects/vectors/resolve-query.ts", "../src/objects/query/reranking-query.ts", "../src/objects/query/planner.ts", "../src/objects/query/primary-id.ts", "../src/objects/query/reranking-executor.ts", "../src/objects/query/user-expansions.ts", "../src/objects/query/executor.ts", "../src/objects/query/explain.ts", "../src/objects/query/links.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type { EmbeddingModelCatalog } from \"../../models/catalog\"\nimport { type EmbeddingModel, sameEmbeddingModel } from \"../../models/embedding-model\"\nimport type { OntologyRegistry } from \"../../ontology\"\nimport { ObjectQueryExecutionError } from \"../query/errors\"\nimport type { ObjectQuery, ObjectQueryVector } from \"../query/ir\"\nimport { resolveObjectQueryResultShape } from \"../query/validate\"\nimport { normalizeVector } from \"./profile\"\n\nconst QUERY_EMBEDDING_TIMEOUT_MS = 30_000\n\n/** Called only after query validation, authorization and provider planning have succeeded. */\nexport async function resolveVectorSearchText(\n query: ObjectQuery,\n ontology: OntologyRegistry,\n models: EmbeddingModelCatalog | undefined,\n signal?: AbortSignal\n): Promise<ObjectQuery> {\n if (query.kind === \"limit\" || query.kind === \"project\") {\n const input = await resolveVectorSearchText(query.input, ontology, models, signal)\n return { ...query, input }\n }\n if (query.kind !== \"vector\" || typeof query.vector !== \"string\") return query\n\n const model = resolveProfileEmbeddingModel(query, ontology, models)\n const vector = await embedSearchText(query.vector, model, signal)\n return { ...query, vector }\n}\n\nfunction resolveProfileEmbeddingModel(\n query: ObjectQueryVector,\n ontology: OntologyRegistry,\n models: EmbeddingModelCatalog | undefined\n): EmbeddingModel {\n const { objectTypeIds } = resolveObjectQueryResultShape(query.input, {\n ontology,\n normalize: false,\n })\n const objectTypeId = objectTypeIds.length === 1 ? objectTypeIds[0] : undefined\n if (!objectTypeId || !query.profile) {\n throw new ObjectQueryExecutionError(\n \"embedding_model_unavailable\",\n \"Vector search requires the embedding model registered for its profile.\"\n )\n }\n\n const profile = ontology.resolveObjectType(objectTypeId).search?.vectors?.[query.profile]\n if (!profile) {\n throw new ObjectQueryExecutionError(\n \"embedding_model_unavailable\",\n \"Vector search requires the embedding model registered for its profile.\"\n )\n }\n\n const model = models?.getByRef({\n provider: profile.model.providerId,\n modelId: profile.model.modelId,\n })?.model\n if (!model || !sameEmbeddingModel(model, profile.model)) {\n throw new ObjectQueryExecutionError(\n \"embedding_model_unavailable\",\n \"Vector search requires the embedding model registered for its profile.\"\n )\n }\n return model\n}\n\nasync function embedSearchText(\n text: string,\n model: EmbeddingModel,\n signal?: AbortSignal\n): Promise<readonly number[]> {\n const dimensions = model.definition.dimensions\n const timeout = AbortSignal.timeout(QUERY_EMBEDDING_TIMEOUT_MS)\n const requestSignal = signal ? AbortSignal.any([signal, timeout]) : timeout\n requestSignal.throwIfAborted()\n const result = await model.embed({ texts: [text], purpose: \"query\", signal: requestSignal })\n requestSignal.throwIfAborted()\n\n if (!Array.isArray(result?.vectors) || result.vectors.length !== 1) {\n throw new ObjectQueryExecutionError(\n \"invalid_embedding_response\",\n \"Embedding model must return exactly one vector for the search text.\"\n )\n }\n try {\n return normalizeVector(result.vectors[0]!, dimensions)\n } catch {\n throw new ObjectQueryExecutionError(\n \"invalid_embedding_response\",\n \"Embedding model returned an invalid vector for the search profile.\"\n )\n }\n}\n",
|
|
6
|
+
"import type { ObjectQuery, ObjectQueryRerank } from \"./ir\"\n\n/** Validation permits output shaping only after the explicit reranking stage. */\nexport function findQueryReranking(query: ObjectQuery): ObjectQueryRerank | undefined {\n if (query.kind === \"rerank\") return query\n if (query.kind === \"limit\" || query.kind === \"project\") return findQueryReranking(query.input)\n return undefined\n}\n",
|
|
7
|
+
"import type { ObjectQueryCapabilities, ObjectQueryScalarOperation } from \"../../storage\"\nimport type { ObjectQueryPlanningIssue } from \"./errors\"\nimport type { ObjectExpansion, ObjectQuery, ObjectQueryPredicate, ObjectQuerySortField } from \"./ir\"\nimport { findQueryReranking } from \"./reranking-query\"\n\nexport type ObjectQueryPlanMode = \"pushdown\" | \"fallback\" | \"pipeline\" | \"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 \"refs\",\n \"filter\",\n \"sort\",\n \"limit\",\n \"page\",\n \"project\",\n \"expand\",\n])\n\nexport function planObjectQuery(\n query: ObjectQuery,\n options: ObjectQueryPlanningOptions\n): ObjectQueryPlan {\n const operation = options.operation ?? \"queryObjects\"\n const reranking = findQueryReranking(query)\n if (reranking) {\n const candidatePlan = planObjectQuery(reranking.input, options)\n return {\n ...candidatePlan,\n query,\n mode: candidatePlan.mode === \"rejected\" ? \"rejected\" : \"pipeline\",\n }\n }\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 \"refs\":\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 \"rerank\":\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 case \"contains\":\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 case \"refs\":\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 case \"refs\":\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",
|
|
8
|
+
"import type { OntologyDefinitionCatalog } from \"../../ontology/registry\"\nimport type { ObjectQuery, ObjectQueryPredicate } from \"./ir\"\n\n/** Exact identity predicates can start from primary-key lookups. Keep the original filter:\n * the optimization must not remove other conditions or expose a projected-out property.\n * Only a direct start is rewritten; filters after bounds/projections keep their semantics. */\nexport function usePrimaryIdLookups(\n query: ObjectQuery,\n ontology: OntologyDefinitionCatalog\n): ObjectQuery {\n if (query.kind === \"set\")\n return { ...query, inputs: query.inputs.map((input) => usePrimaryIdLookups(input, ontology)) }\n if (!(\"input\" in query)) return query\n const input = usePrimaryIdLookups(query.input, ontology)\n if (query.kind === \"filter\" && input.kind === \"start\" && !input.includeSubtypes) {\n const propertyId = ontology.getPrimaryPropertyId(input.objectTypeId)\n const ids = primaryIds(query.predicate, propertyId)\n if (ids?.length && ids.length <= 1000)\n return {\n ...query,\n input: {\n kind: \"refs\",\n refs: [...new Set(ids)]\n .sort()\n .map((primaryId) => ({ objectTypeId: input.objectTypeId, primaryId })),\n },\n }\n }\n return input === query.input ? query : { ...query, input }\n}\n\nfunction primaryIds(\n predicate: ObjectQueryPredicate,\n propertyId: string\n): readonly string[] | undefined {\n if (predicate.op === \"and\") {\n for (const item of predicate.items) {\n const ids = primaryIds(item, propertyId)\n if (ids) return ids\n }\n return undefined\n }\n if (\n predicate.op === \"eq\" &&\n predicate.propertyId === propertyId &&\n typeof predicate.value === \"string\"\n )\n return [predicate.value]\n if (\n predicate.op === \"in\" &&\n predicate.propertyId === propertyId &&\n predicate.values.every((value) => typeof value === \"string\")\n )\n return predicate.values as readonly string[]\n return undefined\n}\n",
|
|
9
|
+
"import type { RerankingModel } from \"../../models/reranking-model\"\nimport { validateRerankingResults } from \"../../models/reranking-model\"\nimport type { ObjectRow, QueryObjectsResult } from \"../../storage\"\nimport { vectorSources } from \"../vectors/profile\"\nimport { ObjectQueryExecutionError } from \"./errors\"\nimport type { ObjectQuery, ObjectQueryVector } from \"./ir\"\nimport { MAX_RERANK_INPUT_BYTES } from \"./reranking-limits\"\n\n/** Receives only rows from the authorized reader; never rereads unmasked storage. */\nexport async function rerankObjectCandidates(input: {\n readonly query: ObjectQuery\n readonly vector: ObjectQueryVector\n readonly candidates: readonly ObjectRow[]\n readonly model: RerankingModel\n readonly signal?: AbortSignal\n readonly includeTotal?: boolean\n}): Promise<QueryObjectsResult> {\n const { vector, candidates, model, signal } = input\n if (typeof vector.vector !== \"string\" || !vector.source) {\n throw new ObjectQueryExecutionError(\n \"invalid_rerank_input\",\n \"Reranking requires a validated text vector query.\"\n )\n }\n signal?.throwIfAborted()\n if (candidates.length > vector.k) {\n throw new ObjectQueryExecutionError(\n \"rerank_candidate_limit_exceeded\",\n \"Storage exceeded the admitted vector candidate bound.\"\n )\n }\n const source = vector.source\n const documents = candidates.map((row) => vectorSources(source, row.properties).text)\n const encoder = new TextEncoder()\n const bytes =\n encoder.encode(vector.vector).byteLength +\n documents.reduce((sum, text) => sum + encoder.encode(text).byteLength, 0)\n if (bytes > MAX_RERANK_INPUT_BYTES) {\n throw new ObjectQueryExecutionError(\n \"rerank_input_limit_exceeded\",\n \"Reranking input exceeds 1 MiB. Use fewer candidates or shorter profile sources.\"\n )\n }\n\n const results =\n documents.length === 0\n ? []\n : (await model.rerank({ query: vector.vector, documents, signal })).results\n signal?.throwIfAborted()\n const ranking = validateRerankingResults(results, candidates.length)\n const rows = ranking.map(({ index, score }) => ({ ...candidates[index]!, score }))\n const shaped = shapeRerankedRows(input.query, rows)\n return {\n objects: shaped.rows,\n hasMore: shaped.hasMore,\n ...(input.includeTotal === false ? {} : { total: shaped.total }),\n }\n}\n\nfunction shapeRerankedRows(\n query: ObjectQuery,\n rows: readonly ObjectRow[]\n): { rows: readonly ObjectRow[]; total: number; hasMore: boolean } {\n if (query.kind === \"rerank\") return { rows, total: rows.length, hasMore: false }\n if (query.kind === \"limit\") {\n const input = shapeRerankedRows(query.input, rows)\n return {\n rows: input.rows.slice(0, query.limit),\n total: input.total,\n hasMore: input.hasMore || query.limit < input.rows.length,\n }\n }\n if (query.kind === \"project\") {\n const input = shapeRerankedRows(query.input, rows)\n if (!query.properties) return input\n const properties = new Set(query.properties)\n return {\n ...input,\n rows: input.rows.map((row) => ({\n ...row,\n properties: Object.fromEntries(\n Object.entries(row.properties).filter(([key]) => properties.has(key))\n ),\n })),\n }\n }\n throw new ObjectQueryExecutionError(\n \"invalid_rerank_composition\",\n \"Only limit and project may follow reranking.\"\n )\n}\n",
|
|
10
|
+
"import type { ObjectExpansion, ObjectQuery } from \"./ir\"\n\n/**\n * The `ref.user()` properties a query expands, at its rows and under each expanded link.\n *\n * Profiles come from the member directory, not object storage, so the authorized reader attaches\n * them to the rows storage returned.\n */\nexport interface UserExpansionPlan {\n readonly users: readonly string[]\n readonly links: readonly { readonly linkId: string; readonly plan: UserExpansionPlan }[]\n}\n\n/**\n * Read the user expansions of a normalized query, or `undefined` when it has none.\n *\n * Only the outermost expand can carry them: normalization hoists expansions there, and validation\n * refuses them on a set operand.\n */\nexport function userExpansionPlan(query: ObjectQuery): UserExpansionPlan | undefined {\n if (query.kind !== \"expand\") return undefined\n return planOf(query.users, query.expansions)\n}\n\nfunction planOf(\n users: readonly string[] | undefined,\n expansions: readonly ObjectExpansion[]\n): UserExpansionPlan | undefined {\n const links = expansions.flatMap((expansion) => {\n const plan = planOf(expansion.users, expansion.expand ?? [])\n return plan ? [{ linkId: expansion.linkId, plan }] : []\n })\n\n if ((users === undefined || users.length === 0) && links.length === 0) return undefined\n return { users: users ?? [], links }\n}\n\n/**\n * The query storage runs: user expansions removed at every level, and an expand left with no link\n * replaced by its input. A query that only expands user properties then plans like the plain query.\n */\nexport function withoutUserExpansions(query: ObjectQuery): ObjectQuery {\n switch (query.kind) {\n case \"start\":\n case \"refs\":\n return query\n case \"set\":\n return { ...query, inputs: query.inputs.map(withoutUserExpansions) }\n case \"expand\": {\n const input = withoutUserExpansions(query.input)\n if (query.expansions.length === 0) return input\n\n const { users: _users, ...expand } = query\n return { ...expand, input, expansions: query.expansions.map(withoutExpansionUsers) }\n }\n default:\n return { ...query, input: withoutUserExpansions(query.input) }\n }\n}\n\nfunction withoutExpansionUsers(expansion: ObjectExpansion): ObjectExpansion {\n const { users: _users, ...rest } = expansion\n if (!rest.expand) return rest\n return { ...rest, expand: rest.expand.map(withoutExpansionUsers) }\n}\n",
|
|
11
|
+
"import { type AuthorizationContext, assertAuthorized } from \"../../authorization\"\nimport type { RuntimeAuthorization } from \"../../execution/types\"\nimport type { EmbeddingModelCatalog, RerankingModelCatalog } from \"../../models/catalog\"\nimport type { OntologyRegistry } from \"../../ontology\"\nimport type { UserRef } from \"../../ontology/user-ref\"\nimport type {\n CountObjectsResult,\n ExistsObjectsResult,\n ExpandedLinkValue,\n ExpandedObjectRow,\n FacetObjectsResult,\n ObjectBatchKey,\n ObjectFacetRequest,\n ObjectFacetResult,\n ObjectQueryCapabilities,\n ObjectReadStorage,\n ObjectRow,\n ObjectRowLinks,\n QueryObjectsResult,\n} from \"../../storage\"\nimport { linkBatchKey, MAX_OBJECT_READ_FACETS, objectBatchKey } from \"../../storage\"\nimport { resolveVectorSearchText } from \"../vectors/resolve-query\"\nimport { bindCurrentUser } from \"./current-user\"\nimport {\n ObjectQueryExecutionError,\n ObjectQueryPlanningError,\n ObjectQueryValidationError,\n} from \"./errors\"\nimport type {\n ObjectExpansion,\n ObjectQuery,\n ObjectQueryResultShape,\n ObjectQuerySortField,\n} from \"./ir\"\nimport { matchesPredicate } from \"./matches-predicate\"\nimport { normalizeObjectQuery } from \"./normalize\"\nimport { type ObjectQueryPlan, type ObjectQueryPlanningOptions, planObjectQuery } from \"./planner\"\nimport { usePrimaryIdLookups } from \"./primary-id\"\nimport { rerankObjectCandidates } from \"./reranking-executor\"\nimport { findQueryReranking } from \"./reranking-query\"\nimport { compareQueryScalarValues } from \"./scalar-values\"\nimport { withoutUserExpansions } from \"./user-expansions\"\nimport {\n type AdmittedObjectQuery,\n type ObjectQuerySemanticAdmission,\n type ObjectQueryValidationIssue,\n resolveObjectQueryResultShape,\n type ValidatedObjectQuery,\n validateObjectQuery,\n validateObjectQueryWithAdmission,\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 embeddingModels?: EmbeddingModelCatalog\n rerankingModels?: RerankingModelCatalog\n storage: ObjectReadStorage\n maxLimit?: number\n maxPageSize?: number\n maxRefs?: 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 /** Registered execution capability for queries reached through a bound Sixb SDK. */\n runtimeAuthorization?: RuntimeAuthorization\n /**\n * The object types the reader reads, decided by the reader itself. The authorized object reader\n * passes its own, which hold the types its storage reads through a condition. When present, it\n * decides in place of the grants of `authorization` and `runtimeAuthorization`.\n */\n readableObjectTypes?: ReadableObjectTypes\n /** Reader-specific admission applied after grants, such as marking clearances. */\n admission?: ObjectQuerySemanticAdmission\n /** The user `currentUser()` stands for; absent when the reader is not a user. */\n requestingUser?: UserRef\n}\n\nexport interface ReadableObjectTypes {\n /** Throw unless the reader reads every one of these object types. */\n assert(objectTypeIds: readonly string[]): void\n has(objectTypeId: string): boolean\n}\n\nexport interface ExecuteObjectQueryInput {\n signal?: AbortSignal\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 async function executeObjectQuery(\n input: ExecuteObjectQueryInput,\n options: QueryExecutorOptions\n): Promise<ExecuteObjectQueryResult> {\n const validated = validateExecutableQuery(input, options)\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 === \"pipeline\") {\n const reranking = findQueryReranking(validated.query)\n if (!reranking || reranking.input.kind !== \"vector\") {\n throw new ObjectQueryExecutionError(\n \"invalid_rerank_input\",\n \"Reranking requires vector candidates.\"\n )\n }\n // Resolve the allowlisted server binding before paying for query embedding.\n const model = options.rerankingModels?.getByRef(reranking.model)?.model\n if (!model) {\n throw new ObjectQueryExecutionError(\n \"reranking_model_unavailable\",\n `Reranking model '${reranking.model.provider}/${reranking.model.modelId}' is not configured in models.reranking.`\n )\n }\n const candidates = await executeObjectQuery(\n { ...input, query: reranking.input, includeTotal: false },\n options\n )\n const result = await rerankObjectCandidates({\n query: validated.query,\n vector: reranking.input,\n candidates: candidates.objects,\n model,\n signal: input.signal,\n includeTotal: input.includeTotal,\n })\n return { ...result, plan }\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: await resolveVectorSearchText(\n plan.query,\n options.ontology,\n options.embeddingModels,\n input.signal\n ),\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 validated = validateExecutableQuery(input, options)\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: await resolveVectorSearchText(plan.query, options.ontology, options.embeddingModels),\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 validated = validateExecutableQuery(input, options)\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: await resolveVectorSearchText(plan.query, options.ontology, options.embeddingModels),\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 validated = validateExecutableQuery(input, options)\n const facets = validateObjectFacetRequests(input.facets, validated.result.objectTypeIds, options)\n facets.forEach((facet, index) => {\n const denial = options.admission?.property({\n state: validated.admissionState,\n propertyId: facet.propertyId,\n use: \"facet\",\n path: `$.facets[${index}].propertyId`,\n })\n if (denial) throw denial\n })\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: await resolveVectorSearchText(plan.query, options.ontology, options.embeddingModels),\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 total: evaluation.entries.length,\n facets: buildFacetResults(\n evaluation.entries.map((entry) => entry.row),\n facets\n ),\n plan,\n }\n}\n\n/**\n * Validate, authorize the touched types, admit the query for the reader, then bind\n * `currentUser()` to the reader's user.\n *\n * Grants are checked first so a denial never describes properties of a type the caller cannot\n * view. The admitted query is the one executed: an admission may narrow it, as markings narrow\n * default text fields. Its user expansions are removed: storage never resolves profiles. Binding\n * comes last, so storage and the fallback never see the placeholder.\n */\nfunction validateExecutableQuery(\n input: { readonly projectId: string; readonly query: ObjectQuery },\n options: QueryExecutorOptions\n): AdmittedObjectQuery {\n const validationOptions = {\n ontology: options.ontology,\n maxLimit: options.maxLimit,\n maxPageSize: options.maxPageSize,\n maxRefs: options.maxRefs,\n normalize: false,\n }\n const normalized = normalizeObjectQuery(input.query)\n const validated = validateObjectQuery(normalized, validationOptions)\n assertQueryViewable(input.projectId, validated, options)\n\n const admitted = options.admission\n ? validateObjectQueryWithAdmission(normalized, validationOptions, options.admission)\n : { ...validated, admissionState: {} }\n\n const executable = withoutUserExpansions(admitted.query)\n return { ...admitted, query: bindCurrentUser(executable, options.requestingUser) }\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 projectId: string,\n validated: ValidatedObjectQuery,\n authorization: Pick<\n QueryExecutorOptions,\n \"authorization\" | \"runtimeAuthorization\" | \"readableObjectTypes\"\n >\n): void {\n if (authorization.readableObjectTypes) {\n authorization.readableObjectTypes.assert(validated.touchedObjectTypeIds)\n return\n }\n\n // The query engine is also a storage-level utility. Authorization is activated by a runtime\n // context; execution SDKs always provide a registered capability, including auth-disabled ones.\n if (!authorization.runtimeAuthorization && !authorization.authorization) return\n assertAuthorized(\n { projectId, ...authorization },\n {\n kind: \"object.query\",\n touchedObjectTypeIds: validated.touchedObjectTypeIds,\n }\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 = usePrimaryIdLookups(expandIncludeSubtypes(annotated, ontology), 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 case \"refs\":\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 \"rerank\":\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 \"refs\":\n return query\n case \"filter\":\n case \"text\":\n case \"vector\":\n case \"rerank\":\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 \"refs\":\n return evaluateFallbackRefs(projectId, query, options)\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 \"rerank\":\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\nasync function evaluateFallbackRefs(\n projectId: string,\n query: Extract<ObjectQuery, { kind: \"refs\" }>,\n options: QueryExecutorOptions\n): Promise<FallbackEvaluation> {\n const rows = await options.storage.getByPrimaryIdBatch({\n projectId,\n items: query.refs,\n })\n return completeFallbackEvaluation(\n query.refs.flatMap((ref, order) => {\n const row = rows.get(objectBatchKey(ref.objectTypeId, ref.primaryId))\n return row ? [{ row, order }] : []\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(\n linkBatchKey(parent.objectTypeId, parent.primaryId, expansion.linkId)\n )\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 linksByKey = await options.storage.listLinksBatch({\n projectId,\n direction: \"incoming\",\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(\n linkBatchKey(parent.objectTypeId, parent.primaryId, expansion.linkId)\n )\n if (!links) return []\n // For an incoming expansion the hydrated object is the link's source.\n return links\n .filter(\n (link) =>\n !expansion.sourceObjectTypeId || link.sourceTypeId === expansion.sourceObjectTypeId\n )\n .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<ReadonlyMap<ObjectBatchKey, ObjectRow>> {\n const seen = new Set<ObjectBatchKey>()\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: ReadonlyMap<ObjectBatchKey, ObjectRow>,\n expansion: ObjectExpansion,\n options: QueryExecutorOptions\n): Promise<ReadonlyMap<ObjectBatchKey, 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<ObjectBatchKey, 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: ReadonlyMap<ObjectBatchKey, 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: ReadonlyMap<ObjectBatchKey, 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): ObjectBatchKey {\n return objectBatchKey(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 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 case \"rerank\":\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\n/** @internal Shared pre-storage validation; intentionally absent from query barrels. */\nexport function validateObjectFacetRequests(\n facets: readonly ObjectFacetRequest[],\n objectTypeIds: readonly string[],\n options: Pick<QueryExecutorOptions, \"ontology\" | \"maxFacetLimit\">\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 (facets.length > MAX_OBJECT_READ_FACETS) {\n throw new ObjectQueryValidationError([\n {\n path: \"$.facets\",\n code: \"too_many_facets\",\n message: `facets must include at most ${MAX_OBJECT_READ_FACETS} facet requests`,\n },\n ])\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 objectBatchKey(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",
|
|
12
|
+
"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 maxRefs?: 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 maxRefs: options.maxRefs,\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 maxRefs: options.maxRefs,\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 \"refs\":\n return {\n path,\n kind: query.kind,\n summary: `refs ${query.refs.length}`,\n details: { refs: query.refs },\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 profile ${query.profile} k=${query.k}`,\n details: {\n profile: query.profile,\n input: typeof query.vector === \"string\" ? \"text\" : \"vector\",\n dimensions: typeof query.vector === \"string\" ? undefined : query.vector.length,\n k: query.k,\n },\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 \"rerank\":\n return {\n path,\n kind: query.kind,\n summary: `rerank ${query.model.provider}/${query.model.modelId}`,\n details: { model: query.model },\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 ${summarizeExpanded(query.expansions, query.users).join(\", \")}`,\n details: {\n expansions: query.expansions,\n ...(query.users === undefined ? {} : { users: query.users }),\n },\n children: [buildExplainNode(query.input, `${path}.input`)],\n }\n }\n}\n\n// Links by id, then user properties as `@property`.\nfunction summarizeExpanded(\n expansions: readonly ObjectExpansion[],\n users: readonly string[] | undefined\n): string[] {\n return [\n ...expansions.map(summarizeExpansion),\n ...(users ?? []).map((propertyId) => `@${propertyId}`),\n ]\n}\n\nfunction summarizeExpansion(expansion: ObjectExpansion): string {\n const head = expansion.direction === \"incoming\" ? `<-${expansion.linkId}` : expansion.linkId\n const nested = summarizeExpanded(expansion.expand ?? [], expansion.users)\n return nested.length > 0 ? `${head}(${nested.join(\", \")})` : head\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 case \"constant\":\n return String(predicate.value)\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",
|
|
13
|
+
"import { createHash } from \"node:crypto\"\nimport { isAllowed } from \"../../authorization\"\nimport { stableJsonStringify } from \"../../json\"\nimport {\n type LinkDirection,\n type ObjectBatchKey,\n type ObjectLinkCursor,\n type ObjectLinkRow,\n type ObjectReadStorage,\n type ObjectRow,\n objectBatchKey,\n objectLinkCursor,\n} from \"../../storage\"\nimport { ObjectQueryExecutionError } from \"./errors\"\nimport { executeObjectQuery, type QueryExecutorOptions } from \"./executor\"\nimport type { ObjectQuery } from \"./ir\"\nimport { normalizeObjectQuery } from \"./normalize\"\nimport { type ValidatedObjectQuery, validateObjectQuery } from \"./validate\"\n\nexport interface ExecuteObjectQueryLinksInput {\n projectId: string\n query: ObjectQuery\n direction?: LinkDirection\n linkId?: string\n includeObjects?: boolean\n pageSize?: number\n pageToken?: string\n}\n\nexport interface ExecuteObjectQueryLinksResult {\n objects: readonly ObjectRow[]\n links: readonly ObjectLinkRow[]\n hasMore: boolean\n nextPageToken?: string\n}\n\nexport interface PreflightObjectQueryLinksResult {\n projectId: string\n validated: ValidatedObjectQuery\n direction: LinkDirection\n linkId?: string\n includeObjects: boolean\n pageSize: number\n cursor?: ObjectLinkCursor\n pageScope: string\n}\n\nconst MAX_LINK_QUERY_OBJECTS = 1_000\nconst MAX_LINK_PAGE_SIZE = 1_000\nconst DEFAULT_LINK_PAGE_SIZE = 100\nconst LINK_PAGE_TOKEN_PREFIX = \"link:v1:\"\n\n/**\n * Canonicalize and validate a physical-link query without reading storage.\n *\n * This direct-file-only boundary lets higher-level readers complete ordinary request validation\n * before applying terminal-specific authorization, while the executor consumes the exact same\n * preflight contract.\n *\n * @internal Intentionally absent from query barrels.\n */\nexport function preflightObjectQueryLinks(\n input: ExecuteObjectQueryLinksInput,\n options: Pick<QueryExecutorOptions, \"ontology\" | \"maxLimit\" | \"maxPageSize\" | \"maxRefs\">\n): PreflightObjectQueryLinksResult {\n // Capture caller-owned scalar fields once so validation, token scoping, and execution agree on\n // one request even when this internal API is reached without an AuthorizedObjectReader snapshot.\n const projectId = input.projectId\n const query = input.query\n const requestedDirection = input.direction\n const linkId = input.linkId\n const requestedIncludeObjects = input.includeObjects\n const requestedPageSize = input.pageSize\n const pageToken = input.pageToken\n\n const direction = requestedDirection ?? \"both\"\n if (direction !== \"outgoing\" && direction !== \"incoming\" && direction !== \"both\") {\n throw new ObjectQueryExecutionError(\n \"invalid_link_direction\",\n \"direction must be 'outgoing', 'incoming', or 'both'\",\n \"$.direction\"\n )\n }\n if (linkId !== undefined && typeof linkId !== \"string\") {\n throw new ObjectQueryExecutionError(\"invalid_link_id\", \"linkId must be a string\", \"$.linkId\")\n }\n if (linkId !== undefined && linkId.length === 0) {\n throw new ObjectQueryExecutionError(\"invalid_link_id\", \"linkId must not be empty\", \"$.linkId\")\n }\n if (requestedIncludeObjects !== undefined && typeof requestedIncludeObjects !== \"boolean\") {\n throw new ObjectQueryExecutionError(\n \"invalid_link_include_objects\",\n \"includeObjects must be a boolean\",\n \"$.includeObjects\"\n )\n }\n\n const pageSize = requestedPageSize ?? DEFAULT_LINK_PAGE_SIZE\n if (!Number.isInteger(pageSize) || pageSize <= 0 || pageSize > MAX_LINK_PAGE_SIZE) {\n throw new ObjectQueryExecutionError(\n \"invalid_link_page_size\",\n `pageSize must be an integer between 1 and ${MAX_LINK_PAGE_SIZE}`,\n \"$.pageSize\"\n )\n }\n\n const validated = validateObjectQuery(normalizeObjectQuery(query), {\n ontology: options.ontology,\n maxLimit: options.maxLimit,\n maxPageSize: options.maxPageSize,\n maxRefs: options.maxRefs,\n normalize: false,\n })\n assertLinkSelectorShape(validated.query)\n const pageScope = linkPageScope(projectId, validated.query, direction, linkId)\n const cursor = decodeLinkPageToken(pageToken, pageScope)\n\n return {\n projectId,\n validated,\n direction,\n ...(linkId === undefined ? {} : { linkId }),\n includeObjects: requestedIncludeObjects ?? false,\n pageSize,\n ...(cursor === undefined ? {} : { cursor }),\n pageScope,\n }\n}\n\n/**\n * Select a bounded object set with the query IR, then return physical links\n * incident to that set. This is a separate terminal because edge rows and edge\n * pagination are a different response contract from object-set queries.\n */\nexport async function executeObjectQueryLinks(\n input: ExecuteObjectQueryLinksInput,\n options: QueryExecutorOptions\n): Promise<ExecuteObjectQueryLinksResult> {\n const preflight = preflightObjectQueryLinks(input, options)\n const selectorQuery = preflight.validated.query\n\n // A root page already has an explicit result bound and must execute directly: nesting it under a\n // probe limit would expose the provider's internal pageSize+1 row. All other selector shapes are\n // capped here before the provider receives the selected identities.\n const boundedSelector =\n selectorQuery.kind === \"page\"\n ? selectorQuery\n : { kind: \"limit\" as const, limit: MAX_LINK_QUERY_OBJECTS + 1, input: selectorQuery }\n const selection = await executeObjectQuery(\n {\n projectId: preflight.projectId,\n query: boundedSelector,\n includeTotal: false,\n },\n {\n ...options,\n maxLimit: Math.max(options.maxLimit ?? 1_000, MAX_LINK_QUERY_OBJECTS + 1),\n }\n )\n if (selection.objects.length > MAX_LINK_QUERY_OBJECTS) {\n throw new ObjectQueryExecutionError(\n \"link_query_object_limit_exceeded\",\n `Link query selected more than ${MAX_LINK_QUERY_OBJECTS} objects; add a limit or page node`,\n \"$.query\"\n )\n }\n\n const selected = selection.objects\n if (selected.length === 0) {\n return { objects: [], links: [], hasMore: false }\n }\n\n const endpointObjectTypeIds = visibleEndpointTypeIds(options)\n const page = await options.storage.queryLinks({\n projectId: preflight.projectId,\n objectRefs: selected.map((row) => ({\n objectTypeId: row.objectTypeId,\n primaryId: row.primaryId,\n })),\n direction: preflight.direction,\n ...(preflight.linkId === undefined ? {} : { linkId: preflight.linkId }),\n ...(endpointObjectTypeIds === undefined ? {} : { endpointObjectTypeIds }),\n ...(preflight.cursor === undefined ? {} : { after: preflight.cursor }),\n limit: preflight.pageSize,\n })\n const lastLink = page.links.at(-1)\n let nextPageToken: string | undefined\n if (page.hasMore) {\n if (!lastLink) {\n throw new Error(\"[Sixb] Object storage returned hasMore for an empty link page.\")\n }\n nextPageToken = encodeLinkPageToken(objectLinkCursor(lastLink), preflight.pageScope)\n }\n const objects = preflight.includeObjects\n ? await hydrateLinkQueryObjects(preflight.projectId, selected, page.links, options.storage)\n : []\n\n return {\n objects,\n links: page.links,\n hasMore: page.hasMore,\n ...(nextPageToken ? { nextPageToken } : {}),\n }\n}\n\ninterface EncodedLinkPageToken {\n version: 1\n scope: string\n cursor: ObjectLinkCursor\n}\n\nfunction assertLinkSelectorShape(query: ObjectQuery, path = \"$.query\", root = true): void {\n switch (query.kind) {\n case \"project\":\n case \"expand\":\n throw new ObjectQueryExecutionError(\n \"link_selector_output_shape_not_supported\",\n `Link selectors do not support '${query.kind}' nodes; remove output shaping from the selector`,\n path\n )\n case \"page\":\n if (!root) {\n throw new ObjectQueryExecutionError(\n \"link_selector_page_must_be_root\",\n \"A page node in a link selector must be the outermost node\",\n path\n )\n }\n assertLinkSelectorShape(query.input, `${path}.input`, false)\n return\n case \"start\":\n case \"refs\":\n return\n case \"set\": {\n for (const [index, input] of query.inputs.entries()) {\n assertLinkSelectorShape(input, `${path}.inputs[${index}]`, false)\n }\n return\n }\n case \"filter\":\n case \"text\":\n case \"vector\":\n case \"traverse\":\n case \"sort\":\n case \"limit\":\n assertLinkSelectorShape(query.input, `${path}.input`, false)\n return\n }\n}\n\nfunction visibleEndpointTypeIds(options: QueryExecutorOptions): readonly string[] | undefined {\n const readable = options.readableObjectTypes\n if (readable) {\n return options.ontology\n .listObjectTypes()\n .map((objectType) => objectType.id)\n .filter((objectTypeId) => readable.has(objectTypeId))\n }\n\n if (!options.authorization) return undefined\n return options.ontology\n .listObjectTypes()\n .filter((objectType) =>\n isAllowed(options.authorization, { kind: \"object.view\", objectTypeId: objectType.id })\n )\n .map((objectType) => objectType.id)\n}\n\nfunction objectIdentity(objectTypeId: string, primaryId: string): ObjectBatchKey {\n return objectBatchKey(objectTypeId, primaryId)\n}\n\nfunction linkPageScope(\n projectId: string,\n query: ObjectQuery,\n direction: LinkDirection,\n linkId: string | undefined\n): string {\n return createHash(\"sha256\")\n .update(\n stableJsonStringify({\n projectId,\n query,\n direction,\n linkId: linkId ?? null,\n })\n )\n .digest(\"base64url\")\n}\n\nfunction encodeLinkPageToken(cursor: ObjectLinkCursor, scope: string): string {\n const payload: EncodedLinkPageToken = { version: 1, scope, cursor }\n return `${LINK_PAGE_TOKEN_PREFIX}${Buffer.from(JSON.stringify(payload)).toString(\"base64url\")}`\n}\n\nfunction decodeLinkPageToken(\n token: string | undefined,\n expectedScope: string\n): ObjectLinkCursor | undefined {\n if (token === undefined) return undefined\n try {\n if (!token.startsWith(LINK_PAGE_TOKEN_PREFIX)) throw new Error(\"invalid prefix\")\n const value = JSON.parse(\n Buffer.from(token.slice(LINK_PAGE_TOKEN_PREFIX.length), \"base64url\").toString(\"utf8\")\n ) as unknown\n if (\n !isPlainObject(value) ||\n value.version !== 1 ||\n typeof value.scope !== \"string\" ||\n !isObjectLinkCursor(value.cursor)\n ) {\n throw new Error(\"invalid cursor\")\n }\n if (value.scope !== expectedScope) {\n throw new Error(\"cursor scope mismatch\")\n }\n return value.cursor\n } catch {\n throw new ObjectQueryExecutionError(\n \"invalid_link_page_token\",\n \"pageToken is not a valid object-links cursor\",\n \"$.pageToken\"\n )\n }\n}\n\nfunction isObjectLinkCursor(value: unknown): value is ObjectLinkCursor {\n return (\n Array.isArray(value) && value.length === 5 && value.every((part) => typeof part === \"string\")\n )\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n\nasync function hydrateLinkQueryObjects(\n projectId: string,\n selected: readonly ObjectRow[],\n links: readonly ObjectLinkRow[],\n storage: ObjectReadStorage\n): Promise<ObjectRow[]> {\n const byIdentity = new Map(\n selected.map((row) => [objectIdentity(row.objectTypeId, row.primaryId), row])\n )\n const orderedIdentities = selected.map((row) => objectIdentity(row.objectTypeId, row.primaryId))\n const seenIdentities = new Set(orderedIdentities)\n const missingRefs: { objectTypeId: string; primaryId: string }[] = []\n\n for (const link of links) {\n for (const ref of [\n { objectTypeId: link.sourceTypeId, primaryId: link.sourceId },\n { objectTypeId: link.targetTypeId, primaryId: link.targetId },\n ]) {\n const identity = objectIdentity(ref.objectTypeId, ref.primaryId)\n if (seenIdentities.has(identity)) continue\n seenIdentities.add(identity)\n orderedIdentities.push(identity)\n missingRefs.push(ref)\n }\n }\n\n if (missingRefs.length > 0) {\n const hydrated = await storage.getByPrimaryIdBatch({ projectId, items: missingRefs })\n for (const ref of missingRefs) {\n const row = hydrated.get(objectBatchKey(ref.objectTypeId, ref.primaryId))\n if (row) byIdentity.set(objectIdentity(ref.objectTypeId, ref.primaryId), row)\n }\n }\n\n return orderedIdentities.flatMap((identity) => {\n const row = byIdentity.get(identity)\n return row ? [row] : []\n })\n}\n"
|
|
14
|
+
],
|
|
15
|
+
"mappings": "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",
|
|
16
|
+
"debugId": "716EC028C11AE10064756E2164756E21",
|
|
17
|
+
"names": []
|
|
18
|
+
}
|