@sixb/core 0.1.20 → 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 +71 -60
- 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 +23 -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/connection.d.ts +62 -0
- package/dist/activity/connection.d.ts.map +1 -0
- package/dist/activity/device.d.ts +8 -0
- package/dist/activity/device.d.ts.map +1 -0
- package/dist/activity/execution.d.ts +48 -0
- package/dist/activity/execution.d.ts.map +1 -0
- package/dist/activity/service.d.ts +79 -0
- package/dist/activity/service.d.ts.map +1 -0
- package/dist/activity/shares.d.ts +24 -0
- package/dist/activity/shares.d.ts.map +1 -0
- package/dist/activity/timeline.d.ts +103 -0
- package/dist/activity/timeline.d.ts.map +1 -0
- 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 +20 -8
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +170 -84
- 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/skills.d.ts.map +1 -1
- 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 +8 -4
- 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 +6 -4
- 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 +31 -12
- 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/address.d.ts +48 -0
- package/dist/artifacts/address.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 +27 -0
- package/dist/artifacts/csv.d.ts.map +1 -0
- package/dist/artifacts/errors.d.ts +16 -0
- package/dist/artifacts/errors.d.ts.map +1 -0
- package/dist/artifacts/execution.d.ts +138 -0
- package/dist/artifacts/execution.d.ts.map +1 -0
- 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 +30 -0
- package/dist/artifacts/frames/assets.d.ts.map +1 -0
- 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 +37 -0
- package/dist/artifacts/frames/grants.d.ts.map +1 -0
- package/dist/artifacts/frames/index.d.ts +12 -0
- package/dist/artifacts/frames/index.d.ts.map +1 -0
- package/dist/artifacts/frames/index.js +1285 -0
- package/dist/artifacts/frames/index.js.map +16 -0
- package/dist/artifacts/frames/kit.d.ts +71 -0
- package/dist/artifacts/frames/kit.d.ts.map +1 -0
- package/dist/artifacts/frames/probe.d.ts +45 -0
- package/dist/artifacts/frames/probe.d.ts.map +1 -0
- package/dist/artifacts/frames/protocol.d.ts +167 -0
- package/dist/artifacts/frames/protocol.d.ts.map +1 -0
- package/dist/artifacts/frames/runtime.d.ts +31 -0
- package/dist/artifacts/frames/runtime.d.ts.map +1 -0
- package/dist/artifacts/html.d.ts +6 -0
- package/dist/artifacts/html.d.ts.map +1 -0
- package/dist/artifacts/ids.d.ts +5 -0
- package/dist/artifacts/ids.d.ts.map +1 -0
- package/dist/artifacts/index.d.ts +22 -0
- package/dist/artifacts/index.d.ts.map +1 -0
- package/dist/artifacts/index.js +247 -0
- package/dist/artifacts/index.js.map +10 -0
- package/dist/artifacts/kinds.d.ts +5 -0
- package/dist/artifacts/kinds.d.ts.map +1 -0
- package/dist/artifacts/limits.d.ts +58 -0
- package/dist/artifacts/limits.d.ts.map +1 -0
- 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 +70 -0
- package/dist/artifacts/outline.d.ts.map +1 -0
- package/dist/artifacts/publish/files.d.ts +15 -0
- package/dist/artifacts/publish/files.d.ts.map +1 -0
- package/dist/artifacts/publish/index.d.ts +7 -0
- package/dist/artifacts/publish/index.d.ts.map +1 -0
- package/dist/artifacts/publish/index.js +76 -0
- package/dist/{chunk-7n30ybym.js.map → artifacts/publish/index.js.map} +1 -1
- package/dist/artifacts/publish/publish.d.ts +84 -0
- package/dist/artifacts/publish/publish.d.ts.map +1 -0
- 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 +30 -0
- package/dist/artifacts/publish/references.d.ts.map +1 -0
- 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/document.d.ts +17 -0
- package/dist/artifacts/publish/validate/document.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/file.d.ts +8 -0
- package/dist/artifacts/publish/validate/file.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 +23 -0
- package/dist/artifacts/publish/validate/sheet.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/slides.d.ts +15 -0
- package/dist/artifacts/publish/validate/slides.d.ts.map +1 -0
- package/dist/artifacts/queries.d.ts +95 -0
- package/dist/artifacts/queries.d.ts.map +1 -0
- package/dist/artifacts/references.d.ts +12 -0
- package/dist/artifacts/references.d.ts.map +1 -0
- package/dist/artifacts/resolve.d.ts +47 -0
- package/dist/artifacts/resolve.d.ts.map +1 -0
- 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/theme.d.ts +19 -0
- package/dist/artifacts/theme.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/warnings.d.ts +11 -0
- package/dist/artifacts/warnings.d.ts.map +1 -0
- package/dist/artifacts/workbook.d.ts +135 -0
- package/dist/artifacts/workbook.d.ts.map +1 -0
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +16 -13
- 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 +17 -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 +14 -9
- 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/blob-storage/browser.js +1 -1
- package/dist/blob-storage/index.js +2 -2
- package/dist/blob-storage/internal.d.ts +1 -1
- package/dist/blob-storage/internal.d.ts.map +1 -1
- package/dist/blob-storage/internal.js +11 -5
- package/dist/blob-storage/internal.js.map +1 -1
- package/dist/blob-storage/media-type.d.ts +12 -0
- package/dist/blob-storage/media-type.d.ts.map +1 -1
- package/dist/bootstrap/index.js +76 -66
- package/dist/bootstrap/index.js.map +2 -2
- package/dist/{chunk-tg2cw67r.js → chunk-02bzjgnt.js} +6 -6
- package/dist/{chunk-tg2cw67r.js.map → chunk-02bzjgnt.js.map} +1 -1
- package/dist/{chunk-mfs23znk.js → chunk-07kkp2e1.js} +1 -1
- package/dist/{chunk-6p49a5cq.js → chunk-098anw4f.js} +21 -19
- package/dist/chunk-098anw4f.js.map +12 -0
- package/dist/{chunk-fkgc1wt8.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-hkc3jct7.js → chunk-18sk89cg.js} +18 -10
- package/dist/chunk-18sk89cg.js.map +10 -0
- package/dist/{chunk-way52z4h.js → chunk-1t6k1avb.js} +6 -12
- package/dist/{chunk-way52z4h.js.map → chunk-1t6k1avb.js.map} +3 -4
- 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-3t2hgbgd.js → chunk-2fn60nvs.js} +40 -8
- package/dist/chunk-2fn60nvs.js.map +15 -0
- 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-3fqxbn31.js +107 -0
- package/dist/chunk-3fqxbn31.js.map +11 -0
- package/dist/{chunk-y0c4e6ex.js → chunk-3gbefjg5.js} +1 -1
- package/dist/{chunk-yzwja0mj.js → chunk-45ngkxkp.js} +52 -31
- package/dist/chunk-45ngkxkp.js.map +13 -0
- package/dist/{chunk-fa02jy15.js → chunk-48jezz3j.js} +1 -1
- package/dist/{chunk-ren4kg2j.js → chunk-4b26qwbg.js} +13 -13
- package/dist/{chunk-ren4kg2j.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-5tfev0fv.js +676 -0
- package/dist/chunk-5tfev0fv.js.map +15 -0
- package/dist/chunk-65abf64x.js +13 -0
- package/dist/chunk-65abf64x.js.map +10 -0
- package/dist/{chunk-hvsb78a1.js → chunk-65pyhyas.js} +114 -107
- package/dist/chunk-65pyhyas.js.map +20 -0
- package/dist/{chunk-1sr8ryzk.js → chunk-661ezhks.js} +303 -6
- package/dist/chunk-661ezhks.js.map +11 -0
- package/dist/{chunk-z3y5kg1x.js → chunk-6eqsgvxk.js} +3 -3
- package/dist/{chunk-z3y5kg1x.js.map → chunk-6eqsgvxk.js.map} +2 -2
- package/dist/{chunk-c85m1hyj.js → chunk-6n69k945.js} +2 -2
- package/dist/{chunk-xfs8x8m9.js → chunk-6p0pastb.js} +5 -5
- package/dist/{chunk-rrzt8jdy.js → chunk-6rrtzea3.js} +116 -110
- package/dist/chunk-6rrtzea3.js.map +14 -0
- package/dist/{chunk-t7x8dmn0.js → chunk-6y0mkhex.js} +3 -3
- package/dist/{chunk-es1gxsbf.js → chunk-73v685wb.js} +14 -16
- package/dist/chunk-73v685wb.js.map +12 -0
- package/dist/{chunk-6c6sn0bh.js → chunk-7gr4j2eq.js} +7930 -5973
- package/dist/chunk-7gr4j2eq.js.map +120 -0
- package/dist/{chunk-hjzdd750.js → chunk-7mc2wkre.js} +391 -91
- package/dist/chunk-7mc2wkre.js.map +50 -0
- package/dist/chunk-7z5p905k.js +1660 -0
- package/dist/chunk-7z5p905k.js.map +22 -0
- package/dist/{chunk-3zxk45er.js → chunk-8ncg20rd.js} +3 -68
- package/dist/{chunk-3zxk45er.js.map → chunk-8ncg20rd.js.map} +4 -5
- 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-a3faa34j.js +74 -0
- package/dist/chunk-a3faa34j.js.map +10 -0
- package/dist/chunk-az47zep4.js +41 -0
- package/dist/chunk-az47zep4.js.map +10 -0
- package/dist/{chunk-v9xd5wzd.js → chunk-bab05bhg.js} +1 -1
- package/dist/{chunk-5j58wjct.js → chunk-bktev1ds.js} +14 -11
- package/dist/{chunk-5j58wjct.js.map → chunk-bktev1ds.js.map} +3 -3
- package/dist/{chunk-b38szspf.js → chunk-c0vk1djt.js} +5 -3
- package/dist/chunk-c0vk1djt.js.map +11 -0
- package/dist/chunk-c69nj7se.js +3 -0
- package/dist/chunk-c69nj7se.js.map +9 -0
- package/dist/{chunk-0yh890a4.js → chunk-c844dkwd.js} +35 -7
- package/dist/{chunk-0yh890a4.js.map → chunk-c844dkwd.js.map} +3 -3
- package/dist/{chunk-d09tj99x.js → chunk-cdk3egjj.js} +24 -5
- 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-gc4ntf7d.js → chunk-cwdzcv37.js} +1 -1
- package/dist/chunk-d2m879s4.js +288 -0
- package/dist/chunk-d2m879s4.js.map +12 -0
- package/dist/chunk-d7vyc7k6.js +10 -0
- package/dist/chunk-d7vyc7k6.js.map +10 -0
- package/dist/{chunk-vyf9kfqf.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-bx9q3cwv.js → chunk-efmm01gj.js} +108 -1045
- package/dist/chunk-efmm01gj.js.map +18 -0
- package/dist/{chunk-tw03bsmb.js → chunk-eptrvnby.js} +224 -3
- package/dist/chunk-eptrvnby.js.map +12 -0
- package/dist/{chunk-n33z5bjw.js → chunk-ezne9wc9.js} +1762 -502
- package/dist/chunk-ezne9wc9.js.map +71 -0
- package/dist/chunk-fe8zwt8b.js +688 -0
- package/dist/chunk-fe8zwt8b.js.map +19 -0
- package/dist/chunk-ff5xkv0p.js +211 -0
- package/dist/chunk-ff5xkv0p.js.map +10 -0
- 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-1zq2p6g0.js → chunk-fp2kq35z.js} +26 -10
- package/dist/{chunk-1zq2p6g0.js.map → chunk-fp2kq35z.js.map} +5 -5
- package/dist/chunk-g5bvzyyr.js +32 -0
- package/dist/chunk-g5bvzyyr.js.map +10 -0
- package/dist/{chunk-9ybhtmg4.js → chunk-g663fahq.js} +2 -2
- package/dist/{chunk-k6q3n2sc.js → chunk-gvj5cd3b.js} +29 -13
- package/dist/chunk-gvj5cd3b.js.map +12 -0
- package/dist/{chunk-yevzdx4y.js → chunk-h33shhq6.js} +10 -12
- package/dist/{chunk-yevzdx4y.js.map → chunk-h33shhq6.js.map} +3 -4
- package/dist/{chunk-vpq4shxz.js → chunk-h3pbv7n8.js} +1771 -36
- package/dist/chunk-h3pbv7n8.js.map +48 -0
- package/dist/chunk-hke9aeen.js +9 -0
- package/dist/chunk-hke9aeen.js.map +10 -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-9w055r5b.js → chunk-hwarjrgf.js} +1 -1
- package/dist/{chunk-9dmt152s.js → chunk-hyesv9dv.js} +2 -2
- 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-jcfw4h7m.js +9 -0
- package/dist/chunk-jcfw4h7m.js.map +10 -0
- package/dist/chunk-kcqpk9w1.js +75 -0
- package/dist/chunk-kcqpk9w1.js.map +10 -0
- package/dist/{chunk-x6m907x7.js → chunk-m2nevja0.js} +6 -7
- package/dist/{chunk-x6m907x7.js.map → chunk-m2nevja0.js.map} +3 -3
- 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-dk8tkk5f.js → chunk-n9zpx9c6.js} +4 -4
- package/dist/{chunk-7t429e3f.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-z4m0yz8c.js → chunk-q4pmvkg0.js} +1 -1
- package/dist/chunk-qhqgp4jf.js +1418 -0
- package/dist/chunk-qhqgp4jf.js.map +22 -0
- package/dist/chunk-qx00vjrj.js +144 -0
- package/dist/chunk-qx00vjrj.js.map +13 -0
- package/dist/{chunk-5e43w60z.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-vabga7fk.js +176 -0
- package/dist/chunk-vabga7fk.js.map +12 -0
- package/dist/{chunk-gsjm1wms.js → chunk-vhbw5sqm.js} +33 -3
- package/dist/chunk-vhbw5sqm.js.map +10 -0
- package/dist/{chunk-tpn40322.js → chunk-vpgwq5nf.js} +104 -17
- package/dist/chunk-vpgwq5nf.js.map +21 -0
- package/dist/{chunk-0rbyz4qy.js → chunk-vyt322b6.js} +586 -171
- package/dist/{chunk-0rbyz4qy.js.map → chunk-vyt322b6.js.map} +12 -9
- package/dist/chunk-waqk73p1.js +2380 -0
- package/dist/chunk-waqk73p1.js.map +23 -0
- package/dist/{chunk-jhm3zsa7.js → chunk-wkv3h3q7.js} +64 -2
- package/dist/{chunk-jhm3zsa7.js.map → chunk-wkv3h3q7.js.map} +3 -3
- package/dist/chunk-wsc1brye.js +27 -0
- package/dist/chunk-wsc1brye.js.map +10 -0
- package/dist/chunk-x0v3jd47.js +124 -0
- package/dist/chunk-x0v3jd47.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-d0bqz29d.js → chunk-yc9ners4.js} +124 -19
- package/dist/{chunk-d0bqz29d.js.map → chunk-yc9ners4.js.map} +8 -8
- package/dist/{chunk-8mx7qw3y.js → chunk-zbc929zg.js} +29 -5
- 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/builders.d.ts +15 -2
- package/dist/datasets/builders.d.ts.map +1 -1
- package/dist/datasets/column-index.d.ts +7 -0
- package/dist/datasets/column-index.d.ts.map +1 -0
- package/dist/datasets/execution.d.ts +3 -2
- package/dist/datasets/execution.d.ts.map +1 -1
- package/dist/datasets/write.js +8 -8
- package/dist/error-reporting/internal.js +4 -4
- package/dist/errors/catalog.d.ts +26 -0
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/internal.d.ts +1 -0
- package/dist/errors/internal.d.ts.map +1 -1
- package/dist/errors/internal.js +7 -4
- package/dist/errors/internal.js.map +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 +12 -2
- 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 +9 -11
- 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 +72 -59
- 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 +102 -12
- 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-clearance.d.ts +41 -0
- package/dist/execution/object-reader-clearance.d.ts.map +1 -0
- package/dist/execution/object-reader-ontology.d.ts +12 -0
- package/dist/execution/object-reader-ontology.d.ts.map +1 -0
- package/dist/execution/object-reader-security.d.ts +66 -0
- package/dist/execution/object-reader-security.d.ts.map +1 -0
- 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 +70 -59
- 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 +72 -57
- 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 +49 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +168 -142
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/in-memory.d.ts +1 -0
- package/dist/lake-storage/in-memory.d.ts.map +1 -1
- package/dist/lake-storage/index.d.ts +6 -3
- package/dist/lake-storage/index.d.ts.map +1 -1
- package/dist/lake-storage/index.js +21 -13
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/lake-storage/lineage.d.ts +94 -0
- package/dist/lake-storage/lineage.d.ts.map +1 -0
- package/dist/lake-storage/sql-transforms.d.ts +45 -0
- package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
- package/dist/lake-storage/types.d.ts +55 -1
- package/dist/lake-storage/types.d.ts.map +1 -1
- package/dist/lake-storage/version-inputs.d.ts +14 -3
- package/dist/lake-storage/version-inputs.d.ts.map +1 -1
- package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
- 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 +51 -46
- 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 +50 -39
- 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/clearance-redaction.d.ts +27 -0
- package/dist/objects/clearance-redaction.d.ts.map +1 -0
- 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 +77 -60
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/link/authorization.d.ts +11 -5
- 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/property-clearance.d.ts +47 -24
- package/dist/objects/property-clearance.d.ts.map +1 -1
- package/dist/objects/query/clearance-admission.d.ts +10 -0
- package/dist/objects/query/clearance-admission.d.ts.map +1 -0
- 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 +55 -49
- 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/link-query-clearance.d.ts +21 -0
- package/dist/objects/query/link-query-clearance.d.ts.map +1 -0
- 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/docs-markdown.d.ts +1 -1
- package/dist/ontology/docs-markdown.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 +13 -9
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/internal.js +9 -7
- 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.d.ts +2 -0
- package/dist/pipelines/index.d.ts.map +1 -1
- package/dist/pipelines/index.js +61 -46
- package/dist/pipelines/index.js.map +1 -1
- package/dist/pipelines/lineage.d.ts +17 -0
- package/dist/pipelines/lineage.d.ts.map +1 -0
- package/dist/projections/internal.d.ts +2 -2
- package/dist/projections/internal.js +42 -38
- 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/create.d.ts +3 -0
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +6 -0
- 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.d.ts +2 -0
- package/dist/runtime/internal.d.ts.map +1 -1
- package/dist/runtime/internal.js +58 -50
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/ontology-mutations.d.ts +2 -0
- package/dist/runtime/ontology-mutations.d.ts.map +1 -1
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/sixb.d.ts +10 -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/auth.d.ts +16 -0
- package/dist/sandboxes/auth.d.ts.map +1 -1
- package/dist/sandboxes/config.d.ts.map +1 -1
- package/dist/sandboxes/configuration.d.ts +26 -0
- package/dist/sandboxes/configuration.d.ts.map +1 -1
- package/dist/sandboxes/index.d.ts +1 -1
- package/dist/sandboxes/index.d.ts.map +1 -1
- package/dist/sandboxes/index.js +15 -13
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/sandboxes/sandbox.d.ts +28 -5
- package/dist/sandboxes/sandbox.d.ts.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/applied-markings-contribution.d.ts +58 -0
- package/dist/security/applied-markings-contribution.d.ts.map +1 -0
- package/dist/security/applied-markings-host.d.ts +10 -0
- package/dist/security/applied-markings-host.d.ts.map +1 -0
- package/dist/security/applied-markings-snapshot.d.ts +67 -0
- package/dist/security/applied-markings-snapshot.d.ts.map +1 -0
- package/dist/security/applied-markings.d.ts +73 -0
- package/dist/security/applied-markings.d.ts.map +1 -0
- package/dist/security/dataset-version-markings.d.ts +47 -0
- package/dist/security/dataset-version-markings.d.ts.map +1 -0
- package/dist/security/grants.d.ts +13 -4
- package/dist/security/grants.d.ts.map +1 -1
- package/dist/security/index.d.ts +2 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/internal.d.ts +15 -0
- package/dist/security/internal.d.ts.map +1 -0
- package/dist/security/internal.js +135 -0
- package/dist/security/internal.js.map +10 -0
- package/dist/security/marking-propagation.d.ts +62 -0
- package/dist/security/marking-propagation.d.ts.map +1 -0
- package/dist/security/marking-sets.d.ts +14 -0
- package/dist/security/marking-sets.d.ts.map +1 -0
- package/dist/security/markings.d.ts +6 -3
- package/dist/security/markings.d.ts.map +1 -1
- package/dist/security/pipeline-markings.d.ts +20 -0
- package/dist/security/pipeline-markings.d.ts.map +1 -0
- package/dist/security/project.d.ts +7 -0
- package/dist/security/project.d.ts.map +1 -0
- package/dist/security/projection-markings.d.ts +71 -0
- package/dist/security/projection-markings.d.ts.map +1 -0
- package/dist/security/public.js +2 -2
- package/dist/security/redactions.d.ts +4 -1
- package/dist/security/redactions.d.ts.map +1 -1
- package/dist/security/registry.d.ts +6 -0
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +64 -6
- 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 +40 -36
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/action-runs/failure.js +3 -3
- package/dist/storage/action-runs/in-memory.d.ts +4 -0
- package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/action-runs/provider.js +1 -1
- package/dist/storage/action-runs/types.d.ts +9 -1
- package/dist/storage/action-runs/types.d.ts.map +1 -1
- package/dist/storage/activity/in-memory.d.ts +55 -0
- package/dist/storage/activity/in-memory.d.ts.map +1 -0
- package/dist/storage/activity/index.d.ts +3 -0
- package/dist/storage/activity/index.d.ts.map +1 -0
- package/dist/storage/activity/policy.d.ts +96 -0
- package/dist/storage/activity/policy.d.ts.map +1 -0
- package/dist/storage/activity/types.d.ts +191 -0
- package/dist/storage/activity/types.d.ts.map +1 -0
- 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 +124 -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 -8
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +573 -20
- 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 +6 -5
- 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 +18 -0
- package/dist/storage/artifacts/errors.d.ts.map +1 -0
- package/dist/storage/artifacts/in-memory.d.ts +55 -0
- package/dist/storage/artifacts/in-memory.d.ts.map +1 -0
- package/dist/storage/artifacts/index.d.ts +5 -0
- package/dist/storage/artifacts/index.d.ts.map +1 -0
- package/dist/storage/artifacts/record.d.ts +34 -0
- package/dist/storage/artifacts/record.d.ts.map +1 -0
- package/dist/storage/artifacts/types.d.ts +263 -0
- package/dist/storage/artifacts/types.d.ts.map +1 -0
- 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/sessions.d.ts +2 -1
- package/dist/storage/auth/in-memory/sessions.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 +59 -9
- package/dist/storage/auth/types.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +2 -2
- package/dist/storage/executions/in-memory.d.ts +3 -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/provider.d.ts +2 -0
- package/dist/storage/executions/provider.d.ts.map +1 -1
- package/dist/storage/executions/provider.js +9 -223
- package/dist/storage/executions/provider.js.map +3 -4
- package/dist/storage/executions/types.d.ts +46 -0
- package/dist/storage/executions/types.d.ts.map +1 -1
- package/dist/storage/file-upload-sessions/provider.js +17 -14
- package/dist/storage/file-upload-sessions/provider.js.map +1 -1
- package/dist/storage/in-memory/index.d.ts +8 -0
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +15 -11
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +78 -66
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +4 -1
- package/dist/storage/internal.d.ts.map +1 -1
- package/dist/storage/internal.js +80 -19
- 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/sources.d.ts +2 -1
- package/dist/storage/ontology/in-memory/sources.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 +5 -2
- 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/sources.d.ts +15 -0
- package/dist/storage/ontology/sources.d.ts.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 +3 -3
- package/dist/storage/share-grants/in-memory.d.ts +2 -1
- package/dist/storage/share-grants/in-memory.d.ts.map +1 -1
- package/dist/storage/share-grants/index.d.ts +1 -1
- package/dist/storage/share-grants/index.d.ts.map +1 -1
- package/dist/storage/share-grants/provider.js +4 -3
- package/dist/storage/share-grants/provider.js.map +1 -1
- package/dist/storage/share-grants/types.d.ts +6 -0
- package/dist/storage/share-grants/types.d.ts.map +1 -1
- package/dist/storage/types.d.ts +6 -2
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/in-memory.d.ts +4 -0
- package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +18 -14
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/storage/workflow-runs/types.d.ts +5 -0
- package/dist/storage/workflow-runs/types.d.ts.map +1 -1
- package/dist/syncs/index.js +49 -45
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/action-run-storage-contract.d.ts.map +1 -1
- package/dist/testing/activity-storage-contract.d.ts +14 -0
- package/dist/testing/activity-storage-contract.d.ts.map +1 -0
- 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 +13 -0
- package/dist/testing/artifact-storage-contract.d.ts.map +1 -0
- 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 +11 -5
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +9340 -3794
- package/dist/testing/index.js.map +32 -26
- package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
- package/dist/testing/lake-storage-contract.d.ts +2 -0
- 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 +42 -38
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +5 -7
- 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 +76 -66
- 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 +15 -2
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/validation.d.ts +7 -0
- package/dist/workflows/validation.d.ts.map +1 -1
- package/package.json +25 -1
- package/src/actions/commit-edits.ts +6 -1
- package/src/actions/execution.ts +55 -23
- package/src/actions/read-facade.ts +33 -0
- package/src/actions/request.ts +234 -66
- 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 +95 -0
- package/src/actions/types/context.ts +20 -3
- package/src/actions/validators.ts +19 -8
- package/src/activity/README.md +158 -0
- package/src/activity/connection.ts +217 -0
- package/src/activity/device.ts +41 -0
- package/src/activity/execution.ts +210 -0
- package/src/activity/service.ts +274 -0
- package/src/activity/shares.ts +62 -0
- package/src/activity/timeline.ts +385 -0
- 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 +63 -3
- 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 -64
- package/src/agents/run-scope.ts +134 -0
- package/src/agents/skills.ts +6 -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 +43 -18
- package/src/agents/validation.ts +4 -0
- package/src/artifacts/access.ts +125 -0
- package/src/artifacts/address.ts +132 -0
- package/src/artifacts/canvas.ts +369 -0
- package/src/artifacts/csv.ts +118 -0
- package/src/artifacts/errors.ts +32 -0
- package/src/artifacts/execution.ts +553 -0
- 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 +104 -0
- package/src/artifacts/frames/entries.ts +35 -0
- package/src/artifacts/frames/grants.ts +125 -0
- package/src/artifacts/frames/index.ts +21 -0
- package/src/artifacts/frames/kit.ts +569 -0
- package/src/artifacts/frames/probe.ts +357 -0
- package/src/artifacts/frames/protocol.ts +328 -0
- package/src/artifacts/frames/runtime.ts +458 -0
- package/src/artifacts/html.ts +25 -0
- package/src/artifacts/ids.ts +18 -0
- package/src/artifacts/index.ts +125 -0
- package/src/artifacts/kinds.ts +8 -0
- package/src/artifacts/limits.ts +58 -0
- package/src/artifacts/live-sheet.ts +345 -0
- package/src/artifacts/outline.ts +95 -0
- package/src/artifacts/publish/files.ts +87 -0
- package/src/artifacts/publish/index.ts +14 -0
- package/src/artifacts/publish/publish.ts +336 -0
- package/src/artifacts/publish/queries.ts +336 -0
- package/src/artifacts/publish/references.ts +135 -0
- package/src/artifacts/publish/validate/canvas.ts +118 -0
- package/src/artifacts/publish/validate/document.ts +114 -0
- package/src/artifacts/publish/validate/file.ts +19 -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 +297 -0
- package/src/artifacts/publish/validate/slides.ts +82 -0
- package/src/artifacts/queries.ts +512 -0
- package/src/artifacts/references.ts +11 -0
- package/src/artifacts/resolve.ts +112 -0
- 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/theme.ts +116 -0
- package/src/artifacts/tones.ts +20 -0
- package/src/artifacts/warnings.ts +10 -0
- package/src/artifacts/workbook.ts +674 -0
- 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 +52 -0
- package/src/authorization/event-visibility.ts +17 -16
- package/src/authorization/grant-kinds.ts +46 -2
- 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/blob-storage/internal.ts +1 -1
- package/src/blob-storage/media-type.ts +69 -0
- package/src/datasets/builders.ts +66 -2
- package/src/datasets/column-index.ts +19 -0
- package/src/datasets/execution.ts +23 -9
- package/src/errors/catalog.ts +26 -1
- package/src/errors/internal.ts +18 -8
- package/src/events/definitions.ts +26 -0
- package/src/events/execution.ts +171 -21
- 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 +486 -266
- package/src/execution/lineage.ts +14 -0
- package/src/execution/object-reader-clearance.ts +91 -0
- package/src/execution/object-reader-ontology.ts +60 -0
- package/src/execution/object-reader-security.ts +270 -0
- 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 +331 -7
- package/src/index.ts +169 -4
- package/src/lake-storage/in-memory.ts +26 -3
- package/src/lake-storage/index.ts +13 -1
- package/src/lake-storage/lineage.ts +385 -0
- package/src/lake-storage/sql-transforms.ts +45 -0
- package/src/lake-storage/types.ts +59 -1
- package/src/lake-storage/version-inputs.ts +35 -6
- package/src/maintenance/ontology-maintenance.ts +15 -0
- 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/clearance-redaction.ts +138 -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 +37 -8
- package/src/objects/link/endpoints.ts +42 -11
- package/src/objects/link/remove.ts +27 -12
- package/src/objects/link/upsert-batch.ts +9 -5
- package/src/objects/link/upsert.ts +20 -14
- package/src/objects/materializer-adapter.ts +55 -18
- package/src/objects/object/delete.ts +26 -7
- package/src/objects/object/upsert-batch.ts +46 -18
- package/src/objects/object/upsert.ts +25 -8
- package/src/objects/property-clearance.ts +171 -152
- package/src/objects/query/clearance-admission.ts +112 -0
- 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/link-query-clearance.ts +73 -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 +15 -1
- package/src/ontology/docs-markdown.ts +2 -1
- 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/pipelines/index.ts +2 -0
- package/src/pipelines/lineage.ts +45 -0
- package/src/projections/internal.ts +2 -2
- 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/create.ts +4 -0
- package/src/runtime/host.ts +73 -1
- package/src/runtime/index.ts +2 -0
- package/src/runtime/internal.ts +2 -0
- package/src/runtime/ontology-mutations.ts +19 -4
- package/src/runtime/resolve-definitions.ts +69 -3
- package/src/runtime/sixb.ts +53 -9
- package/src/runtime/types.ts +99 -9
- package/src/sandboxes/README.md +29 -7
- package/src/sandboxes/auth.ts +16 -0
- package/src/sandboxes/config.ts +2 -7
- package/src/sandboxes/configuration.ts +61 -7
- package/src/sandboxes/index.ts +1 -0
- package/src/sandboxes/sandbox.ts +27 -5
- 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/applied-markings-contribution.ts +277 -0
- package/src/security/applied-markings-host.ts +41 -0
- package/src/security/applied-markings-snapshot.ts +235 -0
- package/src/security/applied-markings.ts +405 -0
- package/src/security/dataset-version-markings.ts +163 -0
- package/src/security/grants.ts +191 -11
- package/src/security/index.ts +5 -0
- package/src/security/internal.ts +18 -0
- package/src/security/marking-propagation.ts +255 -0
- package/src/security/marking-sets.ts +42 -0
- package/src/security/markings.ts +29 -178
- package/src/security/pipeline-markings.ts +175 -0
- package/src/security/project.ts +13 -0
- package/src/security/projection-markings.ts +421 -0
- package/src/security/redactions.ts +7 -2
- package/src/security/registry.ts +32 -7
- package/src/security/types.ts +68 -5
- package/src/security/validation.ts +34 -11
- package/src/security/view-conditions.ts +215 -0
- package/src/shares/execution.ts +43 -10
- package/src/storage/action-runs/in-memory.ts +18 -0
- package/src/storage/action-runs/types.ts +10 -0
- package/src/storage/activity/in-memory.ts +374 -0
- package/src/storage/activity/index.ts +27 -0
- package/src/storage/activity/policy.ts +430 -0
- package/src/storage/activity/types.ts +211 -0
- package/src/storage/agents/errors.ts +3 -0
- package/src/storage/agents/in-memory.ts +789 -32
- package/src/storage/agents/index.ts +42 -0
- package/src/storage/agents/provider.ts +730 -16
- package/src/storage/agents/types.ts +628 -27
- 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 +28 -0
- package/src/storage/artifacts/in-memory.ts +388 -0
- package/src/storage/artifacts/index.ts +35 -0
- package/src/storage/artifacts/record.ts +260 -0
- package/src/storage/artifacts/types.ts +293 -0
- package/src/storage/auth/in-memory/auth-storage.ts +27 -2
- package/src/storage/auth/in-memory/sessions.ts +21 -0
- package/src/storage/auth/in-memory/users.ts +40 -6
- package/src/storage/auth/index.ts +3 -0
- package/src/storage/auth/types.ts +61 -7
- package/src/storage/executions/in-memory.ts +93 -1
- package/src/storage/executions/index.ts +5 -0
- package/src/storage/executions/provider.ts +12 -0
- package/src/storage/executions/types.ts +47 -0
- package/src/storage/in-memory/index.ts +16 -0
- package/src/storage/index.ts +132 -1
- package/src/storage/internal.ts +39 -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/sources.ts +23 -0
- package/src/storage/ontology/in-memory/unique-values.ts +62 -0
- package/src/storage/ontology/index.ts +12 -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/sources.ts +17 -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/share-grants/in-memory.ts +8 -0
- package/src/storage/share-grants/index.ts +1 -0
- package/src/storage/share-grants/types.ts +8 -0
- package/src/storage/types.ts +6 -0
- package/src/storage/workflow-runs/in-memory.ts +16 -0
- package/src/storage/workflow-runs/types.ts +5 -0
- package/src/testing/action-run-storage-contract.ts +25 -0
- package/src/testing/activity-storage-contract.ts +840 -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 +1206 -50
- 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 +851 -0
- package/src/testing/auth-storage-contract.ts +597 -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 +200 -1
- package/src/testing/file-upload-session-storage-contract.ts +12 -24
- package/src/testing/index.ts +26 -4
- package/src/testing/lake-merge-storage-contract.ts +38 -0
- package/src/testing/lake-storage-contract.ts +269 -30
- package/src/testing/materializer-storage-contract.ts +37 -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 +286 -22
- 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 +28 -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 +20 -0
- package/src/workflows/request.ts +46 -8
- package/src/workflows/types.ts +15 -2
- package/src/workflows/validation.ts +95 -9
- package/dist/chunk-1k89ecfr.js +0 -85
- package/dist/chunk-1k89ecfr.js.map +0 -10
- package/dist/chunk-1sr8ryzk.js.map +0 -11
- package/dist/chunk-29yx306f.js.map +0 -22
- package/dist/chunk-3t2hgbgd.js.map +0 -15
- package/dist/chunk-4as3wt1c.js.map +0 -12
- package/dist/chunk-4vyr1j8f.js +0 -128
- package/dist/chunk-4vyr1j8f.js.map +0 -11
- package/dist/chunk-5e43w60z.js.map +0 -10
- package/dist/chunk-6c6sn0bh.js.map +0 -106
- package/dist/chunk-6p49a5cq.js.map +0 -12
- 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-8mx7qw3y.js.map +0 -13
- package/dist/chunk-91mg3nj9.js.map +0 -12
- package/dist/chunk-96yw3pwd.js.map +0 -10
- package/dist/chunk-9gyp8hg1.js +0 -363
- package/dist/chunk-9gyp8hg1.js.map +0 -14
- package/dist/chunk-9k93ah50.js.map +0 -11
- package/dist/chunk-b38szspf.js.map +0 -11
- package/dist/chunk-bx9q3cwv.js.map +0 -19
- package/dist/chunk-d09tj99x.js.map +0 -12
- package/dist/chunk-ere85b8y.js.map +0 -15
- package/dist/chunk-es1gxsbf.js.map +0 -13
- package/dist/chunk-gsjm1wms.js.map +0 -10
- package/dist/chunk-hjzdd750.js.map +0 -49
- package/dist/chunk-hkc3jct7.js.map +0 -10
- package/dist/chunk-hvsb78a1.js.map +0 -20
- package/dist/chunk-k6q3n2sc.js.map +0 -12
- package/dist/chunk-n33z5bjw.js.map +0 -66
- 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-rrzt8jdy.js.map +0 -14
- package/dist/chunk-s16apyk9.js +0 -256
- package/dist/chunk-s16apyk9.js.map +0 -16
- package/dist/chunk-s54c868q.js +0 -307
- package/dist/chunk-s54c868q.js.map +0 -12
- package/dist/chunk-tpn40322.js.map +0 -19
- package/dist/chunk-tw03bsmb.js.map +0 -11
- package/dist/chunk-v4jbb3rs.js.map +0 -10
- package/dist/chunk-vpq4shxz.js.map +0 -39
- package/dist/chunk-yxd3nnqt.js.map +0 -11
- package/dist/chunk-yzwja0mj.js.map +0 -14
- 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-fkgc1wt8.js.map → chunk-0phpbbvm.js.map} +0 -0
- /package/dist/{chunk-y0c4e6ex.js.map → chunk-3gbefjg5.js.map} +0 -0
- /package/dist/{chunk-fa02jy15.js.map → chunk-48jezz3j.js.map} +0 -0
- /package/dist/{chunk-c85m1hyj.js.map → chunk-6n69k945.js.map} +0 -0
- /package/dist/{chunk-xfs8x8m9.js.map → chunk-6p0pastb.js.map} +0 -0
- /package/dist/{chunk-t7x8dmn0.js.map → chunk-6y0mkhex.js.map} +0 -0
- /package/dist/{chunk-v9xd5wzd.js.map → chunk-bab05bhg.js.map} +0 -0
- /package/dist/{chunk-gc4ntf7d.js.map → chunk-cwdzcv37.js.map} +0 -0
- /package/dist/{chunk-vyf9kfqf.js.map → chunk-dp0cdtj2.js.map} +0 -0
- /package/dist/{chunk-br3k6qbf.js.map → chunk-fm62y49k.js.map} +0 -0
- /package/dist/{chunk-9ybhtmg4.js.map → chunk-g663fahq.js.map} +0 -0
- /package/dist/{chunk-9w055r5b.js.map → chunk-hwarjrgf.js.map} +0 -0
- /package/dist/{chunk-9dmt152s.js.map → chunk-hyesv9dv.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-dk8tkk5f.js.map → chunk-n9zpx9c6.js.map} +0 -0
- /package/dist/{chunk-7t429e3f.js.map → chunk-npcr0228.js.map} +0 -0
- /package/dist/{chunk-z4m0yz8c.js.map → chunk-q4pmvkg0.js.map} +0 -0
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
parseSixbFailure2
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-zbc929zg.js";
|
|
5
5
|
import {
|
|
6
|
-
AGENT_RUN_FAILURE_CODES2
|
|
7
|
-
|
|
6
|
+
AGENT_RUN_FAILURE_CODES2,
|
|
7
|
+
AGENT_APPROVAL_STATUSES2
|
|
8
|
+
} from "./chunk-18sk89cg.js";
|
|
9
|
+
import {
|
|
10
|
+
isModelUiChunk
|
|
11
|
+
} from "./chunk-kcqpk9w1.js";
|
|
8
12
|
import {
|
|
9
|
-
isJsonValue2,
|
|
10
13
|
isPlainRecord
|
|
11
14
|
} from "./chunk-wy0qdqfm.js";
|
|
12
15
|
|
|
@@ -43,6 +46,47 @@ function agentRunActivityEvent2(run, occurredAt = new Date) {
|
|
|
43
46
|
function isAgentRunActivityEvent2(value) {
|
|
44
47
|
return isPlainRecord(value) && value.schemaVersion === AGENT_ACTIVITY_STREAM_SCHEMA_VERSION2 && value.type === "agent.run.activity" && typeof value.projectId === "string" && typeof value.runId === "string" && typeof value.threadId === "string" && isAgentRunStatus(value.status) && typeof value.attempt === "number" && Number.isFinite(value.attempt) && typeof value.occurredAt === "string";
|
|
45
48
|
}
|
|
49
|
+
function agentApprovalActivityEvent(approval, occurredAt = new Date) {
|
|
50
|
+
return {
|
|
51
|
+
schemaVersion: AGENT_ACTIVITY_STREAM_SCHEMA_VERSION2,
|
|
52
|
+
type: "agent.approval.activity",
|
|
53
|
+
projectId: approval.projectId,
|
|
54
|
+
approvalId: approval.id,
|
|
55
|
+
threadId: approval.threadId,
|
|
56
|
+
runId: approval.runId,
|
|
57
|
+
status: approval.status,
|
|
58
|
+
hasOutcome: approval.outcome !== undefined,
|
|
59
|
+
occurredAt: occurredAt.toISOString()
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function isAgentApprovalActivityEvent2(value) {
|
|
63
|
+
return isPlainRecord(value) && value.schemaVersion === AGENT_ACTIVITY_STREAM_SCHEMA_VERSION2 && value.type === "agent.approval.activity" && typeof value.projectId === "string" && typeof value.approvalId === "string" && typeof value.threadId === "string" && typeof value.runId === "string" && AGENT_APPROVAL_STATUSES2.includes(value.status) && typeof value.hasOutcome === "boolean" && typeof value.occurredAt === "string";
|
|
64
|
+
}
|
|
65
|
+
function isAgentActivityEvent2(value) {
|
|
66
|
+
return isAgentRunActivityEvent2(value) || isAgentApprovalActivityEvent2(value);
|
|
67
|
+
}
|
|
68
|
+
async function publishAgentApprovalActivity(broker, approvals) {
|
|
69
|
+
const first = approvals[0];
|
|
70
|
+
if (!first)
|
|
71
|
+
return;
|
|
72
|
+
await broker.ensureStream({
|
|
73
|
+
projectId: first.projectId,
|
|
74
|
+
stream: agentActivityStreamDefinition2()
|
|
75
|
+
});
|
|
76
|
+
await broker.append({
|
|
77
|
+
projectId: first.projectId,
|
|
78
|
+
streamId: AGENT_ACTIVITY_STREAM_ID2,
|
|
79
|
+
records: approvals.map((approval) => {
|
|
80
|
+
const event = agentApprovalActivityEvent(approval);
|
|
81
|
+
return {
|
|
82
|
+
name: event.type,
|
|
83
|
+
key: event.threadId,
|
|
84
|
+
payload: event,
|
|
85
|
+
idempotencyKey: `${event.approvalId}:${event.status}${event.hasOutcome ? ":outcome" : ""}`
|
|
86
|
+
};
|
|
87
|
+
})
|
|
88
|
+
});
|
|
89
|
+
}
|
|
46
90
|
async function publishAgentRunActivity2(broker, run) {
|
|
47
91
|
const event = agentRunActivityEvent2(run);
|
|
48
92
|
await broker.ensureStream({
|
|
@@ -109,6 +153,137 @@ async function subscribeAgentRunCancel2(broker, params, onCancel) {
|
|
|
109
153
|
names: [AGENT_RUN_CANCEL_RECORD2]
|
|
110
154
|
}, () => onCancel());
|
|
111
155
|
}
|
|
156
|
+
function agentThreadInboxStreamId2(threadId) {
|
|
157
|
+
return `agents.threads.${threadId}.inbox`;
|
|
158
|
+
}
|
|
159
|
+
function agentRunInboxStreamId2(runId) {
|
|
160
|
+
return `agents.runs.${runId}.inbox`;
|
|
161
|
+
}
|
|
162
|
+
var AGENT_MAIL_RECORD = "agent.mail";
|
|
163
|
+
var AGENT_INBOX_RETENTION = {
|
|
164
|
+
maxAgeMs: 8 * 24 * 60 * 60 * 1000,
|
|
165
|
+
maxRecords: 1000
|
|
166
|
+
};
|
|
167
|
+
function inboxStreamDefinition(inbox) {
|
|
168
|
+
return { id: inboxStreamId(inbox), retention: AGENT_INBOX_RETENTION };
|
|
169
|
+
}
|
|
170
|
+
function inboxStreamId(inbox) {
|
|
171
|
+
return "threadId" in inbox ? agentThreadInboxStreamId2(inbox.threadId) : agentRunInboxStreamId2(inbox.runId);
|
|
172
|
+
}
|
|
173
|
+
var AGENT_MAIL_KINDS = ["message", "question", "answer", "deferred"];
|
|
174
|
+
function isKnownAgentMailKind2(kind) {
|
|
175
|
+
return AGENT_MAIL_KINDS.includes(kind);
|
|
176
|
+
}
|
|
177
|
+
function isReceivedAgentMail(value) {
|
|
178
|
+
return isPlainRecord(value) && typeof value.id === "string" && typeof value.fromRunId === "string" && (typeof value.toThreadId === "string" || typeof value.toRunId === "string" && typeof value.fromThreadId === "string") && typeof value.kind === "string" && value.kind.length > 0 && (value.inReplyTo === undefined || typeof value.inReplyTo === "string") && typeof value.text === "string" && typeof value.sentAt === "string";
|
|
179
|
+
}
|
|
180
|
+
function isFor(mail, inbox) {
|
|
181
|
+
return "threadId" in inbox ? "toThreadId" in mail && mail.toThreadId === inbox.threadId : ("toRunId" in mail) && mail.toRunId === inbox.runId;
|
|
182
|
+
}
|
|
183
|
+
function recipientOf(mail) {
|
|
184
|
+
return "toThreadId" in mail ? { threadId: mail.toThreadId } : { runId: mail.toRunId };
|
|
185
|
+
}
|
|
186
|
+
async function publishAgentMail2(broker, params) {
|
|
187
|
+
const { projectId, mail } = params;
|
|
188
|
+
const inbox = recipientOf(mail);
|
|
189
|
+
await broker.ensureStream({ projectId, stream: inboxStreamDefinition(inbox) });
|
|
190
|
+
await broker.append({
|
|
191
|
+
projectId,
|
|
192
|
+
streamId: inboxStreamId(inbox),
|
|
193
|
+
records: [
|
|
194
|
+
{
|
|
195
|
+
name: AGENT_MAIL_RECORD,
|
|
196
|
+
key: "threadId" in inbox ? inbox.threadId : inbox.runId,
|
|
197
|
+
payload: mail,
|
|
198
|
+
idempotencyKey: mail.id
|
|
199
|
+
}
|
|
200
|
+
]
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
function subscribeAgentMail2(broker, params, onMail) {
|
|
204
|
+
return subscribeAgentInbox2(broker, params, { mail: onMail });
|
|
205
|
+
}
|
|
206
|
+
async function subscribeAgentInbox2(broker, params, on) {
|
|
207
|
+
const { inbox } = params;
|
|
208
|
+
await broker.ensureStream({
|
|
209
|
+
projectId: params.projectId,
|
|
210
|
+
stream: inboxStreamDefinition(inbox)
|
|
211
|
+
});
|
|
212
|
+
return broker.subscribe({
|
|
213
|
+
projectId: params.projectId,
|
|
214
|
+
streamId: inboxStreamId(inbox),
|
|
215
|
+
from: "earliest",
|
|
216
|
+
names: on.childFinished ? [AGENT_MAIL_RECORD, AGENT_CHILD_FINISHED_RECORD] : [AGENT_MAIL_RECORD]
|
|
217
|
+
}, (records) => {
|
|
218
|
+
const mail = [];
|
|
219
|
+
const finished = [];
|
|
220
|
+
for (const { name, payload } of records) {
|
|
221
|
+
if (name === AGENT_MAIL_RECORD) {
|
|
222
|
+
if (isReceivedAgentMail(payload) && isFor(payload, inbox))
|
|
223
|
+
mail.push(payload);
|
|
224
|
+
} else if ("runId" in inbox && isAgentChildFinished(payload) && payload.parentRunId === inbox.runId) {
|
|
225
|
+
finished.push(payload.runId);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
if (mail.length > 0)
|
|
229
|
+
on.mail(mail);
|
|
230
|
+
if (finished.length > 0)
|
|
231
|
+
on.childFinished?.(finished);
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
var AGENT_CHILD_FINISHED_RECORD = "agent.child.finished";
|
|
235
|
+
function isAgentChildFinished(value) {
|
|
236
|
+
return isPlainRecord(value) && typeof value.runId === "string" && typeof value.parentRunId === "string" && isTerminalAgentRunStatus(value.status);
|
|
237
|
+
}
|
|
238
|
+
async function publishAgentChildFinished2(broker, run) {
|
|
239
|
+
if (run.status === "queued" || run.status === "running")
|
|
240
|
+
return;
|
|
241
|
+
const finished = {
|
|
242
|
+
runId: run.id,
|
|
243
|
+
parentRunId: run.parentRunId,
|
|
244
|
+
status: run.status
|
|
245
|
+
};
|
|
246
|
+
const inbox = { runId: run.parentRunId };
|
|
247
|
+
await broker.ensureStream({ projectId: run.projectId, stream: inboxStreamDefinition(inbox) });
|
|
248
|
+
await broker.append({
|
|
249
|
+
projectId: run.projectId,
|
|
250
|
+
streamId: inboxStreamId(inbox),
|
|
251
|
+
records: [
|
|
252
|
+
{
|
|
253
|
+
name: AGENT_CHILD_FINISHED_RECORD,
|
|
254
|
+
key: run.parentRunId,
|
|
255
|
+
payload: finished,
|
|
256
|
+
idempotencyKey: `${run.id}:${run.attempt}:finished:${run.status}`
|
|
257
|
+
}
|
|
258
|
+
]
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
async function readAgentMail2(broker, params) {
|
|
262
|
+
const mail = [];
|
|
263
|
+
const streamId = inboxStreamId(params.inbox);
|
|
264
|
+
let cursor = params.afterCursor;
|
|
265
|
+
for (;; ) {
|
|
266
|
+
const page = await broker.read({
|
|
267
|
+
projectId: params.projectId,
|
|
268
|
+
streamId,
|
|
269
|
+
names: [AGENT_MAIL_RECORD],
|
|
270
|
+
...cursor === undefined ? {} : { afterCursor: cursor }
|
|
271
|
+
});
|
|
272
|
+
for (const record of page.records) {
|
|
273
|
+
if (!isReceivedAgentMail(record.payload)) {
|
|
274
|
+
console.error(`[Sixb] Agent inbox '${streamId}' record '${record.cursor}' is not mail; it is skipped.`);
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
277
|
+
if (isFor(record.payload, params.inbox))
|
|
278
|
+
mail.push(record.payload);
|
|
279
|
+
}
|
|
280
|
+
const previous = cursor;
|
|
281
|
+
cursor = page.cursor ?? cursor;
|
|
282
|
+
if (!page.hasMore || cursor === previous)
|
|
283
|
+
break;
|
|
284
|
+
}
|
|
285
|
+
return { mail, ...cursor === undefined ? {} : { cursor } };
|
|
286
|
+
}
|
|
112
287
|
var AGENT_COMPACTION_FAILURE_CODES2 = [
|
|
113
288
|
"context_limit_exceeded",
|
|
114
289
|
"summary_failed",
|
|
@@ -154,7 +329,7 @@ function isAgentRunStreamEvent2(value) {
|
|
|
154
329
|
case "agent.compaction.failed":
|
|
155
330
|
return isAgentContextCheckpointReason(value.reason) && AGENT_COMPACTION_FAILURE_CODES2.includes(value.errorCode);
|
|
156
331
|
case "agent.ui.chunk":
|
|
157
|
-
return Number.isInteger(value.chunkIndex) &&
|
|
332
|
+
return Number.isInteger(value.chunkIndex) && isModelUiChunk(value.chunk);
|
|
158
333
|
case "agent.message.finalized":
|
|
159
334
|
return typeof value.messageId === "string";
|
|
160
335
|
case "agent.run.finished":
|
|
@@ -223,8 +398,10 @@ async function publishAgentRunFinished2(broker, run) {
|
|
|
223
398
|
});
|
|
224
399
|
if (run.kind === "conversation")
|
|
225
400
|
await publishAgentRunActivity2(broker, run);
|
|
401
|
+
else
|
|
402
|
+
await publishAgentChildFinished2(broker, run);
|
|
226
403
|
}
|
|
227
404
|
|
|
228
|
-
export { AGENT_RUN_STREAM_SCHEMA_VERSION2, DEFAULT_AGENT_RUN_STREAM_RETENTION2, AGENT_ACTIVITY_STREAM_SCHEMA_VERSION2, AGENT_ACTIVITY_STREAM_ID2, DEFAULT_AGENT_ACTIVITY_STREAM_RETENTION2, agentActivityStreamDefinition2, agentRunActivityEvent2, isAgentRunActivityEvent2, publishAgentRunActivity2, agentRunStreamId2, agentRunStreamDefinition2, agentRunControlStreamId2, AGENT_RUN_CANCEL_RECORD2, agentRunControlStreamDefinition2, publishAgentRunCancel2, subscribeAgentRunCancel2, AGENT_COMPACTION_FAILURE_CODES2, agentRunFinishedEvent2, agentRunStreamEventBase2, isAgentRunStreamEvent2, agentRunStreamIdempotencyKey2, publishAgentRunFinished2 };
|
|
405
|
+
export { AGENT_RUN_STREAM_SCHEMA_VERSION2, DEFAULT_AGENT_RUN_STREAM_RETENTION2, AGENT_ACTIVITY_STREAM_SCHEMA_VERSION2, AGENT_ACTIVITY_STREAM_ID2, DEFAULT_AGENT_ACTIVITY_STREAM_RETENTION2, agentActivityStreamDefinition2, agentRunActivityEvent2, isAgentRunActivityEvent2, isAgentApprovalActivityEvent2, isAgentActivityEvent2, publishAgentApprovalActivity, publishAgentRunActivity2, agentRunStreamId2, agentRunStreamDefinition2, agentRunControlStreamId2, AGENT_RUN_CANCEL_RECORD2, agentRunControlStreamDefinition2, publishAgentRunCancel2, subscribeAgentRunCancel2, agentThreadInboxStreamId2, agentRunInboxStreamId2, isKnownAgentMailKind2, publishAgentMail2, subscribeAgentMail2, subscribeAgentInbox2, publishAgentChildFinished2, readAgentMail2, AGENT_COMPACTION_FAILURE_CODES2, agentRunFinishedEvent2, agentRunStreamEventBase2, isAgentRunStreamEvent2, agentRunStreamIdempotencyKey2, publishAgentRunFinished2 };
|
|
229
406
|
|
|
230
|
-
//# debugId=
|
|
407
|
+
//# debugId=8695CFFE3CAE404964756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/agents/streams/protocol.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type { Broker, BrokerStreamDefinition } from \"../../broker\"\nimport { parseSixbFailure } from \"../../errors/internal\"\nimport type { SixbFailure } from \"../../errors/types\"\nimport { isPlainRecord, type JsonValue } from \"../../json\"\nimport { isModelUiChunk, type ModelUiChunk } from \"../../models/events\"\nimport {\n AGENT_APPROVAL_STATUSES,\n AGENT_RUN_FAILURE_CODES,\n type AgentApprovalRecord,\n type AgentApprovalStatus,\n type AgentContextCheckpointReason,\n type AgentRunFailureCode,\n type AgentRunRecord,\n type ConversationAgentRunRecord,\n type SubagentRunRecord,\n} from \"../../storage/agents/types\"\n\nexport const AGENT_RUN_STREAM_SCHEMA_VERSION = 1 as const\nexport const DEFAULT_AGENT_RUN_STREAM_RETENTION = {\n maxAgeMs: 2 * 60 * 60 * 1000, // 2 hours\n maxRecords: 5_000,\n} as const\n\nexport const AGENT_ACTIVITY_STREAM_SCHEMA_VERSION = 1 as const\nexport const AGENT_ACTIVITY_STREAM_ID = \"agents.activity\" as const\nexport const DEFAULT_AGENT_ACTIVITY_STREAM_RETENTION = {\n maxAgeMs: 24 * 60 * 60 * 1000, // 24 hours\n maxRecords: 10_000,\n} as const\n\nexport interface AgentRunActivityEvent {\n readonly schemaVersion: typeof AGENT_ACTIVITY_STREAM_SCHEMA_VERSION\n readonly type: \"agent.run.activity\"\n readonly projectId: string\n readonly runId: string\n readonly threadId: string\n readonly status: AgentRunRecord[\"status\"]\n readonly attempt: number\n readonly occurredAt: string\n}\n\nexport function agentActivityStreamDefinition(): BrokerStreamDefinition {\n return {\n id: AGENT_ACTIVITY_STREAM_ID,\n retention: DEFAULT_AGENT_ACTIVITY_STREAM_RETENTION,\n }\n}\n\nexport function agentRunActivityEvent(\n run: ConversationAgentRunRecord,\n occurredAt: Date = new Date()\n): AgentRunActivityEvent {\n return {\n schemaVersion: AGENT_ACTIVITY_STREAM_SCHEMA_VERSION,\n type: \"agent.run.activity\",\n projectId: run.projectId,\n runId: run.id,\n threadId: run.threadId,\n status: run.status,\n attempt: run.attempt,\n occurredAt: occurredAt.toISOString(),\n }\n}\n\nexport function isAgentRunActivityEvent(value: unknown): value is AgentRunActivityEvent {\n return (\n isPlainRecord(value) &&\n value.schemaVersion === AGENT_ACTIVITY_STREAM_SCHEMA_VERSION &&\n value.type === \"agent.run.activity\" &&\n typeof value.projectId === \"string\" &&\n typeof value.runId === \"string\" &&\n typeof value.threadId === \"string\" &&\n isAgentRunStatus(value.status) &&\n typeof value.attempt === \"number\" &&\n Number.isFinite(value.attempt) &&\n typeof value.occurredAt === \"string\"\n )\n}\n\n/**\n * A held call of a thread's turn changed: it was held, decided, ran, or was set aside. Clients read\n * the thread's approvals again.\n */\nexport interface AgentApprovalActivityEvent {\n readonly schemaVersion: typeof AGENT_ACTIVITY_STREAM_SCHEMA_VERSION\n readonly type: \"agent.approval.activity\"\n readonly projectId: string\n readonly approvalId: string\n readonly threadId: string\n /** The conversation turn the call belongs to. */\n readonly runId: string\n readonly status: AgentApprovalStatus\n /** Whether the approved call ran and has its outcome. */\n readonly hasOutcome: boolean\n readonly occurredAt: string\n}\n\n/** Everything the project's activity feed carries. */\nexport type AgentActivityEvent = AgentRunActivityEvent | AgentApprovalActivityEvent\n\nexport function agentApprovalActivityEvent(\n approval: AgentApprovalRecord,\n occurredAt: Date = new Date()\n): AgentApprovalActivityEvent {\n return {\n schemaVersion: AGENT_ACTIVITY_STREAM_SCHEMA_VERSION,\n type: \"agent.approval.activity\",\n projectId: approval.projectId,\n approvalId: approval.id,\n threadId: approval.threadId,\n runId: approval.runId,\n status: approval.status,\n hasOutcome: approval.outcome !== undefined,\n occurredAt: occurredAt.toISOString(),\n }\n}\n\nexport function isAgentApprovalActivityEvent(value: unknown): value is AgentApprovalActivityEvent {\n return (\n isPlainRecord(value) &&\n value.schemaVersion === AGENT_ACTIVITY_STREAM_SCHEMA_VERSION &&\n value.type === \"agent.approval.activity\" &&\n typeof value.projectId === \"string\" &&\n typeof value.approvalId === \"string\" &&\n typeof value.threadId === \"string\" &&\n typeof value.runId === \"string\" &&\n (AGENT_APPROVAL_STATUSES as readonly unknown[]).includes(value.status) &&\n typeof value.hasOutcome === \"boolean\" &&\n typeof value.occurredAt === \"string\"\n )\n}\n\nexport function isAgentActivityEvent(value: unknown): value is AgentActivityEvent {\n return isAgentRunActivityEvent(value) || isAgentApprovalActivityEvent(value)\n}\n\n/** Announce held calls that changed, in one append. Each change is announced once. */\nexport async function publishAgentApprovalActivity(\n broker: Broker,\n approvals: readonly AgentApprovalRecord[]\n): Promise<void> {\n const first = approvals[0]\n if (!first) return\n\n await broker.ensureStream({\n projectId: first.projectId,\n stream: agentActivityStreamDefinition(),\n })\n await broker.append({\n projectId: first.projectId,\n streamId: AGENT_ACTIVITY_STREAM_ID,\n records: approvals.map((approval) => {\n const event = agentApprovalActivityEvent(approval)\n return {\n name: event.type,\n key: event.threadId,\n // The event is composed only of validated JSON primitives.\n payload: event as unknown as JsonValue,\n idempotencyKey: `${event.approvalId}:${event.status}${event.hasOutcome ? \":outcome\" : \"\"}`,\n }\n }),\n })\n}\n\nexport async function publishAgentRunActivity(\n broker: Broker,\n run: ConversationAgentRunRecord\n): Promise<void> {\n const event = agentRunActivityEvent(run)\n await broker.ensureStream({\n projectId: run.projectId,\n stream: agentActivityStreamDefinition(),\n })\n await broker.append({\n projectId: run.projectId,\n streamId: AGENT_ACTIVITY_STREAM_ID,\n records: [\n {\n name: event.type,\n key: event.threadId,\n // The event is composed only of validated JSON primitives.\n payload: event as unknown as JsonValue,\n idempotencyKey: `${event.runId}:${event.attempt}:${event.status}`,\n },\n ],\n })\n}\n\nexport type AgentRunStreamId = `agents.runs.${string}`\n\nexport function agentRunStreamId(runId: string): AgentRunStreamId {\n return `agents.runs.${runId}`\n}\n\nexport function agentRunStreamDefinition(runId: string): BrokerStreamDefinition {\n return {\n id: agentRunStreamId(runId),\n retention: DEFAULT_AGENT_RUN_STREAM_RETENTION,\n }\n}\n\ntype AgentRunStreamEventBase = {\n readonly schemaVersion: typeof AGENT_RUN_STREAM_SCHEMA_VERSION\n readonly projectId: string\n readonly runId: string\n readonly attempt: number\n readonly occurredAt: string\n} & (\n | {\n readonly threadId: string\n readonly parentRunId?: never\n }\n | {\n readonly parentRunId: string\n readonly threadId?: never\n }\n)\n\n// ── Control stream (worker-inbound) ─────────────────────────────────────────────────────────────\n//\n// A per-run channel the API layer publishes to and the worker subscribes to — the reverse direction\n// of the event stream above. It carries only a cancel signal, and is addressed by `runId` (not a run\n// record), so a cancel works even before the worker has reserved the run. Kept separate from the\n// event stream so control records never reach the browser client.\n\nexport type AgentRunControlStreamId = `agents.runs.${string}.control`\n\nexport function agentRunControlStreamId(runId: string): AgentRunControlStreamId {\n return `agents.runs.${runId}.control`\n}\n\n/** The only control record: a request to stop the run. */\nexport const AGENT_RUN_CANCEL_RECORD = \"agent.run.cancel\"\n\n// A cancel only needs to outlive the queue wait plus one turn, so retention is short and tiny.\nconst AGENT_RUN_CONTROL_RETENTION = { maxAgeMs: 30 * 60 * 1000, maxRecords: 16 } as const\n\nexport function agentRunControlStreamDefinition(runId: string): BrokerStreamDefinition {\n return { id: agentRunControlStreamId(runId), retention: AGENT_RUN_CONTROL_RETENTION }\n}\n\n/**\n * Signal a run to stop. Publishing is addressed by `runId`, so it works whether the run is queued,\n * reserved, or being drained — the worker picks the record up when it subscribes.\n */\nexport async function publishAgentRunCancel(\n broker: Broker,\n params: { readonly projectId: string; readonly runId: string }\n): Promise<void> {\n await broker.ensureStream({\n projectId: params.projectId,\n stream: agentRunControlStreamDefinition(params.runId),\n })\n await broker.append({\n projectId: params.projectId,\n streamId: agentRunControlStreamId(params.runId),\n records: [\n {\n name: AGENT_RUN_CANCEL_RECORD,\n key: params.runId,\n payload: { runId: params.runId },\n idempotencyKey: `${params.runId}:cancel`,\n },\n ],\n })\n}\n\n/**\n * Watch a run's control stream and invoke `onCancel` when a cancel arrives. Reads from `earliest` so\n * a cancel published before the worker subscribed (a run stopped while still queued) is still seen.\n * Returns the unsubscribe handle.\n */\nexport async function subscribeAgentRunCancel(\n broker: Broker,\n params: { readonly projectId: string; readonly runId: string },\n onCancel: () => void\n): Promise<() => void> {\n await broker.ensureStream({\n projectId: params.projectId,\n stream: agentRunControlStreamDefinition(params.runId),\n })\n return broker.subscribe(\n {\n projectId: params.projectId,\n streamId: agentRunControlStreamId(params.runId),\n from: \"earliest\",\n names: [AGENT_RUN_CANCEL_RECORD],\n },\n () => onCancel()\n )\n}\n\n// ── Inbox streams (mail between a turn and its sub-agents) ──────────────────────────────────────\n//\n// A sub-agent's thread has an inbox its runs read at each step boundary: its parent steering it,\n// and the parent's reply to its question. Every run of the child reads the same one. A turn has\n// one too, where its children ask it. Its durable record is the sender's tool call and the\n// reader's thread, which keeps each `mail` part where it was read, or the tool result. An answer\n// the parent could only give in a later turn starts the run that continues the child, never through\n// these streams. A thread's inbox outlives the turn only so that a child paused on a held call,\n// which a later turn continues once the user decides, can still be given what it did not read: it\n// keeps mail as long as an approval waits, and a day more.\n//\n// A turn's inbox also hears when each of its children finishes, so one subscription per turn wakes\n// its waits for questions and for children alike.\n\nexport type AgentThreadInboxStreamId = `agents.threads.${string}.inbox`\nexport type AgentRunInboxStreamId = `agents.runs.${string}.inbox`\n\nexport function agentThreadInboxStreamId(threadId: string): AgentThreadInboxStreamId {\n return `agents.threads.${threadId}.inbox`\n}\n\nexport function agentRunInboxStreamId(runId: string): AgentRunInboxStreamId {\n return `agents.runs.${runId}.inbox`\n}\n\nconst AGENT_MAIL_RECORD = \"agent.mail\"\n\nconst AGENT_INBOX_RETENTION = {\n // An approval waits at most 7 days (`AGENT_APPROVAL_TTL_MS`).\n maxAgeMs: 8 * 24 * 60 * 60 * 1000,\n maxRecords: 1_000,\n} as const\n\n/** Whose inbox: a sub-agent's thread, or a turn its children ask. */\nexport type AgentInbox = { readonly threadId: string } | { readonly runId: string }\n\nfunction inboxStreamDefinition(inbox: AgentInbox): BrokerStreamDefinition {\n return { id: inboxStreamId(inbox), retention: AGENT_INBOX_RETENTION }\n}\n\nfunction inboxStreamId(inbox: AgentInbox): AgentThreadInboxStreamId | AgentRunInboxStreamId {\n return \"threadId\" in inbox\n ? agentThreadInboxStreamId(inbox.threadId)\n : agentRunInboxStreamId(inbox.runId)\n}\n\n/**\n * The kinds of mail this version writes and understands:\n *\n * - `message`: the parent steers its child;\n * - `question`: the child asks its parent, and waits;\n * - `answer`: the parent's reply to a question, `inReplyTo`;\n * - `deferred`: the parent's turn ended without one, so the child pauses on its question.\n */\nexport const AGENT_MAIL_KINDS = [\"message\", \"question\", \"answer\", \"deferred\"] as const\nexport type AgentMailKind = (typeof AGENT_MAIL_KINDS)[number]\n\n/**\n * One message between a turn and its sub-agent: to the child's thread, or, a question, from the\n * child's thread to the turn.\n */\nexport type AgentMail = {\n /** Unique per message: a sender writing it again, or the broker redelivering it, is the same. */\n readonly id: string\n readonly fromRunId: string\n readonly kind: AgentMailKind\n /** The question an `answer` or `deferred` replies to. */\n readonly inReplyTo?: string\n /** What the reader's model reads, whatever the kind: a reader that does not know it reads this. */\n readonly text: string\n readonly sentAt: string\n} & (\n | { readonly toThreadId: string }\n | {\n readonly toRunId: string\n /** The sub-agent's thread that asks. */\n readonly fromThreadId: string\n }\n)\n\n/**\n * Mail as a reader finds it. Its kind may be one a newer sender writes: the reader delivers its\n * text as a message rather than skipping it, so no reader's cursor passes mail it never delivered.\n */\nexport type ReceivedAgentMail = Omit<AgentMail, \"kind\"> & { readonly kind: string }\n\nexport function isKnownAgentMailKind(kind: string): kind is AgentMailKind {\n return (AGENT_MAIL_KINDS as readonly string[]).includes(kind)\n}\n\nfunction isReceivedAgentMail(value: unknown): value is ReceivedAgentMail {\n return (\n isPlainRecord(value) &&\n typeof value.id === \"string\" &&\n typeof value.fromRunId === \"string\" &&\n (typeof value.toThreadId === \"string\" ||\n (typeof value.toRunId === \"string\" && typeof value.fromThreadId === \"string\")) &&\n typeof value.kind === \"string\" &&\n value.kind.length > 0 &&\n (value.inReplyTo === undefined || typeof value.inReplyTo === \"string\") &&\n typeof value.text === \"string\" &&\n typeof value.sentAt === \"string\"\n )\n}\n\n/** Whether mail is addressed to this inbox. */\nfunction isFor(mail: ReceivedAgentMail, inbox: AgentInbox): boolean {\n return \"threadId\" in inbox\n ? \"toThreadId\" in mail && mail.toThreadId === inbox.threadId\n : \"toRunId\" in mail && mail.toRunId === inbox.runId\n}\n\nfunction recipientOf(mail: AgentMail): AgentInbox {\n return \"toThreadId\" in mail ? { threadId: mail.toThreadId } : { runId: mail.toRunId }\n}\n\n/** Write a message to its recipient's inbox. Idempotent by its id where the broker dedupes. */\nexport async function publishAgentMail(\n broker: Broker,\n params: { readonly projectId: string; readonly mail: AgentMail }\n): Promise<void> {\n const { projectId, mail } = params\n const inbox = recipientOf(mail)\n await broker.ensureStream({ projectId, stream: inboxStreamDefinition(inbox) })\n await broker.append({\n projectId,\n streamId: inboxStreamId(inbox),\n records: [\n {\n name: AGENT_MAIL_RECORD,\n key: \"threadId\" in inbox ? inbox.threadId : inbox.runId,\n // The mail is composed only of validated JSON primitives.\n payload: mail as unknown as JsonValue,\n idempotencyKey: mail.id,\n },\n ],\n })\n}\n\n/**\n * Call `onMail` with each page of mail to an inbox as it arrives, from its start. It is a wake: a\n * broker may deliver a record again, so the reader keeps each mail once by its id. Returns the\n * unsubscribe handle.\n */\nexport function subscribeAgentMail(\n broker: Broker,\n params: { readonly projectId: string; readonly inbox: AgentInbox },\n onMail: (mail: readonly ReceivedAgentMail[]) => void\n): Promise<() => void> {\n return subscribeAgentInbox(broker, params, { mail: onMail })\n}\n\n/**\n * Hear an inbox from its start: its mail, and, for a turn's with `childFinished`, the ids of its\n * children as each finishes. Both are wakes: a broker may deliver a record again, and a finish says\n * only that the child's run is worth reading. Returns the unsubscribe handle.\n */\nexport async function subscribeAgentInbox(\n broker: Broker,\n params: { readonly projectId: string; readonly inbox: AgentInbox },\n on: {\n readonly mail: (mail: readonly ReceivedAgentMail[]) => void\n readonly childFinished?: (runIds: readonly string[]) => void\n }\n): Promise<() => void> {\n const { inbox } = params\n await broker.ensureStream({\n projectId: params.projectId,\n stream: inboxStreamDefinition(inbox),\n })\n return broker.subscribe(\n {\n projectId: params.projectId,\n streamId: inboxStreamId(inbox),\n from: \"earliest\",\n names: on.childFinished\n ? [AGENT_MAIL_RECORD, AGENT_CHILD_FINISHED_RECORD]\n : [AGENT_MAIL_RECORD],\n },\n (records) => {\n const mail: ReceivedAgentMail[] = []\n const finished: string[] = []\n for (const { name, payload } of records) {\n if (name === AGENT_MAIL_RECORD) {\n if (isReceivedAgentMail(payload) && isFor(payload, inbox)) mail.push(payload)\n } else if (\n \"runId\" in inbox &&\n isAgentChildFinished(payload) &&\n payload.parentRunId === inbox.runId\n ) {\n finished.push(payload.runId)\n }\n }\n\n if (mail.length > 0) on.mail(mail)\n if (finished.length > 0) on.childFinished?.(finished)\n }\n )\n}\n\nconst AGENT_CHILD_FINISHED_RECORD = \"agent.child.finished\"\n\n/** A child stopped being at work: it ended, or paused on a held call or on its question. */\ninterface AgentChildFinished {\n readonly runId: string\n readonly parentRunId: string\n readonly status: \"succeeded\" | \"failed\" | \"cancelled\"\n}\n\nfunction isAgentChildFinished(value: unknown): value is AgentChildFinished {\n return (\n isPlainRecord(value) &&\n typeof value.runId === \"string\" &&\n typeof value.parentRunId === \"string\" &&\n isTerminalAgentRunStatus(value.status)\n )\n}\n\n/**\n * Tell the turn a child works under, on the turn's inbox, that the child finished. Its run stream\n * says so too, but that stream belongs to the transcript sink, which a worker may replace, and\n * hearing it would take one subscription per child, each carrying every chunk the child streams.\n * This record is the platform's, and one subscription per turn hears every child.\n */\nexport async function publishAgentChildFinished(\n broker: Broker,\n run: SubagentRunRecord\n): Promise<void> {\n if (run.status === \"queued\" || run.status === \"running\") return\n\n const finished: AgentChildFinished = {\n runId: run.id,\n parentRunId: run.parentRunId,\n status: run.status,\n }\n const inbox = { runId: run.parentRunId }\n await broker.ensureStream({ projectId: run.projectId, stream: inboxStreamDefinition(inbox) })\n await broker.append({\n projectId: run.projectId,\n streamId: inboxStreamId(inbox),\n records: [\n {\n name: AGENT_CHILD_FINISHED_RECORD,\n key: run.parentRunId,\n // The record is composed only of validated JSON primitives.\n payload: finished as unknown as JsonValue,\n idempotencyKey: `${run.id}:${run.attempt}:finished:${run.status}`,\n },\n ],\n })\n}\n\n/**\n * Read an inbox's mail after `afterCursor`, or from the start, every page of it. Carry the returned\n * cursor to the next read. A record that is not mail at all (no envelope, no text) cannot be\n * delivered: it is reported and passed, never silently.\n */\nexport async function readAgentMail(\n broker: Broker,\n params: { readonly projectId: string; readonly inbox: AgentInbox; readonly afterCursor?: string }\n): Promise<{ readonly mail: readonly ReceivedAgentMail[]; readonly cursor?: string }> {\n const mail: ReceivedAgentMail[] = []\n const streamId = inboxStreamId(params.inbox)\n let cursor = params.afterCursor\n\n for (;;) {\n const page = await broker.read({\n projectId: params.projectId,\n streamId,\n names: [AGENT_MAIL_RECORD],\n ...(cursor === undefined ? {} : { afterCursor: cursor }),\n })\n for (const record of page.records) {\n if (!isReceivedAgentMail(record.payload)) {\n console.error(\n `[Sixb] Agent inbox '${streamId}' record '${record.cursor}' is not mail; it is skipped.`\n )\n continue\n }\n if (isFor(record.payload, params.inbox)) mail.push(record.payload)\n }\n\n const previous = cursor\n cursor = page.cursor ?? cursor\n if (!page.hasMore || cursor === previous) break\n }\n\n return { mail, ...(cursor === undefined ? {} : { cursor }) }\n}\n\n/** Exact portable failure exposed by a terminal Agent run stream event. */\nexport type AgentRunFailure = SixbFailure<AgentRunFailureCode>\n\nexport const AGENT_COMPACTION_FAILURE_CODES = [\n \"context_limit_exceeded\",\n \"summary_failed\",\n \"checkpoint_failed\",\n] as const\nexport type AgentCompactionFailureCode = (typeof AGENT_COMPACTION_FAILURE_CODES)[number]\n\nexport type AgentRunStreamEvent =\n | (AgentRunStreamEventBase & {\n readonly type: \"agent.run.started\"\n readonly modelId?: string\n })\n | (AgentRunStreamEventBase & {\n readonly type: \"agent.compaction.started\"\n readonly reason: AgentContextCheckpointReason\n readonly estimatedInputTokensBefore: number\n })\n | (AgentRunStreamEventBase & {\n readonly type: \"agent.compaction.completed\"\n readonly reason: AgentContextCheckpointReason\n readonly checkpointId: string\n readonly estimatedInputTokensBefore: number\n readonly estimatedInputTokensAfter: number\n })\n | (AgentRunStreamEventBase & {\n readonly type: \"agent.compaction.failed\"\n readonly reason: AgentContextCheckpointReason\n readonly errorCode: AgentCompactionFailureCode\n })\n | (AgentRunStreamEventBase & {\n readonly type: \"agent.ui.chunk\"\n readonly chunkIndex: number\n readonly chunk: ModelUiChunk\n })\n | (AgentRunStreamEventBase & {\n readonly type: \"agent.message.finalized\"\n readonly messageId: string\n })\n | (AgentRunStreamEventBase & {\n readonly type: \"agent.run.finished\"\n readonly status: \"succeeded\" | \"failed\" | \"cancelled\"\n readonly finishReason?: string\n readonly error?: AgentRunFailure\n })\n\nexport type AgentRunFinishedEvent = Extract<AgentRunStreamEvent, { type: \"agent.run.finished\" }>\n\n// ── Record construction ──────────────────────────────────────────────────────────────────────────\n//\n// The wire format of run stream records — event shape, record name/key, and the idempotency-key\n// vocabulary — is owned here so every producer (the worker's stream sink, the server's queued\n// cancellation) shares one definition and cannot drift.\n\n/** Build the terminal stream event for a finished run. Throws if the run is not terminal. */\nexport function agentRunFinishedEvent(\n run: AgentRunRecord,\n occurredAt: Date = new Date()\n): AgentRunFinishedEvent {\n if (run.status === \"queued\" || run.status === \"running\") {\n throw new Error(\n `[Sixb] Agent run '${run.id}' is not terminal (status '${run.status}'), so it has no finished event.`\n )\n }\n return {\n ...agentRunStreamEventBase(run, occurredAt),\n type: \"agent.run.finished\",\n status: run.status,\n ...(run.finishReason === undefined ? {} : { finishReason: run.finishReason }),\n ...(run.error === undefined ? {} : { error: run.error }),\n }\n}\n\n/** Shared lineage for stream records emitted by conversational and headless runs. */\nexport function agentRunStreamEventBase(\n run: AgentRunRecord,\n occurredAt: Date = new Date()\n): AgentRunStreamEventBase {\n const common = {\n schemaVersion: AGENT_RUN_STREAM_SCHEMA_VERSION,\n projectId: run.projectId,\n runId: run.id,\n attempt: run.attempt,\n occurredAt: occurredAt.toISOString(),\n }\n return run.kind === \"conversation\"\n ? { ...common, threadId: run.threadId }\n : { ...common, parentRunId: run.parentRunId }\n}\n\n/** Validate an Agent stream payload using the same contract its producers use. */\nexport function isAgentRunStreamEvent(value: unknown): value is AgentRunStreamEvent {\n if (\n !isPlainRecord(value) ||\n value.schemaVersion !== AGENT_RUN_STREAM_SCHEMA_VERSION ||\n typeof value.projectId !== \"string\" ||\n typeof value.runId !== \"string\" ||\n typeof value.attempt !== \"number\" ||\n !Number.isFinite(value.attempt) ||\n typeof value.occurredAt !== \"string\" ||\n typeof value.type !== \"string\"\n ) {\n return false\n }\n const hasConversationLineage =\n typeof value.threadId === \"string\" && value.parentRunId === undefined\n const hasSubagentLineage = typeof value.parentRunId === \"string\" && value.threadId === undefined\n if (!hasConversationLineage && !hasSubagentLineage) return false\n\n switch (value.type) {\n case \"agent.run.started\":\n return value.modelId === undefined || typeof value.modelId === \"string\"\n case \"agent.compaction.started\":\n return (\n isAgentContextCheckpointReason(value.reason) &&\n isTokenEstimate(value.estimatedInputTokensBefore)\n )\n case \"agent.compaction.completed\":\n return (\n isAgentContextCheckpointReason(value.reason) &&\n typeof value.checkpointId === \"string\" &&\n isTokenEstimate(value.estimatedInputTokensBefore) &&\n isTokenEstimate(value.estimatedInputTokensAfter)\n )\n case \"agent.compaction.failed\":\n return (\n isAgentContextCheckpointReason(value.reason) &&\n AGENT_COMPACTION_FAILURE_CODES.includes(value.errorCode as AgentCompactionFailureCode)\n )\n case \"agent.ui.chunk\":\n // A chunk type this reader does not know fails here, so a newer producer's chunk is skipped.\n return Number.isInteger(value.chunkIndex) && isModelUiChunk(value.chunk)\n case \"agent.message.finalized\":\n return typeof value.messageId === \"string\"\n case \"agent.run.finished\":\n return (\n isTerminalAgentRunStatus(value.status) &&\n (value.finishReason === undefined || typeof value.finishReason === \"string\") &&\n (value.error === undefined || isAgentRunFailure(value.error))\n )\n default:\n return false\n }\n}\n\nfunction isAgentContextCheckpointReason(value: unknown): value is AgentContextCheckpointReason {\n return value === \"threshold\" || value === \"overflow\"\n}\n\nfunction isTokenEstimate(value: unknown): value is number {\n return Number.isSafeInteger(value) && (value as number) >= 0\n}\n\nfunction isTerminalAgentRunStatus(value: unknown): value is \"succeeded\" | \"failed\" | \"cancelled\" {\n return value === \"succeeded\" || value === \"failed\" || value === \"cancelled\"\n}\n\nfunction isAgentRunStatus(value: unknown): value is AgentRunRecord[\"status\"] {\n return value === \"queued\" || value === \"running\" || isTerminalAgentRunStatus(value)\n}\n\nfunction isAgentRunFailure(value: unknown): value is AgentRunFailure {\n if (!isPlainRecord(value)) return false\n try {\n parseSixbFailure(value, AGENT_RUN_FAILURE_CODES)\n return true\n } catch {\n return false\n }\n}\n\n/** Single owner of the idempotency-key vocabulary for agent run stream records. */\nexport function agentRunStreamIdempotencyKey(event: AgentRunStreamEvent): string {\n switch (event.type) {\n case \"agent.run.started\":\n return `${event.runId}:${event.attempt}:started`\n case \"agent.compaction.started\":\n return `${event.runId}:${event.attempt}:compaction:${event.reason}:started`\n case \"agent.compaction.completed\":\n return `${event.runId}:${event.attempt}:compaction:${event.checkpointId}:completed`\n case \"agent.compaction.failed\":\n return `${event.runId}:${event.attempt}:compaction:${event.reason}:failed:${event.errorCode}`\n case \"agent.ui.chunk\":\n return `${event.runId}:${event.attempt}:chunk:${event.chunkIndex}`\n case \"agent.message.finalized\":\n return `${event.runId}:${event.attempt}:message:${event.messageId}:finalized`\n case \"agent.run.finished\":\n return `${event.runId}:${event.attempt}:finished:${event.status}`\n }\n}\n\n/**\n * Ensure the run's stream and append its terminal record — mirrors {@link publishAgentRunCancel}.\n * Used where a terminal transition happens outside the worker (e.g. cancelling a queued run).\n */\nexport async function publishAgentRunFinished(broker: Broker, run: AgentRunRecord): Promise<void> {\n const event = agentRunFinishedEvent(run)\n await broker.ensureStream({\n projectId: run.projectId,\n stream: agentRunStreamDefinition(run.id),\n })\n await broker.append({\n projectId: run.projectId,\n streamId: agentRunStreamId(run.id),\n records: [\n {\n name: event.type,\n key: event.runId,\n // The event is built from JSON primitives only, so the round-trip is a safe narrowing.\n payload: JSON.parse(JSON.stringify(event)) as JsonValue,\n idempotencyKey: agentRunStreamIdempotencyKey(event),\n },\n ],\n })\n if (run.kind === \"conversation\") await publishAgentRunActivity(broker, run)\n else await publishAgentChildFinished(broker, run)\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "8695CFFE3CAE404964756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
import {
|
|
3
|
+
isCurrentUser
|
|
4
|
+
} from "./chunk-4y26vs3v.js";
|
|
5
|
+
import {
|
|
6
|
+
compareStrings,
|
|
7
|
+
getInvalidJsonValueReason2
|
|
8
|
+
} from "./chunk-wy0qdqfm.js";
|
|
9
|
+
|
|
2
10
|
// src/storage/objects/read-scope.ts
|
|
3
11
|
var OBJECT_READ_SCOPE_LIMITS = Object.freeze({
|
|
4
12
|
maxDepth: 32,
|
|
@@ -309,6 +317,152 @@ function reserveCount(current, count, limit, message) {
|
|
|
309
317
|
throw invalidScope(message);
|
|
310
318
|
return current + count;
|
|
311
319
|
}
|
|
320
|
+
var CONDITIONAL_READ_SCOPE_LIMITS = Object.freeze({
|
|
321
|
+
maxPredicateDepth: 32,
|
|
322
|
+
maxPredicateNodes: 4096
|
|
323
|
+
});
|
|
324
|
+
var SCALAR_KINDS = new Set([
|
|
325
|
+
"string",
|
|
326
|
+
"uuid",
|
|
327
|
+
"boolean",
|
|
328
|
+
"integer",
|
|
329
|
+
"double",
|
|
330
|
+
"decimal",
|
|
331
|
+
"date",
|
|
332
|
+
"timestamp",
|
|
333
|
+
"userRef"
|
|
334
|
+
]);
|
|
335
|
+
function compileConditionalObjectReadScope2(rawScope) {
|
|
336
|
+
const value = rawScope;
|
|
337
|
+
if (!isRecord(value) || value.kind !== "conditional") {
|
|
338
|
+
throw invalidScope("scope must be a conditional scope with a conditions array");
|
|
339
|
+
}
|
|
340
|
+
const source = captureArray(value.conditions, "conditions");
|
|
341
|
+
const budget = { nodes: 0 };
|
|
342
|
+
const objectTypeIds = new Set;
|
|
343
|
+
const conditions = [];
|
|
344
|
+
for (let index = 0;index < source.length; index += 1) {
|
|
345
|
+
const path = `conditions[${index}]`;
|
|
346
|
+
const condition = source.value[index];
|
|
347
|
+
if (!isRecord(condition)) {
|
|
348
|
+
throw invalidScope(`${path} must contain an object type and a predicate`);
|
|
349
|
+
}
|
|
350
|
+
const objectTypeId = nonEmptyString(condition.objectTypeId, `${path}.objectTypeId`);
|
|
351
|
+
if (objectTypeId.trim() !== objectTypeId) {
|
|
352
|
+
throw invalidScope(`${path}.objectTypeId must not start or end with whitespace`);
|
|
353
|
+
}
|
|
354
|
+
if (objectTypeIds.has(objectTypeId)) {
|
|
355
|
+
throw invalidScope(`${path} repeats the condition on '${objectTypeId}'`);
|
|
356
|
+
}
|
|
357
|
+
objectTypeIds.add(objectTypeId);
|
|
358
|
+
const predicate = capturePredicate(condition.predicate, `${path}.predicate`, 0, budget);
|
|
359
|
+
conditions.push(Object.freeze({ objectTypeId, predicate }));
|
|
360
|
+
}
|
|
361
|
+
conditions.sort((left, right) => compareStrings(left.objectTypeId, right.objectTypeId));
|
|
362
|
+
return Object.freeze({
|
|
363
|
+
kind: "conditional",
|
|
364
|
+
conditions: Object.freeze(conditions)
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
function capturePredicate(value, path, depth, budget) {
|
|
368
|
+
if (depth > CONDITIONAL_READ_SCOPE_LIMITS.maxPredicateDepth) {
|
|
369
|
+
throw invalidScope(`${path} exceeds the maximum predicate depth of ${CONDITIONAL_READ_SCOPE_LIMITS.maxPredicateDepth}`);
|
|
370
|
+
}
|
|
371
|
+
budget.nodes += 1;
|
|
372
|
+
if (budget.nodes > CONDITIONAL_READ_SCOPE_LIMITS.maxPredicateNodes) {
|
|
373
|
+
throw invalidScope(`scope exceeds the maximum of ${CONDITIONAL_READ_SCOPE_LIMITS.maxPredicateNodes} predicate nodes`);
|
|
374
|
+
}
|
|
375
|
+
if (!isRecord(value))
|
|
376
|
+
throw invalidScope(`${path} must be a query predicate`);
|
|
377
|
+
const op = value.op;
|
|
378
|
+
switch (op) {
|
|
379
|
+
case "and":
|
|
380
|
+
case "or": {
|
|
381
|
+
const items = captureArray(value.items, `${path}.items`);
|
|
382
|
+
if (items.length === 0)
|
|
383
|
+
throw invalidScope(`${path}.items must not be empty`);
|
|
384
|
+
const captured = [];
|
|
385
|
+
for (let index = 0;index < items.length; index += 1) {
|
|
386
|
+
captured.push(capturePredicate(items.value[index], `${path}.items[${index}]`, depth + 1, budget));
|
|
387
|
+
}
|
|
388
|
+
return Object.freeze({ op, items: Object.freeze(captured) });
|
|
389
|
+
}
|
|
390
|
+
case "not":
|
|
391
|
+
return Object.freeze({
|
|
392
|
+
op,
|
|
393
|
+
item: capturePredicate(value.item, `${path}.item`, depth + 1, budget)
|
|
394
|
+
});
|
|
395
|
+
case "constant":
|
|
396
|
+
return Object.freeze({ op, value: captureBoolean(value.value, `${path}.value`) });
|
|
397
|
+
case "exists": {
|
|
398
|
+
const propertyId = nonEmptyString(value.propertyId, `${path}.propertyId`);
|
|
399
|
+
return Object.freeze({ op, propertyId, value: captureBoolean(value.value, `${path}.value`) });
|
|
400
|
+
}
|
|
401
|
+
case "eq":
|
|
402
|
+
case "neq":
|
|
403
|
+
case "lt":
|
|
404
|
+
case "lte":
|
|
405
|
+
case "gt":
|
|
406
|
+
case "gte":
|
|
407
|
+
case "contains": {
|
|
408
|
+
const propertyId = nonEmptyString(value.propertyId, `${path}.propertyId`);
|
|
409
|
+
const compared = capturePredicateValue(value.value, `${path}.value`);
|
|
410
|
+
const scalarKind = captureScalarKind(value.scalarKind, `${path}.scalarKind`);
|
|
411
|
+
return Object.freeze({ op, propertyId, value: compared, ...scalarKind });
|
|
412
|
+
}
|
|
413
|
+
case "in": {
|
|
414
|
+
const propertyId = nonEmptyString(value.propertyId, `${path}.propertyId`);
|
|
415
|
+
const source = captureArray(value.values, `${path}.values`);
|
|
416
|
+
if (source.length === 0)
|
|
417
|
+
throw invalidScope(`${path}.values must not be empty`);
|
|
418
|
+
const values = [];
|
|
419
|
+
for (let index = 0;index < source.length; index += 1) {
|
|
420
|
+
values.push(capturePredicateValue(source.value[index], `${path}.values[${index}]`));
|
|
421
|
+
}
|
|
422
|
+
const scalarKind = captureScalarKind(value.scalarKind, `${path}.scalarKind`);
|
|
423
|
+
return Object.freeze({ op, propertyId, values: Object.freeze(values), ...scalarKind });
|
|
424
|
+
}
|
|
425
|
+
default:
|
|
426
|
+
throw invalidScope(`${path}.op must be a query predicate operator`);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
function capturePredicateValue(value, path) {
|
|
430
|
+
const reason = getInvalidJsonValueReason2(value, path);
|
|
431
|
+
if (reason)
|
|
432
|
+
throw invalidScope(`${path} must be a JSON value; ${reason}`);
|
|
433
|
+
const detached = JSON.parse(JSON.stringify(value));
|
|
434
|
+
if (containsCurrentUser(detached)) {
|
|
435
|
+
throw invalidScope(`${path} holds currentUser(); bind the condition to its reader first`);
|
|
436
|
+
}
|
|
437
|
+
return deepFreeze(detached);
|
|
438
|
+
}
|
|
439
|
+
function captureBoolean(value, path) {
|
|
440
|
+
if (typeof value !== "boolean")
|
|
441
|
+
throw invalidScope(`${path} must be a boolean`);
|
|
442
|
+
return value;
|
|
443
|
+
}
|
|
444
|
+
function captureScalarKind(value, path) {
|
|
445
|
+
if (value === undefined)
|
|
446
|
+
return {};
|
|
447
|
+
if (typeof value !== "string" || !SCALAR_KINDS.has(value)) {
|
|
448
|
+
throw invalidScope(`${path} must be a query scalar kind`);
|
|
449
|
+
}
|
|
450
|
+
return { scalarKind: value };
|
|
451
|
+
}
|
|
452
|
+
function containsCurrentUser(value) {
|
|
453
|
+
if (isCurrentUser(value))
|
|
454
|
+
return true;
|
|
455
|
+
if (Array.isArray(value))
|
|
456
|
+
return value.some(containsCurrentUser);
|
|
457
|
+
return isRecord(value) && Object.values(value).some(containsCurrentUser);
|
|
458
|
+
}
|
|
459
|
+
function deepFreeze(value) {
|
|
460
|
+
if (!isRecord(value))
|
|
461
|
+
return value;
|
|
462
|
+
for (const child of Object.values(value))
|
|
463
|
+
deepFreeze(child);
|
|
464
|
+
return Object.freeze(value);
|
|
465
|
+
}
|
|
312
466
|
function assertObjectReaderProject2(expectedProjectId, actualProjectId) {
|
|
313
467
|
if (actualProjectId !== expectedProjectId) {
|
|
314
468
|
throw new Error(`[Sixb] Object reader belongs to project '${expectedProjectId}', not '${actualProjectId}'.`);
|
|
@@ -398,6 +552,6 @@ function invalidScope(message) {
|
|
|
398
552
|
return new Error(`[Sixb] Invalid object read scope: ${message}.`);
|
|
399
553
|
}
|
|
400
554
|
|
|
401
|
-
export { compileSelectedObjectReadScope2, captureSelectedObjectReadScope, assertObjectReaderProject2 };
|
|
555
|
+
export { compileSelectedObjectReadScope2, captureSelectedObjectReadScope, compileConditionalObjectReadScope2, assertObjectReaderProject2 };
|
|
402
556
|
|
|
403
|
-
//# debugId=
|
|
557
|
+
//# debugId=36A43958C6815AC664756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/storage/objects/read-scope.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { compareStrings, getInvalidJsonValueReason } from \"../../json\"\nimport type { ObjectQueryPredicate, QueryScalarKind } from \"../../objects/query\"\nimport { isCurrentUser } from \"../../ontology/user-ref\"\nimport type {\n CompiledConditionalObjectReadScope,\n CompiledObjectReadObjectSelection,\n CompiledObjectReadRoot,\n CompiledObjectReadStep,\n CompiledSelectedObjectReadScope,\n ConditionalObjectReadScope,\n ObjectReadCondition,\n ObjectReadLinkDefinitionSelection,\n ObjectReadLinkSelection,\n ObjectReadNode,\n ObjectReadObjectSelection,\n ObjectReadRoot,\n SelectedObjectReadScope,\n} from \"./types\"\n\n/** Admission bounds applied before a raw selection is normalized or allocated by a provider. */\nexport const OBJECT_READ_SCOPE_LIMITS = Object.freeze({\n maxDepth: 32,\n maxNodes: 512,\n maxObjectSelections: 4_096,\n maxSteps: 2_048,\n maxPropertyOccurrences: 16_384,\n maxIdentifierCharacters: 1_000_000,\n})\n\n/**\n * Validate, detach, normalize, and flatten a finite selection exactly once.\n *\n * Every path occurrence receives its own node id. Reusing only `(sourceType, linkId)` would lose\n * provenance and let an object reached through one branch borrow nested authority from another.\n */\nexport function compileSelectedObjectReadScope(\n rawScope: SelectedObjectReadScope\n): CompiledSelectedObjectReadScope {\n const scope = captureSelectedObjectReadScope(rawScope)\n if (!isRecord(scope) || scope.kind !== \"selected\" || !Array.isArray(scope.roots)) {\n throw invalidScope(\"scope must be a selected scope with a roots array\")\n }\n\n const roots: CompiledObjectReadRoot[] = []\n const objects: CompiledObjectReadObjectSelection[] = []\n const steps: CompiledObjectReadStep[] = []\n const visiting = new Set<object>()\n let nextNodeId = 0\n let concreteStepCount = 0\n let objectSelectionCount = 0\n let propertyOccurrenceCount = 0\n let identifierCharacterCount = 0\n let compiledPropertyOccurrenceCount = 0\n let compiledIdentifierCharacterCount = 0\n\n const addIdentifier = (value: unknown, path: string): string => {\n const identifier = nonEmptyString(value, path)\n identifierCharacterCount += identifier.length\n if (identifierCharacterCount > OBJECT_READ_SCOPE_LIMITS.maxIdentifierCharacters) {\n throw invalidScope(\n `scope exceeds the maximum of ${OBJECT_READ_SCOPE_LIMITS.maxIdentifierCharacters} identifier characters`\n )\n }\n return identifier\n }\n\n const addPropertyOccurrences = (count: number): void => {\n propertyOccurrenceCount += count\n if (propertyOccurrenceCount > OBJECT_READ_SCOPE_LIMITS.maxPropertyOccurrences) {\n throw invalidScope(\n `scope exceeds the maximum of ${OBJECT_READ_SCOPE_LIMITS.maxPropertyOccurrences} selected property occurrences`\n )\n }\n }\n\n const addCompiledPropertyOccurrences = (count: number): void => {\n compiledPropertyOccurrenceCount += count\n if (compiledPropertyOccurrenceCount > OBJECT_READ_SCOPE_LIMITS.maxPropertyOccurrences) {\n throw invalidScope(\n `scope exceeds the maximum of ${OBJECT_READ_SCOPE_LIMITS.maxPropertyOccurrences} selected property occurrences after compilation`\n )\n }\n }\n\n const addCompiledIdentifierCharacters = (count: number): void => {\n compiledIdentifierCharacterCount += count\n if (compiledIdentifierCharacterCount > OBJECT_READ_SCOPE_LIMITS.maxIdentifierCharacters) {\n throw invalidScope(\n `scope exceeds the maximum of ${OBJECT_READ_SCOPE_LIMITS.maxIdentifierCharacters} identifier characters after compilation`\n )\n }\n }\n\n const visitNode = (node: ObjectReadNode, path: string, depth: number): number => {\n if (!isRecord(node) || !Array.isArray(node.objects) || !Array.isArray(node.links)) {\n throw invalidScope(`${path} must contain object and link selections`)\n }\n if (depth > OBJECT_READ_SCOPE_LIMITS.maxDepth) {\n throw invalidScope(\n `${path} exceeds the maximum link depth of ${OBJECT_READ_SCOPE_LIMITS.maxDepth}`\n )\n }\n if (nextNodeId >= OBJECT_READ_SCOPE_LIMITS.maxNodes) {\n throw invalidScope(\n `scope exceeds the maximum of ${OBJECT_READ_SCOPE_LIMITS.maxNodes} selection nodes`\n )\n }\n if (visiting.has(node)) throw invalidScope(`${path} contains a cyclic selection node`)\n visiting.add(node)\n\n const nodeId = nextNodeId++\n try {\n objectSelectionCount += node.objects.length\n if (objectSelectionCount > OBJECT_READ_SCOPE_LIMITS.maxObjectSelections) {\n throw invalidScope(\n `scope exceeds the maximum of ${OBJECT_READ_SCOPE_LIMITS.maxObjectSelections} object selections`\n )\n }\n\n for (const [objectIndex, object] of node.objects.entries()) {\n const objectPath = `${path}.objects[${objectIndex}]`\n if (!isRecord(object) || !Array.isArray(object.propertyIds)) {\n throw invalidScope(`${objectPath} must contain an object type and property ids`)\n }\n addIdentifier(object.objectTypeId, `${objectPath}.objectTypeId`)\n addPropertyOccurrences(object.propertyIds.length)\n for (const [propertyIndex, propertyId] of object.propertyIds.entries()) {\n addIdentifier(propertyId, `${objectPath}.propertyIds[${propertyIndex}]`)\n }\n }\n\n const normalizedObjects = normalizeObjects(node.objects, `${path}.objects`)\n if (normalizedObjects.length === 0) {\n throw invalidScope(`${path}.objects must contain at least one concrete object type`)\n }\n for (const object of normalizedObjects) {\n addCompiledPropertyOccurrences(object.propertyIds.length)\n addCompiledIdentifierCharacters(\n object.objectTypeId.length + identifierCharacters(object.propertyIds)\n )\n objects.push(Object.freeze({ nodeId, ...object }))\n }\n\n for (const [linkIndex, link] of node.links.entries()) {\n const linkPath = `${path}.links[${linkIndex}]`\n if (!isRecord(link) || !Array.isArray(link.definitions) || !isRecord(link.target)) {\n throw invalidScope(`${linkPath} must contain definitions and a target node`)\n }\n if (link.definitions.length === 0) {\n throw invalidScope(`${linkPath}.definitions must not be empty`)\n }\n\n const definitions = normalizeConcreteDefinitions(\n link.definitions,\n `${linkPath}.definitions`,\n addIdentifier,\n addPropertyOccurrences,\n addCompiledPropertyOccurrences,\n addCompiledIdentifierCharacters,\n () => {\n concreteStepCount += 1\n if (concreteStepCount > OBJECT_READ_SCOPE_LIMITS.maxSteps) {\n throw invalidScope(\n `scope exceeds the maximum of ${OBJECT_READ_SCOPE_LIMITS.maxSteps} concrete link steps`\n )\n }\n }\n )\n const parentTypes = new Set(normalizedObjects.map((object) => object.objectTypeId))\n for (const definition of definitions) {\n if (!parentTypes.has(definition.sourceObjectTypeId)) {\n throw invalidScope(\n `${linkPath} selects source type '${definition.sourceObjectTypeId}' outside its parent node`\n )\n }\n }\n\n const childNodeId = visitNode(\n link.target as unknown as ObjectReadNode,\n `${linkPath}.target`,\n depth + 1\n )\n const childTypes = new Set(\n objects\n .filter((object) => object.nodeId === childNodeId)\n .map((object) => object.objectTypeId)\n )\n const targetTypes = new Set(definitions.map((definition) => definition.targetObjectTypeId))\n if (!setsEqual(childTypes, targetTypes)) {\n throw invalidScope(\n `${linkPath}.target object types must exactly match its definition target types`\n )\n }\n\n for (const definition of definitions) {\n steps.push(\n Object.freeze({\n nodeId: childNodeId,\n parentNodeId: nodeId,\n ...definition,\n })\n )\n }\n }\n } finally {\n visiting.delete(node)\n }\n\n return nodeId\n }\n\n for (const [rootIndex, root] of scope.roots.entries()) {\n const path = `roots[${rootIndex}]`\n if (!isRecord(root) || !isRecord(root.anchor) || !isRecord(root.node)) {\n throw invalidScope(`${path} must contain an exact anchor and a selection node`)\n }\n const objectTypeId = addIdentifier(root.anchor.objectTypeId, `${path}.anchor.objectTypeId`)\n const primaryId = addIdentifier(root.anchor.primaryId, `${path}.anchor.primaryId`)\n addCompiledIdentifierCharacters(objectTypeId.length + primaryId.length)\n const nodeId = visitNode(root.node as unknown as ObjectReadNode, `${path}.node`, 0)\n if (\n !objects.some((object) => object.nodeId === nodeId && object.objectTypeId === objectTypeId)\n ) {\n throw invalidScope(`${path}.anchor type '${objectTypeId}' is not selected by its root node`)\n }\n roots.push(Object.freeze({ nodeId, objectTypeId, primaryId }))\n }\n\n return Object.freeze({\n kind: \"selected\",\n roots: Object.freeze(roots),\n objects: Object.freeze(objects),\n steps: Object.freeze(steps),\n })\n}\n\ninterface ScopeCaptureState {\n readonly visiting: Set<object>\n nodeCount: number\n objectSelectionCount: number\n concreteStepCount: number\n propertyOccurrenceCount: number\n identifierCharacterCount: number\n}\n\ninterface CapturedArray {\n readonly value: readonly unknown[]\n readonly length: number\n}\n\n/**\n * Read every caller-controlled property once and detach it before another getter can mutate it.\n * The compiler only ever observes the resulting plain, deeply frozen snapshot.\n */\nexport function captureSelectedObjectReadScope(value: unknown): SelectedObjectReadScope {\n if (!isRecord(value)) {\n throw invalidScope(\"scope must be a selected scope with a roots array\")\n }\n\n const kind = value.kind\n if (kind !== \"selected\") {\n throw invalidScope(\"scope must be a selected scope with a roots array\")\n }\n\n const rootsValue = value.roots\n const rootsSource = captureArray(rootsValue, \"roots\")\n if (rootsSource.length > OBJECT_READ_SCOPE_LIMITS.maxNodes) {\n throw invalidScope(\n `scope exceeds the maximum of ${OBJECT_READ_SCOPE_LIMITS.maxNodes} selection nodes`\n )\n }\n\n const state: ScopeCaptureState = {\n visiting: new Set<object>(),\n nodeCount: 0,\n objectSelectionCount: 0,\n concreteStepCount: 0,\n propertyOccurrenceCount: 0,\n identifierCharacterCount: 0,\n }\n const roots: ObjectReadRoot[] = []\n for (let rootIndex = 0; rootIndex < rootsSource.length; rootIndex += 1) {\n const path = `roots[${rootIndex}]`\n const rootValue = rootsSource.value[rootIndex]\n if (!isRecord(rootValue)) {\n throw invalidScope(`${path} must contain an exact anchor and a selection node`)\n }\n\n const anchorValue = rootValue.anchor\n if (!isRecord(anchorValue)) {\n throw invalidScope(`${path} must contain an exact anchor and a selection node`)\n }\n const objectTypeId = captureIdentifier(\n state,\n anchorValue.objectTypeId,\n `${path}.anchor.objectTypeId`\n )\n const primaryId = captureIdentifier(state, anchorValue.primaryId, `${path}.anchor.primaryId`)\n const anchor = Object.freeze({ objectTypeId, primaryId })\n\n const nodeValue = rootValue.node\n if (!isRecord(nodeValue)) {\n throw invalidScope(`${path} must contain an exact anchor and a selection node`)\n }\n const node = captureNode(state, nodeValue, `${path}.node`, 0)\n roots.push(Object.freeze({ anchor, node }))\n }\n\n return Object.freeze({ kind, roots: Object.freeze(roots) })\n}\n\nfunction captureNode(\n state: ScopeCaptureState,\n value: Record<string, unknown>,\n path: string,\n depth: number\n): ObjectReadNode {\n if (depth > OBJECT_READ_SCOPE_LIMITS.maxDepth) {\n throw invalidScope(\n `${path} exceeds the maximum link depth of ${OBJECT_READ_SCOPE_LIMITS.maxDepth}`\n )\n }\n if (state.nodeCount >= OBJECT_READ_SCOPE_LIMITS.maxNodes) {\n throw invalidScope(\n `scope exceeds the maximum of ${OBJECT_READ_SCOPE_LIMITS.maxNodes} selection nodes`\n )\n }\n if (state.visiting.has(value)) {\n throw invalidScope(`${path} contains a cyclic selection node`)\n }\n state.visiting.add(value)\n state.nodeCount += 1\n\n try {\n const objectsValue = value.objects\n const objectsSource = captureArray(objectsValue, `${path}.objects`)\n state.objectSelectionCount = reserveCount(\n state.objectSelectionCount,\n objectsSource.length,\n OBJECT_READ_SCOPE_LIMITS.maxObjectSelections,\n `scope exceeds the maximum of ${OBJECT_READ_SCOPE_LIMITS.maxObjectSelections} object selections`\n )\n const objects: ObjectReadObjectSelection[] = []\n for (let objectIndex = 0; objectIndex < objectsSource.length; objectIndex += 1) {\n const objectPath = `${path}.objects[${objectIndex}]`\n const objectValue = objectsSource.value[objectIndex]\n if (!isRecord(objectValue)) {\n throw invalidScope(`${objectPath} must contain an object type and property ids`)\n }\n\n const objectTypeId = captureIdentifier(\n state,\n objectValue.objectTypeId,\n `${objectPath}.objectTypeId`\n )\n const propertyIdsValue = objectValue.propertyIds\n const propertyIds = capturePropertyIds(state, propertyIdsValue, `${objectPath}.propertyIds`)\n objects.push(Object.freeze({ objectTypeId, propertyIds }))\n }\n\n const linksValue = value.links\n const linksSource = captureArray(linksValue, `${path}.links`)\n if (linksSource.length > OBJECT_READ_SCOPE_LIMITS.maxNodes - state.nodeCount) {\n throw invalidScope(\n `scope exceeds the maximum of ${OBJECT_READ_SCOPE_LIMITS.maxNodes} selection nodes`\n )\n }\n const links: ObjectReadLinkSelection[] = []\n for (let linkIndex = 0; linkIndex < linksSource.length; linkIndex += 1) {\n const linkPath = `${path}.links[${linkIndex}]`\n const linkValue = linksSource.value[linkIndex]\n if (!isRecord(linkValue)) {\n throw invalidScope(`${linkPath} must contain definitions and a target node`)\n }\n\n const definitionsValue = linkValue.definitions\n const definitionsSource = captureArray(definitionsValue, `${linkPath}.definitions`)\n if (definitionsSource.length === 0) {\n throw invalidScope(`${linkPath}.definitions must not be empty`)\n }\n if (definitionsSource.length > OBJECT_READ_SCOPE_LIMITS.maxSteps - state.concreteStepCount) {\n throw invalidScope(\n `scope exceeds the maximum of ${OBJECT_READ_SCOPE_LIMITS.maxSteps} concrete link steps`\n )\n }\n const definitions: ObjectReadLinkDefinitionSelection[] = []\n for (\n let definitionIndex = 0;\n definitionIndex < definitionsSource.length;\n definitionIndex += 1\n ) {\n const definitionPath = `${linkPath}.definitions[${definitionIndex}]`\n const definitionValue = definitionsSource.value[definitionIndex]\n definitions.push(captureDefinition(state, definitionValue, definitionPath))\n }\n\n const targetValue = linkValue.target\n if (!isRecord(targetValue)) {\n throw invalidScope(`${linkPath} must contain definitions and a target node`)\n }\n const target = captureNode(state, targetValue, `${linkPath}.target`, depth + 1)\n links.push(Object.freeze({ definitions: Object.freeze(definitions), target }))\n }\n\n return Object.freeze({ objects: Object.freeze(objects), links: Object.freeze(links) })\n } finally {\n state.visiting.delete(value)\n }\n}\n\nfunction captureDefinition(\n state: ScopeCaptureState,\n value: unknown,\n path: string\n): ObjectReadLinkDefinitionSelection {\n if (!isRecord(value)) {\n throw invalidScope(`${path} must contain a concrete link definition`)\n }\n\n const sourceObjectTypeId = captureIdentifier(\n state,\n value.sourceObjectTypeId,\n `${path}.sourceObjectTypeId`\n )\n const linkId = captureIdentifier(state, value.linkId, `${path}.linkId`)\n\n const targetObjectTypeIdsValue = value.targetObjectTypeIds\n const targetObjectTypeIdsSource = captureArray(\n targetObjectTypeIdsValue,\n `${path}.targetObjectTypeIds`\n )\n if (targetObjectTypeIdsSource.length === 0) {\n throw invalidScope(`${path}.targetObjectTypeIds must not be empty`)\n }\n state.concreteStepCount = reserveCount(\n state.concreteStepCount,\n targetObjectTypeIdsSource.length,\n OBJECT_READ_SCOPE_LIMITS.maxSteps,\n `scope exceeds the maximum of ${OBJECT_READ_SCOPE_LIMITS.maxSteps} concrete link steps`\n )\n const targetObjectTypeIds = captureIdentifiers(\n state,\n targetObjectTypeIdsSource,\n `${path}.targetObjectTypeIds`\n )\n\n const propertyIdsValue = value.propertyIds\n const propertyIds = capturePropertyIds(state, propertyIdsValue, `${path}.propertyIds`)\n return Object.freeze({ sourceObjectTypeId, linkId, targetObjectTypeIds, propertyIds })\n}\n\nfunction capturePropertyIds(\n state: ScopeCaptureState,\n value: unknown,\n path: string\n): readonly string[] {\n const source = captureArray(value, path)\n state.propertyOccurrenceCount = reserveCount(\n state.propertyOccurrenceCount,\n source.length,\n OBJECT_READ_SCOPE_LIMITS.maxPropertyOccurrences,\n `scope exceeds the maximum of ${OBJECT_READ_SCOPE_LIMITS.maxPropertyOccurrences} selected property occurrences`\n )\n return captureIdentifiers(state, source, path)\n}\n\nfunction captureIdentifiers(\n state: ScopeCaptureState,\n source: CapturedArray,\n path: string\n): readonly string[] {\n const identifiers: string[] = []\n for (let index = 0; index < source.length; index += 1) {\n identifiers.push(captureIdentifier(state, source.value[index], `${path}[${index}]`))\n }\n return Object.freeze(identifiers)\n}\n\nfunction captureIdentifier(state: ScopeCaptureState, value: unknown, path: string): string {\n const identifier = nonEmptyString(value, path)\n state.identifierCharacterCount = reserveCount(\n state.identifierCharacterCount,\n identifier.length,\n OBJECT_READ_SCOPE_LIMITS.maxIdentifierCharacters,\n `scope exceeds the maximum of ${OBJECT_READ_SCOPE_LIMITS.maxIdentifierCharacters} identifier characters`\n )\n return identifier\n}\n\nfunction captureArray(value: unknown, path: string): CapturedArray {\n if (!Array.isArray(value)) {\n throw invalidScope(`${path} must be an array`)\n }\n const array = value as readonly unknown[]\n const length = array.length\n if (!Number.isSafeInteger(length) || length < 0) {\n throw invalidScope(`${path}.length must be a non-negative safe integer`)\n }\n return { value: array, length }\n}\n\nfunction reserveCount(current: number, count: number, limit: number, message: string): number {\n if (count > limit - current) throw invalidScope(message)\n return current + count\n}\n\n/** Admission bounds of a raw conditional scope, checked while its predicates are captured. */\nconst CONDITIONAL_READ_SCOPE_LIMITS = Object.freeze({\n maxPredicateDepth: 32,\n maxPredicateNodes: 4_096,\n})\n\nconst SCALAR_KINDS: ReadonlySet<string> = new Set<QueryScalarKind>([\n \"string\",\n \"uuid\",\n \"boolean\",\n \"integer\",\n \"double\",\n \"decimal\",\n \"date\",\n \"timestamp\",\n \"userRef\",\n])\n\n/**\n * Validate, detach and freeze a conditional scope exactly once.\n *\n * Core validated each predicate as a filter over its type and bound `currentUser()` to the reader,\n * so this checks only the shape providers compile: an IR predicate made of JSON values, one per\n * concrete type. A placeholder left unbound would otherwise reach SQL as an ordinary value.\n */\nexport function compileConditionalObjectReadScope(\n rawScope: ConditionalObjectReadScope\n): CompiledConditionalObjectReadScope {\n const value: unknown = rawScope\n if (!isRecord(value) || value.kind !== \"conditional\") {\n throw invalidScope(\"scope must be a conditional scope with a conditions array\")\n }\n\n const source = captureArray(value.conditions, \"conditions\")\n const budget = { nodes: 0 }\n const objectTypeIds = new Set<string>()\n const conditions: ObjectReadCondition[] = []\n\n for (let index = 0; index < source.length; index += 1) {\n const path = `conditions[${index}]`\n const condition = source.value[index]\n if (!isRecord(condition)) {\n throw invalidScope(`${path} must contain an object type and a predicate`)\n }\n\n const objectTypeId = nonEmptyString(condition.objectTypeId, `${path}.objectTypeId`)\n // A padded id names no type, and would leave the type it was meant for unconditioned.\n if (objectTypeId.trim() !== objectTypeId) {\n throw invalidScope(`${path}.objectTypeId must not start or end with whitespace`)\n }\n if (objectTypeIds.has(objectTypeId)) {\n throw invalidScope(`${path} repeats the condition on '${objectTypeId}'`)\n }\n objectTypeIds.add(objectTypeId)\n\n const predicate = capturePredicate(condition.predicate, `${path}.predicate`, 0, budget)\n conditions.push(Object.freeze({ objectTypeId, predicate }))\n }\n\n conditions.sort((left, right) => compareStrings(left.objectTypeId, right.objectTypeId))\n\n return Object.freeze({\n kind: \"conditional\",\n conditions: Object.freeze(conditions),\n }) as CompiledConditionalObjectReadScope\n}\n\nfunction capturePredicate(\n value: unknown,\n path: string,\n depth: number,\n budget: { nodes: number }\n): ObjectQueryPredicate {\n if (depth > CONDITIONAL_READ_SCOPE_LIMITS.maxPredicateDepth) {\n throw invalidScope(\n `${path} exceeds the maximum predicate depth of ${CONDITIONAL_READ_SCOPE_LIMITS.maxPredicateDepth}`\n )\n }\n\n budget.nodes += 1\n if (budget.nodes > CONDITIONAL_READ_SCOPE_LIMITS.maxPredicateNodes) {\n throw invalidScope(\n `scope exceeds the maximum of ${CONDITIONAL_READ_SCOPE_LIMITS.maxPredicateNodes} predicate nodes`\n )\n }\n\n if (!isRecord(value)) throw invalidScope(`${path} must be a query predicate`)\n\n const op = value.op\n switch (op) {\n case \"and\":\n case \"or\": {\n const items = captureArray(value.items, `${path}.items`)\n if (items.length === 0) throw invalidScope(`${path}.items must not be empty`)\n\n const captured: ObjectQueryPredicate[] = []\n for (let index = 0; index < items.length; index += 1) {\n captured.push(\n capturePredicate(items.value[index], `${path}.items[${index}]`, depth + 1, budget)\n )\n }\n return Object.freeze({ op, items: Object.freeze(captured) })\n }\n\n case \"not\":\n return Object.freeze({\n op,\n item: capturePredicate(value.item, `${path}.item`, depth + 1, budget),\n })\n\n case \"constant\":\n return Object.freeze({ op, value: captureBoolean(value.value, `${path}.value`) })\n\n case \"exists\": {\n const propertyId = nonEmptyString(value.propertyId, `${path}.propertyId`)\n return Object.freeze({ op, propertyId, value: captureBoolean(value.value, `${path}.value`) })\n }\n\n case \"eq\":\n case \"neq\":\n case \"lt\":\n case \"lte\":\n case \"gt\":\n case \"gte\":\n case \"contains\": {\n const propertyId = nonEmptyString(value.propertyId, `${path}.propertyId`)\n const compared = capturePredicateValue(value.value, `${path}.value`)\n const scalarKind = captureScalarKind(value.scalarKind, `${path}.scalarKind`)\n return Object.freeze({ op, propertyId, value: compared, ...scalarKind })\n }\n\n case \"in\": {\n const propertyId = nonEmptyString(value.propertyId, `${path}.propertyId`)\n const source = captureArray(value.values, `${path}.values`)\n if (source.length === 0) throw invalidScope(`${path}.values must not be empty`)\n\n const values: unknown[] = []\n for (let index = 0; index < source.length; index += 1) {\n values.push(capturePredicateValue(source.value[index], `${path}.values[${index}]`))\n }\n const scalarKind = captureScalarKind(value.scalarKind, `${path}.scalarKind`)\n return Object.freeze({ op, propertyId, values: Object.freeze(values), ...scalarKind })\n }\n\n default:\n throw invalidScope(`${path}.op must be a query predicate operator`)\n }\n}\n\nfunction capturePredicateValue(value: unknown, path: string): unknown {\n const reason = getInvalidJsonValueReason(value, path)\n if (reason) throw invalidScope(`${path} must be a JSON value; ${reason}`)\n\n const detached = JSON.parse(JSON.stringify(value)) as unknown\n if (containsCurrentUser(detached)) {\n throw invalidScope(`${path} holds currentUser(); bind the condition to its reader first`)\n }\n return deepFreeze(detached)\n}\n\nfunction captureBoolean(value: unknown, path: string): boolean {\n if (typeof value !== \"boolean\") throw invalidScope(`${path} must be a boolean`)\n return value\n}\n\nfunction captureScalarKind(value: unknown, path: string): { scalarKind?: QueryScalarKind } {\n if (value === undefined) return {}\n if (typeof value !== \"string\" || !SCALAR_KINDS.has(value)) {\n throw invalidScope(`${path} must be a query scalar kind`)\n }\n return { scalarKind: value as QueryScalarKind }\n}\n\nfunction containsCurrentUser(value: unknown): boolean {\n if (isCurrentUser(value)) return true\n if (Array.isArray(value)) return value.some(containsCurrentUser)\n return isRecord(value) && Object.values(value).some(containsCurrentUser)\n}\n\nfunction deepFreeze<T>(value: T): T {\n if (!isRecord(value)) return value\n for (const child of Object.values(value)) deepFreeze(child)\n return Object.freeze(value)\n}\n\n/** Fail closed when a project-bound selected reader is accidentally reused across projects. */\nexport function assertObjectReaderProject(\n expectedProjectId: string,\n actualProjectId: string\n): void {\n if (actualProjectId !== expectedProjectId) {\n throw new Error(\n `[Sixb] Object reader belongs to project '${expectedProjectId}', not '${actualProjectId}'.`\n )\n }\n}\n\ninterface ConcreteDefinition {\n readonly sourceObjectTypeId: string\n readonly linkId: string\n readonly targetObjectTypeId: string\n readonly propertyIds: readonly string[]\n}\n\nfunction normalizeConcreteDefinitions(\n definitions: readonly ObjectReadLinkDefinitionSelection[],\n path: string,\n addIdentifier: (value: unknown, path: string) => string,\n addPropertyOccurrences: (count: number) => void,\n addCompiledPropertyOccurrences: (count: number) => void,\n addCompiledIdentifierCharacters: (count: number) => void,\n addConcreteStep: () => void\n): readonly ConcreteDefinition[] {\n const propertiesByDefinition = new Map<\n string,\n {\n sourceObjectTypeId: string\n linkId: string\n targetObjectTypeId: string\n properties: Set<string>\n }\n >()\n\n for (const [index, definition] of definitions.entries()) {\n const definitionPath = `${path}[${index}]`\n if (\n !isRecord(definition) ||\n !Array.isArray(definition.targetObjectTypeIds) ||\n !Array.isArray(definition.propertyIds)\n ) {\n throw invalidScope(`${definitionPath} must contain a concrete link definition`)\n }\n const sourceObjectTypeId = addIdentifier(\n definition.sourceObjectTypeId,\n `${definitionPath}.sourceObjectTypeId`\n )\n const linkId = addIdentifier(definition.linkId, `${definitionPath}.linkId`)\n if (definition.targetObjectTypeIds.length === 0) {\n throw invalidScope(`${definitionPath}.targetObjectTypeIds must not be empty`)\n }\n addPropertyOccurrences(definition.propertyIds.length)\n let propertyIdentifierCharacters = 0\n for (const [propertyIndex, propertyId] of definition.propertyIds.entries()) {\n propertyIdentifierCharacters += addIdentifier(\n propertyId,\n `${definitionPath}.propertyIds[${propertyIndex}]`\n ).length\n }\n let targetIdentifierCharacters = 0\n for (const [targetIndex, value] of definition.targetObjectTypeIds.entries()) {\n addConcreteStep()\n targetIdentifierCharacters += addIdentifier(\n value,\n `${definitionPath}.targetObjectTypeIds[${targetIndex}]`\n ).length\n }\n\n // Reserve the complete concrete expansion before allocating collision-safe keys or copying\n // properties into per-target sets. One compact raw definition may otherwise amplify its\n // source/link/property identifiers once per target beyond the provider-neutral scope caps.\n addCompiledPropertyOccurrences(\n definition.propertyIds.length * definition.targetObjectTypeIds.length\n )\n const repeatedIdentifierCharacters =\n sourceObjectTypeId.length + linkId.length + propertyIdentifierCharacters\n addCompiledIdentifierCharacters(\n repeatedIdentifierCharacters * definition.targetObjectTypeIds.length +\n targetIdentifierCharacters\n )\n\n for (const [targetIndex, value] of definition.targetObjectTypeIds.entries()) {\n const targetObjectTypeId = nonEmptyString(\n value,\n `${definitionPath}.targetObjectTypeIds[${targetIndex}]`\n )\n const key = JSON.stringify([sourceObjectTypeId, linkId, targetObjectTypeId])\n const normalized = propertiesByDefinition.get(key) ?? {\n sourceObjectTypeId,\n linkId,\n targetObjectTypeId,\n properties: new Set<string>(),\n }\n for (const [propertyIndex, propertyId] of definition.propertyIds.entries()) {\n normalized.properties.add(\n nonEmptyString(propertyId, `${definitionPath}.propertyIds[${propertyIndex}]`)\n )\n }\n propertiesByDefinition.set(key, normalized)\n }\n }\n\n return [...propertiesByDefinition.values()]\n .sort(\n (left, right) =>\n left.sourceObjectTypeId.localeCompare(right.sourceObjectTypeId) ||\n left.linkId.localeCompare(right.linkId) ||\n left.targetObjectTypeId.localeCompare(right.targetObjectTypeId)\n )\n .map(({ properties, ...definition }) =>\n Object.freeze({\n ...definition,\n propertyIds: Object.freeze([...properties].sort()),\n })\n )\n}\n\nfunction identifierCharacters(values: readonly string[]): number {\n return values.reduce((total, value) => total + value.length, 0)\n}\n\nfunction normalizeObjects(\n selections: readonly ObjectReadObjectSelection[],\n path: string\n): readonly ObjectReadObjectSelection[] {\n const propertiesByType = new Map<string, Set<string>>()\n for (const [index, selection] of selections.entries()) {\n if (!isRecord(selection) || !Array.isArray(selection.propertyIds)) {\n throw invalidScope(`${path}[${index}] must contain an object type and property ids`)\n }\n const objectTypeId = nonEmptyString(selection.objectTypeId, `${path}[${index}].objectTypeId`)\n const properties = propertiesByType.get(objectTypeId) ?? new Set<string>()\n for (const propertyId of normalizeIds(selection.propertyIds, `${path}[${index}].propertyIds`)) {\n properties.add(propertyId)\n }\n propertiesByType.set(objectTypeId, properties)\n }\n return [...propertiesByType]\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([objectTypeId, properties]) =>\n Object.freeze({ objectTypeId, propertyIds: Object.freeze([...properties].sort()) })\n )\n}\n\nfunction normalizeIds(values: readonly string[], path: string): string[] {\n return [\n ...new Set(values.map((value, index) => nonEmptyString(value, `${path}[${index}]`))),\n ].sort()\n}\n\nfunction nonEmptyString(value: unknown, path: string): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw invalidScope(`${path} must be a non-empty string`)\n }\n return value\n}\n\nfunction setsEqual(left: ReadonlySet<string>, right: ReadonlySet<string>): boolean {\n return left.size === right.size && [...left].every((value) => right.has(value))\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null\n}\n\nfunction invalidScope(message: string): Error {\n return new Error(`[Sixb] Invalid object read scope: ${message}.`)\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";;;;;;;;;;AAoBO,IAAM,2BAA2B,OAAO,OAAO;AAAA,EACpD,UAAU;AAAA,EACV,UAAU;AAAA,EACV,qBAAqB;AAAA,EACrB,UAAU;AAAA,EACV,wBAAwB;AAAA,EACxB,yBAAyB;AAC3B,CAAC;AAQM,SAAS,+BAA8B,CAC5C,UACiC;AAAA,EACjC,MAAM,QAAQ,+BAA+B,QAAQ;AAAA,EACrD,IAAI,CAAC,SAAS,KAAK,KAAK,MAAM,SAAS,cAAc,CAAC,MAAM,QAAQ,MAAM,KAAK,GAAG;AAAA,IAChF,MAAM,aAAa,mDAAmD;AAAA,EACxE;AAAA,EAEA,MAAM,QAAkC,CAAC;AAAA,EACzC,MAAM,UAA+C,CAAC;AAAA,EACtD,MAAM,QAAkC,CAAC;AAAA,EACzC,MAAM,WAAW,IAAI;AAAA,EACrB,IAAI,aAAa;AAAA,EACjB,IAAI,oBAAoB;AAAA,EACxB,IAAI,uBAAuB;AAAA,EAC3B,IAAI,0BAA0B;AAAA,EAC9B,IAAI,2BAA2B;AAAA,EAC/B,IAAI,kCAAkC;AAAA,EACtC,IAAI,mCAAmC;AAAA,EAEvC,MAAM,gBAAgB,CAAC,OAAgB,SAAyB;AAAA,IAC9D,MAAM,aAAa,eAAe,OAAO,IAAI;AAAA,IAC7C,4BAA4B,WAAW;AAAA,IACvC,IAAI,2BAA2B,yBAAyB,yBAAyB;AAAA,MAC/E,MAAM,aACJ,gCAAgC,yBAAyB,+CAC3D;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAGT,MAAM,yBAAyB,CAAC,UAAwB;AAAA,IACtD,2BAA2B;AAAA,IAC3B,IAAI,0BAA0B,yBAAyB,wBAAwB;AAAA,MAC7E,MAAM,aACJ,gCAAgC,yBAAyB,sDAC3D;AAAA,IACF;AAAA;AAAA,EAGF,MAAM,iCAAiC,CAAC,UAAwB;AAAA,IAC9D,mCAAmC;AAAA,IACnC,IAAI,kCAAkC,yBAAyB,wBAAwB;AAAA,MACrF,MAAM,aACJ,gCAAgC,yBAAyB,wEAC3D;AAAA,IACF;AAAA;AAAA,EAGF,MAAM,kCAAkC,CAAC,UAAwB;AAAA,IAC/D,oCAAoC;AAAA,IACpC,IAAI,mCAAmC,yBAAyB,yBAAyB;AAAA,MACvF,MAAM,aACJ,gCAAgC,yBAAyB,iEAC3D;AAAA,IACF;AAAA;AAAA,EAGF,MAAM,YAAY,CAAC,MAAsB,MAAc,UAA0B;AAAA,IAC/E,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,QAAQ,KAAK,OAAO,KAAK,CAAC,MAAM,QAAQ,KAAK,KAAK,GAAG;AAAA,MACjF,MAAM,aAAa,GAAG,8CAA8C;AAAA,IACtE;AAAA,IACA,IAAI,QAAQ,yBAAyB,UAAU;AAAA,MAC7C,MAAM,aACJ,GAAG,0CAA0C,yBAAyB,UACxE;AAAA,IACF;AAAA,IACA,IAAI,cAAc,yBAAyB,UAAU;AAAA,MACnD,MAAM,aACJ,gCAAgC,yBAAyB,0BAC3D;AAAA,IACF;AAAA,IACA,IAAI,SAAS,IAAI,IAAI;AAAA,MAAG,MAAM,aAAa,GAAG,uCAAuC;AAAA,IACrF,SAAS,IAAI,IAAI;AAAA,IAEjB,MAAM,SAAS;AAAA,IACf,IAAI;AAAA,MACF,wBAAwB,KAAK,QAAQ;AAAA,MACrC,IAAI,uBAAuB,yBAAyB,qBAAqB;AAAA,QACvE,MAAM,aACJ,gCAAgC,yBAAyB,uCAC3D;AAAA,MACF;AAAA,MAEA,YAAY,aAAa,WAAW,KAAK,QAAQ,QAAQ,GAAG;AAAA,QAC1D,MAAM,aAAa,GAAG,gBAAgB;AAAA,QACtC,IAAI,CAAC,SAAS,MAAM,KAAK,CAAC,MAAM,QAAQ,OAAO,WAAW,GAAG;AAAA,UAC3D,MAAM,aAAa,GAAG,yDAAyD;AAAA,QACjF;AAAA,QACA,cAAc,OAAO,cAAc,GAAG,yBAAyB;AAAA,QAC/D,uBAAuB,OAAO,YAAY,MAAM;AAAA,QAChD,YAAY,eAAe,eAAe,OAAO,YAAY,QAAQ,GAAG;AAAA,UACtE,cAAc,YAAY,GAAG,0BAA0B,gBAAgB;AAAA,QACzE;AAAA,MACF;AAAA,MAEA,MAAM,oBAAoB,iBAAiB,KAAK,SAAS,GAAG,cAAc;AAAA,MAC1E,IAAI,kBAAkB,WAAW,GAAG;AAAA,QAClC,MAAM,aAAa,GAAG,6DAA6D;AAAA,MACrF;AAAA,MACA,WAAW,UAAU,mBAAmB;AAAA,QACtC,+BAA+B,OAAO,YAAY,MAAM;AAAA,QACxD,gCACE,OAAO,aAAa,SAAS,qBAAqB,OAAO,WAAW,CACtE;AAAA,QACA,QAAQ,KAAK,OAAO,OAAO,EAAE,WAAW,OAAO,CAAC,CAAC;AAAA,MACnD;AAAA,MAEA,YAAY,WAAW,SAAS,KAAK,MAAM,QAAQ,GAAG;AAAA,QACpD,MAAM,WAAW,GAAG,cAAc;AAAA,QAClC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,QAAQ,KAAK,WAAW,KAAK,CAAC,SAAS,KAAK,MAAM,GAAG;AAAA,UACjF,MAAM,aAAa,GAAG,qDAAqD;AAAA,QAC7E;AAAA,QACA,IAAI,KAAK,YAAY,WAAW,GAAG;AAAA,UACjC,MAAM,aAAa,GAAG,wCAAwC;AAAA,QAChE;AAAA,QAEA,MAAM,cAAc,6BAClB,KAAK,aACL,GAAG,wBACH,eACA,wBACA,gCACA,iCACA,MAAM;AAAA,UACJ,qBAAqB;AAAA,UACrB,IAAI,oBAAoB,yBAAyB,UAAU;AAAA,YACzD,MAAM,aACJ,gCAAgC,yBAAyB,8BAC3D;AAAA,UACF;AAAA,SAEJ;AAAA,QACA,MAAM,cAAc,IAAI,IAAI,kBAAkB,IAAI,CAAC,WAAW,OAAO,YAAY,CAAC;AAAA,QAClF,WAAW,cAAc,aAAa;AAAA,UACpC,IAAI,CAAC,YAAY,IAAI,WAAW,kBAAkB,GAAG;AAAA,YACnD,MAAM,aACJ,GAAG,iCAAiC,WAAW,6CACjD;AAAA,UACF;AAAA,QACF;AAAA,QAEA,MAAM,cAAc,UAClB,KAAK,QACL,GAAG,mBACH,QAAQ,CACV;AAAA,QACA,MAAM,aAAa,IAAI,IACrB,QACG,OAAO,CAAC,WAAW,OAAO,WAAW,WAAW,EAChD,IAAI,CAAC,WAAW,OAAO,YAAY,CACxC;AAAA,QACA,MAAM,cAAc,IAAI,IAAI,YAAY,IAAI,CAAC,eAAe,WAAW,kBAAkB,CAAC;AAAA,QAC1F,IAAI,CAAC,UAAU,YAAY,WAAW,GAAG;AAAA,UACvC,MAAM,aACJ,GAAG,6EACL;AAAA,QACF;AAAA,QAEA,WAAW,cAAc,aAAa;AAAA,UACpC,MAAM,KACJ,OAAO,OAAO;AAAA,YACZ,QAAQ;AAAA,YACR,cAAc;AAAA,eACX;AAAA,UACL,CAAC,CACH;AAAA,QACF;AAAA,MACF;AAAA,cACA;AAAA,MACA,SAAS,OAAO,IAAI;AAAA;AAAA,IAGtB,OAAO;AAAA;AAAA,EAGT,YAAY,WAAW,SAAS,MAAM,MAAM,QAAQ,GAAG;AAAA,IACrD,MAAM,OAAO,SAAS;AAAA,IACtB,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,KAAK,CAAC,SAAS,KAAK,IAAI,GAAG;AAAA,MACrE,MAAM,aAAa,GAAG,wDAAwD;AAAA,IAChF;AAAA,IACA,MAAM,eAAe,cAAc,KAAK,OAAO,cAAc,GAAG,0BAA0B;AAAA,IAC1F,MAAM,YAAY,cAAc,KAAK,OAAO,WAAW,GAAG,uBAAuB;AAAA,IACjF,gCAAgC,aAAa,SAAS,UAAU,MAAM;AAAA,IACtE,MAAM,SAAS,UAAU,KAAK,MAAmC,GAAG,aAAa,CAAC;AAAA,IAClF,IACE,CAAC,QAAQ,KAAK,CAAC,WAAW,OAAO,WAAW,UAAU,OAAO,iBAAiB,YAAY,GAC1F;AAAA,MACA,MAAM,aAAa,GAAG,qBAAqB,gDAAgD;AAAA,IAC7F;AAAA,IACA,MAAM,KAAK,OAAO,OAAO,EAAE,QAAQ,cAAc,UAAU,CAAC,CAAC;AAAA,EAC/D;AAAA,EAEA,OAAO,OAAO,OAAO;AAAA,IACnB,MAAM;AAAA,IACN,OAAO,OAAO,OAAO,KAAK;AAAA,IAC1B,SAAS,OAAO,OAAO,OAAO;AAAA,IAC9B,OAAO,OAAO,OAAO,KAAK;AAAA,EAC5B,CAAC;AAAA;AAqBI,SAAS,8BAA8B,CAAC,OAAyC;AAAA,EACtF,IAAI,CAAC,SAAS,KAAK,GAAG;AAAA,IACpB,MAAM,aAAa,mDAAmD;AAAA,EACxE;AAAA,EAEA,MAAM,OAAO,MAAM;AAAA,EACnB,IAAI,SAAS,YAAY;AAAA,IACvB,MAAM,aAAa,mDAAmD;AAAA,EACxE;AAAA,EAEA,MAAM,aAAa,MAAM;AAAA,EACzB,MAAM,cAAc,aAAa,YAAY,OAAO;AAAA,EACpD,IAAI,YAAY,SAAS,yBAAyB,UAAU;AAAA,IAC1D,MAAM,aACJ,gCAAgC,yBAAyB,0BAC3D;AAAA,EACF;AAAA,EAEA,MAAM,QAA2B;AAAA,IAC/B,UAAU,IAAI;AAAA,IACd,WAAW;AAAA,IACX,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,IACnB,yBAAyB;AAAA,IACzB,0BAA0B;AAAA,EAC5B;AAAA,EACA,MAAM,QAA0B,CAAC;AAAA,EACjC,SAAS,YAAY,EAAG,YAAY,YAAY,QAAQ,aAAa,GAAG;AAAA,IACtE,MAAM,OAAO,SAAS;AAAA,IACtB,MAAM,YAAY,YAAY,MAAM;AAAA,IACpC,IAAI,CAAC,SAAS,SAAS,GAAG;AAAA,MACxB,MAAM,aAAa,GAAG,wDAAwD;AAAA,IAChF;AAAA,IAEA,MAAM,cAAc,UAAU;AAAA,IAC9B,IAAI,CAAC,SAAS,WAAW,GAAG;AAAA,MAC1B,MAAM,aAAa,GAAG,wDAAwD;AAAA,IAChF;AAAA,IACA,MAAM,eAAe,kBACnB,OACA,YAAY,cACZ,GAAG,0BACL;AAAA,IACA,MAAM,YAAY,kBAAkB,OAAO,YAAY,WAAW,GAAG,uBAAuB;AAAA,IAC5F,MAAM,SAAS,OAAO,OAAO,EAAE,cAAc,UAAU,CAAC;AAAA,IAExD,MAAM,YAAY,UAAU;AAAA,IAC5B,IAAI,CAAC,SAAS,SAAS,GAAG;AAAA,MACxB,MAAM,aAAa,GAAG,wDAAwD;AAAA,IAChF;AAAA,IACA,MAAM,OAAO,YAAY,OAAO,WAAW,GAAG,aAAa,CAAC;AAAA,IAC5D,MAAM,KAAK,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,EAC5C;AAAA,EAEA,OAAO,OAAO,OAAO,EAAE,MAAM,OAAO,OAAO,OAAO,KAAK,EAAE,CAAC;AAAA;AAG5D,SAAS,WAAW,CAClB,OACA,OACA,MACA,OACgB;AAAA,EAChB,IAAI,QAAQ,yBAAyB,UAAU;AAAA,IAC7C,MAAM,aACJ,GAAG,0CAA0C,yBAAyB,UACxE;AAAA,EACF;AAAA,EACA,IAAI,MAAM,aAAa,yBAAyB,UAAU;AAAA,IACxD,MAAM,aACJ,gCAAgC,yBAAyB,0BAC3D;AAAA,EACF;AAAA,EACA,IAAI,MAAM,SAAS,IAAI,KAAK,GAAG;AAAA,IAC7B,MAAM,aAAa,GAAG,uCAAuC;AAAA,EAC/D;AAAA,EACA,MAAM,SAAS,IAAI,KAAK;AAAA,EACxB,MAAM,aAAa;AAAA,EAEnB,IAAI;AAAA,IACF,MAAM,eAAe,MAAM;AAAA,IAC3B,MAAM,gBAAgB,aAAa,cAAc,GAAG,cAAc;AAAA,IAClE,MAAM,uBAAuB,aAC3B,MAAM,sBACN,cAAc,QACd,yBAAyB,qBACzB,gCAAgC,yBAAyB,uCAC3D;AAAA,IACA,MAAM,UAAuC,CAAC;AAAA,IAC9C,SAAS,cAAc,EAAG,cAAc,cAAc,QAAQ,eAAe,GAAG;AAAA,MAC9E,MAAM,aAAa,GAAG,gBAAgB;AAAA,MACtC,MAAM,cAAc,cAAc,MAAM;AAAA,MACxC,IAAI,CAAC,SAAS,WAAW,GAAG;AAAA,QAC1B,MAAM,aAAa,GAAG,yDAAyD;AAAA,MACjF;AAAA,MAEA,MAAM,eAAe,kBACnB,OACA,YAAY,cACZ,GAAG,yBACL;AAAA,MACA,MAAM,mBAAmB,YAAY;AAAA,MACrC,MAAM,cAAc,mBAAmB,OAAO,kBAAkB,GAAG,wBAAwB;AAAA,MAC3F,QAAQ,KAAK,OAAO,OAAO,EAAE,cAAc,YAAY,CAAC,CAAC;AAAA,IAC3D;AAAA,IAEA,MAAM,aAAa,MAAM;AAAA,IACzB,MAAM,cAAc,aAAa,YAAY,GAAG,YAAY;AAAA,IAC5D,IAAI,YAAY,SAAS,yBAAyB,WAAW,MAAM,WAAW;AAAA,MAC5E,MAAM,aACJ,gCAAgC,yBAAyB,0BAC3D;AAAA,IACF;AAAA,IACA,MAAM,QAAmC,CAAC;AAAA,IAC1C,SAAS,YAAY,EAAG,YAAY,YAAY,QAAQ,aAAa,GAAG;AAAA,MACtE,MAAM,WAAW,GAAG,cAAc;AAAA,MAClC,MAAM,YAAY,YAAY,MAAM;AAAA,MACpC,IAAI,CAAC,SAAS,SAAS,GAAG;AAAA,QACxB,MAAM,aAAa,GAAG,qDAAqD;AAAA,MAC7E;AAAA,MAEA,MAAM,mBAAmB,UAAU;AAAA,MACnC,MAAM,oBAAoB,aAAa,kBAAkB,GAAG,sBAAsB;AAAA,MAClF,IAAI,kBAAkB,WAAW,GAAG;AAAA,QAClC,MAAM,aAAa,GAAG,wCAAwC;AAAA,MAChE;AAAA,MACA,IAAI,kBAAkB,SAAS,yBAAyB,WAAW,MAAM,mBAAmB;AAAA,QAC1F,MAAM,aACJ,gCAAgC,yBAAyB,8BAC3D;AAAA,MACF;AAAA,MACA,MAAM,cAAmD,CAAC;AAAA,MAC1D,SACM,kBAAkB,EACtB,kBAAkB,kBAAkB,QACpC,mBAAmB,GACnB;AAAA,QACA,MAAM,iBAAiB,GAAG,wBAAwB;AAAA,QAClD,MAAM,kBAAkB,kBAAkB,MAAM;AAAA,QAChD,YAAY,KAAK,kBAAkB,OAAO,iBAAiB,cAAc,CAAC;AAAA,MAC5E;AAAA,MAEA,MAAM,cAAc,UAAU;AAAA,MAC9B,IAAI,CAAC,SAAS,WAAW,GAAG;AAAA,QAC1B,MAAM,aAAa,GAAG,qDAAqD;AAAA,MAC7E;AAAA,MACA,MAAM,SAAS,YAAY,OAAO,aAAa,GAAG,mBAAmB,QAAQ,CAAC;AAAA,MAC9E,MAAM,KAAK,OAAO,OAAO,EAAE,aAAa,OAAO,OAAO,WAAW,GAAG,OAAO,CAAC,CAAC;AAAA,IAC/E;AAAA,IAEA,OAAO,OAAO,OAAO,EAAE,SAAS,OAAO,OAAO,OAAO,GAAG,OAAO,OAAO,OAAO,KAAK,EAAE,CAAC;AAAA,YACrF;AAAA,IACA,MAAM,SAAS,OAAO,KAAK;AAAA;AAAA;AAI/B,SAAS,iBAAiB,CACxB,OACA,OACA,MACmC;AAAA,EACnC,IAAI,CAAC,SAAS,KAAK,GAAG;AAAA,IACpB,MAAM,aAAa,GAAG,8CAA8C;AAAA,EACtE;AAAA,EAEA,MAAM,qBAAqB,kBACzB,OACA,MAAM,oBACN,GAAG,yBACL;AAAA,EACA,MAAM,SAAS,kBAAkB,OAAO,MAAM,QAAQ,GAAG,aAAa;AAAA,EAEtE,MAAM,2BAA2B,MAAM;AAAA,EACvC,MAAM,4BAA4B,aAChC,0BACA,GAAG,0BACL;AAAA,EACA,IAAI,0BAA0B,WAAW,GAAG;AAAA,IAC1C,MAAM,aAAa,GAAG,4CAA4C;AAAA,EACpE;AAAA,EACA,MAAM,oBAAoB,aACxB,MAAM,mBACN,0BAA0B,QAC1B,yBAAyB,UACzB,gCAAgC,yBAAyB,8BAC3D;AAAA,EACA,MAAM,sBAAsB,mBAC1B,OACA,2BACA,GAAG,0BACL;AAAA,EAEA,MAAM,mBAAmB,MAAM;AAAA,EAC/B,MAAM,cAAc,mBAAmB,OAAO,kBAAkB,GAAG,kBAAkB;AAAA,EACrF,OAAO,OAAO,OAAO,EAAE,oBAAoB,QAAQ,qBAAqB,YAAY,CAAC;AAAA;AAGvF,SAAS,kBAAkB,CACzB,OACA,OACA,MACmB;AAAA,EACnB,MAAM,SAAS,aAAa,OAAO,IAAI;AAAA,EACvC,MAAM,0BAA0B,aAC9B,MAAM,yBACN,OAAO,QACP,yBAAyB,wBACzB,gCAAgC,yBAAyB,sDAC3D;AAAA,EACA,OAAO,mBAAmB,OAAO,QAAQ,IAAI;AAAA;AAG/C,SAAS,kBAAkB,CACzB,OACA,QACA,MACmB;AAAA,EACnB,MAAM,cAAwB,CAAC;AAAA,EAC/B,SAAS,QAAQ,EAAG,QAAQ,OAAO,QAAQ,SAAS,GAAG;AAAA,IACrD,YAAY,KAAK,kBAAkB,OAAO,OAAO,MAAM,QAAQ,GAAG,QAAQ,QAAQ,CAAC;AAAA,EACrF;AAAA,EACA,OAAO,OAAO,OAAO,WAAW;AAAA;AAGlC,SAAS,iBAAiB,CAAC,OAA0B,OAAgB,MAAsB;AAAA,EACzF,MAAM,aAAa,eAAe,OAAO,IAAI;AAAA,EAC7C,MAAM,2BAA2B,aAC/B,MAAM,0BACN,WAAW,QACX,yBAAyB,yBACzB,gCAAgC,yBAAyB,+CAC3D;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,YAAY,CAAC,OAAgB,MAA6B;AAAA,EACjE,IAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AAAA,IACzB,MAAM,aAAa,GAAG,uBAAuB;AAAA,EAC/C;AAAA,EACA,MAAM,QAAQ;AAAA,EACd,MAAM,SAAS,MAAM;AAAA,EACrB,IAAI,CAAC,OAAO,cAAc,MAAM,KAAK,SAAS,GAAG;AAAA,IAC/C,MAAM,aAAa,GAAG,iDAAiD;AAAA,EACzE;AAAA,EACA,OAAO,EAAE,OAAO,OAAO,OAAO;AAAA;AAGhC,SAAS,YAAY,CAAC,SAAiB,OAAe,OAAe,SAAyB;AAAA,EAC5F,IAAI,QAAQ,QAAQ;AAAA,IAAS,MAAM,aAAa,OAAO;AAAA,EACvD,OAAO,UAAU;AAAA;AAInB,IAAM,gCAAgC,OAAO,OAAO;AAAA,EAClD,mBAAmB;AAAA,EACnB,mBAAmB;AACrB,CAAC;AAED,IAAM,eAAoC,IAAI,IAAqB;AAAA,EACjE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AASM,SAAS,kCAAiC,CAC/C,UACoC;AAAA,EACpC,MAAM,QAAiB;AAAA,EACvB,IAAI,CAAC,SAAS,KAAK,KAAK,MAAM,SAAS,eAAe;AAAA,IACpD,MAAM,aAAa,2DAA2D;AAAA,EAChF;AAAA,EAEA,MAAM,SAAS,aAAa,MAAM,YAAY,YAAY;AAAA,EAC1D,MAAM,SAAS,EAAE,OAAO,EAAE;AAAA,EAC1B,MAAM,gBAAgB,IAAI;AAAA,EAC1B,MAAM,aAAoC,CAAC;AAAA,EAE3C,SAAS,QAAQ,EAAG,QAAQ,OAAO,QAAQ,SAAS,GAAG;AAAA,IACrD,MAAM,OAAO,cAAc;AAAA,IAC3B,MAAM,YAAY,OAAO,MAAM;AAAA,IAC/B,IAAI,CAAC,SAAS,SAAS,GAAG;AAAA,MACxB,MAAM,aAAa,GAAG,kDAAkD;AAAA,IAC1E;AAAA,IAEA,MAAM,eAAe,eAAe,UAAU,cAAc,GAAG,mBAAmB;AAAA,IAElF,IAAI,aAAa,KAAK,MAAM,cAAc;AAAA,MACxC,MAAM,aAAa,GAAG,yDAAyD;AAAA,IACjF;AAAA,IACA,IAAI,cAAc,IAAI,YAAY,GAAG;AAAA,MACnC,MAAM,aAAa,GAAG,kCAAkC,eAAe;AAAA,IACzE;AAAA,IACA,cAAc,IAAI,YAAY;AAAA,IAE9B,MAAM,YAAY,iBAAiB,UAAU,WAAW,GAAG,kBAAkB,GAAG,MAAM;AAAA,IACtF,WAAW,KAAK,OAAO,OAAO,EAAE,cAAc,UAAU,CAAC,CAAC;AAAA,EAC5D;AAAA,EAEA,WAAW,KAAK,CAAC,MAAM,UAAU,eAAe,KAAK,cAAc,MAAM,YAAY,CAAC;AAAA,EAEtF,OAAO,OAAO,OAAO;AAAA,IACnB,MAAM;AAAA,IACN,YAAY,OAAO,OAAO,UAAU;AAAA,EACtC,CAAC;AAAA;AAGH,SAAS,gBAAgB,CACvB,OACA,MACA,OACA,QACsB;AAAA,EACtB,IAAI,QAAQ,8BAA8B,mBAAmB;AAAA,IAC3D,MAAM,aACJ,GAAG,+CAA+C,8BAA8B,mBAClF;AAAA,EACF;AAAA,EAEA,OAAO,SAAS;AAAA,EAChB,IAAI,OAAO,QAAQ,8BAA8B,mBAAmB;AAAA,IAClE,MAAM,aACJ,gCAAgC,8BAA8B,mCAChE;AAAA,EACF;AAAA,EAEA,IAAI,CAAC,SAAS,KAAK;AAAA,IAAG,MAAM,aAAa,GAAG,gCAAgC;AAAA,EAE5E,MAAM,KAAK,MAAM;AAAA,EACjB,QAAQ;AAAA,SACD;AAAA,SACA,MAAM;AAAA,MACT,MAAM,QAAQ,aAAa,MAAM,OAAO,GAAG,YAAY;AAAA,MACvD,IAAI,MAAM,WAAW;AAAA,QAAG,MAAM,aAAa,GAAG,8BAA8B;AAAA,MAE5E,MAAM,WAAmC,CAAC;AAAA,MAC1C,SAAS,QAAQ,EAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;AAAA,QACpD,SAAS,KACP,iBAAiB,MAAM,MAAM,QAAQ,GAAG,cAAc,UAAU,QAAQ,GAAG,MAAM,CACnF;AAAA,MACF;AAAA,MACA,OAAO,OAAO,OAAO,EAAE,IAAI,OAAO,OAAO,OAAO,QAAQ,EAAE,CAAC;AAAA,IAC7D;AAAA,SAEK;AAAA,MACH,OAAO,OAAO,OAAO;AAAA,QACnB;AAAA,QACA,MAAM,iBAAiB,MAAM,MAAM,GAAG,aAAa,QAAQ,GAAG,MAAM;AAAA,MACtE,CAAC;AAAA,SAEE;AAAA,MACH,OAAO,OAAO,OAAO,EAAE,IAAI,OAAO,eAAe,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;AAAA,SAE7E,UAAU;AAAA,MACb,MAAM,aAAa,eAAe,MAAM,YAAY,GAAG,iBAAiB;AAAA,MACxE,OAAO,OAAO,OAAO,EAAE,IAAI,YAAY,OAAO,eAAe,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;AAAA,IAC9F;AAAA,SAEK;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA,YAAY;AAAA,MACf,MAAM,aAAa,eAAe,MAAM,YAAY,GAAG,iBAAiB;AAAA,MACxE,MAAM,WAAW,sBAAsB,MAAM,OAAO,GAAG,YAAY;AAAA,MACnE,MAAM,aAAa,kBAAkB,MAAM,YAAY,GAAG,iBAAiB;AAAA,MAC3E,OAAO,OAAO,OAAO,EAAE,IAAI,YAAY,OAAO,aAAa,WAAW,CAAC;AAAA,IACzE;AAAA,SAEK,MAAM;AAAA,MACT,MAAM,aAAa,eAAe,MAAM,YAAY,GAAG,iBAAiB;AAAA,MACxE,MAAM,SAAS,aAAa,MAAM,QAAQ,GAAG,aAAa;AAAA,MAC1D,IAAI,OAAO,WAAW;AAAA,QAAG,MAAM,aAAa,GAAG,+BAA+B;AAAA,MAE9E,MAAM,SAAoB,CAAC;AAAA,MAC3B,SAAS,QAAQ,EAAG,QAAQ,OAAO,QAAQ,SAAS,GAAG;AAAA,QACrD,OAAO,KAAK,sBAAsB,OAAO,MAAM,QAAQ,GAAG,eAAe,QAAQ,CAAC;AAAA,MACpF;AAAA,MACA,MAAM,aAAa,kBAAkB,MAAM,YAAY,GAAG,iBAAiB;AAAA,MAC3E,OAAO,OAAO,OAAO,EAAE,IAAI,YAAY,QAAQ,OAAO,OAAO,MAAM,MAAM,WAAW,CAAC;AAAA,IACvF;AAAA;AAAA,MAGE,MAAM,aAAa,GAAG,4CAA4C;AAAA;AAAA;AAIxE,SAAS,qBAAqB,CAAC,OAAgB,MAAuB;AAAA,EACpE,MAAM,SAAS,2BAA0B,OAAO,IAAI;AAAA,EACpD,IAAI;AAAA,IAAQ,MAAM,aAAa,GAAG,8BAA8B,QAAQ;AAAA,EAExE,MAAM,WAAW,KAAK,MAAM,KAAK,UAAU,KAAK,CAAC;AAAA,EACjD,IAAI,oBAAoB,QAAQ,GAAG;AAAA,IACjC,MAAM,aAAa,GAAG,kEAAkE;AAAA,EAC1F;AAAA,EACA,OAAO,WAAW,QAAQ;AAAA;AAG5B,SAAS,cAAc,CAAC,OAAgB,MAAuB;AAAA,EAC7D,IAAI,OAAO,UAAU;AAAA,IAAW,MAAM,aAAa,GAAG,wBAAwB;AAAA,EAC9E,OAAO;AAAA;AAGT,SAAS,iBAAiB,CAAC,OAAgB,MAAgD;AAAA,EACzF,IAAI,UAAU;AAAA,IAAW,OAAO,CAAC;AAAA,EACjC,IAAI,OAAO,UAAU,YAAY,CAAC,aAAa,IAAI,KAAK,GAAG;AAAA,IACzD,MAAM,aAAa,GAAG,kCAAkC;AAAA,EAC1D;AAAA,EACA,OAAO,EAAE,YAAY,MAAyB;AAAA;AAGhD,SAAS,mBAAmB,CAAC,OAAyB;AAAA,EACpD,IAAI,cAAc,KAAK;AAAA,IAAG,OAAO;AAAA,EACjC,IAAI,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO,MAAM,KAAK,mBAAmB;AAAA,EAC/D,OAAO,SAAS,KAAK,KAAK,OAAO,OAAO,KAAK,EAAE,KAAK,mBAAmB;AAAA;AAGzE,SAAS,UAAa,CAAC,OAAa;AAAA,EAClC,IAAI,CAAC,SAAS,KAAK;AAAA,IAAG,OAAO;AAAA,EAC7B,WAAW,SAAS,OAAO,OAAO,KAAK;AAAA,IAAG,WAAW,KAAK;AAAA,EAC1D,OAAO,OAAO,OAAO,KAAK;AAAA;AAIrB,SAAS,0BAAyB,CACvC,mBACA,iBACM;AAAA,EACN,IAAI,oBAAoB,mBAAmB;AAAA,IACzC,MAAM,IAAI,MACR,4CAA4C,4BAA4B,mBAC1E;AAAA,EACF;AAAA;AAUF,SAAS,4BAA4B,CACnC,aACA,MACA,eACA,wBACA,gCACA,iCACA,iBAC+B;AAAA,EAC/B,MAAM,yBAAyB,IAAI;AAAA,EAUnC,YAAY,OAAO,eAAe,YAAY,QAAQ,GAAG;AAAA,IACvD,MAAM,iBAAiB,GAAG,QAAQ;AAAA,IAClC,IACE,CAAC,SAAS,UAAU,KACpB,CAAC,MAAM,QAAQ,WAAW,mBAAmB,KAC7C,CAAC,MAAM,QAAQ,WAAW,WAAW,GACrC;AAAA,MACA,MAAM,aAAa,GAAG,wDAAwD;AAAA,IAChF;AAAA,IACA,MAAM,qBAAqB,cACzB,WAAW,oBACX,GAAG,mCACL;AAAA,IACA,MAAM,SAAS,cAAc,WAAW,QAAQ,GAAG,uBAAuB;AAAA,IAC1E,IAAI,WAAW,oBAAoB,WAAW,GAAG;AAAA,MAC/C,MAAM,aAAa,GAAG,sDAAsD;AAAA,IAC9E;AAAA,IACA,uBAAuB,WAAW,YAAY,MAAM;AAAA,IACpD,IAAI,+BAA+B;AAAA,IACnC,YAAY,eAAe,eAAe,WAAW,YAAY,QAAQ,GAAG;AAAA,MAC1E,gCAAgC,cAC9B,YACA,GAAG,8BAA8B,gBACnC,EAAE;AAAA,IACJ;AAAA,IACA,IAAI,6BAA6B;AAAA,IACjC,YAAY,aAAa,UAAU,WAAW,oBAAoB,QAAQ,GAAG;AAAA,MAC3E,gBAAgB;AAAA,MAChB,8BAA8B,cAC5B,OACA,GAAG,sCAAsC,cAC3C,EAAE;AAAA,IACJ;AAAA,IAKA,+BACE,WAAW,YAAY,SAAS,WAAW,oBAAoB,MACjE;AAAA,IACA,MAAM,+BACJ,mBAAmB,SAAS,OAAO,SAAS;AAAA,IAC9C,gCACE,+BAA+B,WAAW,oBAAoB,SAC5D,0BACJ;AAAA,IAEA,YAAY,aAAa,UAAU,WAAW,oBAAoB,QAAQ,GAAG;AAAA,MAC3E,MAAM,qBAAqB,eACzB,OACA,GAAG,sCAAsC,cAC3C;AAAA,MACA,MAAM,MAAM,KAAK,UAAU,CAAC,oBAAoB,QAAQ,kBAAkB,CAAC;AAAA,MAC3E,MAAM,aAAa,uBAAuB,IAAI,GAAG,KAAK;AAAA,QACpD;AAAA,QACA;AAAA,QACA;AAAA,QACA,YAAY,IAAI;AAAA,MAClB;AAAA,MACA,YAAY,eAAe,eAAe,WAAW,YAAY,QAAQ,GAAG;AAAA,QAC1E,WAAW,WAAW,IACpB,eAAe,YAAY,GAAG,8BAA8B,gBAAgB,CAC9E;AAAA,MACF;AAAA,MACA,uBAAuB,IAAI,KAAK,UAAU;AAAA,IAC5C;AAAA,EACF;AAAA,EAEA,OAAO,CAAC,GAAG,uBAAuB,OAAO,CAAC,EACvC,KACC,CAAC,MAAM,UACL,KAAK,mBAAmB,cAAc,MAAM,kBAAkB,KAC9D,KAAK,OAAO,cAAc,MAAM,MAAM,KACtC,KAAK,mBAAmB,cAAc,MAAM,kBAAkB,CAClE,EACC,IAAI,GAAG,eAAe,iBACrB,OAAO,OAAO;AAAA,OACT;AAAA,IACH,aAAa,OAAO,OAAO,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC;AAAA,EACnD,CAAC,CACH;AAAA;AAGJ,SAAS,oBAAoB,CAAC,QAAmC;AAAA,EAC/D,OAAO,OAAO,OAAO,CAAC,OAAO,UAAU,QAAQ,MAAM,QAAQ,CAAC;AAAA;AAGhE,SAAS,gBAAgB,CACvB,YACA,MACsC;AAAA,EACtC,MAAM,mBAAmB,IAAI;AAAA,EAC7B,YAAY,OAAO,cAAc,WAAW,QAAQ,GAAG;AAAA,IACrD,IAAI,CAAC,SAAS,SAAS,KAAK,CAAC,MAAM,QAAQ,UAAU,WAAW,GAAG;AAAA,MACjE,MAAM,aAAa,GAAG,QAAQ,qDAAqD;AAAA,IACrF;AAAA,IACA,MAAM,eAAe,eAAe,UAAU,cAAc,GAAG,QAAQ,qBAAqB;AAAA,IAC5F,MAAM,aAAa,iBAAiB,IAAI,YAAY,KAAK,IAAI;AAAA,IAC7D,WAAW,cAAc,aAAa,UAAU,aAAa,GAAG,QAAQ,oBAAoB,GAAG;AAAA,MAC7F,WAAW,IAAI,UAAU;AAAA,IAC3B;AAAA,IACA,iBAAiB,IAAI,cAAc,UAAU;AAAA,EAC/C;AAAA,EACA,OAAO,CAAC,GAAG,gBAAgB,EACxB,KAAK,EAAE,QAAQ,WAAW,KAAK,cAAc,KAAK,CAAC,EACnD,IAAI,EAAE,cAAc,gBACnB,OAAO,OAAO,EAAE,cAAc,aAAa,OAAO,OAAO,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,CACpF;AAAA;AAGJ,SAAS,YAAY,CAAC,QAA2B,MAAwB;AAAA,EACvE,OAAO;AAAA,IACL,GAAG,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,UAAU,eAAe,OAAO,GAAG,QAAQ,QAAQ,CAAC,CAAC;AAAA,EACrF,EAAE,KAAK;AAAA;AAGT,SAAS,cAAc,CAAC,OAAgB,MAAsB;AAAA,EAC5D,IAAI,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,WAAW,GAAG;AAAA,IAC1D,MAAM,aAAa,GAAG,iCAAiC;AAAA,EACzD;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,SAAS,CAAC,MAA2B,OAAqC;AAAA,EACjF,OAAO,KAAK,SAAS,MAAM,QAAQ,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,UAAU,MAAM,IAAI,KAAK,CAAC;AAAA;AAGhF,SAAS,QAAQ,CAAC,OAAkD;AAAA,EAClE,OAAO,OAAO,UAAU,YAAY,UAAU;AAAA;AAGhD,SAAS,YAAY,CAAC,SAAwB;AAAA,EAC5C,OAAO,IAAI,MAAM,qCAAqC,UAAU;AAAA;",
|
|
8
|
+
"debugId": "36A43958C6815AC664756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|