@sixb/core 0.1.20 → 0.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/commit-edits.d.ts +3 -1
- package/dist/actions/commit-edits.d.ts.map +1 -1
- package/dist/actions/execution.d.ts.map +1 -1
- package/dist/actions/index.js +71 -60
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/read-facade.d.ts +9 -1
- package/dist/actions/read-facade.d.ts.map +1 -1
- package/dist/actions/request.d.ts +15 -1
- package/dist/actions/request.d.ts.map +1 -1
- package/dist/actions/run/context.d.ts +1 -0
- package/dist/actions/run/context.d.ts.map +1 -1
- package/dist/actions/run/execute.d.ts +2 -3
- package/dist/actions/run/execute.d.ts.map +1 -1
- package/dist/actions/run/executor.d.ts +3 -0
- package/dist/actions/run/executor.d.ts.map +1 -1
- package/dist/actions/run/normalize.d.ts +2 -1
- package/dist/actions/run/normalize.d.ts.map +1 -1
- package/dist/actions/run/signals.d.ts +1 -3
- package/dist/actions/run/signals.d.ts.map +1 -1
- package/dist/actions/run/types.d.ts +16 -1
- package/dist/actions/run/types.d.ts.map +1 -1
- package/dist/actions/run-authorization.d.ts +23 -0
- package/dist/actions/run-authorization.d.ts.map +1 -1
- package/dist/actions/types/context.d.ts +17 -1
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/validators.d.ts.map +1 -1
- package/dist/activity/connection.d.ts +62 -0
- package/dist/activity/connection.d.ts.map +1 -0
- package/dist/activity/device.d.ts +8 -0
- package/dist/activity/device.d.ts.map +1 -0
- package/dist/activity/execution.d.ts +48 -0
- package/dist/activity/execution.d.ts.map +1 -0
- package/dist/activity/service.d.ts +79 -0
- package/dist/activity/service.d.ts.map +1 -0
- package/dist/activity/shares.d.ts +24 -0
- package/dist/activity/shares.d.ts.map +1 -0
- package/dist/activity/timeline.d.ts +103 -0
- package/dist/activity/timeline.d.ts.map +1 -0
- package/dist/agents/accounting.d.ts +15 -0
- package/dist/agents/accounting.d.ts.map +1 -0
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/agent-mail.d.ts +9 -0
- package/dist/agents/agent-mail.d.ts.map +1 -0
- package/dist/agents/api-gateway.d.ts +5 -0
- package/dist/agents/api-gateway.d.ts.map +1 -1
- package/dist/agents/approval-continuation.d.ts +23 -0
- package/dist/agents/approval-continuation.d.ts.map +1 -0
- package/dist/agents/approval-executor.d.ts +56 -0
- package/dist/agents/approval-executor.d.ts.map +1 -0
- package/dist/agents/approval-outcome.d.ts +8 -0
- package/dist/agents/approval-outcome.d.ts.map +1 -0
- package/dist/agents/approvals.d.ts +210 -0
- package/dist/agents/approvals.d.ts.map +1 -0
- package/dist/agents/authority.d.ts +10 -0
- package/dist/agents/authority.d.ts.map +1 -1
- package/dist/agents/builders.d.ts.map +1 -1
- package/dist/agents/cancel.d.ts +23 -0
- package/dist/agents/cancel.d.ts.map +1 -0
- package/dist/agents/child-question.d.ts +18 -0
- package/dist/agents/child-question.d.ts.map +1 -0
- package/dist/agents/children.d.ts +99 -0
- package/dist/agents/children.d.ts.map +1 -0
- package/dist/agents/context/index.js +1 -1
- package/dist/agents/context-compaction.d.ts.map +1 -1
- package/dist/agents/errors.d.ts +13 -1
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/execution.d.ts +180 -14
- package/dist/agents/execution.d.ts.map +1 -1
- package/dist/agents/fork.d.ts +16 -0
- package/dist/agents/fork.d.ts.map +1 -0
- package/dist/agents/ids.d.ts +7 -0
- package/dist/agents/ids.d.ts.map +1 -1
- package/dist/agents/index.d.ts +20 -8
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +170 -84
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/memory-execution.d.ts +57 -0
- package/dist/agents/memory-execution.d.ts.map +1 -0
- package/dist/agents/memory.d.ts +49 -0
- package/dist/agents/memory.d.ts.map +1 -0
- package/dist/agents/message.d.ts +50 -1
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/model-loop.d.ts +19 -0
- package/dist/agents/model-loop.d.ts.map +1 -1
- package/dist/agents/model-routing.d.ts +19 -0
- package/dist/agents/model-routing.d.ts.map +1 -0
- package/dist/agents/participants.d.ts +18 -0
- package/dist/agents/participants.d.ts.map +1 -0
- package/dist/agents/reference.d.ts.map +1 -1
- package/dist/agents/request.d.ts +36 -2
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/run-scope.d.ts +51 -0
- package/dist/agents/run-scope.d.ts.map +1 -0
- package/dist/agents/skills.d.ts.map +1 -1
- package/dist/agents/streams/index.d.ts +3 -2
- package/dist/agents/streams/index.d.ts.map +1 -1
- package/dist/agents/streams/index.js +8 -4
- package/dist/agents/streams/index.js.map +1 -1
- package/dist/agents/streams/internal.d.ts +1 -1
- package/dist/agents/streams/internal.d.ts.map +1 -1
- package/dist/agents/streams/internal.js +6 -4
- package/dist/agents/streams/internal.js.map +1 -1
- package/dist/agents/streams/protocol.d.ts +122 -3
- package/dist/agents/streams/protocol.d.ts.map +1 -1
- package/dist/agents/subagent-runs.d.ts +12 -0
- package/dist/agents/subagent-runs.d.ts.map +1 -0
- package/dist/agents/thread-access.d.ts +53 -0
- package/dist/agents/thread-access.d.ts.map +1 -0
- package/dist/agents/tool-definition.d.ts +5 -4
- package/dist/agents/tool-definition.d.ts.map +1 -1
- package/dist/agents/types.d.ts +31 -12
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/validation.d.ts +1 -1
- package/dist/agents/validation.d.ts.map +1 -1
- package/dist/artifacts/access.d.ts +52 -0
- package/dist/artifacts/access.d.ts.map +1 -0
- package/dist/artifacts/address.d.ts +48 -0
- package/dist/artifacts/address.d.ts.map +1 -0
- package/dist/artifacts/canvas.d.ts +92 -0
- package/dist/artifacts/canvas.d.ts.map +1 -0
- package/dist/artifacts/csv.d.ts +27 -0
- package/dist/artifacts/csv.d.ts.map +1 -0
- package/dist/artifacts/errors.d.ts +16 -0
- package/dist/artifacts/errors.d.ts.map +1 -0
- package/dist/artifacts/execution.d.ts +138 -0
- package/dist/artifacts/execution.d.ts.map +1 -0
- package/dist/artifacts/formula/check.d.ts +24 -0
- package/dist/artifacts/formula/check.d.ts.map +1 -0
- package/dist/artifacts/formula/evaluate.d.ts +32 -0
- package/dist/artifacts/formula/evaluate.d.ts.map +1 -0
- package/dist/artifacts/formula/index.d.ts +38 -0
- package/dist/artifacts/formula/index.d.ts.map +1 -0
- package/dist/artifacts/formula/parser.d.ts +67 -0
- package/dist/artifacts/formula/parser.d.ts.map +1 -0
- package/dist/artifacts/frames/assets.d.ts +30 -0
- package/dist/artifacts/frames/assets.d.ts.map +1 -0
- package/dist/artifacts/frames/entries.d.ts +19 -0
- package/dist/artifacts/frames/entries.d.ts.map +1 -0
- package/dist/artifacts/frames/grants.d.ts +37 -0
- package/dist/artifacts/frames/grants.d.ts.map +1 -0
- package/dist/artifacts/frames/index.d.ts +12 -0
- package/dist/artifacts/frames/index.d.ts.map +1 -0
- package/dist/artifacts/frames/index.js +1285 -0
- package/dist/artifacts/frames/index.js.map +16 -0
- package/dist/artifacts/frames/kit.d.ts +71 -0
- package/dist/artifacts/frames/kit.d.ts.map +1 -0
- package/dist/artifacts/frames/probe.d.ts +45 -0
- package/dist/artifacts/frames/probe.d.ts.map +1 -0
- package/dist/artifacts/frames/protocol.d.ts +167 -0
- package/dist/artifacts/frames/protocol.d.ts.map +1 -0
- package/dist/artifacts/frames/runtime.d.ts +31 -0
- package/dist/artifacts/frames/runtime.d.ts.map +1 -0
- package/dist/artifacts/html.d.ts +6 -0
- package/dist/artifacts/html.d.ts.map +1 -0
- package/dist/artifacts/ids.d.ts +5 -0
- package/dist/artifacts/ids.d.ts.map +1 -0
- package/dist/artifacts/index.d.ts +22 -0
- package/dist/artifacts/index.d.ts.map +1 -0
- package/dist/artifacts/index.js +247 -0
- package/dist/artifacts/index.js.map +10 -0
- package/dist/artifacts/kinds.d.ts +5 -0
- package/dist/artifacts/kinds.d.ts.map +1 -0
- package/dist/artifacts/limits.d.ts +58 -0
- package/dist/artifacts/limits.d.ts.map +1 -0
- package/dist/artifacts/live-sheet.d.ts +65 -0
- package/dist/artifacts/live-sheet.d.ts.map +1 -0
- package/dist/artifacts/outline.d.ts +70 -0
- package/dist/artifacts/outline.d.ts.map +1 -0
- package/dist/artifacts/publish/files.d.ts +15 -0
- package/dist/artifacts/publish/files.d.ts.map +1 -0
- package/dist/artifacts/publish/index.d.ts +7 -0
- package/dist/artifacts/publish/index.d.ts.map +1 -0
- package/dist/artifacts/publish/index.js +76 -0
- package/dist/{chunk-7n30ybym.js.map → artifacts/publish/index.js.map} +1 -1
- package/dist/artifacts/publish/publish.d.ts +84 -0
- package/dist/artifacts/publish/publish.d.ts.map +1 -0
- package/dist/artifacts/publish/queries.d.ts +33 -0
- package/dist/artifacts/publish/queries.d.ts.map +1 -0
- package/dist/artifacts/publish/references.d.ts +30 -0
- package/dist/artifacts/publish/references.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/canvas.d.ts +18 -0
- package/dist/artifacts/publish/validate/canvas.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/document.d.ts +17 -0
- package/dist/artifacts/publish/validate/document.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/file.d.ts +8 -0
- package/dist/artifacts/publish/validate/file.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/html.d.ts +20 -0
- package/dist/artifacts/publish/validate/html.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/page.d.ts +15 -0
- package/dist/artifacts/publish/validate/page.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/sheet.d.ts +23 -0
- package/dist/artifacts/publish/validate/sheet.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/slides.d.ts +15 -0
- package/dist/artifacts/publish/validate/slides.d.ts.map +1 -0
- package/dist/artifacts/queries.d.ts +95 -0
- package/dist/artifacts/queries.d.ts.map +1 -0
- package/dist/artifacts/references.d.ts +12 -0
- package/dist/artifacts/references.d.ts.map +1 -0
- package/dist/artifacts/resolve.d.ts +47 -0
- package/dist/artifacts/resolve.d.ts.map +1 -0
- package/dist/artifacts/run-query.d.ts +26 -0
- package/dist/artifacts/run-query.d.ts.map +1 -0
- package/dist/artifacts/serialize-query.d.ts +12 -0
- package/dist/artifacts/serialize-query.d.ts.map +1 -0
- package/dist/artifacts/sheet-rules.d.ts +26 -0
- package/dist/artifacts/sheet-rules.d.ts.map +1 -0
- package/dist/artifacts/theme.d.ts +19 -0
- package/dist/artifacts/theme.d.ts.map +1 -0
- package/dist/artifacts/tones.d.ts +8 -0
- package/dist/artifacts/tones.d.ts.map +1 -0
- package/dist/artifacts/warnings.d.ts +11 -0
- package/dist/artifacts/warnings.d.ts.map +1 -0
- package/dist/artifacts/workbook.d.ts +135 -0
- package/dist/artifacts/workbook.d.ts.map +1 -0
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +16 -13
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/member-events.d.ts +13 -0
- package/dist/auth/member-events.d.ts.map +1 -0
- package/dist/auth/profile.d.ts +11 -0
- package/dist/auth/profile.d.ts.map +1 -0
- package/dist/auth/runtime.d.ts +31 -3
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/auth/strategy.d.ts +3 -1
- package/dist/auth/strategy.d.ts.map +1 -1
- package/dist/auth/strategy.js +7 -3
- package/dist/auth/strategy.js.map +1 -1
- package/dist/auth/types.d.ts +30 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/authorization/decision.d.ts +17 -0
- package/dist/authorization/decision.d.ts.map +1 -1
- package/dist/authorization/event-visibility.d.ts +5 -1
- package/dist/authorization/event-visibility.d.ts.map +1 -1
- package/dist/authorization/grant-kinds.d.ts +2 -2
- package/dist/authorization/grant-kinds.d.ts.map +1 -1
- package/dist/authorization/index.d.ts +2 -2
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +14 -9
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/resolve.d.ts +19 -1
- package/dist/authorization/resolve.d.ts.map +1 -1
- package/dist/authorization/run-visibility.d.ts +8 -1
- package/dist/authorization/run-visibility.d.ts.map +1 -1
- package/dist/authorization/types.d.ts +14 -0
- package/dist/authorization/types.d.ts.map +1 -1
- package/dist/blob-storage/browser.js +1 -1
- package/dist/blob-storage/index.js +2 -2
- package/dist/blob-storage/internal.d.ts +1 -1
- package/dist/blob-storage/internal.d.ts.map +1 -1
- package/dist/blob-storage/internal.js +11 -5
- package/dist/blob-storage/internal.js.map +1 -1
- package/dist/blob-storage/media-type.d.ts +12 -0
- package/dist/blob-storage/media-type.d.ts.map +1 -1
- package/dist/bootstrap/index.js +76 -66
- package/dist/bootstrap/index.js.map +2 -2
- package/dist/{chunk-tg2cw67r.js → chunk-02bzjgnt.js} +6 -6
- package/dist/{chunk-tg2cw67r.js.map → chunk-02bzjgnt.js.map} +1 -1
- package/dist/{chunk-mfs23znk.js → chunk-07kkp2e1.js} +1 -1
- package/dist/{chunk-6p49a5cq.js → chunk-098anw4f.js} +21 -19
- package/dist/chunk-098anw4f.js.map +12 -0
- package/dist/{chunk-fkgc1wt8.js → chunk-0phpbbvm.js} +3 -3
- package/dist/{chunk-ere85b8y.js → chunk-0xmt5p5y.js} +116 -27
- package/dist/chunk-0xmt5p5y.js.map +14 -0
- package/dist/{chunk-t6f3tdnr.js → chunk-16a9dmfy.js} +33 -2
- package/dist/{chunk-t6f3tdnr.js.map → chunk-16a9dmfy.js.map} +5 -4
- package/dist/{chunk-hkc3jct7.js → chunk-18sk89cg.js} +18 -10
- package/dist/chunk-18sk89cg.js.map +10 -0
- package/dist/{chunk-way52z4h.js → chunk-1t6k1avb.js} +6 -12
- package/dist/{chunk-way52z4h.js.map → chunk-1t6k1avb.js.map} +3 -4
- package/dist/chunk-2626mh4m.js +693 -0
- package/dist/chunk-2626mh4m.js.map +19 -0
- package/dist/{chunk-qczk96d9.js → chunk-2adz0h75.js} +13 -4
- package/dist/chunk-2adz0h75.js.map +11 -0
- package/dist/{chunk-3t2hgbgd.js → chunk-2fn60nvs.js} +40 -8
- package/dist/chunk-2fn60nvs.js.map +15 -0
- package/dist/{chunk-99nd4rc1.js → chunk-2gjj5dx3.js} +5 -4
- package/dist/{chunk-99nd4rc1.js.map → chunk-2gjj5dx3.js.map} +3 -3
- package/dist/chunk-3fqxbn31.js +107 -0
- package/dist/chunk-3fqxbn31.js.map +11 -0
- package/dist/{chunk-y0c4e6ex.js → chunk-3gbefjg5.js} +1 -1
- package/dist/{chunk-yzwja0mj.js → chunk-45ngkxkp.js} +52 -31
- package/dist/chunk-45ngkxkp.js.map +13 -0
- package/dist/{chunk-fa02jy15.js → chunk-48jezz3j.js} +1 -1
- package/dist/{chunk-ren4kg2j.js → chunk-4b26qwbg.js} +13 -13
- package/dist/{chunk-ren4kg2j.js.map → chunk-4b26qwbg.js.map} +1 -1
- package/dist/{chunk-9k93ah50.js → chunk-4f3ydv7t.js} +33 -69
- package/dist/chunk-4f3ydv7t.js.map +10 -0
- package/dist/chunk-4y26vs3v.js +97 -0
- package/dist/chunk-4y26vs3v.js.map +10 -0
- package/dist/{chunk-4as3wt1c.js → chunk-4ymrcdbm.js} +7 -3
- package/dist/chunk-4ymrcdbm.js.map +12 -0
- package/dist/{chunk-hcbyfxbe.js → chunk-5grk14e5.js} +76 -2
- package/dist/{chunk-hcbyfxbe.js.map → chunk-5grk14e5.js.map} +4 -3
- package/dist/chunk-5tfev0fv.js +676 -0
- package/dist/chunk-5tfev0fv.js.map +15 -0
- package/dist/chunk-65abf64x.js +13 -0
- package/dist/chunk-65abf64x.js.map +10 -0
- package/dist/{chunk-hvsb78a1.js → chunk-65pyhyas.js} +114 -107
- package/dist/chunk-65pyhyas.js.map +20 -0
- package/dist/{chunk-1sr8ryzk.js → chunk-661ezhks.js} +303 -6
- package/dist/chunk-661ezhks.js.map +11 -0
- package/dist/{chunk-z3y5kg1x.js → chunk-6eqsgvxk.js} +3 -3
- package/dist/{chunk-z3y5kg1x.js.map → chunk-6eqsgvxk.js.map} +2 -2
- package/dist/{chunk-c85m1hyj.js → chunk-6n69k945.js} +2 -2
- package/dist/{chunk-xfs8x8m9.js → chunk-6p0pastb.js} +5 -5
- package/dist/{chunk-rrzt8jdy.js → chunk-6rrtzea3.js} +116 -110
- package/dist/chunk-6rrtzea3.js.map +14 -0
- package/dist/{chunk-t7x8dmn0.js → chunk-6y0mkhex.js} +3 -3
- package/dist/{chunk-es1gxsbf.js → chunk-73v685wb.js} +14 -16
- package/dist/chunk-73v685wb.js.map +12 -0
- package/dist/{chunk-6c6sn0bh.js → chunk-7gr4j2eq.js} +7930 -5973
- package/dist/chunk-7gr4j2eq.js.map +120 -0
- package/dist/{chunk-hjzdd750.js → chunk-7mc2wkre.js} +391 -91
- package/dist/chunk-7mc2wkre.js.map +50 -0
- package/dist/chunk-7z5p905k.js +1660 -0
- package/dist/chunk-7z5p905k.js.map +22 -0
- package/dist/{chunk-3zxk45er.js → chunk-8ncg20rd.js} +3 -68
- package/dist/{chunk-3zxk45er.js.map → chunk-8ncg20rd.js.map} +4 -5
- package/dist/{chunk-yxd3nnqt.js → chunk-9mab3dvg.js} +26 -2
- package/dist/chunk-9mab3dvg.js.map +11 -0
- package/dist/chunk-9wr3yajk.js +42 -0
- package/dist/chunk-9wr3yajk.js.map +10 -0
- package/dist/chunk-a3faa34j.js +74 -0
- package/dist/chunk-a3faa34j.js.map +10 -0
- package/dist/chunk-az47zep4.js +41 -0
- package/dist/chunk-az47zep4.js.map +10 -0
- package/dist/{chunk-v9xd5wzd.js → chunk-bab05bhg.js} +1 -1
- package/dist/{chunk-5j58wjct.js → chunk-bktev1ds.js} +14 -11
- package/dist/{chunk-5j58wjct.js.map → chunk-bktev1ds.js.map} +3 -3
- package/dist/{chunk-b38szspf.js → chunk-c0vk1djt.js} +5 -3
- package/dist/chunk-c0vk1djt.js.map +11 -0
- package/dist/chunk-c69nj7se.js +3 -0
- package/dist/chunk-c69nj7se.js.map +9 -0
- package/dist/{chunk-0yh890a4.js → chunk-c844dkwd.js} +35 -7
- package/dist/{chunk-0yh890a4.js.map → chunk-c844dkwd.js.map} +3 -3
- package/dist/{chunk-d09tj99x.js → chunk-cdk3egjj.js} +24 -5
- package/dist/chunk-cdk3egjj.js.map +12 -0
- package/dist/chunk-cswhawa2.js +113 -0
- package/dist/chunk-cswhawa2.js.map +10 -0
- package/dist/{chunk-gc4ntf7d.js → chunk-cwdzcv37.js} +1 -1
- package/dist/chunk-d2m879s4.js +288 -0
- package/dist/chunk-d2m879s4.js.map +12 -0
- package/dist/chunk-d7vyc7k6.js +10 -0
- package/dist/chunk-d7vyc7k6.js.map +10 -0
- package/dist/{chunk-vyf9kfqf.js → chunk-dp0cdtj2.js} +2 -2
- package/dist/{chunk-6x0pqh32.js → chunk-e5wf5vz0.js} +3 -1
- package/dist/chunk-e5wf5vz0.js.map +10 -0
- package/dist/{chunk-bx9q3cwv.js → chunk-efmm01gj.js} +108 -1045
- package/dist/chunk-efmm01gj.js.map +18 -0
- package/dist/{chunk-tw03bsmb.js → chunk-eptrvnby.js} +224 -3
- package/dist/chunk-eptrvnby.js.map +12 -0
- package/dist/{chunk-n33z5bjw.js → chunk-ezne9wc9.js} +1762 -502
- package/dist/chunk-ezne9wc9.js.map +71 -0
- package/dist/chunk-fe8zwt8b.js +688 -0
- package/dist/chunk-fe8zwt8b.js.map +19 -0
- package/dist/chunk-ff5xkv0p.js +211 -0
- package/dist/chunk-ff5xkv0p.js.map +10 -0
- package/dist/{chunk-br3k6qbf.js → chunk-fm62y49k.js} +1 -1
- package/dist/{chunk-nq6gpjt7.js → chunk-fntqb7qy.js} +30 -4
- package/dist/{chunk-nq6gpjt7.js.map → chunk-fntqb7qy.js.map} +5 -5
- package/dist/{chunk-1zq2p6g0.js → chunk-fp2kq35z.js} +26 -10
- package/dist/{chunk-1zq2p6g0.js.map → chunk-fp2kq35z.js.map} +5 -5
- package/dist/chunk-g5bvzyyr.js +32 -0
- package/dist/chunk-g5bvzyyr.js.map +10 -0
- package/dist/{chunk-9ybhtmg4.js → chunk-g663fahq.js} +2 -2
- package/dist/{chunk-k6q3n2sc.js → chunk-gvj5cd3b.js} +29 -13
- package/dist/chunk-gvj5cd3b.js.map +12 -0
- package/dist/{chunk-yevzdx4y.js → chunk-h33shhq6.js} +10 -12
- package/dist/{chunk-yevzdx4y.js.map → chunk-h33shhq6.js.map} +3 -4
- package/dist/{chunk-vpq4shxz.js → chunk-h3pbv7n8.js} +1771 -36
- package/dist/chunk-h3pbv7n8.js.map +48 -0
- package/dist/chunk-hke9aeen.js +9 -0
- package/dist/chunk-hke9aeen.js.map +10 -0
- package/dist/chunk-hn2r7z41.js.map +1 -1
- package/dist/{chunk-pbcbn83d.js → chunk-hqsp2sx4.js} +54 -8
- package/dist/chunk-hqsp2sx4.js.map +14 -0
- package/dist/{chunk-9w055r5b.js → chunk-hwarjrgf.js} +1 -1
- package/dist/{chunk-9dmt152s.js → chunk-hyesv9dv.js} +2 -2
- package/dist/chunk-hz5d43gn.js +45 -0
- package/dist/chunk-hz5d43gn.js.map +10 -0
- package/dist/{chunk-91mg3nj9.js → chunk-j936th07.js} +86 -41
- package/dist/chunk-j936th07.js.map +12 -0
- package/dist/chunk-jcfw4h7m.js +9 -0
- package/dist/chunk-jcfw4h7m.js.map +10 -0
- package/dist/chunk-kcqpk9w1.js +75 -0
- package/dist/chunk-kcqpk9w1.js.map +10 -0
- package/dist/{chunk-x6m907x7.js → chunk-m2nevja0.js} +6 -7
- package/dist/{chunk-x6m907x7.js.map → chunk-m2nevja0.js.map} +3 -3
- package/dist/{chunk-x9v4cx1d.js → chunk-m36fw8ft.js} +1 -1
- package/dist/{chunk-a40ad1ft.js → chunk-mbsbxarb.js} +1 -1
- package/dist/chunk-mzx71snp.js +129 -0
- package/dist/chunk-mzx71snp.js.map +10 -0
- package/dist/{chunk-6aawea28.js → chunk-n8q5j6y5.js} +1 -1
- package/dist/{chunk-dk8tkk5f.js → chunk-n9zpx9c6.js} +4 -4
- package/dist/{chunk-7t429e3f.js → chunk-npcr0228.js} +1 -1
- package/dist/chunk-nydf3dbe.js +663 -0
- package/dist/chunk-nydf3dbe.js.map +13 -0
- package/dist/chunk-pdt5cw8z.js +233 -0
- package/dist/chunk-pdt5cw8z.js.map +11 -0
- package/dist/{chunk-rj69qcrd.js → chunk-pgrf64hp.js} +55 -7
- package/dist/chunk-pgrf64hp.js.map +12 -0
- package/dist/{chunk-z4m0yz8c.js → chunk-q4pmvkg0.js} +1 -1
- package/dist/chunk-qhqgp4jf.js +1418 -0
- package/dist/chunk-qhqgp4jf.js.map +22 -0
- package/dist/chunk-qx00vjrj.js +144 -0
- package/dist/chunk-qx00vjrj.js.map +13 -0
- package/dist/{chunk-5e43w60z.js → chunk-r6szek0x.js} +184 -7
- package/dist/chunk-r6szek0x.js.map +10 -0
- package/dist/{chunk-v4jbb3rs.js → chunk-rap5w0x0.js} +156 -2
- package/dist/chunk-rap5w0x0.js.map +10 -0
- package/dist/{chunk-pfp1txq2.js → chunk-sgx82nnt.js} +5 -31
- package/dist/{chunk-pfp1txq2.js.map → chunk-sgx82nnt.js.map} +3 -4
- package/dist/{chunk-bkpke1sg.js → chunk-t5608tkq.js} +3 -1
- package/dist/{chunk-bkpke1sg.js.map → chunk-t5608tkq.js.map} +3 -3
- package/dist/{chunk-29yx306f.js → chunk-tdxfsg1c.js} +507 -265
- package/dist/chunk-tdxfsg1c.js.map +23 -0
- package/dist/chunk-vabga7fk.js +176 -0
- package/dist/chunk-vabga7fk.js.map +12 -0
- package/dist/{chunk-gsjm1wms.js → chunk-vhbw5sqm.js} +33 -3
- package/dist/chunk-vhbw5sqm.js.map +10 -0
- package/dist/{chunk-tpn40322.js → chunk-vpgwq5nf.js} +104 -17
- package/dist/chunk-vpgwq5nf.js.map +21 -0
- package/dist/{chunk-0rbyz4qy.js → chunk-vyt322b6.js} +586 -171
- package/dist/{chunk-0rbyz4qy.js.map → chunk-vyt322b6.js.map} +12 -9
- package/dist/chunk-waqk73p1.js +2380 -0
- package/dist/chunk-waqk73p1.js.map +23 -0
- package/dist/{chunk-jhm3zsa7.js → chunk-wkv3h3q7.js} +64 -2
- package/dist/{chunk-jhm3zsa7.js.map → chunk-wkv3h3q7.js.map} +3 -3
- package/dist/chunk-wsc1brye.js +27 -0
- package/dist/chunk-wsc1brye.js.map +10 -0
- package/dist/chunk-x0v3jd47.js +124 -0
- package/dist/chunk-x0v3jd47.js.map +10 -0
- package/dist/{chunk-96yw3pwd.js → chunk-y7dbmaqh.js} +28 -2
- package/dist/chunk-y7dbmaqh.js.map +10 -0
- package/dist/{chunk-d0bqz29d.js → chunk-yc9ners4.js} +124 -19
- package/dist/{chunk-d0bqz29d.js.map → chunk-yc9ners4.js.map} +8 -8
- package/dist/{chunk-8mx7qw3y.js → chunk-zbc929zg.js} +29 -5
- package/dist/chunk-zbc929zg.js.map +13 -0
- package/dist/chunk-zrvhsq7f.js +37 -0
- package/dist/chunk-zrvhsq7f.js.map +10 -0
- package/dist/datasets/builders.d.ts +15 -2
- package/dist/datasets/builders.d.ts.map +1 -1
- package/dist/datasets/column-index.d.ts +7 -0
- package/dist/datasets/column-index.d.ts.map +1 -0
- package/dist/datasets/execution.d.ts +3 -2
- package/dist/datasets/execution.d.ts.map +1 -1
- package/dist/datasets/write.js +8 -8
- package/dist/error-reporting/internal.js +4 -4
- package/dist/errors/catalog.d.ts +26 -0
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/internal.d.ts +1 -0
- package/dist/errors/internal.d.ts.map +1 -1
- package/dist/errors/internal.js +7 -4
- package/dist/errors/internal.js.map +1 -1
- package/dist/events/definitions.d.ts +7 -0
- package/dist/events/definitions.d.ts.map +1 -1
- package/dist/events/execution.d.ts +12 -2
- package/dist/events/execution.d.ts.map +1 -1
- package/dist/events/index.d.ts +2 -3
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +9 -11
- package/dist/events/index.js.map +1 -1
- package/dist/events/scope.d.ts.map +1 -1
- package/dist/events/scope.js +1 -1
- package/dist/events/selectors/builder.d.ts +12 -1
- package/dist/events/selectors/builder.d.ts.map +1 -1
- package/dist/events/selectors/index.d.ts +2 -2
- package/dist/events/selectors/index.d.ts.map +1 -1
- package/dist/events/selectors/index.js +2 -2
- package/dist/events/selectors/types.d.ts +19 -3
- package/dist/events/selectors/types.d.ts.map +1 -1
- package/dist/events/service.d.ts +17 -2
- package/dist/events/service.d.ts.map +1 -1
- package/dist/events/types/index.d.ts +3 -1
- package/dist/events/types/index.d.ts.map +1 -1
- package/dist/events/types/users.d.ts +63 -0
- package/dist/events/types/users.d.ts.map +1 -0
- package/dist/events/view-conditions.d.ts +34 -0
- package/dist/events/view-conditions.d.ts.map +1 -0
- package/dist/execution/agent.d.ts +15 -0
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +72 -59
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorization.d.ts.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts +102 -12
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- package/dist/execution/lineage.d.ts +7 -0
- package/dist/execution/lineage.d.ts.map +1 -0
- package/dist/execution/object-reader-clearance.d.ts +41 -0
- package/dist/execution/object-reader-clearance.d.ts.map +1 -0
- package/dist/execution/object-reader-ontology.d.ts +12 -0
- package/dist/execution/object-reader-ontology.d.ts.map +1 -0
- package/dist/execution/object-reader-security.d.ts +66 -0
- package/dist/execution/object-reader-security.d.ts.map +1 -0
- package/dist/execution/object-reader-users.d.ts +20 -0
- package/dist/execution/object-reader-users.d.ts.map +1 -0
- package/dist/execution/preparation.d.ts +23 -0
- package/dist/execution/preparation.d.ts.map +1 -0
- package/dist/execution/primitive.js +70 -59
- package/dist/execution/primitive.js.map +1 -1
- package/dist/execution/request.d.ts +2 -1
- package/dist/execution/request.d.ts.map +1 -1
- package/dist/execution/request.js +72 -57
- package/dist/execution/request.js.map +3 -3
- package/dist/execution/unique-lookup.d.ts +14 -0
- package/dist/execution/unique-lookup.d.ts.map +1 -0
- package/dist/execution/visible-objects.d.ts +12 -0
- package/dist/execution/visible-objects.d.ts.map +1 -0
- package/dist/http/api-routes.d.ts +17 -0
- package/dist/http/api-routes.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/index.d.ts +49 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +168 -142
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/in-memory.d.ts +1 -0
- package/dist/lake-storage/in-memory.d.ts.map +1 -1
- package/dist/lake-storage/index.d.ts +6 -3
- package/dist/lake-storage/index.d.ts.map +1 -1
- package/dist/lake-storage/index.js +21 -13
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/lake-storage/lineage.d.ts +94 -0
- package/dist/lake-storage/lineage.d.ts.map +1 -0
- package/dist/lake-storage/sql-transforms.d.ts +45 -0
- package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
- package/dist/lake-storage/types.d.ts +55 -1
- package/dist/lake-storage/types.d.ts.map +1 -1
- package/dist/lake-storage/version-inputs.d.ts +14 -3
- package/dist/lake-storage/version-inputs.d.ts.map +1 -1
- package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
- package/dist/materialization/errors.d.ts +25 -0
- package/dist/materialization/errors.d.ts.map +1 -1
- package/dist/materialization/event-envelopes.d.ts +5 -0
- package/dist/materialization/event-envelopes.d.ts.map +1 -1
- package/dist/materialization/index.d.ts +1 -1
- package/dist/materialization/index.d.ts.map +1 -1
- package/dist/materialization/index.js +14 -8
- package/dist/materialization/index.js.map +1 -1
- package/dist/materialization/model.d.ts +20 -2
- package/dist/materialization/model.d.ts.map +1 -1
- package/dist/materializer/edits/commit.d.ts.map +1 -1
- package/dist/materializer/edits/load-state.d.ts +5 -1
- package/dist/materializer/edits/load-state.d.ts.map +1 -1
- package/dist/materializer/edits/plan.d.ts.map +1 -1
- package/dist/materializer/edits/unique-values.d.ts +47 -0
- package/dist/materializer/edits/unique-values.d.ts.map +1 -0
- package/dist/materializer/edits/working-state.d.ts +6 -1
- package/dist/materializer/edits/working-state.d.ts.map +1 -1
- package/dist/materializer/execution/work-records.d.ts +7 -1
- package/dist/materializer/execution/work-records.d.ts.map +1 -1
- package/dist/materializer/index.js +51 -46
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
- package/dist/materializer/projections/source-materialization.d.ts +1 -0
- package/dist/materializer/projections/source-materialization.d.ts.map +1 -1
- package/dist/materializer/shared/normalize.d.ts.map +1 -1
- package/dist/materializer/shared/projection-run.d.ts +0 -1
- package/dist/materializer/shared/projection-run.d.ts.map +1 -1
- package/dist/materializer/telemetry/plan.d.ts.map +1 -1
- package/dist/models/audio/catalog.d.ts +13 -1
- package/dist/models/audio/catalog.d.ts.map +1 -1
- package/dist/models/audio/errors.d.ts +6 -1
- package/dist/models/audio/errors.d.ts.map +1 -1
- package/dist/models/audio/runtime.d.ts.map +1 -1
- package/dist/models/audio/speech.d.ts +8 -0
- package/dist/models/audio/speech.d.ts.map +1 -0
- package/dist/models/audio/types.d.ts +93 -0
- package/dist/models/audio/types.d.ts.map +1 -1
- package/dist/models/calls.d.ts +27 -0
- package/dist/models/calls.d.ts.map +1 -0
- package/dist/models/catalog-index.d.ts +7 -4
- package/dist/models/catalog-index.d.ts.map +1 -1
- package/dist/models/catalog.d.ts +55 -3
- package/dist/models/catalog.d.ts.map +1 -1
- package/dist/models/decision/runtime.d.ts +6 -1
- package/dist/models/decision/runtime.d.ts.map +1 -1
- package/dist/models/decision/validation.d.ts +4 -1
- package/dist/models/decision/validation.d.ts.map +1 -1
- package/dist/models/definitions.d.ts +23 -1
- package/dist/models/definitions.d.ts.map +1 -1
- package/dist/models/events.d.ts +12 -1
- package/dist/models/events.d.ts.map +1 -1
- package/dist/models/execution/binding.d.ts +3 -1
- package/dist/models/execution/binding.d.ts.map +1 -1
- package/dist/models/execution/index.d.ts +1 -0
- package/dist/models/execution/index.d.ts.map +1 -1
- package/dist/models/execution/index.js +50 -39
- package/dist/models/execution/index.js.map +1 -1
- package/dist/models/execution/model-call-accounting.d.ts.map +1 -1
- package/dist/models/execution/model-call-recorder.d.ts +3 -0
- package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
- package/dist/models/execution/usage.d.ts.map +1 -1
- package/dist/models/execution.d.ts +4 -2
- package/dist/models/execution.d.ts.map +1 -1
- package/dist/models/generation-types.d.ts +8 -1
- package/dist/models/generation-types.d.ts.map +1 -1
- package/dist/models/image/catalog.d.ts +13 -0
- package/dist/models/image/catalog.d.ts.map +1 -0
- package/dist/models/image/errors.d.ts +8 -0
- package/dist/models/image/errors.d.ts.map +1 -0
- package/dist/models/image/runtime.d.ts +8 -0
- package/dist/models/image/runtime.d.ts.map +1 -0
- package/dist/models/image/types.d.ts +103 -0
- package/dist/models/image/types.d.ts.map +1 -0
- package/dist/models/index.d.ts +12 -8
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +17 -7
- package/dist/models/index.js.map +1 -1
- package/dist/models/input-file.d.ts +9 -0
- package/dist/models/input-file.d.ts.map +1 -0
- package/dist/models/language-model.d.ts +13 -0
- package/dist/models/language-model.d.ts.map +1 -1
- package/dist/models/pricing.d.ts +25 -10
- package/dist/models/pricing.d.ts.map +1 -1
- package/dist/models/rate-card.d.ts +44 -6
- package/dist/models/rate-card.d.ts.map +1 -1
- package/dist/objects/clearance-redaction.d.ts +27 -0
- package/dist/objects/clearance-redaction.d.ts.map +1 -0
- package/dist/objects/conditional-writes.d.ts +37 -0
- package/dist/objects/conditional-writes.d.ts.map +1 -0
- package/dist/objects/execution.d.ts +2 -0
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.d.ts +1 -0
- package/dist/objects/index.d.ts.map +1 -1
- package/dist/objects/index.js +77 -60
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/link/authorization.d.ts +11 -5
- package/dist/objects/link/authorization.d.ts.map +1 -1
- package/dist/objects/link/endpoints.d.ts +21 -2
- package/dist/objects/link/endpoints.d.ts.map +1 -1
- package/dist/objects/link/remove.d.ts.map +1 -1
- package/dist/objects/link/upsert-batch.d.ts.map +1 -1
- package/dist/objects/link/upsert.d.ts.map +1 -1
- package/dist/objects/materializer-adapter.d.ts +13 -4
- package/dist/objects/materializer-adapter.d.ts.map +1 -1
- package/dist/objects/object/delete.d.ts +3 -0
- package/dist/objects/object/delete.d.ts.map +1 -1
- package/dist/objects/object/upsert-batch.d.ts.map +1 -1
- package/dist/objects/object/upsert.d.ts.map +1 -1
- package/dist/objects/property-clearance.d.ts +47 -24
- package/dist/objects/property-clearance.d.ts.map +1 -1
- package/dist/objects/query/clearance-admission.d.ts +10 -0
- package/dist/objects/query/clearance-admission.d.ts.map +1 -0
- package/dist/objects/query/current-user.d.ts +17 -0
- package/dist/objects/query/current-user.d.ts.map +1 -0
- package/dist/objects/query/executor.d.ts +14 -0
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.d.ts +2 -2
- package/dist/objects/query/index.d.ts.map +1 -1
- package/dist/objects/query/index.js +55 -49
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/ir.d.ts +19 -1
- package/dist/objects/query/ir.d.ts.map +1 -1
- package/dist/objects/query/link-query-clearance.d.ts +21 -0
- package/dist/objects/query/link-query-clearance.d.ts.map +1 -0
- package/dist/objects/query/matches-predicate.d.ts +9 -0
- package/dist/objects/query/matches-predicate.d.ts.map +1 -0
- package/dist/objects/query/normalize.d.ts.map +1 -1
- package/dist/objects/query/user-expansions.d.ts +27 -0
- package/dist/objects/query/user-expansions.d.ts.map +1 -0
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/runtime-batch.d.ts +3 -1
- package/dist/objects/runtime-batch.d.ts.map +1 -1
- package/dist/objects/sdk/object-set.d.ts.map +1 -1
- package/dist/objects/sdk/query-executor.d.ts +6 -0
- package/dist/objects/sdk/query-executor.d.ts.map +1 -1
- package/dist/objects/serialize.d.ts +39 -0
- package/dist/objects/serialize.d.ts.map +1 -0
- package/dist/objects/unique-violation.d.ts +22 -0
- package/dist/objects/unique-violation.d.ts.map +1 -0
- package/dist/ontology/builders.d.ts +3 -1
- package/dist/ontology/builders.d.ts.map +1 -1
- package/dist/ontology/docs-markdown.d.ts +1 -1
- package/dist/ontology/docs-markdown.d.ts.map +1 -1
- package/dist/ontology/index.d.ts +2 -2
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +13 -9
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/internal.js +9 -7
- package/dist/ontology/internal.js.map +3 -3
- package/dist/ontology/json-schema.d.ts.map +1 -1
- package/dist/ontology/primitives.d.ts +3 -0
- package/dist/ontology/primitives.d.ts.map +1 -1
- package/dist/ontology/registry.d.ts +6 -0
- package/dist/ontology/registry.d.ts.map +1 -1
- package/dist/ontology/types.d.ts +9 -0
- package/dist/ontology/types.d.ts.map +1 -1
- package/dist/ontology/unique-values.d.ts +26 -0
- package/dist/ontology/unique-values.d.ts.map +1 -0
- package/dist/ontology/user-ref.d.ts +23 -0
- package/dist/ontology/user-ref.d.ts.map +1 -1
- package/dist/ontology/validation/properties.d.ts.map +1 -1
- package/dist/ontology/validation/schema.d.ts.map +1 -1
- package/dist/pipelines/index.d.ts +2 -0
- package/dist/pipelines/index.d.ts.map +1 -1
- package/dist/pipelines/index.js +61 -46
- package/dist/pipelines/index.js.map +1 -1
- package/dist/pipelines/lineage.d.ts +17 -0
- package/dist/pipelines/lineage.d.ts.map +1 -0
- package/dist/projections/internal.d.ts +2 -2
- package/dist/projections/internal.js +42 -38
- package/dist/projections/internal.js.map +1 -1
- package/dist/projections/registry.d.ts +4 -0
- package/dist/projections/registry.d.ts.map +1 -1
- package/dist/projections/revision.d.ts +15 -0
- package/dist/projections/revision.d.ts.map +1 -1
- package/dist/projections/run-dispatch.d.ts.map +1 -1
- package/dist/projections/types.d.ts +2 -0
- package/dist/projections/types.d.ts.map +1 -1
- package/dist/query.d.ts +4 -2
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +2 -2
- package/dist/rules/execution.d.ts.map +1 -1
- package/dist/runtime/ai-cost.d.ts +2 -0
- package/dist/runtime/ai-cost.d.ts.map +1 -1
- package/dist/runtime/ai-usage.d.ts +7 -0
- package/dist/runtime/ai-usage.d.ts.map +1 -1
- package/dist/runtime/create.d.ts +3 -0
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +6 -0
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +2 -0
- package/dist/runtime/internal.d.ts.map +1 -1
- package/dist/runtime/internal.js +58 -50
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/ontology-mutations.d.ts +2 -0
- package/dist/runtime/ontology-mutations.d.ts.map +1 -1
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/sixb.d.ts +10 -0
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +66 -8
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandboxes/auth.d.ts +16 -0
- package/dist/sandboxes/auth.d.ts.map +1 -1
- package/dist/sandboxes/config.d.ts.map +1 -1
- package/dist/sandboxes/configuration.d.ts +26 -0
- package/dist/sandboxes/configuration.d.ts.map +1 -1
- package/dist/sandboxes/index.d.ts +1 -1
- package/dist/sandboxes/index.d.ts.map +1 -1
- package/dist/sandboxes/index.js +15 -13
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/sandboxes/sandbox.d.ts +28 -5
- package/dist/sandboxes/sandbox.d.ts.map +1 -1
- package/dist/schedules/builders.d.ts.map +1 -1
- package/dist/schedules/index.js +3 -3
- package/dist/schedules/runtime.d.ts.map +1 -1
- package/dist/schedules/validation.d.ts.map +1 -1
- package/dist/security/applied-markings-contribution.d.ts +58 -0
- package/dist/security/applied-markings-contribution.d.ts.map +1 -0
- package/dist/security/applied-markings-host.d.ts +10 -0
- package/dist/security/applied-markings-host.d.ts.map +1 -0
- package/dist/security/applied-markings-snapshot.d.ts +67 -0
- package/dist/security/applied-markings-snapshot.d.ts.map +1 -0
- package/dist/security/applied-markings.d.ts +73 -0
- package/dist/security/applied-markings.d.ts.map +1 -0
- package/dist/security/dataset-version-markings.d.ts +47 -0
- package/dist/security/dataset-version-markings.d.ts.map +1 -0
- package/dist/security/grants.d.ts +13 -4
- package/dist/security/grants.d.ts.map +1 -1
- package/dist/security/index.d.ts +2 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/internal.d.ts +15 -0
- package/dist/security/internal.d.ts.map +1 -0
- package/dist/security/internal.js +135 -0
- package/dist/security/internal.js.map +10 -0
- package/dist/security/marking-propagation.d.ts +62 -0
- package/dist/security/marking-propagation.d.ts.map +1 -0
- package/dist/security/marking-sets.d.ts +14 -0
- package/dist/security/marking-sets.d.ts.map +1 -0
- package/dist/security/markings.d.ts +6 -3
- package/dist/security/markings.d.ts.map +1 -1
- package/dist/security/pipeline-markings.d.ts +20 -0
- package/dist/security/pipeline-markings.d.ts.map +1 -0
- package/dist/security/project.d.ts +7 -0
- package/dist/security/project.d.ts.map +1 -0
- package/dist/security/projection-markings.d.ts +71 -0
- package/dist/security/projection-markings.d.ts.map +1 -0
- package/dist/security/public.js +2 -2
- package/dist/security/redactions.d.ts +4 -1
- package/dist/security/redactions.d.ts.map +1 -1
- package/dist/security/registry.d.ts +6 -0
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +64 -6
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/security/view-conditions.d.ts +37 -0
- package/dist/security/view-conditions.d.ts.map +1 -0
- package/dist/shares/execution.d.ts.map +1 -1
- package/dist/shares/internal.js +40 -36
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/action-runs/failure.js +3 -3
- package/dist/storage/action-runs/in-memory.d.ts +4 -0
- package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/action-runs/provider.js +1 -1
- package/dist/storage/action-runs/types.d.ts +9 -1
- package/dist/storage/action-runs/types.d.ts.map +1 -1
- package/dist/storage/activity/in-memory.d.ts +55 -0
- package/dist/storage/activity/in-memory.d.ts.map +1 -0
- package/dist/storage/activity/index.d.ts +3 -0
- package/dist/storage/activity/index.d.ts.map +1 -0
- package/dist/storage/activity/policy.d.ts +96 -0
- package/dist/storage/activity/policy.d.ts.map +1 -0
- package/dist/storage/activity/types.d.ts +191 -0
- package/dist/storage/activity/types.d.ts.map +1 -0
- package/dist/storage/agents/errors.d.ts +3 -1
- package/dist/storage/agents/errors.d.ts.map +1 -1
- package/dist/storage/agents/in-memory.d.ts +124 -3
- package/dist/storage/agents/in-memory.d.ts.map +1 -1
- package/dist/storage/agents/index.d.ts +2 -2
- package/dist/storage/agents/index.d.ts.map +1 -1
- package/dist/storage/agents/provider.d.ts +154 -4
- package/dist/storage/agents/provider.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +60 -8
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +573 -20
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/analytics.d.ts +10 -1
- package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
- package/dist/storage/ai-cost/groups.d.ts +9 -0
- package/dist/storage/ai-cost/groups.d.ts.map +1 -1
- package/dist/storage/ai-cost/index.d.ts +1 -1
- package/dist/storage/ai-cost/index.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.d.ts +2 -1
- package/dist/storage/ai-cost/provider.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.js +11 -5
- package/dist/storage/ai-cost/provider.js.map +1 -1
- package/dist/storage/ai-cost/types.d.ts +14 -2
- package/dist/storage/ai-cost/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/validation.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +6 -5
- package/dist/storage/ai-limits/enforcement.js.map +1 -1
- package/dist/storage/ai-limits/provider.d.ts +1 -1
- package/dist/storage/ai-limits/provider.d.ts.map +1 -1
- package/dist/storage/ai-limits/provider.js +3 -2
- package/dist/storage/ai-limits/provider.js.map +1 -1
- package/dist/storage/ai-usage/in-memory.d.ts +5 -1
- package/dist/storage/ai-usage/in-memory.d.ts.map +1 -1
- package/dist/storage/ai-usage/index.d.ts +2 -2
- package/dist/storage/ai-usage/index.d.ts.map +1 -1
- package/dist/storage/ai-usage/record.d.ts +5 -1
- package/dist/storage/ai-usage/record.d.ts.map +1 -1
- package/dist/storage/ai-usage/types.d.ts +33 -0
- package/dist/storage/ai-usage/types.d.ts.map +1 -1
- package/dist/storage/ai-usage/usage.d.ts +2 -0
- package/dist/storage/ai-usage/usage.d.ts.map +1 -1
- package/dist/storage/artifacts/errors.d.ts +18 -0
- package/dist/storage/artifacts/errors.d.ts.map +1 -0
- package/dist/storage/artifacts/in-memory.d.ts +55 -0
- package/dist/storage/artifacts/in-memory.d.ts.map +1 -0
- package/dist/storage/artifacts/index.d.ts +5 -0
- package/dist/storage/artifacts/index.d.ts.map +1 -0
- package/dist/storage/artifacts/record.d.ts +34 -0
- package/dist/storage/artifacts/record.d.ts.map +1 -0
- package/dist/storage/artifacts/types.d.ts +263 -0
- package/dist/storage/artifacts/types.d.ts.map +1 -0
- package/dist/storage/auth/in-memory/auth-storage.d.ts +3 -2
- package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/sessions.d.ts +2 -1
- package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/users.d.ts +7 -3
- package/dist/storage/auth/in-memory/users.d.ts.map +1 -1
- package/dist/storage/auth/index.d.ts +1 -1
- package/dist/storage/auth/index.d.ts.map +1 -1
- package/dist/storage/auth/types.d.ts +59 -9
- package/dist/storage/auth/types.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +2 -2
- package/dist/storage/executions/in-memory.d.ts +3 -1
- package/dist/storage/executions/in-memory.d.ts.map +1 -1
- package/dist/storage/executions/index.d.ts +1 -1
- package/dist/storage/executions/index.d.ts.map +1 -1
- package/dist/storage/executions/provider.d.ts +2 -0
- package/dist/storage/executions/provider.d.ts.map +1 -1
- package/dist/storage/executions/provider.js +9 -223
- package/dist/storage/executions/provider.js.map +3 -4
- package/dist/storage/executions/types.d.ts +46 -0
- package/dist/storage/executions/types.d.ts.map +1 -1
- package/dist/storage/file-upload-sessions/provider.js +17 -14
- package/dist/storage/file-upload-sessions/provider.js.map +1 -1
- package/dist/storage/in-memory/index.d.ts +8 -0
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +15 -11
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +78 -66
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +4 -1
- package/dist/storage/internal.d.ts.map +1 -1
- package/dist/storage/internal.js +80 -19
- package/dist/storage/internal.js.map +1 -1
- package/dist/storage/migrations/migrate-storage.d.ts +4 -1
- package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
- package/dist/storage/migrations/prepare-unique-properties.d.ts +18 -0
- package/dist/storage/migrations/prepare-unique-properties.d.ts.map +1 -0
- package/dist/storage/objects/guard.d.ts +1 -1
- package/dist/storage/objects/guard.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/conditional-reader.d.ts +5 -0
- package/dist/storage/objects/in-memory/conditional-reader.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/read-scope.d.ts +3 -9
- package/dist/storage/objects/in-memory/read-scope.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/read-source.d.ts +10 -1
- package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/scoped-reader.d.ts +14 -0
- package/dist/storage/objects/in-memory/scoped-reader.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/storage.d.ts +36 -1
- package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
- package/dist/storage/objects/index.d.ts +2 -2
- package/dist/storage/objects/index.d.ts.map +1 -1
- package/dist/storage/objects/read-scope.d.ts +9 -1
- package/dist/storage/objects/read-scope.d.ts.map +1 -1
- package/dist/storage/objects/types.d.ts +64 -1
- package/dist/storage/objects/types.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/index.d.ts +2 -0
- package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts +1 -0
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/sources.d.ts +2 -1
- package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/unique-values.d.ts +32 -0
- package/dist/storage/ontology/in-memory/unique-values.d.ts.map +1 -0
- package/dist/storage/ontology/index.d.ts +5 -2
- package/dist/storage/ontology/index.d.ts.map +1 -1
- package/dist/storage/ontology/materializations.d.ts +34 -1
- package/dist/storage/ontology/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/provider-work.d.ts +15 -2
- package/dist/storage/ontology/provider-work.d.ts.map +1 -1
- package/dist/storage/ontology/provider.d.ts +1 -1
- package/dist/storage/ontology/provider.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +9 -4
- package/dist/storage/ontology/provider.js.map +1 -1
- package/dist/storage/ontology/sources.d.ts +15 -0
- package/dist/storage/ontology/sources.d.ts.map +1 -1
- package/dist/storage/ontology/unique-values.d.ts +54 -0
- package/dist/storage/ontology/unique-values.d.ts.map +1 -0
- package/dist/storage/operation-scope.d.ts +1 -1
- package/dist/storage/operation-scope.d.ts.map +1 -1
- package/dist/storage/operation-scope.js +1 -1
- package/dist/storage/projection-runs/in-memory.d.ts +0 -6
- package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/projection-runs/provider.js +3 -3
- package/dist/storage/share-grants/in-memory.d.ts +2 -1
- package/dist/storage/share-grants/in-memory.d.ts.map +1 -1
- package/dist/storage/share-grants/index.d.ts +1 -1
- package/dist/storage/share-grants/index.d.ts.map +1 -1
- package/dist/storage/share-grants/provider.js +4 -3
- package/dist/storage/share-grants/provider.js.map +1 -1
- package/dist/storage/share-grants/types.d.ts +6 -0
- package/dist/storage/share-grants/types.d.ts.map +1 -1
- package/dist/storage/types.d.ts +6 -2
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/in-memory.d.ts +4 -0
- package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +18 -14
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/storage/workflow-runs/types.d.ts +5 -0
- package/dist/storage/workflow-runs/types.d.ts.map +1 -1
- package/dist/syncs/index.js +49 -45
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/action-run-storage-contract.d.ts.map +1 -1
- package/dist/testing/activity-storage-contract.d.ts +14 -0
- package/dist/testing/activity-storage-contract.d.ts.map +1 -0
- package/dist/testing/agent-approval-storage-contract.d.ts +17 -0
- package/dist/testing/agent-approval-storage-contract.d.ts.map +1 -0
- package/dist/testing/agent-memory-storage-contract.d.ts +12 -0
- package/dist/testing/agent-memory-storage-contract.d.ts.map +1 -0
- package/dist/testing/agent-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-limit-storage-contract.d.ts +0 -1
- package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -1
- package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
- package/dist/testing/artifact-storage-contract.d.ts +13 -0
- package/dist/testing/artifact-storage-contract.d.ts.map +1 -0
- package/dist/testing/auth-storage-contract.d.ts +13 -0
- package/dist/testing/auth-storage-contract.d.ts.map +1 -1
- package/dist/testing/broker-contract.d.ts +5 -0
- package/dist/testing/broker-contract.d.ts.map +1 -1
- package/dist/testing/effective-storage-contract.d.ts.map +1 -1
- package/dist/testing/execution-storage-contract.d.ts.map +1 -1
- package/dist/testing/file-upload-session-storage-contract.d.ts.map +1 -1
- package/dist/testing/index.d.ts +11 -5
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +9340 -3794
- package/dist/testing/index.js.map +32 -26
- package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
- package/dist/testing/lake-storage-contract.d.ts +2 -0
- package/dist/testing/lake-storage-contract.d.ts.map +1 -1
- package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
- package/dist/testing/object-conditional-read-scope-contract.d.ts +11 -0
- package/dist/testing/object-conditional-read-scope-contract.d.ts.map +1 -0
- package/dist/testing/object-query-contract.d.ts +0 -2
- package/dist/testing/object-query-contract.d.ts.map +1 -1
- package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
- package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
- package/dist/testing/queues-contract.d.ts +5 -0
- package/dist/testing/queues-contract.d.ts.map +1 -1
- package/dist/testing/sandboxes-contract.d.ts.map +1 -1
- package/dist/testing/share-grant-storage-contract.d.ts.map +1 -1
- package/dist/testing/share-session-storage-contract.d.ts.map +1 -1
- package/dist/testing/unique-values-contract.d.ts +21 -0
- package/dist/testing/unique-values-contract.d.ts.map +1 -0
- package/dist/testing/webhook-execution.d.ts +0 -8
- package/dist/testing/webhook-execution.d.ts.map +1 -1
- package/dist/testing/webhook-run-storage-contract.d.ts.map +1 -1
- package/dist/users/execution.d.ts +40 -0
- package/dist/users/execution.d.ts.map +1 -0
- package/dist/users/index.d.ts +3 -0
- package/dist/users/index.d.ts.map +1 -0
- package/dist/webhooks/internal.js +42 -38
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +5 -7
- package/dist/workers/index.js.map +4 -4
- package/dist/workers/queue-worker.d.ts +0 -2
- package/dist/workers/queue-worker.d.ts.map +1 -1
- package/dist/workers/worker.d.ts +0 -2
- package/dist/workers/worker.d.ts.map +1 -1
- package/dist/workflows/builders.d.ts.map +1 -1
- package/dist/workflows/index.js +76 -66
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/request.d.ts +12 -1
- package/dist/workflows/request.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +15 -2
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/validation.d.ts +7 -0
- package/dist/workflows/validation.d.ts.map +1 -1
- package/package.json +25 -1
- package/src/actions/commit-edits.ts +6 -1
- package/src/actions/execution.ts +55 -23
- package/src/actions/read-facade.ts +33 -0
- package/src/actions/request.ts +234 -66
- package/src/actions/run/context.ts +47 -1
- package/src/actions/run/execute.ts +13 -6
- package/src/actions/run/executor.ts +11 -2
- package/src/actions/run/normalize.ts +12 -2
- package/src/actions/run/phases.ts +2 -0
- package/src/actions/run/run-action.ts +12 -3
- package/src/actions/run/signals.ts +3 -9
- package/src/actions/run/types.ts +17 -1
- package/src/actions/run-authorization.ts +95 -0
- package/src/actions/types/context.ts +20 -3
- package/src/actions/validators.ts +19 -8
- package/src/activity/README.md +158 -0
- package/src/activity/connection.ts +217 -0
- package/src/activity/device.ts +41 -0
- package/src/activity/execution.ts +210 -0
- package/src/activity/service.ts +274 -0
- package/src/activity/shares.ts +62 -0
- package/src/activity/timeline.ts +385 -0
- package/src/agents/accounting.ts +59 -0
- package/src/agents/adapters.ts +10 -0
- package/src/agents/agent-mail.ts +29 -0
- package/src/agents/api-gateway.ts +14 -3
- package/src/agents/approval-continuation.ts +48 -0
- package/src/agents/approval-executor.ts +318 -0
- package/src/agents/approval-outcome.ts +59 -0
- package/src/agents/approvals.ts +566 -0
- package/src/agents/authority.ts +24 -1
- package/src/agents/builders.ts +5 -3
- package/src/agents/cancel.ts +103 -0
- package/src/agents/child-question.ts +46 -0
- package/src/agents/children.ts +404 -0
- package/src/agents/context-compaction.ts +12 -0
- package/src/agents/errors.ts +31 -0
- package/src/agents/execution.ts +788 -90
- package/src/agents/fork.ts +158 -0
- package/src/agents/ids.ts +18 -6
- package/src/agents/index.ts +63 -3
- package/src/agents/memory-execution.ts +186 -0
- package/src/agents/memory.ts +178 -0
- package/src/agents/message.ts +57 -0
- package/src/agents/model-loop.ts +93 -6
- package/src/agents/model-routing.ts +193 -0
- package/src/agents/participants.ts +213 -0
- package/src/agents/reference.ts +2 -0
- package/src/agents/request.ts +398 -64
- package/src/agents/run-scope.ts +134 -0
- package/src/agents/skills.ts +6 -0
- package/src/agents/streams/index.ts +5 -0
- package/src/agents/streams/internal.ts +1 -0
- package/src/agents/streams/protocol.ts +385 -7
- package/src/agents/subagent-runs.ts +41 -0
- package/src/agents/thread-access.ts +137 -0
- package/src/agents/tool-definition.ts +5 -3
- package/src/agents/types.ts +43 -18
- package/src/agents/validation.ts +4 -0
- package/src/artifacts/access.ts +125 -0
- package/src/artifacts/address.ts +132 -0
- package/src/artifacts/canvas.ts +369 -0
- package/src/artifacts/csv.ts +118 -0
- package/src/artifacts/errors.ts +32 -0
- package/src/artifacts/execution.ts +553 -0
- package/src/artifacts/formula/check.ts +171 -0
- package/src/artifacts/formula/evaluate.ts +288 -0
- package/src/artifacts/formula/index.ts +199 -0
- package/src/artifacts/formula/parser.ts +357 -0
- package/src/artifacts/frames/assets.ts +104 -0
- package/src/artifacts/frames/entries.ts +35 -0
- package/src/artifacts/frames/grants.ts +125 -0
- package/src/artifacts/frames/index.ts +21 -0
- package/src/artifacts/frames/kit.ts +569 -0
- package/src/artifacts/frames/probe.ts +357 -0
- package/src/artifacts/frames/protocol.ts +328 -0
- package/src/artifacts/frames/runtime.ts +458 -0
- package/src/artifacts/html.ts +25 -0
- package/src/artifacts/ids.ts +18 -0
- package/src/artifacts/index.ts +125 -0
- package/src/artifacts/kinds.ts +8 -0
- package/src/artifacts/limits.ts +58 -0
- package/src/artifacts/live-sheet.ts +345 -0
- package/src/artifacts/outline.ts +95 -0
- package/src/artifacts/publish/files.ts +87 -0
- package/src/artifacts/publish/index.ts +14 -0
- package/src/artifacts/publish/publish.ts +336 -0
- package/src/artifacts/publish/queries.ts +336 -0
- package/src/artifacts/publish/references.ts +135 -0
- package/src/artifacts/publish/validate/canvas.ts +118 -0
- package/src/artifacts/publish/validate/document.ts +114 -0
- package/src/artifacts/publish/validate/file.ts +19 -0
- package/src/artifacts/publish/validate/html.ts +78 -0
- package/src/artifacts/publish/validate/page.ts +65 -0
- package/src/artifacts/publish/validate/sheet.ts +297 -0
- package/src/artifacts/publish/validate/slides.ts +82 -0
- package/src/artifacts/queries.ts +512 -0
- package/src/artifacts/references.ts +11 -0
- package/src/artifacts/resolve.ts +112 -0
- package/src/artifacts/run-query.ts +212 -0
- package/src/artifacts/serialize-query.ts +25 -0
- package/src/artifacts/sheet-rules.ts +180 -0
- package/src/artifacts/theme.ts +116 -0
- package/src/artifacts/tones.ts +20 -0
- package/src/artifacts/warnings.ts +10 -0
- package/src/artifacts/workbook.ts +674 -0
- package/src/auth/index.ts +4 -0
- package/src/auth/member-events.ts +114 -0
- package/src/auth/profile.ts +118 -0
- package/src/auth/runtime.ts +190 -9
- package/src/auth/strategy.ts +3 -0
- package/src/auth/types.ts +32 -0
- package/src/authorization/decision.ts +52 -0
- package/src/authorization/event-visibility.ts +17 -16
- package/src/authorization/grant-kinds.ts +46 -2
- package/src/authorization/index.ts +6 -1
- package/src/authorization/resolve.ts +58 -1
- package/src/authorization/run-visibility.ts +8 -1
- package/src/authorization/types.ts +14 -0
- package/src/blob-storage/internal.ts +1 -1
- package/src/blob-storage/media-type.ts +69 -0
- package/src/datasets/builders.ts +66 -2
- package/src/datasets/column-index.ts +19 -0
- package/src/datasets/execution.ts +23 -9
- package/src/errors/catalog.ts +26 -1
- package/src/errors/internal.ts +18 -8
- package/src/events/definitions.ts +26 -0
- package/src/events/execution.ts +171 -21
- package/src/events/index.ts +10 -1
- package/src/events/scope.ts +2 -0
- package/src/events/selectors/builder.ts +50 -0
- package/src/events/selectors/index.ts +4 -0
- package/src/events/selectors/types.ts +32 -1
- package/src/events/service.ts +55 -2
- package/src/events/types/index.ts +10 -0
- package/src/events/types/users.ts +73 -0
- package/src/events/view-conditions.ts +241 -0
- package/src/execution/agent.ts +25 -0
- package/src/execution/authorization.ts +70 -0
- package/src/execution/authorized-object-reader.ts +486 -266
- package/src/execution/lineage.ts +14 -0
- package/src/execution/object-reader-clearance.ts +91 -0
- package/src/execution/object-reader-ontology.ts +60 -0
- package/src/execution/object-reader-security.ts +270 -0
- package/src/execution/object-reader-users.ts +122 -0
- package/src/execution/preparation.ts +78 -0
- package/src/execution/request.ts +2 -0
- package/src/execution/unique-lookup.ts +55 -0
- package/src/execution/visible-objects.ts +26 -0
- package/src/http/api-routes.ts +331 -7
- package/src/index.ts +169 -4
- package/src/lake-storage/in-memory.ts +26 -3
- package/src/lake-storage/index.ts +13 -1
- package/src/lake-storage/lineage.ts +385 -0
- package/src/lake-storage/sql-transforms.ts +45 -0
- package/src/lake-storage/types.ts +59 -1
- package/src/lake-storage/version-inputs.ts +35 -6
- package/src/maintenance/ontology-maintenance.ts +15 -0
- package/src/materialization/errors.ts +37 -0
- package/src/materialization/event-envelopes.ts +11 -3
- package/src/materialization/index.ts +1 -0
- package/src/materialization/model.ts +24 -4
- package/src/materializer/README.md +7 -1
- package/src/materializer/edits/commit.ts +56 -12
- package/src/materializer/edits/load-state.ts +15 -7
- package/src/materializer/edits/operations.ts +12 -0
- package/src/materializer/edits/plan.ts +2 -0
- package/src/materializer/edits/unique-values.ts +255 -0
- package/src/materializer/edits/working-state.ts +8 -1
- package/src/materializer/execution/work-records.ts +47 -0
- package/src/materializer/projections/finish-run.ts +0 -1
- package/src/materializer/projections/replace.ts +1 -1
- package/src/materializer/projections/replacement-plan.ts +4 -1
- package/src/materializer/projections/source-materialization.ts +2 -1
- package/src/materializer/shared/normalize.ts +37 -6
- package/src/materializer/shared/projection-run.ts +1 -2
- package/src/materializer/telemetry/append.ts +14 -17
- package/src/materializer/telemetry/plan.ts +2 -0
- package/src/models/audio/catalog.ts +89 -10
- package/src/models/audio/errors.ts +18 -1
- package/src/models/audio/runtime.ts +10 -13
- package/src/models/audio/speech.ts +261 -0
- package/src/models/audio/types.ts +97 -0
- package/src/models/calls.ts +100 -0
- package/src/models/catalog-index.ts +21 -2
- package/src/models/catalog.ts +211 -35
- package/src/models/decision/runtime.ts +21 -22
- package/src/models/decision/validation.ts +4 -1
- package/src/models/definitions.ts +57 -8
- package/src/models/events.ts +72 -1
- package/src/models/execution/README.md +34 -5
- package/src/models/execution/binding.ts +3 -1
- package/src/models/execution/embedding.ts +1 -0
- package/src/models/execution/index.ts +5 -0
- package/src/models/execution/model-call-accounting.ts +3 -1
- package/src/models/execution/model-call-recorder.ts +29 -1
- package/src/models/execution/usage.ts +8 -0
- package/src/models/execution.ts +20 -22
- package/src/models/generation-types.ts +8 -1
- package/src/models/image/catalog.ts +89 -0
- package/src/models/image/errors.ts +19 -0
- package/src/models/image/runtime.ts +335 -0
- package/src/models/image/types.ts +111 -0
- package/src/models/index.ts +38 -4
- package/src/models/{audio/file.ts → input-file.ts} +22 -13
- package/src/models/language-model.ts +13 -0
- package/src/models/pricing.ts +263 -42
- package/src/models/rate-card.ts +161 -12
- package/src/objects/authorized-ontology-view.ts +1 -0
- package/src/objects/clearance-redaction.ts +138 -0
- package/src/objects/conditional-writes.ts +109 -0
- package/src/objects/execution.ts +4 -0
- package/src/objects/index.ts +8 -0
- package/src/objects/link/authorization.ts +37 -8
- package/src/objects/link/endpoints.ts +42 -11
- package/src/objects/link/remove.ts +27 -12
- package/src/objects/link/upsert-batch.ts +9 -5
- package/src/objects/link/upsert.ts +20 -14
- package/src/objects/materializer-adapter.ts +55 -18
- package/src/objects/object/delete.ts +26 -7
- package/src/objects/object/upsert-batch.ts +46 -18
- package/src/objects/object/upsert.ts +25 -8
- package/src/objects/property-clearance.ts +171 -152
- package/src/objects/query/clearance-admission.ts +112 -0
- package/src/objects/query/current-user.ts +76 -0
- package/src/objects/query/executor.ts +39 -103
- package/src/objects/query/explain.ts +20 -7
- package/src/objects/query/index.ts +2 -0
- package/src/objects/query/ir.ts +20 -0
- package/src/objects/query/link-query-clearance.ts +73 -0
- package/src/objects/query/links.ts +8 -0
- package/src/objects/query/matches-predicate.ts +108 -0
- package/src/objects/query/normalize.ts +50 -19
- package/src/objects/query/scalar-values.ts +19 -3
- package/src/objects/query/user-expansions.ts +65 -0
- package/src/objects/query/validate.ts +248 -10
- package/src/objects/runtime-batch.ts +8 -2
- package/src/objects/sdk/object-set.ts +12 -1
- package/src/objects/sdk/query-builder.ts +39 -8
- package/src/objects/sdk/query-executor.ts +6 -0
- package/src/objects/serialize.ts +79 -0
- package/src/objects/unique-violation.ts +59 -0
- package/src/objects/vectors/handle.ts +3 -3
- package/src/ontology/builders.ts +15 -1
- package/src/ontology/docs-markdown.ts +2 -1
- package/src/ontology/index.ts +2 -2
- package/src/ontology/json-schema.ts +4 -0
- package/src/ontology/primitives.ts +21 -8
- package/src/ontology/registry.ts +16 -0
- package/src/ontology/types.ts +9 -0
- package/src/ontology/unique-values.ts +84 -0
- package/src/ontology/user-ref.ts +39 -0
- package/src/ontology/validation/properties.ts +43 -0
- package/src/ontology/validation/schema.ts +9 -1
- package/src/pipelines/index.ts +2 -0
- package/src/pipelines/lineage.ts +45 -0
- package/src/projections/internal.ts +2 -2
- package/src/projections/registry.ts +16 -10
- package/src/projections/revision.ts +112 -45
- package/src/projections/run-dispatch.ts +38 -25
- package/src/projections/types.ts +2 -0
- package/src/query.ts +5 -0
- package/src/rules/execution.ts +43 -11
- package/src/runtime/ai-cost.ts +30 -0
- package/src/runtime/ai-usage.ts +32 -1
- package/src/runtime/create.ts +4 -0
- package/src/runtime/host.ts +73 -1
- package/src/runtime/index.ts +2 -0
- package/src/runtime/internal.ts +2 -0
- package/src/runtime/ontology-mutations.ts +19 -4
- package/src/runtime/resolve-definitions.ts +69 -3
- package/src/runtime/sixb.ts +53 -9
- package/src/runtime/types.ts +99 -9
- package/src/sandboxes/README.md +29 -7
- package/src/sandboxes/auth.ts +16 -0
- package/src/sandboxes/config.ts +2 -7
- package/src/sandboxes/configuration.ts +61 -7
- package/src/sandboxes/index.ts +1 -0
- package/src/sandboxes/sandbox.ts +27 -5
- package/src/schedules/builders.ts +3 -1
- package/src/schedules/runtime.ts +6 -0
- package/src/schedules/validation.ts +23 -1
- package/src/security/README.md +62 -0
- package/src/security/applied-markings-contribution.ts +277 -0
- package/src/security/applied-markings-host.ts +41 -0
- package/src/security/applied-markings-snapshot.ts +235 -0
- package/src/security/applied-markings.ts +405 -0
- package/src/security/dataset-version-markings.ts +163 -0
- package/src/security/grants.ts +191 -11
- package/src/security/index.ts +5 -0
- package/src/security/internal.ts +18 -0
- package/src/security/marking-propagation.ts +255 -0
- package/src/security/marking-sets.ts +42 -0
- package/src/security/markings.ts +29 -178
- package/src/security/pipeline-markings.ts +175 -0
- package/src/security/project.ts +13 -0
- package/src/security/projection-markings.ts +421 -0
- package/src/security/redactions.ts +7 -2
- package/src/security/registry.ts +32 -7
- package/src/security/types.ts +68 -5
- package/src/security/validation.ts +34 -11
- package/src/security/view-conditions.ts +215 -0
- package/src/shares/execution.ts +43 -10
- package/src/storage/action-runs/in-memory.ts +18 -0
- package/src/storage/action-runs/types.ts +10 -0
- package/src/storage/activity/in-memory.ts +374 -0
- package/src/storage/activity/index.ts +27 -0
- package/src/storage/activity/policy.ts +430 -0
- package/src/storage/activity/types.ts +211 -0
- package/src/storage/agents/errors.ts +3 -0
- package/src/storage/agents/in-memory.ts +789 -32
- package/src/storage/agents/index.ts +42 -0
- package/src/storage/agents/provider.ts +730 -16
- package/src/storage/agents/types.ts +628 -27
- package/src/storage/ai-cost/analytics.ts +60 -7
- package/src/storage/ai-cost/codec.ts +6 -1
- package/src/storage/ai-cost/groups.ts +44 -1
- package/src/storage/ai-cost/index.ts +1 -0
- package/src/storage/ai-cost/provider.ts +2 -0
- package/src/storage/ai-cost/types.ts +18 -1
- package/src/storage/ai-cost/validation.ts +39 -12
- package/src/storage/ai-limits/provider.ts +4 -7
- package/src/storage/ai-usage/in-memory.ts +28 -1
- package/src/storage/ai-usage/index.ts +9 -1
- package/src/storage/ai-usage/record.ts +44 -7
- package/src/storage/ai-usage/types.ts +38 -0
- package/src/storage/ai-usage/usage.ts +15 -1
- package/src/storage/artifacts/errors.ts +28 -0
- package/src/storage/artifacts/in-memory.ts +388 -0
- package/src/storage/artifacts/index.ts +35 -0
- package/src/storage/artifacts/record.ts +260 -0
- package/src/storage/artifacts/types.ts +293 -0
- package/src/storage/auth/in-memory/auth-storage.ts +27 -2
- package/src/storage/auth/in-memory/sessions.ts +21 -0
- package/src/storage/auth/in-memory/users.ts +40 -6
- package/src/storage/auth/index.ts +3 -0
- package/src/storage/auth/types.ts +61 -7
- package/src/storage/executions/in-memory.ts +93 -1
- package/src/storage/executions/index.ts +5 -0
- package/src/storage/executions/provider.ts +12 -0
- package/src/storage/executions/types.ts +47 -0
- package/src/storage/in-memory/index.ts +16 -0
- package/src/storage/index.ts +132 -1
- package/src/storage/internal.ts +39 -1
- package/src/storage/migrations/migrate-storage.ts +8 -1
- package/src/storage/migrations/prepare-unique-properties.ts +161 -0
- package/src/storage/objects/guard.ts +7 -3
- package/src/storage/objects/in-memory/conditional-reader.ts +72 -0
- package/src/storage/objects/in-memory/query.ts +4 -105
- package/src/storage/objects/in-memory/read-scope.ts +15 -14
- package/src/storage/objects/in-memory/read-source.ts +11 -1
- package/src/storage/objects/in-memory/scoped-reader.ts +243 -0
- package/src/storage/objects/in-memory/selected-reader.ts +6 -231
- package/src/storage/objects/in-memory/storage.ts +183 -1
- package/src/storage/objects/index.ts +9 -1
- package/src/storage/objects/read-scope.ts +191 -0
- package/src/storage/objects/types.ts +68 -1
- package/src/storage/ontology/in-memory/index.ts +3 -0
- package/src/storage/ontology/in-memory/materializations.ts +35 -0
- package/src/storage/ontology/in-memory/replacement-plans.ts +4 -0
- package/src/storage/ontology/in-memory/sources.ts +23 -0
- package/src/storage/ontology/in-memory/unique-values.ts +62 -0
- package/src/storage/ontology/index.ts +12 -0
- package/src/storage/ontology/materializations.ts +35 -1
- package/src/storage/ontology/provider-work.ts +76 -0
- package/src/storage/ontology/provider.ts +3 -0
- package/src/storage/ontology/sources.ts +17 -0
- package/src/storage/ontology/unique-values.ts +56 -0
- package/src/storage/operation-scope.ts +9 -1
- package/src/storage/projection-runs/in-memory.ts +3 -35
- package/src/storage/share-grants/in-memory.ts +8 -0
- package/src/storage/share-grants/index.ts +1 -0
- package/src/storage/share-grants/types.ts +8 -0
- package/src/storage/types.ts +6 -0
- package/src/storage/workflow-runs/in-memory.ts +16 -0
- package/src/storage/workflow-runs/types.ts +5 -0
- package/src/testing/action-run-storage-contract.ts +25 -0
- package/src/testing/activity-storage-contract.ts +840 -0
- package/src/testing/agent-approval-storage-contract.ts +1117 -0
- package/src/testing/agent-memory-storage-contract.ts +400 -0
- package/src/testing/agent-storage-contract.ts +1206 -50
- package/src/testing/ai-cost-storage-contract.ts +31 -1
- package/src/testing/ai-limit-storage-contract.ts +9 -7
- package/src/testing/ai-model-call-groups-contract.ts +76 -0
- package/src/testing/ai-usage-storage-contract.ts +120 -13
- package/src/testing/artifact-storage-contract.ts +851 -0
- package/src/testing/auth-storage-contract.ts +597 -73
- package/src/testing/broker-contract.ts +28 -23
- package/src/testing/effective-storage-contract.ts +3 -8
- package/src/testing/execution-storage-contract.ts +200 -1
- package/src/testing/file-upload-session-storage-contract.ts +12 -24
- package/src/testing/index.ts +26 -4
- package/src/testing/lake-merge-storage-contract.ts +38 -0
- package/src/testing/lake-storage-contract.ts +269 -30
- package/src/testing/materializer-storage-contract.ts +37 -9
- package/src/testing/object-conditional-read-scope-contract.ts +634 -0
- package/src/testing/object-query-contract.ts +386 -186
- package/src/testing/ontology-storage-contract.ts +286 -22
- package/src/testing/projection-run-storage-contract.ts +8 -18
- package/src/testing/queues-contract.ts +39 -70
- package/src/testing/sandboxes-contract.ts +3 -14
- package/src/testing/share-grant-storage-contract.ts +28 -16
- package/src/testing/share-session-storage-contract.ts +4 -14
- package/src/testing/unique-values-contract.ts +907 -0
- package/src/testing/webhook-execution.ts +1 -1
- package/src/testing/webhook-run-storage-contract.ts +6 -9
- package/src/users/execution.ts +131 -0
- package/src/users/index.ts +2 -0
- package/src/workers/queue-worker.ts +1 -3
- package/src/workers/worker.ts +1 -3
- package/src/workflows/builders.ts +20 -0
- package/src/workflows/request.ts +46 -8
- package/src/workflows/types.ts +15 -2
- package/src/workflows/validation.ts +95 -9
- package/dist/chunk-1k89ecfr.js +0 -85
- package/dist/chunk-1k89ecfr.js.map +0 -10
- package/dist/chunk-1sr8ryzk.js.map +0 -11
- package/dist/chunk-29yx306f.js.map +0 -22
- package/dist/chunk-3t2hgbgd.js.map +0 -15
- package/dist/chunk-4as3wt1c.js.map +0 -12
- package/dist/chunk-4vyr1j8f.js +0 -128
- package/dist/chunk-4vyr1j8f.js.map +0 -11
- package/dist/chunk-5e43w60z.js.map +0 -10
- package/dist/chunk-6c6sn0bh.js.map +0 -106
- package/dist/chunk-6p49a5cq.js.map +0 -12
- package/dist/chunk-6x0pqh32.js.map +0 -10
- package/dist/chunk-7n30ybym.js +0 -3
- package/dist/chunk-7n440zgt.js +0 -261
- package/dist/chunk-7n440zgt.js.map +0 -12
- package/dist/chunk-8mx7qw3y.js.map +0 -13
- package/dist/chunk-91mg3nj9.js.map +0 -12
- package/dist/chunk-96yw3pwd.js.map +0 -10
- package/dist/chunk-9gyp8hg1.js +0 -363
- package/dist/chunk-9gyp8hg1.js.map +0 -14
- package/dist/chunk-9k93ah50.js.map +0 -11
- package/dist/chunk-b38szspf.js.map +0 -11
- package/dist/chunk-bx9q3cwv.js.map +0 -19
- package/dist/chunk-d09tj99x.js.map +0 -12
- package/dist/chunk-ere85b8y.js.map +0 -15
- package/dist/chunk-es1gxsbf.js.map +0 -13
- package/dist/chunk-gsjm1wms.js.map +0 -10
- package/dist/chunk-hjzdd750.js.map +0 -49
- package/dist/chunk-hkc3jct7.js.map +0 -10
- package/dist/chunk-hvsb78a1.js.map +0 -20
- package/dist/chunk-k6q3n2sc.js.map +0 -12
- package/dist/chunk-n33z5bjw.js.map +0 -66
- package/dist/chunk-pbcbn83d.js.map +0 -14
- package/dist/chunk-pqajwytd.js +0 -68
- package/dist/chunk-pqajwytd.js.map +0 -11
- package/dist/chunk-qczk96d9.js.map +0 -11
- package/dist/chunk-rdghfsss.js +0 -39
- package/dist/chunk-rdghfsss.js.map +0 -10
- package/dist/chunk-rj69qcrd.js.map +0 -11
- package/dist/chunk-rrzt8jdy.js.map +0 -14
- package/dist/chunk-s16apyk9.js +0 -256
- package/dist/chunk-s16apyk9.js.map +0 -16
- package/dist/chunk-s54c868q.js +0 -307
- package/dist/chunk-s54c868q.js.map +0 -12
- package/dist/chunk-tpn40322.js.map +0 -19
- package/dist/chunk-tw03bsmb.js.map +0 -11
- package/dist/chunk-v4jbb3rs.js.map +0 -10
- package/dist/chunk-vpq4shxz.js.map +0 -39
- package/dist/chunk-yxd3nnqt.js.map +0 -11
- package/dist/chunk-yzwja0mj.js.map +0 -14
- package/dist/events/toStoredEvent.d.ts +0 -9
- package/dist/events/toStoredEvent.d.ts.map +0 -1
- package/dist/models/audio/file.d.ts +0 -9
- package/dist/models/audio/file.d.ts.map +0 -1
- package/src/events/toStoredEvent.ts +0 -33
- /package/dist/{chunk-mfs23znk.js.map → chunk-07kkp2e1.js.map} +0 -0
- /package/dist/{chunk-fkgc1wt8.js.map → chunk-0phpbbvm.js.map} +0 -0
- /package/dist/{chunk-y0c4e6ex.js.map → chunk-3gbefjg5.js.map} +0 -0
- /package/dist/{chunk-fa02jy15.js.map → chunk-48jezz3j.js.map} +0 -0
- /package/dist/{chunk-c85m1hyj.js.map → chunk-6n69k945.js.map} +0 -0
- /package/dist/{chunk-xfs8x8m9.js.map → chunk-6p0pastb.js.map} +0 -0
- /package/dist/{chunk-t7x8dmn0.js.map → chunk-6y0mkhex.js.map} +0 -0
- /package/dist/{chunk-v9xd5wzd.js.map → chunk-bab05bhg.js.map} +0 -0
- /package/dist/{chunk-gc4ntf7d.js.map → chunk-cwdzcv37.js.map} +0 -0
- /package/dist/{chunk-vyf9kfqf.js.map → chunk-dp0cdtj2.js.map} +0 -0
- /package/dist/{chunk-br3k6qbf.js.map → chunk-fm62y49k.js.map} +0 -0
- /package/dist/{chunk-9ybhtmg4.js.map → chunk-g663fahq.js.map} +0 -0
- /package/dist/{chunk-9w055r5b.js.map → chunk-hwarjrgf.js.map} +0 -0
- /package/dist/{chunk-9dmt152s.js.map → chunk-hyesv9dv.js.map} +0 -0
- /package/dist/{chunk-x9v4cx1d.js.map → chunk-m36fw8ft.js.map} +0 -0
- /package/dist/{chunk-a40ad1ft.js.map → chunk-mbsbxarb.js.map} +0 -0
- /package/dist/{chunk-6aawea28.js.map → chunk-n8q5j6y5.js.map} +0 -0
- /package/dist/{chunk-dk8tkk5f.js.map → chunk-n9zpx9c6.js.map} +0 -0
- /package/dist/{chunk-7t429e3f.js.map → chunk-npcr0228.js.map} +0 -0
- /package/dist/{chunk-z4m0yz8c.js.map → chunk-q4pmvkg0.js.map} +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/artifacts/serialize-query.ts", "../src/artifacts/frames/kit.ts", "../src/artifacts/frames/runtime.ts", "../src/artifacts/frames/assets.ts", "../src/artifacts/frames/entries.ts", "../src/artifacts/frames/grants.ts", "../src/artifacts/frames/probe.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { type SerializedExpandedObject, serializeExpandedObject } from \"../objects/serialize\"\nimport type {\n ArtifactFacetsQueryResult,\n ArtifactObjectsQueryResult,\n ArtifactQueryResult,\n} from \"./queries\"\n\nexport type SerializedArtifactQueryResult =\n | (Omit<ArtifactObjectsQueryResult, \"objects\"> & {\n readonly objects: readonly SerializedExpandedObject[]\n })\n | ArtifactFacetsQueryResult\n\n/**\n * An artifact query's result as `GET /api/artifacts/:id/versions/:v/queries/:name` answers it, and\n * as a page's `sixb.query` resolves: its rows as the query route serializes them, or its facets.\n * The route and the Agent's layout check both serve it, so a page reads the same JSON in either.\n */\nexport function serializeArtifactQueryResult(\n result: ArtifactQueryResult\n): SerializedArtifactQueryResult {\n return result.kind === \"objects\"\n ? { ...result, objects: result.objects.map(serializeExpandedObject) }\n : result\n}\n",
|
|
6
|
+
"const FONTS = {\n \"--font-sans\":\n '\"SF Pro Text\", \"SF Pro Display\", \"Segoe UI Variable Text\", \"Segoe UI\", system-ui, sans-serif',\n \"--font-serif\": 'ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif',\n \"--font-mono\": '\"SF Mono\", \"Geist Mono\", \"JetBrains Mono\", ui-monospace, monospace',\n} as const\n\n/**\n * Sixb's default theme, light and dark: the values `@sixb/ui`'s globals.css gives the tokens the\n * app sends into a frame, which an artifact's theme may set. The kit starts from the light one\n * until the app's arrive, and the layout check measures a deck in both, since a deck follows the\n * app's mode and the project's own theme is out of the sandbox's reach.\n */\nexport const FRAME_DEFAULT_THEMES = {\n light: {\n dark: false,\n tokens: {\n \"--background\": \"#fafafa\",\n \"--foreground\": \"#101010\",\n \"--card\": \"#ffffff\",\n \"--card-foreground\": \"#101010\",\n \"--muted\": \"#f4f4f4\",\n \"--muted-foreground\": \"#5f5f5f\",\n \"--primary\": \"#0a0a0a\",\n \"--primary-foreground\": \"#ffffff\",\n \"--accent\": \"#f0f0f0\",\n \"--accent-foreground\": \"#202020\",\n \"--border\": \"#e2e2e2\",\n \"--chart-1\": \"#101010\",\n \"--chart-2\": \"#404040\",\n \"--chart-3\": \"#737373\",\n \"--chart-4\": \"#a3a3a3\",\n \"--chart-5\": \"#d4d4d4\",\n ...FONTS,\n \"--radius\": \"0.5rem\",\n },\n },\n dark: {\n dark: true,\n tokens: {\n \"--background\": \"#0a0a0a\",\n \"--foreground\": \"#f4f4f4\",\n \"--card\": \"#141414\",\n \"--card-foreground\": \"#f4f4f4\",\n \"--muted\": \"#1c1c1c\",\n \"--muted-foreground\": \"#8a8a8a\",\n \"--primary\": \"#f4f4f4\",\n \"--primary-foreground\": \"#0a0a0a\",\n \"--accent\": \"#1c1c1c\",\n \"--accent-foreground\": \"#f4f4f4\",\n \"--border\": \"#262626\",\n \"--chart-1\": \"#f4f4f4\",\n \"--chart-2\": \"#c4c4c4\",\n \"--chart-3\": \"#8a8a8a\",\n \"--chart-4\": \"#5f5f5f\",\n \"--chart-5\": \"#404040\",\n ...FONTS,\n // `.dark` keeps the light radius.\n \"--radius\": \"0.5rem\",\n },\n },\n} as const\n\nconst LIGHT = FRAME_DEFAULT_THEMES.light.tokens\n\n/**\n * What every frame's kit starts from: the theme's tokens, with the light defaults until the app's\n * arrive, and the document's base. The rules a layout adds sit in the same layer, and everything\n * sits in cascade layers, so an artifact's own CSS, unlayered, always wins.\n */\nfunction kit(rules: string): string {\n return `\n@layer sixb-kit, sixb-theme;\n\n@layer sixb-kit {\n :root {\n${Object.entries(LIGHT)\n .map(([name, value]) => ` ${name}: ${value};`)\n .join(\"\\n\")}\n }\n\n *, *::before, *::after { box-sizing: border-box; }\n html, body { margin: 0; padding: 0; }\n body {\n color: var(--foreground);\n font-family: var(--font-sans);\n -webkit-font-smoothing: antialiased;\n }\n\n${rules}}\n`\n}\n\n/**\n * A deck's kit: the stage that shows one slide or all of them, the slide type scale, the layouts a\n * slide picks by class, the slide chrome, and a few components.\n */\nexport const FRAME_DECK_CSS = kit(` :root {\n --sixb-scale: 1;\n --sixb-overview-scale: 0.25;\n --sixb-columns: 4;\n --sixb-stage: ${LIGHT[\"--muted\"]};\n --sixb-stage-border: ${LIGHT[\"--border\"]};\n --sixb-stage-foreground: ${LIGHT[\"--foreground\"]};\n }\n body { background: var(--muted); }\n\n /*\n * The stage: a slide's size and scale, which slides show, and the stage around them, in the\n * app's colors (--sixb-stage and its kin, which only the app's theme sets). A deck's own CSS, unlayered,\n * wins over everything else in the kit, so these alone are important: an important declaration\n * in a layer wins over every unlayered one, a deck's own important ones included. Otherwise a\n * deck that sets display on its closing slide shows it under every other, and one that sets its\n * body's background repaints the stage.\n */\n html.sixb-deck section.slide { width: 1280px !important; height: 720px !important; flex: none !important; }\n\n /* One slide at a time, scaled to fit and centered on the stage. */\n html.sixb-deck:not([data-mode=\"overview\"]),\n html.sixb-deck:not([data-mode=\"overview\"]) body { height: 100% !important; overflow: hidden !important; }\n html.sixb-deck:not([data-mode=\"overview\"]) body {\n margin: 0 !important;\n padding: 0 !important;\n display: grid !important;\n place-items: center !important;\n background: var(--sixb-stage) !important;\n }\n html.sixb-deck:not([data-mode=\"overview\"]) section.slide { zoom: var(--sixb-scale) !important; }\n html.sixb-deck:not([data-mode=\"overview\"]) section.slide:not([data-current]) { display: none !important; }\n html.sixb-deck[data-mode=\"slide\"] section.slide {\n border-radius: calc(10px / var(--sixb-scale)) !important;\n box-shadow: 0 0 0 calc(1px / var(--sixb-scale)) var(--sixb-stage-border) !important;\n }\n /* Filled, the slide is the whole frame, as a thumbnail or an embed shows it; presented, it\n fills the page on black. */\n html.sixb-deck:is([data-mode=\"fill\"], [data-mode=\"present\"]) section.slide {\n border-radius: 0 !important;\n box-shadow: none !important;\n }\n html.sixb-deck[data-mode=\"present\"] body { background: #000 !important; }\n\n /* Every slide in a grid. */\n html.sixb-deck[data-mode=\"overview\"],\n html.sixb-deck[data-mode=\"overview\"] body { height: 100% !important; overflow: auto !important; }\n html.sixb-deck[data-mode=\"overview\"] body {\n margin: 0 !important;\n display: grid !important;\n grid-template-columns: repeat(var(--sixb-columns), max-content) !important;\n justify-content: center !important;\n align-content: start !important;\n gap: 16px !important;\n padding: 16px !important;\n background: var(--sixb-stage) !important;\n }\n html.sixb-deck[data-mode=\"overview\"] section.slide {\n zoom: var(--sixb-overview-scale) !important;\n cursor: pointer;\n border-radius: calc(6px / var(--sixb-overview-scale)) !important;\n box-shadow: 0 0 0 calc(1px / var(--sixb-overview-scale)) var(--sixb-stage-border) !important;\n }\n html.sixb-deck[data-mode=\"overview\"] section.slide[data-current] {\n box-shadow: 0 0 0 calc(1px / var(--sixb-overview-scale)) var(--sixb-stage-foreground) !important;\n outline: calc(2px / var(--sixb-overview-scale)) solid var(--sixb-stage-foreground) !important;\n outline-offset: calc(2px / var(--sixb-overview-scale)) !important;\n }\n\n /*\n * A slide: 1280×720. Its footer, a rule with the source and the slide's number, sits in the\n * bottom padding, so content never runs into it.\n */\n section.slide {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 28px;\n width: 1280px;\n height: 720px;\n flex: none;\n padding: 72px 96px 140px;\n overflow: hidden;\n background: var(--background);\n color: var(--foreground);\n font-size: 28px;\n line-height: 1.4;\n }\n\n /* Type: nothing on a slide is smaller than 18px. */\n section.slide :is(h1, h2, h3) { margin: 0; text-wrap: balance; }\n section.slide h1 { font-size: 72px; line-height: 1; font-weight: 650; letter-spacing: -0.035em; }\n section.slide h2 { max-width: 1000px; font-size: 46px; line-height: 1.08; font-weight: 600; letter-spacing: -0.025em; }\n section.slide h3 { font-size: 30px; line-height: 1.2; font-weight: 600; letter-spacing: -0.01em; }\n section.slide p { margin: 0; max-width: 34em; }\n section.slide :is(ul, ol) {\n margin: 0;\n padding-left: 30px;\n display: flex;\n flex-direction: column;\n gap: 22px;\n font-size: 30px;\n line-height: 1.35;\n letter-spacing: -0.01em;\n }\n section.slide li { padding-left: 6px; }\n section.slide li::marker { color: var(--muted-foreground); }\n section.slide strong { font-weight: 600; }\n section.slide a { color: inherit; text-decoration-thickness: 2px; text-underline-offset: 5px; }\n section.slide small, section.slide .note { font-size: 20px; color: var(--muted-foreground); }\n section.slide img, section.slide svg, section.slide video { max-width: 100%; max-height: 100%; }\n /* A figure's default 40px margins would squeeze a chart and its labels below the type floor. */\n section.slide figure { margin: 0; }\n section.slide code { font-family: var(--font-mono); font-size: 0.85em; }\n\n /* Chrome: a label above the heading (two spans sit at either end), and the footer. */\n section.slide .eyebrow {\n display: flex;\n justify-content: space-between;\n gap: 24px;\n margin: 0;\n max-width: none;\n font-size: 20px;\n line-height: 1.3;\n letter-spacing: 0.01em;\n color: var(--muted-foreground);\n }\n section.slide .eyebrow + :is(h1, h2) { margin-top: -12px; }\n section.slide::after {\n content: attr(data-number);\n position: absolute;\n left: 96px;\n right: 96px;\n bottom: 64px;\n padding-top: 22px;\n border-top: 1px solid var(--border);\n text-align: right;\n font-size: 18px;\n line-height: 1.4;\n font-variant-numeric: tabular-nums;\n color: var(--muted-foreground);\n }\n section.slide.no-number::after { content: \"\"; }\n section.slide.no-number:not(:has(.source))::after { display: none; }\n section.slide .source {\n position: absolute;\n left: 96px;\n right: calc(96px + 3em);\n bottom: 64px;\n z-index: 1;\n max-width: none;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 18px;\n line-height: 1.4;\n font-variant-numeric: tabular-nums;\n color: var(--muted-foreground);\n }\n\n /* Layouts. */\n section.slide.title > .eyebrow { margin-bottom: auto; }\n section.slide.title h1 { margin-top: 0; font-size: 132px; line-height: 0.92; letter-spacing: -0.04em; max-width: 9em; }\n section.slide.title > p:not(.eyebrow, .source) { font-size: 36px; line-height: 1.25; letter-spacing: -0.01em; color: var(--muted-foreground); max-width: 24em; text-wrap: balance; }\n\n section.slide.section { justify-content: flex-end; }\n section.slide.section h2 { font-size: 72px; line-height: 1; letter-spacing: -0.035em; max-width: 13em; }\n\n section.slide.split {\n display: grid;\n grid-template-columns: 5fr 6fr;\n grid-template-rows: auto 1fr;\n column-gap: 80px;\n row-gap: 28px;\n }\n section.slide.split:has(> .eyebrow) { grid-template-rows: auto auto 1fr; }\n section.slide.split > :is(h1, h2, .eyebrow) { grid-column: 1 / -1; }\n section.slide.split > * { min-width: 0; min-height: 0; }\n section.slide.split > :not(h1, h2, .eyebrow) { align-self: center; }\n\n section.slide.stat > .value { margin-top: auto; }\n section.slide.stat .value {\n font-size: 144px;\n line-height: 0.9;\n font-weight: 600;\n letter-spacing: -0.045em;\n font-variant-numeric: tabular-nums;\n color: var(--primary);\n }\n section.slide.stat .label { font-size: 26px; line-height: 1.35; color: var(--muted-foreground); }\n section.slide.stat .stats {\n margin-top: auto;\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: minmax(0, 1fr);\n gap: 64px;\n padding-bottom: 16px;\n }\n section.slide.stat .stats > * {\n display: flex;\n flex-direction: column;\n gap: 14px;\n padding-top: 28px;\n border-top: 2px solid var(--foreground);\n }\n section.slide.stat .stats:has(> :nth-child(3)) .value { font-size: 96px; }\n section.slide.stat .stats:has(> :nth-child(4)) .value { font-size: 80px; }\n\n section.slide.quote { justify-content: center; }\n section.slide.quote blockquote {\n margin: 0;\n font-family: var(--font-serif);\n font-size: 52px;\n line-height: 1.2;\n letter-spacing: -0.01em;\n max-width: 22em;\n text-wrap: balance;\n }\n section.slide.quote cite { font-style: normal; font-size: 24px; color: var(--muted-foreground); }\n\n section.slide.image > :is(img, figure) { flex: 1; min-height: 0; margin: 0; object-fit: contain; }\n section.slide.image.bleed { padding: 0; }\n section.slide.image.bleed > img { width: 100%; height: 100%; object-fit: cover; }\n section.slide.image.bleed::after, section.slide.image.bleed .source { display: none; }\n\n section.slide.chart > :is(figure, svg, img, .chart) { flex: 1; min-height: 0; margin: 0; }\n section.slide.chart figure { display: flex; flex-direction: column; gap: 20px; }\n section.slide.chart figure > :is(svg, img) { flex: 1; min-height: 0; width: 100%; }\n section.slide figcaption { font-size: 20px; color: var(--muted-foreground); }\n\n section.slide.table table { width: 100%; border-collapse: collapse; font-size: 26px; font-variant-numeric: tabular-nums; }\n section.slide.table :is(th, td) { padding: 14px 16px; border-bottom: 1px solid var(--border); text-align: left; }\n section.slide.table :is(th, td):first-child { padding-left: 0; }\n section.slide.table :is(th, td):last-child { padding-right: 0; }\n section.slide.table th { font-size: 20px; font-weight: 500; color: var(--muted-foreground); }\n section.slide.table :is(th, td).num, section.slide.table :is(th, td)[data-numeric] { text-align: right; }\n\n /*\n * Another artifact on the slide: the app draws it over this box, sized by the deck's CSS like\n * any block. Until it does, and in a thumbnail, the box shows where it goes.\n */\n sixb-embed {\n display: block;\n position: relative;\n width: 100%;\n min-width: 0;\n aspect-ratio: 16 / 9;\n border-radius: 12px;\n background: color-mix(in oklab, var(--muted) 80%, transparent);\n }\n sixb-embed[title]::after {\n content: attr(title);\n position: absolute;\n inset: auto 24px 20px;\n font-size: 20px;\n color: var(--muted-foreground);\n }\n section.slide.chart > sixb-embed,\n section.slide.chart figure > sixb-embed { flex: 1; min-height: 0; aspect-ratio: auto; }\n /* An image from another artifact its reader cannot see. */\n section.slide img[data-sixb-ref=\"unavailable\"] {\n display: block;\n min-width: 160px;\n min-height: 90px;\n border-radius: 12px;\n background: var(--muted);\n }\n\n /* Components. */\n section.slide .legend {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 8px 24px;\n margin: 0;\n padding: 0;\n list-style: none;\n font-size: 20px;\n line-height: 1.3;\n letter-spacing: 0;\n color: var(--muted-foreground);\n }\n section.slide .legend > * { display: flex; align-items: center; gap: 8px; padding: 0; }\n section.slide .legend > *::before {\n content: \"\";\n width: 0.8em;\n height: 0.8em;\n border-radius: 2px;\n background: var(--swatch, var(--chart-1));\n }\n section.slide .callout {\n padding: 24px 28px;\n border-radius: var(--radius);\n background: var(--muted);\n font-size: 26px;\n }\n section.slide .tag {\n display: inline-block;\n padding: 4px 12px;\n border-radius: 999px;\n background: var(--muted);\n font-size: 18px;\n font-weight: 600;\n }\n`)\n\n/**\n * A page's kit: what makes plain HTML read as a finished page in the app's theme. A measured type\n * scale; tables, forms, and buttons drawn like the app's; a centered column for `<main>`; and a\n * few components a page picks by class: `.lede`, `.eyebrow`, `.card`, `.grid`, `.stat`, `.tag`,\n * `.callout`. Every rule sits in the kit's layer, so a page's own CSS wins wherever it differs.\n */\nexport const FRAME_PAGE_CSS = kit(` html { color-scheme: light; }\n html.dark { color-scheme: dark; }\n body {\n background: var(--background);\n font-size: 15px;\n line-height: 1.6;\n text-rendering: optimizeLegibility;\n }\n\n /* A page reads in a centered column with room around it, narrower on a phone. */\n main { display: block; max-width: 1120px; margin: 0 auto; padding: 40px 32px 56px; }\n @media (max-width: 640px) { main { padding: 24px 16px 40px; } }\n\n /* Type. */\n :is(h1, h2, h3, h4) { margin: 0 0 0.5em; color: var(--foreground); text-wrap: balance; }\n h1 { font-size: 32px; line-height: 1.15; font-weight: 650; letter-spacing: -0.025em; }\n h2 { margin-top: 1.6em; font-size: 21px; line-height: 1.25; font-weight: 620; letter-spacing: -0.015em; }\n h3 { margin-top: 1.4em; font-size: 16px; line-height: 1.35; font-weight: 600; }\n h4 { font-size: 14px; font-weight: 600; }\n :is(h1, h2, h3, h4):first-child { margin-top: 0; }\n @media (max-width: 640px) { h1 { font-size: 26px; } h2 { font-size: 19px; } }\n p { margin: 0 0 1em; text-wrap: pretty; }\n .lede { max-width: 42em; margin-bottom: 1.6em; font-size: 17px; line-height: 1.55; color: var(--muted-foreground); }\n .eyebrow {\n margin: 0 0 8px;\n font-size: 12px;\n font-weight: 600;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--muted-foreground);\n }\n small, .muted, .note { color: var(--muted-foreground); }\n small, .note { font-size: 13px; }\n a { color: var(--foreground); text-decoration-color: color-mix(in oklab, var(--foreground) 35%, transparent); text-underline-offset: 3px; }\n a:hover { text-decoration-color: currentColor; }\n strong { font-weight: 600; }\n hr { margin: 32px 0; border: 0; border-top: 1px solid var(--border); }\n :is(ul, ol) { margin: 0 0 1em; padding-left: 1.25em; }\n li + li { margin-top: 0.25em; }\n code { font-family: var(--font-mono); font-size: 0.88em; padding: 0.1em 0.35em; border-radius: 5px; background: var(--muted); }\n pre { margin: 0 0 1em; padding: 14px 16px; overflow-x: auto; border-radius: var(--radius); background: var(--muted); font-size: 13px; line-height: 1.5; }\n pre code { padding: 0; background: none; }\n img, svg, video, canvas { max-width: 100%; }\n img, video { height: auto; }\n\n /* Tables: hairline rows, quiet headers, numbers aligned. Wide ones scroll in their box. */\n table { width: 100%; border-collapse: collapse; font-size: 14px; font-variant-numeric: tabular-nums; }\n :is(th, td) { padding: 10px 12px; border-bottom: 1px solid var(--border); text-align: left; vertical-align: top; }\n th { font-size: 12px; font-weight: 600; letter-spacing: 0.02em; color: var(--muted-foreground); white-space: nowrap; }\n :is(th, td):first-child { padding-left: 0; }\n :is(th, td):last-child { padding-right: 0; }\n :is(th, td).num, :is(th, td)[data-numeric] { text-align: right; white-space: nowrap; }\n .table-scroll { overflow-x: auto; }\n\n /* Forms and buttons, drawn like the app's. */\n label { display: block; margin-bottom: 6px; font-size: 13px; font-weight: 550; }\n :is(input:not([type=\"checkbox\"], [type=\"radio\"], [type=\"range\"], [type=\"color\"]), select, textarea) {\n width: 100%;\n min-height: 36px;\n padding: 7px 10px;\n border: 1px solid var(--border);\n border-radius: calc(var(--radius) - 2px);\n background: var(--card);\n color: var(--foreground);\n font: inherit;\n font-size: 14px;\n line-height: 1.4;\n box-shadow: 0 1px 1px rgb(0 0 0 / 0.03);\n transition: border-color 0.12s, box-shadow 0.12s;\n }\n :is(input, select, textarea):focus-visible {\n outline: none;\n border-color: color-mix(in oklab, var(--foreground) 45%, var(--border));\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--foreground) 12%, transparent);\n }\n input[type=\"range\"], input[type=\"checkbox\"], input[type=\"radio\"] { accent-color: var(--primary); }\n textarea { min-height: 88px; resize: vertical; }\n button, .button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n min-height: 36px;\n padding: 0 14px;\n border: 1px solid transparent;\n border-radius: calc(var(--radius) - 2px);\n background: var(--primary);\n color: var(--primary-foreground);\n font: inherit;\n font-size: 14px;\n font-weight: 550;\n text-decoration: none;\n cursor: pointer;\n transition: background-color 0.12s, border-color 0.12s, opacity 0.12s;\n }\n :is(button, .button):hover { background: color-mix(in oklab, var(--primary) 88%, var(--background)); }\n :is(button, .button):focus-visible { outline: 2px solid var(--ring, var(--foreground)); outline-offset: 2px; }\n :is(button, .button):disabled { opacity: 0.5; cursor: default; }\n :is(button, .button).secondary { border-color: var(--border); background: var(--card); color: var(--foreground); }\n :is(button, .button).secondary:hover { background: var(--muted); }\n :is(button, .button).ghost { background: transparent; color: var(--foreground); }\n :is(button, .button).ghost:hover { background: var(--muted); }\n fieldset { margin: 0 0 16px; padding: 0; border: 0; }\n .field { margin-bottom: 16px; }\n\n /* Components. */\n .card {\n padding: 20px;\n border: 1px solid var(--border);\n border-radius: var(--radius);\n background: var(--card);\n color: var(--card-foreground);\n box-shadow: 0 1px 2px rgb(0 0 0 / 0.04);\n }\n .card > :last-child { margin-bottom: 0; }\n /* Cards stack with room between them; in a grid or a row, its gap spaces them. */\n .card { margin-bottom: 16px; }\n :is(.grid, .row) > .card { margin-bottom: 0; }\n .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr)); gap: 16px; margin-bottom: 24px; }\n .row { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }\n .stat .label { font-size: 13px; color: var(--muted-foreground); }\n .stat .value { margin-top: 4px; font-size: 30px; line-height: 1.1; font-weight: 650; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }\n .stat .delta { margin-top: 6px; font-size: 13px; color: var(--muted-foreground); font-variant-numeric: tabular-nums; }\n .tag {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 9px;\n border-radius: 999px;\n background: var(--muted);\n font-size: 12px;\n font-weight: 600;\n line-height: 1.6;\n white-space: nowrap;\n }\n .callout { margin: 0 0 1em; padding: 14px 16px; border-radius: var(--radius); background: var(--muted); }\n .callout > :last-child { margin-bottom: 0; }\n\n /*\n * Another artifact on the page: the app draws it over this box, sized by the page's CSS like any\n * block. Until it does, the box shows where it goes.\n */\n sixb-embed {\n display: block;\n position: relative;\n width: 100%;\n aspect-ratio: 16 / 9;\n margin-bottom: 1em;\n border-radius: var(--radius);\n background: var(--muted);\n }\n sixb-embed[title]::after {\n content: attr(title);\n position: absolute;\n inset: auto 16px 12px;\n font-size: 13px;\n color: var(--muted-foreground);\n }\n img[data-sixb-ref=\"unavailable\"] { display: block; min-width: 120px; min-height: 68px; border-radius: var(--radius); background: var(--muted); }\n`)\n",
|
|
7
|
+
"/**\n * The runtime the frame injects before anything else in an entry's `<head>`. It is served as this\n * function's own source, `(${frameRuntime})()`, so it imports nothing and names nothing outside\n * itself: the protocol string and the keys repeat what `protocol.ts` declares, and a test holds\n * the two together. Its tag names the layout, `data-sixb-layout`.\n *\n * In every layout it applies the theme the app sends, then fires `sixb:theme` on the window for\n * what draws its own colors; answers the app's requests; and tells the app about the links the\n * reader follows, to other artifacts or to web pages, for the app to open them, and where its\n * `<sixb-embed>` boxes are, for the app to draw them over the frame. A deck it also lays out:\n * every `section.slide` is a 1280×720 slide, shown one at a time scaled to fit, or all at once in\n * a grid. The URL's fragment can open it at a slide, and with `sixb-fill` show that slide alone\n * filling the frame, as a thumbnail or an embed does; it tells the app about keys and picks in the\n * overview. A page scrolls as it is: it reports the embeds near its view as it scrolls, and its\n * height as it changes.\n *\n * It gives every layout `window.sixb.state`, where a page keeps JSON values for its reader: each\n * call is a message the app answers, and the app keeps the values. Opened on its own, with no app\n * around it, as the layout check opens a page, the values live in memory until it closes.\n *\n * And `window.sixb.query(name)`, which reads one of the version's queries as the reader: the app\n * runs it and answers with the query route's JSON. Opened on its own, it reads\n * `__sixb/queries/<name>.json` beside the runtime instead, where the layout check serves what the\n * query returned for the Agent's requester.\n *\n * When the objects a query reads change, the app reads it again and tells the frame, which fires\n * `sixb:query` on the window with `detail.name`, for the page to call `sixb.query(name)` again.\n * Opened on its own, nothing tells it: the rows the check served are all there is.\n */\nexport function frameRuntime(): void {\n const PROTOCOL = \"sixb-frame/1\"\n const WIDTH = 1280\n const HEIGHT = 720\n const KEYS = [\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"PageUp\",\n \"PageDown\",\n \"Home\",\n \"End\",\n \" \",\n \"Escape\",\n ]\n /** What a page may keep, as `ARTIFACT_STATE_LIMITS` says: refused here before it is sent. */\n const MAX_KEY_LENGTH = 128\n const MAX_VALUE_BYTES = 65536\n /** A query's name, as `isArtifactQueryName` says: refused here before it is sent. */\n const QUERY_NAME = /^[a-z0-9][a-z0-9-]{0,63}$/\n const root = document.documentElement\n // Only set while the runtime itself runs, so kept for what reads it later.\n const script = document.currentScript as HTMLScriptElement | null\n const deck = script?.getAttribute(\"data-sixb-layout\") !== \"page\"\n const start = new URLSearchParams(window.location.hash.slice(1))\n if (deck) {\n root.classList.add(\"sixb-deck\")\n root.dataset.mode = start.has(\"sixb-fill\") ? \"fill\" : \"slide\"\n }\n let current = Number(start.get(\"sixb-slide\")) || 1\n\n const slides = (): HTMLElement[] =>\n Array.from(document.querySelectorAll<HTMLElement>(\"section.slide\"))\n const post = (message: Record<string, unknown>) =>\n window.parent.postMessage({ protocol: PROTOCOL, ...message }, \"*\")\n\n /** A link's address resolved against the page, when it is a web page's: `http:` or `https:`. */\n const webAddress = (href: string): string | null => {\n try {\n const url = new URL(href, document.baseURI)\n return url.protocol === \"http:\" || url.protocol === \"https:\" ? url.href : null\n } catch {\n return null\n }\n }\n\n /** The scale that fits a slide in the window, and the one that fits a column of the grid. */\n const fit = () => {\n const columns = window.innerWidth < 720 ? 2 : window.innerWidth < 1100 ? 3 : 4\n const gap = 16\n // A slide keeps a margin around it, so its edge reads against the stage; filled or presented,\n // it has none.\n const margin =\n root.dataset.mode === \"fill\" || root.dataset.mode === \"present\"\n ? 0\n : Math.min(32, window.innerWidth * 0.04)\n root.style.setProperty(\n \"--sixb-scale\",\n String(\n Math.min(\n (window.innerWidth - margin * 2) / WIDTH,\n (window.innerHeight - margin * 2) / HEIGHT\n )\n )\n )\n root.style.setProperty(\"--sixb-columns\", String(columns))\n root.style.setProperty(\n \"--sixb-overview-scale\",\n String((window.innerWidth - gap * (columns + 1)) / columns / WIDTH)\n )\n }\n\n /**\n * The embeds to draw over the frame, once an animation frame, when they move: the shown slide's\n * in a deck; in a page, those within a screen of its view, so a long page mounts what is near.\n */\n let reported = \"\"\n let reporting = false\n\n /** Each element's own id, for the app to keep what it draws there as others come and go. */\n const ids = new WeakMap<Element, number>()\n let lastId = 0\n const idOf = (element: Element): number => {\n const known = ids.get(element)\n if (known !== undefined) return known\n\n lastId += 1\n ids.set(element, lastId)\n return lastId\n }\n\n const reportEmbeds = () => {\n if (reporting || root.dataset.mode === \"fill\") return\n reporting = true\n requestAnimationFrame(() => {\n reporting = false\n const scale = deck ? Number(root.style.getPropertyValue(\"--sixb-scale\")) || 1 : 1\n const scope = deck\n ? root.dataset.mode === \"overview\"\n ? undefined\n : slides()[current - 1]\n : document\n const near = (rect: DOMRect) =>\n deck || (rect.bottom > -window.innerHeight && rect.top < window.innerHeight * 2)\n const embeds = Array.from(scope?.querySelectorAll(\"sixb-embed[src]\") ?? []).flatMap(\n (element) => {\n const id = idOf(element)\n const rect = element.getBoundingClientRect()\n return near(rect)\n ? [\n {\n id,\n address: (element.getAttribute(\"src\") ?? \"\").trim(),\n rect: { x: rect.left, y: rect.top, width: rect.width, height: rect.height },\n scale,\n },\n ]\n : []\n }\n )\n const next = JSON.stringify(embeds)\n if (next === reported) return\n reported = next\n post({ event: \"embeds\", params: { embeds } })\n })\n }\n\n /**\n * A page's height as laid out, for a document that shows it to size its frame: its body's, not\n * the document's, which is never less than the frame and so would never let the frame shrink.\n */\n let height = -1\n const reportSize = () => {\n const body = document.body\n if (deck || !body) return\n const style = getComputedStyle(body)\n const next = Math.ceil(\n Math.max(body.scrollHeight, body.getBoundingClientRect().height) +\n (Number.parseFloat(style.marginTop) || 0) +\n (Number.parseFloat(style.marginBottom) || 0)\n )\n if (next === height) return\n height = next\n post({ event: \"size\", params: { height } })\n }\n\n const show = (slide: number) => {\n const all = slides()\n current = Math.min(Math.max(1, Math.round(slide) || 1), Math.max(1, all.length))\n all.forEach((element, index) => {\n element.toggleAttribute(\"data-current\", index + 1 === current)\n })\n if (root.dataset.mode === \"overview\") {\n all[current - 1]?.scrollIntoView({ block: \"nearest\" })\n }\n reportEmbeds()\n }\n\n const handle = (method: string, params: Record<string, unknown>) => {\n switch (method) {\n case \"theme\": {\n // In the theme's layer, not inline: the deck's own CSS, unlayered, still wins.\n const tokens = (params.tokens ?? {}) as Record<string, string>\n const declarations = Object.entries(tokens)\n .filter(\n ([name, value]) =>\n /^--[a-z0-9-]+$/.test(name) && typeof value === \"string\" && !/[;{}<]/.test(value)\n )\n .map(([name, value]) => `${name}: ${value};`)\n // The stage is the app's, in the app's colors, whatever a deck makes of its own tokens.\n for (const [stage, token] of [\n [\"--sixb-stage\", \"--muted\"],\n [\"--sixb-stage-border\", \"--border\"],\n [\"--sixb-stage-foreground\", \"--foreground\"],\n ]) {\n const value = declarations.find((declaration) => declaration.startsWith(`${token}:`))\n if (value) declarations.push(`${stage}${value.slice(token.length)}`)\n }\n let style = document.getElementById(\"sixb-theme\")\n if (!style) {\n style = document.createElement(\"style\")\n style.id = \"sixb-theme\"\n document.head.append(style)\n }\n style.textContent = `@layer sixb-theme { :root { ${declarations.join(\" \")} color-scheme: ${params.dark === true ? \"dark\" : \"light\"}; } }`\n root.classList.toggle(\"dark\", params.dark === true)\n // What draws on a canvas, as a chart library does, reads its colors once: it redraws on\n // this, which comes after the page has loaded.\n window.dispatchEvent(\n new CustomEvent(\"sixb:theme\", { detail: { dark: params.dark === true } })\n )\n return\n }\n case \"goto\":\n if (!deck) throw new Error(\"Only a deck has slides.\")\n show(Number(params.slide))\n return\n case \"reload\":\n // After the answer is posted, so the app hears it before the page goes.\n setTimeout(() => window.location.reload())\n return\n case \"query.changed\": {\n // The page reads the new rows itself: what it drew from the old ones is its own.\n const name = String(params.name)\n if (!QUERY_NAME.test(name)) throw new Error(`Unknown query '${name}'.`)\n\n window.dispatchEvent(new CustomEvent(\"sixb:query\", { detail: { name } }))\n return\n }\n case \"scroll\":\n if (deck) throw new Error(\"Only a page scrolls.\")\n window.scrollBy({ left: Number(params.x) || 0, top: Number(params.y) || 0 })\n return\n case \"mode\":\n if (!deck) throw new Error(\"Only a deck has modes.\")\n if (root.dataset.mode === \"fill\") return\n root.dataset.mode =\n params.mode === \"overview\" || params.mode === \"present\" ? params.mode : \"slide\"\n fit()\n show(current)\n return\n default:\n throw new Error(`Unknown method '${method}'.`)\n }\n }\n\n /**\n * `sixb.state` and `sixb.query`, promise-based: each call posted numbered, and settled by the\n * app's result with that number.\n */\n const calls = new Map<\n number,\n { resolve: (value: unknown) => void; reject: (error: Error) => void }\n >()\n let called = 0\n const alone = window.parent === window\n const memory = new Map<string, string>()\n const call = (method: string, params: Record<string, unknown>): Promise<unknown> => {\n if (alone) {\n const key = String(params.key)\n const kept = memory.get(key)\n switch (method) {\n case \"state.get\":\n return Promise.resolve(kept === undefined ? undefined : JSON.parse(kept))\n case \"state.set\":\n memory.set(key, JSON.stringify(params.value))\n return Promise.resolve(undefined)\n case \"state.delete\":\n return Promise.resolve(memory.delete(key))\n default:\n return Promise.resolve([...memory.keys()].sort())\n }\n }\n called += 1\n const id = called\n return new Promise((resolve, reject) => {\n calls.set(id, { resolve, reject })\n post({ call: id, method, params })\n })\n }\n // Not `.` or `..`: the app puts the key in a URL's path, where those name another route.\n const checkKey = (key: unknown): string => {\n if (\n typeof key !== \"string\" ||\n key.length === 0 ||\n key.length > MAX_KEY_LENGTH ||\n key === \".\" ||\n key === \"..\"\n ) {\n throw new TypeError(`sixb.state: a key is text of 1 to ${MAX_KEY_LENGTH} characters.`)\n }\n return key\n }\n const state = {\n get: (key: string) => Promise.resolve().then(() => call(\"state.get\", { key: checkKey(key) })),\n set: (key: string, value: unknown) =>\n Promise.resolve().then(() => {\n const json = JSON.stringify(value)\n if (json === undefined) {\n throw new TypeError(\n \"sixb.state: a value is JSON: text, a number, true or false, null, a list, or an object.\"\n )\n }\n if (new TextEncoder().encode(json).byteLength > MAX_VALUE_BYTES) {\n throw new RangeError(\n `sixb.state: a value is at most ${MAX_VALUE_BYTES / 1024} KB as JSON.`\n )\n }\n // As JSON keeps it, so the page reads back what it would after a reload.\n return call(\"state.set\", { key: checkKey(key), value: JSON.parse(json) }).then(() => {})\n }),\n delete: (key: string) =>\n Promise.resolve().then(() => call(\"state.delete\", { key: checkKey(key) })),\n keys: () => call(\"state.keys\", {}),\n }\n\n /**\n * A query's result as the check serves it beside the runtime, `__sixb/queries/<name>.json`:\n * resolved from the runtime's own address, so a canvas's board in its folder finds it too.\n */\n const readQueryFile = async (name: string): Promise<unknown> => {\n const base = script?.src || new URL(\"__sixb/runtime.js\", window.location.href).href\n const response = await fetch(new URL(`queries/${name}.json`, base))\n if (response.ok) return response.json()\n\n if (response.status === 404) {\n throw new Error(`[Sixb] No query '${name}' in this page's version.`)\n }\n const body = (await response.json().catch(() => null)) as { error?: unknown } | null\n throw new Error(\n typeof body?.error === \"string\" ? body.error : `[Sixb] Query '${name}' could not be read.`\n )\n }\n const query = (name: string): Promise<unknown> =>\n Promise.resolve().then(() => {\n if (typeof name !== \"string\" || !QUERY_NAME.test(name)) {\n throw new TypeError(\n \"sixb.query: a query's name is that of its file, queries/<name>.json: lowercase letters, digits and hyphens.\"\n )\n }\n return alone ? readQueryFile(name) : call(\"query.run\", { name })\n })\n\n Object.defineProperty(window, \"sixb\", {\n value: Object.freeze({ state: Object.freeze(state), query }),\n enumerable: true,\n })\n\n window.addEventListener(\"message\", (event) => {\n if (event.source !== window.parent) return\n const data = event.data as Record<string, unknown> | null\n // The app's answer to a call.\n if (data && data.protocol === PROTOCOL && typeof data.result === \"number\") {\n const pending = calls.get(data.result)\n calls.delete(data.result)\n if (typeof data.error === \"string\") pending?.reject(new Error(data.error))\n else pending?.resolve(data.value)\n return\n }\n // Requests only: at the top level, as in the layout check, the frame's own answers come back\n // to it, and answering an answer would trade error messages with itself for good.\n if (!data || data.protocol !== PROTOCOL || typeof data.id !== \"number\") return\n if (typeof data.method !== \"string\") return\n try {\n handle(String(data.method), (data.params ?? {}) as Record<string, unknown>)\n post({ id: data.id })\n } catch (error) {\n post({ id: data.id, error: error instanceof Error ? error.message : String(error) })\n }\n })\n\n // A deck's keys move it wherever focus is; a page's keys are its own.\n window.addEventListener(\"keydown\", (event) => {\n if (!deck || event.metaKey || event.ctrlKey || event.altKey) return\n const target = event.target as HTMLElement | null\n if (target?.closest(\"input, textarea, select, [contenteditable]\")) return\n if (!KEYS.includes(event.key)) return\n event.preventDefault()\n post({ event: \"key\", params: { key: event.key } })\n })\n\n document.addEventListener(\"click\", (event) => {\n const target = event.target as HTMLElement | null\n const link = target?.closest<HTMLAnchorElement>(\"a[href]\")\n if (link) {\n const href = link.getAttribute(\"href\") ?? \"\"\n // A link within the page moves through it, and one the page's own script handled is its.\n if (href.startsWith(\"#\") || event.defaultPrevented) return\n\n // Anything else would leave the frame, which can open no window and navigates nowhere but\n // the frames' origin: the app opens it, an artifact where the reader is and a web page in a\n // new tab.\n event.preventDefault()\n if (/^artifact:/i.test(href.trim())) {\n post({ event: \"open\", params: { address: href.trim() } })\n return\n }\n\n const url = webAddress(href)\n if (url) post({ event: \"link\", params: { url } })\n return\n }\n if (!deck || root.dataset.mode !== \"overview\") return\n const slide = target?.closest<HTMLElement>(\"section.slide\")\n if (!slide) return\n post({ event: \"select\", params: { slide: slides().indexOf(slide) + 1 } })\n })\n\n window.addEventListener(\"resize\", () => {\n if (deck) fit()\n reportEmbeds()\n })\n const ready = () => {\n if (!deck) {\n post({ event: \"ready\", params: {} })\n window.addEventListener(\"scroll\", reportEmbeds, { passive: true })\n // What changes the page's height moves its embeds too: content, fonts, and images.\n const resized = new ResizeObserver(() => {\n reportSize()\n reportEmbeds()\n })\n resized.observe(document.documentElement)\n if (document.body) resized.observe(document.body)\n window.addEventListener(\"load\", () => {\n reportSize()\n reportEmbeds()\n })\n reportSize()\n reportEmbeds()\n return\n }\n slides().forEach((element, index) => {\n element.dataset.number = String(index + 1)\n })\n fit()\n show(current)\n post({ event: \"ready\", params: { slides: slides().length } })\n // Fonts and images that arrive later move what is laid out after them.\n const resized = new ResizeObserver(reportEmbeds)\n for (const element of Array.from(document.querySelectorAll(\"section.slide > *, sixb-embed\"))) {\n resized.observe(element)\n }\n window.addEventListener(\"load\", reportEmbeds)\n document.fonts?.ready.then(reportEmbeds)\n }\n if (document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\", ready)\n else ready()\n}\n",
|
|
8
|
+
"import type { ArtifactFrameTarget } from \"../../storage/artifacts/types\"\nimport { isArtifactAddress, parseArtifactAddress } from \"../address\"\nimport { decodeHtmlEntities } from \"../html\"\nimport { FRAME_ASSET_PREFIX } from \"../publish/validate/html\"\nimport type { FrameLayout } from \"./entries\"\nimport { FRAME_DECK_CSS, FRAME_PAGE_CSS } from \"./kit\"\nimport { frameRuntime } from \"./runtime\"\n\n/**\n * The files a frame gets besides the version's own, under `__sixb/`, which a version may not use:\n * a kit per layout, and the runtime. The server serves them to the app's frames, and the Agent's\n * layout check serves them to its browser, so both lay a version out the same way.\n */\nexport const FRAME_ASSETS: Readonly<\n Record<string, { readonly body: string; readonly type: string }>\n> = {\n [`${FRAME_ASSET_PREFIX}deck.css`]: { body: FRAME_DECK_CSS, type: \"text/css; charset=utf-8\" },\n [`${FRAME_ASSET_PREFIX}page.css`]: { body: FRAME_PAGE_CSS, type: \"text/css; charset=utf-8\" },\n [`${FRAME_ASSET_PREFIX}runtime.js`]: {\n body: `(${frameRuntime.toString()})()\\n`,\n type: \"text/javascript; charset=utf-8\",\n },\n}\n\n/** The kit for the layout and the runtime, which reads the layout from its own tag. */\nfunction injected(layout: FrameLayout, base: string): string {\n return `<link rel=\"stylesheet\" href=\"${base}${FRAME_ASSET_PREFIX}${layout}.css\"><script src=\"${base}${FRAME_ASSET_PREFIX}runtime.js\" data-sixb-layout=\"${layout}\"></script>`\n}\n\n/**\n * The way from an entry back to its frame's root, where `__sixb/` is: none for `index.html`,\n * `../` for a canvas's `boards/home.html`.\n */\nfunction rootOf(entry: string): string {\n return \"../\".repeat(entry.split(\"/\").length - 1)\n}\n\n/**\n * An entry with its layout's kit and the runtime first in its `<head>`, before anything of its\n * own, so its styles and scripts build on them. Exactly once, whatever the markup: in `<head>`\n * when the page has one, else first in `<html>`, else right after the doctype, so a page without\n * either still renders in standards mode. Each element is looked for by parsing, not by matching\n * text, so a `<head>` inside a comment or a script's string is not one. `entry` is where the page\n * is in the version, so an entry in a folder, as a canvas's boards are, finds them.\n */\nexport function injectFrameAssets(html: string, layout: FrameLayout, entry = \"index.html\"): string {\n const assets = injected(layout, rootOf(entry))\n for (const selector of [\"head\", \"html\"]) {\n let injected = false\n const rewritten = new HTMLRewriter()\n .on(selector, {\n element(element) {\n if (injected) return\n injected = true\n element.prepend(assets, { html: true })\n },\n })\n .transform(html)\n if (injected) return rewritten\n }\n const doctype = /^\\s*<!doctype[^>]*>/i.exec(html)?.[0] ?? \"\"\n return `${doctype}${assets}${html.slice(doctype.length)}`\n}\n\n/** Where a frame serves a file another artifact lends it: `__sixb/ref/<id>@<version>/<path>`. */\nexport const FRAME_REFERENCE_PREFIX = `${FRAME_ASSET_PREFIX}ref/`\n\n/** The path, from an entry, of a file one of its frame's targets lends it. */\nfunction frameReferencePath(target: ArtifactFrameTarget, entry: string): string | null {\n const file = parseArtifactAddress(target.address)?.path\n if (!file) return null\n const path = file.split(\"/\").map(encodeURIComponent).join(\"/\")\n return `${rootOf(entry)}${FRAME_REFERENCE_PREFIX}${target.artifactId}@${target.version}/${path}`\n}\n\n/**\n * Points each image an entry shows from another artifact (`<img src=\"artifact:…\">`) at the copy its\n * frame serves, marked `data-sixb-ref`. An image its reader cannot see, or that the frame has\n * no target for, loses its source and is marked unavailable: the kit draws it as an empty box.\n * Addresses are compared as publishing recorded them, with their entities decoded.\n */\nexport function rewriteFrameReferences(\n html: string,\n targets: readonly ArtifactFrameTarget[],\n entry = \"index.html\"\n): string {\n return new HTMLRewriter()\n .on(\"img[src]\", {\n element(element) {\n const source = decodeHtmlEntities(element.getAttribute(\"src\") ?? \"\").trim()\n if (!isArtifactAddress(source)) return\n const target = targets.find((candidate) => candidate.address === source)\n const path = target ? frameReferencePath(target, entry) : null\n if (path) {\n element.setAttribute(\"src\", path)\n element.setAttribute(\"data-sixb-ref\", \"\")\n } else {\n element.removeAttribute(\"src\")\n element.setAttribute(\"data-sixb-ref\", \"unavailable\")\n }\n },\n })\n .transform(html)\n}\n",
|
|
9
|
+
"import type { ArtifactKind } from \"../kinds\"\nimport type { ArtifactOutline } from \"../outline\"\n\n/**\n * How the frame's runtime lays out what it serves: a deck shows 1280×720 slides scaled to fit, one\n * at a time or all at once; a page scrolls like any web page, as a canvas's boards do.\n */\nexport type FrameLayout = \"deck\" | \"page\"\n\n/** The kinds that open in a sandboxed frame, each in its layout. */\nconst FRAME_LAYOUTS: Partial<Readonly<Record<ArtifactKind, FrameLayout>>> = {\n slides: \"deck\",\n page: \"page\",\n canvas: \"page\",\n}\n\n/** A kind's frame layout, or null for a kind Sixb draws natively. */\nexport function frameLayout(kind: ArtifactKind): FrameLayout | null {\n return FRAME_LAYOUTS[kind] ?? null\n}\n\n/**\n * The files of a version its frame serves as pages, with the kit and the runtime first in their\n * `<head>`: a deck's or a page's entry, or each of a canvas's boards; none for a kind that does\n * not open in a frame.\n */\nexport function frameEntries(version: {\n readonly entry: string\n readonly outline: ArtifactOutline\n}): readonly string[] {\n if (version.outline.kind === \"canvas\") {\n return version.outline.items.flatMap((item) => (item.type === \"board\" ? [item.file] : []))\n }\n return frameLayout(version.outline.kind) ? [version.entry] : []\n}\n",
|
|
10
|
+
"import { createHash, randomBytes } from \"node:crypto\"\nimport type {\n ArtifactFrameTarget,\n ArtifactStorage,\n ArtifactVersionRecord,\n} from \"../../storage/artifacts/types\"\nimport { parseArtifactAddress } from \"../address\"\nimport { ArtifactRequestError } from \"../errors\"\nimport { frameLayout } from \"./entries\"\n\n/** Path prefix of the route that serves a version's files to its frame. */\nexport const ARTIFACT_FRAME_ROUTE_PREFIX = \"/api/artifact-frames/\"\n\n/** A frame link lasts an hour; the app asks for a new one before it runs out. */\nconst FRAME_LIFETIME_MS = 60 * 60 * 1000\n/** 32 random bytes in base64url. */\nconst TOKEN_PATTERN = /^[A-Za-z0-9_-]{43}$/\n\nexport interface ArtifactFrame {\n /** The frame's base, ending in `/`: the version's files are served under it by their paths. */\n readonly path: string\n readonly expiresAt: Date\n}\n\ntype ReadArtifactVersion = (\n artifactId: string,\n version: number | \"latest\"\n) => Promise<ArtifactVersionRecord | null>\n\n/**\n * Issues a link that serves a version to a sandboxed frame, with the files it embeds from other\n * artifacts that `read` finds. The token in the link is the credential: only its hash is stored.\n * Whoever asks must already have been allowed to read the version, and `read` reads as them. Only\n * a kind with a frame layout opens in one, since the frame serves its entry as a page.\n */\nexport async function createArtifactFrame(input: {\n readonly projectId: string\n readonly storage: ArtifactStorage\n readonly version: ArtifactVersionRecord\n readonly read?: ReadArtifactVersion\n readonly now?: Date\n}): Promise<ArtifactFrame> {\n const { version } = input\n if (!frameLayout(version.outline.kind)) {\n throw new ArtifactRequestError(\n \"artifact_kind_mismatch\",\n `[Sixb] '${version.artifactId}' is a ${version.outline.kind}, which does not open in a frame. Read its files instead.`\n )\n }\n const createdAt = input.now ?? new Date()\n const expiresAt = new Date(createdAt.getTime() + FRAME_LIFETIME_MS)\n const token = randomBytes(32).toString(\"base64url\")\n await input.storage.createFrameGrant({\n projectId: input.projectId,\n tokenHash: hashToken(token),\n artifactId: version.artifactId,\n version: version.version,\n targets: input.read ? await frameTargets(version, input.read) : [],\n createdAt,\n expiresAt,\n })\n return { path: `${ARTIFACT_FRAME_ROUTE_PREFIX}${token}/`, expiresAt }\n}\n\n/**\n * The files from other artifacts a version's frame may show its reader: each file it embeds\n * (`<img src=\"artifact:…/figure.svg\">`) that `read`, as the reader, finds, at the version the\n * address pins or the latest. A chart, range, or section is drawn by the app over the frame, under\n * the reader's own session, and needs nothing here.\n */\nasync function frameTargets(\n version: ArtifactVersionRecord,\n read: ReadArtifactVersion\n): Promise<ArtifactFrameTarget[]> {\n const targets: ArtifactFrameTarget[] = []\n for (const reference of version.references) {\n if (\n reference.as !== \"embed\" ||\n targets.some((target) => target.address === reference.address)\n ) {\n continue\n }\n const address = parseArtifactAddress(reference.address)\n if (!address?.path) continue\n const target = await read(address.artifactId, address.version ?? \"latest\").catch(() => null)\n if (!target?.files.some((file) => file.path === address.path)) continue\n targets.push({\n address: reference.address,\n artifactId: target.artifactId,\n version: target.version,\n })\n }\n return targets\n}\n\n/**\n * What a frame link serves: its version, and what it may show from other artifacts; `null` once\n * the link is unknown, expired, or its version gone, and for a kind that does not open in a frame.\n */\nexport async function resolveArtifactFrame(input: {\n readonly projectId: string\n readonly storage: ArtifactStorage\n readonly token: string\n readonly now?: Date\n}): Promise<{\n readonly version: ArtifactVersionRecord\n readonly targets: readonly ArtifactFrameTarget[]\n} | null> {\n if (!TOKEN_PATTERN.test(input.token)) return null\n const grant = await input.storage.findFrameGrant({\n projectId: input.projectId,\n tokenHash: hashToken(input.token),\n })\n if (!grant || grant.expiresAt <= (input.now ?? new Date())) return null\n const version = await input.storage.getVersion({\n projectId: input.projectId,\n artifactId: grant.artifactId,\n version: grant.version,\n })\n return version && frameLayout(version.outline.kind) ? { version, targets: grant.targets } : null\n}\n\nfunction hashToken(token: string): string {\n return createHash(\"sha256\").update(token).digest(\"hex\")\n}\n",
|
|
11
|
+
"/** A problem the layout probe found on a slide or a page, where it is, and its text. */\nexport interface LayoutProblem {\n readonly code:\n | \"outside\"\n | \"footer\"\n | \"wide\"\n | \"overlap\"\n | \"clipped\"\n | \"small_text\"\n | \"small_target\"\n | \"contrast\"\n | \"broken_image\"\n /** In the slide's 1280×720 pixels, or the page's from its top left. */\n readonly rect: {\n readonly x: number\n readonly y: number\n readonly width: number\n readonly height: number\n }\n /** The element's text, shortened, or its tag when it has none. */\n readonly text: string\n /** The element as CSS names it, `p.eyebrow`: the same problem on many slides shares it. */\n readonly selector: string\n /** `small_text`: its size in pixels. `contrast`: the ratio, and the two colors. */\n readonly size?: number\n /** `overlap`: the text it overlaps. */\n readonly other?: string\n readonly ratio?: number\n readonly colors?: readonly [string, string]\n}\n\n/**\n * Measures a slide the frame shows, laid out at its own size (`sixb-fill`), or the whole page, and\n * returns what a reader would find wrong with it. Run in the frame as its own source,\n * `(${layoutProbe})(3)` or `(${layoutProbe})(\"page\")`, so it names nothing outside itself.\n *\n * - `outside` (a slide): text or an image past the slide's edge, which the slide cuts off.\n * - `footer` (a slide): text or an image over the footer's rule, the source, or the number.\n * - `wide` (a page): text or an image past the window's right edge, outside any box that scrolls\n * sideways, which makes the whole page scroll sideways.\n * - `overlap`: text drawn over other text, line box on line box.\n * - `clipped`: text its own box cuts off.\n * - `small_text`: text under 18px on a slide, 12px on a page, as drawn, an SVG's scaled with it.\n * - `small_target` (a page): a button, field, or other control under 24px either way.\n * - `contrast`: text under WCAG AA against the solid colors painted under it, its own box's,\n * any box it overlaps, and an SVG shape's fill (4.5:1, or 3:1 from 24px, or 18.66px bold); text\n * over an image or a gradient is not judged.\n * - `broken_image`: an image of the deck's own that did not load.\n *\n * Another artifact's chart or image is a box here, sized as its host sizes it: it is measured as\n * one, and its content is the app's. A page is measured where the viewport shows it, so the check\n * sizes the viewport to the page first.\n */\nexport function layoutProbe(scope: number | \"page\"): LayoutProblem[] {\n const MAX_PER_CODE = 8\n const page = scope === \"page\"\n const slide = page\n ? document.body\n : document.querySelectorAll<HTMLElement>(\"section.slide\")[scope - 1]\n if (!slide) return []\n const box = page\n ? document.documentElement.getBoundingClientRect()\n : slide.getBoundingClientRect()\n const problems: LayoutProblem[] = []\n const counts = new Map<string, number>()\n const selector = (element: Element) =>\n element instanceof SVGElement && element.tagName.toLowerCase() !== \"svg\"\n ? `svg ${element.tagName.toLowerCase()}`\n : [element.tagName.toLowerCase(), ...Array.from(element.classList).slice(0, 2)].join(\".\")\n const report = (\n code: LayoutProblem[\"code\"],\n element: Element,\n details: Pick<LayoutProblem, \"size\" | \"ratio\" | \"colors\" | \"other\"> & { text?: string } = {}\n ) => {\n const count = counts.get(code) ?? 0\n if (count >= MAX_PER_CODE) return\n counts.set(code, count + 1)\n problems.push({\n code,\n rect: at(element.getBoundingClientRect()),\n selector: selector(element),\n ...details,\n text: details.text ?? describe(element),\n })\n }\n const at = (rect: DOMRect) => ({\n x: Math.round(rect.left - box.left),\n y: Math.round(rect.top - box.top),\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n })\n // The text as a reader sees it: a line break separates words.\n const describe = (element: Element) =>\n (element instanceof HTMLElement ? element.innerText : (element.textContent ?? \"\"))\n .replace(/\\s+/g, \" \")\n .trim()\n .slice(0, 60) || element.tagName.toLowerCase()\n const shown = (element: Element) => {\n const style = getComputedStyle(element)\n if (style.display === \"none\" || style.visibility === \"hidden\" || style.opacity === \"0\") {\n return false\n }\n const rect = element.getBoundingClientRect()\n return rect.width > 0 && rect.height > 0\n }\n const ownText = (element: Element) =>\n Array.from(element.childNodes).some(\n (node) => node.nodeType === Node.TEXT_NODE && (node.textContent ?? \"\").trim() !== \"\"\n )\n const media = (element: Element) =>\n /^(img|svg|canvas|video|picture|table|sixb-embed)$/i.test(element.tagName)\n\n // What a reader sees: elements with text of their own, and media. Each judged once.\n const elements = Array.from(slide.querySelectorAll(\"*\")).filter(\n (element) => !element.closest(\"svg *, .source\") && shown(element)\n )\n const content = elements.filter((element) => ownText(element) || media(element))\n const svgText = Array.from(slide.querySelectorAll<SVGTextContentElement>(\"svg text\")).filter(\n (element) => (element.textContent ?? \"\").trim() !== \"\" && shown(element)\n )\n\n // Past the slide's edge, or over the footer; on a page, past the window's right edge. The\n // outermost offender stands for what it holds.\n const footer = getComputedStyle(slide, \"::after\")\n const footerTop =\n page || footer.content === \"none\" || footer.display === \"none\"\n ? Number.POSITIVE_INFINITY\n : box.bottom -\n Number.parseFloat(footer.bottom) -\n Number.parseFloat(footer.paddingTop) -\n Number.parseFloat(footer.lineHeight) -\n Number.parseFloat(footer.borderTopWidth)\n const outside: Element[] = []\n // A box that scrolls sideways holds what is wider than the window, as a wide table's does.\n const scrolls = (element: Element) => {\n for (let node = element.parentElement; node && node !== slide; node = node.parentElement) {\n if (/auto|scroll/.test(getComputedStyle(node).overflowX)) return true\n }\n return false\n }\n for (const element of content) {\n if (outside.some((parent) => parent.contains(element))) continue\n const rect = element.getBoundingClientRect()\n if (page) {\n if (rect.right > window.innerWidth + 1 && !scrolls(element)) {\n outside.push(element)\n report(\"wide\", element)\n }\n continue\n }\n if (\n rect.left < box.left - 1 ||\n rect.top < box.top - 1 ||\n rect.right > box.right + 1 ||\n rect.bottom > box.bottom + 1\n ) {\n outside.push(element)\n report(\"outside\", element)\n } else if (rect.bottom > footerTop + 1 && rect.top < box.bottom) {\n outside.push(element)\n report(\"footer\", element)\n }\n }\n\n // Text over text: the lines each element's own text draws, against every other's. A range's\n // rectangle spans the font's whole ascent and descent, which a tight line-height (a stat's\n // number) leaves well outside its line: each is cut to its line-height around its middle.\n const lines = content\n .filter((element) => ownText(element) && !outside.some((parent) => parent.contains(element)))\n .map((element) => {\n const lineHeight = Number.parseFloat(getComputedStyle(element).lineHeight)\n const rects: DOMRect[] = []\n for (const node of Array.from(element.childNodes)) {\n if (node.nodeType !== Node.TEXT_NODE || (node.textContent ?? \"\").trim() === \"\") continue\n const range = document.createRange()\n range.selectNodeContents(node)\n for (const rect of Array.from(range.getClientRects())) {\n if (rect.width === 0) continue\n const inset =\n Number.isFinite(lineHeight) && rect.height > lineHeight\n ? (rect.height - lineHeight) / 2\n : 0\n rects.push(new DOMRect(rect.x, rect.y + inset, rect.width, rect.height - inset * 2))\n }\n }\n return { element, rects }\n })\n const crosses = (a: DOMRect, b: DOMRect) =>\n Math.min(a.right, b.right) - Math.max(a.left, b.left) > 3 &&\n Math.min(a.bottom, b.bottom) - Math.max(a.top, b.top) > 3\n const overlapping = new Set<Element>()\n for (const [index, a] of lines.entries()) {\n for (const b of lines.slice(index + 1)) {\n if (overlapping.has(a.element) || overlapping.has(b.element)) continue\n if (a.rects.some((rectA) => b.rects.some((rectB) => crosses(rectA, rectB)))) {\n overlapping.add(a.element)\n overlapping.add(b.element)\n report(\"overlap\", b.element, { other: describe(a.element) })\n }\n }\n }\n\n // Cut off by its own box.\n for (const element of elements) {\n if (outside.some((parent) => parent.contains(element) || element.contains(parent))) continue\n const style = getComputedStyle(element)\n const clips = /hidden|clip/.test(`${style.overflowX} ${style.overflowY}`)\n if (!clips || (element.textContent ?? \"\").trim() === \"\") continue\n const wraps = style.textOverflow === \"ellipsis\" && style.whiteSpace === \"nowrap\"\n if (\n !wraps &&\n (element.scrollHeight > element.clientHeight + 2 ||\n element.scrollWidth > element.clientWidth + 2)\n ) {\n report(\"clipped\", element)\n }\n }\n\n // Colors as the screen shows them: any CSS color, through a canvas pixel.\n const canvas = document.createElement(\"canvas\")\n canvas.width = 1\n canvas.height = 1\n const context = canvas.getContext(\"2d\", { willReadFrequently: true })\n const rgba = (color: string): [number, number, number, number] | null => {\n if (!context) return null\n context.clearRect(0, 0, 1, 1)\n context.fillStyle = \"rgba(0, 0, 0, 0)\"\n context.fillStyle = color\n context.fillRect(0, 0, 1, 1)\n const [r = 0, g = 0, b = 0, a = 0] = context.getImageData(0, 0, 1, 1).data\n return [r, g, b, a / 255]\n }\n const over = (\n top: [number, number, number, number],\n under: [number, number, number, number]\n ): [number, number, number, number] => [\n top[0] * top[3] + under[0] * (1 - top[3]),\n top[1] * top[3] + under[1] * (1 - top[3]),\n top[2] * top[3] + under[2] * (1 - top[3]),\n 1,\n ]\n /**\n * The solid color painted under an element's text, or null over an image or a gradient, or out\n * of the window: every\n * box under its center, top to bottom, its own and its ancestors' and any it overlaps, until an\n * opaque one.\n */\n const background = (element: Element): [number, number, number, number] | null => {\n const layers: [number, number, number, number][] = []\n const rect = element.getBoundingClientRect()\n const x = rect.left + rect.width / 2\n const y = rect.top + rect.height / 2\n // Out of the window, as a wide table's far cells are in the box it scrolls in, nothing is\n // under the point to measure.\n if (x < 0 || y < 0 || x > window.innerWidth || y > window.innerHeight) return null\n const stack = document.elementsFromPoint(x, y)\n // An SVG's text is not hit between its glyphs: then everything under the point counts.\n const start = Math.max(0, stack.indexOf(element))\n const under = stack.slice(start)\n // A photo or a video paints colors no style names.\n const pictures = under.filter((node) => /^(img|picture|video|canvas)$/i.test(node.tagName))\n for (const node of under) {\n if (pictures.includes(node)) return null\n // A box holding the picture paints under it, though its ::before, a scrim over the photo,\n // puts it above the picture in the stack.\n if (pictures.some((picture) => node.contains(picture))) continue\n const style = getComputedStyle(node)\n // An SVG shape paints with its fill: a chart's label sits on its bar.\n const shape = node instanceof SVGGeometryElement\n const paint = shape ? style.fill : style.backgroundColor\n if ((!shape && style.backgroundImage !== \"none\") || paint.startsWith(\"url(\")) return null\n const color = rgba(paint)\n if (color && shape) color[3] *= Number.parseFloat(style.fillOpacity) || 0\n if (color && color[3] > 0) {\n layers.push(color)\n if (color[3] >= 0.99) break\n }\n }\n return layers.reduceRight<[number, number, number, number]>(\n (under, top) => over(top, under),\n [255, 255, 255, 1]\n )\n }\n const luminance = ([r, g, b]: readonly number[]) => {\n const channel = (value = 0) => {\n const c = value / 255\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4\n }\n return 0.2126 * channel(r) + 0.7152 * channel(g) + 0.0722 * channel(b)\n }\n const hex = (color: readonly number[]) =>\n `#${color\n .slice(0, 3)\n .map((value) => Math.round(value).toString(16).padStart(2, \"0\"))\n .join(\"\")}`\n\n // Text: its size as drawn, and its contrast.\n const texts: { element: Element; size: number; ink: string }[] = [\n ...content\n .filter((element) => ownText(element))\n .map((element) => {\n const style = getComputedStyle(element)\n return { element, size: Number.parseFloat(style.fontSize), ink: style.color }\n }),\n ...svgText.map((element) => {\n const style = getComputedStyle(element)\n const scale = element.getScreenCTM()?.a ?? 1\n return { element, size: Number.parseFloat(style.fontSize) * scale, ink: style.fill }\n }),\n ]\n for (const { element, size, ink } of texts) {\n if (outside.some((parent) => parent.contains(element))) continue\n if (size < (page ? 11.5 : 17.5)) {\n report(\"small_text\", element, { size: Math.round(size * 10) / 10 })\n }\n const color = rgba(ink)\n const behind = background(element)\n if (!color || color[3] === 0 || !behind) continue\n const solid = over(color, behind)\n const [light, dark] = [luminance(solid), luminance(behind)].sort((a, b) => b - a)\n const ratio = ((light ?? 0) + 0.05) / ((dark ?? 0) + 0.05)\n const bold = Number.parseInt(getComputedStyle(element).fontWeight, 10) >= 700\n const needed = size >= 24 || (bold && size >= 18.66) ? 3 : 4.5\n if (ratio < needed) {\n report(\"contrast\", element, {\n ratio: Math.round(ratio * 100) / 100,\n colors: [hex(solid), hex(behind)],\n })\n }\n }\n\n // A control a finger or a pointer can miss: WCAG's 24px minimum target, on a page.\n if (page) {\n const controls = slide.querySelectorAll(\n 'button, select, textarea, summary, [role=\"button\"], a.button, input:not([type=\"hidden\"], [type=\"checkbox\"], [type=\"radio\"])'\n )\n for (const control of Array.from(controls)) {\n if (!shown(control)) continue\n const rect = control.getBoundingClientRect()\n if (rect.width < 23.5 || rect.height < 23.5) {\n report(\"small_target\", control, {\n size: Math.round(Math.min(rect.width, rect.height)),\n })\n }\n }\n }\n\n // An image from another artifact is the app's to load, not the deck's.\n for (const image of Array.from(\n slide.querySelectorAll<HTMLImageElement>(\"img:not([data-sixb-ref])\")\n )) {\n if (image.getAttribute(\"src\") && image.complete && image.naturalWidth === 0) {\n report(\"broken_image\", image, { text: image.getAttribute(\"src\") ?? \"img\" })\n }\n }\n return problems\n}\n"
|
|
12
|
+
],
|
|
13
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAkBO,SAAS,4BAA4B,CAC1C,QAC+B;AAAA,EAC/B,OAAO,OAAO,SAAS,YACnB,KAAK,QAAQ,SAAS,OAAO,QAAQ,IAAI,wBAAuB,EAAE,IAClE;AAAA;;ACvBN,IAAM,QAAQ;AAAA,EACZ,eACE;AAAA,EACF,gBAAgB;AAAA,EAChB,eAAe;AACjB;AAQO,IAAM,uBAAuB;AAAA,EAClC,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,qBAAqB;AAAA,MACrB,WAAW;AAAA,MACX,sBAAsB;AAAA,MACtB,aAAa;AAAA,MACb,wBAAwB;AAAA,MACxB,YAAY;AAAA,MACZ,uBAAuB;AAAA,MACvB,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,aAAa;AAAA,MACb,aAAa;AAAA,MACb,aAAa;AAAA,MACb,aAAa;AAAA,SACV;AAAA,MACH,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,qBAAqB;AAAA,MACrB,WAAW;AAAA,MACX,sBAAsB;AAAA,MACtB,aAAa;AAAA,MACb,wBAAwB;AAAA,MACxB,YAAY;AAAA,MACZ,uBAAuB;AAAA,MACvB,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,aAAa;AAAA,MACb,aAAa;AAAA,MACb,aAAa;AAAA,MACb,aAAa;AAAA,SACV;AAAA,MAEH,YAAY;AAAA,IACd;AAAA,EACF;AACF;AAEA,IAAM,QAAQ,qBAAqB,MAAM;AAOzC,SAAS,GAAG,CAAC,OAAuB;AAAA,EAClC,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKP,OAAO,QAAQ,KAAK,EACnB,IAAI,EAAE,MAAM,WAAW,OAAO,SAAS,QAAQ,EAC/C,KAAK;AAAA,CAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWV;AAAA;AAAA;AAQK,IAAM,iBAAiB,IAAI;AAAA;AAAA;AAAA;AAAA,oBAId,MAAM;AAAA,2BACC,MAAM;AAAA,+BACF,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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",
|
|
14
|
+
"debugId": "A2752CC6A0BC7D6F64756E2164756E21",
|
|
15
|
+
"names": []
|
|
16
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sixb's default theme, light and dark: the values `@sixb/ui`'s globals.css gives the tokens the
|
|
3
|
+
* app sends into a frame, which an artifact's theme may set. The kit starts from the light one
|
|
4
|
+
* until the app's arrive, and the layout check measures a deck in both, since a deck follows the
|
|
5
|
+
* app's mode and the project's own theme is out of the sandbox's reach.
|
|
6
|
+
*/
|
|
7
|
+
export declare const FRAME_DEFAULT_THEMES: {
|
|
8
|
+
readonly light: {
|
|
9
|
+
readonly dark: false;
|
|
10
|
+
readonly tokens: {
|
|
11
|
+
readonly "--radius": "0.5rem";
|
|
12
|
+
readonly "--font-sans": "\"SF Pro Text\", \"SF Pro Display\", \"Segoe UI Variable Text\", \"Segoe UI\", system-ui, sans-serif";
|
|
13
|
+
readonly "--font-serif": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif";
|
|
14
|
+
readonly "--font-mono": "\"SF Mono\", \"Geist Mono\", \"JetBrains Mono\", ui-monospace, monospace";
|
|
15
|
+
readonly "--background": "#fafafa";
|
|
16
|
+
readonly "--foreground": "#101010";
|
|
17
|
+
readonly "--card": "#ffffff";
|
|
18
|
+
readonly "--card-foreground": "#101010";
|
|
19
|
+
readonly "--muted": "#f4f4f4";
|
|
20
|
+
readonly "--muted-foreground": "#5f5f5f";
|
|
21
|
+
readonly "--primary": "#0a0a0a";
|
|
22
|
+
readonly "--primary-foreground": "#ffffff";
|
|
23
|
+
readonly "--accent": "#f0f0f0";
|
|
24
|
+
readonly "--accent-foreground": "#202020";
|
|
25
|
+
readonly "--border": "#e2e2e2";
|
|
26
|
+
readonly "--chart-1": "#101010";
|
|
27
|
+
readonly "--chart-2": "#404040";
|
|
28
|
+
readonly "--chart-3": "#737373";
|
|
29
|
+
readonly "--chart-4": "#a3a3a3";
|
|
30
|
+
readonly "--chart-5": "#d4d4d4";
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
readonly dark: {
|
|
34
|
+
readonly dark: true;
|
|
35
|
+
readonly tokens: {
|
|
36
|
+
readonly "--radius": "0.5rem";
|
|
37
|
+
readonly "--font-sans": "\"SF Pro Text\", \"SF Pro Display\", \"Segoe UI Variable Text\", \"Segoe UI\", system-ui, sans-serif";
|
|
38
|
+
readonly "--font-serif": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif";
|
|
39
|
+
readonly "--font-mono": "\"SF Mono\", \"Geist Mono\", \"JetBrains Mono\", ui-monospace, monospace";
|
|
40
|
+
readonly "--background": "#0a0a0a";
|
|
41
|
+
readonly "--foreground": "#f4f4f4";
|
|
42
|
+
readonly "--card": "#141414";
|
|
43
|
+
readonly "--card-foreground": "#f4f4f4";
|
|
44
|
+
readonly "--muted": "#1c1c1c";
|
|
45
|
+
readonly "--muted-foreground": "#8a8a8a";
|
|
46
|
+
readonly "--primary": "#f4f4f4";
|
|
47
|
+
readonly "--primary-foreground": "#0a0a0a";
|
|
48
|
+
readonly "--accent": "#1c1c1c";
|
|
49
|
+
readonly "--accent-foreground": "#f4f4f4";
|
|
50
|
+
readonly "--border": "#262626";
|
|
51
|
+
readonly "--chart-1": "#f4f4f4";
|
|
52
|
+
readonly "--chart-2": "#c4c4c4";
|
|
53
|
+
readonly "--chart-3": "#8a8a8a";
|
|
54
|
+
readonly "--chart-4": "#5f5f5f";
|
|
55
|
+
readonly "--chart-5": "#404040";
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* A deck's kit: the stage that shows one slide or all of them, the slide type scale, the layouts a
|
|
61
|
+
* slide picks by class, the slide chrome, and a few components.
|
|
62
|
+
*/
|
|
63
|
+
export declare const FRAME_DECK_CSS: string;
|
|
64
|
+
/**
|
|
65
|
+
* A page's kit: what makes plain HTML read as a finished page in the app's theme. A measured type
|
|
66
|
+
* scale; tables, forms, and buttons drawn like the app's; a centered column for `<main>`; and a
|
|
67
|
+
* few components a page picks by class: `.lede`, `.eyebrow`, `.card`, `.grid`, `.stat`, `.tag`,
|
|
68
|
+
* `.callout`. Every rule sits in the kit's layer, so a page's own CSS wins wherever it differs.
|
|
69
|
+
*/
|
|
70
|
+
export declare const FRAME_PAGE_CSS: string;
|
|
71
|
+
//# sourceMappingURL=kit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kit.d.ts","sourceRoot":"","sources":["../../../src/artifacts/frames/kit.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDvB,CAAA;AAgCV;;;GAGG;AACH,eAAO,MAAM,cAAc,QAgTzB,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QA+JzB,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/** A problem the layout probe found on a slide or a page, where it is, and its text. */
|
|
2
|
+
export interface LayoutProblem {
|
|
3
|
+
readonly code: "outside" | "footer" | "wide" | "overlap" | "clipped" | "small_text" | "small_target" | "contrast" | "broken_image";
|
|
4
|
+
/** In the slide's 1280×720 pixels, or the page's from its top left. */
|
|
5
|
+
readonly rect: {
|
|
6
|
+
readonly x: number;
|
|
7
|
+
readonly y: number;
|
|
8
|
+
readonly width: number;
|
|
9
|
+
readonly height: number;
|
|
10
|
+
};
|
|
11
|
+
/** The element's text, shortened, or its tag when it has none. */
|
|
12
|
+
readonly text: string;
|
|
13
|
+
/** The element as CSS names it, `p.eyebrow`: the same problem on many slides shares it. */
|
|
14
|
+
readonly selector: string;
|
|
15
|
+
/** `small_text`: its size in pixels. `contrast`: the ratio, and the two colors. */
|
|
16
|
+
readonly size?: number;
|
|
17
|
+
/** `overlap`: the text it overlaps. */
|
|
18
|
+
readonly other?: string;
|
|
19
|
+
readonly ratio?: number;
|
|
20
|
+
readonly colors?: readonly [string, string];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Measures a slide the frame shows, laid out at its own size (`sixb-fill`), or the whole page, and
|
|
24
|
+
* returns what a reader would find wrong with it. Run in the frame as its own source,
|
|
25
|
+
* `(${layoutProbe})(3)` or `(${layoutProbe})("page")`, so it names nothing outside itself.
|
|
26
|
+
*
|
|
27
|
+
* - `outside` (a slide): text or an image past the slide's edge, which the slide cuts off.
|
|
28
|
+
* - `footer` (a slide): text or an image over the footer's rule, the source, or the number.
|
|
29
|
+
* - `wide` (a page): text or an image past the window's right edge, outside any box that scrolls
|
|
30
|
+
* sideways, which makes the whole page scroll sideways.
|
|
31
|
+
* - `overlap`: text drawn over other text, line box on line box.
|
|
32
|
+
* - `clipped`: text its own box cuts off.
|
|
33
|
+
* - `small_text`: text under 18px on a slide, 12px on a page, as drawn, an SVG's scaled with it.
|
|
34
|
+
* - `small_target` (a page): a button, field, or other control under 24px either way.
|
|
35
|
+
* - `contrast`: text under WCAG AA against the solid colors painted under it, its own box's,
|
|
36
|
+
* any box it overlaps, and an SVG shape's fill (4.5:1, or 3:1 from 24px, or 18.66px bold); text
|
|
37
|
+
* over an image or a gradient is not judged.
|
|
38
|
+
* - `broken_image`: an image of the deck's own that did not load.
|
|
39
|
+
*
|
|
40
|
+
* Another artifact's chart or image is a box here, sized as its host sizes it: it is measured as
|
|
41
|
+
* one, and its content is the app's. A page is measured where the viewport shows it, so the check
|
|
42
|
+
* sizes the viewport to the page first.
|
|
43
|
+
*/
|
|
44
|
+
export declare function layoutProbe(scope: number | "page"): LayoutProblem[];
|
|
45
|
+
//# sourceMappingURL=probe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probe.d.ts","sourceRoot":"","sources":["../../../src/artifacts/frames/probe.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EACT,SAAS,GACT,QAAQ,GACR,MAAM,GACN,SAAS,GACT,SAAS,GACT,YAAY,GACZ,cAAc,GACd,UAAU,GACV,cAAc,CAAA;IAClB,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;QAClB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;QAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KACxB,CAAA;IACD,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,mFAAmF;IACnF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,uCAAuC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC5C;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,EAAE,CA+SnE"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Messages between the app and an artifact in its sandboxed frame: a deck, or a page. The app
|
|
3
|
+
* asks; the frame answers each request by its id, and tells the app what happened inside it as
|
|
4
|
+
* events. Later abilities are new methods and events, not a new protocol.
|
|
5
|
+
*/
|
|
6
|
+
export declare const FRAME_PROTOCOL = "sixb-frame/1";
|
|
7
|
+
/**
|
|
8
|
+
* A deck shows one slide scaled to fit on its stage, every slide in a grid, or one slide filling
|
|
9
|
+
* the page to present it.
|
|
10
|
+
*/
|
|
11
|
+
export type DeckMode = "slide" | "overview" | "present";
|
|
12
|
+
/**
|
|
13
|
+
* How a frame opens, set in its URL so the first paint is right: at a slide, and with `fill`, that
|
|
14
|
+
* slide alone filling the frame with no stage around it, as a thumbnail or an embed shows it.
|
|
15
|
+
*/
|
|
16
|
+
export interface FrameStart {
|
|
17
|
+
readonly slide?: number;
|
|
18
|
+
readonly fill?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/** The fragment that carries a frame's start: `#sixb-slide=3&sixb-fill`. */
|
|
21
|
+
export declare function frameStartHash(start: FrameStart): string;
|
|
22
|
+
/** What the app asks of the frame. */
|
|
23
|
+
export type FrameRequest = FrameRequestOf<"theme", {
|
|
24
|
+
readonly tokens: Readonly<Record<string, string>>;
|
|
25
|
+
readonly dark: boolean;
|
|
26
|
+
}> | FrameRequestOf<"goto", {
|
|
27
|
+
readonly slide: number;
|
|
28
|
+
}> | FrameRequestOf<"mode", {
|
|
29
|
+
readonly mode: DeckMode;
|
|
30
|
+
}>
|
|
31
|
+
/** Scrolls a page by a wheel turned over what the app draws on it. */
|
|
32
|
+
| FrameRequestOf<"scroll", {
|
|
33
|
+
readonly x: number;
|
|
34
|
+
readonly y: number;
|
|
35
|
+
}>
|
|
36
|
+
/** Loads the entry again, as a page whose data was reset starts over. */
|
|
37
|
+
| FrameRequestOf<"reload", Record<string, never>>
|
|
38
|
+
/**
|
|
39
|
+
* A query the page read has new rows: the objects it reads changed. The page reads them with
|
|
40
|
+
* `sixb.query(name)` again; the app sends it only for the queries that frame has read.
|
|
41
|
+
*/
|
|
42
|
+
| FrameRequestOf<"query.changed", {
|
|
43
|
+
readonly name: string;
|
|
44
|
+
}>;
|
|
45
|
+
interface FrameRequestOf<Method extends string, Params> {
|
|
46
|
+
readonly protocol: typeof FRAME_PROTOCOL;
|
|
47
|
+
readonly id: number;
|
|
48
|
+
readonly method: Method;
|
|
49
|
+
readonly params: Params;
|
|
50
|
+
}
|
|
51
|
+
/** The frame's answer to one request. */
|
|
52
|
+
export interface FrameResponse {
|
|
53
|
+
readonly protocol: typeof FRAME_PROTOCOL;
|
|
54
|
+
readonly id: number;
|
|
55
|
+
readonly error?: string;
|
|
56
|
+
}
|
|
57
|
+
/** What happened inside the frame. */
|
|
58
|
+
export type FrameEvent =
|
|
59
|
+
/** The frame has laid out its entry: a deck says how many slides it has. */
|
|
60
|
+
FrameEventOf<"ready", {
|
|
61
|
+
readonly slides?: number;
|
|
62
|
+
}>
|
|
63
|
+
/** The reader picked a slide in the overview. */
|
|
64
|
+
| FrameEventOf<"select", {
|
|
65
|
+
readonly slide: number;
|
|
66
|
+
}>
|
|
67
|
+
/** A key the app handles, pressed while the frame had focus. */
|
|
68
|
+
| FrameEventOf<"key", {
|
|
69
|
+
readonly key: string;
|
|
70
|
+
}>
|
|
71
|
+
/** A link to another artifact, which opens where the reader is. */
|
|
72
|
+
| FrameEventOf<"open", {
|
|
73
|
+
readonly address: string;
|
|
74
|
+
}>
|
|
75
|
+
/**
|
|
76
|
+
* A link to a web page, which the app opens in a new tab: the frame cannot open windows itself.
|
|
77
|
+
* Only `http:` and `https:` addresses.
|
|
78
|
+
*/
|
|
79
|
+
| FrameEventOf<"link", {
|
|
80
|
+
readonly url: string;
|
|
81
|
+
}>
|
|
82
|
+
/**
|
|
83
|
+
* Where the `<sixb-embed>` boxes in view are, for the app to draw each over the frame: in the
|
|
84
|
+
* frame's pixels, with the scale they are drawn at. A deck reports the shown slide's, and none in
|
|
85
|
+
* the overview, where an embed stays a placeholder, as it does in a filled frame, which never
|
|
86
|
+
* reports; a page reports those near its view as it scrolls, at its own scale.
|
|
87
|
+
*/
|
|
88
|
+
| FrameEventOf<"embeds", {
|
|
89
|
+
readonly embeds: readonly FrameEmbed[];
|
|
90
|
+
}>
|
|
91
|
+
/** A page's height as laid out at the frame's width, so a document can size the frame to it. */
|
|
92
|
+
| FrameEventOf<"size", {
|
|
93
|
+
readonly height: number;
|
|
94
|
+
}>;
|
|
95
|
+
/** One `<sixb-embed>` the frame shows. */
|
|
96
|
+
export interface FrameEmbed {
|
|
97
|
+
/** The element's own id while the page is loaded: the same as it scrolls out and back. */
|
|
98
|
+
readonly id: number;
|
|
99
|
+
readonly address: string;
|
|
100
|
+
readonly rect: {
|
|
101
|
+
readonly x: number;
|
|
102
|
+
readonly y: number;
|
|
103
|
+
readonly width: number;
|
|
104
|
+
readonly height: number;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* The scale it is drawn at: a slide's, where the embed is laid out at `rect / scale` and scaled
|
|
108
|
+
* with the slide; 1 on a page.
|
|
109
|
+
*/
|
|
110
|
+
readonly scale: number;
|
|
111
|
+
}
|
|
112
|
+
interface FrameEventOf<Event extends string, Params> {
|
|
113
|
+
readonly protocol: typeof FRAME_PROTOCOL;
|
|
114
|
+
readonly event: Event;
|
|
115
|
+
readonly params: Params;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* What the frame asks of the app, numbered so the app's `result` answers it: a page keeping data
|
|
119
|
+
* with `sixb.state`, or reading one of its version's queries with `sixb.query`. The app answers
|
|
120
|
+
* only its own frame, for the artifact and the version it shows.
|
|
121
|
+
*/
|
|
122
|
+
export type FrameCall = FrameCallOf<"state.get", {
|
|
123
|
+
readonly key: string;
|
|
124
|
+
}> | FrameCallOf<"state.set", {
|
|
125
|
+
readonly key: string;
|
|
126
|
+
readonly value: unknown;
|
|
127
|
+
}> | FrameCallOf<"state.delete", {
|
|
128
|
+
readonly key: string;
|
|
129
|
+
}> | FrameCallOf<"state.keys", Record<string, never>>
|
|
130
|
+
/** Runs `queries/<name>.json` as the reader; the value is the query route's JSON. */
|
|
131
|
+
| FrameCallOf<"query.run", {
|
|
132
|
+
readonly name: string;
|
|
133
|
+
}>;
|
|
134
|
+
interface FrameCallOf<Method extends string, Params> {
|
|
135
|
+
readonly protocol: typeof FRAME_PROTOCOL;
|
|
136
|
+
readonly call: number;
|
|
137
|
+
readonly method: Method;
|
|
138
|
+
readonly params: Params;
|
|
139
|
+
}
|
|
140
|
+
/** The app's answer to one call: its value, or why it failed. */
|
|
141
|
+
export interface FrameCallResult {
|
|
142
|
+
readonly protocol: typeof FRAME_PROTOCOL;
|
|
143
|
+
readonly result: number;
|
|
144
|
+
readonly value?: unknown;
|
|
145
|
+
readonly error?: string;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* A message from a frame as a call, or null when it is not one. A page's scripts write what it
|
|
149
|
+
* posts, so the shapes are checked here, and a value is checked for size as JSON, as storage will
|
|
150
|
+
* count it, before the app sends it anywhere.
|
|
151
|
+
*/
|
|
152
|
+
export declare function parseFrameCall(data: unknown): FrameCall | null;
|
|
153
|
+
/** Keys the frame passes to the app, so a deck navigates the same with focus in it or not. */
|
|
154
|
+
export declare const DECK_KEYS: readonly ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown", "PageUp", "PageDown", "Home", "End", " ", "Escape"];
|
|
155
|
+
/**
|
|
156
|
+
* The theme tokens the app sends into a frame, read from the viewer as it is themed: the ones an
|
|
157
|
+
* artifact's theme may set.
|
|
158
|
+
*/
|
|
159
|
+
export declare const FRAME_THEME_TOKENS: readonly string[];
|
|
160
|
+
/**
|
|
161
|
+
* A message from a frame as an event, or null when it is not one this protocol sends. A deck runs
|
|
162
|
+
* its own scripts, so anything it posts is checked for the shape the app relies on: whole slide
|
|
163
|
+
* numbers, a key the app handles, finite boxes, and no more embeds than a version may record.
|
|
164
|
+
*/
|
|
165
|
+
export declare function parseFrameEvent(data: unknown): FrameEvent | null;
|
|
166
|
+
export {};
|
|
167
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/artifacts/frames/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The runtime the frame injects before anything else in an entry's `<head>`. It is served as this
|
|
3
|
+
* function's own source, `(${frameRuntime})()`, so it imports nothing and names nothing outside
|
|
4
|
+
* itself: the protocol string and the keys repeat what `protocol.ts` declares, and a test holds
|
|
5
|
+
* the two together. Its tag names the layout, `data-sixb-layout`.
|
|
6
|
+
*
|
|
7
|
+
* In every layout it applies the theme the app sends, then fires `sixb:theme` on the window for
|
|
8
|
+
* what draws its own colors; answers the app's requests; and tells the app about the links the
|
|
9
|
+
* reader follows, to other artifacts or to web pages, for the app to open them, and where its
|
|
10
|
+
* `<sixb-embed>` boxes are, for the app to draw them over the frame. A deck it also lays out:
|
|
11
|
+
* every `section.slide` is a 1280×720 slide, shown one at a time scaled to fit, or all at once in
|
|
12
|
+
* a grid. The URL's fragment can open it at a slide, and with `sixb-fill` show that slide alone
|
|
13
|
+
* filling the frame, as a thumbnail or an embed does; it tells the app about keys and picks in the
|
|
14
|
+
* overview. A page scrolls as it is: it reports the embeds near its view as it scrolls, and its
|
|
15
|
+
* height as it changes.
|
|
16
|
+
*
|
|
17
|
+
* It gives every layout `window.sixb.state`, where a page keeps JSON values for its reader: each
|
|
18
|
+
* call is a message the app answers, and the app keeps the values. Opened on its own, with no app
|
|
19
|
+
* around it, as the layout check opens a page, the values live in memory until it closes.
|
|
20
|
+
*
|
|
21
|
+
* And `window.sixb.query(name)`, which reads one of the version's queries as the reader: the app
|
|
22
|
+
* runs it and answers with the query route's JSON. Opened on its own, it reads
|
|
23
|
+
* `__sixb/queries/<name>.json` beside the runtime instead, where the layout check serves what the
|
|
24
|
+
* query returned for the Agent's requester.
|
|
25
|
+
*
|
|
26
|
+
* When the objects a query reads change, the app reads it again and tells the frame, which fires
|
|
27
|
+
* `sixb:query` on the window with `detail.name`, for the page to call `sixb.query(name)` again.
|
|
28
|
+
* Opened on its own, nothing tells it: the rows the check served are all there is.
|
|
29
|
+
*/
|
|
30
|
+
export declare function frameRuntime(): void;
|
|
31
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/artifacts/frames/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,YAAY,IAAI,IAAI,CA4anC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text or an attribute as the browser reads it. HTMLRewriter hands both over as written in the
|
|
3
|
+
* HTML, entities included, so `artifact:…#Q3%20&%20Q4` must read `&` before it is resolved.
|
|
4
|
+
*/
|
|
5
|
+
export declare function decodeHtmlEntities(value: string): string;
|
|
6
|
+
//# sourceMappingURL=html.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/artifacts/html.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWxD"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** A new artifact id, such as `art_k3m9q2x7tp`. */
|
|
2
|
+
export declare function createArtifactId(): string;
|
|
3
|
+
/** Whether `value` has the shape of an artifact id; whether that artifact exists is another matter. */
|
|
4
|
+
export declare function isArtifactId(value: string): boolean;
|
|
5
|
+
//# sourceMappingURL=ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/artifacts/ids.ts"],"names":[],"mappings":"AAIA,mDAAmD;AACnD,wBAAgB,gBAAgB,IAAI,MAAM,CAKzC;AAID,uGAAuG;AACvG,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD"}
|