@sixb/core 0.1.21 → 0.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/commit-edits.d.ts +3 -1
- package/dist/actions/commit-edits.d.ts.map +1 -1
- package/dist/actions/execution.d.ts.map +1 -1
- package/dist/actions/index.js +63 -59
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/read-facade.d.ts +9 -1
- package/dist/actions/read-facade.d.ts.map +1 -1
- package/dist/actions/request.d.ts +15 -1
- package/dist/actions/request.d.ts.map +1 -1
- package/dist/actions/run/context.d.ts +1 -0
- package/dist/actions/run/context.d.ts.map +1 -1
- package/dist/actions/run/execute.d.ts +2 -3
- package/dist/actions/run/execute.d.ts.map +1 -1
- package/dist/actions/run/executor.d.ts +3 -0
- package/dist/actions/run/executor.d.ts.map +1 -1
- package/dist/actions/run/normalize.d.ts +2 -1
- package/dist/actions/run/normalize.d.ts.map +1 -1
- package/dist/actions/run/signals.d.ts +1 -3
- package/dist/actions/run/signals.d.ts.map +1 -1
- package/dist/actions/run/types.d.ts +16 -1
- package/dist/actions/run/types.d.ts.map +1 -1
- package/dist/actions/run-authorization.d.ts +14 -0
- package/dist/actions/run-authorization.d.ts.map +1 -1
- package/dist/actions/types/context.d.ts +17 -1
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/validators.d.ts.map +1 -1
- package/dist/activity/timeline.d.ts +8 -1
- package/dist/activity/timeline.d.ts.map +1 -1
- package/dist/agents/accounting.d.ts +15 -0
- package/dist/agents/accounting.d.ts.map +1 -0
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/agent-mail.d.ts +9 -0
- package/dist/agents/agent-mail.d.ts.map +1 -0
- package/dist/agents/api-gateway.d.ts +5 -0
- package/dist/agents/api-gateway.d.ts.map +1 -1
- package/dist/agents/approval-continuation.d.ts +23 -0
- package/dist/agents/approval-continuation.d.ts.map +1 -0
- package/dist/agents/approval-executor.d.ts +56 -0
- package/dist/agents/approval-executor.d.ts.map +1 -0
- package/dist/agents/approval-outcome.d.ts +8 -0
- package/dist/agents/approval-outcome.d.ts.map +1 -0
- package/dist/agents/approvals.d.ts +210 -0
- package/dist/agents/approvals.d.ts.map +1 -0
- package/dist/agents/authority.d.ts +10 -0
- package/dist/agents/authority.d.ts.map +1 -1
- package/dist/agents/builders.d.ts.map +1 -1
- package/dist/agents/cancel.d.ts +23 -0
- package/dist/agents/cancel.d.ts.map +1 -0
- package/dist/agents/child-question.d.ts +18 -0
- package/dist/agents/child-question.d.ts.map +1 -0
- package/dist/agents/children.d.ts +99 -0
- package/dist/agents/children.d.ts.map +1 -0
- package/dist/agents/context/index.js +1 -1
- package/dist/agents/context-compaction.d.ts.map +1 -1
- package/dist/agents/errors.d.ts +13 -1
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/execution.d.ts +180 -14
- package/dist/agents/execution.d.ts.map +1 -1
- package/dist/agents/fork.d.ts +16 -0
- package/dist/agents/fork.d.ts.map +1 -0
- package/dist/agents/ids.d.ts +7 -0
- package/dist/agents/ids.d.ts.map +1 -1
- package/dist/agents/index.d.ts +19 -8
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +159 -86
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/memory-execution.d.ts +57 -0
- package/dist/agents/memory-execution.d.ts.map +1 -0
- package/dist/agents/memory.d.ts +49 -0
- package/dist/agents/memory.d.ts.map +1 -0
- package/dist/agents/message.d.ts +50 -1
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/model-loop.d.ts +19 -0
- package/dist/agents/model-loop.d.ts.map +1 -1
- package/dist/agents/model-routing.d.ts +19 -0
- package/dist/agents/model-routing.d.ts.map +1 -0
- package/dist/agents/participants.d.ts +18 -0
- package/dist/agents/participants.d.ts.map +1 -0
- package/dist/agents/reference.d.ts.map +1 -1
- package/dist/agents/request.d.ts +36 -2
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/run-scope.d.ts +51 -0
- package/dist/agents/run-scope.d.ts.map +1 -0
- package/dist/agents/streams/index.d.ts +3 -2
- package/dist/agents/streams/index.d.ts.map +1 -1
- package/dist/agents/streams/index.js +7 -3
- package/dist/agents/streams/index.js.map +1 -1
- package/dist/agents/streams/internal.d.ts +1 -1
- package/dist/agents/streams/internal.d.ts.map +1 -1
- package/dist/agents/streams/internal.js +5 -3
- package/dist/agents/streams/internal.js.map +1 -1
- package/dist/agents/streams/protocol.d.ts +122 -3
- package/dist/agents/streams/protocol.d.ts.map +1 -1
- package/dist/agents/subagent-runs.d.ts +12 -0
- package/dist/agents/subagent-runs.d.ts.map +1 -0
- package/dist/agents/thread-access.d.ts +53 -0
- package/dist/agents/thread-access.d.ts.map +1 -0
- package/dist/agents/tool-definition.d.ts +5 -4
- package/dist/agents/tool-definition.d.ts.map +1 -1
- package/dist/agents/types.d.ts +23 -4
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/validation.d.ts +1 -1
- package/dist/agents/validation.d.ts.map +1 -1
- package/dist/artifacts/access.d.ts +52 -0
- package/dist/artifacts/access.d.ts.map +1 -0
- package/dist/artifacts/canvas.d.ts +92 -0
- package/dist/artifacts/canvas.d.ts.map +1 -0
- package/dist/artifacts/csv.d.ts +5 -0
- package/dist/artifacts/csv.d.ts.map +1 -1
- package/dist/artifacts/errors.d.ts +7 -2
- package/dist/artifacts/errors.d.ts.map +1 -1
- package/dist/artifacts/execution.d.ts +102 -7
- package/dist/artifacts/execution.d.ts.map +1 -1
- package/dist/artifacts/formula/check.d.ts +24 -0
- package/dist/artifacts/formula/check.d.ts.map +1 -0
- package/dist/artifacts/formula/evaluate.d.ts +32 -0
- package/dist/artifacts/formula/evaluate.d.ts.map +1 -0
- package/dist/artifacts/formula/index.d.ts +38 -0
- package/dist/artifacts/formula/index.d.ts.map +1 -0
- package/dist/artifacts/formula/parser.d.ts +67 -0
- package/dist/artifacts/formula/parser.d.ts.map +1 -0
- package/dist/artifacts/frames/assets.d.ts +11 -9
- package/dist/artifacts/frames/assets.d.ts.map +1 -1
- package/dist/artifacts/frames/entries.d.ts +19 -0
- package/dist/artifacts/frames/entries.d.ts.map +1 -0
- package/dist/artifacts/frames/grants.d.ts +6 -6
- package/dist/artifacts/frames/grants.d.ts.map +1 -1
- package/dist/artifacts/frames/index.d.ts +4 -2
- package/dist/artifacts/frames/index.d.ts.map +1 -1
- package/dist/artifacts/frames/index.js +444 -51
- package/dist/artifacts/frames/index.js.map +10 -8
- package/dist/artifacts/frames/kit.d.ts +10 -5
- package/dist/artifacts/frames/kit.d.ts.map +1 -1
- package/dist/artifacts/frames/probe.d.ts +16 -12
- package/dist/artifacts/frames/probe.d.ts.map +1 -1
- package/dist/artifacts/frames/protocol.d.ts +79 -10
- package/dist/artifacts/frames/protocol.d.ts.map +1 -1
- package/dist/artifacts/frames/runtime.d.ts +27 -9
- package/dist/artifacts/frames/runtime.d.ts.map +1 -1
- package/dist/artifacts/index.d.ts +11 -5
- package/dist/artifacts/index.d.ts.map +1 -1
- package/dist/artifacts/index.js +128 -6
- package/dist/artifacts/index.js.map +3 -3
- package/dist/artifacts/kinds.d.ts +1 -1
- package/dist/artifacts/kinds.d.ts.map +1 -1
- package/dist/artifacts/limits.d.ts +30 -0
- package/dist/artifacts/limits.d.ts.map +1 -1
- package/dist/artifacts/live-sheet.d.ts +65 -0
- package/dist/artifacts/live-sheet.d.ts.map +1 -0
- package/dist/artifacts/outline.d.ts +27 -1
- package/dist/artifacts/outline.d.ts.map +1 -1
- package/dist/artifacts/publish/index.d.ts +2 -0
- package/dist/artifacts/publish/index.d.ts.map +1 -1
- package/dist/artifacts/publish/index.js +59 -19
- package/dist/artifacts/publish/index.js.map +1 -1
- package/dist/artifacts/publish/publish.d.ts +43 -11
- package/dist/artifacts/publish/publish.d.ts.map +1 -1
- package/dist/artifacts/publish/queries.d.ts +33 -0
- package/dist/artifacts/publish/queries.d.ts.map +1 -0
- package/dist/artifacts/publish/references.d.ts +6 -3
- package/dist/artifacts/publish/references.d.ts.map +1 -1
- package/dist/artifacts/publish/validate/canvas.d.ts +18 -0
- package/dist/artifacts/publish/validate/canvas.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/html.d.ts +20 -0
- package/dist/artifacts/publish/validate/html.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/page.d.ts +15 -0
- package/dist/artifacts/publish/validate/page.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/sheet.d.ts +11 -3
- package/dist/artifacts/publish/validate/sheet.d.ts.map +1 -1
- package/dist/artifacts/publish/validate/slides.d.ts +1 -7
- package/dist/artifacts/publish/validate/slides.d.ts.map +1 -1
- package/dist/artifacts/queries.d.ts +95 -0
- package/dist/artifacts/queries.d.ts.map +1 -0
- package/dist/artifacts/resolve.d.ts +6 -0
- package/dist/artifacts/resolve.d.ts.map +1 -1
- package/dist/artifacts/run-query.d.ts +26 -0
- package/dist/artifacts/run-query.d.ts.map +1 -0
- package/dist/artifacts/serialize-query.d.ts +12 -0
- package/dist/artifacts/serialize-query.d.ts.map +1 -0
- package/dist/artifacts/sheet-rules.d.ts +26 -0
- package/dist/artifacts/sheet-rules.d.ts.map +1 -0
- package/dist/artifacts/tones.d.ts +8 -0
- package/dist/artifacts/tones.d.ts.map +1 -0
- package/dist/artifacts/workbook.d.ts +76 -5
- package/dist/artifacts/workbook.d.ts.map +1 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +14 -11
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/member-events.d.ts +13 -0
- package/dist/auth/member-events.d.ts.map +1 -0
- package/dist/auth/profile.d.ts +11 -0
- package/dist/auth/profile.d.ts.map +1 -0
- package/dist/auth/runtime.d.ts +31 -3
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/auth/strategy.d.ts +3 -1
- package/dist/auth/strategy.d.ts.map +1 -1
- package/dist/auth/strategy.js +7 -3
- package/dist/auth/strategy.js.map +1 -1
- package/dist/auth/types.d.ts +30 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/authorization/decision.d.ts +15 -0
- package/dist/authorization/decision.d.ts.map +1 -1
- package/dist/authorization/event-visibility.d.ts +5 -1
- package/dist/authorization/event-visibility.d.ts.map +1 -1
- package/dist/authorization/grant-kinds.d.ts +2 -2
- package/dist/authorization/grant-kinds.d.ts.map +1 -1
- package/dist/authorization/index.d.ts +2 -2
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +12 -7
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/resolve.d.ts +19 -1
- package/dist/authorization/resolve.d.ts.map +1 -1
- package/dist/authorization/run-visibility.d.ts +8 -1
- package/dist/authorization/run-visibility.d.ts.map +1 -1
- package/dist/authorization/types.d.ts +14 -0
- package/dist/authorization/types.d.ts.map +1 -1
- package/dist/bootstrap/index.js +69 -65
- package/dist/bootstrap/index.js.map +2 -2
- package/dist/{chunk-ky3j490c.js → chunk-02bzjgnt.js} +6 -6
- package/dist/{chunk-ky3j490c.js.map → chunk-02bzjgnt.js.map} +1 -1
- package/dist/{chunk-mfs23znk.js → chunk-07kkp2e1.js} +1 -1
- package/dist/{chunk-c1rxbz5y.js → chunk-098anw4f.js} +21 -19
- package/dist/chunk-098anw4f.js.map +12 -0
- package/dist/{chunk-z58tm0hm.js → chunk-0phpbbvm.js} +3 -3
- package/dist/{chunk-ere85b8y.js → chunk-0xmt5p5y.js} +116 -27
- package/dist/chunk-0xmt5p5y.js.map +14 -0
- package/dist/{chunk-t6f3tdnr.js → chunk-16a9dmfy.js} +33 -2
- package/dist/{chunk-t6f3tdnr.js.map → chunk-16a9dmfy.js.map} +5 -4
- package/dist/chunk-18sk89cg.js +47 -0
- package/dist/chunk-18sk89cg.js.map +10 -0
- package/dist/{chunk-e17zdm62.js → chunk-1t6k1avb.js} +1 -1
- package/dist/chunk-2626mh4m.js +693 -0
- package/dist/chunk-2626mh4m.js.map +19 -0
- package/dist/{chunk-qczk96d9.js → chunk-2adz0h75.js} +13 -4
- package/dist/chunk-2adz0h75.js.map +11 -0
- package/dist/{chunk-kge7k6ey.js → chunk-2fn60nvs.js} +2 -2
- package/dist/{chunk-99nd4rc1.js → chunk-2gjj5dx3.js} +5 -4
- package/dist/{chunk-99nd4rc1.js.map → chunk-2gjj5dx3.js.map} +3 -3
- package/dist/{chunk-mjddfa7k.js → chunk-3fqxbn31.js} +2 -24
- package/dist/{chunk-mjddfa7k.js.map → chunk-3fqxbn31.js.map} +3 -4
- package/dist/{chunk-y0c4e6ex.js → chunk-3gbefjg5.js} +1 -1
- package/dist/{chunk-5hx48dnn.js → chunk-45ngkxkp.js} +52 -31
- package/dist/chunk-45ngkxkp.js.map +13 -0
- package/dist/{chunk-cy4mbddw.js → chunk-48jezz3j.js} +1 -1
- package/dist/{chunk-561r0yc9.js → chunk-4b26qwbg.js} +13 -13
- package/dist/{chunk-561r0yc9.js.map → chunk-4b26qwbg.js.map} +1 -1
- package/dist/{chunk-9k93ah50.js → chunk-4f3ydv7t.js} +33 -69
- package/dist/chunk-4f3ydv7t.js.map +10 -0
- package/dist/chunk-4y26vs3v.js +97 -0
- package/dist/chunk-4y26vs3v.js.map +10 -0
- package/dist/{chunk-4as3wt1c.js → chunk-4ymrcdbm.js} +7 -3
- package/dist/chunk-4ymrcdbm.js.map +12 -0
- package/dist/{chunk-hcbyfxbe.js → chunk-5grk14e5.js} +76 -2
- package/dist/{chunk-hcbyfxbe.js.map → chunk-5grk14e5.js.map} +4 -3
- package/dist/{chunk-8frc8a4j.js → chunk-65pyhyas.js} +90 -83
- package/dist/chunk-65pyhyas.js.map +20 -0
- package/dist/{chunk-hwksyjks.js → chunk-661ezhks.js} +182 -6
- package/dist/chunk-661ezhks.js.map +11 -0
- package/dist/{chunk-447a5c0p.js → chunk-6n69k945.js} +2 -2
- package/dist/{chunk-0bphap9y.js → chunk-6p0pastb.js} +5 -5
- package/dist/{chunk-9j4jw7as.js → chunk-6rrtzea3.js} +18 -5
- package/dist/chunk-6rrtzea3.js.map +14 -0
- package/dist/{chunk-431pyp2c.js → chunk-6y0mkhex.js} +2 -2
- package/dist/{chunk-f4pamkt9.js → chunk-73v685wb.js} +10 -10
- package/dist/{chunk-f4pamkt9.js.map → chunk-73v685wb.js.map} +3 -3
- package/dist/{chunk-akzryx9h.js → chunk-7gr4j2eq.js} +7836 -5047
- package/dist/chunk-7gr4j2eq.js.map +120 -0
- package/dist/{chunk-bk9svbcq.js → chunk-7mc2wkre.js} +386 -86
- package/dist/chunk-7mc2wkre.js.map +50 -0
- package/dist/{chunk-6rqgmkde.js → chunk-7z5p905k.js} +335 -703
- package/dist/chunk-7z5p905k.js.map +22 -0
- package/dist/{chunk-yxd3nnqt.js → chunk-9mab3dvg.js} +26 -2
- package/dist/chunk-9mab3dvg.js.map +11 -0
- package/dist/chunk-9wr3yajk.js +42 -0
- package/dist/chunk-9wr3yajk.js.map +10 -0
- package/dist/chunk-az47zep4.js +41 -0
- package/dist/chunk-az47zep4.js.map +10 -0
- package/dist/{chunk-s7jg7pmn.js → chunk-bab05bhg.js} +1 -1
- package/dist/{chunk-858emn8m.js → chunk-bktev1ds.js} +14 -11
- package/dist/{chunk-858emn8m.js.map → chunk-bktev1ds.js.map} +3 -3
- package/dist/{chunk-dhcv7yxc.js → chunk-c0vk1djt.js} +5 -3
- package/dist/chunk-c0vk1djt.js.map +11 -0
- package/dist/chunk-c69nj7se.js +3 -0
- package/dist/{chunk-7n30ybym.js.map → chunk-c69nj7se.js.map} +1 -1
- package/dist/{chunk-q5e5tv4b.js → chunk-c844dkwd.js} +1 -1
- package/dist/{chunk-g257jwnc.js → chunk-cdk3egjj.js} +17 -4
- package/dist/chunk-cdk3egjj.js.map +12 -0
- package/dist/chunk-cswhawa2.js +113 -0
- package/dist/chunk-cswhawa2.js.map +10 -0
- package/dist/{chunk-cfj9dfbb.js → chunk-d2m879s4.js} +2 -2
- package/dist/{chunk-arns890k.js → chunk-d7vyc7k6.js} +2 -2
- package/dist/chunk-d7vyc7k6.js.map +10 -0
- package/dist/{chunk-q7gn29y3.js → chunk-dp0cdtj2.js} +2 -2
- package/dist/{chunk-6x0pqh32.js → chunk-e5wf5vz0.js} +3 -1
- package/dist/chunk-e5wf5vz0.js.map +10 -0
- package/dist/{chunk-cn0fwwhy.js → chunk-efmm01gj.js} +108 -1045
- package/dist/chunk-efmm01gj.js.map +18 -0
- package/dist/{chunk-918wwnaa.js → chunk-ezne9wc9.js} +1224 -430
- package/dist/chunk-ezne9wc9.js.map +71 -0
- package/dist/{chunk-tbc1ngpd.js → chunk-fe8zwt8b.js} +58 -12
- package/dist/{chunk-tbc1ngpd.js.map → chunk-fe8zwt8b.js.map} +5 -4
- package/dist/{chunk-br3k6qbf.js → chunk-fm62y49k.js} +1 -1
- package/dist/{chunk-nq6gpjt7.js → chunk-fntqb7qy.js} +30 -4
- package/dist/{chunk-nq6gpjt7.js.map → chunk-fntqb7qy.js.map} +5 -5
- package/dist/{chunk-1cc1xaf3.js → chunk-fp2kq35z.js} +26 -10
- package/dist/{chunk-1cc1xaf3.js.map → chunk-fp2kq35z.js.map} +5 -5
- package/dist/{chunk-vvxtn22d.js → chunk-g663fahq.js} +2 -2
- package/dist/{chunk-k43ct2ke.js → chunk-gvj5cd3b.js} +16 -9
- package/dist/chunk-gvj5cd3b.js.map +12 -0
- package/dist/{chunk-rmakanzx.js → chunk-h33shhq6.js} +5 -5
- package/dist/{chunk-nn5xnx3s.js → chunk-h3pbv7n8.js} +1738 -38
- package/dist/chunk-h3pbv7n8.js.map +48 -0
- package/dist/chunk-hn2r7z41.js.map +1 -1
- package/dist/{chunk-pbcbn83d.js → chunk-hqsp2sx4.js} +54 -8
- package/dist/chunk-hqsp2sx4.js.map +14 -0
- package/dist/{chunk-d09e3rax.js → chunk-hwarjrgf.js} +1 -1
- package/dist/{chunk-vf57cr4t.js → chunk-hyesv9dv.js} +1 -1
- package/dist/chunk-hz5d43gn.js +45 -0
- package/dist/chunk-hz5d43gn.js.map +10 -0
- package/dist/{chunk-91mg3nj9.js → chunk-j936th07.js} +86 -41
- package/dist/chunk-j936th07.js.map +12 -0
- package/dist/chunk-kcqpk9w1.js +75 -0
- package/dist/chunk-kcqpk9w1.js.map +10 -0
- package/dist/{chunk-5vems3nx.js → chunk-m2nevja0.js} +2 -2
- package/dist/{chunk-x9v4cx1d.js → chunk-m36fw8ft.js} +1 -1
- package/dist/{chunk-a40ad1ft.js → chunk-mbsbxarb.js} +1 -1
- package/dist/chunk-mzx71snp.js +129 -0
- package/dist/chunk-mzx71snp.js.map +10 -0
- package/dist/{chunk-6aawea28.js → chunk-n8q5j6y5.js} +1 -1
- package/dist/{chunk-d7dnxdep.js → chunk-n9zpx9c6.js} +4 -4
- package/dist/{chunk-xvsc5m8n.js → chunk-npcr0228.js} +1 -1
- package/dist/chunk-nydf3dbe.js +663 -0
- package/dist/chunk-nydf3dbe.js.map +13 -0
- package/dist/chunk-pdt5cw8z.js +233 -0
- package/dist/chunk-pdt5cw8z.js.map +11 -0
- package/dist/{chunk-rj69qcrd.js → chunk-pgrf64hp.js} +55 -7
- package/dist/chunk-pgrf64hp.js.map +12 -0
- package/dist/{chunk-y5tah2kf.js → chunk-q4pmvkg0.js} +1 -1
- package/dist/chunk-qhqgp4jf.js +1418 -0
- package/dist/chunk-qhqgp4jf.js.map +22 -0
- package/dist/{chunk-48qjhh6v.js → chunk-qx00vjrj.js} +19 -60
- package/dist/chunk-qx00vjrj.js.map +13 -0
- package/dist/{chunk-5948n82c.js → chunk-r6szek0x.js} +184 -7
- package/dist/chunk-r6szek0x.js.map +10 -0
- package/dist/{chunk-v4jbb3rs.js → chunk-rap5w0x0.js} +156 -2
- package/dist/chunk-rap5w0x0.js.map +10 -0
- package/dist/{chunk-pfp1txq2.js → chunk-sgx82nnt.js} +5 -31
- package/dist/{chunk-pfp1txq2.js.map → chunk-sgx82nnt.js.map} +3 -4
- package/dist/{chunk-bkpke1sg.js → chunk-t5608tkq.js} +3 -1
- package/dist/{chunk-bkpke1sg.js.map → chunk-t5608tkq.js.map} +3 -3
- package/dist/{chunk-29yx306f.js → chunk-tdxfsg1c.js} +507 -265
- package/dist/chunk-tdxfsg1c.js.map +23 -0
- package/dist/{chunk-d5rjr8c0.js → chunk-vabga7fk.js} +1 -1
- package/dist/{chunk-dhdha526.js → chunk-vhbw5sqm.js} +26 -2
- package/dist/chunk-vhbw5sqm.js.map +10 -0
- package/dist/{chunk-e6k4thh5.js → chunk-vpgwq5nf.js} +98 -12
- package/dist/chunk-vpgwq5nf.js.map +21 -0
- package/dist/{chunk-61y5xs4p.js → chunk-vyt322b6.js} +69 -50
- package/dist/{chunk-61y5xs4p.js.map → chunk-vyt322b6.js.map} +4 -4
- package/dist/chunk-waqk73p1.js +2380 -0
- package/dist/chunk-waqk73p1.js.map +23 -0
- package/dist/chunk-wsc1brye.js +27 -0
- package/dist/chunk-wsc1brye.js.map +10 -0
- package/dist/{chunk-96yw3pwd.js → chunk-y7dbmaqh.js} +28 -2
- package/dist/chunk-y7dbmaqh.js.map +10 -0
- package/dist/{chunk-6vb4st8k.js → chunk-yc9ners4.js} +120 -19
- package/dist/{chunk-6vb4st8k.js.map → chunk-yc9ners4.js.map} +8 -8
- package/dist/{chunk-dvd2fp9q.js → chunk-zbc929zg.js} +28 -4
- package/dist/chunk-zbc929zg.js.map +13 -0
- package/dist/chunk-zrvhsq7f.js +37 -0
- package/dist/chunk-zrvhsq7f.js.map +10 -0
- package/dist/datasets/write.js +5 -5
- package/dist/error-reporting/internal.js +3 -3
- package/dist/errors/catalog.d.ts +26 -0
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/internal.d.ts.map +1 -1
- package/dist/errors/internal.js +1 -1
- package/dist/events/definitions.d.ts +7 -0
- package/dist/events/definitions.d.ts.map +1 -1
- package/dist/events/execution.d.ts.map +1 -1
- package/dist/events/index.d.ts +2 -3
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +8 -10
- package/dist/events/index.js.map +1 -1
- package/dist/events/scope.d.ts.map +1 -1
- package/dist/events/scope.js +1 -1
- package/dist/events/selectors/builder.d.ts +12 -1
- package/dist/events/selectors/builder.d.ts.map +1 -1
- package/dist/events/selectors/index.d.ts +2 -2
- package/dist/events/selectors/index.d.ts.map +1 -1
- package/dist/events/selectors/index.js +2 -2
- package/dist/events/selectors/types.d.ts +19 -3
- package/dist/events/selectors/types.d.ts.map +1 -1
- package/dist/events/service.d.ts +17 -2
- package/dist/events/service.d.ts.map +1 -1
- package/dist/events/types/index.d.ts +3 -1
- package/dist/events/types/index.d.ts.map +1 -1
- package/dist/events/types/users.d.ts +63 -0
- package/dist/events/types/users.d.ts.map +1 -0
- package/dist/events/view-conditions.d.ts +34 -0
- package/dist/events/view-conditions.d.ts.map +1 -0
- package/dist/execution/agent.d.ts +15 -0
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +63 -57
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorization.d.ts.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts +51 -2
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- package/dist/execution/lineage.d.ts +7 -0
- package/dist/execution/lineage.d.ts.map +1 -0
- package/dist/execution/object-reader-ontology.d.ts +2 -2
- package/dist/execution/object-reader-ontology.d.ts.map +1 -1
- package/dist/execution/object-reader-security.d.ts +24 -3
- package/dist/execution/object-reader-security.d.ts.map +1 -1
- package/dist/execution/object-reader-users.d.ts +20 -0
- package/dist/execution/object-reader-users.d.ts.map +1 -0
- package/dist/execution/preparation.d.ts +23 -0
- package/dist/execution/preparation.d.ts.map +1 -0
- package/dist/execution/primitive.js +61 -57
- package/dist/execution/primitive.js.map +1 -1
- package/dist/execution/request.d.ts +2 -1
- package/dist/execution/request.d.ts.map +1 -1
- package/dist/execution/request.js +64 -56
- package/dist/execution/request.js.map +3 -3
- package/dist/execution/unique-lookup.d.ts +14 -0
- package/dist/execution/unique-lookup.d.ts.map +1 -0
- package/dist/execution/visible-objects.d.ts +12 -0
- package/dist/execution/visible-objects.d.ts.map +1 -0
- package/dist/http/api-routes.d.ts +17 -0
- package/dist/http/api-routes.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/index.d.ts +32 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +137 -126
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/index.js +5 -5
- package/dist/materialization/errors.d.ts +25 -0
- package/dist/materialization/errors.d.ts.map +1 -1
- package/dist/materialization/event-envelopes.d.ts +5 -0
- package/dist/materialization/event-envelopes.d.ts.map +1 -1
- package/dist/materialization/index.d.ts +1 -1
- package/dist/materialization/index.d.ts.map +1 -1
- package/dist/materialization/index.js +14 -8
- package/dist/materialization/index.js.map +1 -1
- package/dist/materialization/model.d.ts +20 -2
- package/dist/materialization/model.d.ts.map +1 -1
- package/dist/materializer/edits/commit.d.ts.map +1 -1
- package/dist/materializer/edits/load-state.d.ts +5 -1
- package/dist/materializer/edits/load-state.d.ts.map +1 -1
- package/dist/materializer/edits/plan.d.ts.map +1 -1
- package/dist/materializer/edits/unique-values.d.ts +47 -0
- package/dist/materializer/edits/unique-values.d.ts.map +1 -0
- package/dist/materializer/edits/working-state.d.ts +6 -1
- package/dist/materializer/edits/working-state.d.ts.map +1 -1
- package/dist/materializer/execution/work-records.d.ts +7 -1
- package/dist/materializer/execution/work-records.d.ts.map +1 -1
- package/dist/materializer/index.js +45 -41
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
- package/dist/materializer/projections/source-materialization.d.ts +1 -0
- package/dist/materializer/projections/source-materialization.d.ts.map +1 -1
- package/dist/materializer/shared/normalize.d.ts.map +1 -1
- package/dist/materializer/shared/projection-run.d.ts +0 -1
- package/dist/materializer/shared/projection-run.d.ts.map +1 -1
- package/dist/materializer/telemetry/plan.d.ts.map +1 -1
- package/dist/models/audio/catalog.d.ts +13 -1
- package/dist/models/audio/catalog.d.ts.map +1 -1
- package/dist/models/audio/errors.d.ts +6 -1
- package/dist/models/audio/errors.d.ts.map +1 -1
- package/dist/models/audio/runtime.d.ts.map +1 -1
- package/dist/models/audio/speech.d.ts +8 -0
- package/dist/models/audio/speech.d.ts.map +1 -0
- package/dist/models/audio/types.d.ts +93 -0
- package/dist/models/audio/types.d.ts.map +1 -1
- package/dist/models/calls.d.ts +27 -0
- package/dist/models/calls.d.ts.map +1 -0
- package/dist/models/catalog-index.d.ts +7 -4
- package/dist/models/catalog-index.d.ts.map +1 -1
- package/dist/models/catalog.d.ts +55 -3
- package/dist/models/catalog.d.ts.map +1 -1
- package/dist/models/decision/runtime.d.ts +6 -1
- package/dist/models/decision/runtime.d.ts.map +1 -1
- package/dist/models/decision/validation.d.ts +4 -1
- package/dist/models/decision/validation.d.ts.map +1 -1
- package/dist/models/definitions.d.ts +23 -1
- package/dist/models/definitions.d.ts.map +1 -1
- package/dist/models/events.d.ts +12 -1
- package/dist/models/events.d.ts.map +1 -1
- package/dist/models/execution/binding.d.ts +3 -1
- package/dist/models/execution/binding.d.ts.map +1 -1
- package/dist/models/execution/index.d.ts +1 -0
- package/dist/models/execution/index.d.ts.map +1 -1
- package/dist/models/execution/index.js +44 -34
- package/dist/models/execution/index.js.map +1 -1
- package/dist/models/execution/model-call-accounting.d.ts.map +1 -1
- package/dist/models/execution/model-call-recorder.d.ts +3 -0
- package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
- package/dist/models/execution/usage.d.ts.map +1 -1
- package/dist/models/execution.d.ts +4 -2
- package/dist/models/execution.d.ts.map +1 -1
- package/dist/models/generation-types.d.ts +8 -1
- package/dist/models/generation-types.d.ts.map +1 -1
- package/dist/models/image/catalog.d.ts +13 -0
- package/dist/models/image/catalog.d.ts.map +1 -0
- package/dist/models/image/errors.d.ts +8 -0
- package/dist/models/image/errors.d.ts.map +1 -0
- package/dist/models/image/runtime.d.ts +8 -0
- package/dist/models/image/runtime.d.ts.map +1 -0
- package/dist/models/image/types.d.ts +103 -0
- package/dist/models/image/types.d.ts.map +1 -0
- package/dist/models/index.d.ts +12 -8
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +17 -7
- package/dist/models/index.js.map +1 -1
- package/dist/models/input-file.d.ts +9 -0
- package/dist/models/input-file.d.ts.map +1 -0
- package/dist/models/language-model.d.ts +13 -0
- package/dist/models/language-model.d.ts.map +1 -1
- package/dist/models/pricing.d.ts +25 -10
- package/dist/models/pricing.d.ts.map +1 -1
- package/dist/models/rate-card.d.ts +44 -6
- package/dist/models/rate-card.d.ts.map +1 -1
- package/dist/objects/conditional-writes.d.ts +37 -0
- package/dist/objects/conditional-writes.d.ts.map +1 -0
- package/dist/objects/execution.d.ts +2 -0
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.d.ts +1 -0
- package/dist/objects/index.d.ts.map +1 -1
- package/dist/objects/index.js +68 -58
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/link/authorization.d.ts +3 -0
- package/dist/objects/link/authorization.d.ts.map +1 -1
- package/dist/objects/link/endpoints.d.ts +21 -2
- package/dist/objects/link/endpoints.d.ts.map +1 -1
- package/dist/objects/link/remove.d.ts.map +1 -1
- package/dist/objects/link/upsert-batch.d.ts.map +1 -1
- package/dist/objects/link/upsert.d.ts.map +1 -1
- package/dist/objects/materializer-adapter.d.ts +13 -4
- package/dist/objects/materializer-adapter.d.ts.map +1 -1
- package/dist/objects/object/delete.d.ts +3 -0
- package/dist/objects/object/delete.d.ts.map +1 -1
- package/dist/objects/object/upsert-batch.d.ts.map +1 -1
- package/dist/objects/object/upsert.d.ts.map +1 -1
- package/dist/objects/query/current-user.d.ts +17 -0
- package/dist/objects/query/current-user.d.ts.map +1 -0
- package/dist/objects/query/executor.d.ts +14 -0
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.d.ts +2 -2
- package/dist/objects/query/index.d.ts.map +1 -1
- package/dist/objects/query/index.js +49 -44
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/ir.d.ts +19 -1
- package/dist/objects/query/ir.d.ts.map +1 -1
- package/dist/objects/query/matches-predicate.d.ts +9 -0
- package/dist/objects/query/matches-predicate.d.ts.map +1 -0
- package/dist/objects/query/normalize.d.ts.map +1 -1
- package/dist/objects/query/user-expansions.d.ts +27 -0
- package/dist/objects/query/user-expansions.d.ts.map +1 -0
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/runtime-batch.d.ts +3 -1
- package/dist/objects/runtime-batch.d.ts.map +1 -1
- package/dist/objects/sdk/object-set.d.ts.map +1 -1
- package/dist/objects/sdk/query-executor.d.ts +6 -0
- package/dist/objects/sdk/query-executor.d.ts.map +1 -1
- package/dist/objects/serialize.d.ts +39 -0
- package/dist/objects/serialize.d.ts.map +1 -0
- package/dist/objects/unique-violation.d.ts +22 -0
- package/dist/objects/unique-violation.d.ts.map +1 -0
- package/dist/ontology/builders.d.ts +3 -1
- package/dist/ontology/builders.d.ts.map +1 -1
- package/dist/ontology/index.d.ts +2 -2
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +11 -7
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/internal.js +7 -5
- package/dist/ontology/internal.js.map +3 -3
- package/dist/ontology/json-schema.d.ts.map +1 -1
- package/dist/ontology/primitives.d.ts +3 -0
- package/dist/ontology/primitives.d.ts.map +1 -1
- package/dist/ontology/registry.d.ts +6 -0
- package/dist/ontology/registry.d.ts.map +1 -1
- package/dist/ontology/types.d.ts +9 -0
- package/dist/ontology/types.d.ts.map +1 -1
- package/dist/ontology/unique-values.d.ts +26 -0
- package/dist/ontology/unique-values.d.ts.map +1 -0
- package/dist/ontology/user-ref.d.ts +23 -0
- package/dist/ontology/user-ref.d.ts.map +1 -1
- package/dist/ontology/validation/properties.d.ts.map +1 -1
- package/dist/ontology/validation/schema.d.ts.map +1 -1
- package/dist/pipelines/index.js +43 -40
- package/dist/pipelines/index.js.map +1 -1
- package/dist/projections/internal.js +36 -33
- package/dist/projections/internal.js.map +1 -1
- package/dist/projections/registry.d.ts +4 -0
- package/dist/projections/registry.d.ts.map +1 -1
- package/dist/projections/revision.d.ts +15 -0
- package/dist/projections/revision.d.ts.map +1 -1
- package/dist/projections/run-dispatch.d.ts.map +1 -1
- package/dist/projections/types.d.ts +2 -0
- package/dist/projections/types.d.ts.map +1 -1
- package/dist/query.d.ts +4 -2
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +2 -2
- package/dist/rules/execution.d.ts.map +1 -1
- package/dist/runtime/ai-cost.d.ts +2 -0
- package/dist/runtime/ai-cost.d.ts.map +1 -1
- package/dist/runtime/ai-usage.d.ts +7 -0
- package/dist/runtime/ai-usage.d.ts.map +1 -1
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/internal.js +42 -38
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/sixb.d.ts +2 -0
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +66 -8
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandboxes/index.js +7 -6
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/schedules/builders.d.ts.map +1 -1
- package/dist/schedules/index.js +3 -3
- package/dist/schedules/runtime.d.ts.map +1 -1
- package/dist/schedules/validation.d.ts.map +1 -1
- package/dist/security/grants.d.ts +12 -4
- package/dist/security/grants.d.ts.map +1 -1
- package/dist/security/index.d.ts +1 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/internal.js +1 -1
- package/dist/security/project.d.ts +4 -1
- package/dist/security/project.d.ts.map +1 -1
- package/dist/security/public.js +2 -2
- package/dist/security/registry.d.ts +6 -0
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +47 -9
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/security/view-conditions.d.ts +37 -0
- package/dist/security/view-conditions.d.ts.map +1 -0
- package/dist/shares/execution.d.ts.map +1 -1
- package/dist/shares/internal.js +34 -31
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/action-runs/failure.js +2 -2
- package/dist/storage/action-runs/provider.js +1 -1
- package/dist/storage/action-runs/types.d.ts +1 -1
- package/dist/storage/action-runs/types.d.ts.map +1 -1
- package/dist/storage/agents/errors.d.ts +3 -1
- package/dist/storage/agents/errors.d.ts.map +1 -1
- package/dist/storage/agents/in-memory.d.ts +120 -3
- package/dist/storage/agents/in-memory.d.ts.map +1 -1
- package/dist/storage/agents/index.d.ts +2 -2
- package/dist/storage/agents/index.d.ts.map +1 -1
- package/dist/storage/agents/provider.d.ts +154 -4
- package/dist/storage/agents/provider.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +60 -5
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +565 -13
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/analytics.d.ts +10 -1
- package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
- package/dist/storage/ai-cost/groups.d.ts +9 -0
- package/dist/storage/ai-cost/groups.d.ts.map +1 -1
- package/dist/storage/ai-cost/index.d.ts +1 -1
- package/dist/storage/ai-cost/index.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.d.ts +2 -1
- package/dist/storage/ai-cost/provider.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.js +11 -5
- package/dist/storage/ai-cost/provider.js.map +1 -1
- package/dist/storage/ai-cost/types.d.ts +14 -2
- package/dist/storage/ai-cost/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/validation.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +5 -4
- package/dist/storage/ai-limits/enforcement.js.map +1 -1
- package/dist/storage/ai-limits/provider.d.ts +1 -1
- package/dist/storage/ai-limits/provider.d.ts.map +1 -1
- package/dist/storage/ai-limits/provider.js +3 -2
- package/dist/storage/ai-limits/provider.js.map +1 -1
- package/dist/storage/ai-usage/in-memory.d.ts +5 -1
- package/dist/storage/ai-usage/in-memory.d.ts.map +1 -1
- package/dist/storage/ai-usage/index.d.ts +2 -2
- package/dist/storage/ai-usage/index.d.ts.map +1 -1
- package/dist/storage/ai-usage/record.d.ts +5 -1
- package/dist/storage/ai-usage/record.d.ts.map +1 -1
- package/dist/storage/ai-usage/types.d.ts +33 -0
- package/dist/storage/ai-usage/types.d.ts.map +1 -1
- package/dist/storage/ai-usage/usage.d.ts +2 -0
- package/dist/storage/ai-usage/usage.d.ts.map +1 -1
- package/dist/storage/artifacts/errors.d.ts +12 -2
- package/dist/storage/artifacts/errors.d.ts.map +1 -1
- package/dist/storage/artifacts/in-memory.d.ts +23 -2
- package/dist/storage/artifacts/in-memory.d.ts.map +1 -1
- package/dist/storage/artifacts/index.d.ts +2 -2
- package/dist/storage/artifacts/index.d.ts.map +1 -1
- package/dist/storage/artifacts/record.d.ts +19 -2
- package/dist/storage/artifacts/record.d.ts.map +1 -1
- package/dist/storage/artifacts/types.d.ts +87 -8
- package/dist/storage/artifacts/types.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/auth-storage.d.ts +3 -2
- package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/users.d.ts +7 -3
- package/dist/storage/auth/in-memory/users.d.ts.map +1 -1
- package/dist/storage/auth/index.d.ts +1 -1
- package/dist/storage/auth/index.d.ts.map +1 -1
- package/dist/storage/auth/types.d.ts +40 -9
- package/dist/storage/auth/types.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +1 -1
- package/dist/storage/executions/in-memory.d.ts +2 -1
- package/dist/storage/executions/in-memory.d.ts.map +1 -1
- package/dist/storage/executions/index.d.ts +1 -1
- package/dist/storage/executions/index.d.ts.map +1 -1
- package/dist/storage/executions/types.d.ts +15 -0
- package/dist/storage/executions/types.d.ts.map +1 -1
- package/dist/storage/file-upload-sessions/provider.js +15 -12
- package/dist/storage/file-upload-sessions/provider.js.map +1 -1
- package/dist/storage/index.d.ts +13 -11
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +50 -39
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +2 -2
- package/dist/storage/internal.d.ts.map +1 -1
- package/dist/storage/internal.js +19 -8
- package/dist/storage/internal.js.map +1 -1
- package/dist/storage/migrations/migrate-storage.d.ts +4 -1
- package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
- package/dist/storage/migrations/prepare-unique-properties.d.ts +18 -0
- package/dist/storage/migrations/prepare-unique-properties.d.ts.map +1 -0
- package/dist/storage/objects/guard.d.ts +1 -1
- package/dist/storage/objects/guard.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/conditional-reader.d.ts +5 -0
- package/dist/storage/objects/in-memory/conditional-reader.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/read-scope.d.ts +3 -9
- package/dist/storage/objects/in-memory/read-scope.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/read-source.d.ts +10 -1
- package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/scoped-reader.d.ts +14 -0
- package/dist/storage/objects/in-memory/scoped-reader.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/storage.d.ts +36 -1
- package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
- package/dist/storage/objects/index.d.ts +2 -2
- package/dist/storage/objects/index.d.ts.map +1 -1
- package/dist/storage/objects/read-scope.d.ts +9 -1
- package/dist/storage/objects/read-scope.d.ts.map +1 -1
- package/dist/storage/objects/types.d.ts +64 -1
- package/dist/storage/objects/types.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/index.d.ts +2 -0
- package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts +1 -0
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/unique-values.d.ts +32 -0
- package/dist/storage/ontology/in-memory/unique-values.d.ts.map +1 -0
- package/dist/storage/ontology/index.d.ts +4 -1
- package/dist/storage/ontology/index.d.ts.map +1 -1
- package/dist/storage/ontology/materializations.d.ts +34 -1
- package/dist/storage/ontology/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/provider-work.d.ts +15 -2
- package/dist/storage/ontology/provider-work.d.ts.map +1 -1
- package/dist/storage/ontology/provider.d.ts +1 -1
- package/dist/storage/ontology/provider.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +9 -4
- package/dist/storage/ontology/provider.js.map +1 -1
- package/dist/storage/ontology/unique-values.d.ts +54 -0
- package/dist/storage/ontology/unique-values.d.ts.map +1 -0
- package/dist/storage/operation-scope.d.ts +1 -1
- package/dist/storage/operation-scope.d.ts.map +1 -1
- package/dist/storage/operation-scope.js +1 -1
- package/dist/storage/projection-runs/in-memory.d.ts +0 -6
- package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/projection-runs/provider.js +2 -2
- package/dist/storage/share-grants/provider.js +4 -3
- package/dist/storage/share-grants/provider.js.map +1 -1
- package/dist/storage/types.d.ts +2 -2
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +15 -12
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/syncs/index.js +42 -39
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/agent-approval-storage-contract.d.ts +17 -0
- package/dist/testing/agent-approval-storage-contract.d.ts.map +1 -0
- package/dist/testing/agent-memory-storage-contract.d.ts +12 -0
- package/dist/testing/agent-memory-storage-contract.d.ts.map +1 -0
- package/dist/testing/agent-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-limit-storage-contract.d.ts +0 -1
- package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -1
- package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
- package/dist/testing/artifact-storage-contract.d.ts.map +1 -1
- package/dist/testing/auth-storage-contract.d.ts +13 -0
- package/dist/testing/auth-storage-contract.d.ts.map +1 -1
- package/dist/testing/broker-contract.d.ts +5 -0
- package/dist/testing/broker-contract.d.ts.map +1 -1
- package/dist/testing/effective-storage-contract.d.ts.map +1 -1
- package/dist/testing/execution-storage-contract.d.ts.map +1 -1
- package/dist/testing/file-upload-session-storage-contract.d.ts.map +1 -1
- package/dist/testing/index.d.ts +9 -5
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +7938 -3743
- package/dist/testing/index.js.map +29 -25
- package/dist/testing/lake-storage-contract.d.ts.map +1 -1
- package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
- package/dist/testing/object-conditional-read-scope-contract.d.ts +11 -0
- package/dist/testing/object-conditional-read-scope-contract.d.ts.map +1 -0
- package/dist/testing/object-query-contract.d.ts +0 -2
- package/dist/testing/object-query-contract.d.ts.map +1 -1
- package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
- package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
- package/dist/testing/queues-contract.d.ts +5 -0
- package/dist/testing/queues-contract.d.ts.map +1 -1
- package/dist/testing/sandboxes-contract.d.ts.map +1 -1
- package/dist/testing/share-grant-storage-contract.d.ts.map +1 -1
- package/dist/testing/share-session-storage-contract.d.ts.map +1 -1
- package/dist/testing/unique-values-contract.d.ts +21 -0
- package/dist/testing/unique-values-contract.d.ts.map +1 -0
- package/dist/testing/webhook-execution.d.ts +0 -8
- package/dist/testing/webhook-execution.d.ts.map +1 -1
- package/dist/testing/webhook-run-storage-contract.d.ts.map +1 -1
- package/dist/users/execution.d.ts +40 -0
- package/dist/users/execution.d.ts.map +1 -0
- package/dist/users/index.d.ts +3 -0
- package/dist/users/index.d.ts.map +1 -0
- package/dist/webhooks/internal.js +34 -31
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +4 -6
- package/dist/workers/index.js.map +4 -4
- package/dist/workers/queue-worker.d.ts +0 -2
- package/dist/workers/queue-worker.d.ts.map +1 -1
- package/dist/workers/worker.d.ts +0 -2
- package/dist/workers/worker.d.ts.map +1 -1
- package/dist/workflows/builders.d.ts.map +1 -1
- package/dist/workflows/index.js +67 -63
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/request.d.ts +12 -1
- package/dist/workflows/request.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +6 -2
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/validation.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/actions/commit-edits.ts +6 -1
- package/src/actions/execution.ts +42 -15
- package/src/actions/read-facade.ts +33 -0
- package/src/actions/request.ts +224 -71
- package/src/actions/run/context.ts +47 -1
- package/src/actions/run/execute.ts +13 -6
- package/src/actions/run/executor.ts +11 -2
- package/src/actions/run/normalize.ts +12 -2
- package/src/actions/run/phases.ts +2 -0
- package/src/actions/run/run-action.ts +12 -3
- package/src/actions/run/signals.ts +3 -9
- package/src/actions/run/types.ts +17 -1
- package/src/actions/run-authorization.ts +72 -0
- package/src/actions/types/context.ts +20 -3
- package/src/actions/validators.ts +19 -8
- package/src/activity/README.md +5 -2
- package/src/activity/timeline.ts +39 -78
- package/src/agents/accounting.ts +59 -0
- package/src/agents/adapters.ts +10 -0
- package/src/agents/agent-mail.ts +29 -0
- package/src/agents/api-gateway.ts +14 -3
- package/src/agents/approval-continuation.ts +48 -0
- package/src/agents/approval-executor.ts +318 -0
- package/src/agents/approval-outcome.ts +59 -0
- package/src/agents/approvals.ts +566 -0
- package/src/agents/authority.ts +24 -1
- package/src/agents/builders.ts +5 -3
- package/src/agents/cancel.ts +103 -0
- package/src/agents/child-question.ts +46 -0
- package/src/agents/children.ts +404 -0
- package/src/agents/context-compaction.ts +12 -0
- package/src/agents/errors.ts +31 -0
- package/src/agents/execution.ts +788 -90
- package/src/agents/fork.ts +158 -0
- package/src/agents/ids.ts +18 -6
- package/src/agents/index.ts +55 -0
- package/src/agents/memory-execution.ts +186 -0
- package/src/agents/memory.ts +178 -0
- package/src/agents/message.ts +57 -0
- package/src/agents/model-loop.ts +93 -6
- package/src/agents/model-routing.ts +193 -0
- package/src/agents/participants.ts +213 -0
- package/src/agents/reference.ts +2 -0
- package/src/agents/request.ts +398 -69
- package/src/agents/run-scope.ts +134 -0
- package/src/agents/streams/index.ts +5 -0
- package/src/agents/streams/internal.ts +1 -0
- package/src/agents/streams/protocol.ts +385 -7
- package/src/agents/subagent-runs.ts +41 -0
- package/src/agents/thread-access.ts +137 -0
- package/src/agents/tool-definition.ts +5 -3
- package/src/agents/types.ts +35 -10
- package/src/agents/validation.ts +2 -0
- package/src/artifacts/access.ts +125 -0
- package/src/artifacts/canvas.ts +369 -0
- package/src/artifacts/csv.ts +10 -0
- package/src/artifacts/errors.ts +12 -1
- package/src/artifacts/execution.ts +436 -36
- package/src/artifacts/formula/check.ts +171 -0
- package/src/artifacts/formula/evaluate.ts +288 -0
- package/src/artifacts/formula/index.ts +199 -0
- package/src/artifacts/formula/parser.ts +357 -0
- package/src/artifacts/frames/assets.ts +35 -19
- package/src/artifacts/frames/entries.ts +35 -0
- package/src/artifacts/frames/grants.ts +10 -9
- package/src/artifacts/frames/index.ts +8 -2
- package/src/artifacts/frames/kit.ts +191 -14
- package/src/artifacts/frames/probe.ts +66 -18
- package/src/artifacts/frames/protocol.ts +164 -10
- package/src/artifacts/frames/runtime.ts +273 -28
- package/src/artifacts/index.ts +66 -2
- package/src/artifacts/kinds.ts +1 -1
- package/src/artifacts/limits.ts +31 -0
- package/src/artifacts/live-sheet.ts +345 -0
- package/src/artifacts/outline.ts +34 -1
- package/src/artifacts/publish/index.ts +2 -0
- package/src/artifacts/publish/publish.ts +120 -34
- package/src/artifacts/publish/queries.ts +336 -0
- package/src/artifacts/publish/references.ts +18 -13
- package/src/artifacts/publish/validate/canvas.ts +118 -0
- package/src/artifacts/publish/validate/html.ts +78 -0
- package/src/artifacts/publish/validate/page.ts +65 -0
- package/src/artifacts/publish/validate/sheet.ts +115 -69
- package/src/artifacts/publish/validate/slides.ts +11 -63
- package/src/artifacts/queries.ts +512 -0
- package/src/artifacts/resolve.ts +20 -5
- package/src/artifacts/run-query.ts +212 -0
- package/src/artifacts/serialize-query.ts +25 -0
- package/src/artifacts/sheet-rules.ts +180 -0
- package/src/artifacts/tones.ts +20 -0
- package/src/artifacts/workbook.ts +374 -15
- package/src/auth/index.ts +4 -0
- package/src/auth/member-events.ts +114 -0
- package/src/auth/profile.ts +118 -0
- package/src/auth/runtime.ts +190 -9
- package/src/auth/strategy.ts +3 -0
- package/src/auth/types.ts +32 -0
- package/src/authorization/decision.ts +47 -0
- package/src/authorization/event-visibility.ts +17 -16
- package/src/authorization/grant-kinds.ts +32 -0
- package/src/authorization/index.ts +6 -1
- package/src/authorization/resolve.ts +58 -1
- package/src/authorization/run-visibility.ts +8 -1
- package/src/authorization/types.ts +14 -0
- package/src/errors/catalog.ts +26 -1
- package/src/errors/internal.ts +17 -8
- package/src/events/definitions.ts +26 -0
- package/src/events/execution.ts +43 -6
- package/src/events/index.ts +10 -1
- package/src/events/scope.ts +2 -0
- package/src/events/selectors/builder.ts +50 -0
- package/src/events/selectors/index.ts +4 -0
- package/src/events/selectors/types.ts +32 -1
- package/src/events/service.ts +55 -2
- package/src/events/types/index.ts +10 -0
- package/src/events/types/users.ts +73 -0
- package/src/events/view-conditions.ts +241 -0
- package/src/execution/agent.ts +25 -0
- package/src/execution/authorization.ts +70 -0
- package/src/execution/authorized-object-reader.ts +238 -32
- package/src/execution/lineage.ts +14 -0
- package/src/execution/object-reader-ontology.ts +11 -14
- package/src/execution/object-reader-security.ts +134 -10
- package/src/execution/object-reader-users.ts +122 -0
- package/src/execution/preparation.ts +78 -0
- package/src/execution/request.ts +2 -0
- package/src/execution/unique-lookup.ts +55 -0
- package/src/execution/visible-objects.ts +26 -0
- package/src/http/api-routes.ts +206 -7
- package/src/index.ts +99 -2
- package/src/materialization/errors.ts +37 -0
- package/src/materialization/event-envelopes.ts +11 -3
- package/src/materialization/index.ts +1 -0
- package/src/materialization/model.ts +24 -4
- package/src/materializer/README.md +7 -1
- package/src/materializer/edits/commit.ts +56 -12
- package/src/materializer/edits/load-state.ts +15 -7
- package/src/materializer/edits/operations.ts +12 -0
- package/src/materializer/edits/plan.ts +2 -0
- package/src/materializer/edits/unique-values.ts +255 -0
- package/src/materializer/edits/working-state.ts +8 -1
- package/src/materializer/execution/work-records.ts +47 -0
- package/src/materializer/projections/finish-run.ts +0 -1
- package/src/materializer/projections/replace.ts +1 -1
- package/src/materializer/projections/replacement-plan.ts +4 -1
- package/src/materializer/projections/source-materialization.ts +2 -1
- package/src/materializer/shared/normalize.ts +37 -6
- package/src/materializer/shared/projection-run.ts +1 -2
- package/src/materializer/telemetry/append.ts +14 -17
- package/src/materializer/telemetry/plan.ts +2 -0
- package/src/models/audio/catalog.ts +89 -10
- package/src/models/audio/errors.ts +18 -1
- package/src/models/audio/runtime.ts +10 -13
- package/src/models/audio/speech.ts +261 -0
- package/src/models/audio/types.ts +97 -0
- package/src/models/calls.ts +100 -0
- package/src/models/catalog-index.ts +21 -2
- package/src/models/catalog.ts +211 -35
- package/src/models/decision/runtime.ts +21 -22
- package/src/models/decision/validation.ts +4 -1
- package/src/models/definitions.ts +57 -8
- package/src/models/events.ts +72 -1
- package/src/models/execution/README.md +34 -5
- package/src/models/execution/binding.ts +3 -1
- package/src/models/execution/embedding.ts +1 -0
- package/src/models/execution/index.ts +5 -0
- package/src/models/execution/model-call-accounting.ts +3 -1
- package/src/models/execution/model-call-recorder.ts +29 -1
- package/src/models/execution/usage.ts +8 -0
- package/src/models/execution.ts +20 -22
- package/src/models/generation-types.ts +8 -1
- package/src/models/image/catalog.ts +89 -0
- package/src/models/image/errors.ts +19 -0
- package/src/models/image/runtime.ts +335 -0
- package/src/models/image/types.ts +111 -0
- package/src/models/index.ts +38 -4
- package/src/models/{audio/file.ts → input-file.ts} +22 -13
- package/src/models/language-model.ts +13 -0
- package/src/models/pricing.ts +263 -42
- package/src/models/rate-card.ts +161 -12
- package/src/objects/authorized-ontology-view.ts +1 -0
- package/src/objects/conditional-writes.ts +109 -0
- package/src/objects/execution.ts +4 -0
- package/src/objects/index.ts +8 -0
- package/src/objects/link/authorization.ts +12 -3
- package/src/objects/link/endpoints.ts +42 -11
- package/src/objects/link/remove.ts +25 -10
- package/src/objects/link/upsert-batch.ts +2 -0
- package/src/objects/link/upsert.ts +18 -12
- package/src/objects/materializer-adapter.ts +55 -18
- package/src/objects/object/delete.ts +24 -7
- package/src/objects/object/upsert-batch.ts +44 -14
- package/src/objects/object/upsert.ts +23 -5
- package/src/objects/query/current-user.ts +76 -0
- package/src/objects/query/executor.ts +39 -103
- package/src/objects/query/explain.ts +20 -7
- package/src/objects/query/index.ts +2 -0
- package/src/objects/query/ir.ts +20 -0
- package/src/objects/query/links.ts +8 -0
- package/src/objects/query/matches-predicate.ts +108 -0
- package/src/objects/query/normalize.ts +50 -19
- package/src/objects/query/scalar-values.ts +19 -3
- package/src/objects/query/user-expansions.ts +65 -0
- package/src/objects/query/validate.ts +248 -10
- package/src/objects/runtime-batch.ts +8 -2
- package/src/objects/sdk/object-set.ts +12 -1
- package/src/objects/sdk/query-builder.ts +39 -8
- package/src/objects/sdk/query-executor.ts +6 -0
- package/src/objects/serialize.ts +79 -0
- package/src/objects/unique-violation.ts +59 -0
- package/src/objects/vectors/handle.ts +3 -3
- package/src/ontology/builders.ts +3 -0
- package/src/ontology/docs-markdown.ts +1 -0
- package/src/ontology/index.ts +2 -2
- package/src/ontology/json-schema.ts +4 -0
- package/src/ontology/primitives.ts +21 -8
- package/src/ontology/registry.ts +16 -0
- package/src/ontology/types.ts +9 -0
- package/src/ontology/unique-values.ts +84 -0
- package/src/ontology/user-ref.ts +39 -0
- package/src/ontology/validation/properties.ts +43 -0
- package/src/ontology/validation/schema.ts +9 -1
- package/src/projections/registry.ts +16 -10
- package/src/projections/revision.ts +112 -45
- package/src/projections/run-dispatch.ts +38 -25
- package/src/projections/types.ts +2 -0
- package/src/query.ts +5 -0
- package/src/rules/execution.ts +43 -11
- package/src/runtime/ai-cost.ts +30 -0
- package/src/runtime/ai-usage.ts +32 -1
- package/src/runtime/host.ts +18 -1
- package/src/runtime/index.ts +2 -0
- package/src/runtime/resolve-definitions.ts +3 -0
- package/src/runtime/sixb.ts +35 -8
- package/src/runtime/types.ts +99 -9
- package/src/schedules/builders.ts +3 -1
- package/src/schedules/runtime.ts +6 -0
- package/src/schedules/validation.ts +23 -1
- package/src/security/README.md +62 -0
- package/src/security/grants.ts +155 -10
- package/src/security/index.ts +3 -1
- package/src/security/project.ts +6 -1
- package/src/security/registry.ts +32 -7
- package/src/security/types.ts +54 -9
- package/src/security/validation.ts +27 -11
- package/src/security/view-conditions.ts +215 -0
- package/src/shares/execution.ts +43 -10
- package/src/storage/action-runs/types.ts +2 -0
- package/src/storage/agents/errors.ts +3 -0
- package/src/storage/agents/in-memory.ts +779 -32
- package/src/storage/agents/index.ts +42 -0
- package/src/storage/agents/provider.ts +733 -8
- package/src/storage/agents/types.ts +620 -12
- package/src/storage/ai-cost/analytics.ts +60 -7
- package/src/storage/ai-cost/codec.ts +6 -1
- package/src/storage/ai-cost/groups.ts +44 -1
- package/src/storage/ai-cost/index.ts +1 -0
- package/src/storage/ai-cost/provider.ts +2 -0
- package/src/storage/ai-cost/types.ts +18 -1
- package/src/storage/ai-cost/validation.ts +39 -12
- package/src/storage/ai-limits/provider.ts +4 -7
- package/src/storage/ai-usage/in-memory.ts +28 -1
- package/src/storage/ai-usage/index.ts +9 -1
- package/src/storage/ai-usage/record.ts +44 -7
- package/src/storage/ai-usage/types.ts +38 -0
- package/src/storage/ai-usage/usage.ts +15 -1
- package/src/storage/artifacts/errors.ts +13 -1
- package/src/storage/artifacts/in-memory.ts +156 -8
- package/src/storage/artifacts/index.ts +6 -1
- package/src/storage/artifacts/record.ts +61 -1
- package/src/storage/artifacts/types.ts +92 -8
- package/src/storage/auth/in-memory/auth-storage.ts +27 -2
- package/src/storage/auth/in-memory/users.ts +40 -6
- package/src/storage/auth/index.ts +1 -0
- package/src/storage/auth/types.ts +43 -7
- package/src/storage/executions/in-memory.ts +32 -0
- package/src/storage/executions/index.ts +2 -0
- package/src/storage/executions/types.ts +17 -0
- package/src/storage/index.ts +69 -1
- package/src/storage/internal.ts +9 -1
- package/src/storage/migrations/migrate-storage.ts +8 -1
- package/src/storage/migrations/prepare-unique-properties.ts +161 -0
- package/src/storage/objects/guard.ts +7 -3
- package/src/storage/objects/in-memory/conditional-reader.ts +72 -0
- package/src/storage/objects/in-memory/query.ts +4 -105
- package/src/storage/objects/in-memory/read-scope.ts +15 -14
- package/src/storage/objects/in-memory/read-source.ts +11 -1
- package/src/storage/objects/in-memory/scoped-reader.ts +243 -0
- package/src/storage/objects/in-memory/selected-reader.ts +6 -231
- package/src/storage/objects/in-memory/storage.ts +183 -1
- package/src/storage/objects/index.ts +9 -1
- package/src/storage/objects/read-scope.ts +191 -0
- package/src/storage/objects/types.ts +68 -1
- package/src/storage/ontology/in-memory/index.ts +3 -0
- package/src/storage/ontology/in-memory/materializations.ts +35 -0
- package/src/storage/ontology/in-memory/replacement-plans.ts +4 -0
- package/src/storage/ontology/in-memory/unique-values.ts +62 -0
- package/src/storage/ontology/index.ts +10 -0
- package/src/storage/ontology/materializations.ts +35 -1
- package/src/storage/ontology/provider-work.ts +76 -0
- package/src/storage/ontology/provider.ts +3 -0
- package/src/storage/ontology/unique-values.ts +56 -0
- package/src/storage/operation-scope.ts +9 -1
- package/src/storage/projection-runs/in-memory.ts +3 -35
- package/src/storage/types.ts +2 -0
- package/src/testing/agent-approval-storage-contract.ts +1117 -0
- package/src/testing/agent-memory-storage-contract.ts +400 -0
- package/src/testing/agent-storage-contract.ts +1188 -33
- package/src/testing/ai-cost-storage-contract.ts +31 -1
- package/src/testing/ai-limit-storage-contract.ts +9 -7
- package/src/testing/ai-model-call-groups-contract.ts +76 -0
- package/src/testing/ai-usage-storage-contract.ts +120 -13
- package/src/testing/artifact-storage-contract.ts +338 -4
- package/src/testing/auth-storage-contract.ts +550 -73
- package/src/testing/broker-contract.ts +28 -23
- package/src/testing/effective-storage-contract.ts +3 -8
- package/src/testing/execution-storage-contract.ts +53 -0
- package/src/testing/file-upload-session-storage-contract.ts +12 -24
- package/src/testing/index.ts +17 -4
- package/src/testing/lake-storage-contract.ts +22 -28
- package/src/testing/materializer-storage-contract.ts +36 -9
- package/src/testing/object-conditional-read-scope-contract.ts +634 -0
- package/src/testing/object-query-contract.ts +386 -186
- package/src/testing/ontology-storage-contract.ts +230 -21
- package/src/testing/projection-run-storage-contract.ts +8 -18
- package/src/testing/queues-contract.ts +39 -70
- package/src/testing/sandboxes-contract.ts +3 -14
- package/src/testing/share-grant-storage-contract.ts +13 -16
- package/src/testing/share-session-storage-contract.ts +4 -14
- package/src/testing/unique-values-contract.ts +907 -0
- package/src/testing/webhook-execution.ts +1 -1
- package/src/testing/webhook-run-storage-contract.ts +6 -9
- package/src/users/execution.ts +131 -0
- package/src/users/index.ts +2 -0
- package/src/workers/queue-worker.ts +1 -3
- package/src/workers/worker.ts +1 -3
- package/src/workflows/builders.ts +6 -0
- package/src/workflows/request.ts +46 -8
- package/src/workflows/types.ts +6 -2
- package/src/workflows/validation.ts +23 -9
- package/dist/chunk-29yx306f.js.map +0 -22
- package/dist/chunk-3jms7je7.js +0 -14
- package/dist/chunk-3jms7je7.js.map +0 -10
- package/dist/chunk-3qct2mdc.js +0 -297
- package/dist/chunk-3qct2mdc.js.map +0 -12
- package/dist/chunk-48qjhh6v.js.map +0 -13
- package/dist/chunk-4as3wt1c.js.map +0 -12
- package/dist/chunk-5948n82c.js.map +0 -10
- package/dist/chunk-5hx48dnn.js.map +0 -14
- package/dist/chunk-6rqgmkde.js.map +0 -29
- package/dist/chunk-6x0pqh32.js.map +0 -10
- package/dist/chunk-7n30ybym.js +0 -3
- package/dist/chunk-7n440zgt.js +0 -261
- package/dist/chunk-7n440zgt.js.map +0 -12
- package/dist/chunk-7q8t23v4.js +0 -467
- package/dist/chunk-7q8t23v4.js.map +0 -14
- package/dist/chunk-8frc8a4j.js.map +0 -20
- package/dist/chunk-918wwnaa.js.map +0 -68
- package/dist/chunk-91mg3nj9.js.map +0 -12
- package/dist/chunk-96yw3pwd.js.map +0 -10
- package/dist/chunk-9j4jw7as.js.map +0 -14
- package/dist/chunk-9k93ah50.js.map +0 -11
- package/dist/chunk-9kgkfg6v.js +0 -502
- package/dist/chunk-9kgkfg6v.js.map +0 -14
- package/dist/chunk-akzryx9h.js.map +0 -100
- package/dist/chunk-arns890k.js.map +0 -10
- package/dist/chunk-bk9svbcq.js.map +0 -49
- package/dist/chunk-c06hmxyy.js +0 -31
- package/dist/chunk-c06hmxyy.js.map +0 -10
- package/dist/chunk-c1rxbz5y.js.map +0 -12
- package/dist/chunk-cn0fwwhy.js.map +0 -19
- package/dist/chunk-dhcv7yxc.js.map +0 -11
- package/dist/chunk-dhdha526.js.map +0 -10
- package/dist/chunk-dvd2fp9q.js.map +0 -13
- package/dist/chunk-e6k4thh5.js.map +0 -19
- package/dist/chunk-ere85b8y.js.map +0 -15
- package/dist/chunk-g257jwnc.js.map +0 -12
- package/dist/chunk-hwksyjks.js.map +0 -11
- package/dist/chunk-k43ct2ke.js.map +0 -12
- package/dist/chunk-nn5xnx3s.js.map +0 -40
- package/dist/chunk-pbcbn83d.js.map +0 -14
- package/dist/chunk-pqajwytd.js +0 -68
- package/dist/chunk-pqajwytd.js.map +0 -11
- package/dist/chunk-qczk96d9.js.map +0 -11
- package/dist/chunk-rdghfsss.js +0 -39
- package/dist/chunk-rdghfsss.js.map +0 -10
- package/dist/chunk-rj69qcrd.js.map +0 -11
- package/dist/chunk-v4jbb3rs.js.map +0 -10
- package/dist/chunk-yxd3nnqt.js.map +0 -11
- package/dist/events/toStoredEvent.d.ts +0 -9
- package/dist/events/toStoredEvent.d.ts.map +0 -1
- package/dist/models/audio/file.d.ts +0 -9
- package/dist/models/audio/file.d.ts.map +0 -1
- package/src/events/toStoredEvent.ts +0 -33
- /package/dist/{chunk-mfs23znk.js.map → chunk-07kkp2e1.js.map} +0 -0
- /package/dist/{chunk-z58tm0hm.js.map → chunk-0phpbbvm.js.map} +0 -0
- /package/dist/{chunk-e17zdm62.js.map → chunk-1t6k1avb.js.map} +0 -0
- /package/dist/{chunk-kge7k6ey.js.map → chunk-2fn60nvs.js.map} +0 -0
- /package/dist/{chunk-y0c4e6ex.js.map → chunk-3gbefjg5.js.map} +0 -0
- /package/dist/{chunk-cy4mbddw.js.map → chunk-48jezz3j.js.map} +0 -0
- /package/dist/{chunk-twe4dx8p.js → chunk-5tfev0fv.js} +0 -0
- /package/dist/{chunk-twe4dx8p.js.map → chunk-5tfev0fv.js.map} +0 -0
- /package/dist/{chunk-447a5c0p.js.map → chunk-6n69k945.js.map} +0 -0
- /package/dist/{chunk-0bphap9y.js.map → chunk-6p0pastb.js.map} +0 -0
- /package/dist/{chunk-431pyp2c.js.map → chunk-6y0mkhex.js.map} +0 -0
- /package/dist/{chunk-s7jg7pmn.js.map → chunk-bab05bhg.js.map} +0 -0
- /package/dist/{chunk-q5e5tv4b.js.map → chunk-c844dkwd.js.map} +0 -0
- /package/dist/{chunk-cfj9dfbb.js.map → chunk-d2m879s4.js.map} +0 -0
- /package/dist/{chunk-q7gn29y3.js.map → chunk-dp0cdtj2.js.map} +0 -0
- /package/dist/{chunk-br3k6qbf.js.map → chunk-fm62y49k.js.map} +0 -0
- /package/dist/{chunk-vvxtn22d.js.map → chunk-g663fahq.js.map} +0 -0
- /package/dist/{chunk-rmakanzx.js.map → chunk-h33shhq6.js.map} +0 -0
- /package/dist/{chunk-d09e3rax.js.map → chunk-hwarjrgf.js.map} +0 -0
- /package/dist/{chunk-vf57cr4t.js.map → chunk-hyesv9dv.js.map} +0 -0
- /package/dist/{chunk-5vems3nx.js.map → chunk-m2nevja0.js.map} +0 -0
- /package/dist/{chunk-x9v4cx1d.js.map → chunk-m36fw8ft.js.map} +0 -0
- /package/dist/{chunk-a40ad1ft.js.map → chunk-mbsbxarb.js.map} +0 -0
- /package/dist/{chunk-6aawea28.js.map → chunk-n8q5j6y5.js.map} +0 -0
- /package/dist/{chunk-d7dnxdep.js.map → chunk-n9zpx9c6.js.map} +0 -0
- /package/dist/{chunk-xvsc5m8n.js.map → chunk-npcr0228.js.map} +0 -0
- /package/dist/{chunk-y5tah2kf.js.map → chunk-q4pmvkg0.js.map} +0 -0
- /package/dist/{chunk-d5rjr8c0.js.map → chunk-vabga7fk.js.map} +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/runtime/ontology-mutations.ts", "../src/activity/device.ts", "../src/activity/connection.ts", "../src/activity/shares.ts", "../src/actions/run-authorization.ts", "../src/execution/lineage.ts", "../src/runtime/ai-cost.ts", "../src/activity/timeline.ts", "../src/activity/execution.ts", "../src/models/execution/session.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type {\n EditCommitResult,\n OntologyEditCommit,\n ProjectionCommitResult,\n ProjectionRunFinishInput,\n ProjectionSourceRef,\n ProjectionSourceReplacement,\n TelemetryAppend,\n TelemetryCommitResult,\n} from \"../materialization/model\"\nimport type { BoundOntologyMaterializer } from \"../materializer\"\nimport type { OntologySourceRecord } from \"../storage/ontology\"\n\nexport interface OntologyMutationRuntime {\n getProjectionSource?(source: ProjectionSourceRef): Promise<OntologySourceRecord | null>\n commitEdits(input: OntologyEditCommit): Promise<EditCommitResult>\n replaceProjection(input: ProjectionSourceReplacement): Promise<ProjectionCommitResult>\n finishProjection(input: ProjectionRunFinishInput): Promise<void>\n appendTelemetry(input: TelemetryAppend): Promise<TelemetryCommitResult>\n}\n\nconst ontologyMutationRuntimeKey: unique symbol = Symbol(\"sixb.ontologyMutationRuntime\")\n\ninterface OntologyMutationRuntimeOwner {\n readonly [ontologyMutationRuntimeKey]?: OntologyMutationRuntime\n}\n\nexport function registerOntologyMutationRuntime(\n owner: object,\n runtime: OntologyMutationRuntime\n): void {\n const registered = (owner as OntologyMutationRuntimeOwner)[ontologyMutationRuntimeKey]\n if (registered && registered !== runtime) {\n throw new Error(\"[Sixb] Ontology mutation runtime is already registered for this owner.\")\n }\n Object.defineProperty(owner, ontologyMutationRuntimeKey, {\n configurable: false,\n enumerable: true,\n value: runtime,\n writable: false,\n })\n}\n\nexport function getOntologyMutationRuntime(owner: object): OntologyMutationRuntime {\n const runtime = (owner as OntologyMutationRuntimeOwner)[ontologyMutationRuntimeKey]\n if (runtime) return runtime\n throw new Error(\"[Sixb] Ontology mutation runtime is not registered for this runtime context.\")\n}\n\n/** Copies the opaque capability when an internal runtime context is reconstructed. */\nexport function shareOntologyMutationRuntime(source: object, target: object): void {\n registerOntologyMutationRuntime(target, getOntologyMutationRuntime(source))\n}\n\n/** Adapt an already-bound Materializer to the internal ontology mutation runtime. */\nexport function createOntologyMutationRuntime(input: {\n readonly materializer: BoundOntologyMaterializer\n readonly notifyCommittedFacts: () => void\n /** Called once a projection may have changed the dataset version its source applied. */\n readonly onProjectionApplied?: () => void\n}): OntologyMutationRuntime {\n const applied = <TResult>(work: Promise<TResult>): Promise<TResult> =>\n work.finally(() => notifyWithoutAffecting(input.onProjectionApplied))\n\n const runtime: OntologyMutationRuntime = {\n getProjectionSource: (source) => input.materializer.projections.getActive(source),\n commitEdits: (command) =>\n commitAndNotify(() => input.materializer.edits.commit(command), input.notifyCommittedFacts),\n replaceProjection: (command) =>\n applied(\n commitAndNotify(\n () => input.materializer.projections.replace(command),\n input.notifyCommittedFacts\n )\n ),\n finishProjection: (command) => applied(input.materializer.projections.finishRun(command)),\n appendTelemetry: (command) =>\n commitAndNotify(\n () => input.materializer.telemetry.append(command),\n input.notifyCommittedFacts\n ),\n }\n return Object.freeze(runtime)\n}\n\nasync function commitAndNotify<TResult extends { readonly eventCount: number }>(\n commit: () => Promise<TResult>,\n notify: () => void\n): Promise<TResult> {\n const result = await commit()\n if (result.eventCount > 0) notifyWithoutAffectingCommit(notify)\n return result\n}\n\nfunction notifyWithoutAffectingCommit(notify: () => void): void {\n try {\n notify()\n } catch (error) {\n // The ontology commit is already durable. A wake-up failure must never turn it into an apparent\n // mutation failure; API-hosted ontology maintenance remains the correctness fallback.\n console.error(\"[Sixb] Failed to wake the ontology outbox dispatcher:\", error)\n }\n}\n\nfunction notifyWithoutAffecting(notify: (() => void) | undefined): void {\n try {\n notify?.()\n } catch (error) {\n console.error(\"[Sixb] Failed to report an applied projection:\", error)\n }\n}\n",
|
|
6
|
+
"/** What a user agent says about the device that signed in. Display only, never authorization. */\nexport interface ActivityDevice {\n readonly browser?: string\n readonly os?: string\n}\n\n// First match wins: Edge and Opera also name Chrome, Chrome names Safari, iOS names Mac OS X, and\n// Android names Linux.\nconst BROWSERS: readonly (readonly [RegExp, string])[] = [\n [/\\bEdg(?:e|A|iOS)?\\//, \"Edge\"],\n [/\\b(?:OPR|Opera)\\//, \"Opera\"],\n [/\\bSamsungBrowser\\//, \"Samsung Internet\"],\n [/\\b(?:Firefox|FxiOS)\\//, \"Firefox\"],\n [/\\b(?:Chrome|Chromium|CriOS|HeadlessChrome)\\//, \"Chrome\"],\n [/\\bVersion\\/[\\d.]+.*\\bSafari\\//, \"Safari\"],\n]\n\nconst SYSTEMS: readonly (readonly [RegExp, string])[] = [\n [/\\bWindows\\b/, \"Windows\"],\n [/\\biPad\\b/, \"iPadOS\"],\n [/\\b(?:iPhone|iPod)\\b/, \"iOS\"],\n [/\\bAndroid\\b/, \"Android\"],\n [/\\bCrOS\\b/, \"ChromeOS\"],\n [/\\bMac OS X\\b|\\bMacintosh\\b/, \"macOS\"],\n [/\\bLinux\\b/, \"Linux\"],\n]\n\n/** The browser and operating system a user agent names, when it names a common one. */\nexport function describeUserAgent(userAgent: string | undefined): ActivityDevice {\n if (!userAgent) {\n return {}\n }\n\n const browser = BROWSERS.find(([pattern]) => pattern.test(userAgent))?.[1]\n const os = SYSTEMS.find(([pattern]) => pattern.test(userAgent))?.[1]\n\n return {\n ...(browser === undefined ? {} : { browser }),\n ...(os === undefined ? {} : { os }),\n }\n}\n",
|
|
7
|
+
"import type { SixbRuntimeContext } from \"../runtime/types\"\nimport type { ActivityVisit, StoredActivityVisitPage } from \"../storage/activity/types\"\nimport type { SessionRecord } from \"../storage/auth\"\nimport type { ShareGrantRecord } from \"../storage/share-grants\"\nimport { type ActivityDevice, describeUserAgent } from \"./device\"\nimport type { ActivityService } from \"./service\"\n\nexport type ActivityConnectionStatus = \"active\" | \"expired\" | \"revoked\"\n\n/** A signed-in session. No address or token is kept here. */\nexport interface ActivitySessionConnection {\n readonly type: \"session\"\n readonly device: ActivityDevice\n /** A native client's own label, such as a CLI's. */\n readonly clientName?: string\n readonly status: ActivityConnectionStatus\n readonly createdAt: Date\n readonly lastSeenAt?: Date\n readonly revokedAt?: Date\n}\n\n/** The shared link a visitor opened, and the session it gave them. */\nexport interface ActivityShareConnection {\n readonly type: \"share\"\n readonly grantId: string\n /** Absent once the link's grant is gone. */\n readonly definitionId?: string\n readonly status: ActivityConnectionStatus\n readonly createdAt: Date\n readonly revokedAt?: Date\n}\n\nexport type ActivityConnection = ActivitySessionConnection | ActivityShareConnection\n\n/** A user's sign-in, with the visits it opened. */\nexport interface ActivityUserConnection extends ActivitySessionConnection {\n /** Every visit the session opened. */\n readonly visits: number\n /** Its latest visits, newest first. */\n readonly latestVisits: readonly ActivityVisit[]\n}\n\nexport interface ActivityConnectionsPage {\n readonly connections: readonly ActivityUserConnection[]\n /** Pass it back as `cursor` for the next, older connections; absent on the last page. */\n readonly nextCursor?: string\n}\n\nexport interface ActivityConnectionsQuery {\n readonly userId: string\n /** 1 to 100. Default: 20. */\n readonly limit?: number\n /** The previous page's `nextCursor`. */\n readonly cursor?: string\n}\n\n/** Where a list of sessions continues: a creation time, and how many created then it returned. */\nexport interface ActivityConnectionsCursor {\n readonly createdAt: Date\n readonly skip: number\n}\n\n/** A user's sign-ins, newest first, revoked and expired ones too: one read per store. */\nexport async function readActivityConnections(\n runtime: SixbRuntimeContext,\n service: ActivityService,\n query: ActivityConnectionsQuery,\n now: Date\n): Promise<ActivityConnectionsPage> {\n const { userId, limit, before } = service.connectionsQuery(query)\n const sessions = runtime.storage.auth?.sessions\n if (!sessions) {\n return { connections: [] }\n }\n\n const page = await sessions.listByUserId({\n projectId: runtime.projectId,\n userId,\n limit,\n ...(before === undefined ? {} : { before }),\n })\n const visits = await service.sessionVisits({\n userId,\n sessionIds: page.sessions.map((session) => session.id),\n })\n const bySession = new Map(visits.map((entry) => [entry.sessionId, entry]))\n\n const connections = page.sessions.map((session) => ({\n ...sessionConnection(session, now),\n visits: bySession.get(session.id)?.visits ?? 0,\n latestVisits: bySession.get(session.id)?.latest ?? [],\n }))\n const last = page.sessions.at(-1)\n\n return {\n connections,\n ...(page.hasMore && last\n ? { nextCursor: nextConnectionsCursor(page.sessions, last, before) }\n : {}),\n }\n}\n\n/**\n * The cursor after a page: its last creation time, and how many sessions created then this page\n * and the ones before it returned. It names no session, so the session id never leaves core.\n */\nfunction nextConnectionsCursor(\n sessions: readonly SessionRecord[],\n last: SessionRecord,\n before: ActivityConnectionsCursor | undefined\n): string {\n const { createdAt } = last\n const tied = sessions.filter((session) => session.createdAt.getTime() === createdAt.getTime())\n const earlier = before && before.createdAt.getTime() === createdAt.getTime() ? before.skip : 0\n\n return encodeActivityConnectionsCursor({ createdAt, skip: earlier + tied.length })\n}\n\nexport function encodeActivityConnectionsCursor(cursor: ActivityConnectionsCursor): string {\n return Buffer.from(JSON.stringify([cursor.createdAt.toISOString(), cursor.skip])).toString(\n \"base64url\"\n )\n}\n\nexport function decodeActivityConnectionsCursor(value: string): ActivityConnectionsCursor {\n try {\n const parsed: unknown = JSON.parse(Buffer.from(value, \"base64url\").toString(\"utf8\"))\n if (Array.isArray(parsed) && parsed.length === 2) {\n const [at, skip] = parsed\n const createdAt = new Date(typeof at === \"string\" ? at : Number.NaN)\n if (Number.isFinite(createdAt.getTime()) && Number.isSafeInteger(skip) && skip >= 0) {\n return { createdAt, skip }\n }\n }\n } catch {\n // Reported below, like any other malformed cursor.\n }\n throw new Error(\"[Sixb] Invalid activity connections cursor.\")\n}\n\n/**\n * The session a visit came through: a sign-in, or a shared link, whose grant the caller read with\n * the visit's share name.\n */\nexport async function readActivityConnection(\n runtime: SixbRuntimeContext,\n page: StoredActivityVisitPage,\n grant: ShareGrantRecord | undefined,\n now: Date\n): Promise<ActivityConnection | undefined> {\n const { storage, projectId } = runtime\n const { actor } = page.visit\n\n if (actor.type === \"user\") {\n const session = await storage.auth?.sessions.getById({ projectId, id: page.sessionId })\n return session ? sessionConnection(session, now) : undefined\n }\n\n const session = await storage.shareSessions?.getById({ projectId, id: page.sessionId })\n if (!session) {\n return undefined\n }\n\n // A session lasts no longer than its link: revoking or expiring the grant ends it too.\n const revokedAt = [session.revokedAt, grant?.revokedAt]\n .flatMap((at) => (at === undefined ? [] : [at.getTime()]))\n .sort((left, right) => left - right)[0]\n const statuses = [\n connectionStatus(session, now),\n ...(grant ? [connectionStatus(grant, now)] : []),\n ]\n const status = statuses.includes(\"revoked\")\n ? \"revoked\"\n : statuses.includes(\"expired\")\n ? \"expired\"\n : \"active\"\n\n return {\n type: \"share\",\n grantId: actor.grantId,\n ...(grant ? { definitionId: grant.definitionId } : {}),\n status,\n createdAt: new Date(session.createdAt),\n ...(revokedAt === undefined ? {} : { revokedAt: new Date(revokedAt) }),\n }\n}\n\nfunction connectionStatus(\n session: {\n readonly expiresAt: Date\n readonly absoluteExpiresAt?: Date\n readonly revokedAt?: Date\n },\n now: Date\n): ActivityConnectionStatus {\n if (session.revokedAt) {\n return \"revoked\"\n }\n\n const expired =\n session.expiresAt <= now ||\n (session.absoluteExpiresAt !== undefined && session.absoluteExpiresAt <= now)\n return expired ? \"expired\" : \"active\"\n}\n\n/** A signed-in session as a connection, from its record and the time it is read at. */\nfunction sessionConnection(session: SessionRecord, now: Date): ActivitySessionConnection {\n return {\n type: \"session\",\n device: describeUserAgent(session.userAgent),\n ...(session.bearer === undefined ? {} : { clientName: session.bearer.clientName }),\n status: connectionStatus(session, now),\n createdAt: new Date(session.createdAt),\n ...(session.lastSeenAt === undefined ? {} : { lastSeenAt: new Date(session.lastSeenAt) }),\n ...(session.revokedAt === undefined ? {} : { revokedAt: new Date(session.revokedAt) }),\n }\n}\n",
|
|
8
|
+
"import type { SixbRuntimeContext } from \"../runtime/types\"\nimport type { ActivityActor, ActivityVisit } from \"../storage/activity/types\"\nimport type { ShareGrantRecord } from \"../storage/share-grants\"\n\n/** Who a visit belongs to, as `sixb.activity` returns it: a shared link also names its share. */\nexport type ActivityVisitActor =\n | Extract<ActivityActor, { readonly type: \"user\" }>\n | (Extract<ActivityActor, { readonly type: \"share\" }> & {\n /** The link's share definition; absent once its grant is gone. */\n readonly definitionId?: string\n })\n\n/** A visit as `sixb.activity` returns it. */\nexport interface ActivityVisitView extends Omit<ActivityVisit, \"actor\"> {\n readonly actor: ActivityVisitActor\n}\n\n/** Visits named by their links' shares, from one grant read for all of them. */\nexport async function nameSharedVisits(\n runtime: SixbRuntimeContext,\n visits: readonly ActivityVisit[]\n): Promise<readonly ActivityVisitView[]> {\n const grants = await readGrants(runtime, visits)\n return visits.map((visit) => withShare(visit, grants))\n}\n\n/** One visit named by its link's share, with that link's grant when it still exists. */\nexport async function nameSharedVisit(\n runtime: SixbRuntimeContext,\n visit: ActivityVisit\n): Promise<{ readonly visit: ActivityVisitView; readonly grant?: ShareGrantRecord }> {\n const grants = await readGrants(runtime, [visit])\n const grant = visit.actor.type === \"share\" ? grants.get(visit.actor.grantId) : undefined\n\n return { visit: withShare(visit, grants), ...(grant === undefined ? {} : { grant }) }\n}\n\nasync function readGrants(\n runtime: SixbRuntimeContext,\n visits: readonly ActivityVisit[]\n): Promise<ReadonlyMap<string, ShareGrantRecord>> {\n const ids = visits.flatMap((visit) => (visit.actor.type === \"share\" ? [visit.actor.grantId] : []))\n if (ids.length === 0 || !runtime.storage.shareGrants) {\n return new Map()\n }\n\n const grants = await runtime.storage.shareGrants.getByIds({ projectId: runtime.projectId, ids })\n return new Map(grants.map((grant) => [grant.id, grant]))\n}\n\nfunction withShare(\n visit: ActivityVisit,\n grants: ReadonlyMap<string, ShareGrantRecord>\n): ActivityVisitView {\n const { actor } = visit\n const grant = actor.type === \"share\" ? grants.get(actor.grantId) : undefined\n if (actor.type !== \"share\" || grant === undefined) {\n return visit\n }\n\n return { ...visit, actor: { ...actor, definitionId: grant.definitionId } }\n}\n",
|
|
9
|
+
"import { type AuthorizationContext, canViewActionRun, isAllowed } from \"../authorization\"\nimport { AuthorizationError } from \"../authorization/errors\"\nimport type { ResolvedRuntimeAuthorization } from \"../execution/authorization\"\nimport { type AuthorizedObjectReader, readerClearance } from \"../execution/authorized-object-reader\"\nimport type { Storage } from \"../storage\"\nimport type { ActionRunRecord } from \"../storage/action-runs\"\nimport { findPrimitiveParentRequestExecution } from \"../storage/executions/run-link\"\nimport { objectBatchKey } from \"../storage/objects/keys\"\nimport type { ActionObjectSubject } from \"./types\"\n\n/**\n * The runs among these a principal may view. `canViewActionRun` decides on the subject's type,\n * which a type the principal views through a condition fails: a run on one is viewable while the\n * condition shows its subject now. A deleted subject shows nothing, so its runs stay hidden.\n */\nexport async function viewableActionRuns<\n TRun extends Pick<ActionRunRecord, \"actionId\" | \"subject\">,\n>(\n objectReader: AuthorizedObjectReader,\n authorization: AuthorizationContext | null | undefined,\n runs: readonly TRun[]\n): Promise<readonly TRun[]> {\n if (!authorization) return runs\n\n const subjectThroughCondition = (run: TRun): ActionObjectSubject | undefined =>\n run.subject.kind === \"object\" &&\n authorization.viewConditions?.has(run.subject.objectTypeId) === true &&\n isAllowed(authorization, { kind: \"action.apply\", actionId: run.actionId })\n ? run.subject\n : undefined\n\n const subjects = runs.flatMap((run) => subjectThroughCondition(run) ?? [])\n const shown = subjects.length === 0 ? new Set() : await readableSubjects(objectReader, subjects)\n\n return runs.filter((run) => {\n if (canViewActionRun(authorization, run)) return true\n\n const subject = subjectThroughCondition(run)\n return (\n subject !== undefined && shown.has(objectBatchKey(subject.objectTypeId, subject.primaryId))\n )\n })\n}\n\n/**\n * The action subjects the reader reads now, by `objectBatchKey`: object type grants, conditions,\n * markings and existence alike. One batch per object type, as a type the reader cannot see fails\n * its whole batch.\n */\nexport async function readableSubjects(\n objectReader: AuthorizedObjectReader,\n subjects: readonly ActionObjectSubject[]\n): Promise<ReadonlySet<string>> {\n const byType = new Map<string, Map<string, ActionObjectSubject>>()\n for (const subject of subjects) {\n const items = byType.get(subject.objectTypeId) ?? new Map()\n items.set(subject.primaryId, subject)\n byType.set(subject.objectTypeId, items)\n }\n\n const readable = new Set<string>()\n await Promise.all(\n [...byType.values()].map(async (items) => {\n try {\n const rows = await objectReader.getByPrimaryIdBatch({ items: [...items.values()] })\n for (const key of rows.keys()) {\n readable.add(key)\n }\n } catch (error) {\n if (!(error instanceof AuthorizationError)) {\n throw error\n }\n }\n })\n )\n return readable\n}\n\n/**\n * Whether the reader can read the object type of a run's subject under the markings of the\n * versions projections applied. A run names its subject's id, so a run on a type the reader\n * cannot read is hidden like one on a type it has no view grant for.\n */\nexport async function canReadActionRunSubject(\n objectReader: AuthorizedObjectReader,\n run: Pick<ActionRunRecord, \"subject\">\n): Promise<boolean> {\n if (run.subject.kind !== \"object\") return true\n const clearance = await readerClearance(objectReader)\n return clearance?.unreadableType(run.subject.objectTypeId) === undefined\n}\n\n/** The object types whose runs the reader cannot read, to leave out of a run listing. */\nexport async function unreadableActionRunTypes(\n objectReader: AuthorizedObjectReader\n): Promise<ReadonlySet<string>> {\n const clearance = await readerClearance(objectReader)\n return new Set(clearance?.unreadable().types.keys())\n}\n\n/** Check both current grant scope and immutable request provenance for a delegated Action run. */\nexport async function canDelegationAccessActionRun(input: {\n readonly storage: Storage\n readonly projectId: string\n readonly authority: Extract<ResolvedRuntimeAuthorization, { readonly type: \"delegated\" }>\n readonly run: ActionRunRecord\n}): Promise<boolean> {\n const subject = input.run.subject\n if (\n !input.authority.delegation ||\n subject.kind !== \"object\" ||\n !input.authority.actionApply.some(\n (target) =>\n target.actionId === input.run.actionId &&\n target.subject.objectTypeId === subject.objectTypeId &&\n target.subject.primaryId === subject.primaryId\n )\n ) {\n return false\n }\n return actionRunBelongsToShareGrant({\n storage: input.storage,\n projectId: input.projectId,\n run: input.run,\n grantId: input.authority.delegation.grantId,\n })\n}\n\n/** Session ids remain audit provenance; the issued grant is the durable capability identity. */\nexport async function actionRunBelongsToShareGrant(input: {\n readonly storage: Storage\n readonly projectId: string\n readonly run: Pick<ActionRunRecord, \"id\" | \"actionId\" | \"executionId\">\n readonly grantId: string\n}): Promise<boolean> {\n const parent = await findPrimitiveParentRequestExecution({\n executions: input.storage.executions,\n projectId: input.projectId,\n executionId: input.run.executionId,\n primitive: { kind: \"action\", id: input.run.actionId, runId: input.run.id },\n })\n const authorization = parent?.authorizationRef\n return (\n authorization?.type === \"delegated\" &&\n authorization.delegation.kind === \"share\" &&\n authorization.delegation.grantId === input.grantId\n )\n}\n",
|
|
10
|
+
"/**\n * The nearest of an execution and its ancestors that `isOwner` accepts, walking up through\n * `parentOf`: where a roll-up counts what the execution spent. Undefined when the walk runs out of\n * known parents first.\n */\nexport function nearestOwner(\n executionId: string,\n parentOf: (executionId: string) => string | undefined,\n isOwner: (executionId: string) => boolean\n): string | undefined {\n let current: string | undefined = executionId\n while (current !== undefined && !isOwner(current)) current = parentOf(current)\n return current\n}\n",
|
|
11
|
+
"import type { AiCostStorage, AiCostSummary } from \"../storage/ai-cost\"\n\n/** Resolve preferred cost summaries in input order without inventing unavailable accounting. */\nexport async function resolveExecutionCosts(input: {\n readonly storage: AiCostStorage | undefined\n readonly projectId: string\n readonly executionIds: readonly string[]\n}): Promise<readonly (AiCostSummary | undefined)[]> {\n if (input.executionIds.length === 0) return []\n if (!input.storage) return input.executionIds.map(() => undefined)\n return input.storage.summarizeExecutions({\n projectId: input.projectId,\n executionIds: input.executionIds,\n })\n}\n\n/** The cost of several executions together; nothing when none made a call. */\nexport function addCostSummaries(summaries: readonly AiCostSummary[]): AiCostSummary | undefined {\n const amounts = new Map<string, bigint>()\n let ratedCallCount = 0\n let unpriceableCallCount = 0\n let unvaluedCallCount = 0\n\n for (const summary of summaries) {\n for (const money of summary.amounts) {\n amounts.set(money.currency, (amounts.get(money.currency) ?? 0n) + BigInt(money.amountNanos))\n }\n ratedCallCount += summary.ratedCallCount\n unpriceableCallCount += summary.unpriceableCallCount\n unvaluedCallCount += summary.unvaluedCallCount\n }\n\n if (ratedCallCount + unpriceableCallCount + unvaluedCallCount === 0) {\n return undefined\n }\n\n return {\n amounts: [...amounts]\n .sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0))\n .map(([currency, amount]) => ({ currency, amountNanos: amount.toString() })),\n ratedCallCount,\n unpriceableCallCount,\n unvaluedCallCount,\n }\n}\n",
|
|
12
|
+
"import {\n readableSubjects,\n unreadableActionRunTypes,\n viewableActionRuns,\n} from \"../actions/run-authorization\"\nimport { canViewWorkflowRun, isRuntimeAllowed } from \"../authorization\"\nimport { nearestOwner } from \"../execution/lineage\"\nimport { addCostSummaries, resolveExecutionCosts } from \"../runtime/ai-cost\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport type { ActionRunStatus } from \"../storage/action-runs\"\nimport { ACTIVITY_MAX_VISIT_MS, ACTIVITY_MIN_IDLE_TIMEOUT_MS } from \"../storage/activity/policy\"\nimport type { ActivityVisit, StoredActivityVisitPage } from \"../storage/activity/types\"\nimport type { AgentRunStatus, ConversationAgentRunRecord } from \"../storage/agents\"\nimport type { AiCostSummary } from \"../storage/ai-cost\"\nimport type { ExecutionRecord } from \"../storage/executions\"\nimport { objectBatchKey } from \"../storage/objects/keys\"\nimport type { ShareGrantRecord } from \"../storage/share-grants\"\nimport type { WorkflowRunStatus } from \"../storage/workflow-runs\"\nimport { type ActivityConnection, readActivityConnection } from \"./connection\"\nimport type { ActivityVisitView } from \"./shares\"\n\n/**\n * At most this many page views and interactions together, and as many recorded executions, make a\n * visit's timeline.\n */\nexport const ACTIVITY_TIMELINE_LIMIT = 200\n\n/**\n * How far around its activity a visit claims its session's executions. A click right after a\n * return reaches the server before the activity that opens the visit, and the last action before\n * leaving may come after the last activity sent. Half the shortest idle timeout keeps the visits of\n * one session from claiming the same execution.\n */\nconst SESSION_GRACE_MS = ACTIVITY_MIN_IDLE_TIMEOUT_MS / 2\n\nexport interface ActivityPageEntry {\n readonly kind: \"page\"\n readonly at: Date\n readonly sequence: number\n readonly route: string\n}\n\n/** An interaction the app marked, on the page it happened on. */\nexport interface ActivityInteractionEntry {\n readonly kind: \"interaction\"\n readonly at: Date\n readonly sequence: number\n readonly name: string\n readonly route: string\n}\n\nexport interface ActivityActionEntry {\n readonly kind: \"action\"\n readonly at: Date\n readonly executionId: string\n readonly actionId: string\n readonly runId: string\n /** `incomplete` when no outcome is recorded: the run is in flight, or was interrupted. */\n readonly status: ActionRunStatus | \"incomplete\"\n /** Whether the viewer may read the run itself, as Observability › Runs shows it. */\n readonly runVisible: boolean\n /** The object it applied to, only when the viewer can read that object. */\n readonly object?: { readonly objectTypeId: string; readonly primaryId: string }\n}\n\nexport interface ActivityWorkflowEntry {\n readonly kind: \"workflow\"\n readonly at: Date\n readonly executionId: string\n readonly workflowId: string\n readonly runId: string\n readonly status: WorkflowRunStatus | \"incomplete\"\n /** Whether the viewer may read the run itself, as Observability › Runs shows it. */\n readonly runVisible: boolean\n}\n\n/** A conversation's run: its metadata, and its thread's title only for those who read threads. */\nexport interface ActivityAgentEntry {\n readonly kind: \"agent\"\n readonly at: Date\n readonly executionId: string\n readonly runId: string\n readonly threadId: string\n /**\n * Present only when the viewer can read the conversation, with `can.observe(agent.threads)`.\n * Activity alone never shows a title or a message.\n */\n readonly thread?: { readonly title?: string }\n readonly status: AgentRunStatus\n /** Messages in the thread now, every run's. */\n readonly messages: number\n /** The run's model calls with those of its subagents and tools; absent without any. */\n readonly cost?: AiCostSummary\n}\n\nexport type ActivityTimelineEntry =\n | ActivityPageEntry\n | ActivityInteractionEntry\n | ActivityActionEntry\n | ActivityWorkflowEntry\n | ActivityAgentEntry\n\nexport interface ActivityVisitTimeline {\n readonly visit: ActivityVisitView\n /** Absent once the session is gone, or without an auth or share store. */\n readonly connection?: ActivityConnection\n /**\n * By time. Page views and interactions come in their sequence, and before executions at the same\n * instant.\n */\n readonly entries: readonly ActivityTimelineEntry[]\n /**\n * More than {@link ACTIVITY_TIMELINE_LIMIT} page views and interactions, or recorded executions.\n * The timeline then stops at the last page view or interaction, or the last root execution, it\n * could keep.\n */\n readonly truncated: boolean\n}\n\n/**\n * A visit's timeline: its page views and interactions, and what its session started while it\n * lasted. One bounded read per source, each batched over the visit; see `README.md`.\n */\nexport async function composeActivityTimeline(\n runtime: SixbRuntimeContext,\n input: {\n readonly page: StoredActivityVisitPage\n /** The visit, named by its link's share. */\n readonly visit: ActivityVisitView\n /** That link's grant, read with the name. */\n readonly grant?: ShareGrantRecord\n },\n now: Date\n): Promise<ActivityVisitTimeline> {\n const { page, visit } = input\n const { storage, projectId } = runtime\n\n const [ledger, connection] = await Promise.all([\n storage.executions.listBySession({\n projectId,\n session: { type: visit.actor.type, id: page.sessionId },\n ...sessionWindow(visit),\n limit: ACTIVITY_TIMELINE_LIMIT,\n }),\n readActivityConnection(runtime, page, input.grant, now),\n ])\n const executions = ledger.executions\n\n const ofKind = (kind: \"action\" | \"workflow\") =>\n executions.flatMap((execution) =>\n execution.executor.type === \"primitive\" && execution.executor.kind === kind\n ? [execution.id]\n : []\n )\n const agentRunIds = executions.flatMap((execution) =>\n execution.executor.type === \"agent\" ? [execution.executor.runId] : []\n )\n\n // Only what an Agent ran can count toward a conversation's cost.\n const byId = new Map(executions.map((execution) => [execution.id, execution]))\n const withAgent = executions.filter((execution) =>\n lineage(execution, byId).some((ancestor) => ancestor.executor.type === \"agent\")\n )\n\n const [actionRuns, workflowRuns, agentRuns, costs] = await Promise.all([\n storage.actionRuns?.getByExecutionIds({ projectId, executionIds: ofKind(\"action\") }) ?? [],\n storage.workflowRuns?.getByExecutionIds({ projectId, executionIds: ofKind(\"workflow\") }) ?? [],\n storage.agents?.runs.getByIds({ projectId, ids: agentRunIds }) ?? [],\n resolveExecutionCosts({\n storage: storage.aiCosts,\n projectId,\n executionIds: withAgent.map((execution) => execution.id),\n }),\n ])\n\n // A subagent's cost goes to the conversation above it. A Workflow's Agent steps have none.\n const conversations = new Map(\n agentRuns.flatMap((run) =>\n run.kind === \"conversation\" ? [[run.executionId, run] as const] : []\n )\n )\n const subjects = actionRuns.flatMap((run) => (run.subject.kind === \"object\" ? [run.subject] : []))\n\n const [threads, readable, unreadableRunTypes, viewableRuns] = await Promise.all([\n storage.agents?.threads.getByIds({\n projectId,\n ids: [...conversations.values()].map((run) => run.threadId),\n }) ?? [],\n readableSubjects(runtime.objectReader, subjects),\n subjects.length > 0 ? unreadableActionRunTypes(runtime.objectReader) : new Set<string>(),\n viewableActionRuns(runtime.objectReader, runtime.authorization, actionRuns),\n ])\n\n const actionRunByExecution = new Map(actionRuns.map((run) => [run.executionId, run]))\n const viewableRunIds = new Set(viewableRuns.map((run) => run.id))\n const workflowRunByExecution = new Map(workflowRuns.map((run) => [run.executionId, run]))\n const threadById = new Map(threads.map((thread) => [thread.id, thread]))\n const observesThreads = isRuntimeAllowed(runtime, { kind: \"agentThreads.observe\" })\n const costByAgent = rollUpCosts(byId, conversations, withAgent, costs)\n\n const executionEntries = executions.flatMap((execution): ActivityTimelineEntry[] => {\n const at = new Date(execution.createdAt)\n const executor = execution.executor\n const authority = execution.authorizationRef\n\n if (executor.type === \"primitive\" && authority.type === \"trustedPrimitive\") {\n if (executor.kind === \"action\") {\n const run = actionRunByExecution.get(execution.id)\n const subject = run?.subject.kind === \"object\" ? run.subject : undefined\n const object =\n subject && readable.has(objectBatchKey(subject.objectTypeId, subject.primaryId))\n ? { objectTypeId: subject.objectTypeId, primaryId: subject.primaryId }\n : undefined\n\n // As the runs page decides: the action, its subject's type or, through a condition, the\n // subject itself, and the type's markings.\n const runVisible =\n run !== undefined &&\n viewableRunIds.has(run.id) &&\n (subject === undefined || !unreadableRunTypes.has(subject.objectTypeId))\n\n return [\n {\n kind: \"action\",\n at,\n executionId: execution.id,\n actionId: authority.primitive.id,\n runId: executor.runId,\n status: run?.status ?? \"incomplete\",\n runVisible,\n ...(object === undefined ? {} : { object }),\n },\n ]\n }\n\n if (executor.kind === \"workflow\") {\n const run = workflowRunByExecution.get(execution.id)\n return [\n {\n kind: \"workflow\",\n at,\n executionId: execution.id,\n workflowId: authority.primitive.id,\n runId: executor.runId,\n status: run?.status ?? \"incomplete\",\n runVisible: run !== undefined && canViewWorkflowRun(runtime.authorization, run),\n },\n ]\n }\n }\n\n const conversation = conversations.get(execution.id)\n if (conversation) {\n const cost = costByAgent.get(execution.id)\n const thread = threadById.get(conversation.threadId)\n const title = thread?.title\n\n return [\n {\n kind: \"agent\",\n at,\n executionId: execution.id,\n runId: conversation.id,\n threadId: conversation.threadId,\n ...(observesThreads && thread ? { thread: title === undefined ? {} : { title } } : {}),\n status: conversation.status,\n messages: thread?.messageCount ?? 0,\n ...(cost === undefined ? {} : { cost }),\n },\n ]\n }\n\n return []\n })\n\n // Recorded entries come first at an equal instant, in their sequence: the sort is stable.\n const recorded = [\n ...page.pageViews.map(\n (pageView): ActivityPageEntry => ({\n kind: \"page\",\n at: new Date(pageView.receivedAt),\n sequence: pageView.sequence,\n route: pageView.route,\n })\n ),\n ...page.interactions.map(\n (interaction): ActivityInteractionEntry => ({\n kind: \"interaction\",\n at: new Date(interaction.receivedAt),\n sequence: interaction.sequence,\n name: interaction.name,\n route: interaction.route,\n })\n ),\n ].sort((left, right) => left.sequence - right.sequence)\n\n // Past the last page view, interaction or root kept, a source left rows out: the timeline stops\n // there.\n const cutoffs = [\n page.hasMore ? recorded.at(-1)?.at : undefined,\n ledger.truncated\n ? executions.filter((execution) => execution.source.type !== \"execution\").at(-1)?.createdAt\n : undefined,\n ].flatMap((at) => (at === undefined ? [] : [at.getTime()]))\n const cutoff = cutoffs.length > 0 ? Math.min(...cutoffs) : Number.POSITIVE_INFINITY\n\n const entries = [...recorded, ...executionEntries]\n .filter((entry) => entry.at.getTime() <= cutoff)\n .sort((left, right) => left.at.getTime() - right.at.getTime())\n\n return {\n visit,\n ...(connection === undefined ? {} : { connection }),\n entries,\n truncated: page.hasMore || ledger.truncated,\n }\n}\n\n/**\n * Roots created in `[start - grace, last activity + grace)`, cut where the session's next visit\n * may start once this one is a day old.\n */\nfunction sessionWindow(visit: ActivityVisit): { readonly from: Date; readonly to: Date } {\n const startedAt = visit.startedAt.getTime()\n return {\n from: new Date(startedAt - SESSION_GRACE_MS),\n to: new Date(\n Math.min(\n visit.lastSeenAt.getTime() + SESSION_GRACE_MS,\n startedAt + ACTIVITY_MAX_VISIT_MS - SESSION_GRACE_MS\n )\n ),\n }\n}\n\n/** An execution, then its parent and the parent's, as far as the visit's executions go. */\nfunction lineage(\n execution: ExecutionRecord,\n byId: ReadonlyMap<string, ExecutionRecord>\n): readonly ExecutionRecord[] {\n const chain: ExecutionRecord[] = []\n let current: ExecutionRecord | undefined = execution\n\n while (current) {\n chain.push(current)\n current = current.source.type === \"execution\" ? byId.get(current.source.executionId) : undefined\n }\n return chain\n}\n\n/** Each conversation's cost: its own calls and those of everything below it, each counted once. */\nfunction rollUpCosts(\n byId: ReadonlyMap<string, ExecutionRecord>,\n conversations: ReadonlyMap<string, ConversationAgentRunRecord>,\n withAgent: readonly ExecutionRecord[],\n costs: readonly (AiCostSummary | undefined)[]\n): ReadonlyMap<string, AiCostSummary> {\n const grouped = new Map<string, AiCostSummary[]>()\n\n withAgent.forEach((execution, index) => {\n const cost = costs[index]\n const owner = nearestOwner(\n execution.id,\n (id) => {\n const source = byId.get(id)?.source\n return source?.type === \"execution\" ? source.executionId : undefined\n },\n (id) => conversations.has(id)\n )\n if (!cost || !owner) {\n return\n }\n\n const summaries = grouped.get(owner) ?? []\n summaries.push(cost)\n grouped.set(owner, summaries)\n })\n\n return new Map(\n [...grouped].flatMap(([owner, summaries]) => {\n const total = addCostSummaries(summaries)\n return total ? [[owner, total] as const] : []\n })\n )\n}\n",
|
|
13
|
+
"import { AuthorizationError, assertAuthorized } from \"../authorization\"\nimport { getAuthorizationRef } from \"../execution/authorization\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport type { ActivityEventInput, ActivitySummary, ActivityUser } from \"../storage/activity/types\"\nimport {\n type ActivityConnectionsPage,\n type ActivityConnectionsQuery,\n readActivityConnections,\n} from \"./connection\"\nimport type {\n ActivityCalendar,\n ActivityCalendarQuery,\n ActivityCaptureOptions,\n ActivityCaptureResult,\n ActivityPageQuery,\n ActivityPeriodQuery,\n ActivityService,\n ActivitySource,\n} from \"./service\"\nimport { type ActivityVisitView, nameSharedVisit, nameSharedVisits } from \"./shares\"\nimport {\n ACTIVITY_TIMELINE_LIMIT,\n type ActivityVisitTimeline,\n composeActivityTimeline,\n} from \"./timeline\"\n\nexport interface ActivityVisitList {\n readonly visits: readonly ActivityVisitView[]\n readonly hasMore: boolean\n}\n\nexport interface ActivityUsersResult {\n /** `displayName` is the account's profile name; no other profile field is read. */\n readonly users: readonly (ActivityUser & { readonly displayName?: string })[]\n readonly hasMore: boolean\n}\n\n/** `sixb.activity`: the app's recorded visits. Every read needs `can.observe(project.activity)`. */\nexport interface ActivityRuntime {\n /** Shared visits name their link's share: see `ActivityVisitView`. */\n list(query: ActivityPageQuery): Promise<ActivityVisitList>\n users(query: ActivityPageQuery): Promise<ActivityUsersResult>\n summarize(query: ActivityPeriodQuery): Promise<ActivitySummary>\n calendar(query: ActivityCalendarQuery): Promise<ActivityCalendar>\n /**\n * The visit's page views and interactions with the actions, workflows and Agent runs its session\n * started, and the connection it came through. Bounded: see `truncated`.\n */\n timeline(visitId: string): Promise<ActivityVisitTimeline | null>\n /** A user's sign-ins, newest first, with the visits each opened. */\n connections(query: ActivityConnectionsQuery): Promise<ActivityConnectionsPage>\n}\n\n/**\n * Recording, for the server's capture route only: it is not on `sixb.activity`, so project code\n * cannot record visits under whatever authority it runs with.\n */\nexport interface ActivityCaptureRuntime {\n /** The settings a browser session reads before it sends anything. */\n captureOptions(): ActivityCaptureOptions\n /** Records a batch for the calling user or shared session. */\n capture(events: readonly ActivityEventInput[]): Promise<ActivityCaptureResult>\n}\n\n// Display names are read one account at a time; a page of users reads a few at once.\nconst PROFILE_READ_CONCURRENCY = 8\n\nexport function createActivityRuntime(\n runtime: SixbRuntimeContext,\n service: ActivityService\n): ActivityRuntime {\n const assertObservable = () => assertAuthorized(runtime, { kind: \"activity.observe\" })\n\n return {\n async list(query) {\n assertObservable()\n const page = await service.list(query)\n return { ...page, visits: await nameSharedVisits(runtime, page.visits) }\n },\n\n async users(query) {\n assertObservable()\n const page = await service.users(query)\n\n // Only accounts in this bounded page are looked up, and only their name is kept.\n const users = await mapInChunks(page.users, PROFILE_READ_CONCURRENCY, async (user) => {\n const profile = await runtime.storage.auth?.users.getById({\n projectId: runtime.projectId,\n id: user.userId,\n })\n return profile?.displayName ? { ...user, displayName: profile.displayName } : user\n })\n\n return { users, hasMore: page.hasMore }\n },\n\n async summarize(query) {\n assertObservable()\n return service.summarize(query)\n },\n\n async calendar(query) {\n assertObservable()\n return service.calendar(query)\n },\n\n async timeline(visitId) {\n assertObservable()\n const page = await service.readWithSession({ id: visitId, limit: ACTIVITY_TIMELINE_LIMIT })\n if (!page) {\n return null\n }\n\n const shared = await nameSharedVisit(runtime, page.visit)\n return composeActivityTimeline(runtime, { ...shared, page }, new Date())\n },\n\n async connections(query) {\n assertObservable()\n return readActivityConnections(runtime, service, query, new Date())\n },\n }\n}\n\nexport function createActivityCaptureRuntime(\n runtime: SixbRuntimeContext,\n service: ActivityService\n): ActivityCaptureRuntime {\n return {\n captureOptions() {\n captureSource(runtime)\n return service.captureOptions\n },\n\n async capture(events) {\n return service.capture(captureSource(runtime), events)\n },\n }\n}\n\nconst activityCaptureKey: unique symbol = Symbol(\"sixb.activityCapture\")\n\ninterface ActivityCaptureOwner {\n readonly [activityCaptureKey]?: ActivityCaptureRuntime\n}\n\nexport function registerActivityCaptureRuntime(\n owner: object,\n capture: ActivityCaptureRuntime\n): void {\n Object.defineProperty(owner, activityCaptureKey, {\n configurable: false,\n enumerable: false,\n value: capture,\n writable: false,\n })\n}\n\n/** The recording side of a bound SDK, such as a request's. */\nexport function getActivityCaptureRuntime(owner: object): ActivityCaptureRuntime {\n const capture = (owner as ActivityCaptureOwner)[activityCaptureKey]\n if (!capture) {\n throw new Error(\"[Sixb] Activity capture is not registered for this execution.\")\n }\n return capture\n}\n\n/**\n * The session the batch came through, from verified authorization only. A browser never names an\n * actor, and an access token or a trusted primitive is not a visit.\n */\nfunction captureSource(runtime: SixbRuntimeContext): ActivitySource {\n const ref = getAuthorizationRef(runtime.runtimeAuthorization)\n\n if (\n ref.type === \"principal\" &&\n ref.principal.type === \"user\" &&\n ref.credential?.type === \"session\"\n ) {\n return {\n actor: { type: \"user\", userId: ref.principal.id },\n sessionId: ref.credential.id,\n }\n }\n\n if (ref.type === \"delegated\") {\n return {\n actor: { type: \"share\", grantId: ref.delegation.grantId },\n sessionId: ref.delegation.sessionId,\n }\n }\n\n throw new AuthorizationError(\n \"activity.capture\",\n \"[Sixb] Activity is recorded only for a signed-in user's session or a shared link's session.\"\n )\n}\n\nasync function mapInChunks<T, R>(\n items: readonly T[],\n size: number,\n map: (item: T) => Promise<R>\n): Promise<R[]> {\n const results: R[] = []\n for (let start = 0; start < items.length; start += size) {\n const chunk = await Promise.all(items.slice(start, start + size).map(map))\n results.push(...chunk)\n }\n return results\n}\n",
|
|
14
|
+
"import type { ExecutionContext, RuntimeAuthorization } from \"../../execution\"\nimport { ensureExecutionRecord, executionRecordInputFromRuntime } from \"../../execution/durable\"\nimport type { SixbHostContext } from \"../../runtime/types\"\nimport type { ModelExecutionAttempt } from \"./binding\"\nimport { requireAccountingCapabilities } from \"./model-call-accounting\"\nimport { createAiModelCallLimitController } from \"./model-call-limits\"\nimport { AiModelCallRecorder } from \"./model-call-recorder\"\nimport { enqueueAiModelCallRecovery } from \"./recovery-queue\"\n\n/** One accounting boundary shared by all model protocols in a bound execution. */\nexport class ModelExecutionSession {\n private binding?: ModelExecutionAttempt\n private recorder?: Promise<AiModelCallRecorder>\n\n constructor(\n private readonly runtime: SixbHostContext & { runtimeAuthorization: RuntimeAuthorization },\n private readonly execution: ExecutionContext\n ) {}\n\n bind(input: ModelExecutionAttempt): void {\n if (this.binding) throw new Error(\"[SixbModels] Execution attempt is already bound.\")\n this.binding = { ...input }\n }\n\n signal(signal?: AbortSignal): AbortSignal {\n const binding = this.requireBinding()\n return signal ? AbortSignal.any([binding.signal, signal]) : binding.signal\n }\n\n async admitEmbeddingCall(admit: () => Promise<void>): Promise<void> {\n const admission = this.requireBinding().embeddingAdmission\n if (admission) await admission(admit)\n else await admit()\n }\n\n accounting(): Promise<AiModelCallRecorder> {\n const { accounting } = this.requireBinding()\n this.recorder ??= accounting ? Promise.resolve(accounting) : this.createRecorder()\n return this.recorder\n }\n\n private requireBinding(): ModelExecutionAttempt {\n if (!this.binding) {\n throw new Error(\n \"[SixbModels] Model calls require a bound request or worker execution attempt.\"\n )\n }\n return this.binding\n }\n\n private async createRecorder(): Promise<AiModelCallRecorder> {\n const runtime = this.runtime\n const execution = this.execution\n const { attempt } = this.requireBinding()\n const storage = {\n ...requireAccountingCapabilities(runtime.storage),\n transaction: runtime.storage.transaction.bind(runtime.storage),\n }\n const { requesterGroupIds } = await ensureExecutionRecord(\n runtime.storage.executions,\n executionRecordInputFromRuntime({\n execution,\n runtimeAuthorization: runtime.runtimeAuthorization,\n })\n )\n return new AiModelCallRecorder({\n storage,\n projectId: runtime.projectId,\n executionId: execution.id,\n attempt,\n requesterGroupIds,\n limits: createAiModelCallLimitController({\n storage,\n projectId: runtime.projectId,\n requestedBy: execution.requestedBy,\n requesterGroupIds,\n }),\n recoverAiModelCall: (input) => enqueueAiModelCallRecovery(runtime.queues.agents, input),\n })\n }\n}\n"
|
|
15
|
+
],
|
|
16
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,IAAM,6BAA4C,OAAO,8BAA8B;AAMhF,SAAS,gCAA+B,CAC7C,OACA,SACM;AAAA,EACN,MAAM,aAAc,MAAuC;AAAA,EAC3D,IAAI,cAAc,eAAe,SAAS;AAAA,IACxC,MAAM,IAAI,MAAM,wEAAwE;AAAA,EAC1F;AAAA,EACA,OAAO,eAAe,OAAO,4BAA4B;AAAA,IACvD,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,UAAU;AAAA,EACZ,CAAC;AAAA;AAGI,SAAS,2BAA0B,CAAC,OAAwC;AAAA,EACjF,MAAM,UAAW,MAAuC;AAAA,EACxD,IAAI;AAAA,IAAS,OAAO;AAAA,EACpB,MAAM,IAAI,MAAM,8EAA8E;AAAA;AAIzF,SAAS,6BAA4B,CAAC,QAAgB,QAAsB;AAAA,EACjF,iCAAgC,QAAQ,4BAA2B,MAAM,CAAC;AAAA;AAIrE,SAAS,8BAA6B,CAAC,OAKlB;AAAA,EAC1B,MAAM,UAAU,CAAU,SACxB,KAAK,QAAQ,MAAM,uBAAuB,MAAM,mBAAmB,CAAC;AAAA,EAEtE,MAAM,UAAmC;AAAA,IACvC,qBAAqB,CAAC,WAAW,MAAM,aAAa,YAAY,UAAU,MAAM;AAAA,IAChF,aAAa,CAAC,YACZ,gBAAgB,MAAM,MAAM,aAAa,MAAM,OAAO,OAAO,GAAG,MAAM,oBAAoB;AAAA,IAC5F,mBAAmB,CAAC,YAClB,QACE,gBACE,MAAM,MAAM,aAAa,YAAY,QAAQ,OAAO,GACpD,MAAM,oBACR,CACF;AAAA,IACF,kBAAkB,CAAC,YAAY,QAAQ,MAAM,aAAa,YAAY,UAAU,OAAO,CAAC;AAAA,IACxF,iBAAiB,CAAC,YAChB,gBACE,MAAM,MAAM,aAAa,UAAU,OAAO,OAAO,GACjD,MAAM,oBACR;AAAA,EACJ;AAAA,EACA,OAAO,OAAO,OAAO,OAAO;AAAA;AAG9B,eAAe,eAAgE,CAC7E,QACA,QACkB;AAAA,EAClB,MAAM,SAAS,MAAM,OAAO;AAAA,EAC5B,IAAI,OAAO,aAAa;AAAA,IAAG,6BAA6B,MAAM;AAAA,EAC9D,OAAO;AAAA;AAGT,SAAS,4BAA4B,CAAC,QAA0B;AAAA,EAC9D,IAAI;AAAA,IACF,OAAO;AAAA,IACP,OAAO,OAAO;AAAA,IAGd,QAAQ,MAAM,yDAAyD,KAAK;AAAA;AAAA;AAIhF,SAAS,sBAAsB,CAAC,QAAwC;AAAA,EACtE,IAAI;AAAA,IACF,SAAS;AAAA,IACT,OAAO,OAAO;AAAA,IACd,QAAQ,MAAM,kDAAkD,KAAK;AAAA;AAAA;;;ACpGzE,IAAM,WAAmD;AAAA,EACvD,CAAC,uBAAuB,MAAM;AAAA,EAC9B,CAAC,qBAAqB,OAAO;AAAA,EAC7B,CAAC,sBAAsB,kBAAkB;AAAA,EACzC,CAAC,yBAAyB,SAAS;AAAA,EACnC,CAAC,gDAAgD,QAAQ;AAAA,EACzD,CAAC,iCAAiC,QAAQ;AAC5C;AAEA,IAAM,UAAkD;AAAA,EACtD,CAAC,eAAe,SAAS;AAAA,EACzB,CAAC,YAAY,QAAQ;AAAA,EACrB,CAAC,uBAAuB,KAAK;AAAA,EAC7B,CAAC,eAAe,SAAS;AAAA,EACzB,CAAC,YAAY,UAAU;AAAA,EACvB,CAAC,8BAA8B,OAAO;AAAA,EACtC,CAAC,aAAa,OAAO;AACvB;AAGO,SAAS,iBAAiB,CAAC,WAA+C;AAAA,EAC/E,IAAI,CAAC,WAAW;AAAA,IACd,OAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAM,UAAU,SAAS,KAAK,EAAE,aAAa,QAAQ,KAAK,SAAS,CAAC,IAAI;AAAA,EACxE,MAAM,KAAK,QAAQ,KAAK,EAAE,aAAa,QAAQ,KAAK,SAAS,CAAC,IAAI;AAAA,EAElE,OAAO;AAAA,OACD,YAAY,YAAY,CAAC,IAAI,EAAE,QAAQ;AAAA,OACvC,OAAO,YAAY,CAAC,IAAI,EAAE,GAAG;AAAA,EACnC;AAAA;;;ACwBF,eAAsB,uBAAuB,CAC3C,SACA,SACA,OACA,KACkC;AAAA,EAClC,QAAQ,QAAQ,OAAO,WAAW,QAAQ,iBAAiB,KAAK;AAAA,EAChE,MAAM,WAAW,QAAQ,QAAQ,MAAM;AAAA,EACvC,IAAI,CAAC,UAAU;AAAA,IACb,OAAO,EAAE,aAAa,CAAC,EAAE;AAAA,EAC3B;AAAA,EAEA,MAAM,OAAO,MAAM,SAAS,aAAa;AAAA,IACvC,WAAW,QAAQ;AAAA,IACnB;AAAA,IACA;AAAA,OACI,WAAW,YAAY,CAAC,IAAI,EAAE,OAAO;AAAA,EAC3C,CAAC;AAAA,EACD,MAAM,SAAS,MAAM,QAAQ,cAAc;AAAA,IACzC;AAAA,IACA,YAAY,KAAK,SAAS,IAAI,CAAC,YAAY,QAAQ,EAAE;AAAA,EACvD,CAAC;AAAA,EACD,MAAM,YAAY,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,WAAW,KAAK,CAAC,CAAC;AAAA,EAEzE,MAAM,cAAc,KAAK,SAAS,IAAI,CAAC,aAAa;AAAA,OAC/C,kBAAkB,SAAS,GAAG;AAAA,IACjC,QAAQ,UAAU,IAAI,QAAQ,EAAE,GAAG,UAAU;AAAA,IAC7C,cAAc,UAAU,IAAI,QAAQ,EAAE,GAAG,UAAU,CAAC;AAAA,EACtD,EAAE;AAAA,EACF,MAAM,OAAO,KAAK,SAAS,GAAG,EAAE;AAAA,EAEhC,OAAO;AAAA,IACL;AAAA,OACI,KAAK,WAAW,OAChB,EAAE,YAAY,sBAAsB,KAAK,UAAU,MAAM,MAAM,EAAE,IACjE,CAAC;AAAA,EACP;AAAA;AAOF,SAAS,qBAAqB,CAC5B,UACA,MACA,QACQ;AAAA,EACR,QAAQ,cAAc;AAAA,EACtB,MAAM,OAAO,SAAS,OAAO,CAAC,YAAY,QAAQ,UAAU,QAAQ,MAAM,UAAU,QAAQ,CAAC;AAAA,EAC7F,MAAM,UAAU,UAAU,OAAO,UAAU,QAAQ,MAAM,UAAU,QAAQ,IAAI,OAAO,OAAO;AAAA,EAE7F,OAAO,gCAAgC,EAAE,WAAW,MAAM,UAAU,KAAK,OAAO,CAAC;AAAA;AAG5E,SAAS,+BAA+B,CAAC,QAA2C;AAAA,EACzF,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,OAAO,UAAU,YAAY,GAAG,OAAO,IAAI,CAAC,CAAC,EAAE,SAChF,WACF;AAAA;AAGK,SAAS,+BAA+B,CAAC,OAA0C;AAAA,EACxF,IAAI;AAAA,IACF,MAAM,SAAkB,KAAK,MAAM,OAAO,KAAK,OAAO,WAAW,EAAE,SAAS,MAAM,CAAC;AAAA,IACnF,IAAI,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,GAAG;AAAA,MAChD,OAAO,IAAI,QAAQ;AAAA,MACnB,MAAM,YAAY,IAAI,KAAK,OAAO,OAAO,WAAW,KAAK,OAAO,GAAG;AAAA,MACnE,IAAI,OAAO,SAAS,UAAU,QAAQ,CAAC,KAAK,OAAO,cAAc,IAAI,KAAK,QAAQ,GAAG;AAAA,QACnF,OAAO,EAAE,WAAW,KAAK;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,MAAM;AAAA,EAGR,MAAM,IAAI,MAAM,6CAA6C;AAAA;AAO/D,eAAsB,sBAAsB,CAC1C,SACA,MACA,OACA,KACyC;AAAA,EACzC,QAAQ,SAAS,cAAc;AAAA,EAC/B,QAAQ,UAAU,KAAK;AAAA,EAEvB,IAAI,MAAM,SAAS,QAAQ;AAAA,IACzB,MAAM,UAAU,MAAM,QAAQ,MAAM,SAAS,QAAQ,EAAE,WAAW,IAAI,KAAK,UAAU,CAAC;AAAA,IACtF,OAAO,UAAU,kBAAkB,SAAS,GAAG,IAAI;AAAA,EACrD;AAAA,EAEA,MAAM,UAAU,MAAM,QAAQ,eAAe,QAAQ,EAAE,WAAW,IAAI,KAAK,UAAU,CAAC;AAAA,EACtF,IAAI,CAAC,SAAS;AAAA,IACZ;AAAA,EACF;AAAA,EAGA,MAAM,YAAY,CAAC,QAAQ,WAAW,OAAO,SAAS,EACnD,QAAQ,CAAC,OAAQ,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAE,EACxD,KAAK,CAAC,MAAM,UAAU,OAAO,KAAK,EAAE;AAAA,EACvC,MAAM,WAAW;AAAA,IACf,iBAAiB,SAAS,GAAG;AAAA,IAC7B,GAAI,QAAQ,CAAC,iBAAiB,OAAO,GAAG,CAAC,IAAI,CAAC;AAAA,EAChD;AAAA,EACA,MAAM,SAAS,SAAS,SAAS,SAAS,IACtC,YACA,SAAS,SAAS,SAAS,IACzB,YACA;AAAA,EAEN,OAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS,MAAM;AAAA,OACX,QAAQ,EAAE,cAAc,MAAM,aAAa,IAAI,CAAC;AAAA,IACpD;AAAA,IACA,WAAW,IAAI,KAAK,QAAQ,SAAS;AAAA,OACjC,cAAc,YAAY,CAAC,IAAI,EAAE,WAAW,IAAI,KAAK,SAAS,EAAE;AAAA,EACtE;AAAA;AAGF,SAAS,gBAAgB,CACvB,SAKA,KAC0B;AAAA,EAC1B,IAAI,QAAQ,WAAW;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,UACJ,QAAQ,aAAa,OACpB,QAAQ,sBAAsB,aAAa,QAAQ,qBAAqB;AAAA,EAC3E,OAAO,UAAU,YAAY;AAAA;AAI/B,SAAS,iBAAiB,CAAC,SAAwB,KAAsC;AAAA,EACvF,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,kBAAkB,QAAQ,SAAS;AAAA,OACvC,QAAQ,WAAW,YAAY,CAAC,IAAI,EAAE,YAAY,QAAQ,OAAO,WAAW;AAAA,IAChF,QAAQ,iBAAiB,SAAS,GAAG;AAAA,IACrC,WAAW,IAAI,KAAK,QAAQ,SAAS;AAAA,OACjC,QAAQ,eAAe,YAAY,CAAC,IAAI,EAAE,YAAY,IAAI,KAAK,QAAQ,UAAU,EAAE;AAAA,OACnF,QAAQ,cAAc,YAAY,CAAC,IAAI,EAAE,WAAW,IAAI,KAAK,QAAQ,SAAS,EAAE;AAAA,EACtF;AAAA;;;ACrMF,eAAsB,gBAAgB,CACpC,SACA,QACuC;AAAA,EACvC,MAAM,SAAS,MAAM,WAAW,SAAS,MAAM;AAAA,EAC/C,OAAO,OAAO,IAAI,CAAC,UAAU,UAAU,OAAO,MAAM,CAAC;AAAA;AAIvD,eAAsB,eAAe,CACnC,SACA,OACmF;AAAA,EACnF,MAAM,SAAS,MAAM,WAAW,SAAS,CAAC,KAAK,CAAC;AAAA,EAChD,MAAM,QAAQ,MAAM,MAAM,SAAS,UAAU,OAAO,IAAI,MAAM,MAAM,OAAO,IAAI;AAAA,EAE/E,OAAO,EAAE,OAAO,UAAU,OAAO,MAAM,MAAO,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM,EAAG;AAAA;AAGtF,eAAe,UAAU,CACvB,SACA,QACgD;AAAA,EAChD,MAAM,MAAM,OAAO,QAAQ,CAAC,UAAW,MAAM,MAAM,SAAS,UAAU,CAAC,MAAM,MAAM,OAAO,IAAI,CAAC,CAAE;AAAA,EACjG,IAAI,IAAI,WAAW,KAAK,CAAC,QAAQ,QAAQ,aAAa;AAAA,IACpD,OAAO,IAAI;AAAA,EACb;AAAA,EAEA,MAAM,SAAS,MAAM,QAAQ,QAAQ,YAAY,SAAS,EAAE,WAAW,QAAQ,WAAW,IAAI,CAAC;AAAA,EAC/F,OAAO,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;AAAA;AAGzD,SAAS,SAAS,CAChB,OACA,QACmB;AAAA,EACnB,QAAQ,UAAU;AAAA,EAClB,MAAM,QAAQ,MAAM,SAAS,UAAU,OAAO,IAAI,MAAM,OAAO,IAAI;AAAA,EACnE,IAAI,MAAM,SAAS,WAAW,UAAU,WAAW;AAAA,IACjD,OAAO;AAAA,EACT;AAAA,EAEA,OAAO,KAAK,OAAO,OAAO,KAAK,OAAO,cAAc,MAAM,aAAa,EAAE;AAAA;;;AC7C3E,eAAsB,kBAErB,CACC,cACA,eACA,MAC0B;AAAA,EAC1B,IAAI,CAAC;AAAA,IAAe,OAAO;AAAA,EAE3B,MAAM,0BAA0B,CAAC,QAC/B,IAAI,QAAQ,SAAS,YACrB,cAAc,gBAAgB,IAAI,IAAI,QAAQ,YAAY,MAAM,QAChE,WAAU,eAAe,EAAE,MAAM,gBAAgB,UAAU,IAAI,SAAS,CAAC,IACrE,IAAI,UACJ;AAAA,EAEN,MAAM,WAAW,KAAK,QAAQ,CAAC,QAAQ,wBAAwB,GAAG,KAAK,CAAC,CAAC;AAAA,EACzE,MAAM,QAAQ,SAAS,WAAW,IAAI,IAAI,MAAQ,MAAM,iBAAiB,cAAc,QAAQ;AAAA,EAE/F,OAAO,KAAK,OAAO,CAAC,QAAQ;AAAA,IAC1B,IAAI,kBAAiB,eAAe,GAAG;AAAA,MAAG,OAAO;AAAA,IAEjD,MAAM,UAAU,wBAAwB,GAAG;AAAA,IAC3C,OACE,YAAY,aAAa,MAAM,IAAI,gBAAe,QAAQ,cAAc,QAAQ,SAAS,CAAC;AAAA,GAE7F;AAAA;AAQH,eAAsB,gBAAgB,CACpC,cACA,UAC8B;AAAA,EAC9B,MAAM,SAAS,IAAI;AAAA,EACnB,WAAW,WAAW,UAAU;AAAA,IAC9B,MAAM,QAAQ,OAAO,IAAI,QAAQ,YAAY,KAAK,IAAI;AAAA,IACtD,MAAM,IAAI,QAAQ,WAAW,OAAO;AAAA,IACpC,OAAO,IAAI,QAAQ,cAAc,KAAK;AAAA,EACxC;AAAA,EAEA,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,QAAQ,IACZ,CAAC,GAAG,OAAO,OAAO,CAAC,EAAE,IAAI,OAAO,UAAU;AAAA,IACxC,IAAI;AAAA,MACF,MAAM,OAAO,MAAM,aAAa,oBAAoB,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC;AAAA,MAClF,WAAW,OAAO,KAAK,KAAK,GAAG;AAAA,QAC7B,SAAS,IAAI,GAAG;AAAA,MAClB;AAAA,MACA,OAAO,OAAO;AAAA,MACd,IAAI,EAAE,iBAAiB,sBAAqB;AAAA,QAC1C,MAAM;AAAA,MACR;AAAA;AAAA,GAEH,CACH;AAAA,EACA,OAAO;AAAA;AAQT,eAAsB,uBAAuB,CAC3C,cACA,KACkB;AAAA,EAClB,IAAI,IAAI,QAAQ,SAAS;AAAA,IAAU,OAAO;AAAA,EAC1C,MAAM,YAAY,MAAM,gBAAgB,YAAY;AAAA,EACpD,OAAO,WAAW,eAAe,IAAI,QAAQ,YAAY,MAAM;AAAA;AAIjE,eAAsB,wBAAwB,CAC5C,cAC8B;AAAA,EAC9B,MAAM,YAAY,MAAM,gBAAgB,YAAY;AAAA,EACpD,OAAO,IAAI,IAAI,WAAW,WAAW,EAAE,MAAM,KAAK,CAAC;AAAA;AAIrD,eAAsB,4BAA4B,CAAC,OAK9B;AAAA,EACnB,MAAM,UAAU,MAAM,IAAI;AAAA,EAC1B,IACE,CAAC,MAAM,UAAU,cACjB,QAAQ,SAAS,YACjB,CAAC,MAAM,UAAU,YAAY,KAC3B,CAAC,WACC,OAAO,aAAa,MAAM,IAAI,YAC9B,OAAO,QAAQ,iBAAiB,QAAQ,gBACxC,OAAO,QAAQ,cAAc,QAAQ,SACzC,GACA;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,OAAO,6BAA6B;AAAA,IAClC,SAAS,MAAM;AAAA,IACf,WAAW,MAAM;AAAA,IACjB,KAAK,MAAM;AAAA,IACX,SAAS,MAAM,UAAU,WAAW;AAAA,EACtC,CAAC;AAAA;AAIH,eAAsB,4BAA4B,CAAC,OAK9B;AAAA,EACnB,MAAM,SAAS,MAAM,oCAAoC;AAAA,IACvD,YAAY,MAAM,QAAQ;AAAA,IAC1B,WAAW,MAAM;AAAA,IACjB,aAAa,MAAM,IAAI;AAAA,IACvB,WAAW,EAAE,MAAM,UAAU,IAAI,MAAM,IAAI,UAAU,OAAO,MAAM,IAAI,GAAG;AAAA,EAC3E,CAAC;AAAA,EACD,MAAM,gBAAgB,QAAQ;AAAA,EAC9B,OACE,eAAe,SAAS,eACxB,cAAc,WAAW,SAAS,WAClC,cAAc,WAAW,YAAY,MAAM;AAAA;;;AC5IxC,SAAS,YAAY,CAC1B,aACA,UACA,SACoB;AAAA,EACpB,IAAI,UAA8B;AAAA,EAClC,OAAO,YAAY,aAAa,CAAC,QAAQ,OAAO;AAAA,IAAG,UAAU,SAAS,OAAO;AAAA,EAC7E,OAAO;AAAA;;;ACTT,eAAsB,qBAAqB,CAAC,OAIQ;AAAA,EAClD,IAAI,MAAM,aAAa,WAAW;AAAA,IAAG,OAAO,CAAC;AAAA,EAC7C,IAAI,CAAC,MAAM;AAAA,IAAS,OAAO,MAAM,aAAa,IAAI,MAAG;AAAA,MAAG;AAAA,KAAS;AAAA,EACjE,OAAO,MAAM,QAAQ,oBAAoB;AAAA,IACvC,WAAW,MAAM;AAAA,IACjB,cAAc,MAAM;AAAA,EACtB,CAAC;AAAA;AAII,SAAS,gBAAgB,CAAC,WAAgE;AAAA,EAC/F,MAAM,UAAU,IAAI;AAAA,EACpB,IAAI,iBAAiB;AAAA,EACrB,IAAI,uBAAuB;AAAA,EAC3B,IAAI,oBAAoB;AAAA,EAExB,WAAW,WAAW,WAAW;AAAA,IAC/B,WAAW,SAAS,QAAQ,SAAS;AAAA,MACnC,QAAQ,IAAI,MAAM,WAAW,QAAQ,IAAI,MAAM,QAAQ,KAAK,MAAM,OAAO,MAAM,WAAW,CAAC;AAAA,IAC7F;AAAA,IACA,kBAAkB,QAAQ;AAAA,IAC1B,wBAAwB,QAAQ;AAAA,IAChC,qBAAqB,QAAQ;AAAA,EAC/B;AAAA,EAEA,IAAI,iBAAiB,uBAAuB,sBAAsB,GAAG;AAAA,IACnE;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,SAAS,CAAC,GAAG,OAAO,EACjB,KAAK,EAAE,QAAQ,WAAY,OAAO,QAAQ,KAAK,OAAO,QAAQ,IAAI,CAAE,EACpE,IAAI,EAAE,UAAU,aAAa,EAAE,UAAU,aAAa,OAAO,SAAS,EAAE,EAAE;AAAA,IAC7E;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;;;AClBK,IAAM,0BAA0B;AAQvC,IAAM,mBAAmB,+BAA+B;AA0FxD,eAAsB,uBAAuB,CAC3C,SACA,OAOA,KACgC;AAAA,EAChC,QAAQ,MAAM,UAAU;AAAA,EACxB,QAAQ,SAAS,cAAc;AAAA,EAE/B,OAAO,QAAQ,cAAc,MAAM,QAAQ,IAAI;AAAA,IAC7C,QAAQ,WAAW,cAAc;AAAA,MAC/B;AAAA,MACA,SAAS,EAAE,MAAM,MAAM,MAAM,MAAM,IAAI,KAAK,UAAU;AAAA,SACnD,cAAc,KAAK;AAAA,MACtB,OAAO;AAAA,IACT,CAAC;AAAA,IACD,uBAAuB,SAAS,MAAM,MAAM,OAAO,GAAG;AAAA,EACxD,CAAC;AAAA,EACD,MAAM,aAAa,OAAO;AAAA,EAE1B,MAAM,SAAS,CAAC,SACd,WAAW,QAAQ,CAAC,cAClB,UAAU,SAAS,SAAS,eAAe,UAAU,SAAS,SAAS,OACnE,CAAC,UAAU,EAAE,IACb,CAAC,CACP;AAAA,EACF,MAAM,cAAc,WAAW,QAAQ,CAAC,cACtC,UAAU,SAAS,SAAS,UAAU,CAAC,UAAU,SAAS,KAAK,IAAI,CAAC,CACtE;AAAA,EAGA,MAAM,OAAO,IAAI,IAAI,WAAW,IAAI,CAAC,cAAc,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;AAAA,EAC7E,MAAM,YAAY,WAAW,OAAO,CAAC,cACnC,QAAQ,WAAW,IAAI,EAAE,KAAK,CAAC,aAAa,SAAS,SAAS,SAAS,OAAO,CAChF;AAAA,EAEA,OAAO,YAAY,cAAc,WAAW,SAAS,MAAM,QAAQ,IAAI;AAAA,IACrE,QAAQ,YAAY,kBAAkB,EAAE,WAAW,cAAc,OAAO,QAAQ,EAAE,CAAC,KAAK,CAAC;AAAA,IACzF,QAAQ,cAAc,kBAAkB,EAAE,WAAW,cAAc,OAAO,UAAU,EAAE,CAAC,KAAK,CAAC;AAAA,IAC7F,QAAQ,QAAQ,KAAK,SAAS,EAAE,WAAW,KAAK,YAAY,CAAC,KAAK,CAAC;AAAA,IACnE,sBAAsB;AAAA,MACpB,SAAS,QAAQ;AAAA,MACjB;AAAA,MACA,cAAc,UAAU,IAAI,CAAC,cAAc,UAAU,EAAE;AAAA,IACzD,CAAC;AAAA,EACH,CAAC;AAAA,EAGD,MAAM,gBAAgB,IAAI,IACxB,UAAU,QAAQ,CAAC,QACjB,IAAI,SAAS,iBAAiB,CAAC,CAAC,IAAI,aAAa,GAAG,CAAU,IAAI,CAAC,CACrE,CACF;AAAA,EACA,MAAM,WAAW,WAAW,QAAQ,CAAC,QAAS,IAAI,QAAQ,SAAS,WAAW,CAAC,IAAI,OAAO,IAAI,CAAC,CAAE;AAAA,EAEjG,OAAO,SAAS,UAAU,oBAAoB,gBAAgB,MAAM,QAAQ,IAAI;AAAA,IAC9E,QAAQ,QAAQ,QAAQ,SAAS;AAAA,MAC/B;AAAA,MACA,KAAK,CAAC,GAAG,cAAc,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ;AAAA,IAC5D,CAAC,KAAK,CAAC;AAAA,IACP,iBAAiB,QAAQ,cAAc,QAAQ;AAAA,IAC/C,SAAS,SAAS,IAAI,yBAAyB,QAAQ,YAAY,IAAI,IAAI;AAAA,IAC3E,mBAAmB,QAAQ,cAAc,QAAQ,eAAe,UAAU;AAAA,EAC5E,CAAC;AAAA,EAED,MAAM,uBAAuB,IAAI,IAAI,WAAW,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC;AAAA,EACpF,MAAM,iBAAiB,IAAI,IAAI,aAAa,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AAAA,EAChE,MAAM,yBAAyB,IAAI,IAAI,aAAa,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC;AAAA,EACxF,MAAM,aAAa,IAAI,IAAI,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;AAAA,EACvE,MAAM,kBAAkB,kBAAiB,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAAA,EAClF,MAAM,cAAc,YAAY,MAAM,eAAe,WAAW,KAAK;AAAA,EAErE,MAAM,mBAAmB,WAAW,QAAQ,CAAC,cAAuC;AAAA,IAClF,MAAM,KAAK,IAAI,KAAK,UAAU,SAAS;AAAA,IACvC,MAAM,WAAW,UAAU;AAAA,IAC3B,MAAM,YAAY,UAAU;AAAA,IAE5B,IAAI,SAAS,SAAS,eAAe,UAAU,SAAS,oBAAoB;AAAA,MAC1E,IAAI,SAAS,SAAS,UAAU;AAAA,QAC9B,MAAM,MAAM,qBAAqB,IAAI,UAAU,EAAE;AAAA,QACjD,MAAM,UAAU,KAAK,QAAQ,SAAS,WAAW,IAAI,UAAU;AAAA,QAC/D,MAAM,SACJ,WAAW,SAAS,IAAI,gBAAe,QAAQ,cAAc,QAAQ,SAAS,CAAC,IAC3E,EAAE,cAAc,QAAQ,cAAc,WAAW,QAAQ,UAAU,IACnE;AAAA,QAIN,MAAM,aACJ,QAAQ,aACR,eAAe,IAAI,IAAI,EAAE,MACxB,YAAY,aAAa,CAAC,mBAAmB,IAAI,QAAQ,YAAY;AAAA,QAExE,OAAO;AAAA,UACL;AAAA,YACE,MAAM;AAAA,YACN;AAAA,YACA,aAAa,UAAU;AAAA,YACvB,UAAU,UAAU,UAAU;AAAA,YAC9B,OAAO,SAAS;AAAA,YAChB,QAAQ,KAAK,UAAU;AAAA,YACvB;AAAA,eACI,WAAW,YAAY,CAAC,IAAI,EAAE,OAAO;AAAA,UAC3C;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI,SAAS,SAAS,YAAY;AAAA,QAChC,MAAM,MAAM,uBAAuB,IAAI,UAAU,EAAE;AAAA,QACnD,OAAO;AAAA,UACL;AAAA,YACE,MAAM;AAAA,YACN;AAAA,YACA,aAAa,UAAU;AAAA,YACvB,YAAY,UAAU,UAAU;AAAA,YAChC,OAAO,SAAS;AAAA,YAChB,QAAQ,KAAK,UAAU;AAAA,YACvB,YAAY,QAAQ,aAAa,oBAAmB,QAAQ,eAAe,GAAG;AAAA,UAChF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM,eAAe,cAAc,IAAI,UAAU,EAAE;AAAA,IACnD,IAAI,cAAc;AAAA,MAChB,MAAM,OAAO,YAAY,IAAI,UAAU,EAAE;AAAA,MACzC,MAAM,SAAS,WAAW,IAAI,aAAa,QAAQ;AAAA,MACnD,MAAM,QAAQ,QAAQ;AAAA,MAEtB,OAAO;AAAA,QACL;AAAA,UACE,MAAM;AAAA,UACN;AAAA,UACA,aAAa,UAAU;AAAA,UACvB,OAAO,aAAa;AAAA,UACpB,UAAU,aAAa;AAAA,aACnB,mBAAmB,SAAS,EAAE,QAAQ,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;AAAA,UACpF,QAAQ,aAAa;AAAA,UACrB,UAAU,QAAQ,gBAAgB;AAAA,aAC9B,SAAS,YAAY,CAAC,IAAI,EAAE,KAAK;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO,CAAC;AAAA,GACT;AAAA,EAGD,MAAM,WAAW;AAAA,IACf,GAAG,KAAK,UAAU,IAChB,CAAC,cAAiC;AAAA,MAChC,MAAM;AAAA,MACN,IAAI,IAAI,KAAK,SAAS,UAAU;AAAA,MAChC,UAAU,SAAS;AAAA,MACnB,OAAO,SAAS;AAAA,IAClB,EACF;AAAA,IACA,GAAG,KAAK,aAAa,IACnB,CAAC,iBAA2C;AAAA,MAC1C,MAAM;AAAA,MACN,IAAI,IAAI,KAAK,YAAY,UAAU;AAAA,MACnC,UAAU,YAAY;AAAA,MACtB,MAAM,YAAY;AAAA,MAClB,OAAO,YAAY;AAAA,IACrB,EACF;AAAA,EACF,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,WAAW,MAAM,QAAQ;AAAA,EAItD,MAAM,UAAU;AAAA,IACd,KAAK,UAAU,SAAS,GAAG,EAAE,GAAG,KAAK;AAAA,IACrC,OAAO,YACH,WAAW,OAAO,CAAC,cAAc,UAAU,OAAO,SAAS,WAAW,EAAE,GAAG,EAAE,GAAG,YAChF;AAAA,EACN,EAAE,QAAQ,CAAC,OAAQ,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAE;AAAA,EAC1D,MAAM,SAAS,QAAQ,SAAS,IAAI,KAAK,IAAI,GAAG,OAAO,IAAI,OAAO;AAAA,EAElE,MAAM,UAAU,CAAC,GAAG,UAAU,GAAG,gBAAgB,EAC9C,OAAO,CAAC,UAAU,MAAM,GAAG,QAAQ,KAAK,MAAM,EAC9C,KAAK,CAAC,MAAM,UAAU,KAAK,GAAG,QAAQ,IAAI,MAAM,GAAG,QAAQ,CAAC;AAAA,EAE/D,OAAO;AAAA,IACL;AAAA,OACI,eAAe,YAAY,CAAC,IAAI,EAAE,WAAW;AAAA,IACjD;AAAA,IACA,WAAW,KAAK,WAAW,OAAO;AAAA,EACpC;AAAA;AAOF,SAAS,aAAa,CAAC,OAAkE;AAAA,EACvF,MAAM,YAAY,MAAM,UAAU,QAAQ;AAAA,EAC1C,OAAO;AAAA,IACL,MAAM,IAAI,KAAK,YAAY,gBAAgB;AAAA,IAC3C,IAAI,IAAI,KACN,KAAK,IACH,MAAM,WAAW,QAAQ,IAAI,kBAC7B,YAAY,yBAAwB,gBACtC,CACF;AAAA,EACF;AAAA;AAIF,SAAS,OAAO,CACd,WACA,MAC4B;AAAA,EAC5B,MAAM,QAA2B,CAAC;AAAA,EAClC,IAAI,UAAuC;AAAA,EAE3C,OAAO,SAAS;AAAA,IACd,MAAM,KAAK,OAAO;AAAA,IAClB,UAAU,QAAQ,OAAO,SAAS,cAAc,KAAK,IAAI,QAAQ,OAAO,WAAW,IAAI;AAAA,EACzF;AAAA,EACA,OAAO;AAAA;AAIT,SAAS,WAAW,CAClB,MACA,eACA,WACA,OACoC;AAAA,EACpC,MAAM,UAAU,IAAI;AAAA,EAEpB,UAAU,QAAQ,CAAC,WAAW,UAAU;AAAA,IACtC,MAAM,OAAO,MAAM;AAAA,IACnB,MAAM,QAAQ,aACZ,UAAU,IACV,CAAC,OAAO;AAAA,MACN,MAAM,SAAS,KAAK,IAAI,EAAE,GAAG;AAAA,MAC7B,OAAO,QAAQ,SAAS,cAAc,OAAO,cAAc;AAAA,OAE7D,CAAC,OAAO,cAAc,IAAI,EAAE,CAC9B;AAAA,IACA,IAAI,CAAC,QAAQ,CAAC,OAAO;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,MAAM,YAAY,QAAQ,IAAI,KAAK,KAAK,CAAC;AAAA,IACzC,UAAU,KAAK,IAAI;AAAA,IACnB,QAAQ,IAAI,OAAO,SAAS;AAAA,GAC7B;AAAA,EAED,OAAO,IAAI,IACT,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,OAAO,eAAe;AAAA,IAC3C,MAAM,QAAQ,iBAAiB,SAAS;AAAA,IACxC,OAAO,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAU,IAAI,CAAC;AAAA,GAC7C,CACH;AAAA;;;AC9TF,IAAM,2BAA2B;AAE1B,SAAS,qBAAqB,CACnC,SACA,SACiB;AAAA,EACjB,MAAM,mBAAmB,MAAM,kBAAiB,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAAA,EAErF,OAAO;AAAA,SACC,KAAI,CAAC,OAAO;AAAA,MAChB,iBAAiB;AAAA,MACjB,MAAM,OAAO,MAAM,QAAQ,KAAK,KAAK;AAAA,MACrC,OAAO,KAAK,MAAM,QAAQ,MAAM,iBAAiB,SAAS,KAAK,MAAM,EAAE;AAAA;AAAA,SAGnE,MAAK,CAAC,OAAO;AAAA,MACjB,iBAAiB;AAAA,MACjB,MAAM,OAAO,MAAM,QAAQ,MAAM,KAAK;AAAA,MAGtC,MAAM,QAAQ,MAAM,YAAY,KAAK,OAAO,0BAA0B,OAAO,SAAS;AAAA,QACpF,MAAM,UAAU,MAAM,QAAQ,QAAQ,MAAM,MAAM,QAAQ;AAAA,UACxD,WAAW,QAAQ;AAAA,UACnB,IAAI,KAAK;AAAA,QACX,CAAC;AAAA,QACD,OAAO,SAAS,cAAc,KAAK,MAAM,aAAa,QAAQ,YAAY,IAAI;AAAA,OAC/E;AAAA,MAED,OAAO,EAAE,OAAO,SAAS,KAAK,QAAQ;AAAA;AAAA,SAGlC,UAAS,CAAC,OAAO;AAAA,MACrB,iBAAiB;AAAA,MACjB,OAAO,QAAQ,UAAU,KAAK;AAAA;AAAA,SAG1B,SAAQ,CAAC,OAAO;AAAA,MACpB,iBAAiB;AAAA,MACjB,OAAO,QAAQ,SAAS,KAAK;AAAA;AAAA,SAGzB,SAAQ,CAAC,SAAS;AAAA,MACtB,iBAAiB;AAAA,MACjB,MAAM,OAAO,MAAM,QAAQ,gBAAgB,EAAE,IAAI,SAAS,OAAO,wBAAwB,CAAC;AAAA,MAC1F,IAAI,CAAC,MAAM;AAAA,QACT,OAAO;AAAA,MACT;AAAA,MAEA,MAAM,SAAS,MAAM,gBAAgB,SAAS,KAAK,KAAK;AAAA,MACxD,OAAO,wBAAwB,SAAS,KAAK,QAAQ,KAAK,GAAG,IAAI,IAAM;AAAA;AAAA,SAGnE,YAAW,CAAC,OAAO;AAAA,MACvB,iBAAiB;AAAA,MACjB,OAAO,wBAAwB,SAAS,SAAS,OAAO,IAAI,IAAM;AAAA;AAAA,EAEtE;AAAA;AAGK,SAAS,4BAA4B,CAC1C,SACA,SACwB;AAAA,EACxB,OAAO;AAAA,IACL,cAAc,GAAG;AAAA,MACf,cAAc,OAAO;AAAA,MACrB,OAAO,QAAQ;AAAA;AAAA,SAGX,QAAO,CAAC,QAAQ;AAAA,MACpB,OAAO,QAAQ,QAAQ,cAAc,OAAO,GAAG,MAAM;AAAA;AAAA,EAEzD;AAAA;AAGF,IAAM,qBAAoC,OAAO,sBAAsB;AAMhE,SAAS,8BAA8B,CAC5C,OACA,SACM;AAAA,EACN,OAAO,eAAe,OAAO,oBAAoB;AAAA,IAC/C,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,UAAU;AAAA,EACZ,CAAC;AAAA;AAII,SAAS,0BAAyB,CAAC,OAAuC;AAAA,EAC/E,MAAM,UAAW,MAA+B;AAAA,EAChD,IAAI,CAAC,SAAS;AAAA,IACZ,MAAM,IAAI,MAAM,+DAA+D;AAAA,EACjF;AAAA,EACA,OAAO;AAAA;AAOT,SAAS,aAAa,CAAC,SAA6C;AAAA,EAClE,MAAM,MAAM,oBAAoB,QAAQ,oBAAoB;AAAA,EAE5D,IACE,IAAI,SAAS,eACb,IAAI,UAAU,SAAS,UACvB,IAAI,YAAY,SAAS,WACzB;AAAA,IACA,OAAO;AAAA,MACL,OAAO,EAAE,MAAM,QAAQ,QAAQ,IAAI,UAAU,GAAG;AAAA,MAChD,WAAW,IAAI,WAAW;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,IAAI,IAAI,SAAS,aAAa;AAAA,IAC5B,OAAO;AAAA,MACL,OAAO,EAAE,MAAM,SAAS,SAAS,IAAI,WAAW,QAAQ;AAAA,MACxD,WAAW,IAAI,WAAW;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,MAAM,IAAI,oBACR,oBACA,6FACF;AAAA;AAGF,eAAe,WAAiB,CAC9B,OACA,MACA,KACc;AAAA,EACd,MAAM,UAAe,CAAC;AAAA,EACtB,SAAS,QAAQ,EAAG,QAAQ,MAAM,QAAQ,SAAS,MAAM;AAAA,IACvD,MAAM,QAAQ,MAAM,QAAQ,IAAI,MAAM,MAAM,OAAO,QAAQ,IAAI,EAAE,IAAI,GAAG,CAAC;AAAA,IACzE,QAAQ,KAAK,GAAG,KAAK;AAAA,EACvB;AAAA,EACA,OAAO;AAAA;;;ACtMF,MAAM,sBAAsB;AAAA,EAKd;AAAA,EACA;AAAA,EALX;AAAA,EACA;AAAA,EAER,WAAW,CACQ,SACA,WACjB;AAAA,IAFiB;AAAA,IACA;AAAA;AAAA,EAGnB,IAAI,CAAC,OAAoC;AAAA,IACvC,IAAI,KAAK;AAAA,MAAS,MAAM,IAAI,MAAM,kDAAkD;AAAA,IACpF,KAAK,UAAU,KAAK,MAAM;AAAA;AAAA,EAG5B,MAAM,CAAC,QAAmC;AAAA,IACxC,MAAM,UAAU,KAAK,eAAe;AAAA,IACpC,OAAO,SAAS,YAAY,IAAI,CAAC,QAAQ,QAAQ,MAAM,CAAC,IAAI,QAAQ;AAAA;AAAA,OAGhE,mBAAkB,CAAC,OAA2C;AAAA,IAClE,MAAM,YAAY,KAAK,eAAe,EAAE;AAAA,IACxC,IAAI;AAAA,MAAW,MAAM,UAAU,KAAK;AAAA,IAC/B;AAAA,YAAM,MAAM;AAAA;AAAA,EAGnB,UAAU,GAAiC;AAAA,IACzC,QAAQ,eAAe,KAAK,eAAe;AAAA,IAC3C,KAAK,aAAa,aAAa,QAAQ,QAAQ,UAAU,IAAI,KAAK,eAAe;AAAA,IACjF,OAAO,KAAK;AAAA;AAAA,EAGN,cAAc,GAA0B;AAAA,IAC9C,IAAI,CAAC,KAAK,SAAS;AAAA,MACjB,MAAM,IAAI,MACR,+EACF;AAAA,IACF;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,OAGA,eAAc,GAAiC;AAAA,IAC3D,MAAM,UAAU,KAAK;AAAA,IACrB,MAAM,YAAY,KAAK;AAAA,IACvB,QAAQ,YAAY,KAAK,eAAe;AAAA,IACxC,MAAM,UAAU;AAAA,SACX,8BAA8B,QAAQ,OAAO;AAAA,MAChD,aAAa,QAAQ,QAAQ,YAAY,KAAK,QAAQ,OAAO;AAAA,IAC/D;AAAA,IACA,QAAQ,sBAAsB,MAAM,uBAClC,QAAQ,QAAQ,YAChB,gCAAgC;AAAA,MAC9B;AAAA,MACA,sBAAsB,QAAQ;AAAA,IAChC,CAAC,CACH;AAAA,IACA,OAAO,IAAI,qBAAoB;AAAA,MAC7B;AAAA,MACA,WAAW,QAAQ;AAAA,MACnB,aAAa,UAAU;AAAA,MACvB;AAAA,MACA;AAAA,MACA,QAAQ,kCAAiC;AAAA,QACvC;AAAA,QACA,WAAW,QAAQ;AAAA,QACnB,aAAa,UAAU;AAAA,QACvB;AAAA,MACF,CAAC;AAAA,MACD,oBAAoB,CAAC,UAAU,4BAA2B,QAAQ,OAAO,QAAQ,KAAK;AAAA,IACxF,CAAC;AAAA;AAEL;",
|
|
17
|
+
"debugId": "249C9537FC3C865364756E2164756E21",
|
|
18
|
+
"names": []
|
|
19
|
+
}
|
|
@@ -4,8 +4,8 @@ import { AsyncLocalStorage } from "async_hooks";
|
|
|
4
4
|
|
|
5
5
|
// src/storage/objects/guard.ts
|
|
6
6
|
function requireObjectReadScopeFactory(storage) {
|
|
7
|
-
if (typeof storage.createSelectedReadScope !== "function") {
|
|
8
|
-
throw new Error("[Sixb] Object storage provider must implement ObjectReadScopeFactory to create selected object readers.");
|
|
7
|
+
if (typeof storage.createSelectedReadScope !== "function" || typeof storage.createConditionalReadScope !== "function") {
|
|
8
|
+
throw new Error("[Sixb] Object storage provider must implement ObjectReadScopeFactory to create selected and conditional object readers.");
|
|
9
9
|
}
|
|
10
10
|
return storage;
|
|
11
11
|
}
|
|
@@ -16,6 +16,7 @@ function createGuardedObjectReadStorage(reader, guard) {
|
|
|
16
16
|
return reader.queryCapabilities();
|
|
17
17
|
},
|
|
18
18
|
getByPrimaryId: (input) => guard.run(() => reader.getByPrimaryId(input)),
|
|
19
|
+
getByUniqueValue: (input) => guard.run(() => reader.getByUniqueValue(input)),
|
|
19
20
|
selectsObjectProperties: (input) => guard.run(() => reader.selectsObjectProperties(input)),
|
|
20
21
|
listLinks: (input) => guard.run(() => reader.listLinks(input)),
|
|
21
22
|
getByPrimaryIdBatch: (input) => guard.run(() => reader.getByPrimaryIdBatch(input)),
|
|
@@ -201,7 +202,10 @@ function createAgentOperationScope2(target, scope) {
|
|
|
201
202
|
threads: createOperationScopedFacade2(target.threads, scope),
|
|
202
203
|
runs: createOperationScopedFacade2(target.runs, scope),
|
|
203
204
|
messages: createOperationScopedFacade2(target.messages, scope),
|
|
204
|
-
checkpoints: createOperationScopedFacade2(target.checkpoints, scope)
|
|
205
|
+
checkpoints: createOperationScopedFacade2(target.checkpoints, scope),
|
|
206
|
+
memory: createOperationScopedFacade2(target.memory, scope),
|
|
207
|
+
approvals: createOperationScopedFacade2(target.approvals, scope),
|
|
208
|
+
approvalModes: createOperationScopedFacade2(target.approvalModes, scope)
|
|
205
209
|
});
|
|
206
210
|
}
|
|
207
211
|
function createOntologyOperationScope2(target, scope) {
|
|
@@ -211,6 +215,7 @@ function createOntologyOperationScope2(target, scope) {
|
|
|
211
215
|
materializations: createOperationScopedFacade2(target.materializations, scope),
|
|
212
216
|
replacementPlans: createOperationScopedFacade2(target.replacementPlans, scope),
|
|
213
217
|
outbox: createOperationScopedFacade2(target.outbox, scope),
|
|
218
|
+
uniqueValues: createOperationScopedFacade2(target.uniqueValues, scope),
|
|
214
219
|
...target.vectors ? { vectors: createOperationScopedFacade2(target.vectors, scope) } : {}
|
|
215
220
|
});
|
|
216
221
|
}
|
|
@@ -220,6 +225,10 @@ function createObjectOperationScope2(target, scope) {
|
|
|
220
225
|
createSelectedReadScope: (params) => {
|
|
221
226
|
scope.assertAvailable();
|
|
222
227
|
return createGuardedObjectReadStorage(factory.createSelectedReadScope(params), scope);
|
|
228
|
+
},
|
|
229
|
+
createConditionalReadScope: (params) => {
|
|
230
|
+
scope.assertAvailable();
|
|
231
|
+
return createGuardedObjectReadStorage(factory.createConditionalReadScope(params), scope);
|
|
223
232
|
}
|
|
224
233
|
});
|
|
225
234
|
}
|
|
@@ -238,4 +247,4 @@ function isAsyncGeneratorFunction(value) {
|
|
|
238
247
|
|
|
239
248
|
export { createStorageOperationScope2, createOperationScopedFacade2, decorateOperationScopedMethodForTesting2, createAuthOperationScope2, createAgentOperationScope2, createOntologyOperationScope2, createObjectOperationScope2, createWorkflowRunOperationScope2 };
|
|
240
249
|
|
|
241
|
-
//# debugId=
|
|
250
|
+
//# debugId=B768222FF5DAE8C564756E2164756E21
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/storage/operation-scope.ts", "../src/storage/objects/guard.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { AsyncLocalStorage } from \"node:async_hooks\"\nimport type { AgentStorage } from \"./agents\"\nimport type { AuthStorage } from \"./auth\"\nimport type { ObjectStorage } from \"./objects\"\nimport { createGuardedObjectReadStorage, requireObjectReadScopeFactory } from \"./objects/guard\"\nimport type { OntologyStorage } from \"./ontology\"\nimport type { WorkflowRunStorage } from \"./workflow-runs\"\n\nexport type StorageOperationRunner = <TResult>(\n run: () => Promise<TResult> | TResult\n) => Promise<TResult>\n\n/** Provider-owned execution boundary for root storage operations. */\nexport interface StorageOperationScope {\n assertAvailable(): void\n run<TResult>(operation: () => Promise<TResult> | TResult): Promise<TResult>\n}\n\nexport function createStorageOperationScope(\n run: StorageOperationRunner,\n assertAvailable: () => void = () => undefined\n): StorageOperationScope {\n const executions = new AsyncLocalStorage<{ active: boolean }>()\n return {\n assertAvailable,\n async run(operation) {\n const inherited = executions.getStore()\n if (inherited?.active) {\n assertAvailable()\n return operation()\n }\n\n const execution = { active: true }\n try {\n return await executions.run(execution, () => run(operation))\n } finally {\n execution.active = false\n }\n },\n }\n}\n\nconst operationScopeTargets = new WeakMap<object, object>()\n\n/**\n * Give every async operation exposed by a store one provider-owned execution scope.\n *\n * Storage contracts use `async` methods for I/O and reserve synchronous methods for local\n * capabilities such as `queryCapabilities()`. Discovering the former from their implementation\n * removes the second, manually synchronized method registry that previously coupled every storage\n * primitive to the SQLite/InMemory lock.\n */\nexport function createOperationScopedFacade<T extends object>(\n target: T,\n scope: StorageOperationScope,\n propertyOverrides: Partial<T> = {}\n): T {\n const methodKinds = discoverMethodKinds(target)\n const overrideKeys = new Set(Reflect.ownKeys(propertyOverrides))\n const methodCache = new Map<\n PropertyKey,\n { implementation: (...args: unknown[]) => unknown; exposed: (...args: unknown[]) => unknown }\n >()\n\n const facade = new Proxy(target, {\n get(current, property) {\n if (overrideKeys.has(property)) {\n return Reflect.get(propertyOverrides, property, propertyOverrides)\n }\n\n const value = Reflect.get(current, property, current)\n const kind = methodKinds.get(property)\n if (!kind || typeof value !== \"function\") return value\n const implementation = value as (...args: unknown[]) => unknown\n\n const cached = methodCache.get(property)\n if (cached?.implementation === implementation) return cached.exposed\n\n const exposed = scopeMethod(implementation, kind, current, scope)\n methodCache.set(property, { implementation, exposed })\n return exposed\n },\n set(current, property, value) {\n if (overrideKeys.has(property)) return false\n return Reflect.set(current, property, value, current)\n },\n defineProperty(current, property, attributes) {\n if (overrideKeys.has(property)) return false\n return Reflect.defineProperty(current, property, attributes)\n },\n deleteProperty(current, property) {\n if (overrideKeys.has(property)) return false\n return Reflect.deleteProperty(current, property)\n },\n })\n operationScopeTargets.set(facade, target)\n return facade\n}\n\ntype StorageMethod = (...args: never[]) => unknown\ntype StorageMethodKey<T> = {\n [TKey in keyof T]-?: T[TKey] extends StorageMethod ? TKey : never\n}[keyof T]\n\n/** Replace a provider method behind its scoped facade without exposing the raw provider. */\nexport function decorateOperationScopedMethodForTesting<\n T extends object,\n TKey extends StorageMethodKey<T>,\n>(\n facade: T,\n property: TKey,\n decorate: (implementation: Extract<T[TKey], StorageMethod>) => Extract<T[TKey], StorageMethod>\n): () => void {\n const target = operationScopeTargets.get(facade)\n if (!target) throw new Error(\"[Sixb] Expected an operation-scoped storage facade.\")\n\n const previousDescriptor = Reflect.getOwnPropertyDescriptor(target, property)\n const implementation = Reflect.get(target, property, target)\n if (typeof implementation !== \"function\") {\n throw new Error(`[Sixb] Storage property '${String(property)}' is not a method.`)\n }\n\n const boundImplementation = ((...args: never[]) =>\n Reflect.apply(implementation, target, args)) as Extract<T[TKey], StorageMethod>\n const decorated = decorate(boundImplementation)\n Reflect.defineProperty(target, property, {\n configurable: true,\n enumerable: previousDescriptor?.enumerable ?? false,\n writable: true,\n value: decorated,\n })\n\n return () => {\n if (previousDescriptor) {\n Reflect.defineProperty(target, property, previousDescriptor)\n } else {\n Reflect.deleteProperty(target, property)\n }\n }\n}\n\ntype StorageMethodKind = \"async\" | \"async-generator\" | \"sync\"\n\nfunction discoverMethodKinds(target: object): ReadonlyMap<PropertyKey, StorageMethodKind> {\n const methodKeys = new Set<PropertyKey>()\n for (\n let current: object | null = target;\n current && current !== Object.prototype;\n current = Object.getPrototypeOf(current)\n ) {\n for (const property of Reflect.ownKeys(current)) {\n if (property !== \"constructor\") methodKeys.add(property)\n }\n }\n\n const methodKinds = new Map<PropertyKey, StorageMethodKind>()\n for (const property of methodKeys) {\n const implementation = Reflect.get(target, property, target)\n if (typeof implementation !== \"function\") continue\n methodKinds.set(property, methodKind(implementation))\n }\n return methodKinds\n}\n\nfunction methodKind(implementation: (...args: unknown[]) => unknown): StorageMethodKind {\n if (isAsyncFunction(implementation)) return \"async\"\n if (isAsyncGeneratorFunction(implementation)) return \"async-generator\"\n return \"sync\"\n}\n\nfunction scopeMethod(\n implementation: (...args: unknown[]) => unknown,\n kind: StorageMethodKind,\n target: object,\n scope: StorageOperationScope\n): (...args: unknown[]) => unknown {\n if (kind === \"async\") {\n return (...args: unknown[]) => scope.run(() => Reflect.apply(implementation, target, args))\n }\n\n if (kind === \"async-generator\") {\n return (...args: unknown[]) => {\n scope.assertAvailable()\n return scopeSteps(\n Reflect.apply(implementation, target, args) as AsyncIterable<unknown>,\n scope\n )\n }\n }\n\n return implementation.bind(target)\n}\n\n/**\n * Each step of a stream runs in its own operation scope, released between steps: a page holds the\n * provider's lock while it reads, never while its consumer works on it.\n */\nfunction scopeSteps<T>(\n stream: AsyncIterable<T>,\n scope: StorageOperationScope\n): AsyncIterableIterator<T> {\n let iterator: AsyncIterator<T> | undefined\n const steps = () => {\n iterator ??= stream[Symbol.asyncIterator]()\n return iterator\n }\n const scoped: AsyncIterableIterator<T> = {\n next: (...args) => scope.run(() => steps().next(...args)),\n return: (value) =>\n scope.run(async () => (await steps().return?.(value)) ?? { done: true, value }),\n throw: (error) =>\n scope.run(async () => {\n const current = steps()\n if (!current.throw) throw error\n return current.throw(error)\n }),\n [Symbol.asyncIterator]: () => scoped,\n }\n return scoped\n}\n\nexport function createAuthOperationScope<T extends AuthStorage>(\n target: T,\n scope: StorageOperationScope\n): T {\n return createOperationScopedFacade<AuthStorage>(target, scope, {\n users: createOperationScopedFacade(target.users, scope),\n identities: createOperationScopedFacade(target.identities, scope),\n serviceAccounts: createOperationScopedFacade(target.serviceAccounts, scope),\n serviceAccountGroupMemberships: createOperationScopedFacade(\n target.serviceAccountGroupMemberships,\n scope\n ),\n sessions: createOperationScopedFacade(target.sessions, scope),\n accessTokens: createOperationScopedFacade(target.accessTokens, scope),\n invitations: createOperationScopedFacade(target.invitations, scope),\n groupMemberships: createOperationScopedFacade(target.groupMemberships, scope),\n magicLinks: createOperationScopedFacade(target.magicLinks, scope),\n oidcAuthorizationAttempts: createOperationScopedFacade(target.oidcAuthorizationAttempts, scope),\n deviceAuthorizations: createOperationScopedFacade(target.deviceAuthorizations, scope),\n }) as T\n}\n\nexport function createAgentOperationScope<T extends AgentStorage>(\n target: T,\n scope: StorageOperationScope\n): T {\n return createOperationScopedFacade<AgentStorage>(target, scope, {\n threads: createOperationScopedFacade(target.threads, scope),\n runs: createOperationScopedFacade(target.runs, scope),\n messages: createOperationScopedFacade(target.messages, scope),\n checkpoints: createOperationScopedFacade(target.checkpoints, scope),\n memory: createOperationScopedFacade(target.memory, scope),\n approvals: createOperationScopedFacade(target.approvals, scope),\n approvalModes: createOperationScopedFacade(target.approvalModes, scope),\n }) as T\n}\n\nexport function createOntologyOperationScope<T extends OntologyStorage>(\n target: T,\n scope: StorageOperationScope\n): T {\n return createOperationScopedFacade<OntologyStorage>(target, scope, {\n commits: createOperationScopedFacade(target.commits, scope),\n sources: createOperationScopedFacade(target.sources, scope),\n materializations: createOperationScopedFacade(target.materializations, scope),\n replacementPlans: createOperationScopedFacade(target.replacementPlans, scope),\n outbox: createOperationScopedFacade(target.outbox, scope),\n uniqueValues: createOperationScopedFacade(target.uniqueValues, scope),\n ...(target.vectors ? { vectors: createOperationScopedFacade(target.vectors, scope) } : {}),\n }) as T\n}\n\n/** Keep synchronously created scoped readers inside the provider's root operation scope. */\nexport function createObjectOperationScope<T extends ObjectStorage>(\n target: T,\n scope: StorageOperationScope\n): T {\n const factory = requireObjectReadScopeFactory(target)\n return createOperationScopedFacade<ObjectStorage>(target, scope, {\n createSelectedReadScope: (params) => {\n scope.assertAvailable()\n return createGuardedObjectReadStorage(factory.createSelectedReadScope(params), scope)\n },\n createConditionalReadScope: (params) => {\n scope.assertAvailable()\n return createGuardedObjectReadStorage(factory.createConditionalReadScope(params), scope)\n },\n }) as T\n}\n\nexport function createWorkflowRunOperationScope<T extends WorkflowRunStorage>(\n target: T,\n scope: StorageOperationScope\n): T {\n return createOperationScopedFacade<WorkflowRunStorage>(target, scope, {\n nodes: createOperationScopedFacade(target.nodes, scope),\n agentNodes: createOperationScopedFacade(target.agentNodes, scope),\n }) as T\n}\n\nfunction isAsyncFunction(value: unknown): value is (...args: unknown[]) => Promise<unknown> {\n return typeof value === \"function\" && value.constructor.name === \"AsyncFunction\"\n}\n\nfunction isAsyncGeneratorFunction(value: unknown): boolean {\n return typeof value === \"function\" && value.constructor.name === \"AsyncGeneratorFunction\"\n}\n",
|
|
6
|
+
"import type { ObjectReadScopeFactory, ObjectReadStorage, ObjectStorage } from \"./types\"\n\nexport interface ObjectReadStorageCallGuard {\n assertAvailable(): void\n run<TResult>(operation: () => Promise<TResult>): Promise<TResult>\n}\n\n/** Validate the required runtime capability before any facade can expose broad object reads. */\nexport function requireObjectReadScopeFactory(storage: ObjectStorage): ObjectReadScopeFactory {\n if (\n typeof storage.createSelectedReadScope !== \"function\" ||\n typeof storage.createConditionalReadScope !== \"function\"\n ) {\n throw new Error(\n \"[Sixb] Object storage provider must implement ObjectReadScopeFactory to create selected and conditional object readers.\"\n )\n }\n return storage\n}\n\n/**\n * Guard every scoped-reader terminal without proxying the provider reader.\n *\n * First-party providers freeze their readers. A Proxy cannot substitute a frozen own method\n * without violating JavaScript's invariants, so operation and lifetime guards use this explicit\n * facade instead.\n */\nexport function createGuardedObjectReadStorage(\n reader: ObjectReadStorage,\n guard: ObjectReadStorageCallGuard\n): ObjectReadStorage {\n const guarded: ObjectReadStorage = {\n queryCapabilities: () => {\n guard.assertAvailable()\n return reader.queryCapabilities()\n },\n getByPrimaryId: (input) => guard.run(() => reader.getByPrimaryId(input)),\n getByUniqueValue: (input) => guard.run(() => reader.getByUniqueValue(input)),\n selectsObjectProperties: (input) => guard.run(() => reader.selectsObjectProperties(input)),\n listLinks: (input) => guard.run(() => reader.listLinks(input)),\n getByPrimaryIdBatch: (input) => guard.run(() => reader.getByPrimaryIdBatch(input)),\n listLinksBatch: (input) => guard.run(() => reader.listLinksBatch(input)),\n queryLinks: (input) => guard.run(() => reader.queryLinks(input)),\n list: (input) => guard.run(() => reader.list(input)),\n }\n if (reader.queryObjects) {\n guarded.queryObjects = (input) => guard.run(() => reader.queryObjects!(input))\n }\n if (reader.countObjects) {\n guarded.countObjects = (input) => guard.run(() => reader.countObjects!(input))\n }\n if (reader.existsObjects) {\n guarded.existsObjects = (input) => guard.run(() => reader.existsObjects!(input))\n }\n if (reader.facetObjects) {\n guarded.facetObjects = (input) => guard.run(() => reader.facetObjects!(input))\n }\n return Object.freeze(guarded)\n}\n"
|
|
7
|
+
],
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "B768222FF5DAE8C564756E2164756E21",
|
|
10
|
+
"names": []
|
|
11
|
+
}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
datasetSequenceValue,
|
|
4
4
|
assertDatasetDefinition2,
|
|
5
5
|
getDatasetRowValidationFailure
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-c844dkwd.js";
|
|
7
7
|
import {
|
|
8
8
|
versionLineage,
|
|
9
9
|
COMMITTING_PROVIDER,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
encodeDatasetPrimaryKey2,
|
|
16
16
|
getDatasetMergeChangeValidationError2,
|
|
17
17
|
cloneDatasetMergeChange2
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-1t6k1avb.js";
|
|
19
19
|
import {
|
|
20
20
|
LakeStorageError2,
|
|
21
21
|
LakeConcurrencyError2
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
normalizeAiPricingContext2,
|
|
4
4
|
normalizeAiCostEstimate
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-0xmt5p5y.js";
|
|
6
6
|
// src/storage/ai-cost/codec.ts
|
|
7
7
|
function aiModelCallCostDetails2(record) {
|
|
8
8
|
return {
|
|
@@ -69,7 +69,8 @@ function costComponentsFromUnknown(value) {
|
|
|
69
69
|
meter: billableMeter(component.meter),
|
|
70
70
|
quantity: requiredString(component.quantity),
|
|
71
71
|
rateAmountNanosPerMillion: requiredString(component.rateAmountNanosPerMillion),
|
|
72
|
-
chargeAmountNanos: requiredString(component.chargeAmountNanos)
|
|
72
|
+
chargeAmountNanos: requiredString(component.chargeAmountNanos),
|
|
73
|
+
...optionalStringProperty(component, "variant")
|
|
73
74
|
};
|
|
74
75
|
});
|
|
75
76
|
}
|
|
@@ -79,7 +80,7 @@ function metersFromUnknown(value) {
|
|
|
79
80
|
return value.map(billableMeter);
|
|
80
81
|
}
|
|
81
82
|
function billableMeter(value) {
|
|
82
|
-
if (value !== "tokens.input.total" && value !== "tokens.input.uncached" && value !== "tokens.input.cacheRead" && value !== "tokens.input.cacheWrite" && value !== "tokens.input.cacheWrite5m" && value !== "tokens.input.cacheWrite1h" && value !== "tokens.output.total" && value !== "tokens.output.text" && value !== "tokens.output.reasoning" && value !== "audio.input.milliseconds") {
|
|
83
|
+
if (value !== "tokens.input.total" && value !== "tokens.input.uncached" && value !== "tokens.input.cacheRead" && value !== "tokens.input.cacheWrite" && value !== "tokens.input.cacheWrite5m" && value !== "tokens.input.cacheWrite1h" && value !== "tokens.output.total" && value !== "tokens.output.text" && value !== "tokens.output.reasoning" && value !== "tokens.output.image" && value !== "tokens.output.audio" && value !== "audio.input.milliseconds" && value !== "images.output" && value !== "characters.input") {
|
|
83
84
|
throw invalidDetails();
|
|
84
85
|
}
|
|
85
86
|
return value;
|
|
@@ -121,4 +122,4 @@ function invalidDetails() {
|
|
|
121
122
|
}
|
|
122
123
|
export { aiModelCallCostDetails2, parseAiModelCallCostDetails2 };
|
|
123
124
|
|
|
124
|
-
//# debugId=
|
|
125
|
+
//# debugId=B83B27B2F8E32ECC64756E2164756E21
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/storage/ai-cost/codec.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import type {\n AiBillableMeter,\n AiCostEstimate,\n AiModelCallCostRecord,\n AiPriceSource,\n AiPricingContext,\n} from \"./types\"\nimport { normalizeAiCostEstimate, normalizeAiPricingContext } from \"./validation\"\n\nexport interface AiModelCallCostDetails {\n readonly estimate?: AiCostEstimate\n readonly pricingContext: AiPricingContext\n readonly priceSource?: Omit<AiPriceSource, \"observedAt\"> & {\n readonly observedAt: string\n }\n readonly components?: Extract<AiModelCallCostRecord, { status: \"rated\" }>[\"components\"]\n readonly missingMeters?: readonly AiBillableMeter[]\n}\n\nexport function aiModelCallCostDetails(record: AiModelCallCostRecord): AiModelCallCostDetails {\n return {\n ...(record.estimate === undefined ? {} : { estimate: record.estimate }),\n pricingContext: record.pricingContext,\n ...(record.priceSource === undefined\n ? {}\n : {\n priceSource: {\n ...record.priceSource,\n observedAt: record.priceSource.observedAt.toISOString(),\n },\n }),\n ...(record.status === \"rated\" ? { components: record.components } : {}),\n ...(record.status === \"unpriceable\" && record.missingMeters\n ? { missingMeters: record.missingMeters }\n : {}),\n }\n}\n\nexport function parseAiModelCallCostDetails(value: unknown): AiModelCallCostDetails {\n const parsed: unknown = typeof value === \"string\" ? JSON.parse(value) : value\n if (!isRecord(parsed)) throw invalidDetails()\n const priceSource = parsed.priceSource\n if (priceSource !== undefined && !isRecord(priceSource)) throw invalidDetails()\n const components = parsed.components\n const missingMeters = parsed.missingMeters\n return {\n ...(parsed.estimate === undefined\n ? {}\n : { estimate: normalizeAiCostEstimate(parsed.estimate) }),\n pricingContext: pricingContextFromUnknown(parsed.pricingContext),\n ...(priceSource === undefined\n ? {}\n : {\n priceSource: {\n sourceId: requiredString(priceSource.sourceId),\n sourceEntryId: requiredString(priceSource.sourceEntryId),\n sourceVersion: requiredString(priceSource.sourceVersion),\n ...optionalStringProperty(priceSource, \"sourceUrl\"),\n observedAt: requiredString(priceSource.observedAt),\n },\n }),\n ...(components === undefined ? {} : { components: costComponentsFromUnknown(components) }),\n ...(missingMeters === undefined ? {} : { missingMeters: metersFromUnknown(missingMeters) }),\n }\n}\n\nfunction pricingContextFromUnknown(value: unknown): AiPricingContext {\n if (!isRecord(value)) throw invalidDetails()\n return normalizeAiPricingContext({\n ...optionalStringProperty(value, \"serviceTier\"),\n ...optionalBooleanProperty(value, \"batch\"),\n ...optionalStringProperty(value, \"region\"),\n ...optionalStringProperty(value, \"inferenceGeo\"),\n ...optionalStringProperty(value, \"routedProviderId\"),\n ...optionalStringProperty(value, \"routedModelId\"),\n ...optionalStringProperty(value, \"deploymentId\"),\n ...optionalStringProperty(value, \"inferenceProfileId\"),\n ...optionalNumberProperty(value, \"cacheWriteTtlSeconds\"),\n ...optionalStringProperty(value, \"mode\"),\n })\n}\n\nfunction costComponentsFromUnknown(\n value: unknown\n): Extract<AiModelCallCostRecord, { status: \"rated\" }>[\"components\"] {\n if (!Array.isArray(value)) throw invalidDetails()\n return value.map((component) => {\n if (!isRecord(component)) throw invalidDetails()\n return {\n meter: billableMeter(component.meter),\n quantity: requiredString(component.quantity),\n rateAmountNanosPerMillion: requiredString(component.rateAmountNanosPerMillion),\n chargeAmountNanos: requiredString(component.chargeAmountNanos),\n }\n })\n}\n\nfunction metersFromUnknown(value: unknown): readonly AiBillableMeter[] {\n if (!Array.isArray(value)) throw invalidDetails()\n return value.map(billableMeter)\n}\n\nfunction billableMeter(value: unknown): AiBillableMeter {\n if (\n value !== \"tokens.input.total\" &&\n value !== \"tokens.input.uncached\" &&\n value !== \"tokens.input.cacheRead\" &&\n value !== \"tokens.input.cacheWrite\" &&\n value !== \"tokens.input.cacheWrite5m\" &&\n value !== \"tokens.input.cacheWrite1h\" &&\n value !== \"tokens.output.total\" &&\n value !== \"tokens.output.text\" &&\n value !== \"tokens.output.reasoning\" &&\n value !== \"audio.input.milliseconds\"\n ) {\n throw invalidDetails()\n }\n return value\n}\n\nfunction optionalStringProperty(\n value: Record<string, unknown>,\n name: string\n): Record<string, string> {\n const property = value[name]\n if (property === undefined) return {}\n if (typeof property !== \"string\") throw invalidDetails()\n return { [name]: property }\n}\n\nfunction optionalBooleanProperty(\n value: Record<string, unknown>,\n name: string\n): Record<string, boolean> {\n const property = value[name]\n if (property === undefined) return {}\n if (typeof property !== \"boolean\") throw invalidDetails()\n return { [name]: property }\n}\n\nfunction optionalNumberProperty(\n value: Record<string, unknown>,\n name: string\n): Record<string, number> {\n const property = value[name]\n if (property === undefined) return {}\n if (typeof property !== \"number\") throw invalidDetails()\n return { [name]: property }\n}\n\nfunction requiredString(value: unknown): string {\n if (typeof value !== \"string\") throw invalidDetails()\n return value\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n\nfunction invalidDetails(): Error {\n return new Error(\"[Sixb] AI valuation details are invalid.\")\n}\n"
|
|
5
|
+
"import type {\n AiBillableMeter,\n AiCostEstimate,\n AiModelCallCostRecord,\n AiPriceSource,\n AiPricingContext,\n} from \"./types\"\nimport { normalizeAiCostEstimate, normalizeAiPricingContext } from \"./validation\"\n\nexport interface AiModelCallCostDetails {\n readonly estimate?: AiCostEstimate\n readonly pricingContext: AiPricingContext\n readonly priceSource?: Omit<AiPriceSource, \"observedAt\"> & {\n readonly observedAt: string\n }\n readonly components?: Extract<AiModelCallCostRecord, { status: \"rated\" }>[\"components\"]\n readonly missingMeters?: readonly AiBillableMeter[]\n}\n\nexport function aiModelCallCostDetails(record: AiModelCallCostRecord): AiModelCallCostDetails {\n return {\n ...(record.estimate === undefined ? {} : { estimate: record.estimate }),\n pricingContext: record.pricingContext,\n ...(record.priceSource === undefined\n ? {}\n : {\n priceSource: {\n ...record.priceSource,\n observedAt: record.priceSource.observedAt.toISOString(),\n },\n }),\n ...(record.status === \"rated\" ? { components: record.components } : {}),\n ...(record.status === \"unpriceable\" && record.missingMeters\n ? { missingMeters: record.missingMeters }\n : {}),\n }\n}\n\nexport function parseAiModelCallCostDetails(value: unknown): AiModelCallCostDetails {\n const parsed: unknown = typeof value === \"string\" ? JSON.parse(value) : value\n if (!isRecord(parsed)) throw invalidDetails()\n const priceSource = parsed.priceSource\n if (priceSource !== undefined && !isRecord(priceSource)) throw invalidDetails()\n const components = parsed.components\n const missingMeters = parsed.missingMeters\n return {\n ...(parsed.estimate === undefined\n ? {}\n : { estimate: normalizeAiCostEstimate(parsed.estimate) }),\n pricingContext: pricingContextFromUnknown(parsed.pricingContext),\n ...(priceSource === undefined\n ? {}\n : {\n priceSource: {\n sourceId: requiredString(priceSource.sourceId),\n sourceEntryId: requiredString(priceSource.sourceEntryId),\n sourceVersion: requiredString(priceSource.sourceVersion),\n ...optionalStringProperty(priceSource, \"sourceUrl\"),\n observedAt: requiredString(priceSource.observedAt),\n },\n }),\n ...(components === undefined ? {} : { components: costComponentsFromUnknown(components) }),\n ...(missingMeters === undefined ? {} : { missingMeters: metersFromUnknown(missingMeters) }),\n }\n}\n\nfunction pricingContextFromUnknown(value: unknown): AiPricingContext {\n if (!isRecord(value)) throw invalidDetails()\n return normalizeAiPricingContext({\n ...optionalStringProperty(value, \"serviceTier\"),\n ...optionalBooleanProperty(value, \"batch\"),\n ...optionalStringProperty(value, \"region\"),\n ...optionalStringProperty(value, \"inferenceGeo\"),\n ...optionalStringProperty(value, \"routedProviderId\"),\n ...optionalStringProperty(value, \"routedModelId\"),\n ...optionalStringProperty(value, \"deploymentId\"),\n ...optionalStringProperty(value, \"inferenceProfileId\"),\n ...optionalNumberProperty(value, \"cacheWriteTtlSeconds\"),\n ...optionalStringProperty(value, \"mode\"),\n })\n}\n\nfunction costComponentsFromUnknown(\n value: unknown\n): Extract<AiModelCallCostRecord, { status: \"rated\" }>[\"components\"] {\n if (!Array.isArray(value)) throw invalidDetails()\n return value.map((component) => {\n if (!isRecord(component)) throw invalidDetails()\n return {\n meter: billableMeter(component.meter),\n quantity: requiredString(component.quantity),\n rateAmountNanosPerMillion: requiredString(component.rateAmountNanosPerMillion),\n chargeAmountNanos: requiredString(component.chargeAmountNanos),\n ...optionalStringProperty(component, \"variant\"),\n }\n })\n}\n\nfunction metersFromUnknown(value: unknown): readonly AiBillableMeter[] {\n if (!Array.isArray(value)) throw invalidDetails()\n return value.map(billableMeter)\n}\n\nfunction billableMeter(value: unknown): AiBillableMeter {\n if (\n value !== \"tokens.input.total\" &&\n value !== \"tokens.input.uncached\" &&\n value !== \"tokens.input.cacheRead\" &&\n value !== \"tokens.input.cacheWrite\" &&\n value !== \"tokens.input.cacheWrite5m\" &&\n value !== \"tokens.input.cacheWrite1h\" &&\n value !== \"tokens.output.total\" &&\n value !== \"tokens.output.text\" &&\n value !== \"tokens.output.reasoning\" &&\n value !== \"tokens.output.image\" &&\n value !== \"tokens.output.audio\" &&\n value !== \"audio.input.milliseconds\" &&\n value !== \"images.output\" &&\n value !== \"characters.input\"\n ) {\n throw invalidDetails()\n }\n return value\n}\n\nfunction optionalStringProperty(\n value: Record<string, unknown>,\n name: string\n): Record<string, string> {\n const property = value[name]\n if (property === undefined) return {}\n if (typeof property !== \"string\") throw invalidDetails()\n return { [name]: property }\n}\n\nfunction optionalBooleanProperty(\n value: Record<string, unknown>,\n name: string\n): Record<string, boolean> {\n const property = value[name]\n if (property === undefined) return {}\n if (typeof property !== \"boolean\") throw invalidDetails()\n return { [name]: property }\n}\n\nfunction optionalNumberProperty(\n value: Record<string, unknown>,\n name: string\n): Record<string, number> {\n const property = value[name]\n if (property === undefined) return {}\n if (typeof property !== \"number\") throw invalidDetails()\n return { [name]: property }\n}\n\nfunction requiredString(value: unknown): string {\n if (typeof value !== \"string\") throw invalidDetails()\n return value\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n\nfunction invalidDetails(): Error {\n return new Error(\"[Sixb] AI valuation details are invalid.\")\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";;;;;;AAmBO,SAAS,uBAAsB,CAAC,QAAuD;AAAA,EAC5F,OAAO;AAAA,OACD,OAAO,aAAa,YAAY,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,IACrE,gBAAgB,OAAO;AAAA,OACnB,OAAO,gBAAgB,YACvB,CAAC,IACD;AAAA,MACE,aAAa;AAAA,WACR,OAAO;AAAA,QACV,YAAY,OAAO,YAAY,WAAW,YAAY;AAAA,MACxD;AAAA,IACF;AAAA,OACA,OAAO,WAAW,UAAU,EAAE,YAAY,OAAO,WAAW,IAAI,CAAC;AAAA,OACjE,OAAO,WAAW,iBAAiB,OAAO,gBAC1C,EAAE,eAAe,OAAO,cAAc,IACtC,CAAC;AAAA,EACP;AAAA;AAGK,SAAS,4BAA2B,CAAC,OAAwC;AAAA,EAClF,MAAM,SAAkB,OAAO,UAAU,WAAW,KAAK,MAAM,KAAK,IAAI;AAAA,EACxE,IAAI,CAAC,SAAS,MAAM;AAAA,IAAG,MAAM,eAAe;AAAA,EAC5C,MAAM,cAAc,OAAO;AAAA,EAC3B,IAAI,gBAAgB,aAAa,CAAC,SAAS,WAAW;AAAA,IAAG,MAAM,eAAe;AAAA,EAC9E,MAAM,aAAa,OAAO;AAAA,EAC1B,MAAM,gBAAgB,OAAO;AAAA,EAC7B,OAAO;AAAA,OACD,OAAO,aAAa,YACpB,CAAC,IACD,EAAE,UAAU,wBAAwB,OAAO,QAAQ,EAAE;AAAA,IACzD,gBAAgB,0BAA0B,OAAO,cAAc;AAAA,OAC3D,gBAAgB,YAChB,CAAC,IACD;AAAA,MACE,aAAa;AAAA,QACX,UAAU,eAAe,YAAY,QAAQ;AAAA,QAC7C,eAAe,eAAe,YAAY,aAAa;AAAA,QACvD,eAAe,eAAe,YAAY,aAAa;AAAA,WACpD,uBAAuB,aAAa,WAAW;AAAA,QAClD,YAAY,eAAe,YAAY,UAAU;AAAA,MACnD;AAAA,IACF;AAAA,OACA,eAAe,YAAY,CAAC,IAAI,EAAE,YAAY,0BAA0B,UAAU,EAAE;AAAA,OACpF,kBAAkB,YAAY,CAAC,IAAI,EAAE,eAAe,kBAAkB,aAAa,EAAE;AAAA,EAC3F;AAAA;AAGF,SAAS,yBAAyB,CAAC,OAAkC;AAAA,EACnE,IAAI,CAAC,SAAS,KAAK;AAAA,IAAG,MAAM,eAAe;AAAA,EAC3C,OAAO,2BAA0B;AAAA,OAC5B,uBAAuB,OAAO,aAAa;AAAA,OAC3C,wBAAwB,OAAO,OAAO;AAAA,OACtC,uBAAuB,OAAO,QAAQ;AAAA,OACtC,uBAAuB,OAAO,cAAc;AAAA,OAC5C,uBAAuB,OAAO,kBAAkB;AAAA,OAChD,uBAAuB,OAAO,eAAe;AAAA,OAC7C,uBAAuB,OAAO,cAAc;AAAA,OAC5C,uBAAuB,OAAO,oBAAoB;AAAA,OAClD,uBAAuB,OAAO,sBAAsB;AAAA,OACpD,uBAAuB,OAAO,MAAM;AAAA,EACzC,CAAC;AAAA;AAGH,SAAS,yBAAyB,CAChC,OACmE;AAAA,EACnE,IAAI,CAAC,MAAM,QAAQ,KAAK;AAAA,IAAG,MAAM,eAAe;AAAA,EAChD,OAAO,MAAM,IAAI,CAAC,cAAc;AAAA,IAC9B,IAAI,CAAC,SAAS,SAAS;AAAA,MAAG,MAAM,eAAe;AAAA,IAC/C,OAAO;AAAA,MACL,OAAO,cAAc,UAAU,KAAK;AAAA,MACpC,UAAU,eAAe,UAAU,QAAQ;AAAA,MAC3C,2BAA2B,eAAe,UAAU,yBAAyB;AAAA,MAC7E,mBAAmB,eAAe,UAAU,iBAAiB;AAAA,
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "B83B27B2F8E32ECC64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -13,28 +13,6 @@ function isArtifactId2(value) {
|
|
|
13
13
|
return ARTIFACT_ID.test(value);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
// src/artifacts/limits.ts
|
|
17
|
-
var ARTIFACT_LIMITS2 = {
|
|
18
|
-
maxFiles: 200,
|
|
19
|
-
maxFileBytes: 25 * 1024 * 1024,
|
|
20
|
-
maxVersionBytes: 100 * 1024 * 1024,
|
|
21
|
-
maxPathLength: 512,
|
|
22
|
-
maxTitleLength: 200,
|
|
23
|
-
maxDocumentBytes: 2 * 1024 * 1024,
|
|
24
|
-
maxThemeBytes: 4 * 1024,
|
|
25
|
-
maxWorkbookBytes: 256 * 1024,
|
|
26
|
-
maxSheets: 20,
|
|
27
|
-
maxSheetRows: 1e5,
|
|
28
|
-
maxSheetFileBytes: 5 * 1024 * 1024,
|
|
29
|
-
maxSheetColumns: 200,
|
|
30
|
-
maxCharts: 10,
|
|
31
|
-
maxChartSeries: 5,
|
|
32
|
-
maxPieSlices: 5,
|
|
33
|
-
maxDeckBytes: 2 * 1024 * 1024,
|
|
34
|
-
maxSlides: 100,
|
|
35
|
-
maxReferences: 200
|
|
36
|
-
};
|
|
37
|
-
|
|
38
16
|
// src/artifacts/address.ts
|
|
39
17
|
var SCHEME = "artifact:";
|
|
40
18
|
function isArtifactAddress2(value) {
|
|
@@ -124,6 +102,6 @@ function decodePath(text) {
|
|
|
124
102
|
return segments.join("/");
|
|
125
103
|
}
|
|
126
104
|
|
|
127
|
-
export { createArtifactId, isArtifactId2,
|
|
105
|
+
export { createArtifactId, isArtifactId2, isArtifactAddress2, parseArtifactAddress2, formatArtifactAddress2, parseSheetPart2 };
|
|
128
106
|
|
|
129
|
-
//# debugId=
|
|
107
|
+
//# debugId=610BF94F48D49BC064756E2164756E21
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/artifacts/ids.ts", "../src/artifacts/
|
|
3
|
+
"sources": ["../src/artifacts/ids.ts", "../src/artifacts/address.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"// Lowercase base32 without the letters easiest to misread. Ten characters is 50 bits: short enough\n// for the Agent to write in an address, and the store refuses the rare collision.\nconst ALPHABET = \"0123456789abcdefghjkmnpqrstvwxyz\"\n\n/** A new artifact id, such as `art_k3m9q2x7tp`. */\nexport function createArtifactId(): string {\n const bytes = crypto.getRandomValues(new Uint8Array(10))\n let id = \"art_\"\n for (const byte of bytes) id += ALPHABET[byte % ALPHABET.length]\n return id\n}\n\nconst ARTIFACT_ID = new RegExp(`^art_[${ALPHABET}]{10}$`)\n\n/** Whether `value` has the shape of an artifact id; whether that artifact exists is another matter. */\nexport function isArtifactId(value: string): boolean {\n return ARTIFACT_ID.test(value)\n}\n",
|
|
6
|
-
"/** What one version may hold. Publishing refuses a version over any of these. */\nexport const ARTIFACT_LIMITS = {\n maxFiles: 200,\n maxFileBytes: 25 * 1024 * 1024,\n maxVersionBytes: 100 * 1024 * 1024,\n maxPathLength: 512,\n maxTitleLength: 200,\n /** A document's Markdown is parsed whole when it is published. */\n maxDocumentBytes: 2 * 1024 * 1024,\n maxThemeBytes: 4 * 1024,\n maxWorkbookBytes: 256 * 1024,\n /** A sheet's limits keep the grid quick and its charts readable. */\n maxSheets: 20,\n maxSheetRows: 100_000,\n /** The viewer reads a sheet whole, and reads at most this much. */\n maxSheetFileBytes: 5 * 1024 * 1024,\n maxSheetColumns: 200,\n maxCharts: 10,\n maxChartSeries: 5,\n /** One slice per theme chart color, so no two slices share one. */\n maxPieSlices: 5,\n /** A deck's `index.html` is parsed whole when it is published. */\n maxDeckBytes: 2 * 1024 * 1024,\n maxSlides: 100,\n /** `artifact:` addresses one version may use. */\n maxReferences: 200,\n} as const\n",
|
|
7
6
|
"import { isArtifactId } from \"./ids\"\n\n/**\n * An address to an artifact, or to a part of one:\n *\n * ```text\n * artifact:<id>[@<version>][/<file>][#<part>]\n * ```\n *\n * Without a version it follows the latest one. What a part names depends on the target's kind: a\n * sheet (`Summary`), a range of one (`Summary!A1:D12`), a chart (`chart=revenue`), a document's\n * section by its slug (`methodology`), or a slide (`4`).\n */\nexport interface ArtifactAddress {\n readonly artifactId: string\n readonly version?: number\n /** A file inside the artifact, by its path. */\n readonly path?: string\n readonly part?: string\n}\n\nconst SCHEME = \"artifact:\"\n\n/** Whether a URL is written in the `artifact:` scheme, well formed or not. */\nexport function isArtifactAddress(value: string): boolean {\n return value.trim().toLowerCase().startsWith(SCHEME)\n}\n\n/** Reads an address; `null` when it is not a well-formed `artifact:` address. */\nexport function parseArtifactAddress(value: string): ArtifactAddress | null {\n const text = value.trim()\n if (!isArtifactAddress(text)) return null\n const hashAt = text.indexOf(\"#\")\n const head = text.slice(SCHEME.length, hashAt === -1 ? undefined : hashAt)\n const part = hashAt === -1 ? undefined : decode(text.slice(hashAt + 1))\n const slashAt = head.indexOf(\"/\")\n const target = slashAt === -1 ? head : head.slice(0, slashAt)\n const path = slashAt === -1 ? undefined : decodePath(head.slice(slashAt + 1))\n const [artifactId = \"\", version, ...rest] = target.split(\"@\")\n if (!isArtifactId(artifactId) || rest.length > 0) return null\n if (version !== undefined && !/^[1-9]\\d{0,8}$/.test(version)) return null\n if (path === null || part === null || part === \"\") return null\n return {\n artifactId,\n ...(version === undefined ? {} : { version: Number(version) }),\n ...(path === undefined ? {} : { path }),\n ...(part === undefined ? {} : { part }),\n }\n}\n\n/**\n * Writes an address so it survives inside Markdown: spaces and the characters that end a link\n * are escaped, and the rest of a part stays readable (`Q3%20numbers!A1:D12`).\n */\nexport function formatArtifactAddress(address: ArtifactAddress): string {\n const escaped = (text: string) =>\n encodeURI(text).replace(\n /[#()[\\]<>]/g,\n (character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`\n )\n return [\n SCHEME,\n address.artifactId,\n address.version === undefined ? \"\" : `@${address.version}`,\n address.path === undefined ? \"\" : `/${address.path.split(\"/\").map(escaped).join(\"/\")}`,\n address.part === undefined ? \"\" : `#${escaped(address.part)}`,\n ].join(\"\")\n}\n\n/** A rectangle of cells, zero-based, where row 0 is the header row (`A1`). */\nexport interface CellRange {\n readonly top: number\n readonly left: number\n readonly bottom: number\n readonly right: number\n}\n\n/** What a part names in a sheet: a sheet, a range of one, or a chart. */\nexport type SheetPart =\n | { readonly type: \"sheet\"; readonly sheet: string; readonly range?: CellRange }\n | { readonly type: \"chart\"; readonly chart: string }\n\n/** Reads a sheet part: `chart=revenue`, `Summary`, or `Summary!A1:D12`. */\nexport function parseSheetPart(part: string): SheetPart | null {\n if (part.startsWith(\"chart=\")) {\n const chart = part.slice(\"chart=\".length)\n return chart ? { type: \"chart\", chart } : null\n }\n const bangAt = part.lastIndexOf(\"!\")\n if (bangAt === -1) return { type: \"sheet\", sheet: part }\n const sheet = part.slice(0, bangAt)\n const range = parseCellRange(part.slice(bangAt + 1))\n return sheet && range ? { type: \"sheet\", sheet, range } : null\n}\n\n/** Reads `B2` or `A1:D12`, in either corner order. */\nexport function parseCellRange(text: string): CellRange | null {\n const corners = text.split(\":\")\n if (corners.length > 2) return null\n const cells = corners.map(parseCell)\n const [start, end = start] = cells\n if (!start || !end) return null\n return {\n top: Math.min(start.row, end.row),\n left: Math.min(start.column, end.column),\n bottom: Math.max(start.row, end.row),\n right: Math.max(start.column, end.column),\n }\n}\n\nfunction parseCell(text: string): { readonly row: number; readonly column: number } | null {\n const match = /^([A-Za-z]{1,3})([1-9]\\d{0,6})$/.exec(text.trim())\n if (!match?.[1] || !match[2]) return null\n let column = 0\n for (const letter of match[1].toUpperCase()) column = column * 26 + letter.charCodeAt(0) - 64\n return { row: Number(match[2]) - 1, column: column - 1 }\n}\n\nfunction decode(text: string): string | null {\n try {\n return decodeURIComponent(text)\n } catch {\n return null\n }\n}\n\n/** A relative file path: no empty, `.`, or `..` segment. */\nfunction decodePath(text: string): string | null {\n const segments = text.split(\"/\").map(decode)\n if (segments.some((segment) => !segment || segment === \".\" || segment === \"..\")) return null\n return segments.join(\"/\")\n}\n"
|
|
8
7
|
],
|
|
9
|
-
"mappings": ";;AAEA,IAAM,WAAW;AAGV,SAAS,gBAAgB,GAAW;AAAA,EACzC,MAAM,QAAQ,OAAO,gBAAgB,IAAI,WAAW,EAAE,CAAC;AAAA,EACvD,IAAI,KAAK;AAAA,EACT,WAAW,QAAQ;AAAA,IAAO,MAAM,SAAS,OAAO,SAAS;AAAA,EACzD,OAAO;AAAA;AAGT,IAAM,cAAc,IAAI,OAAO,SAAS,gBAAgB;AAGjD,SAAS,aAAY,CAAC,OAAwB;AAAA,EACnD,OAAO,YAAY,KAAK,KAAK;AAAA;;;
|
|
10
|
-
"debugId": "
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "610BF94F48D49BC064756E2164756E21",
|
|
11
10
|
"names": []
|
|
12
11
|
}
|