@sixb/core 0.1.19 → 0.1.21
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/execution.d.ts.map +1 -1
- package/dist/actions/index.js +54 -47
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/request.d.ts.map +1 -1
- package/dist/actions/run-authorization.d.ts +9 -0
- package/dist/actions/run-authorization.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 +96 -0
- package/dist/activity/timeline.d.ts.map +1 -0
- package/dist/agents/index.d.ts +2 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +63 -50
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/skills.d.ts.map +1 -1
- package/dist/agents/streams/index.js +3 -3
- package/dist/agents/streams/internal.js +3 -3
- package/dist/agents/types.d.ts +8 -8
- 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/address.d.ts +48 -0
- package/dist/artifacts/address.d.ts.map +1 -0
- package/dist/artifacts/csv.d.ts +22 -0
- package/dist/artifacts/csv.d.ts.map +1 -0
- package/dist/artifacts/errors.d.ts +11 -0
- package/dist/artifacts/errors.d.ts.map +1 -0
- package/dist/artifacts/execution.d.ts +43 -0
- package/dist/artifacts/execution.d.ts.map +1 -0
- package/dist/artifacts/frames/assets.d.ts +28 -0
- package/dist/artifacts/frames/assets.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 +10 -0
- package/dist/artifacts/frames/index.d.ts.map +1 -0
- package/dist/artifacts/frames/index.js +892 -0
- package/dist/artifacts/frames/index.js.map +14 -0
- package/dist/artifacts/frames/kit.d.ts +66 -0
- package/dist/artifacts/frames/kit.d.ts.map +1 -0
- package/dist/artifacts/frames/probe.d.ts +41 -0
- package/dist/artifacts/frames/probe.d.ts.map +1 -0
- package/dist/artifacts/frames/protocol.d.ts +98 -0
- package/dist/artifacts/frames/protocol.d.ts.map +1 -0
- package/dist/artifacts/frames/runtime.d.ts +13 -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 +16 -0
- package/dist/artifacts/index.d.ts.map +1 -0
- package/dist/artifacts/index.js +125 -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 +28 -0
- package/dist/artifacts/limits.d.ts.map +1 -0
- package/dist/artifacts/outline.d.ts +44 -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 +5 -0
- package/dist/artifacts/publish/index.d.ts.map +1 -0
- package/dist/artifacts/publish/index.js +36 -0
- package/dist/artifacts/publish/index.js.map +9 -0
- package/dist/artifacts/publish/publish.d.ts +52 -0
- package/dist/artifacts/publish/publish.d.ts.map +1 -0
- package/dist/artifacts/publish/references.d.ts +27 -0
- package/dist/artifacts/publish/references.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/sheet.d.ts +15 -0
- package/dist/artifacts/publish/validate/sheet.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/slides.d.ts +21 -0
- package/dist/artifacts/publish/validate/slides.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 +41 -0
- package/dist/artifacts/resolve.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/warnings.d.ts +11 -0
- package/dist/artifacts/warnings.d.ts.map +1 -0
- package/dist/artifacts/workbook.d.ts +64 -0
- package/dist/artifacts/workbook.d.ts.map +1 -0
- package/dist/auth/cookies.d.ts +2 -4
- package/dist/auth/cookies.d.ts.map +1 -1
- package/dist/auth/index.d.ts +0 -2
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +14 -20
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/runtime.d.ts +8 -10
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/auth/session-cache.d.ts +1 -5
- package/dist/auth/session-cache.d.ts.map +1 -1
- package/dist/auth/strategy.js +1 -1
- package/dist/auth/types.d.ts +4 -8
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/validation.d.ts +0 -1
- package/dist/auth/validation.d.ts.map +1 -1
- package/dist/authorization/decision.d.ts +2 -4
- package/dist/authorization/decision.d.ts.map +1 -1
- package/dist/authorization/grant-kinds.d.ts +6 -8
- package/dist/authorization/grant-kinds.d.ts.map +1 -1
- package/dist/authorization/index.d.ts +0 -1
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +7 -11
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/resolve.d.ts +1 -1
- package/dist/authorization/resolve.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 +54 -48
- package/dist/bootstrap/index.js.map +2 -2
- package/dist/{chunk-t6vq7bff.js → chunk-0bphap9y.js} +5 -5
- package/dist/{chunk-7mbzgd9m.js → chunk-1cc1xaf3.js} +3 -3
- package/dist/chunk-3jms7je7.js +14 -0
- package/dist/chunk-3jms7je7.js.map +10 -0
- package/dist/{chunk-s54c868q.js → chunk-3qct2mdc.js} +3 -13
- package/dist/chunk-3qct2mdc.js.map +12 -0
- package/dist/{chunk-6gmfggss.js → chunk-431pyp2c.js} +3 -3
- package/dist/{chunk-c85m1hyj.js → chunk-447a5c0p.js} +2 -2
- package/dist/chunk-48qjhh6v.js +185 -0
- package/dist/chunk-48qjhh6v.js.map +13 -0
- package/dist/{chunk-80mc0971.js → chunk-561r0yc9.js} +8 -8
- package/dist/{chunk-5e43w60z.js → chunk-5948n82c.js} +2 -2
- package/dist/{chunk-yzwja0mj.js → chunk-5hx48dnn.js} +2 -2
- package/dist/{chunk-tjb1mk5t.js → chunk-5vems3nx.js} +5 -6
- package/dist/{chunk-tjb1mk5t.js.map → chunk-5vems3nx.js.map} +3 -3
- package/dist/{chunk-aff7cyea.js → chunk-61y5xs4p.js} +563 -167
- package/dist/{chunk-aff7cyea.js.map → chunk-61y5xs4p.js.map} +12 -9
- package/dist/chunk-65abf64x.js +13 -0
- package/dist/chunk-65abf64x.js.map +10 -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-6rqgmkde.js +2028 -0
- package/dist/chunk-6rqgmkde.js.map +29 -0
- package/dist/{chunk-y7rqfrgg.js → chunk-6vb4st8k.js} +29 -38
- package/dist/chunk-6vb4st8k.js.map +23 -0
- package/dist/chunk-7q8t23v4.js +467 -0
- package/dist/chunk-7q8t23v4.js.map +14 -0
- package/dist/{chunk-kyzq4wy9.js → chunk-858emn8m.js} +17 -17
- package/dist/chunk-858emn8m.js.map +18 -0
- package/dist/{chunk-hvsb78a1.js → chunk-8frc8a4j.js} +26 -26
- package/dist/{chunk-hvsb78a1.js.map → chunk-8frc8a4j.js.map} +2 -2
- 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-j2bp5ryw.js → chunk-918wwnaa.js} +495 -28
- package/dist/{chunk-j2bp5ryw.js.map → chunk-918wwnaa.js.map} +14 -12
- package/dist/{chunk-1f7wpmyp.js → chunk-9j4jw7as.js} +103 -110
- package/dist/chunk-9j4jw7as.js.map +14 -0
- package/dist/chunk-9kgkfg6v.js +502 -0
- package/dist/chunk-9kgkfg6v.js.map +14 -0
- package/dist/chunk-a3faa34j.js +74 -0
- package/dist/chunk-a3faa34j.js.map +10 -0
- package/dist/{chunk-ey3pyej1.js → chunk-akzryx9h.js} +347 -1174
- package/dist/{chunk-ey3pyej1.js.map → chunk-akzryx9h.js.map} +19 -25
- package/dist/chunk-arns890k.js +10 -0
- package/dist/chunk-arns890k.js.map +10 -0
- package/dist/{chunk-zrmy8zvw.js → chunk-bk9svbcq.js} +11 -11
- package/dist/{chunk-zrmy8zvw.js.map → chunk-bk9svbcq.js.map} +2 -2
- package/dist/{chunk-hkc3jct7.js → chunk-c06hmxyy.js} +2 -10
- package/dist/chunk-c06hmxyy.js.map +10 -0
- package/dist/{chunk-q1vkr2ys.js → chunk-c1rxbz5y.js} +3 -3
- package/dist/chunk-cfj9dfbb.js +288 -0
- package/dist/chunk-cfj9dfbb.js.map +12 -0
- package/dist/{chunk-4tcx876c.js → chunk-cn0fwwhy.js} +19 -19
- package/dist/{chunk-4tcx876c.js.map → chunk-cn0fwwhy.js.map} +1 -1
- package/dist/{chunk-gc4ntf7d.js → chunk-cwdzcv37.js} +1 -1
- package/dist/{chunk-fa02jy15.js → chunk-cy4mbddw.js} +1 -1
- package/dist/{chunk-7kg3k1m9.js → chunk-d09e3rax.js} +1 -1
- package/dist/chunk-d5rjr8c0.js +176 -0
- package/dist/chunk-d5rjr8c0.js.map +12 -0
- package/dist/{chunk-rhg02hxq.js → chunk-d7dnxdep.js} +3 -3
- package/dist/{chunk-b38szspf.js → chunk-dhcv7yxc.js} +1 -1
- package/dist/{chunk-b38szspf.js.map → chunk-dhcv7yxc.js.map} +1 -1
- package/dist/{chunk-enpsx8k5.js → chunk-dhdha526.js} +23 -21
- package/dist/chunk-dhdha526.js.map +10 -0
- package/dist/{chunk-8mx7qw3y.js → chunk-dvd2fp9q.js} +2 -2
- package/dist/{chunk-8mx7qw3y.js.map → chunk-dvd2fp9q.js.map} +3 -3
- package/dist/{chunk-bwjcehza.js → chunk-e17zdm62.js} +6 -12
- package/dist/{chunk-bwjcehza.js.map → chunk-e17zdm62.js.map} +3 -4
- package/dist/{chunk-tpn40322.js → chunk-e6k4thh5.js} +11 -10
- package/dist/{chunk-tpn40322.js.map → chunk-e6k4thh5.js.map} +3 -3
- package/dist/{chunk-tw03bsmb.js → chunk-eptrvnby.js} +224 -3
- package/dist/chunk-eptrvnby.js.map +12 -0
- package/dist/{chunk-xt1zt7gv.js → chunk-f4pamkt9.js} +30 -23
- package/dist/chunk-f4pamkt9.js.map +12 -0
- package/dist/chunk-ff5xkv0p.js +211 -0
- package/dist/chunk-ff5xkv0p.js.map +10 -0
- package/dist/{chunk-bpgy64fw.js → chunk-g257jwnc.js} +10 -4
- package/dist/{chunk-bpgy64fw.js.map → chunk-g257jwnc.js.map} +3 -3
- package/dist/chunk-g5bvzyyr.js +32 -0
- package/dist/chunk-g5bvzyyr.js.map +10 -0
- package/dist/{chunk-2jntasmh.js → chunk-hcbyfxbe.js} +25 -49
- package/dist/chunk-hcbyfxbe.js.map +12 -0
- package/dist/chunk-hke9aeen.js +9 -0
- package/dist/chunk-hke9aeen.js.map +10 -0
- package/dist/{chunk-1sr8ryzk.js → chunk-hwksyjks.js} +122 -1
- package/dist/{chunk-1sr8ryzk.js.map → chunk-hwksyjks.js.map} +3 -3
- package/dist/chunk-jcfw4h7m.js +9 -0
- package/dist/chunk-jcfw4h7m.js.map +10 -0
- package/dist/{chunk-85yvv5n0.js → chunk-k43ct2ke.js} +20 -11
- package/dist/chunk-k43ct2ke.js.map +12 -0
- package/dist/{chunk-dnmadg9k.js → chunk-kge7k6ey.js} +40 -8
- package/dist/chunk-kge7k6ey.js.map +15 -0
- package/dist/{chunk-wz0xs816.js → chunk-ky3j490c.js} +2 -2
- package/dist/chunk-mjddfa7k.js +129 -0
- package/dist/chunk-mjddfa7k.js.map +12 -0
- package/dist/{chunk-3gnrh4ve.js → chunk-nn5xnx3s.js} +86 -111
- package/dist/chunk-nn5xnx3s.js.map +40 -0
- package/dist/{chunk-rz53yb4v.js → chunk-q5e5tv4b.js} +35 -7
- package/dist/{chunk-rz53yb4v.js.map → chunk-q5e5tv4b.js.map} +3 -3
- package/dist/{chunk-vyf9kfqf.js → chunk-q7gn29y3.js} +1 -1
- package/dist/{chunk-d2ync1v3.js → chunk-rmakanzx.js} +10 -12
- package/dist/{chunk-d2ync1v3.js.map → chunk-rmakanzx.js.map} +3 -4
- package/dist/{chunk-v9xd5wzd.js → chunk-s7jg7pmn.js} +1 -1
- package/dist/chunk-tbc1ngpd.js +642 -0
- package/dist/chunk-tbc1ngpd.js.map +18 -0
- package/dist/chunk-twe4dx8p.js +676 -0
- package/dist/chunk-twe4dx8p.js.map +15 -0
- package/dist/{chunk-nre82s12.js → chunk-vf57cr4t.js} +2 -2
- package/dist/{chunk-9ybhtmg4.js → chunk-vvxtn22d.js} +1 -1
- 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-x0v3jd47.js +124 -0
- package/dist/chunk-x0v3jd47.js.map +10 -0
- package/dist/{chunk-7t429e3f.js → chunk-xvsc5m8n.js} +1 -1
- package/dist/{chunk-kg5j6fct.js → chunk-y5tah2kf.js} +1 -1
- package/dist/{chunk-52bk93x8.js → chunk-z58tm0hm.js} +2 -2
- 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/deploy/internal.js +4 -3
- package/dist/deploy/internal.js.map +4 -4
- package/dist/deploy/services.d.ts.map +1 -1
- package/dist/deploy/types.d.ts +1 -2
- package/dist/deploy/types.d.ts.map +1 -1
- package/dist/error-reporting/internal.js +4 -4
- 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/execution.d.ts +12 -2
- package/dist/events/execution.d.ts.map +1 -1
- package/dist/events/index.js +4 -4
- package/dist/execution/agent.js +56 -49
- 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 +52 -11
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- 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 +45 -0
- package/dist/execution/object-reader-security.d.ts.map +1 -0
- package/dist/execution/primitive.js +54 -47
- package/dist/execution/primitive.js.map +1 -1
- package/dist/execution/request.js +49 -42
- package/dist/execution/request.js.map +2 -2
- package/dist/http/api-routes.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/index.d.ts +23 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +111 -109
- 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/materializer/index.js +31 -30
- package/dist/materializer/index.js.map +1 -1
- package/dist/models/execution/index.js +26 -25
- package/dist/models/execution/index.js.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/index.js +54 -47
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/link/authorization.d.ts +8 -5
- package/dist/objects/link/authorization.d.ts.map +1 -1
- package/dist/objects/link/upsert-batch.d.ts.map +1 -1
- 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/index.js +29 -28
- package/dist/objects/query/index.js.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/vectors/handle.d.ts.map +1 -1
- package/dist/objects/vectors/profile.d.ts +5 -0
- package/dist/objects/vectors/profile.d.ts.map +1 -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.js +7 -7
- package/dist/ontology/internal.js +4 -4
- package/dist/ontology/internal.js.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 +47 -35
- 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 +30 -29
- package/dist/projections/internal.js.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/internal.d.ts +2 -0
- package/dist/runtime/internal.d.ts.map +1 -1
- package/dist/runtime/internal.js +46 -42
- 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 +8 -0
- package/dist/runtime/sixb.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 +14 -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/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/builders.d.ts.map +1 -1
- package/dist/security/dataset-version-markings.d.ts +47 -0
- package/dist/security/dataset-version-markings.d.ts.map +1 -0
- package/dist/security/every.d.ts +1 -4
- package/dist/security/every.d.ts.map +1 -1
- package/dist/security/grants.d.ts +4 -5
- package/dist/security/grants.d.ts.map +1 -1
- package/dist/security/index.d.ts +2 -2
- 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/membership-policies.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 +4 -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.d.ts +10 -0
- package/dist/security/public.d.ts.map +1 -0
- package/dist/security/public.js +10 -0
- package/dist/security/public.js.map +9 -0
- package/dist/security/redactions.d.ts +4 -1
- package/dist/security/redactions.d.ts.map +1 -1
- package/dist/security/registry.d.ts +0 -1
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +34 -19
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts +0 -6
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/shares/internal.js +25 -24
- 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/types.d.ts +8 -0
- 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/in-memory.d.ts +4 -0
- package/dist/storage/agents/in-memory.d.ts.map +1 -1
- package/dist/storage/agents/provider.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +2 -5
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +10 -9
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +3 -3
- package/dist/storage/artifacts/errors.d.ts +8 -0
- package/dist/storage/artifacts/errors.d.ts.map +1 -0
- package/dist/storage/artifacts/in-memory.d.ts +34 -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 +17 -0
- package/dist/storage/artifacts/record.d.ts.map +1 -0
- package/dist/storage/artifacts/types.d.ts +184 -0
- package/dist/storage/artifacts/types.d.ts.map +1 -0
- package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/magic-links.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/oidc-attempts.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/sessions.d.ts +2 -11
- package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/shared.d.ts +1 -2
- package/dist/storage/auth/in-memory/shared.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 +20 -17
- 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 +2 -1
- package/dist/storage/executions/in-memory.d.ts.map +1 -1
- package/dist/storage/executions/index.d.ts +1 -1
- package/dist/storage/executions/index.d.ts.map +1 -1
- package/dist/storage/executions/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 +31 -0
- package/dist/storage/executions/types.d.ts.map +1 -1
- package/dist/storage/file-upload-sessions/provider.js +12 -12
- 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 +6 -4
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +47 -46
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +3 -0
- package/dist/storage/internal.d.ts.map +1 -1
- package/dist/storage/internal.js +66 -16
- package/dist/storage/internal.js.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/index.d.ts +1 -1
- package/dist/storage/ontology/index.d.ts.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/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/types.d.ts +6 -0
- package/dist/storage/share-grants/types.d.ts.map +1 -1
- package/dist/storage/types.d.ts +4 -0
- 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 +14 -13
- 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 +35 -34
- 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-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.map +1 -1
- package/dist/testing/execution-storage-contract.d.ts.map +1 -1
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +4493 -3225
- package/dist/testing/index.js.map +14 -12
- 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/ontology-storage-contract.d.ts.map +1 -1
- package/dist/testing/share-grant-storage-contract.d.ts.map +1 -1
- package/dist/webhooks/internal.js +28 -27
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +2 -2
- package/dist/workflows/builders.d.ts.map +1 -1
- package/dist/workflows/index.js +57 -51
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/types.d.ts +9 -0
- 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 +32 -2
- package/src/actions/execution.ts +18 -13
- package/src/actions/request.ts +18 -3
- package/src/actions/run-authorization.ts +23 -0
- package/src/activity/README.md +155 -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 +424 -0
- package/src/agents/index.ts +8 -3
- package/src/agents/request.ts +5 -0
- package/src/agents/skills.ts +6 -0
- package/src/agents/types.ts +8 -8
- package/src/agents/validation.ts +2 -0
- package/src/artifacts/address.ts +132 -0
- package/src/artifacts/csv.ts +108 -0
- package/src/artifacts/errors.ts +21 -0
- package/src/artifacts/execution.ts +153 -0
- package/src/artifacts/frames/assets.ts +88 -0
- package/src/artifacts/frames/grants.ts +124 -0
- package/src/artifacts/frames/index.ts +15 -0
- package/src/artifacts/frames/kit.ts +392 -0
- package/src/artifacts/frames/probe.ts +309 -0
- package/src/artifacts/frames/protocol.ts +174 -0
- package/src/artifacts/frames/runtime.ts +213 -0
- package/src/artifacts/html.ts +25 -0
- package/src/artifacts/ids.ts +18 -0
- package/src/artifacts/index.ts +61 -0
- package/src/artifacts/kinds.ts +8 -0
- package/src/artifacts/limits.ts +27 -0
- package/src/artifacts/outline.ts +62 -0
- package/src/artifacts/publish/files.ts +87 -0
- package/src/artifacts/publish/index.ts +12 -0
- package/src/artifacts/publish/publish.ts +250 -0
- package/src/artifacts/publish/references.ts +130 -0
- package/src/artifacts/publish/validate/document.ts +114 -0
- package/src/artifacts/publish/validate/file.ts +19 -0
- package/src/artifacts/publish/validate/sheet.ts +251 -0
- package/src/artifacts/publish/validate/slides.ts +134 -0
- package/src/artifacts/references.ts +11 -0
- package/src/artifacts/resolve.ts +97 -0
- package/src/artifacts/theme.ts +116 -0
- package/src/artifacts/warnings.ts +10 -0
- package/src/artifacts/workbook.ts +315 -0
- package/src/auth/cookies.ts +3 -20
- package/src/auth/index.ts +0 -6
- package/src/auth/runtime.ts +59 -76
- package/src/auth/session-cache.ts +2 -9
- package/src/auth/types.ts +4 -8
- package/src/auth/validation.ts +0 -2
- package/src/authorization/decision.ts +13 -23
- package/src/authorization/grant-kinds.ts +33 -28
- package/src/authorization/index.ts +0 -1
- package/src/authorization/resolve.ts +10 -6
- 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/deploy/services.ts +0 -1
- package/src/deploy/types.ts +1 -2
- package/src/deploy/validation.ts +3 -1
- package/src/errors/internal.ts +1 -0
- package/src/events/execution.ts +134 -21
- package/src/execution/authorization.ts +11 -5
- package/src/execution/authorized-object-reader.ts +270 -256
- package/src/execution/object-reader-clearance.ts +91 -0
- package/src/execution/object-reader-ontology.ts +63 -0
- package/src/execution/object-reader-security.ts +146 -0
- package/src/http/api-routes.ts +125 -0
- package/src/index.ts +72 -17
- 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/models/execution/embedding.ts +6 -6
- package/src/objects/clearance-redaction.ts +138 -0
- package/src/objects/link/authorization.ts +27 -7
- package/src/objects/link/remove.ts +2 -2
- package/src/objects/link/upsert-batch.ts +7 -5
- package/src/objects/link/upsert.ts +2 -2
- package/src/objects/object/delete.ts +2 -0
- package/src/objects/object/upsert-batch.ts +2 -4
- package/src/objects/object/upsert.ts +2 -3
- package/src/objects/property-clearance.ts +171 -152
- package/src/objects/query/clearance-admission.ts +112 -0
- package/src/objects/query/link-query-clearance.ts +73 -0
- package/src/objects/vectors/README.md +4 -0
- package/src/objects/vectors/handle.ts +11 -2
- package/src/objects/vectors/indexing-generate.ts +2 -2
- package/src/objects/vectors/profile.ts +5 -0
- package/src/ontology/builders.ts +12 -1
- package/src/ontology/docs-markdown.ts +1 -1
- package/src/pipelines/index.ts +2 -0
- package/src/pipelines/lineage.ts +45 -0
- package/src/projections/internal.ts +2 -2
- package/src/runtime/create.ts +4 -0
- package/src/runtime/host.ts +55 -0
- package/src/runtime/internal.ts +2 -0
- package/src/runtime/ontology-mutations.ts +19 -4
- package/src/runtime/resolve-definitions.ts +66 -3
- package/src/runtime/sixb.ts +18 -1
- 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/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/builders.ts +7 -2
- package/src/security/dataset-version-markings.ts +163 -0
- package/src/security/every.ts +0 -4
- package/src/security/grants.ts +42 -27
- package/src/security/index.ts +3 -3
- 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/membership-policies.ts +3 -1
- package/src/security/pipeline-markings.ts +175 -0
- package/src/security/project.ts +8 -0
- package/src/security/projection-markings.ts +421 -0
- package/src/security/public.ts +10 -0
- package/src/security/redactions.ts +7 -2
- package/src/security/registry.ts +0 -8
- package/src/security/types.ts +38 -26
- package/src/security/validation.ts +28 -19
- package/src/storage/action-runs/in-memory.ts +18 -0
- package/src/storage/action-runs/types.ts +8 -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/in-memory.ts +10 -0
- package/src/storage/agents/provider.ts +2 -13
- package/src/storage/agents/types.ts +10 -17
- package/src/storage/artifacts/errors.ts +16 -0
- package/src/storage/artifacts/in-memory.ts +240 -0
- package/src/storage/artifacts/index.ts +30 -0
- package/src/storage/artifacts/record.ts +200 -0
- package/src/storage/artifacts/types.ts +209 -0
- package/src/storage/auth/in-memory/auth-storage.ts +0 -18
- package/src/storage/auth/in-memory/magic-links.ts +0 -3
- package/src/storage/auth/in-memory/oidc-attempts.ts +0 -3
- package/src/storage/auth/in-memory/sessions.ts +22 -25
- package/src/storage/auth/in-memory/shared.ts +1 -10
- package/src/storage/auth/index.ts +2 -0
- package/src/storage/auth/types.ts +20 -18
- package/src/storage/executions/in-memory.ts +61 -1
- package/src/storage/executions/index.ts +3 -0
- package/src/storage/executions/provider.ts +12 -0
- package/src/storage/executions/types.ts +30 -0
- package/src/storage/in-memory/index.ts +16 -0
- package/src/storage/index.ts +63 -0
- package/src/storage/internal.ts +30 -0
- package/src/storage/ontology/in-memory/sources.ts +23 -0
- package/src/storage/ontology/index.ts +2 -0
- package/src/storage/ontology/sources.ts +17 -0
- 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 +4 -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-storage-contract.ts +22 -21
- package/src/testing/artifact-storage-contract.ts +517 -0
- package/src/testing/auth-storage-contract.ts +61 -107
- package/src/testing/execution-storage-contract.ts +147 -3
- package/src/testing/index.ts +9 -0
- package/src/testing/lake-merge-storage-contract.ts +38 -0
- package/src/testing/lake-storage-contract.ts +247 -2
- package/src/testing/materializer-storage-contract.ts +1 -0
- package/src/testing/ontology-storage-contract.ts +57 -2
- package/src/testing/share-grant-storage-contract.ts +15 -0
- package/src/workflows/builders.ts +14 -0
- package/src/workflows/types.ts +9 -0
- package/src/workflows/validation.ts +72 -0
- package/dist/auth/audience.d.ts +0 -8
- package/dist/auth/audience.d.ts.map +0 -1
- package/dist/authorization/application-access.d.ts +0 -18
- package/dist/authorization/application-access.d.ts.map +0 -1
- package/dist/chunk-1f7wpmyp.js.map +0 -14
- package/dist/chunk-1k89ecfr.js +0 -85
- package/dist/chunk-1k89ecfr.js.map +0 -10
- package/dist/chunk-2jntasmh.js.map +0 -13
- package/dist/chunk-3gnrh4ve.js.map +0 -40
- package/dist/chunk-85yvv5n0.js.map +0 -12
- package/dist/chunk-9gyp8hg1.js +0 -363
- package/dist/chunk-9gyp8hg1.js.map +0 -14
- package/dist/chunk-dnmadg9k.js.map +0 -15
- package/dist/chunk-enpsx8k5.js.map +0 -10
- package/dist/chunk-hkc3jct7.js.map +0 -10
- package/dist/chunk-kyzq4wy9.js.map +0 -18
- package/dist/chunk-s16apyk9.js +0 -256
- package/dist/chunk-s16apyk9.js.map +0 -16
- package/dist/chunk-s54c868q.js.map +0 -12
- package/dist/chunk-tw03bsmb.js.map +0 -11
- package/dist/chunk-wwdfe68s.js +0 -128
- package/dist/chunk-wwdfe68s.js.map +0 -11
- package/dist/chunk-xt1zt7gv.js.map +0 -13
- package/dist/chunk-y7rqfrgg.js.map +0 -24
- package/dist/security/applications.d.ts +0 -15
- package/dist/security/applications.d.ts.map +0 -1
- package/src/auth/audience.ts +0 -28
- package/src/authorization/application-access.ts +0 -34
- package/src/security/applications.ts +0 -11
- /package/dist/{chunk-t6vq7bff.js.map → chunk-0bphap9y.js.map} +0 -0
- /package/dist/{chunk-7mbzgd9m.js.map → chunk-1cc1xaf3.js.map} +0 -0
- /package/dist/{chunk-6gmfggss.js.map → chunk-431pyp2c.js.map} +0 -0
- /package/dist/{chunk-c85m1hyj.js.map → chunk-447a5c0p.js.map} +0 -0
- /package/dist/{chunk-80mc0971.js.map → chunk-561r0yc9.js.map} +0 -0
- /package/dist/{chunk-5e43w60z.js.map → chunk-5948n82c.js.map} +0 -0
- /package/dist/{chunk-yzwja0mj.js.map → chunk-5hx48dnn.js.map} +0 -0
- /package/dist/{chunk-q1vkr2ys.js.map → chunk-c1rxbz5y.js.map} +0 -0
- /package/dist/{chunk-gc4ntf7d.js.map → chunk-cwdzcv37.js.map} +0 -0
- /package/dist/{chunk-fa02jy15.js.map → chunk-cy4mbddw.js.map} +0 -0
- /package/dist/{chunk-7kg3k1m9.js.map → chunk-d09e3rax.js.map} +0 -0
- /package/dist/{chunk-rhg02hxq.js.map → chunk-d7dnxdep.js.map} +0 -0
- /package/dist/{chunk-wz0xs816.js.map → chunk-ky3j490c.js.map} +0 -0
- /package/dist/{chunk-vyf9kfqf.js.map → chunk-q7gn29y3.js.map} +0 -0
- /package/dist/{chunk-v9xd5wzd.js.map → chunk-s7jg7pmn.js.map} +0 -0
- /package/dist/{chunk-nre82s12.js.map → chunk-vf57cr4t.js.map} +0 -0
- /package/dist/{chunk-9ybhtmg4.js.map → chunk-vvxtn22d.js.map} +0 -0
- /package/dist/{chunk-7t429e3f.js.map → chunk-xvsc5m8n.js.map} +0 -0
- /package/dist/{chunk-kg5j6fct.js.map → chunk-y5tah2kf.js.map} +0 -0
- /package/dist/{chunk-52bk93x8.js.map → chunk-z58tm0hm.js.map} +0 -0
package/src/security/markings.ts
CHANGED
|
@@ -3,15 +3,19 @@ import type { OntologyDefinitionCatalog } from "../ontology/registry"
|
|
|
3
3
|
import type { ObjectType, Property } from "../ontology/types"
|
|
4
4
|
import type { PipelineDefinition } from "../pipelines/types"
|
|
5
5
|
import type { ProjectionDefinitionCatalog } from "../projections/registry"
|
|
6
|
-
import type { ObjectProjectionDefinition } from "../projections/types"
|
|
7
6
|
import { SecurityValidationError } from "./errors"
|
|
7
|
+
import { MarkingPropagation, registeredSteps, runStepLineages } from "./marking-propagation"
|
|
8
|
+
import { validateProjectionMarkings } from "./projection-markings"
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Check every marking once at startup.
|
|
11
12
|
*
|
|
12
|
-
* A marking is enforced at read time from the property or column definition
|
|
13
|
-
* here closes a path that would otherwise return the value
|
|
14
|
-
* ambiguous.
|
|
13
|
+
* A marking is enforced at read time from the property or column definition and the lineage of
|
|
14
|
+
* the version read, so each rule here closes a path that would otherwise return the value
|
|
15
|
+
* unredacted or make enforcement ambiguous.
|
|
16
|
+
*
|
|
17
|
+
* Projections are checked against the markings columns declare or inherit through `run` steps.
|
|
18
|
+
* What SQL steps derive needs the lake provider's analysis, which `checkPipelineMarkings` adds.
|
|
15
19
|
*/
|
|
16
20
|
export function validateMarkingsAtStartup(input: {
|
|
17
21
|
readonly markingIds: ReadonlySet<string>
|
|
@@ -22,8 +26,14 @@ export function validateMarkingsAtStartup(input: {
|
|
|
22
26
|
}): void {
|
|
23
27
|
validatePropertyMarkings(input.ontology, input.markingIds)
|
|
24
28
|
validateColumnMarkings(input.datasetsById, input.markingIds)
|
|
25
|
-
|
|
26
|
-
|
|
29
|
+
|
|
30
|
+
const runLineageOf = runStepLineages(input.datasetsById)
|
|
31
|
+
const markings = new MarkingPropagation(
|
|
32
|
+
input.datasetsById,
|
|
33
|
+
registeredSteps(input.pipelines)
|
|
34
|
+
).derive((entry) => runLineageOf(entry) ?? null)
|
|
35
|
+
|
|
36
|
+
validateProjectionMarkings(input.projections, input.ontology, markings)
|
|
27
37
|
}
|
|
28
38
|
|
|
29
39
|
// ── Declarations ────────────────────────────────────────────
|
|
@@ -85,9 +95,20 @@ function assertSubtypeKeepsParentMarkings(
|
|
|
85
95
|
const parent = ontology.getObjectTypeById(objectType.extends)
|
|
86
96
|
if (!parent) return
|
|
87
97
|
|
|
98
|
+
// Indexed on the first marked parent property: most parents mark nothing.
|
|
99
|
+
let propertiesById: Map<string, Property> | undefined
|
|
88
100
|
for (const parentProperty of parent.properties) {
|
|
89
|
-
const
|
|
90
|
-
|
|
101
|
+
const parentMarkings = parentProperty.markings
|
|
102
|
+
if (!parentMarkings) continue
|
|
103
|
+
|
|
104
|
+
if (!propertiesById) {
|
|
105
|
+
propertiesById = new Map()
|
|
106
|
+
for (const property of objectType.properties) {
|
|
107
|
+
if (!propertiesById.has(property.id)) propertiesById.set(property.id, property)
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const missing = missingMarkings(parentMarkings, propertiesById.get(parentProperty.id)?.markings)
|
|
91
112
|
if (missing.length > 0) {
|
|
92
113
|
throw new SecurityValidationError(
|
|
93
114
|
`[Sixb] Property '${objectType.id}.${parentProperty.id}' must keep the markings of '${parent.id}.${parentProperty.id}': add ${missing.map((markingId) => `'${markingId}'`).join(", ")}.`
|
|
@@ -134,172 +155,6 @@ function assertMarkingList(
|
|
|
134
155
|
}
|
|
135
156
|
}
|
|
136
157
|
|
|
137
|
-
// ── Propagation ─────────────────────────────────────────────
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* A step's output inherits nothing from its inputs until Sixb can derive each output column's
|
|
141
|
-
* markings from the transform. Until then, reading a marked column would declassify it.
|
|
142
|
-
*/
|
|
143
|
-
function rejectPipelineStepsOverMarkedColumns(
|
|
144
|
-
pipelines: readonly PipelineDefinition[],
|
|
145
|
-
datasetsById: ReadonlyMap<string, DatasetDefinition>
|
|
146
|
-
): void {
|
|
147
|
-
for (const pipeline of pipelines) {
|
|
148
|
-
for (const { step } of pipeline.graph.nodes) {
|
|
149
|
-
for (const input of Object.values(step.inputs)) {
|
|
150
|
-
const dataset = datasetsById.get(input.id)
|
|
151
|
-
const column = dataset?.schema.columns.find((candidate) => candidate.markings)
|
|
152
|
-
if (!dataset || !column) continue
|
|
153
|
-
throw new SecurityValidationError(
|
|
154
|
-
`[Sixb] Pipeline '${pipeline.id}' step '${step.id}' reads column '${dataset.id}.${column.name}', which carries ${markingList(column.markings)}. Pipeline steps cannot read marked columns yet.`
|
|
155
|
-
)
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Objects are read through the ontology, so each projected property declares the markings of its
|
|
163
|
-
* column: the ontology stays the reviewed contract of what each reader receives. Values that
|
|
164
|
-
* identify objects or key links are returned wherever the object or link is, and telemetry does
|
|
165
|
-
* not enforce markings yet, so those columns cannot carry markings.
|
|
166
|
-
*/
|
|
167
|
-
function validateProjectionMarkings(
|
|
168
|
-
projections: ProjectionDefinitionCatalog,
|
|
169
|
-
ontology: OntologyDefinitionCatalog,
|
|
170
|
-
datasetsById: ReadonlyMap<string, DatasetDefinition>
|
|
171
|
-
): void {
|
|
172
|
-
for (const projection of projections.listObjects()) {
|
|
173
|
-
const objectType = ontology.getObjectTypeById(projection.objectTypeId)
|
|
174
|
-
if (objectType) validateObjectProjection(projection, objectType, datasetsById)
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
for (const projection of projections.listLinks()) {
|
|
178
|
-
const role = `keys link '${projection.sourceObjectTypeId}.${projection.linkId}'`
|
|
179
|
-
for (const columnName of [projection.sourceField, projection.targetField]) {
|
|
180
|
-
assertUnmarkedColumn(projection, sourceColumn(projection, columnName, datasetsById), role)
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
for (const projection of projections.listTelemetry()) {
|
|
185
|
-
const columnNames = [
|
|
186
|
-
projection.objectIdField,
|
|
187
|
-
projection.atField,
|
|
188
|
-
...Object.values(projection.properties).flatMap((mapping) =>
|
|
189
|
-
mapping.unitField === undefined
|
|
190
|
-
? [mapping.valueField]
|
|
191
|
-
: [mapping.valueField, mapping.unitField]
|
|
192
|
-
),
|
|
193
|
-
]
|
|
194
|
-
for (const columnName of columnNames) {
|
|
195
|
-
const column = sourceColumn(projection, columnName, datasetsById)
|
|
196
|
-
if (!column.markings) continue
|
|
197
|
-
throw new SecurityValidationError(
|
|
198
|
-
`[Sixb] Projection '${projection.id}' reads column '${column.path}', which carries ${markingList(column.markings)}. Telemetry projections cannot read marked columns yet.`
|
|
199
|
-
)
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
function validateObjectProjection(
|
|
205
|
-
projection: ObjectProjectionDefinition,
|
|
206
|
-
objectType: ObjectType,
|
|
207
|
-
datasetsById: ReadonlyMap<string, DatasetDefinition>
|
|
208
|
-
): void {
|
|
209
|
-
const keyRoles = objectProjectionKeyRoles(projection, objectType)
|
|
210
|
-
|
|
211
|
-
for (const [propertyId, columnName] of Object.entries(projection.properties)) {
|
|
212
|
-
const column = sourceColumn(projection, columnName, datasetsById)
|
|
213
|
-
const property = objectType.properties.find((candidate) => candidate.id === propertyId)
|
|
214
|
-
const path = `${objectType.id}.${propertyId}`
|
|
215
|
-
const keyRole = keyRoles.get(propertyId)
|
|
216
|
-
if (keyRole) {
|
|
217
|
-
assertUnmarkedColumn(projection, column, keyRole)
|
|
218
|
-
if (property?.markings) {
|
|
219
|
-
throw new SecurityValidationError(
|
|
220
|
-
`[Sixb] Projection '${projection.id}': property '${path}' ${keyRole} and cannot carry markings.`
|
|
221
|
-
)
|
|
222
|
-
}
|
|
223
|
-
continue
|
|
224
|
-
}
|
|
225
|
-
const missing = missingMarkings(column.markings, property?.markings)
|
|
226
|
-
if (missing.length > 0) {
|
|
227
|
-
throw new SecurityValidationError(
|
|
228
|
-
`[Sixb] Projection '${projection.id}': property '${path}' is projected from column '${column.path}', which carries ${markingList(column.markings)}. Add markings: ${markingList(missing)} to the property.`
|
|
229
|
-
)
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
for (const [linkId, link] of Object.entries(projection.links)) {
|
|
234
|
-
if (link.sourceField === undefined) continue
|
|
235
|
-
assertUnmarkedColumn(
|
|
236
|
-
projection,
|
|
237
|
-
sourceColumn(projection, link.sourceField, datasetsById),
|
|
238
|
-
`keys link '${objectType.id}.${linkId}'`
|
|
239
|
-
)
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
// The timestamp decides whether the source value or an app edit wins, which reveals how they
|
|
243
|
-
// compare.
|
|
244
|
-
const conflictResolution = projection.conflictResolution
|
|
245
|
-
if (conflictResolution?.strategy === "mostRecent") {
|
|
246
|
-
assertUnmarkedColumn(
|
|
247
|
-
projection,
|
|
248
|
-
sourceColumn(projection, conflictResolution.sourceTimestamp, datasetsById),
|
|
249
|
-
"decides which value wins under 'mostRecent'"
|
|
250
|
-
)
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
/** Properties whose value becomes an object id or a link key, with the role they play. */
|
|
255
|
-
function objectProjectionKeyRoles(
|
|
256
|
-
projection: ObjectProjectionDefinition,
|
|
257
|
-
objectType: ObjectType
|
|
258
|
-
): ReadonlyMap<string, string> {
|
|
259
|
-
const roles = new Map<string, string>()
|
|
260
|
-
for (const property of objectType.properties) {
|
|
261
|
-
if (property.primary) roles.set(property.id, `becomes the id of '${objectType.id}'`)
|
|
262
|
-
}
|
|
263
|
-
for (const [linkId, link] of Object.entries(projection.links)) {
|
|
264
|
-
if (link.sourcePropertyId === undefined) continue
|
|
265
|
-
roles.set(link.sourcePropertyId, `keys link '${objectType.id}.${linkId}'`)
|
|
266
|
-
}
|
|
267
|
-
return roles
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
interface SourceColumn {
|
|
271
|
-
readonly path: string
|
|
272
|
-
readonly markings?: readonly string[]
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
function sourceColumn(
|
|
276
|
-
projection: { readonly id: string; readonly datasetId: string },
|
|
277
|
-
columnName: string,
|
|
278
|
-
datasetsById: ReadonlyMap<string, DatasetDefinition>
|
|
279
|
-
): SourceColumn {
|
|
280
|
-
const column = datasetsById
|
|
281
|
-
.get(projection.datasetId)
|
|
282
|
-
?.schema.columns.find((candidate) => candidate.name === columnName)
|
|
283
|
-
// Projection validation runs first and resolves every mapped column.
|
|
284
|
-
if (!column) {
|
|
285
|
-
throw new Error(`[Sixb] Projection '${projection.id}' maps unknown column '${columnName}'.`)
|
|
286
|
-
}
|
|
287
|
-
return { path: `${projection.datasetId}.${columnName}`, markings: column.markings }
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
function assertUnmarkedColumn(
|
|
291
|
-
projection: { readonly id: string },
|
|
292
|
-
column: SourceColumn,
|
|
293
|
-
role: string
|
|
294
|
-
): void {
|
|
295
|
-
if (!column.markings) return
|
|
296
|
-
throw new SecurityValidationError(
|
|
297
|
-
`[Sixb] Projection '${projection.id}': column '${column.path}' ${role} and cannot carry markings.`
|
|
298
|
-
)
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
// ── Helpers ─────────────────────────────────────────────────
|
|
302
|
-
|
|
303
158
|
function missingMarkings(
|
|
304
159
|
required: readonly string[] | undefined,
|
|
305
160
|
declared: readonly string[] | undefined
|
|
@@ -307,7 +162,3 @@ function missingMarkings(
|
|
|
307
162
|
const present = new Set(declared ?? [])
|
|
308
163
|
return (required ?? []).filter((markingId) => !present.has(markingId))
|
|
309
164
|
}
|
|
310
|
-
|
|
311
|
-
function markingList(markings: readonly string[] | undefined): string {
|
|
312
|
-
return `[${(markings ?? []).join(", ")}]`
|
|
313
|
-
}
|
|
@@ -10,7 +10,7 @@ export interface MembershipPolicyScope {
|
|
|
10
10
|
readonly operations: Readonly<Record<MembershipOperation, MembershipOperationScope>>
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
const MEMBERSHIP_OPERATIONS = ["invite", "assignGroups", "suspend"] as const
|
|
13
|
+
const MEMBERSHIP_OPERATIONS = ["invite", "assignGroups", "suspend", "serviceAccounts"] as const
|
|
14
14
|
|
|
15
15
|
export function resolveMembershipPolicyScope(input: {
|
|
16
16
|
readonly membershipPolicies: readonly MembershipPolicyDefinition[]
|
|
@@ -40,6 +40,7 @@ export function resolveMembershipPolicyScope(input: {
|
|
|
40
40
|
invite: freezeOperationScope(operations.invite),
|
|
41
41
|
assignGroups: freezeOperationScope(operations.assignGroups),
|
|
42
42
|
suspend: freezeOperationScope(operations.suspend),
|
|
43
|
+
serviceAccounts: freezeOperationScope(operations.serviceAccounts),
|
|
43
44
|
},
|
|
44
45
|
}
|
|
45
46
|
}
|
|
@@ -83,6 +84,7 @@ function createEmptyOperationScopes(): Record<
|
|
|
83
84
|
invite: { policyIds: [], groupIds: new Set<string>() },
|
|
84
85
|
assignGroups: { policyIds: [], groupIds: new Set<string>() },
|
|
85
86
|
suspend: { policyIds: [], groupIds: new Set<string>() },
|
|
87
|
+
serviceAccounts: { policyIds: [], groupIds: new Set<string>() },
|
|
86
88
|
}
|
|
87
89
|
}
|
|
88
90
|
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import type { DatasetDefinition } from "../datasets/types"
|
|
2
|
+
import type {
|
|
3
|
+
LakeStorageWithSql,
|
|
4
|
+
SqlTransformAnalysis,
|
|
5
|
+
SqlTransformColumnRef,
|
|
6
|
+
} from "../lake-storage/sql-transforms"
|
|
7
|
+
import type { DatasetColumnLineage, DatasetColumnRef, LakeStorage } from "../lake-storage/types"
|
|
8
|
+
import { PipelineError } from "../pipelines/errors"
|
|
9
|
+
import { stepInputColumns, stepReadColumns } from "../pipelines/lineage"
|
|
10
|
+
import type { PipelineStepDefinition } from "../pipelines/types"
|
|
11
|
+
import type { SixbDefinitions } from "../runtime/definitions"
|
|
12
|
+
import { SecurityValidationError } from "./errors"
|
|
13
|
+
import {
|
|
14
|
+
type DatasetMarkings,
|
|
15
|
+
MarkingPropagation,
|
|
16
|
+
type RegisteredStep,
|
|
17
|
+
registeredSteps,
|
|
18
|
+
runStepLineages,
|
|
19
|
+
} from "./marking-propagation"
|
|
20
|
+
import { describeOrigins, validateProjectionMarkings } from "./projection-markings"
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Derive the markings SQL steps give their outputs and check every projection against them.
|
|
24
|
+
*
|
|
25
|
+
* Startup cannot see through SQL, so this preflight completes it before a host serves traffic. It
|
|
26
|
+
* is a diagnostic: each version records the lineage of the SQL that actually ran, and reads and
|
|
27
|
+
* projections enforce markings from that record whether or not this ran.
|
|
28
|
+
*
|
|
29
|
+
* Only steps that read a marked column are analyzed, each step once. Analyzing a step can mark
|
|
30
|
+
* the inputs of others, so steps are analyzed in waves, a few at a time within a wave. A step whose
|
|
31
|
+
* SQL cannot be analyzed, or a lake provider that cannot analyze SQL, is reported with the step
|
|
32
|
+
* and a marked column it reads.
|
|
33
|
+
*/
|
|
34
|
+
export async function checkPipelineMarkings(input: {
|
|
35
|
+
readonly definitions: Pick<SixbDefinitions, "ontology" | "datasets" | "pipelines" | "projections">
|
|
36
|
+
readonly lakeStorage: LakeStorage | LakeStorageWithSql
|
|
37
|
+
}): Promise<void> {
|
|
38
|
+
const { definitions, lakeStorage } = input
|
|
39
|
+
const datasetsById = new Map(definitions.datasets.list().map((dataset) => [dataset.id, dataset]))
|
|
40
|
+
const steps = registeredSteps(definitions.pipelines.list())
|
|
41
|
+
const runLineageOf = runStepLineages(datasetsById)
|
|
42
|
+
const analyzed = new Map<PipelineStepDefinition, DatasetColumnLineage>()
|
|
43
|
+
const lineageOf = (entry: RegisteredStep) =>
|
|
44
|
+
runLineageOf(entry) ?? analyzed.get(entry.step) ?? null
|
|
45
|
+
|
|
46
|
+
const markings = new MarkingPropagation(datasetsById, steps).derive(lineageOf)
|
|
47
|
+
|
|
48
|
+
for (;;) {
|
|
49
|
+
const wave = new Map<PipelineStepDefinition, RegisteredStep>()
|
|
50
|
+
for (const entry of steps) {
|
|
51
|
+
if (entry.step.executor.kind !== "sql" || analyzed.has(entry.step)) continue
|
|
52
|
+
if (stepReadColumns(entry.step).some((ref) => markings.of(ref).size > 0)) {
|
|
53
|
+
if (!wave.has(entry.step)) wave.set(entry.step, entry)
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (wave.size === 0) break
|
|
58
|
+
|
|
59
|
+
await forEachConcurrently([...wave], ANALYSIS_CONCURRENCY, async ([step, entry]) => {
|
|
60
|
+
analyzed.set(step, await analyzeSqlStep(entry, markings, datasetsById, lakeStorage))
|
|
61
|
+
})
|
|
62
|
+
markings.derive(lineageOf)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
validateProjectionMarkings(definitions.projections, definitions.ontology, markings)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** Analyses run at once. A provider may open a database per analysis, so a wave is not unbounded. */
|
|
69
|
+
const ANALYSIS_CONCURRENCY = 8
|
|
70
|
+
|
|
71
|
+
/** Run `task` on each item, `limit` at a time. Stops starting new tasks once one fails. */
|
|
72
|
+
async function forEachConcurrently<TItem>(
|
|
73
|
+
items: readonly TItem[],
|
|
74
|
+
limit: number,
|
|
75
|
+
task: (item: TItem) => Promise<void>
|
|
76
|
+
): Promise<void> {
|
|
77
|
+
const pending = items.values()
|
|
78
|
+
let failed = false
|
|
79
|
+
|
|
80
|
+
const worker = async () => {
|
|
81
|
+
for (const item of pending) {
|
|
82
|
+
if (failed) return
|
|
83
|
+
|
|
84
|
+
try {
|
|
85
|
+
await task(item)
|
|
86
|
+
} catch (error) {
|
|
87
|
+
failed = true
|
|
88
|
+
throw error
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
await Promise.all(Array.from({ length: Math.min(limit, items.length) }, worker))
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
async function analyzeSqlStep(
|
|
97
|
+
entry: RegisteredStep,
|
|
98
|
+
markings: DatasetMarkings,
|
|
99
|
+
datasetsById: ReadonlyMap<string, DatasetDefinition>,
|
|
100
|
+
lakeStorage: LakeStorage | LakeStorageWithSql
|
|
101
|
+
): Promise<DatasetColumnLineage> {
|
|
102
|
+
const { step } = entry
|
|
103
|
+
const subject = `[Sixb] Pipeline '${entry.pipelineId}' step '${step.id}'`
|
|
104
|
+
|
|
105
|
+
if (step.executor.kind !== "sql") throw new PipelineError(`${subject} is not a SQL step.`)
|
|
106
|
+
|
|
107
|
+
const sql = "sql" in lakeStorage ? lakeStorage.sql : undefined
|
|
108
|
+
if (!sql?.analyze) {
|
|
109
|
+
throw new SecurityValidationError(
|
|
110
|
+
`${subject} reads ${describeMarkedRead(step, markings)}, but the lake provider cannot analyze SQL to derive the markings of its output. Use a lake provider that analyzes SQL, or pick only unmarked columns.`
|
|
111
|
+
)
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
const inputs = Object.entries(step.inputs)
|
|
115
|
+
let analysis: SqlTransformAnalysis
|
|
116
|
+
try {
|
|
117
|
+
analysis = await sql.analyze({
|
|
118
|
+
sql: step.executor.sql,
|
|
119
|
+
sources: Object.fromEntries(
|
|
120
|
+
inputs.map(([name, dataset]) => [
|
|
121
|
+
name,
|
|
122
|
+
{
|
|
123
|
+
dataset: registeredDataset(datasetsById, dataset.id, subject),
|
|
124
|
+
columns: stepInputColumns(dataset),
|
|
125
|
+
},
|
|
126
|
+
])
|
|
127
|
+
),
|
|
128
|
+
})
|
|
129
|
+
} catch (error) {
|
|
130
|
+
const reason = error instanceof Error ? error.message : String(error)
|
|
131
|
+
throw new PipelineError(`${subject} could not be analyzed: ${reason}`, { cause: error })
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (!analysis.supported) {
|
|
135
|
+
throw new SecurityValidationError(
|
|
136
|
+
`${subject} reads ${describeMarkedRead(step, markings)}, but its SQL cannot be analyzed: ${analysis.reason}. Rewrite that part of the query, or pick only unmarked columns.`
|
|
137
|
+
)
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const datasetIdBySource = new Map(inputs.map(([name, dataset]) => [name, dataset.id]))
|
|
141
|
+
const toRef = (ref: SqlTransformColumnRef): DatasetColumnRef => {
|
|
142
|
+
const datasetId = datasetIdBySource.get(ref.source)
|
|
143
|
+
if (datasetId === undefined) {
|
|
144
|
+
throw new PipelineError(`${subject} analysis references unknown source '${ref.source}'.`)
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return { datasetId, column: ref.column }
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return {
|
|
151
|
+
rows: analysis.lineage.rows.map(toRef),
|
|
152
|
+
columns: Object.fromEntries(
|
|
153
|
+
Object.entries(analysis.lineage.columns).map(([column, refs]) => [column, refs.map(toRef)])
|
|
154
|
+
),
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/** A marked column the step reads, for messages. */
|
|
159
|
+
function describeMarkedRead(step: PipelineStepDefinition, markings: DatasetMarkings): string {
|
|
160
|
+
const ref = stepReadColumns(step).find((candidate) => markings.of(candidate).size > 0)
|
|
161
|
+
if (!ref) return "no marked column"
|
|
162
|
+
|
|
163
|
+
const path = `${ref.datasetId}.${ref.column}`
|
|
164
|
+
return `column '${path}', which carries ${describeOrigins(markings.of(ref), path)}`
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function registeredDataset(
|
|
168
|
+
datasetsById: ReadonlyMap<string, DatasetDefinition>,
|
|
169
|
+
datasetId: string,
|
|
170
|
+
subject: string
|
|
171
|
+
): DatasetDefinition {
|
|
172
|
+
const dataset = datasetsById.get(datasetId)
|
|
173
|
+
if (!dataset) throw new PipelineError(`${subject} reads unregistered dataset '${datasetId}'.`)
|
|
174
|
+
return dataset
|
|
175
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ProjectReference } from "./types"
|
|
2
|
+
|
|
3
|
+
/** Project-wide surfaces used in security grants such as `can.observe(project.logs)`. */
|
|
4
|
+
export const project: ProjectReference = Object.freeze({
|
|
5
|
+
kind: "project",
|
|
6
|
+
logs: Object.freeze({ kind: "logs" }),
|
|
7
|
+
activity: Object.freeze({ kind: "activity" }),
|
|
8
|
+
})
|