@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,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/security/projection-markings.ts", "../src/security/marking-propagation.ts", "../src/security/applied-markings-contribution.ts", "../src/security/applied-markings-host.ts", "../src/security/marking-sets.ts", "../src/security/dataset-version-markings.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type { DatasetVersion } from \"../lake-storage/types\"\nimport type { OntologyDefinitionCatalog } from \"../ontology/registry\"\nimport type { ObjectType } from \"../ontology/types\"\nimport type { ProjectionDefinitionCatalog } from \"../projections/registry\"\nimport type {\n LinkProjectionDefinition,\n ObjectProjectionDefinition,\n ProjectionDefinition,\n TelemetryProjectionDefinition,\n} from \"../projections/types\"\nimport type { VersionClassification } from \"./dataset-version-markings\"\nimport { SecurityValidationError } from \"./errors\"\nimport type { ColumnMarkingOrigins, DatasetMarkings, MarkingOrigin } from \"./marking-propagation\"\n\ntype OntologyLookup = Pick<OntologyDefinitionCatalog, \"getObjectTypeById\">\n\n/** Markings of one column of the projection's dataset. */\ntype ColumnMarkingsLookup = (column: string) => readonly string[]\n\n/** What a marked key column makes unreadable: the objects it identifies, or the link it keys. */\nexport type ProjectionKeyTarget =\n | { readonly kind: \"type\"; readonly objectTypeId: string }\n | {\n readonly kind: \"link\"\n readonly objectTypeId: string\n readonly linkId: string\n readonly targetObjectTypeId: string\n }\n\n/** A marking rule a projection breaks. */\ntype ProjectionMarkingViolation =\n | {\n readonly kind: \"undeclared\"\n readonly property: string\n readonly objectTypeId: string\n readonly propertyId: string\n readonly column: string\n readonly missing: readonly string[]\n }\n | {\n readonly kind: \"markedKeyColumn\"\n readonly column: string\n readonly role: string\n readonly targets: readonly ProjectionKeyTarget[]\n /** The property the column fills, when the key is a property. */\n readonly property?: { readonly objectTypeId: string; readonly propertyId: string }\n }\n | { readonly kind: \"markedKeyProperty\"; readonly property: string; readonly role: string }\n | { readonly kind: \"telemetry\"; readonly column: string }\n\n/**\n * Objects are read through the ontology, so each projected property declares the markings of its\n * column: the ontology stays the reviewed contract of what each reader receives. Values that\n * identify objects or key links are returned wherever the object or link is, and telemetry does\n * not enforce markings yet, so those columns cannot carry markings.\n *\n * Startup checks it with the markings columns declare or inherit through `run` steps, and the\n * pipeline preflight with the markings SQL steps derive as well.\n */\nexport function validateProjectionMarkings(\n projections: ProjectionDefinitionCatalog,\n ontology: OntologyLookup,\n markings: DatasetMarkings\n): void {\n const all = [\n ...projections.listObjects(),\n ...projections.listLinks(),\n ...projections.listTelemetry(),\n ]\n\n for (const projection of all) {\n const originsOf = (column: string) => markings.of({ datasetId: projection.datasetId, column })\n const violation = firstViolation(projection, ontology, (column) => [\n ...originsOf(column).keys(),\n ])\n if (!violation) continue\n\n const carries = (column: string): CarriedMarkings => {\n const origins = originsOf(column)\n return {\n text: describeOrigins(origins, `${projection.datasetId}.${column}`),\n inherited: [...origins.values()].some((origin) => origin.steps.length > 0),\n }\n }\n\n throw new SecurityValidationError(\n violationMessage(\n `[Sixb] Projection '${projection.id}'`,\n projection.datasetId,\n violation,\n carries\n )\n )\n }\n}\n\n/**\n * Refuse to project a dataset version whose columns carry more markings than the projection\n * allows. A version keeps the markings of the code that produced it, so a version written before\n * the current code can carry markings startup did not see. Call it once per version, before\n * reading its rows; it reads nothing, so what it throws is a refusal that no retry changes.\n */\nexport function assertProjectionVersionMarkings(input: {\n readonly projection: ProjectionDefinition\n readonly ontology: OntologyLookup\n readonly version: DatasetVersion\n readonly classification: VersionClassification\n}): void {\n const { projection, version, classification } = input\n const markingsOf = (column: string) => [...(classification.columns.get(column) ?? [])].sort()\n const violation = firstViolation(projection, input.ontology, markingsOf)\n if (!violation) return\n\n const subject = `[Sixb] Projection '${projection.id}' cannot read version '${version.versionId}' of dataset '${version.datasetId}'`\n const carries = (column: string): CarriedMarkings => ({\n text: `${markingList(markingsOf(column))} in this version`,\n inherited: true,\n })\n const conservative =\n classification.conservative === undefined\n ? \"\"\n : ` The version was classified with every marking its sources could hold, because ${classification.conservative}.`\n const rerun = `If the code that writes '${version.datasetId}' no longer derives these markings, rerun its pipeline.`\n\n throw new Error(\n `${violationMessage(subject, version.datasetId, violation, carries)}${conservative} ${rerun}`\n )\n}\n\n/** Markings an applied version gives a projection's targets beyond what the ontology declares. */\nexport interface ProjectionSurplus {\n /** Markings a mapped column carries that its property does not declare. */\n readonly properties: readonly {\n readonly objectTypeId: string\n readonly propertyId: string\n readonly column: string\n readonly markings: readonly string[]\n }[]\n /** Marked key columns, with what each one makes unreadable and why. */\n readonly keys: readonly {\n readonly target: ProjectionKeyTarget\n readonly column: string\n readonly role: string\n readonly markings: readonly string[]\n }[]\n}\n\n/**\n * What a projection's targets carry beyond their declarations when read from columns with these\n * markings: every rule it breaks, as markings to add to properties and to key targets. A property\n * that keys a link keeps its markings on the property as well.\n */\nexport function projectionSurplus(\n projection: ProjectionDefinition,\n ontology: OntologyLookup,\n markingsOf: ColumnMarkingsLookup\n): ProjectionSurplus {\n const properties: ProjectionSurplus[\"properties\"][number][] = []\n const keys: ProjectionSurplus[\"keys\"][number][] = []\n\n for (const violation of projectionMarkingViolations(projection, ontology, markingsOf)) {\n switch (violation.kind) {\n case \"undeclared\":\n properties.push({\n objectTypeId: violation.objectTypeId,\n propertyId: violation.propertyId,\n column: violation.column,\n markings: violation.missing,\n })\n break\n case \"markedKeyColumn\": {\n const markings = markingsOf(violation.column)\n for (const target of violation.targets) {\n keys.push({ target, column: violation.column, role: violation.role, markings })\n }\n\n const property = violation.property\n if (property && violation.targets.some((target) => target.kind === \"link\")) {\n properties.push({ ...property, column: violation.column, markings })\n }\n break\n }\n // Startup refuses a marked key property and a marked telemetry column from the code alone.\n case \"markedKeyProperty\":\n case \"telemetry\":\n break\n }\n }\n\n return { properties, keys }\n}\n\n// ── Rules ───────────────────────────────────────────────────\n\nfunction firstViolation(\n projection: ProjectionDefinition,\n ontology: OntologyLookup,\n markingsOf: ColumnMarkingsLookup\n): ProjectionMarkingViolation | null {\n const first = projectionMarkingViolations(projection, ontology, markingsOf).next()\n return first.done ? null : first.value\n}\n\n/** Every marking rule the projection breaks, the first one being the one messages report. */\nfunction* projectionMarkingViolations(\n projection: ProjectionDefinition,\n ontology: OntologyLookup,\n markingsOf: ColumnMarkingsLookup\n): Generator<ProjectionMarkingViolation> {\n switch (projection._tag) {\n case \"ObjectProjectionDefinition\": {\n const objectType = ontology.getObjectTypeById(projection.objectTypeId)\n if (objectType) yield* objectProjectionViolations(projection, objectType, markingsOf)\n return\n }\n case \"LinkProjectionDefinition\":\n yield* linkProjectionViolations(projection, markingsOf)\n return\n case \"TelemetryProjectionDefinition\":\n yield* telemetryProjectionViolations(projection, markingsOf)\n return\n }\n}\n\nfunction* objectProjectionViolations(\n projection: ObjectProjectionDefinition,\n objectType: ObjectType,\n markingsOf: ColumnMarkingsLookup\n): Generator<ProjectionMarkingViolation> {\n const keyRoles = objectProjectionKeyRoles(projection, objectType)\n\n for (const [propertyId, column] of Object.entries(projection.properties)) {\n const property = objectType.properties.find((candidate) => candidate.id === propertyId)\n const path = `${objectType.id}.${propertyId}`\n const keyRole = keyRoles.get(propertyId)\n\n if (keyRole) {\n if (markingsOf(column).length > 0) {\n yield {\n kind: \"markedKeyColumn\",\n column,\n role: keyRole.role,\n targets: keyRole.targets,\n property: { objectTypeId: objectType.id, propertyId },\n }\n } else if (property?.markings) {\n yield { kind: \"markedKeyProperty\", property: path, role: keyRole.role }\n }\n continue\n }\n\n const declared = new Set(property?.markings ?? [])\n const missing = markingsOf(column).filter((markingId) => !declared.has(markingId))\n if (missing.length > 0) {\n yield {\n kind: \"undeclared\",\n property: path,\n objectTypeId: objectType.id,\n propertyId,\n column,\n missing,\n }\n }\n }\n\n for (const [linkId, link] of Object.entries(projection.links)) {\n if (link.sourceField === undefined) continue\n\n const role = `keys link '${objectType.id}.${linkId}'`\n const target = linkTarget(objectType.id, linkId, link.targetObjectTypeId)\n yield* markedKeyColumn(link.sourceField, role, [target], markingsOf)\n }\n\n // The timestamp decides whether the source value or an app edit wins, which reveals how they\n // compare.\n const conflictResolution = projection.conflictResolution\n if (conflictResolution?.strategy === \"mostRecent\") {\n const role = \"decides which value wins under 'mostRecent'\"\n const target: ProjectionKeyTarget = { kind: \"type\", objectTypeId: objectType.id }\n yield* markedKeyColumn(conflictResolution.sourceTimestamp, role, [target], markingsOf)\n }\n}\n\nfunction* linkProjectionViolations(\n projection: LinkProjectionDefinition,\n markingsOf: ColumnMarkingsLookup\n): Generator<ProjectionMarkingViolation> {\n const role = `keys link '${projection.sourceObjectTypeId}.${projection.linkId}'`\n const targets = [\n linkTarget(projection.sourceObjectTypeId, projection.linkId, projection.targetObjectTypeId),\n ]\n yield* markedKeyColumn(projection.sourceField, role, targets, markingsOf)\n yield* markedKeyColumn(projection.targetField, role, targets, markingsOf)\n}\n\nfunction* telemetryProjectionViolations(\n projection: TelemetryProjectionDefinition,\n markingsOf: ColumnMarkingsLookup\n): Generator<ProjectionMarkingViolation> {\n const columns = [\n projection.objectIdField,\n projection.atField,\n ...Object.values(projection.properties).flatMap((mapping) =>\n mapping.unitField === undefined\n ? [mapping.valueField]\n : [mapping.valueField, mapping.unitField]\n ),\n ]\n\n for (const column of columns) {\n if (markingsOf(column).length > 0) yield { kind: \"telemetry\", column }\n }\n}\n\ninterface KeyRole {\n readonly role: string\n readonly targets: readonly ProjectionKeyTarget[]\n}\n\n/** Properties whose value becomes an object id or a link key, with the role they play. */\nfunction objectProjectionKeyRoles(\n projection: ObjectProjectionDefinition,\n objectType: ObjectType\n): ReadonlyMap<string, KeyRole> {\n const roles = new Map<string, KeyRole>()\n\n for (const property of objectType.properties) {\n if (!property.primary) continue\n roles.set(property.id, {\n role: `becomes the id of '${objectType.id}'`,\n targets: [{ kind: \"type\", objectTypeId: objectType.id }],\n })\n }\n\n for (const [linkId, link] of Object.entries(projection.links)) {\n if (link.sourcePropertyId === undefined) continue\n // An id that also keys a link plays both roles; messages name the link.\n roles.set(link.sourcePropertyId, {\n role: `keys link '${objectType.id}.${linkId}'`,\n targets: [\n ...(roles.get(link.sourcePropertyId)?.targets ?? []),\n linkTarget(objectType.id, linkId, link.targetObjectTypeId),\n ],\n })\n }\n\n return roles\n}\n\nfunction linkTarget(\n objectTypeId: string,\n linkId: string,\n targetObjectTypeId: string\n): ProjectionKeyTarget {\n return { kind: \"link\", objectTypeId, linkId, targetObjectTypeId }\n}\n\nfunction* markedKeyColumn(\n column: string,\n role: string,\n targets: readonly ProjectionKeyTarget[],\n markingsOf: ColumnMarkingsLookup\n): Generator<ProjectionMarkingViolation> {\n if (markingsOf(column).length > 0) yield { kind: \"markedKeyColumn\", column, role, targets }\n}\n\n// ── Messages ────────────────────────────────────────────────\n\n/** What a column carries, for messages, and whether any of it comes from elsewhere. */\ninterface CarriedMarkings {\n readonly text: string\n readonly inherited: boolean\n}\n\nfunction violationMessage(\n subject: string,\n datasetId: string,\n violation: ProjectionMarkingViolation,\n carries: (column: string) => CarriedMarkings\n): string {\n const path = (column: string) => `${datasetId}.${column}`\n\n switch (violation.kind) {\n case \"undeclared\":\n return `${subject}: property '${violation.property}' is projected from column '${path(violation.column)}', which carries ${carries(violation.column).text}. Add markings: ${markingList(violation.missing)} to the property.`\n case \"markedKeyColumn\": {\n const carried = carries(violation.column)\n const inherited = carried.inherited ? `, but carries ${carried.text}` : \"\"\n return `${subject}: column '${path(violation.column)}' ${violation.role} and cannot carry markings${inherited}.`\n }\n case \"markedKeyProperty\":\n return `${subject}: property '${violation.property}' ${violation.role} and cannot carry markings.`\n case \"telemetry\":\n return `${subject}: column '${path(violation.column)}' carries ${carries(violation.column).text}, and telemetry projections cannot read marked columns yet.`\n }\n}\n\n/**\n * `[financial] from 'raw_invoices.amount' through step 'invoices/normalize'`: each marking with one\n * path it arrived by. Markings the column declares itself have no path.\n */\nexport function describeOrigins(origins: ColumnMarkingOrigins, columnPath: string): string {\n const groups = new Map<string, string[]>()\n for (const [markingId, origin] of origins) {\n const path = originPath(origin, columnPath)\n groups.set(path, [...(groups.get(path) ?? []), markingId])\n }\n return [...groups].map(([path, markingIds]) => `${markingList(markingIds)}${path}`).join(\" and \")\n}\n\nfunction originPath(origin: MarkingOrigin, columnPath: string): string {\n const source = `${origin.column.datasetId}.${origin.column.column}`\n if (origin.steps.length === 0 && source === columnPath) return \"\"\n\n const steps = origin.steps.map((step) => `'${step}'`).join(\", \")\n return ` from '${source}' through ${origin.steps.length === 1 ? \"step\" : \"steps\"} ${steps}`\n}\n\nfunction markingList(markings: readonly string[]): string {\n return `[${markings.join(\", \")}]`\n}\n",
|
|
6
|
+
"import type { DatasetDefinition } from \"../datasets/types\"\nimport { lineageColumn } from \"../lake-storage/lineage\"\nimport type { DatasetColumnLineage, DatasetColumnRef } from \"../lake-storage/types\"\nimport { runStepLineage, stepReadColumns } from \"../pipelines/lineage\"\nimport type { PipelineDefinition, PipelineStepDefinition } from \"../pipelines/types\"\n\n/** A step of a registered pipeline. A step reused by two pipelines is two registered steps. */\nexport interface RegisteredStep {\n readonly pipelineId: string\n readonly step: PipelineStepDefinition\n}\n\n/** The column that declares a marking, and the steps it went through to reach a column. */\nexport interface MarkingOrigin {\n readonly column: DatasetColumnRef\n /** `pipeline/step`, upstream first. Empty when the column declares the marking itself. */\n readonly steps: readonly string[]\n}\n\n/** Each marking a column carries, with one path it arrived by. */\nexport type ColumnMarkingOrigins = ReadonlyMap<string, MarkingOrigin>\n\n/** Markings of every column of every registered dataset, derived from the definitions. */\nexport interface DatasetMarkings {\n /** Empty for a column without markings or that is not registered. */\n of(column: DatasetColumnRef): ColumnMarkingOrigins\n}\n\nexport function registeredSteps(\n pipelines: readonly PipelineDefinition[]\n): readonly RegisteredStep[] {\n return pipelines.flatMap((pipeline) =>\n pipeline.graph.nodes.map(({ step }) => ({ pipelineId: pipeline.id, step }))\n )\n}\n\n/** Lineage of each `run` step, built once per step object; undefined for other steps. */\nexport function runStepLineages(\n datasetsById: ReadonlyMap<string, DatasetDefinition>\n): (entry: RegisteredStep) => DatasetColumnLineage | undefined {\n const lineages = new Map<PipelineStepDefinition, DatasetColumnLineage>()\n\n return ({ step }) => {\n if (step.executor.kind !== \"run\") return undefined\n\n let lineage = lineages.get(step)\n if (!lineage) {\n lineage = runStepLineage(step, datasetsById)\n lineages.set(step, lineage)\n }\n\n return lineage\n }\n}\n\nexport function stepLabel(entry: RegisteredStep): string {\n return `${entry.pipelineId}/${entry.step.id}`\n}\n\ntype MutableOrigins = Map<string, MarkingOrigin>\n\nconst NO_MARKINGS: ColumnMarkingOrigins = new Map()\n\ninterface KnownLineage {\n readonly lineage: DatasetColumnLineage\n /** What a column the lineage does not list depends on. */\n readonly reads: readonly DatasetColumnRef[]\n}\n\n/**\n * Markings each column carries according to the registered definitions: the ones it declares, and\n * the ones each step derives from the columns it depends on, once that step's lineage is known.\n *\n * What decided the rows of a step's inputs decides the rows of its output, whether or not the step\n * reads a column of that input: `SELECT count(*) FROM rich` reveals which rows `rich` holds. So\n * each dataset also keeps the markings of its row dependencies, and every output column of a step\n * carries those of every input it reads, as the lineage each version records does.\n *\n * A step may read its own output and a dataset may have several producers, so a step whose output\n * gains a marking queues the steps that read that output, until nothing changes. Lineage can be\n * added in rounds: each round only revisits what the new lineage reaches.\n */\nexport class MarkingPropagation implements DatasetMarkings {\n private readonly datasetsById: ReadonlyMap<string, DatasetDefinition>\n /** Marked columns only, by dataset, built when a dataset is first looked at. */\n private readonly markings = new Map<string, Map<string, MutableOrigins>>()\n /** Markings of what decides each dataset's rows, for datasets a step writes. */\n private readonly rowMarkings = new Map<string, MutableOrigins>()\n private readonly ordered: readonly RegisteredStep[]\n private readonly readers = new Map<string, RegisteredStep[]>()\n private readonly known = new Map<RegisteredStep, KnownLineage>()\n private readonly queue = new Set<RegisteredStep>()\n\n constructor(\n datasetsById: ReadonlyMap<string, DatasetDefinition>,\n steps: readonly RegisteredStep[]\n ) {\n this.datasetsById = datasetsById\n this.ordered = inDependencyOrder(steps)\n\n for (const entry of steps) {\n for (const input of new Set(Object.values(entry.step.inputs).map((dataset) => dataset.id))) {\n appendTo(this.readers, input, entry)\n }\n }\n }\n\n of(ref: DatasetColumnRef): ColumnMarkingOrigins {\n return this.markedColumns(ref.datasetId).get(ref.column) ?? NO_MARKINGS\n }\n\n /**\n * Derive markings through every step `lineageOf` knows the lineage of. A step it returns null\n * for derives nothing until a later call knows it.\n */\n derive(lineageOf: (entry: RegisteredStep) => DatasetColumnLineage | null): this {\n for (const entry of this.ordered) {\n if (this.known.has(entry)) continue\n\n const lineage = lineageOf(entry)\n if (!lineage) continue\n\n this.known.set(entry, { lineage, reads: stepReadColumns(entry.step) })\n this.queue.add(entry)\n }\n\n for (const entry of this.queue) {\n this.queue.delete(entry)\n const known = this.known.get(entry)\n if (!known || !this.apply(entry, known)) continue\n\n // Entries added while iterating a Set are visited, so the queue drains in this loop.\n for (const reader of this.readers.get(entry.step.output.id) ?? []) {\n if (this.known.has(reader)) this.queue.add(reader)\n }\n }\n\n return this\n }\n\n /** Whether the output's rows or any output column gained a marking. */\n private apply(entry: RegisteredStep, { lineage, reads }: KnownLineage): boolean {\n const label = stepLabel(entry)\n const rows = this.union(lineage.rows)\n\n for (const input of new Set(Object.values(entry.step.inputs).map((dataset) => dataset.id))) {\n for (const [markingId, origin] of this.rowMarkings.get(input) ?? []) {\n if (!rows.has(markingId)) rows.set(markingId, origin)\n }\n }\n\n let everyRead: ReadonlyMap<string, MarkingOrigin> | undefined\n let changed = false\n\n const outputId = entry.step.output.id\n let outputRows = this.rowMarkings.get(outputId)\n\n for (const [markingId, origin] of rows) {\n if (outputRows?.has(markingId)) continue\n if (!outputRows) {\n outputRows = new Map()\n this.rowMarkings.set(outputId, outputRows)\n }\n\n outputRows.set(markingId, { column: origin.column, steps: [...origin.steps, label] })\n changed = true\n }\n\n const marked = this.markedColumns(outputId)\n for (const { name: column } of this.datasetsById.get(outputId)?.schema.columns ?? []) {\n const values = lineageColumn(lineage, column)\n const valueSource = values ? this.union(values) : (everyRead ?? this.union(reads))\n if (!values) everyRead = valueSource\n\n for (const source of [rows, valueSource]) {\n for (const [markingId, origin] of source) {\n let origins = marked.get(column)\n if (origins?.has(markingId)) continue\n if (!origins) {\n origins = new Map()\n marked.set(column, origins)\n }\n\n origins.set(markingId, { column: origin.column, steps: [...origin.steps, label] })\n changed = true\n }\n }\n }\n\n return changed\n }\n\n private markedColumns(datasetId: string): Map<string, MutableOrigins> {\n let columns = this.markings.get(datasetId)\n if (!columns) {\n columns = new Map()\n for (const column of this.datasetsById.get(datasetId)?.schema.columns ?? []) {\n if (!column.markings?.length) continue\n\n const origin = { column: { datasetId, column: column.name }, steps: [] }\n columns.set(column.name, new Map(column.markings.map((id) => [id, origin])))\n }\n\n this.markings.set(datasetId, columns)\n }\n\n return columns\n }\n\n /** Every marking of these columns, each with the first origin found. */\n private union(columns: readonly DatasetColumnRef[]): MutableOrigins {\n const union: MutableOrigins = new Map()\n for (const column of columns) {\n for (const [markingId, origin] of this.of(column)) {\n if (!union.has(markingId)) union.set(markingId, origin)\n }\n }\n return union\n }\n}\n\n/** Producers before consumers, so most markings arrive by their shortest path. */\nfunction inDependencyOrder(steps: readonly RegisteredStep[]): readonly RegisteredStep[] {\n const producers = producersByDataset(steps)\n const ordered: RegisteredStep[] = []\n const visited = new Set<RegisteredStep>()\n\n const visit = (entry: RegisteredStep): void => {\n if (visited.has(entry)) return\n\n visited.add(entry)\n for (const input of Object.values(entry.step.inputs)) {\n for (const producer of producers.get(input.id) ?? []) visit(producer)\n }\n\n ordered.push(entry)\n }\n\n for (const entry of steps) visit(entry)\n return ordered\n}\n\nfunction producersByDataset(\n steps: readonly RegisteredStep[]\n): ReadonlyMap<string, readonly RegisteredStep[]> {\n const producers = new Map<string, RegisteredStep[]>()\n for (const entry of steps) appendTo(producers, entry.step.output.id, entry)\n return producers\n}\n\nfunction appendTo<TValue>(map: Map<string, TValue[]>, key: string, value: TValue): void {\n const values = map.get(key)\n if (values) values.push(value)\n else map.set(key, [value])\n}\n",
|
|
7
|
+
"import type { ProjectionEventOrigin } from \"../events/envelope\"\nimport type { DatasetVersion } from \"../lake-storage/types\"\nimport type { OntologyDefinitionCatalog } from \"../ontology/registry\"\nimport type { PipelineDefinition } from \"../pipelines/types\"\nimport type { LinkProjectionDefinition, ObjectProjectionDefinition } from \"../projections/types\"\nimport type { ActiveOntologySource } from \"../storage/ontology\"\nimport { type AppliedContribution, NO_CONTRIBUTION } from \"./applied-markings-snapshot\"\nimport type { VersionClassification } from \"./dataset-version-markings\"\nimport { registeredSteps } from \"./marking-propagation\"\nimport { type ProjectionKeyTarget, projectionSurplus } from \"./projection-markings\"\n\nexport type SourceProjection = ObjectProjectionDefinition | LinkProjectionDefinition\n\n/** What reading a projection's applied version from the lake gave. */\nexport type AppliedVersionRead =\n | {\n readonly kind: \"read\"\n readonly version: DatasetVersion\n readonly classification: VersionClassification\n }\n | { readonly kind: \"missing\" }\n | { readonly kind: \"failed\"; readonly error: unknown }\n\nexport interface AppliedContributionContext {\n readonly ontology: Pick<OntologyDefinitionCatalog, \"getObjectTypeById\">\n /** The revision of a projection's current definition. */\n readonly revisionOf: (projectionId: string) => string\n /** What a version that cannot be read may carry. */\n readonly everyMarking: ReadonlySet<string>\n /** The pipeline that writes a dataset in the current code, for messages. */\n readonly pipelineOf: (datasetId: string) => string | undefined\n}\n\n/**\n * What one projection's applied version adds to the code's markings, with the notice that explains\n * it. It reads nothing: the caller reads and classifies the version.\n *\n * - A version that could not be read seals the projection's target with every marking.\n * - Objects written by an earlier definition, which may have mapped any column, seal it with every\n * marking of the version.\n * - Otherwise a property keeps the markings its column carries beyond its declaration, and a key\n * column that carries markings seals what it keys.\n */\nexport function appliedContribution(\n projection: SourceProjection,\n source: ActiveOntologySource,\n read: AppliedVersionRead,\n context: AppliedContributionContext\n): AppliedContribution {\n const { datasetId, versionId } = source.datasetVersion\n const subject = `version '${versionId}' of '${datasetId}'`\n const target = projectionTarget(projection)\n const hint = rerunHint(datasetId, read.kind === \"read\" ? read.version : undefined, context)\n const every = [...context.everyMarking].sort()\n\n if (read.kind === \"failed\") {\n return sealed(projection.id, target, every, hint, {\n reason: `the ${subject} it applied, which could not be read from the lake,`,\n detail: `applied ${subject}, which could not be read from the lake: ${sentence(errorMessage(read.error))}`,\n })\n }\n\n if (read.kind === \"missing\") {\n return sealed(projection.id, target, every, hint, {\n reason: `the ${subject} it applied, which the lake no longer has,`,\n detail: `applied ${subject}, which the lake no longer has.`,\n })\n }\n\n const { columns, conservative } = read.classification\n const because =\n conservative === undefined\n ? \"\"\n : ` The version was classified with every marking its sources could hold, because ${conservative}.`\n\n if (\n datasetId !== projection.datasetId ||\n source.projectionRevision !== context.revisionOf(projection.id)\n ) {\n const markings = appliedVersionMarkings(read, context.everyMarking)\n return sealed(projection.id, target, markings, hint, {\n reason: `the ${subject} it applied under an earlier definition of the projection`,\n detail: `applied ${subject} under an earlier definition of the projection, and that version carries ${markingList(markings)}.${because}`,\n })\n }\n\n const markingsOf = (column: string) => [...(columns.get(column) ?? [])].sort()\n const surplus = projectionSurplus(projection, context.ontology, markingsOf)\n if (surplus.properties.length === 0 && surplus.keys.length === 0) return NO_CONTRIBUTION\n\n const column = (name: string) => `'${datasetId}.${name}'`\n const seals = surplus.keys.map((key) => ({\n target: key.target,\n seal: {\n projectionId: projection.id,\n markings: key.markings,\n reason: `in the version '${versionId}' it applied, column ${column(key.column)}, which ${key.role},`,\n },\n }))\n\n const details = [\n ...surplus.keys.map(\n (key) => `column ${column(key.column)} ${key.role} and carries ${markingList(key.markings)}`\n ),\n ...surplus.properties.map(\n (property) =>\n `property '${property.objectTypeId}.${property.propertyId}' is projected from column ${column(property.column)}, which carries ${markingList(property.markings)}`\n ),\n ]\n\n const consequences: string[] = []\n if (seals.length > 0) {\n const markings = [...new Set(seals.flatMap(({ seal }) => seal.markings))].sort()\n consequences.push(\n `${describeTargets(seals.map(({ target }) => target))} cannot be read without clearance for ${markingList(markings)}`\n )\n }\n\n if (surplus.properties.length > 0) {\n const names = surplus.properties.map((p) => `'${p.objectTypeId}.${p.propertyId}'`)\n const verb = surplus.properties.length === 1 ? \"keeps\" : \"keep\"\n consequences.push(`${describeNames(names)} ${verb} these markings`)\n }\n\n return {\n properties: surplus.properties.map(({ objectTypeId, propertyId, markings }) => ({\n objectTypeId,\n propertyId,\n markings,\n })),\n seals,\n notice: {\n projectionId: projection.id,\n sealed: seals.length > 0,\n message: `[Sixb] Projection '${projection.id}' applied ${subject}, in which ${details.join(\"; \")}.${because} ${capitalize(consequences.join(\", and \"))} until the projection applies a version the code allows. ${hint}`,\n },\n }\n}\n\n/** Every marking the version carries in any column; every marking when it could not be read. */\nexport function appliedVersionMarkings(\n read: AppliedVersionRead,\n everyMarking: ReadonlySet<string>\n): readonly string[] {\n if (read.kind !== \"read\") return [...everyMarking].sort()\n\n const { columns } = read.classification\n return [...new Set([...columns.values()].flatMap((set) => [...set]))].sort()\n}\n\n/** An object event a projection emitted: the version its values came from, and its type. */\nexport type EventOriginRef = Pick<\n ProjectionEventOrigin,\n \"projectionId\" | \"datasetId\" | \"datasetVersionId\"\n> & { readonly objectTypeId: string }\n\n/**\n * The markings an object event's origin version carries on each property its projection maps.\n * When the projection now maps another dataset or type, or the version cannot be read, every\n * property but the primary one carries every marking it could, as objects written under an\n * earlier definition do.\n */\nexport function eventOriginMarkings(\n projection: ObjectProjectionDefinition,\n origin: EventOriginRef,\n read: AppliedVersionRead,\n context: Pick<AppliedContributionContext, \"ontology\" | \"everyMarking\">\n): AppliedContribution[\"properties\"] {\n const { objectTypeId } = origin\n\n if (\n read.kind === \"read\" &&\n projection.datasetId === origin.datasetId &&\n projection.objectTypeId === objectTypeId\n ) {\n const { columns } = read.classification\n return Object.entries(projection.properties).flatMap(([propertyId, column]) => {\n const markings = [...(columns.get(column) ?? [])].sort()\n return markings.length === 0 ? [] : [{ objectTypeId, propertyId, markings }]\n })\n }\n\n const markings = appliedVersionMarkings(read, context.everyMarking)\n if (markings.length === 0) return []\n\n return (context.ontology.getObjectTypeById(objectTypeId)?.properties ?? [])\n .filter((property) => !property.primary)\n .map((property) => ({ objectTypeId, propertyId: property.id, markings }))\n}\n\n/** The pipeline that writes each dataset in the current code. */\nexport function producingPipelines(\n pipelines: readonly PipelineDefinition[]\n): (datasetId: string) => string | undefined {\n const byDataset = new Map<string, string>()\n for (const { pipelineId, step } of registeredSteps(pipelines)) {\n if (!byDataset.has(step.output.id)) byDataset.set(step.output.id, pipelineId)\n }\n\n return (datasetId) => byDataset.get(datasetId)\n}\n\n/** Seal the projection's whole target: its object type, or its link. */\nfunction sealed(\n projectionId: string,\n target: ProjectionKeyTarget,\n markings: readonly string[],\n hint: string,\n text: { readonly reason: string; readonly detail: string }\n): AppliedContribution {\n if (markings.length === 0) return NO_CONTRIBUTION\n return {\n properties: [],\n seals: [{ target, seal: { projectionId, markings, reason: text.reason } }],\n notice: {\n projectionId,\n sealed: true,\n message: `[Sixb] Projection '${projectionId}' ${text.detail} ${describeTargets([target])} cannot be read without clearance for ${markingList(markings)} until the projection applies a version the code allows. ${hint}`,\n },\n }\n}\n\nfunction projectionTarget(projection: SourceProjection): ProjectionKeyTarget {\n return projection._tag === \"ObjectProjectionDefinition\"\n ? { kind: \"type\", objectTypeId: projection.objectTypeId }\n : {\n kind: \"link\",\n objectTypeId: projection.sourceObjectTypeId,\n linkId: projection.linkId,\n targetObjectTypeId: projection.targetObjectTypeId,\n }\n}\n\nfunction rerunHint(\n datasetId: string,\n version: DatasetVersion | undefined,\n context: AppliedContributionContext\n): string {\n const pipelineId =\n context.pipelineOf(datasetId) ??\n (version?.producer?.kind === \"pipeline\" ? version.producer.id : undefined)\n return pipelineId === undefined\n ? `Write a new version of '${datasetId}' to replace it.`\n : `Rerun pipeline '${pipelineId}' to replace it.`\n}\n\nfunction describeTargets(targets: readonly ProjectionKeyTarget[]): string {\n return describeNames(\n targets.map((target) =>\n target.kind === \"type\"\n ? `'${target.objectTypeId}'`\n : `link '${target.objectTypeId}.${target.linkId}'`\n )\n )\n}\n\nfunction describeNames(names: readonly string[]): string {\n const unique = [...new Set(names)]\n const last = unique.pop() ?? \"\"\n return unique.length === 0 ? last : `${unique.join(\", \")} and ${last}`\n}\n\nfunction capitalize(text: string): string {\n return text.charAt(0).toUpperCase() + text.slice(1)\n}\n\nexport function sentence(text: string): string {\n return text.endsWith(\".\") ? text : `${text}.`\n}\n\nfunction markingList(markings: readonly string[]): string {\n return `[${markings.join(\", \")}]`\n}\n\nexport function errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n",
|
|
8
|
+
"import type { AppliedMarkings } from \"./applied-markings\"\nimport { errorMessage } from \"./applied-markings-contribution\"\n\nconst appliedMarkingsKey: unique symbol = Symbol(\"sixb.appliedMarkings\")\n\ninterface AppliedMarkingsOwner {\n readonly [appliedMarkingsKey]?: AppliedMarkings\n}\n\n/** One snapshot per host, so every reader shares it and its resolved clearances. */\nexport function registerAppliedMarkings(owner: object, markings: AppliedMarkings): void {\n const registered = (owner as AppliedMarkingsOwner)[appliedMarkingsKey]\n if (registered && registered !== markings) {\n throw new Error(\"[Sixb] Applied markings are already registered for this owner.\")\n }\n\n Object.defineProperty(owner, appliedMarkingsKey, {\n configurable: false,\n enumerable: false,\n value: markings,\n writable: false,\n })\n}\n\nexport function getAppliedMarkings(owner: object): AppliedMarkings {\n const markings = (owner as AppliedMarkingsOwner)[appliedMarkingsKey]\n if (markings) return markings\n throw new Error(\"[Sixb] Applied markings are not registered for this runtime.\")\n}\n\n/**\n * Read the applied versions ahead of the first request that needs them. A failure is only\n * reported here: that request reads them again, and fails closed if it cannot.\n */\nexport function warmAppliedMarkings(owner: object): void {\n getAppliedMarkings(owner)\n .current()\n .catch((error: unknown) => {\n console.warn(errorMessage(error))\n })\n}\n",
|
|
9
|
+
"/**\n * Shared, immutable sets of marking ids.\n *\n * Every column of every resolved version holds one of a handful of distinct sets, so each distinct\n * set is created once and compared by identity.\n */\nexport class MarkingSets {\n readonly empty: ReadonlySet<string> = new Set()\n private readonly sets = new Map<string, ReadonlySet<string>>([[\"\", this.empty]])\n\n of(markingIds: Iterable<string> | undefined): ReadonlySet<string> {\n // Most columns carry no marking.\n if (markingIds === undefined || (Array.isArray(markingIds) && markingIds.length === 0)) {\n return this.empty\n }\n\n const sorted = [...new Set(markingIds)].sort()\n const key = sorted.join(\"\\u0000\")\n\n let set = this.sets.get(key)\n if (!set) {\n set = new Set(sorted)\n this.sets.set(key, set)\n }\n\n return set\n }\n\n /** The union of sets this instance created. */\n union(sets: Iterable<ReadonlySet<string> | undefined>): ReadonlySet<string> {\n let single: ReadonlySet<string> | undefined\n const ids: string[] = []\n\n for (const set of sets) {\n if (!set || set.size === 0) continue\n single = single === undefined && ids.length === 0 ? set : undefined\n ids.push(...set)\n }\n\n return single ?? this.of(ids)\n }\n}\n",
|
|
10
|
+
"import type { DatasetDefinition } from \"../datasets/types\"\nimport { isUnknownLineage, lineageColumn, versionLineage } from \"../lake-storage/lineage\"\nimport type { DatasetColumnRef, DatasetVersion, LakeStorage } from \"../lake-storage/types\"\nimport { MarkingSets } from \"./marking-sets\"\n\n/** Markings of each column of one dataset version. A column without markings has an empty set. */\nexport type VersionColumnMarkings = ReadonlyMap<string, ReadonlySet<string>>\n\nexport interface VersionClassification {\n readonly columns: VersionColumnMarkings\n /**\n * Why part of the version was classified conservatively, with every marking it could hold.\n * Absent when every column was classified from its lineage.\n */\n readonly conservative?: string\n}\n\n/**\n * Markings each version of a dataset carries.\n *\n * Markings are never stored. A column carries the markings its registered dataset declares, and\n * those every column its lineage lists declares. The version records that lineage resolved across\n * every upstream step and every row it keeps (`DatasetVersion.lineage`), so a version keeps the\n * classification of the code that produced it, and classifying it reads no other version.\n *\n * Wherever the record does not say what a column holds (no lineage on a pipeline version, or on\n * any version of a provider that does not declare `recordsLineage`, an unknown history, a column\n * it does not list, a dataset no longer registered) the column is classified with every marking\n * the project declares.\n */\nexport interface DatasetVersionMarkings {\n classify(version: DatasetVersion): VersionClassification\n /**\n * Every marking declared on a registered column. Every classification, conservative ones\n * included, is drawn from it, so a reader cleared for all of it needs no classification. Empty\n * when the project declares no column markings.\n */\n everyMarking(): ReadonlySet<string>\n}\n\nexport interface DatasetVersionMarkingsOptions {\n readonly datasets: { list(): readonly DatasetDefinition[] }\n /** The lake the versions are read from: whether it records lineage on every version. */\n readonly lakeStorage: Pick<LakeStorage, \"recordsLineage\">\n}\n\nexport function createDatasetVersionMarkings(\n options: DatasetVersionMarkingsOptions\n): DatasetVersionMarkings {\n const sets = new MarkingSets()\n\n // Built on first use: a host that never classifies a version pays nothing for it.\n let declared: ReadonlyMap<string, ReadonlyMap<string, ReadonlySet<string>>> | undefined\n const declaredByDataset = () =>\n (declared ??= new Map(\n options.datasets\n .list()\n .map((dataset) => [\n dataset.id,\n new Map(dataset.schema.columns.map((column) => [column.name, sets.of(column.markings)])),\n ])\n ))\n\n /**\n * Every marking a registered column declares: what a column may hold where its record does not\n * say. The pipelines that wrote it may have read datasets the current code no longer reads, so\n * nothing narrower is safe.\n */\n let every: ReadonlySet<string> | undefined\n const everyMarking = () =>\n (every ??= sets.union(\n [...declaredByDataset().values()].flatMap((columns) => [...columns.values()])\n ))\n\n const classify = (version: DatasetVersion): VersionClassification => {\n const subject = `version '${version.versionId}' of '${version.datasetId}'`\n const own = declaredByDataset().get(version.datasetId)\n\n // No definition says what its columns declare: they may hold anything a column declares.\n if (!own) return conservatively(version, `dataset '${version.datasetId}' is not registered`)\n\n const lineage = versionLineage(version, options.lakeStorage)\n if (isUnknownLineage(lineage)) {\n // A reason core derived names this version. A recorded one names where the lineage was\n // lost: upstream, or, for a provider that could not decode it, this version's own record.\n return conservatively(\n version,\n lineage === version.lineage\n ? `the lineage of ${subject} is unknown: ${lineage.unknown}`\n : lineage.unknown\n )\n }\n\n let conservative: string | undefined\n const markingsOf = (ref: DatasetColumnRef): ReadonlySet<string> | undefined => {\n const columns = declaredByDataset().get(ref.datasetId)\n if (columns) return columns.get(ref.column)\n conservative ??= `dataset '${ref.datasetId}' is not registered`\n return everyMarking()\n }\n\n const rows = sets.union(lineage.rows.map(markingsOf))\n const columns = new Map(\n version.schema.columns.map(({ name }) => {\n const values = lineageColumn(lineage, name)\n if (!values) {\n conservative ??= `${subject} recorded no lineage for column '${name}'`\n return [name, everyMarking()]\n }\n\n return [name, sets.union([own.get(name), rows, ...values.map(markingsOf)])]\n })\n )\n\n return { columns, ...(conservative === undefined ? {} : { conservative }) }\n }\n\n const conservatively = (version: DatasetVersion, reason: string): VersionClassification => {\n const markings = everyMarking()\n return {\n columns: new Map(version.schema.columns.map(({ name }) => [name, markings])),\n conservative: reason,\n }\n }\n\n return { classify, everyMarking }\n}\n\n// ── Host capability ─────────────────────────────────────────\n\nconst datasetVersionMarkingsKey: unique symbol = Symbol(\"sixb.datasetVersionMarkings\")\n\ninterface DatasetVersionMarkingsOwner {\n readonly [datasetVersionMarkingsKey]?: DatasetVersionMarkings\n}\n\n/** One classifier per host, so every reader shares the markings it reads from the definitions. */\nexport function registerDatasetVersionMarkings(\n owner: object,\n markings: DatasetVersionMarkings\n): void {\n const registered = (owner as DatasetVersionMarkingsOwner)[datasetVersionMarkingsKey]\n if (registered && registered !== markings) {\n throw new Error(\"[Sixb] Dataset version markings are already registered for this owner.\")\n }\n\n Object.defineProperty(owner, datasetVersionMarkingsKey, {\n configurable: false,\n enumerable: false,\n value: markings,\n writable: false,\n })\n}\n\nexport function getDatasetVersionMarkings(owner: object): DatasetVersionMarkings {\n const markings = (owner as DatasetVersionMarkingsOwner)[datasetVersionMarkingsKey]\n if (markings) return markings\n throw new Error(\"[Sixb] Dataset version markings are not registered for this runtime.\")\n}\n\nexport function shareDatasetVersionMarkings(source: object, target: object): void {\n registerDatasetVersionMarkings(target, getDatasetVersionMarkings(source))\n}\n"
|
|
11
|
+
],
|
|
12
|
+
"mappings": "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",
|
|
13
|
+
"debugId": "BCFE94079FF12A1E64756E2164756E21",
|
|
14
|
+
"names": []
|
|
15
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/lake-storage/errors.ts
|
|
3
|
+
class LakeStorageError2 extends Error {
|
|
4
|
+
name = "LakeStorageError";
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
class LakeConcurrencyError2 extends LakeStorageError2 {
|
|
8
|
+
name = "LakeConcurrencyError";
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { LakeStorageError2, LakeConcurrencyError2 };
|
|
12
|
+
|
|
13
|
+
//# debugId=1ABED9E92576F82564756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/lake-storage/errors.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Error for lake-storage invariants and invalid lake operations.\n */\nexport class LakeStorageError extends Error {\n readonly name: string = \"LakeStorageError\"\n}\n\n/** A known, uncommitted version/transaction conflict; safe to retry staged changes. */\nexport class LakeConcurrencyError extends LakeStorageError {\n override readonly name = \"LakeConcurrencyError\"\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";;AAGO,MAAM,0BAAyB,MAAM;AAAA,EACjC,OAAe;AAC1B;AAAA;AAGO,MAAM,8BAA6B,kBAAiB;AAAA,EACvC,OAAO;AAC3B;",
|
|
8
|
+
"debugId": "1ABED9E92576F82564756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -2,16 +2,21 @@
|
|
|
2
2
|
import {
|
|
3
3
|
isFileRef2,
|
|
4
4
|
isValidFileRef
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-wkv3h3q7.js";
|
|
6
6
|
import {
|
|
7
|
-
|
|
8
|
-
} from "./chunk-
|
|
7
|
+
withFailureMessage2
|
|
8
|
+
} from "./chunk-6eqsgvxk.js";
|
|
9
9
|
import {
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
isUserRef,
|
|
11
|
+
isCurrentUser,
|
|
12
|
+
currentUserNotStorableMessage
|
|
13
|
+
} from "./chunk-4y26vs3v.js";
|
|
12
14
|
import {
|
|
13
15
|
OntologyValidationError2
|
|
14
16
|
} from "./chunk-cqr3acm1.js";
|
|
17
|
+
import {
|
|
18
|
+
assertEmbeddingModelRef
|
|
19
|
+
} from "./chunk-kyjcwqz6.js";
|
|
15
20
|
import {
|
|
16
21
|
normalizeDecimalValue2,
|
|
17
22
|
isDecimalString2
|
|
@@ -21,77 +26,6 @@ import {
|
|
|
21
26
|
cloneJsonValue2
|
|
22
27
|
} from "./chunk-wy0qdqfm.js";
|
|
23
28
|
|
|
24
|
-
// src/ontology/user-ref.ts
|
|
25
|
-
function userRef2(id) {
|
|
26
|
-
if (typeof id !== "string" || !id.trim()) {
|
|
27
|
-
throw new OntologyValidationError2("[Sixb] User reference id must not be empty.");
|
|
28
|
-
}
|
|
29
|
-
return Object.freeze({ type: "user", id });
|
|
30
|
-
}
|
|
31
|
-
function isUserRef(value) {
|
|
32
|
-
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
33
|
-
return false;
|
|
34
|
-
const record = value;
|
|
35
|
-
return Object.keys(record).every((key) => key === "type" || key === "id") && record.type === "user" && typeof record.id === "string" && record.id.trim().length > 0;
|
|
36
|
-
}
|
|
37
|
-
function collectUserRefIds(schema, value, valueTypesById, into, seenValueTypeIds = new Set) {
|
|
38
|
-
if (value === null || value === undefined)
|
|
39
|
-
return into;
|
|
40
|
-
if (typeof schema === "string") {
|
|
41
|
-
if (schema === "userRef" && isUserRef(value))
|
|
42
|
-
into.add(value.id);
|
|
43
|
-
return into;
|
|
44
|
-
}
|
|
45
|
-
switch (schema.type) {
|
|
46
|
-
case "array":
|
|
47
|
-
if (Array.isArray(value)) {
|
|
48
|
-
for (const item of value) {
|
|
49
|
-
collectUserRefIds(schema.items, item, valueTypesById, into, seenValueTypeIds);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return into;
|
|
53
|
-
case "map":
|
|
54
|
-
if (isRecord(value)) {
|
|
55
|
-
for (const item of Object.values(value)) {
|
|
56
|
-
collectUserRefIds(schema.valueSchema, item, valueTypesById, into, seenValueTypeIds);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return into;
|
|
60
|
-
case "object":
|
|
61
|
-
if (isRecord(value)) {
|
|
62
|
-
for (const [fieldId, field] of Object.entries(schema.properties)) {
|
|
63
|
-
collectUserRefIds(field.schema, value[fieldId], valueTypesById, into, seenValueTypeIds);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return into;
|
|
67
|
-
case "valueTypeRef": {
|
|
68
|
-
if (seenValueTypeIds.has(schema.valueTypeId))
|
|
69
|
-
return into;
|
|
70
|
-
const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema;
|
|
71
|
-
if (!resolved)
|
|
72
|
-
return into;
|
|
73
|
-
return collectUserRefIds(resolved, value, valueTypesById, into, new Set([...seenValueTypeIds, schema.valueTypeId]));
|
|
74
|
-
}
|
|
75
|
-
case "enum":
|
|
76
|
-
return into;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
function userReferenceProblem(path, id, status) {
|
|
80
|
-
switch (status) {
|
|
81
|
-
case "active":
|
|
82
|
-
return;
|
|
83
|
-
case null:
|
|
84
|
-
return `[Sixb] ${path} references user '${id}', which does not exist.`;
|
|
85
|
-
case "unverifiable":
|
|
86
|
-
return `[Sixb] ${path} references user '${id}', but this runtime has no auth storage to verify users. Configure storage with auth to write user references.`;
|
|
87
|
-
default:
|
|
88
|
-
return `[Sixb] ${path} references user '${id}', who is ${status}. Only active users can be newly referenced; existing references are kept.`;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
function isRecord(value) {
|
|
92
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
29
|
// src/ontology/validation/schema.ts
|
|
96
30
|
function validateSchemaValue2(schema, value, path, valueTypesById, diagnosticPath = path) {
|
|
97
31
|
if (typeof schema === "string") {
|
|
@@ -99,50 +33,53 @@ function validateSchemaValue2(schema, value, path, valueTypesById, diagnosticPat
|
|
|
99
33
|
case "string":
|
|
100
34
|
case "uuid": {
|
|
101
35
|
if (typeof value !== "string") {
|
|
102
|
-
throw
|
|
36
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Property ${path} must be a string`), `Property ${diagnosticPath} must be a string.`);
|
|
103
37
|
}
|
|
104
38
|
return;
|
|
105
39
|
}
|
|
106
40
|
case "boolean": {
|
|
107
41
|
if (typeof value !== "boolean") {
|
|
108
|
-
throw
|
|
42
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Property ${path} must be a boolean`), `Property ${diagnosticPath} must be a boolean.`);
|
|
109
43
|
}
|
|
110
44
|
return;
|
|
111
45
|
}
|
|
112
46
|
case "integer": {
|
|
113
47
|
if (typeof value !== "number" || !Number.isInteger(value)) {
|
|
114
|
-
throw
|
|
48
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Property ${path} must be an integer`), `Property ${diagnosticPath} must be an integer.`);
|
|
115
49
|
}
|
|
116
50
|
return;
|
|
117
51
|
}
|
|
118
52
|
case "double": {
|
|
119
53
|
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
120
|
-
throw
|
|
54
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Property ${path} must be numeric`), `Property ${diagnosticPath} must be numeric.`);
|
|
121
55
|
}
|
|
122
56
|
return;
|
|
123
57
|
}
|
|
124
58
|
case "decimal": {
|
|
125
59
|
if (!isDecimalString2(value)) {
|
|
126
|
-
throw
|
|
60
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Property ${path} must be an exact decimal string`), `Property ${diagnosticPath} must be an exact decimal string.`);
|
|
127
61
|
}
|
|
128
62
|
return;
|
|
129
63
|
}
|
|
130
64
|
case "date":
|
|
131
65
|
case "timestamp": {
|
|
132
66
|
if (!(value instanceof Date) && typeof value !== "string") {
|
|
133
|
-
throw
|
|
67
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Property ${path} must be a Date or ISO string`), `Property ${diagnosticPath} must be a Date or ISO string.`);
|
|
134
68
|
}
|
|
135
69
|
return;
|
|
136
70
|
}
|
|
137
71
|
case "fileRef": {
|
|
138
72
|
if (!isFileRef2(value)) {
|
|
139
|
-
throw
|
|
73
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Property ${path} must be a fileRef`), `Property ${diagnosticPath} must be a fileRef.`);
|
|
140
74
|
}
|
|
141
75
|
return;
|
|
142
76
|
}
|
|
143
77
|
case "userRef": {
|
|
78
|
+
if (isCurrentUser(value)) {
|
|
79
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] ${currentUserNotStorableMessage(`Property ${path}`)}`), currentUserNotStorableMessage(`Property ${diagnosticPath}`));
|
|
80
|
+
}
|
|
144
81
|
if (!isUserRef(value)) {
|
|
145
|
-
throw
|
|
82
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Property ${path} must be a user reference { type: "user", id }`), `Property ${diagnosticPath} must be a user reference.`);
|
|
146
83
|
}
|
|
147
84
|
return;
|
|
148
85
|
}
|
|
@@ -151,13 +88,13 @@ function validateSchemaValue2(schema, value, path, valueTypesById, diagnosticPat
|
|
|
151
88
|
}
|
|
152
89
|
if (schema.type === "enum") {
|
|
153
90
|
if (!schema.values.includes(value)) {
|
|
154
|
-
throw
|
|
91
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Property ${path} must be one of: ${schema.values.join(", ")}`), `Property ${diagnosticPath} must match a declared enum value.`);
|
|
155
92
|
}
|
|
156
93
|
return;
|
|
157
94
|
}
|
|
158
95
|
if (schema.type === "array") {
|
|
159
96
|
if (!Array.isArray(value)) {
|
|
160
|
-
throw
|
|
97
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Property ${path} must be an array`), `Property ${diagnosticPath} must be an array.`);
|
|
161
98
|
}
|
|
162
99
|
for (let index = 0;index < value.length; index += 1) {
|
|
163
100
|
validateSchemaValue2(schema.items, value[index], `${path}[${index}]`, valueTypesById, `${diagnosticPath}[${index}]`);
|
|
@@ -166,7 +103,7 @@ function validateSchemaValue2(schema, value, path, valueTypesById, diagnosticPat
|
|
|
166
103
|
}
|
|
167
104
|
if (schema.type === "map") {
|
|
168
105
|
if (!isRecord2(value)) {
|
|
169
|
-
throw
|
|
106
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Property ${path} must be an object map`), `Property ${diagnosticPath} must be an object map.`);
|
|
170
107
|
}
|
|
171
108
|
for (const [key, entry] of Object.entries(value)) {
|
|
172
109
|
validateSchemaValue2(schema.valueSchema, entry, `${path}.${key}`, valueTypesById, `${diagnosticPath}.*`);
|
|
@@ -175,20 +112,20 @@ function validateSchemaValue2(schema, value, path, valueTypesById, diagnosticPat
|
|
|
175
112
|
}
|
|
176
113
|
if (schema.type === "object") {
|
|
177
114
|
if (!isRecord2(value)) {
|
|
178
|
-
throw
|
|
115
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Property ${path} must be an object`), `Property ${diagnosticPath} must be an object.`);
|
|
179
116
|
}
|
|
180
117
|
const fields = schema.properties;
|
|
181
118
|
const fieldIds = new Set(Object.keys(fields));
|
|
182
119
|
for (const fieldId of Object.keys(value)) {
|
|
183
120
|
if (!fieldIds.has(fieldId)) {
|
|
184
|
-
throw
|
|
121
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Unknown field '${path}.${fieldId}'`), `Object ${diagnosticPath} contains an undeclared field.`);
|
|
185
122
|
}
|
|
186
123
|
}
|
|
187
124
|
for (const [fieldId, field] of Object.entries(fields)) {
|
|
188
125
|
const fieldValue = value[fieldId];
|
|
189
126
|
if (fieldValue === undefined) {
|
|
190
127
|
if (field.required) {
|
|
191
|
-
throw
|
|
128
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Missing required field '${path}.${fieldId}'`), `Missing required field '${diagnosticPath}.${fieldId}'.`);
|
|
192
129
|
}
|
|
193
130
|
continue;
|
|
194
131
|
}
|
|
@@ -203,7 +140,7 @@ function validateSchemaValue2(schema, value, path, valueTypesById, diagnosticPat
|
|
|
203
140
|
function assertValidFileRefs2(value, path) {
|
|
204
141
|
if (isFileRef2(value)) {
|
|
205
142
|
if (!isValidFileRef(value)) {
|
|
206
|
-
throw
|
|
143
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Property ${path}.mediaType must be one media type, such as "application/pdf"`), `Property ${path}.mediaType must be one media type, such as "application/pdf".`);
|
|
207
144
|
}
|
|
208
145
|
return;
|
|
209
146
|
}
|
|
@@ -220,7 +157,7 @@ function validateFieldValue(field, value, path, valueTypesById, diagnosticPath =
|
|
|
220
157
|
if (field.nullable) {
|
|
221
158
|
return;
|
|
222
159
|
}
|
|
223
|
-
throw
|
|
160
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Field ${path} cannot be null`), `Field ${diagnosticPath} cannot be null.`);
|
|
224
161
|
}
|
|
225
162
|
validateSchemaValue2(field.schema, value, path, valueTypesById, diagnosticPath);
|
|
226
163
|
}
|
|
@@ -421,14 +358,20 @@ var comparable = {
|
|
|
421
358
|
shareableParam: true
|
|
422
359
|
};
|
|
423
360
|
var PRIMITIVE_TRAITS = {
|
|
424
|
-
string: {
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
361
|
+
string: {
|
|
362
|
+
...comparable,
|
|
363
|
+
queryScalarKind: "string",
|
|
364
|
+
text: true,
|
|
365
|
+
contains: true,
|
|
366
|
+
unique: "string"
|
|
367
|
+
},
|
|
368
|
+
uuid: { ...comparable, queryScalarKind: "uuid", contains: true, unique: "string" },
|
|
369
|
+
integer: { ...comparable, queryScalarKind: "integer", unique: "integer" },
|
|
370
|
+
double: { ...comparable, queryScalarKind: "double", unique: undefined },
|
|
371
|
+
decimal: { ...comparable, queryScalarKind: "decimal", unique: undefined },
|
|
372
|
+
date: { ...comparable, queryScalarKind: "date", unique: "string" },
|
|
373
|
+
timestamp: { ...comparable, queryScalarKind: "timestamp", unique: undefined },
|
|
374
|
+
boolean: { ...comparable, queryScalarKind: "boolean", sortable: false, unique: undefined },
|
|
432
375
|
fileRef: {
|
|
433
376
|
queryScalarKind: undefined,
|
|
434
377
|
exact: false,
|
|
@@ -438,7 +381,8 @@ var PRIMITIVE_TRAITS = {
|
|
|
438
381
|
contains: false,
|
|
439
382
|
facet: false,
|
|
440
383
|
telemetry: false,
|
|
441
|
-
shareableParam: false
|
|
384
|
+
shareableParam: false,
|
|
385
|
+
unique: undefined
|
|
442
386
|
},
|
|
443
387
|
userRef: {
|
|
444
388
|
queryScalarKind: "userRef",
|
|
@@ -449,7 +393,8 @@ var PRIMITIVE_TRAITS = {
|
|
|
449
393
|
contains: false,
|
|
450
394
|
facet: true,
|
|
451
395
|
telemetry: false,
|
|
452
|
-
shareableParam: false
|
|
396
|
+
shareableParam: false,
|
|
397
|
+
unique: "userRef"
|
|
453
398
|
}
|
|
454
399
|
};
|
|
455
400
|
function isPrimitiveSchema(schema) {
|
|
@@ -459,6 +404,43 @@ function primitiveTraits(schema) {
|
|
|
459
404
|
return isPrimitiveSchema(schema) ? PRIMITIVE_TRAITS[schema] : undefined;
|
|
460
405
|
}
|
|
461
406
|
|
|
407
|
+
// src/ontology/unique-values.ts
|
|
408
|
+
var UNIQUE_VALUE_KEY_VERSION = 1;
|
|
409
|
+
function uniqueValueKind(schema, valueTypesById, seenValueTypeIds = new Set) {
|
|
410
|
+
if (typeof schema === "string")
|
|
411
|
+
return primitiveTraits(schema)?.unique;
|
|
412
|
+
if (schema.type === "enum")
|
|
413
|
+
return schema.valueType === "integer" ? "integer" : "string";
|
|
414
|
+
if (schema.type !== "valueTypeRef" || seenValueTypeIds.has(schema.valueTypeId)) {
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema;
|
|
418
|
+
if (!resolved)
|
|
419
|
+
return;
|
|
420
|
+
return uniqueValueKind(resolved, valueTypesById, new Set([...seenValueTypeIds, schema.valueTypeId]));
|
|
421
|
+
}
|
|
422
|
+
function uniquePropertiesOf(objectType, valueTypesById) {
|
|
423
|
+
const unique = [];
|
|
424
|
+
for (const property of objectType.properties) {
|
|
425
|
+
if (!property.unique)
|
|
426
|
+
continue;
|
|
427
|
+
const kind = uniqueValueKind(property.schema, valueTypesById);
|
|
428
|
+
if (kind)
|
|
429
|
+
unique.push({ propertyId: property.id, kind });
|
|
430
|
+
}
|
|
431
|
+
return unique;
|
|
432
|
+
}
|
|
433
|
+
function uniqueValueKey(kind, value) {
|
|
434
|
+
switch (kind) {
|
|
435
|
+
case "string":
|
|
436
|
+
return typeof value === "string" ? value : null;
|
|
437
|
+
case "integer":
|
|
438
|
+
return Number.isInteger(value) ? String(value) : null;
|
|
439
|
+
case "userRef":
|
|
440
|
+
return isUserRef(value) ? value.id : null;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
|
|
462
444
|
// src/ontology/validation/properties.ts
|
|
463
445
|
function assertObjectTypeRegistered2(objectTypesById, objectType) {
|
|
464
446
|
if (!objectTypesById.has(objectType.id)) {
|
|
@@ -503,7 +485,7 @@ function assertKnownProperties2(objectType, properties) {
|
|
|
503
485
|
function assertRequiredProperties2(objectType, properties) {
|
|
504
486
|
for (const property of objectType.properties) {
|
|
505
487
|
if (property.required && properties[property.id] === undefined) {
|
|
506
|
-
throw
|
|
488
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Missing required property '${property.id}' for object type '${objectType.id}'`), `Missing required property '${objectType.id}.${property.id}'.`);
|
|
507
489
|
}
|
|
508
490
|
}
|
|
509
491
|
}
|
|
@@ -541,6 +523,7 @@ function validatePropertyDefinitions2(objectTypesById, valueTypesById) {
|
|
|
541
523
|
for (const [typeId, objectType] of objectTypesById) {
|
|
542
524
|
for (const property of objectType.properties) {
|
|
543
525
|
assertNoObjectRefSchema(property, `Property '${typeId}.${property.id}'`, valueTypesById);
|
|
526
|
+
assertUniquePropertyDefinition(typeId, property, valueTypesById);
|
|
544
527
|
if (property.mode !== "telemetry")
|
|
545
528
|
continue;
|
|
546
529
|
const primitive = findPrimitiveSchema(property.schema, valueTypesById, (schema) => primitiveTraits(schema)?.telemetry === false);
|
|
@@ -552,6 +535,9 @@ function validatePropertyDefinitions2(objectTypesById, valueTypesById) {
|
|
|
552
535
|
for (const property of link.properties ?? []) {
|
|
553
536
|
const path = `Link property '${typeId}.${link.id}.${property.id}'`;
|
|
554
537
|
assertNoObjectRefSchema(property, path, valueTypesById);
|
|
538
|
+
if (property.unique) {
|
|
539
|
+
throw new OntologyValidationError2(`[Sixb] ${path} cannot be unique. Unique values are supported on object properties only.`);
|
|
540
|
+
}
|
|
555
541
|
if (findPrimitiveSchema(property.schema, valueTypesById, (schema) => schema === "userRef")) {
|
|
556
542
|
throw new OntologyValidationError2(`[Sixb] ${path} cannot use ref.user(). User references are supported on object properties only.`);
|
|
557
543
|
}
|
|
@@ -559,15 +545,36 @@ function validatePropertyDefinitions2(objectTypesById, valueTypesById) {
|
|
|
559
545
|
}
|
|
560
546
|
}
|
|
561
547
|
}
|
|
548
|
+
function assertUniquePropertyDefinition(typeId, property, valueTypesById) {
|
|
549
|
+
if (!property.unique)
|
|
550
|
+
return;
|
|
551
|
+
const path = `Unique property '${typeId}.${property.id}'`;
|
|
552
|
+
if (property.primary) {
|
|
553
|
+
throw new OntologyValidationError2(`[Sixb] ${path} is primary, and primary properties are already unique. Remove unique: true.`);
|
|
554
|
+
}
|
|
555
|
+
if (property.mode === "telemetry") {
|
|
556
|
+
throw new OntologyValidationError2(`[Sixb] ${path} cannot be a telemetry property.`);
|
|
557
|
+
}
|
|
558
|
+
if (uniqueValueKind(property.schema, valueTypesById) === undefined) {
|
|
559
|
+
throw new OntologyValidationError2(`[Sixb] ${path} cannot use ${schemaLabel(property.schema)}. ` + "Unique values must be strings, uuids, integers, dates, enums or user references.");
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
function schemaLabel(schema) {
|
|
563
|
+
if (typeof schema === "string")
|
|
564
|
+
return schema;
|
|
565
|
+
if (schema.type === "valueTypeRef")
|
|
566
|
+
return `value type '${schema.valueTypeId}'`;
|
|
567
|
+
return schema.type;
|
|
568
|
+
}
|
|
562
569
|
function validatePropertyValue2(property, value, path, valueTypesById) {
|
|
563
570
|
if (value === undefined) {
|
|
564
|
-
throw
|
|
571
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Property ${path} cannot be undefined`), `Property ${path} cannot be undefined.`);
|
|
565
572
|
}
|
|
566
573
|
if (value === null) {
|
|
567
574
|
if (property.nullable) {
|
|
568
575
|
return;
|
|
569
576
|
}
|
|
570
|
-
throw
|
|
577
|
+
throw withFailureMessage2(new OntologyValidationError2(`[Sixb] Property ${path} cannot be null`), `Property ${path} cannot be null.`);
|
|
571
578
|
}
|
|
572
579
|
validateSchemaValue2(property.schema, value, path, valueTypesById);
|
|
573
580
|
}
|
|
@@ -1547,6 +1554,6 @@ function validateTelemetryUnit2(property, propertyPath, unit, valueTypesById) {
|
|
|
1547
1554
|
throw new OntologyValidationError2(`[Sixb] Property ${propertyPath} does not define semanticType and cannot accept a unit`);
|
|
1548
1555
|
}
|
|
1549
1556
|
}
|
|
1550
|
-
export {
|
|
1557
|
+
export { validateSchemaValue2, assertValidFileRefs2, resolveValueTypeRef2, resolveValueTypeSchema2, isRecord2, normalizeObjectProperties2, normalizeSchemaValue2, coerceSchemaValueToTyped2, isPrimitiveSchema, primitiveTraits, UNIQUE_VALUE_KEY_VERSION, uniqueValueKind, uniquePropertiesOf, uniqueValueKey, assertObjectTypeRegistered2, assertPropertyTokenBelongsToObjectType2, assertLinkTokenBelongsToObjectType2, assertKnownProperties2, assertRequiredProperties2, validateObjectProperties2, validatePrimaryProperties2, validatePropertyDefinitions2, validatePropertyValue2, findPrimitiveSchema, assertLinkTargetType2, assertTargetTypeCompatible2, normalizeLinkProperties2, validateLinkProperties2, isExactSchema, isSortableSchema, isTextSchema, isContainsSchema, queryScalarKindForSchema, resolvePropertyQueryCapabilities2, resolveQuerySchema, validateQueryMetadata2, quantitativeTypes2, getUnit2, getUnitsFor2, isValidUnit2, getUnitSymbol2, isQuantitativeTypeId2, isUnitId2, assertTelemetryProperty2, resolveSemanticType2, validateTelemetryUnit2 };
|
|
1551
1558
|
|
|
1552
|
-
//# debugId=
|
|
1559
|
+
//# debugId=819D50151832A85A64756E2164756E21
|