@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,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/objects/sdk/query-builder.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Fluent ObjectSet query builder.\n *\n * This is the TypeScript authoring layer for object queries. It builds the\n * provider-neutral object query IR and delegates execution to an\n * `ObjectQueryExecutor` — the server runtime executor or the HTTP client\n * executor — so the same builder serves both sides.\n */\n\nimport type { RerankingModelRef } from \"../../models/reranking-model\"\nimport { OntologyValidationError } from \"../../ontology/errors\"\nimport type { LinkToken, ObjectTypeWithPropertyTokens, PropertyToken } from \"../../ontology/tokens\"\nimport { RuntimeError } from \"../../runtime/errors\"\nimport type {\n ListResult,\n ListResultWithoutTotal,\n ObjectExpandBuilder,\n ObjectExpandOptions,\n ObjectQueryBuilder,\n ObjectQueryFacetInput,\n ObjectQueryFacetsResult,\n ObjectQueryListOptions,\n ObjectWhereBuilder,\n ObjectWhereClause,\n TwinObject,\n} from \"../../runtime/types\"\nimport { formatObjectQueryExplanation } from \"../query/explain-format\"\nimport type {\n ObjectExpansion,\n ObjectQuery,\n ObjectQueryDirection,\n ObjectQuerySortDirection,\n ObjectQuerySortField,\n} from \"../query/ir\"\nimport { normalizeObjectQuery } from \"../query/normalize\"\nimport type { ObjectQueryExecutor } from \"./query-executor\"\nimport { resolveWhere } from \"./where\"\n\ntype QueryBuilderParams = {\n query: ObjectQuery\n executor: ObjectQueryExecutor\n}\n\nexport function createObjectQueryBuilder<TObjectType extends ObjectTypeWithPropertyTokens>(\n params: QueryBuilderParams\n): ObjectQueryBuilder<TObjectType> {\n return new ObjectQueryBuilderImpl<TObjectType>(\n params\n ) as unknown as ObjectQueryBuilder<TObjectType>\n}\n\n/**\n * Returns the same query running through the executor `decorate` wraps around the builder's own.\n *\n * Refinements copy their builder's executor, so every query derived from the result, and every\n * terminal it runs, goes through the decorated executor too.\n */\nexport function decorateObjectQueryExecutor<TObjectType extends ObjectTypeWithPropertyTokens>(\n builder: ObjectQueryBuilder<TObjectType>,\n decorate: (executor: ObjectQueryExecutor) => ObjectQueryExecutor\n): ObjectQueryBuilder<TObjectType> {\n // Narrowed from `unknown`: narrowing the builder interface to the class relates both structures.\n const source: unknown = builder\n if (!(source instanceof ObjectQueryBuilderImpl)) {\n throw new RuntimeError(\n \"[Sixb] Only query builders created by createObjectQueryBuilder can change executor.\"\n )\n }\n return new ObjectQueryBuilderImpl<TObjectType>({\n ...source.params,\n executor: decorate(source.params.executor),\n }) as unknown as ObjectQueryBuilder<TObjectType>\n}\n\nclass ObjectQueryBuilderImpl<TObjectType extends ObjectTypeWithPropertyTokens> {\n /** Not private because `decorateObjectQueryExecutor` reads it; the class is not exported. */\n constructor(readonly params: QueryBuilderParams) {}\n\n get ir(): ObjectQuery {\n return normalizeObjectQuery(this.params.query)\n }\n\n where(\n whereFn: (\n builder: ObjectWhereBuilder<TObjectType>\n ) => ObjectWhereClause<TObjectType> | readonly ObjectWhereClause<TObjectType>[]\n ): ObjectQueryBuilder<TObjectType> {\n const predicate = resolveWhere<TObjectType>(whereFn)\n if (!predicate) return this as unknown as ObjectQueryBuilder<TObjectType>\n\n return this.withQuery({\n kind: \"filter\",\n input: this.ir,\n predicate,\n })\n }\n\n search(\n query: string,\n options?: { fields?: readonly PropertyToken<TObjectType[\"id\"], string>[] }\n ): ObjectQueryBuilder<TObjectType> {\n return this.withQuery({\n kind: \"text\",\n input: this.ir,\n query,\n fields: options?.fields?.map(propertyTokenToId),\n })\n }\n\n vector(profile: string, vector: string, options: { k: number }): ObjectQueryBuilder<TObjectType> {\n if (typeof profile !== \"string\" || typeof vector !== \"string\") {\n throw new Error(\"[Sixb] Vector search requires a named profile and search text\")\n }\n return this.withQuery({\n kind: \"vector\",\n input: this.ir,\n profile,\n vector,\n k: options.k,\n })\n }\n\n rerank(options: { model: RerankingModelRef }): ObjectQueryBuilder<TObjectType> {\n if (options.model?.definition?.kind !== \"reranking\") {\n throw new TypeError(\"[Sixb] rerank() requires an explicit reranking model.\")\n }\n return this.withQuery({\n kind: \"rerank\",\n input: this.ir,\n model: { provider: options.model.providerId, modelId: options.model.modelId },\n })\n }\n\n traverse(\n link: LinkToken<TObjectType[\"id\"], string, string>,\n options?: { direction?: \"outgoing\" }\n ): ObjectQueryBuilder<ObjectTypeWithPropertyTokens>\n traverse(\n link: LinkToken<string, string, TObjectType[\"id\"] | readonly TObjectType[\"id\"][]>,\n options: { direction: \"incoming\" }\n ): ObjectQueryBuilder<ObjectTypeWithPropertyTokens>\n traverse(\n link: LinkToken,\n options: { direction?: ObjectQueryDirection } = {}\n ): ObjectQueryBuilder<ObjectTypeWithPropertyTokens> {\n const direction = options.direction ?? \"outgoing\"\n if (direction === \"outgoing\") {\n requireSingleTargetObjectTypeId(link)\n }\n\n return new ObjectQueryBuilderImpl<ObjectTypeWithPropertyTokens>({\n ...this.params,\n query: {\n kind: \"traverse\",\n input: this.ir,\n linkId: link.id,\n direction,\n // Several object types can declare a link with the same id. The token\n // names exactly one source type, so incoming traversal pins it —\n // matching the result type the fluent API advertises.\n ...(direction === \"incoming\" ? { sourceObjectTypeId: link.objectTypeId } : {}),\n },\n }) as unknown as ObjectQueryBuilder<ObjectTypeWithPropertyTokens>\n }\n\n expand(\n token: ExpandToken,\n optionsOrBuild?: ObjectExpandOptions<ObjectTypeWithPropertyTokens> | NestedExpandBuild,\n build?: NestedExpandBuild\n ): ObjectQueryBuilder<TObjectType> {\n if (isPropertyToken(token)) {\n assertNoUserExpansionOptions(optionsOrBuild, build)\n return this.withQuery({ kind: \"expand\", input: this.ir, expansions: [], users: [token.id] })\n }\n\n return this.withQuery({\n kind: \"expand\",\n input: this.ir,\n expansions: [buildExpansion(token, optionsOrBuild, build)],\n })\n }\n\n orderBy(\n property: PropertyToken<TObjectType[\"id\"], string>,\n direction?: ObjectQuerySortDirection\n ): ObjectQueryBuilder<TObjectType> {\n return this.withQuery(\n appendSortField(this.ir, {\n kind: \"property\",\n propertyId: property.id,\n direction,\n })\n )\n }\n\n orderByRelevance(direction?: ObjectQuerySortDirection): ObjectQueryBuilder<TObjectType> {\n return this.withQuery(\n appendSortField(this.ir, {\n kind: \"relevance\",\n direction,\n })\n )\n }\n\n limit(limit: number): ObjectQueryBuilder<TObjectType> {\n return this.withQuery({\n kind: \"limit\",\n input: this.ir,\n limit,\n })\n }\n\n page(input: { pageSize: number; pageToken?: string }): ObjectQueryBuilder<TObjectType> {\n return this.withQuery({\n kind: \"page\",\n input: this.ir,\n pageSize: input.pageSize,\n pageToken: input.pageToken,\n })\n }\n\n validate() {\n if (!this.params.executor.validate) {\n throw new OntologyValidationError(\n \"[Sixb] validate() requires ontology access and is not supported by this query executor. Execute the query to get server-side validation.\"\n )\n }\n return this.params.executor.validate(this.ir)\n }\n\n explain() {\n if (!this.params.executor.explain) {\n throw new OntologyValidationError(\n \"[Sixb] explain() requires ontology access and is not supported by this query executor.\"\n )\n }\n return this.params.executor.explain(this.ir)\n }\n\n formatExplanation(): string {\n return formatObjectQueryExplanation(this.explain())\n }\n\n async list(): Promise<ListResult<TwinObject<TObjectType>>>\n async list(options: {\n includeTotal: false\n signal?: AbortSignal\n }): Promise<ListResultWithoutTotal<TwinObject<TObjectType>>>\n async list(options: {\n includeTotal?: true\n signal?: AbortSignal\n }): Promise<ListResult<TwinObject<TObjectType>>>\n async list(\n options?: ObjectQueryListOptions\n ): Promise<\n ListResult<TwinObject<TObjectType>> | ListResultWithoutTotal<TwinObject<TObjectType>>\n > {\n const result = await this.params.executor.list(this.ir, {\n includeTotal: options?.includeTotal,\n signal: options?.signal,\n })\n const objects = result.objects.map((row) => row as unknown as TwinObject<TObjectType>)\n\n if (options?.includeTotal === false) {\n return {\n objects,\n hasMore: result.hasMore,\n nextPageToken: result.nextPageToken,\n }\n }\n\n return {\n objects,\n hasMore: result.hasMore,\n nextPageToken: result.nextPageToken,\n total: result.total ?? result.objects.length,\n }\n }\n\n async count(): Promise<number> {\n return this.params.executor.count(this.ir)\n }\n\n async exists(): Promise<boolean> {\n return this.params.executor.exists(this.ir)\n }\n\n async facets(\n input: readonly ObjectQueryFacetInput<TObjectType>[]\n ): Promise<ObjectQueryFacetsResult> {\n return this.params.executor.facets(\n this.ir,\n input.map((facet) => ({\n propertyId: facet.property.id,\n limit: facet.limit,\n }))\n )\n }\n\n async first(): Promise<TwinObject<TObjectType> | null> {\n const result = await this.params.executor.list({ kind: \"limit\", input: this.ir, limit: 1 })\n const row = result.objects[0]\n return row ? (row as unknown as TwinObject<TObjectType>) : null\n }\n\n private withQuery(query: ObjectQuery): ObjectQueryBuilder<TObjectType> {\n return new ObjectQueryBuilderImpl<TObjectType>({\n ...this.params,\n query,\n }) as unknown as ObjectQueryBuilder<TObjectType>\n }\n}\n\ntype AnyExpandBuilder = ObjectExpandBuilder<ObjectTypeWithPropertyTokens>\ntype NestedExpandBuild = (nested: AnyExpandBuilder) => AnyExpandBuilder\n\n/** A link to hydrate, or a `ref.user()` property whose members' profiles to attach. */\ntype ExpandToken = LinkToken<string, string, string | readonly string[]> | PropertyToken\n\n/**\n * Runtime backing for the nested `.expand(..., (e) => …)` callback. Immutable,\n * mirroring the query builder: each `expand` returns a new instance so the\n * accumulated expansions are never shared between branches.\n */\nclass ObjectExpandBuilderImpl {\n constructor(\n readonly expansions: readonly ObjectExpansion[] = [],\n readonly users: readonly string[] = []\n ) {}\n\n expand(\n token: ExpandToken,\n optionsOrBuild?: ObjectExpandOptions<ObjectTypeWithPropertyTokens> | NestedExpandBuild,\n build?: NestedExpandBuild\n ): ObjectExpandBuilderImpl {\n if (isPropertyToken(token)) {\n assertNoUserExpansionOptions(optionsOrBuild, build)\n return new ObjectExpandBuilderImpl(this.expansions, [...this.users, token.id])\n }\n\n return new ObjectExpandBuilderImpl(\n [...this.expansions, buildExpansion(token, optionsOrBuild, build)],\n this.users\n )\n }\n}\n\n// A link token carries `link`, a property token `property`.\nfunction isPropertyToken(token: ExpandToken): token is PropertyToken {\n return \"property\" in token\n}\n\nfunction assertNoUserExpansionOptions(optionsOrBuild: unknown, build: unknown): void {\n if (optionsOrBuild === undefined && build === undefined) return\n throw new OntologyValidationError(\n \"[Sixb] expand() of a user property takes no options or nested expansions.\"\n )\n}\n\nfunction buildExpansion(\n link: LinkToken<string, string, string | readonly string[]>,\n optionsOrBuild: ObjectExpandOptions<ObjectTypeWithPropertyTokens> | NestedExpandBuild | undefined,\n build: NestedExpandBuild | undefined\n): ObjectExpansion {\n // `.expand(link, build)` and `.expand(link, options, build)` are both valid:\n // a function in the second slot is the nested builder, otherwise it is options.\n const options = typeof optionsOrBuild === \"function\" ? undefined : optionsOrBuild\n const nestedBuild = typeof optionsOrBuild === \"function\" ? optionsOrBuild : build\n\n let nested: readonly ObjectExpansion[] = []\n let users: readonly string[] = []\n if (nestedBuild) {\n const result = nestedBuild(new ObjectExpandBuilderImpl() as unknown as AnyExpandBuilder)\n nested = (result as unknown as ObjectExpandBuilderImpl).expansions\n users = (result as unknown as ObjectExpandBuilderImpl).users\n }\n\n return {\n linkId: link.id,\n direction: \"outgoing\",\n ...(options?.limit !== undefined ? { limit: options.limit } : {}),\n ...(options?.orderBy ? { orderBy: options.orderBy.map(expansionSortToField) } : {}),\n ...(nested.length > 0 ? { expand: nested } : {}),\n ...(users.length > 0 ? { users } : {}),\n }\n}\n\nfunction expansionSortToField(sort: {\n property: PropertyToken\n direction?: ObjectQuerySortDirection\n}): ObjectQuerySortField {\n return { kind: \"property\", propertyId: sort.property.id, direction: sort.direction }\n}\n\nfunction appendSortField(\n query: ObjectQuery,\n field: Extract<ObjectQuery, { kind: \"sort\" }>[\"fields\"][number]\n): ObjectQuery {\n if (query.kind === \"sort\") {\n return {\n ...query,\n fields: [...query.fields, field],\n }\n }\n\n return {\n kind: \"sort\",\n input: query,\n fields: [field],\n }\n}\n\nfunction propertyTokenToId(token: PropertyToken): string {\n return token.id\n}\n\nfunction requireSingleTargetObjectTypeId(link: LinkToken): void {\n const target = link.targetObjectTypeId\n if (target === \"*\" || typeof target !== \"string\") {\n throw new OntologyValidationError(\n \"[Sixb] Object query traverse requires a single concrete outgoing target type\"\n )\n }\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "BC73A40671652EFE64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import {
|
|
3
|
+
OntologyValidationError2
|
|
4
|
+
} from "./chunk-cqr3acm1.js";
|
|
5
|
+
|
|
6
|
+
// src/ontology/user-ref.ts
|
|
7
|
+
function userRef2(id) {
|
|
8
|
+
if (typeof id !== "string" || !id.trim()) {
|
|
9
|
+
throw new OntologyValidationError2("[Sixb] User reference id must not be empty.");
|
|
10
|
+
}
|
|
11
|
+
return Object.freeze({ type: "user", id });
|
|
12
|
+
}
|
|
13
|
+
function isUserRef(value) {
|
|
14
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
15
|
+
return false;
|
|
16
|
+
const record = value;
|
|
17
|
+
return Object.keys(record).every((key) => key === "type" || key === "id") && record.type === "user" && typeof record.id === "string" && record.id.trim().length > 0;
|
|
18
|
+
}
|
|
19
|
+
function isUserRefPropertySchema(schema) {
|
|
20
|
+
if (schema === "userRef")
|
|
21
|
+
return true;
|
|
22
|
+
return typeof schema === "object" && schema.type === "array" && schema.items === "userRef";
|
|
23
|
+
}
|
|
24
|
+
var CURRENT_USER = Object.freeze({ type: "currentUser" });
|
|
25
|
+
function currentUser2() {
|
|
26
|
+
return CURRENT_USER;
|
|
27
|
+
}
|
|
28
|
+
function isCurrentUser(value) {
|
|
29
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
30
|
+
return false;
|
|
31
|
+
const record = value;
|
|
32
|
+
return Object.keys(record).length === 1 && record.type === "currentUser";
|
|
33
|
+
}
|
|
34
|
+
function currentUserNotStorableMessage(subject) {
|
|
35
|
+
return `${subject} cannot store currentUser(): it only stands for the user reading, in a query predicate. Store a user reference { type: "user", id } instead.`;
|
|
36
|
+
}
|
|
37
|
+
function collectUserRefIds(schema, value, valueTypesById, into, seenValueTypeIds = new Set) {
|
|
38
|
+
if (value === null || value === undefined)
|
|
39
|
+
return into;
|
|
40
|
+
if (typeof schema === "string") {
|
|
41
|
+
if (schema === "userRef" && isUserRef(value))
|
|
42
|
+
into.add(value.id);
|
|
43
|
+
return into;
|
|
44
|
+
}
|
|
45
|
+
switch (schema.type) {
|
|
46
|
+
case "array":
|
|
47
|
+
if (Array.isArray(value)) {
|
|
48
|
+
for (const item of value) {
|
|
49
|
+
collectUserRefIds(schema.items, item, valueTypesById, into, seenValueTypeIds);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return into;
|
|
53
|
+
case "map":
|
|
54
|
+
if (isRecord(value)) {
|
|
55
|
+
for (const item of Object.values(value)) {
|
|
56
|
+
collectUserRefIds(schema.valueSchema, item, valueTypesById, into, seenValueTypeIds);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return into;
|
|
60
|
+
case "object":
|
|
61
|
+
if (isRecord(value)) {
|
|
62
|
+
for (const [fieldId, field] of Object.entries(schema.properties)) {
|
|
63
|
+
collectUserRefIds(field.schema, value[fieldId], valueTypesById, into, seenValueTypeIds);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return into;
|
|
67
|
+
case "valueTypeRef": {
|
|
68
|
+
if (seenValueTypeIds.has(schema.valueTypeId))
|
|
69
|
+
return into;
|
|
70
|
+
const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema;
|
|
71
|
+
if (!resolved)
|
|
72
|
+
return into;
|
|
73
|
+
return collectUserRefIds(resolved, value, valueTypesById, into, new Set([...seenValueTypeIds, schema.valueTypeId]));
|
|
74
|
+
}
|
|
75
|
+
case "enum":
|
|
76
|
+
return into;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function userReferenceProblem(path, id, status) {
|
|
80
|
+
switch (status) {
|
|
81
|
+
case "active":
|
|
82
|
+
return;
|
|
83
|
+
case null:
|
|
84
|
+
return `[Sixb] ${path} references user '${id}', which does not exist.`;
|
|
85
|
+
case "unverifiable":
|
|
86
|
+
return `[Sixb] ${path} references user '${id}', but this runtime has no auth storage to verify users. Configure storage with auth to write user references.`;
|
|
87
|
+
default:
|
|
88
|
+
return `[Sixb] ${path} references user '${id}', who is ${status}. Only active users can be newly referenced; existing references are kept.`;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function isRecord(value) {
|
|
92
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export { userRef2, isUserRef, isUserRefPropertySchema, currentUser2, isCurrentUser, currentUserNotStorableMessage, collectUserRefIds, userReferenceProblem };
|
|
96
|
+
|
|
97
|
+
//# debugId=1B91C64E771ACBFC64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/ontology/user-ref.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type { Principal } from \"../auth/types\"\nimport type { UserStatus } from \"../storage/auth/types\"\nimport { OntologyValidationError } from \"./errors\"\nimport type { Schema, ValueType } from \"./types\"\n\n/**\n * Value of a `ref.user()` (`\"userRef\"`) schema: the principal shape, narrowed to users.\n *\n * It carries no display data on purpose: a name or avatar supplied by the writer would be\n * spoofable. It grants or restricts nothing by itself either; only an explicit policy gives it a\n * security meaning.\n */\nexport type UserRef = Extract<Principal, { readonly type: \"user\" }>\n\n/**\n * Build a reference to one user, for writes and query predicates:\n * `where(({ p }) => p.assignee.eq(userRef(userId)))`.\n */\nexport function userRef(id: string): UserRef {\n if (typeof id !== \"string\" || !id.trim()) {\n throw new OntologyValidationError(\"[Sixb] User reference id must not be empty.\")\n }\n return Object.freeze({ type: \"user\" as const, id })\n}\n\n/** Exactly `{ type: \"user\", id }` with a nonblank id and no other field. */\nexport function isUserRef(value: unknown): value is UserRef {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return false\n const record = value as Record<string, unknown>\n return (\n Object.keys(record).every((key) => key === \"type\" || key === \"id\") &&\n record.type === \"user\" &&\n typeof record.id === \"string\" &&\n record.id.trim().length > 0\n )\n}\n\n/**\n * A `ref.user()` schema, or an array of them: the property schemas whose members a query can\n * expand into profiles.\n */\nexport function isUserRefPropertySchema(schema: Schema): boolean {\n if (schema === \"userRef\") return true\n return typeof schema === \"object\" && schema.type === \"array\" && schema.items === \"userRef\"\n}\n\n/**\n * The user reading, in a query predicate. The server binds it to the requester when the query runs:\n * a query never stores or returns it.\n */\nexport type CurrentUserRef = { readonly type: \"currentUser\" }\n\nconst CURRENT_USER: CurrentUserRef = Object.freeze({ type: \"currentUser\" })\n\n/**\n * Match the user reading: `where(({ p }) => p.assignee.eq(currentUser()))`.\n *\n * Only query predicates on a `ref.user()` property accept it: `eq`, `neq`, `in`, and `contains`\n * on a list of user references. It cannot be stored.\n */\nexport function currentUser(): CurrentUserRef {\n return CURRENT_USER\n}\n\n/** Exactly `{ type: \"currentUser\" }`, the form `currentUser()` takes on the wire too. */\nexport function isCurrentUser(value: unknown): value is CurrentUserRef {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return false\n const record = value as Record<string, unknown>\n return Object.keys(record).length === 1 && record.type === \"currentUser\"\n}\n\n/** Why `subject` refuses `currentUser()`: it stands for the reader of a query, never for a value. */\nexport function currentUserNotStorableMessage(subject: string): string {\n return `${subject} cannot store currentUser(): it only stands for the user reading, in a query predicate. Store a user reference { type: \"user\", id } instead.`\n}\n\n/**\n * Collect the user ids a value holds at `userRef` positions of its schema, however deeply nested.\n *\n * Positions whose value does not match the schema are skipped: shape validation reports them.\n */\nexport function collectUserRefIds(\n schema: Schema,\n value: unknown,\n valueTypesById: ReadonlyMap<string, ValueType>,\n into: Set<string>,\n seenValueTypeIds: ReadonlySet<string> = new Set()\n): Set<string> {\n if (value === null || value === undefined) return into\n if (typeof schema === \"string\") {\n if (schema === \"userRef\" && isUserRef(value)) into.add(value.id)\n return into\n }\n switch (schema.type) {\n case \"array\":\n if (Array.isArray(value)) {\n for (const item of value) {\n collectUserRefIds(schema.items, item, valueTypesById, into, seenValueTypeIds)\n }\n }\n return into\n case \"map\":\n if (isRecord(value)) {\n for (const item of Object.values(value)) {\n collectUserRefIds(schema.valueSchema, item, valueTypesById, into, seenValueTypeIds)\n }\n }\n return into\n case \"object\":\n if (isRecord(value)) {\n for (const [fieldId, field] of Object.entries(schema.properties)) {\n collectUserRefIds(field.schema, value[fieldId], valueTypesById, into, seenValueTypeIds)\n }\n }\n return into\n case \"valueTypeRef\": {\n if (seenValueTypeIds.has(schema.valueTypeId)) return into\n const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema\n if (!resolved) return into\n return collectUserRefIds(\n resolved,\n value,\n valueTypesById,\n into,\n new Set([...seenValueTypeIds, schema.valueTypeId])\n )\n }\n case \"enum\":\n return into\n }\n}\n\n/**\n * Why `path` cannot newly reference user `id`, or `undefined` when it can.\n *\n * `status` is the user's status, `null` for an unknown id, or `\"unverifiable\"` without auth\n * storage. Unknown and suspended users get distinct messages: the writer already holds the id, and\n * telling \"wrong id\" from \"suspended member\" is what makes the error actionable.\n */\nexport function userReferenceProblem(\n path: string,\n id: string,\n status: UserStatus | null | \"unverifiable\"\n): string | undefined {\n switch (status) {\n case \"active\":\n return undefined\n case null:\n return `[Sixb] ${path} references user '${id}', which does not exist.`\n case \"unverifiable\":\n return `[Sixb] ${path} references user '${id}', but this runtime has no auth storage to verify users. Configure storage with auth to write user references.`\n default:\n return `[Sixb] ${path} references user '${id}', who is ${status}. Only active users can be newly referenced; existing references are kept.`\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "1B91C64E771ACBFC64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
import {
|
|
3
|
+
TOKENLESS_MODEL_KINDS2
|
|
4
|
+
} from "./chunk-pdt5cw8z.js";
|
|
5
|
+
|
|
2
6
|
// src/storage/ai-limits/errors.ts
|
|
3
7
|
class AiLimitStorageError2 extends Error {
|
|
4
8
|
code;
|
|
@@ -21,9 +25,9 @@ function aiLimitCalendarMonth2(at) {
|
|
|
21
25
|
|
|
22
26
|
// src/storage/ai-limits/provider.ts
|
|
23
27
|
var SIGNED_INT64_MAX = 9223372036854775807n;
|
|
24
|
-
var
|
|
28
|
+
var TOKENLESS_KINDS = new Set(TOKENLESS_MODEL_KINDS2);
|
|
25
29
|
function aiLimitMeterApplies2(meter, modelKind) {
|
|
26
|
-
return meter !== "tokens.total" || modelKind === undefined || !
|
|
30
|
+
return meter !== "tokens.total" || modelKind === undefined || !TOKENLESS_KINDS.has(modelKind);
|
|
27
31
|
}
|
|
28
32
|
|
|
29
33
|
class AiLimitOperationLock2 {
|
|
@@ -312,4 +316,4 @@ function cloneValidDate2(value, label) {
|
|
|
312
316
|
|
|
313
317
|
export { AiLimitStorageError2, aiLimitCalendarMonth2, aiLimitMeterApplies2, AiLimitOperationLock2, normalizeAiLimitSubject2, normalizeAiLimitSubjects2, aiLimitSubjectKey2, aiLimitSubjectParts2, aiLimitSubjectFromParts2, normalizeAiLimitQuantity2, normalizeAiLimitQuantities2, normalizeAiLimitAmount2, aiLimitQuantityFromAmount2, aiLimitAmountKey2, normalizeCreateAiLimitPolicy2, normalizeUpdateAiLimitPolicy2, normalizeReserveAiModelCall2, normalizeAiModelCallReservationIdentity2, aiModelCallReservationKey2, aiLimitPolicyDimensionKey2, aiLimitReservationRequestMatches2, aiLimitReservationRequestKey2, aiLimitReservationBuckets2, aiLimitAccountingEntryAppliesToSubject2, aiLimitSubjectsFromAccountingEntry2, resolveAiLimitActual2, assertAiLimitAccountingMatchesReservation2, cloneAiLimitPolicy2, assertNonBlank2, cloneValidDate2 };
|
|
314
318
|
|
|
315
|
-
//# debugId=
|
|
319
|
+
//# debugId=0D8650E157BAD36864756E2164756E21
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/storage/ai-limits/errors.ts", "../src/storage/ai-limits/period.ts", "../src/storage/ai-limits/provider.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"export type AiLimitStorageErrorCode =\n | \"duplicate_policy\"\n | \"missing_policy\"\n | \"missing_execution\"\n | \"missing_reservation\"\n | \"missing_usage_record\"\n | \"usage_mismatch\"\n | \"unavailable_actuals\"\n | \"reservation_conflict\"\n | \"reconciliation_conflict\"\n | \"invalid_reservation_state\"\n\n/** Stable storage failure for AI limit policies and reservations. */\nexport class AiLimitStorageError extends Error {\n readonly name = \"AiLimitStorageError\"\n\n constructor(\n readonly code: AiLimitStorageErrorCode,\n message: string\n ) {\n super(message)\n }\n}\n",
|
|
6
|
+
"import type { AiLimitPeriod } from \"./types\"\n\n/** Return the UTC calendar month containing `at`, with an inclusive start and exclusive end. */\nexport function aiLimitCalendarMonth(at: Date): AiLimitPeriod {\n if (!(at instanceof Date) || !Number.isFinite(at.getTime())) {\n throw new TypeError(\"[Sixb] AI limit period date must be a valid Date.\")\n }\n const start = new Date(Date.UTC(at.getUTCFullYear(), at.getUTCMonth(), 1))\n const end = new Date(Date.UTC(at.getUTCFullYear(), at.getUTCMonth() + 1, 1))\n return { kind: \"calendarMonth\", start, end, resetAt: new Date(end) }\n}\n",
|
|
7
|
+
"import { type ModelKind, TOKENLESS_MODEL_KINDS } from \"../../models/definitions\"\nimport type { AiMoney } from \"../ai-cost\"\nimport { AiLimitStorageError } from \"./errors\"\nimport { aiLimitCalendarMonth } from \"./period\"\nimport type {\n AiLimitMeter,\n AiLimitPeriod,\n AiLimitPolicy,\n AiLimitQuantity,\n AiLimitReservationBucket,\n AiLimitSubject,\n AiModelCallReservation,\n AiModelCallReservationIdentity,\n CreateAiLimitPolicyInput,\n ReserveAiModelCallInput,\n UpdateAiLimitPolicyInput,\n} from \"./types\"\n\nconst SIGNED_INT64_MAX = 9_223_372_036_854_775_807n\n\n// Token limits neither admit nor count tokenless calls; cost limits still do.\nconst TOKENLESS_KINDS: ReadonlySet<ModelKind> = new Set(TOKENLESS_MODEL_KINDS)\n\n/** @internal Whether a limit meter governs calls of this kind. Unclassified calls are metered. */\nexport function aiLimitMeterApplies(\n meter: AiLimitMeter,\n modelKind: ModelKind | undefined\n): boolean {\n return meter !== \"tokens.total\" || modelKind === undefined || !TOKENLESS_KINDS.has(modelKind)\n}\n\n/** @internal Serialize compound limit operations, including within an existing transaction. */\nexport class AiLimitOperationLock {\n private tail: Promise<void> = Promise.resolve()\n\n /** Wait for already queued operations before the owning transaction commits or rolls back. */\n settle(): Promise<void> {\n return this.tail\n }\n\n async run<T>(operation: () => Promise<T> | T): Promise<T> {\n const previous = this.tail\n let release!: () => void\n this.tail = new Promise<void>((resolve) => {\n release = resolve\n })\n await previous\n try {\n return await operation()\n } finally {\n release()\n }\n }\n}\n\n/** @internal Canonical integer quantity used by storage providers. */\nexport interface NormalizedAiLimitAmount {\n readonly meter: AiLimitQuantity[\"meter\"]\n readonly currency: string\n readonly amount: bigint\n}\n\n/** @internal Minimal immutable accounting facts consumed by limit providers. */\nexport interface AiLimitAccountingEntry {\n readonly projectId: string\n readonly usageRecordId: string\n readonly executionId: string\n readonly attempt: number\n readonly callId: string\n readonly occurredAt: Date\n readonly modelKind?: ModelKind\n readonly totalTokens?: number\n readonly requesterGroupIds: readonly string[]\n readonly requester?:\n | { readonly type: \"user\"; readonly id: string }\n | { readonly type: \"serviceAccount\"; readonly id: string }\n readonly valuation?:\n | { readonly status: \"rated\"; readonly money: AiMoney }\n | { readonly status: \"unavailable\" }\n}\n\nexport interface ResolvedAiLimitActual {\n readonly amount: bigint\n readonly accountingStatus: \"complete\" | \"unavailable\"\n}\n\nexport function normalizeAiLimitSubject(subject: AiLimitSubject): AiLimitSubject {\n if (!subject || typeof subject !== \"object\") {\n throw new TypeError(\"[Sixb] AI limit subject must be an object.\")\n }\n if (subject.type === \"project\") return { type: \"project\" }\n if (subject.type === \"group\" || subject.type === \"user\" || subject.type === \"serviceAccount\") {\n assertNonBlank(subject.id, \"subject id\")\n return { type: subject.type, id: subject.id }\n }\n throw new TypeError(\"[Sixb] AI limit subject type is unsupported.\")\n}\n\nexport function normalizeAiLimitSubjects(\n subjects: readonly AiLimitSubject[]\n): readonly AiLimitSubject[] {\n if (!Array.isArray(subjects)) {\n throw new TypeError(\"[Sixb] AI limit subjects must be an array.\")\n }\n const normalized = [\n normalizeAiLimitSubject({ type: \"project\" }),\n ...subjects.map(normalizeAiLimitSubject),\n ]\n const byKey = new Map(normalized.map((subject) => [aiLimitSubjectKey(subject), subject]))\n return [...byKey.values()].sort((left, right) =>\n aiLimitSubjectKey(left).localeCompare(aiLimitSubjectKey(right))\n )\n}\n\nexport function aiLimitSubjectKey(subject: AiLimitSubject): string {\n return subject.type === \"project\" ? \"project:\" : `${subject.type}:${subject.id}`\n}\n\nexport function aiLimitSubjectParts(subject: AiLimitSubject): {\n readonly type: AiLimitSubject[\"type\"]\n readonly id: string\n} {\n return { type: subject.type, id: subject.type === \"project\" ? \"\" : subject.id }\n}\n\nexport function aiLimitSubjectFromParts(type: AiLimitSubject[\"type\"], id: string): AiLimitSubject {\n return normalizeAiLimitSubject(type === \"project\" ? { type } : { type, id })\n}\n\nexport function normalizeAiLimitQuantity(quantity: AiLimitQuantity): AiLimitQuantity {\n const normalized = normalizeAiLimitAmount(quantity)\n return aiLimitQuantityFromAmount(normalized)\n}\n\nexport function normalizeAiLimitQuantities(\n quantities: readonly AiLimitQuantity[],\n label: string\n): readonly AiLimitQuantity[] {\n if (!Array.isArray(quantities) || quantities.length === 0) {\n throw new TypeError(`[Sixb] AI limit ${label} must contain at least one quantity.`)\n }\n const byKey = new Map<string, AiLimitQuantity>()\n for (const quantity of quantities) {\n const normalized = normalizeAiLimitQuantity(quantity)\n const key = aiLimitAmountKey(normalizeAiLimitAmount(normalized))\n if (byKey.has(key)) {\n throw new TypeError(`[Sixb] AI limit ${label} contains duplicate meter '${key}'.`)\n }\n byKey.set(key, normalized)\n }\n return [...byKey.values()].sort((left, right) =>\n aiLimitAmountKey(normalizeAiLimitAmount(left)).localeCompare(\n aiLimitAmountKey(normalizeAiLimitAmount(right))\n )\n )\n}\n\nexport function normalizeAiLimitAmount(quantity: AiLimitQuantity): NormalizedAiLimitAmount {\n if (!quantity || typeof quantity !== \"object\") {\n throw new TypeError(\"[Sixb] AI limit quantity must be an object.\")\n }\n if (quantity.meter === \"tokens.total\") {\n if (!Number.isSafeInteger(quantity.amount) || quantity.amount < 0) {\n throw new TypeError(\"[Sixb] AI limit token amount must be a non-negative safe integer.\")\n }\n return { meter: quantity.meter, currency: \"\", amount: BigInt(quantity.amount) }\n }\n if (quantity.meter === \"cost.catalogEstimated\") {\n const money = normalizeAiMoney(quantity.amount)\n return { meter: quantity.meter, currency: money.currency, amount: BigInt(money.amountNanos) }\n }\n throw new TypeError(\"[Sixb] AI limit meter is unsupported.\")\n}\n\nexport function aiLimitQuantityFromAmount(amount: NormalizedAiLimitAmount): AiLimitQuantity {\n if (amount.amount < 0n) {\n throw new TypeError(\"[Sixb] AI limit amount cannot be negative.\")\n }\n if (amount.meter === \"tokens.total\") {\n const tokens = Number(amount.amount)\n if (!Number.isSafeInteger(tokens)) {\n throw new RangeError(\"[Sixb] AI limit token amount exceeds JavaScript's safe integer range.\")\n }\n return { meter: amount.meter, amount: tokens }\n }\n if (amount.currency !== \"USD\") {\n throw new TypeError(\"[Sixb] AI limit catalog-estimated cost currency must be 'USD'.\")\n }\n return {\n meter: amount.meter,\n amount: { currency: \"USD\", amountNanos: amount.amount.toString() },\n }\n}\n\nexport function aiLimitAmountKey(\n amount: Pick<NormalizedAiLimitAmount, \"meter\" | \"currency\">\n): string {\n return `${amount.meter}:${amount.currency}`\n}\n\nexport function normalizeCreateAiLimitPolicy(input: CreateAiLimitPolicyInput): AiLimitPolicy {\n assertNonBlank(input.id, \"policy id\")\n assertNonBlank(input.projectId, \"projectId\")\n const createdAt = cloneValidDate(input.createdAt ?? new Date(), \"createdAt\")\n return {\n id: input.id,\n projectId: input.projectId,\n subject: normalizeAiLimitSubject(input.subject),\n limit: normalizeAiLimitQuantity(input.limit),\n period: \"calendarMonth\",\n enabled: input.enabled ?? true,\n createdAt,\n updatedAt: new Date(createdAt),\n }\n}\n\nexport function normalizeUpdateAiLimitPolicy(input: UpdateAiLimitPolicyInput): {\n readonly projectId: string\n readonly id: string\n readonly limit?: AiLimitQuantity\n readonly enabled?: boolean\n readonly updatedAt: Date\n} {\n assertNonBlank(input.projectId, \"projectId\")\n assertNonBlank(input.id, \"policy id\")\n if (input.limit === undefined && input.enabled === undefined) {\n throw new TypeError(\"[Sixb] AI limit policy update must change limit or enabled.\")\n }\n if (input.enabled !== undefined && typeof input.enabled !== \"boolean\") {\n throw new TypeError(\"[Sixb] AI limit enabled must be a boolean.\")\n }\n return {\n projectId: input.projectId,\n id: input.id,\n ...(input.limit === undefined ? {} : { limit: normalizeAiLimitQuantity(input.limit) }),\n ...(input.enabled === undefined ? {} : { enabled: input.enabled }),\n updatedAt: cloneValidDate(input.updatedAt ?? new Date(), \"updatedAt\"),\n }\n}\n\nexport function normalizeReserveAiModelCall(input: ReserveAiModelCallInput): {\n readonly identity: AiModelCallReservationIdentity\n readonly subjects: readonly AiLimitSubject[]\n readonly estimates: readonly AiLimitQuantity[]\n readonly modelKind?: ModelKind\n readonly period: AiLimitPeriod\n readonly reservedAt: Date\n} {\n const identity = normalizeAiModelCallReservationIdentity(input)\n const reservedAt = cloneValidDate(input.reservedAt ?? new Date(), \"reservedAt\")\n return {\n identity,\n subjects: normalizeAiLimitSubjects(input.subjects),\n estimates: normalizeAiLimitQuantities(input.estimates, \"estimates\"),\n ...(input.modelKind === undefined ? {} : { modelKind: input.modelKind }),\n period: aiLimitCalendarMonth(reservedAt),\n reservedAt,\n }\n}\n\nexport function normalizeAiModelCallReservationIdentity(\n input: AiModelCallReservationIdentity\n): AiModelCallReservationIdentity {\n assertNonBlank(input.projectId, \"projectId\")\n assertNonBlank(input.executionId, \"executionId\")\n if (!Number.isSafeInteger(input.attempt) || input.attempt <= 0) {\n throw new TypeError(\"[Sixb] AI limit reservation attempt must be a positive safe integer.\")\n }\n assertNonBlank(input.callId, \"callId\")\n return {\n projectId: input.projectId,\n executionId: input.executionId,\n attempt: input.attempt,\n callId: input.callId,\n }\n}\n\nexport function aiModelCallReservationKey(identity: AiModelCallReservationIdentity): string {\n return JSON.stringify([\n identity.projectId,\n identity.executionId,\n identity.attempt,\n identity.callId,\n ])\n}\n\nexport function aiLimitPolicyDimensionKey(\n policy: Pick<AiLimitPolicy, \"projectId\" | \"subject\" | \"limit\">\n): string {\n const amount = normalizeAiLimitAmount(policy.limit)\n return JSON.stringify([\n policy.projectId,\n aiLimitSubjectKey(policy.subject),\n amount.meter,\n amount.currency,\n ])\n}\n\nexport function aiLimitReservationRequestMatches(\n reservation: AiModelCallReservation,\n request: ReturnType<typeof normalizeReserveAiModelCall>\n): boolean {\n return reservation.requestKey === aiLimitReservationRequestKey(request)\n}\n\nexport function aiLimitReservationRequestKey(\n request: ReturnType<typeof normalizeReserveAiModelCall>\n): string {\n return JSON.stringify([\n request.period.start.toISOString(),\n request.subjects.map(aiLimitSubjectKey),\n request.estimates.map((quantity) => {\n const amount = normalizeAiLimitAmount(quantity)\n return [amount.meter, amount.currency, amount.amount.toString()]\n }),\n // Appended only when present, so keys of reservations made before model kinds stay valid.\n ...(request.modelKind === undefined ? [] : [request.modelKind]),\n ])\n}\n\nexport function aiLimitReservationBuckets(\n policies: readonly AiLimitPolicy[],\n subjects: readonly AiLimitSubject[],\n estimates: readonly AiLimitQuantity[],\n modelKind?: ModelKind\n): readonly AiLimitReservationBucket[] {\n const subjectKeys = new Set(subjects.map(aiLimitSubjectKey))\n const estimatesByDimension = new Map(\n estimates.map((estimate) => {\n const amount = normalizeAiLimitAmount(estimate)\n return [aiLimitAmountKey(amount), estimate] as const\n })\n )\n return policies\n .filter(\n (policy) =>\n subjectKeys.has(aiLimitSubjectKey(policy.subject)) &&\n aiLimitMeterApplies(policy.limit.meter, modelKind)\n )\n .flatMap((policy) => {\n const estimate = estimatesByDimension.get(\n aiLimitAmountKey(normalizeAiLimitAmount(policy.limit))\n )\n return estimate ? [{ subject: policy.subject, estimate }] : []\n })\n .sort((left, right) => {\n const subject = aiLimitSubjectKey(left.subject).localeCompare(\n aiLimitSubjectKey(right.subject)\n )\n if (subject !== 0) return subject\n return aiLimitAmountKey(normalizeAiLimitAmount(left.estimate)).localeCompare(\n aiLimitAmountKey(normalizeAiLimitAmount(right.estimate))\n )\n })\n}\n\nexport function aiLimitAccountingEntryAppliesToSubject(\n entry: AiLimitAccountingEntry,\n subject: AiLimitSubject\n): boolean {\n if (subject.type === \"project\") return true\n if (subject.type === \"group\") return entry.requesterGroupIds.includes(subject.id)\n return entry.requester?.type === subject.type && entry.requester.id === subject.id\n}\n\nexport function aiLimitSubjectsFromAccountingEntry(\n entry: AiLimitAccountingEntry\n): readonly AiLimitSubject[] {\n return normalizeAiLimitSubjects([\n ...entry.requesterGroupIds.map((id) => ({ type: \"group\" as const, id })),\n ...(entry.requester ? [entry.requester] : []),\n ])\n}\n\nexport function resolveAiLimitActual(\n entries: readonly AiLimitAccountingEntry[],\n dimension: Pick<NormalizedAiLimitAmount, \"meter\" | \"currency\">\n): ResolvedAiLimitActual {\n let amount = 0n\n let accountingStatus: ResolvedAiLimitActual[\"accountingStatus\"] = \"complete\"\n for (const entry of entries) {\n if (dimension.meter === \"tokens.total\") {\n if (!aiLimitMeterApplies(dimension.meter, entry.modelKind)) continue\n if (entry.totalTokens === undefined) {\n accountingStatus = \"unavailable\"\n } else {\n amount += BigInt(entry.totalTokens)\n }\n continue\n }\n if (\n entry.valuation?.status !== \"rated\" ||\n entry.valuation.money.currency !== dimension.currency\n ) {\n accountingStatus = \"unavailable\"\n continue\n }\n amount += BigInt(entry.valuation.money.amountNanos)\n }\n return { amount, accountingStatus }\n}\n\nexport function assertAiLimitAccountingMatchesReservation(\n reservation: AiModelCallReservation,\n entry: AiLimitAccountingEntry\n): void {\n if (\n entry.projectId !== reservation.projectId ||\n entry.executionId !== reservation.executionId ||\n entry.attempt !== reservation.attempt ||\n entry.callId !== reservation.callId\n ) {\n throw new AiLimitStorageError(\n \"usage_mismatch\",\n `[Sixb] AI usage record '${entry.usageRecordId}' does not belong to reservation '${reservation.callId}'.`\n )\n }\n}\n\nexport function cloneAiLimitPolicy(policy: AiLimitPolicy): AiLimitPolicy {\n return structuredClone(policy)\n}\n\nfunction normalizeAiMoney(money: AiMoney): AiMoney & { readonly currency: \"USD\" } {\n if (!money || typeof money !== \"object\") {\n throw new TypeError(\"[Sixb] AI limit cost amount must be AiMoney.\")\n }\n assertNonBlank(money.currency, \"cost currency\")\n if (money.currency !== \"USD\") {\n throw new TypeError(\"[Sixb] AI limit catalog-estimated cost currency must be 'USD'.\")\n }\n if (!/^(0|[1-9][0-9]*)$/.test(money.amountNanos)) {\n throw new TypeError(\n \"[Sixb] AI limit cost amountNanos must be a canonical non-negative integer string.\"\n )\n }\n if (BigInt(money.amountNanos) > SIGNED_INT64_MAX) {\n throw new RangeError(\"[Sixb] AI limit cost amountNanos exceeds the supported range.\")\n }\n return { currency: \"USD\", amountNanos: money.amountNanos }\n}\n\nexport function assertNonBlank(value: string, label: string): void {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`[Sixb] AI limit ${label} must be nonblank.`)\n }\n}\n\nexport function cloneValidDate(value: Date, label: string): Date {\n if (!(value instanceof Date) || !Number.isFinite(value.getTime())) {\n throw new TypeError(`[Sixb] AI limit ${label} must be a valid Date.`)\n }\n return new Date(value)\n}\n"
|
|
8
|
+
],
|
|
9
|
+
"mappings": "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",
|
|
10
|
+
"debugId": "0D8650E157BAD36864756E2164756E21",
|
|
11
|
+
"names": []
|
|
12
|
+
}
|
|
@@ -176,6 +176,80 @@ class SignInRefusedError2 extends Error {
|
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
178
|
|
|
179
|
+
// src/auth/profile.ts
|
|
180
|
+
var MAX_DISPLAY_NAME_LENGTH = 100;
|
|
181
|
+
var MAX_AVATAR_URL_LENGTH = 2048;
|
|
182
|
+
var FORBIDDEN_NAME_CHARACTERS = /[\p{Cc}\p{Cs}\u202A-\u202E\u2066-\u2069\u2028\u2029]/u;
|
|
183
|
+
var VISIBLE_CHARACTER = /[^\p{Z}\p{Cf}]/u;
|
|
184
|
+
var LOOPBACK_HOSTS = new Set(["localhost", "127.0.0.1", "[::1]"]);
|
|
185
|
+
function normalizeProfileChanges(input) {
|
|
186
|
+
if (input.displayName === undefined && input.avatarUrl === undefined) {
|
|
187
|
+
throw new AuthRuntimeError2("invalid_auth_input", "[Sixb] A profile update needs displayName or avatarUrl.");
|
|
188
|
+
}
|
|
189
|
+
const changes = {};
|
|
190
|
+
if (input.displayName !== undefined) {
|
|
191
|
+
changes.displayName = input.displayName === null ? null : normalizeDisplayName(input.displayName);
|
|
192
|
+
}
|
|
193
|
+
if (input.avatarUrl !== undefined) {
|
|
194
|
+
changes.avatarUrl = input.avatarUrl === null ? null : normalizeAvatarUrl(input.avatarUrl);
|
|
195
|
+
}
|
|
196
|
+
return changes;
|
|
197
|
+
}
|
|
198
|
+
function signInDisplayName2(value) {
|
|
199
|
+
const name = typeof value === "string" ? value.trim() : "";
|
|
200
|
+
return name && displayNameProblem(name) === null ? name : undefined;
|
|
201
|
+
}
|
|
202
|
+
function signInAvatarUrl2(value) {
|
|
203
|
+
return typeof value === "string" ? canonicalAvatarUrl(value.trim()) ?? undefined : undefined;
|
|
204
|
+
}
|
|
205
|
+
function normalizeDisplayName(value) {
|
|
206
|
+
const name = value.trim();
|
|
207
|
+
if (!name) {
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
const problem = displayNameProblem(name);
|
|
211
|
+
if (problem) {
|
|
212
|
+
throw new AuthRuntimeError2("invalid_auth_input", problem);
|
|
213
|
+
}
|
|
214
|
+
return name;
|
|
215
|
+
}
|
|
216
|
+
function normalizeAvatarUrl(value) {
|
|
217
|
+
const url = value.trim();
|
|
218
|
+
if (!url) {
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
const canonical = canonicalAvatarUrl(url);
|
|
222
|
+
if (!canonical) {
|
|
223
|
+
throw new AuthRuntimeError2("invalid_auth_input", `[Sixb] An avatar URL must be an https URL of at most ${MAX_AVATAR_URL_LENGTH} characters, without a user name or password.`);
|
|
224
|
+
}
|
|
225
|
+
return canonical;
|
|
226
|
+
}
|
|
227
|
+
function displayNameProblem(name) {
|
|
228
|
+
if (name.length > MAX_DISPLAY_NAME_LENGTH * 2 || [...name].length > MAX_DISPLAY_NAME_LENGTH) {
|
|
229
|
+
return `[Sixb] A display name can be at most ${MAX_DISPLAY_NAME_LENGTH} characters.`;
|
|
230
|
+
}
|
|
231
|
+
if (FORBIDDEN_NAME_CHARACTERS.test(name)) {
|
|
232
|
+
return "[Sixb] A display name cannot contain control, bidirectional or line separator characters.";
|
|
233
|
+
}
|
|
234
|
+
if (!VISIBLE_CHARACTER.test(name)) {
|
|
235
|
+
return "[Sixb] A display name needs at least one visible character.";
|
|
236
|
+
}
|
|
237
|
+
return null;
|
|
238
|
+
}
|
|
239
|
+
function canonicalAvatarUrl(value) {
|
|
240
|
+
let url;
|
|
241
|
+
try {
|
|
242
|
+
url = new URL(value);
|
|
243
|
+
} catch {
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
246
|
+
const secure = url.protocol === "https:" || url.protocol === "http:" && LOOPBACK_HOSTS.has(url.hostname);
|
|
247
|
+
if (!secure || url.username || url.password || url.href.length > MAX_AVATAR_URL_LENGTH) {
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
return url.href;
|
|
251
|
+
}
|
|
252
|
+
|
|
179
253
|
// src/auth/validation.ts
|
|
180
254
|
var DAY = 24 * 60 * 60 * 1000;
|
|
181
255
|
var DEFAULT_AUTH_SESSION_IDLE_TIMEOUT_MS2 = 30 * DAY;
|
|
@@ -292,6 +366,6 @@ function assertValidStrategy(strategy) {
|
|
|
292
366
|
}
|
|
293
367
|
}
|
|
294
368
|
|
|
295
|
-
export { DEFAULT_SESSION_COOKIE_NAME2, DEFAULT_CSRF_COOKIE_NAME2, resolveAuthCookieOptions2, parseCookieHeader2, getCookie2, serializeCookie2, shouldUseSecureCookies2, createSessionCookieHeader2, createCsrfCookieHeader2, clearSessionCookieHeader2, clearCsrfCookieHeader2, AuthRuntimeError2, SignInRefusedError2, DEFAULT_AUTH_SESSION_IDLE_TIMEOUT_MS2, DEFAULT_AUTH_SESSION_RENEWAL_WINDOW_MS2, DEFAULT_AUTH_INVITATION_TTL_MS2, MAX_AUTH_INVITATION_TTL_MS2, DEFAULT_AUTH_SESSION_CACHE_TTL_MS2, resolveAuthConfig2, resolveInvitationExpiresAt, assertNonEmpty3, normalizePagination, isMagicLinkAuthStrategy2, isInvitationDeliveryAuthStrategy2, isOidcAuthStrategy2 };
|
|
369
|
+
export { DEFAULT_SESSION_COOKIE_NAME2, DEFAULT_CSRF_COOKIE_NAME2, resolveAuthCookieOptions2, parseCookieHeader2, getCookie2, serializeCookie2, shouldUseSecureCookies2, createSessionCookieHeader2, createCsrfCookieHeader2, clearSessionCookieHeader2, clearCsrfCookieHeader2, AuthRuntimeError2, SignInRefusedError2, normalizeProfileChanges, signInDisplayName2, signInAvatarUrl2, DEFAULT_AUTH_SESSION_IDLE_TIMEOUT_MS2, DEFAULT_AUTH_SESSION_RENEWAL_WINDOW_MS2, DEFAULT_AUTH_INVITATION_TTL_MS2, MAX_AUTH_INVITATION_TTL_MS2, DEFAULT_AUTH_SESSION_CACHE_TTL_MS2, resolveAuthConfig2, resolveInvitationExpiresAt, assertNonEmpty3, normalizePagination, isMagicLinkAuthStrategy2, isInvitationDeliveryAuthStrategy2, isOidcAuthStrategy2 };
|
|
296
370
|
|
|
297
|
-
//# debugId=
|
|
371
|
+
//# debugId=EE785E31D45CA72264756E2164756E21
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/auth/cookies.ts", "../src/auth/errors.ts", "../src/auth/validation.ts"],
|
|
3
|
+
"sources": ["../src/auth/cookies.ts", "../src/auth/errors.ts", "../src/auth/profile.ts", "../src/auth/validation.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import type { AuthCookieOptions } from \"./types\"\n\n// The names the app's cookies had beside Atlas's, so its sessions survived Atlas leaving.\nexport const DEFAULT_SESSION_COOKIE_NAME = \"sixb_session_app\"\nexport const DEFAULT_CSRF_COOKIE_NAME = \"sixb_csrf_app\"\n\nexport interface ResolvedAuthCookieOptions {\n readonly sessionCookieName: string\n readonly csrfCookieName: string\n readonly domain?: string\n readonly secure: boolean | \"auto\"\n readonly sameSite: \"strict\"\n readonly csrfHttpOnly: boolean\n}\n\ninterface CookieSerializationOptions {\n readonly name: string\n readonly value: string\n readonly httpOnly?: boolean\n readonly maxAge?: number\n readonly expires?: Date\n readonly domain?: string\n readonly secure?: boolean\n readonly sameSite: \"strict\"\n}\n\nexport function resolveAuthCookieOptions(\n options: AuthCookieOptions | undefined\n): ResolvedAuthCookieOptions {\n const resolved = {\n sessionCookieName: options?.sessionCookieName ?? DEFAULT_SESSION_COOKIE_NAME,\n csrfCookieName: options?.csrfCookieName ?? DEFAULT_CSRF_COOKIE_NAME,\n domain: options?.cookieDomain,\n secure: options?.secure ?? \"auto\",\n sameSite: options?.sameSite ?? \"strict\",\n csrfHttpOnly: options?.csrfHttpOnly ?? false,\n }\n\n assertValidCookieOptions(resolved)\n return resolved\n}\n\nexport function parseCookieHeader(header: string | null): ReadonlyMap<string, string> {\n const cookies = new Map<string, string>()\n if (!header) {\n return cookies\n }\n\n for (const part of header.split(\";\")) {\n const separator = part.indexOf(\"=\")\n if (separator <= 0) {\n continue\n }\n\n const name = part.slice(0, separator).trim()\n if (!name || cookies.has(name)) {\n continue\n }\n\n const value = part.slice(separator + 1).trim()\n cookies.set(name, value)\n }\n\n return cookies\n}\n\nexport function getCookie(request: Request, name: string): string | undefined {\n return parseCookieHeader(request.headers.get(\"cookie\")).get(name)\n}\n\nexport function serializeCookie(options: CookieSerializationOptions): string {\n const parts = [`${options.name}=${options.value}`]\n\n parts.push(\"Path=/\")\n parts.push(\"SameSite=Strict\")\n\n if (options.domain) {\n parts.push(`Domain=${options.domain}`)\n }\n\n if (options.httpOnly) {\n parts.push(\"HttpOnly\")\n }\n\n if (options.secure) {\n parts.push(\"Secure\")\n }\n\n if (options.maxAge !== undefined) {\n parts.push(`Max-Age=${Math.trunc(options.maxAge)}`)\n }\n\n if (options.expires) {\n parts.push(`Expires=${options.expires.toUTCString()}`)\n }\n\n return parts.join(\"; \")\n}\n\nexport function shouldUseSecureCookies(\n request: Request,\n options: ResolvedAuthCookieOptions\n): boolean {\n if (\n requiresSecureCookieName(options.sessionCookieName) ||\n requiresSecureCookieName(options.csrfCookieName)\n ) {\n return true\n }\n\n if (typeof options.secure === \"boolean\") {\n return options.secure\n }\n\n const url = new URL(request.url)\n if (isLocalhost(url.hostname)) {\n return false\n }\n\n return url.protocol === \"https:\" || process.env.NODE_ENV === \"production\"\n}\n\nexport function createSessionCookieHeader(params: {\n readonly request: Request\n readonly value: string\n readonly expiresAt: Date\n readonly options: ResolvedAuthCookieOptions\n}): string {\n const lifetime = resolveCookieLifetime(params.expiresAt)\n return serializeCookie({\n name: params.options.sessionCookieName,\n value: params.value,\n httpOnly: true,\n ...lifetime,\n domain: params.options.domain,\n secure: shouldUseSecureCookies(params.request, params.options),\n sameSite: params.options.sameSite,\n })\n}\n\nexport function createCsrfCookieHeader(params: {\n readonly request: Request\n readonly value: string\n readonly expiresAt: Date\n readonly options: ResolvedAuthCookieOptions\n}): string {\n const lifetime = resolveCookieLifetime(params.expiresAt)\n return serializeCookie({\n name: params.options.csrfCookieName,\n value: params.value,\n httpOnly: params.options.csrfHttpOnly,\n ...lifetime,\n domain: params.options.domain,\n secure: shouldUseSecureCookies(params.request, params.options),\n sameSite: params.options.sameSite,\n })\n}\n\nfunction resolveCookieLifetime(expiresAt: Date): {\n readonly maxAge: number\n readonly expires: Date\n} {\n const expiresAtMs = expiresAt.getTime()\n if (!Number.isFinite(expiresAtMs)) {\n throw new Error(\"[Sixb] Auth cookie expiresAt must be a valid date.\")\n }\n\n return {\n maxAge: Math.max(0, Math.floor((expiresAtMs - Date.now()) / 1000)),\n expires: new Date(expiresAtMs),\n }\n}\n\nexport function clearSessionCookieHeader(params: {\n readonly request: Request\n readonly options: ResolvedAuthCookieOptions\n}): string {\n return serializeCookie({\n name: params.options.sessionCookieName,\n value: \"\",\n httpOnly: true,\n maxAge: 0,\n expires: new Date(0),\n domain: params.options.domain,\n secure: shouldUseSecureCookies(params.request, params.options),\n sameSite: params.options.sameSite,\n })\n}\n\nexport function clearCsrfCookieHeader(params: {\n readonly request: Request\n readonly options: ResolvedAuthCookieOptions\n}): string {\n return serializeCookie({\n name: params.options.csrfCookieName,\n value: \"\",\n maxAge: 0,\n expires: new Date(0),\n domain: params.options.domain,\n secure: shouldUseSecureCookies(params.request, params.options),\n sameSite: params.options.sameSite,\n })\n}\n\nfunction isLocalhost(hostname: string): boolean {\n return hostname === \"localhost\" || hostname === \"127.0.0.1\" || hostname === \"::1\"\n}\n\nfunction assertValidCookieOptions(options: ResolvedAuthCookieOptions): void {\n assertValidCookieName(options.sessionCookieName, \"sessionCookieName\")\n assertValidCookieName(options.csrfCookieName, \"csrfCookieName\")\n\n if (options.sameSite !== \"strict\") {\n throw new Error(\"[Sixb] Auth cookie sameSite must be 'strict'.\")\n }\n\n if (\n options.domain &&\n (isHostPrefixedCookieName(options.sessionCookieName) ||\n isHostPrefixedCookieName(options.csrfCookieName))\n ) {\n throw new Error(\"[Sixb] __Host- auth cookies cannot be configured with cookieDomain.\")\n }\n\n if (\n options.secure === false &&\n (requiresSecureCookieName(options.sessionCookieName) ||\n requiresSecureCookieName(options.csrfCookieName))\n ) {\n throw new Error(\"[Sixb] __Host- auth cookies require secure cookies.\")\n }\n}\n\nfunction assertValidCookieName(name: string, label: string): void {\n if (!/^[!#$%&'*+\\-.^_`|~0-9A-Za-z]+$/.test(name)) {\n throw new Error(`[Sixb] Auth cookie ${label} '${name}' is not a valid cookie name.`)\n }\n}\n\nfunction isHostPrefixedCookieName(name: string): boolean {\n return name.startsWith(\"__Host-\")\n}\n\nfunction requiresSecureCookieName(name: string): boolean {\n return isHostPrefixedCookieName(name) || name.startsWith(\"__Secure-\")\n}\n",
|
|
6
6
|
"export type AuthRuntimeErrorCode =\n | \"authentication_required\"\n | \"auth_storage_missing\"\n | \"authorization_denied\"\n | \"invalid_auth_input\"\n | \"invalid_auth_config\"\n | \"rate_limited\"\n | \"production_auth_required\"\n\nexport class AuthRuntimeError extends Error {\n readonly name = \"AuthRuntimeError\"\n\n constructor(\n readonly code: AuthRuntimeErrorCode,\n message: string\n ) {\n super(message)\n }\n}\n\n/** Why a strategy refused someone who authenticated. Each is something a person can act on. */\nexport type SignInRefusalReason =\n | \"not_invited\"\n | \"suspended\"\n | \"domain_not_allowed\"\n | \"no_trusted_address\"\n\n/**\n * Thrown by a strategy that refuses a sign-in for a known reason. The sign-in page tells the\n * person which reason, naming `email` when there is one; `message` is for the server log.\n */\nexport class SignInRefusedError extends Error {\n readonly name = \"SignInRefusedError\"\n\n constructor(\n readonly reason: SignInRefusalReason,\n message: string,\n readonly email?: string\n ) {\n super(message)\n }\n}\n",
|
|
7
|
+
"import { AuthRuntimeError } from \"./errors\"\nimport type { UpdateOwnProfileInput } from \"./types\"\n\nconst MAX_DISPLAY_NAME_LENGTH = 100\nconst MAX_AVATAR_URL_LENGTH = 2048\n\n// What a name must not carry: control characters, unpaired surrogates, bidirectional overrides and\n// isolates, and line or paragraph separators. Other format characters stay, such as the zero-width\n// joiner emoji are built with.\nconst FORBIDDEN_NAME_CHARACTERS = /[\\p{Cc}\\p{Cs}\\u202A-\\u202E\\u2066-\\u2069\\u2028\\u2029]/u\nconst VISIBLE_CHARACTER = /[^\\p{Z}\\p{Cf}]/u\n\n// Plain http only reaches a picture served by the developer's own machine.\nconst LOOPBACK_HOSTS: ReadonlySet<string> = new Set([\"localhost\", \"127.0.0.1\", \"[::1]\"])\n\n/** Validate the changes a person makes to their own profile. An empty value clears the field. */\nexport function normalizeProfileChanges(input: UpdateOwnProfileInput): UpdateOwnProfileInput {\n if (input.displayName === undefined && input.avatarUrl === undefined) {\n throw new AuthRuntimeError(\n \"invalid_auth_input\",\n \"[Sixb] A profile update needs displayName or avatarUrl.\"\n )\n }\n\n const changes: { displayName?: string | null; avatarUrl?: string | null } = {}\n if (input.displayName !== undefined) {\n changes.displayName =\n input.displayName === null ? null : normalizeDisplayName(input.displayName)\n }\n if (input.avatarUrl !== undefined) {\n changes.avatarUrl = input.avatarUrl === null ? null : normalizeAvatarUrl(input.avatarUrl)\n }\n\n return changes\n}\n\n/**\n * A name a sign-in supplies, such as one an identity provider sent, held to the rules a person's own\n * name follows. A value that breaks them counts as not sent, so it never makes a sign-in fail.\n */\nexport function signInDisplayName(value: unknown): string | undefined {\n const name = typeof value === \"string\" ? value.trim() : \"\"\n return name && displayNameProblem(name) === null ? name : undefined\n}\n\n/** A picture a sign-in supplies, treated as {@link signInDisplayName} treats a name. */\nexport function signInAvatarUrl(value: unknown): string | undefined {\n return typeof value === \"string\" ? (canonicalAvatarUrl(value.trim()) ?? undefined) : undefined\n}\n\nfunction normalizeDisplayName(value: string): string | null {\n const name = value.trim()\n if (!name) {\n return null\n }\n\n const problem = displayNameProblem(name)\n if (problem) {\n throw new AuthRuntimeError(\"invalid_auth_input\", problem)\n }\n\n return name\n}\n\nfunction normalizeAvatarUrl(value: string): string | null {\n const url = value.trim()\n if (!url) {\n return null\n }\n\n const canonical = canonicalAvatarUrl(url)\n if (!canonical) {\n throw new AuthRuntimeError(\n \"invalid_auth_input\",\n `[Sixb] An avatar URL must be an https URL of at most ${MAX_AVATAR_URL_LENGTH} characters, without a user name or password.`\n )\n }\n\n return canonical\n}\n\n// Why a trimmed, non-empty name cannot be used, or null when it can. The limit counts code points,\n// so an emoji is one character. A code point is at most two UTF-16 units, so a string longer than\n// twice the limit is refused before it is split, which an unauthenticated sign-in could make costly.\nfunction displayNameProblem(name: string): string | null {\n if (name.length > MAX_DISPLAY_NAME_LENGTH * 2 || [...name].length > MAX_DISPLAY_NAME_LENGTH) {\n return `[Sixb] A display name can be at most ${MAX_DISPLAY_NAME_LENGTH} characters.`\n }\n\n if (FORBIDDEN_NAME_CHARACTERS.test(name)) {\n return \"[Sixb] A display name cannot contain control, bidirectional or line separator characters.\"\n }\n\n if (!VISIBLE_CHARACTER.test(name)) {\n return \"[Sixb] A display name needs at least one visible character.\"\n }\n\n return null\n}\n\n// The app loads pictures over https only, so that is all a profile keeps, written as the browser\n// would resolve it.\nfunction canonicalAvatarUrl(value: string): string | null {\n let url: URL\n try {\n url = new URL(value)\n } catch {\n return null\n }\n\n const secure =\n url.protocol === \"https:\" || (url.protocol === \"http:\" && LOOPBACK_HOSTS.has(url.hostname))\n if (!secure || url.username || url.password || url.href.length > MAX_AVATAR_URL_LENGTH) {\n return null\n }\n\n return url.href\n}\n",
|
|
7
8
|
"import { resolveAuthCookieOptions } from \"./cookies\"\nimport { AuthRuntimeError } from \"./errors\"\nimport type {\n AuthSessionOptions,\n AuthStrategy,\n InvitationDeliveryAuthStrategy,\n MagicLinkAuthStrategy,\n OidcAuthStrategy,\n ResolvedAuthConfig,\n SixbAuthConfig,\n} from \"./types\"\n\nconst DAY = 24 * 60 * 60 * 1000\n\nexport const DEFAULT_AUTH_SESSION_IDLE_TIMEOUT_MS = 30 * DAY\nexport const DEFAULT_AUTH_SESSION_RENEWAL_WINDOW_MS = 7 * DAY\nexport const DEFAULT_AUTH_INVITATION_TTL_MS = 7 * DAY\nexport const MAX_AUTH_INVITATION_TTL_MS = 30 * DAY\n/**\n * Default in-process session cache window. Short enough that a revoked session lingers\n * only briefly, long enough to collapse a burst of requests to a single auth resolution.\n */\nexport const DEFAULT_AUTH_SESSION_CACHE_TTL_MS = 5_000\n\nexport function resolveAuthConfig(config: SixbAuthConfig | undefined): ResolvedAuthConfig {\n if (!config) {\n return {\n strategy: null,\n session: resolveAuthSessionOptions(undefined),\n cookies: resolveAuthCookieOptions(undefined),\n }\n }\n\n const strategy = \"strategy\" in config ? config.strategy : config\n assertValidStrategy(strategy)\n\n return {\n strategy,\n session: resolveAuthSessionOptions(\"strategy\" in config ? config.session : undefined),\n cookies: resolveAuthCookieOptions(\"strategy\" in config ? config.cookies : undefined),\n }\n}\n\nexport function resolveInvitationExpiresAt(value: Date | undefined, now: Date): Date {\n const expiresAt = value\n ? new Date(value)\n : new Date(now.getTime() + DEFAULT_AUTH_INVITATION_TTL_MS)\n const expiresAtTime = expiresAt.getTime()\n\n if (!Number.isFinite(expiresAtTime)) {\n throw new AuthRuntimeError(\n \"invalid_auth_input\",\n \"[Sixb] Invitation expiresAt must be a valid date.\"\n )\n }\n\n if (expiresAtTime <= now.getTime()) {\n throw new AuthRuntimeError(\n \"invalid_auth_input\",\n \"[Sixb] Invitation expiresAt must be in the future.\"\n )\n }\n\n if (expiresAtTime > now.getTime() + MAX_AUTH_INVITATION_TTL_MS) {\n throw new AuthRuntimeError(\n \"invalid_auth_input\",\n \"[Sixb] Invitation expiresAt must be no more than 30 days in the future.\"\n )\n }\n\n return expiresAt\n}\n\nexport function sanitizeReturnTo(value: string | undefined): string {\n if (!value || !value.startsWith(\"/\") || value.startsWith(\"//\")) {\n return \"/\"\n }\n\n try {\n const parsed = new URL(value, \"http://sixb.local\")\n if (parsed.origin !== \"http://sixb.local\") {\n return \"/\"\n }\n\n return `${parsed.pathname}${parsed.search}${parsed.hash}`\n } catch {\n return \"/\"\n }\n}\n\nexport function assertNonEmpty(value: string, label: string): string {\n const normalized = value.trim()\n if (!normalized) {\n throw new AuthRuntimeError(\"invalid_auth_input\", `[Sixb] ${label} must be a non-empty string.`)\n }\n return normalized\n}\n\nexport function normalizePagination(input: { readonly limit?: number; readonly offset?: number }): {\n readonly limit?: number\n readonly offset: number\n} {\n if (input.limit !== undefined && (!Number.isInteger(input.limit) || input.limit < 0)) {\n throw new AuthRuntimeError(\n \"invalid_auth_input\",\n \"[Sixb] Invitation list limit must be a non-negative integer.\"\n )\n }\n\n if (input.offset !== undefined && (!Number.isInteger(input.offset) || input.offset < 0)) {\n throw new AuthRuntimeError(\n \"invalid_auth_input\",\n \"[Sixb] Invitation list offset must be a non-negative integer.\"\n )\n }\n\n return {\n limit: input.limit,\n offset: input.offset ?? 0,\n }\n}\n\nfunction resolveAuthSessionOptions(\n options: AuthSessionOptions | undefined\n): ResolvedAuthConfig[\"session\"] {\n const idleTimeoutMs = options?.idleTimeoutMs ?? DEFAULT_AUTH_SESSION_IDLE_TIMEOUT_MS\n if (!Number.isFinite(idleTimeoutMs) || idleTimeoutMs <= 0) {\n throw new AuthRuntimeError(\n \"invalid_auth_config\",\n \"[Sixb] Auth session idleTimeoutMs must be a positive finite number.\"\n )\n }\n\n const renewalWindowMs = options?.renewalWindowMs ?? DEFAULT_AUTH_SESSION_RENEWAL_WINDOW_MS\n if (!Number.isFinite(renewalWindowMs) || renewalWindowMs <= 0) {\n throw new AuthRuntimeError(\n \"invalid_auth_config\",\n \"[Sixb] Auth session renewalWindowMs must be a positive finite number.\"\n )\n }\n if (renewalWindowMs >= idleTimeoutMs) {\n throw new AuthRuntimeError(\n \"invalid_auth_config\",\n \"[Sixb] Auth session renewalWindowMs must be less than idleTimeoutMs.\"\n )\n }\n\n const absoluteTimeoutMs = options?.absoluteTimeoutMs\n if (\n absoluteTimeoutMs !== undefined &&\n (!Number.isFinite(absoluteTimeoutMs) || absoluteTimeoutMs <= 0)\n ) {\n throw new AuthRuntimeError(\n \"invalid_auth_config\",\n \"[Sixb] Auth session absoluteTimeoutMs must be a positive finite number when configured.\"\n )\n }\n if (absoluteTimeoutMs !== undefined && absoluteTimeoutMs < idleTimeoutMs) {\n throw new AuthRuntimeError(\n \"invalid_auth_config\",\n \"[Sixb] Auth session absoluteTimeoutMs must be greater than or equal to idleTimeoutMs.\"\n )\n }\n\n const cacheTtlMs = options?.cacheTtlMs ?? DEFAULT_AUTH_SESSION_CACHE_TTL_MS\n if (!Number.isFinite(cacheTtlMs) || cacheTtlMs < 0) {\n throw new AuthRuntimeError(\n \"invalid_auth_config\",\n \"[Sixb] Auth session cacheTtlMs must be a non-negative finite number.\"\n )\n }\n if (cacheTtlMs >= renewalWindowMs) {\n throw new AuthRuntimeError(\n \"invalid_auth_config\",\n \"[Sixb] Auth session cacheTtlMs must be less than renewalWindowMs.\"\n )\n }\n\n return {\n idleTimeoutMs,\n renewalWindowMs,\n ...(absoluteTimeoutMs === undefined ? {} : { absoluteTimeoutMs }),\n cacheTtlMs,\n }\n}\n\nexport function isMagicLinkAuthStrategy(\n strategy: AuthStrategy | null\n): strategy is MagicLinkAuthStrategy {\n if (!strategy || strategy.kind !== \"magicLink\") {\n return false\n }\n\n const candidate = strategy as {\n readonly requestMagicLink?: unknown\n readonly completeMagicLinkSignIn?: unknown\n }\n\n return (\n typeof candidate.requestMagicLink === \"function\" &&\n typeof candidate.completeMagicLinkSignIn === \"function\"\n )\n}\n\nexport function isInvitationDeliveryAuthStrategy(\n strategy: AuthStrategy | null\n): strategy is InvitationDeliveryAuthStrategy {\n if (!strategy) {\n return false\n }\n\n const candidate = strategy as {\n readonly deliverInvitation?: unknown\n }\n\n return typeof candidate.deliverInvitation === \"function\"\n}\n\nexport function isOidcAuthStrategy(strategy: AuthStrategy | null): strategy is OidcAuthStrategy {\n if (!strategy || strategy.kind !== \"oidc\") {\n return false\n }\n\n const candidate = strategy as {\n readonly startOidcSignIn?: unknown\n readonly completeOidcSignIn?: unknown\n }\n\n return (\n typeof candidate.startOidcSignIn === \"function\" &&\n typeof candidate.completeOidcSignIn === \"function\"\n )\n}\n\nfunction assertValidStrategy(strategy: AuthStrategy): void {\n if (!strategy.id.trim()) {\n throw new AuthRuntimeError(\"invalid_auth_config\", \"[Sixb] Auth strategy id is required.\")\n }\n}\n"
|
|
8
9
|
],
|
|
9
|
-
"mappings": "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
|
|
10
|
-
"debugId": "
|
|
10
|
+
"mappings": "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",
|
|
11
|
+
"debugId": "EE785E31D45CA72264756E2164756E21",
|
|
11
12
|
"names": []
|
|
12
13
|
}
|