@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
|
@@ -1,209 +1,228 @@
|
|
|
1
1
|
import { AuthorizationError } from "../authorization/errors"
|
|
2
|
-
import type { StoredDomainEvent } from "../events/types"
|
|
3
2
|
import type { OntologyDefinitionCatalog } from "../ontology/registry"
|
|
3
|
+
import {
|
|
4
|
+
type AppliedMarkingsSnapshot,
|
|
5
|
+
type AppliedSeal,
|
|
6
|
+
appliedLinkKey,
|
|
7
|
+
NO_APPLIED_MARKINGS,
|
|
8
|
+
} from "../security/applied-markings-snapshot"
|
|
4
9
|
import { missingClearanceRedactions } from "../security/redactions"
|
|
5
|
-
import type {
|
|
6
|
-
import type {
|
|
7
|
-
ObjectQueryAdmissionState,
|
|
8
|
-
ObjectQueryPropertyUse,
|
|
9
|
-
ObjectQuerySemanticAdmission,
|
|
10
|
-
} from "./query/validate"
|
|
10
|
+
import type { Redactions } from "../security/types"
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* The marked properties one reader cannot read, resolved once from its clearances.
|
|
14
14
|
*
|
|
15
15
|
* A property is readable when the reader clears every one of its markings. Unreadable properties
|
|
16
16
|
* are omitted from rows and cannot be used to select, order, or aggregate objects.
|
|
17
|
+
*
|
|
18
|
+
* Markings a projection's applied dataset version still carries extend this: its properties keep
|
|
19
|
+
* them, and an object type or link whose key column carries markings the reader lacks is
|
|
20
|
+
* unreadable, like a type it has no view grant for.
|
|
17
21
|
*/
|
|
18
22
|
export interface PropertyClearance {
|
|
19
|
-
/**
|
|
20
|
-
|
|
23
|
+
/** What the reader cannot read on this object type; `undefined` when it reads every property. */
|
|
24
|
+
hiddenProperties(objectTypeId: string): HiddenProperties | undefined
|
|
21
25
|
/** First marking on the property that the reader is not cleared for. */
|
|
22
26
|
missingMarking(objectTypeId: string, propertyId: string): string | undefined
|
|
27
|
+
/** Why the reader cannot read this object type at all; `undefined` when it can. */
|
|
28
|
+
unreadableType(objectTypeId: string): Unreadable | undefined
|
|
29
|
+
/** Why the reader cannot read this link, keyed by its source type; `undefined` when it can. */
|
|
30
|
+
unreadableLink(objectTypeId: string, linkId: string): Unreadable | undefined
|
|
31
|
+
/** Every object type and link the reader cannot read, for link queries that name none. */
|
|
32
|
+
unreadable(): UnreadableTargets
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** A marking the reader lacks on what makes an object type or link unreadable, and why. */
|
|
36
|
+
export interface Unreadable {
|
|
37
|
+
readonly marking: string
|
|
38
|
+
readonly message: string
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface UnreadableTargets {
|
|
42
|
+
readonly types: ReadonlyMap<string, Unreadable>
|
|
43
|
+
readonly links: readonly (Unreadable & {
|
|
44
|
+
readonly objectTypeId: string
|
|
45
|
+
readonly linkId: string
|
|
46
|
+
readonly targetObjectTypeId: string
|
|
47
|
+
})[]
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** The error a read of an unreadable object type or link fails with: a 403. */
|
|
51
|
+
export function unreadableError(unreadable: Unreadable): AuthorizationError {
|
|
52
|
+
return new AuthorizationError(`clearance:marking:${unreadable.marking}`, unreadable.message)
|
|
23
53
|
}
|
|
24
54
|
|
|
25
|
-
|
|
55
|
+
/**
|
|
56
|
+
* The properties of one object type a clearance set hides. It depends only on the type and the
|
|
57
|
+
* clearances, so it is computed once and shared by every row and event redacted with it.
|
|
58
|
+
*/
|
|
59
|
+
export interface HiddenProperties {
|
|
60
|
+
readonly ids: ReadonlySet<string>
|
|
61
|
+
/**
|
|
62
|
+
* The `redactions` record of a redacted row or event. It lists every hidden property, whether or
|
|
63
|
+
* not a row holds a value: listing only present values would reveal which ones are empty.
|
|
64
|
+
*
|
|
65
|
+
* Deeply frozen, because every redacted row and event shares it.
|
|
66
|
+
*/
|
|
67
|
+
readonly redactions: Redactions
|
|
68
|
+
}
|
|
26
69
|
|
|
27
70
|
// Readers are built per execution, but few distinct clearance sets exist per ontology.
|
|
28
71
|
const clearancesByOntology = new WeakMap<
|
|
29
72
|
OntologyDefinitionCatalog,
|
|
30
73
|
Map<string, PropertyClearance | undefined>
|
|
31
74
|
>()
|
|
75
|
+
// Applied markings change rarely, and a snapshot is replaced only when its content changes.
|
|
76
|
+
const appliedClearancesByOntology = new WeakMap<
|
|
77
|
+
OntologyDefinitionCatalog,
|
|
78
|
+
WeakMap<AppliedMarkingsSnapshot, Map<string, PropertyClearance | undefined>>
|
|
79
|
+
>()
|
|
80
|
+
|
|
81
|
+
const NO_UNREADABLE_TARGETS: UnreadableTargets = Object.freeze({
|
|
82
|
+
types: new Map(),
|
|
83
|
+
links: Object.freeze([]),
|
|
84
|
+
})
|
|
32
85
|
|
|
33
86
|
/**
|
|
34
87
|
* Resolve what a reader with these clearances cannot read. Returns `undefined` when it can read
|
|
35
88
|
* every property, so callers skip redaction entirely.
|
|
89
|
+
*
|
|
90
|
+
* A reader cleared for every marking the applied versions add receives the clearance of the code
|
|
91
|
+
* alone, the same object whatever the snapshot.
|
|
36
92
|
*/
|
|
37
93
|
export function resolvePropertyClearance(
|
|
38
94
|
ontology: OntologyDefinitionCatalog,
|
|
39
|
-
clearances: ReadonlySet<string
|
|
95
|
+
clearances: ReadonlySet<string>,
|
|
96
|
+
applied: AppliedMarkingsSnapshot = NO_APPLIED_MARKINGS
|
|
40
97
|
): PropertyClearance | undefined {
|
|
41
|
-
|
|
98
|
+
const key = JSON.stringify([...clearances].sort())
|
|
99
|
+
|
|
100
|
+
if (applied === NO_APPLIED_MARKINGS || clearsEvery(clearances, applied.markings)) {
|
|
101
|
+
let resolved = clearancesByOntology.get(ontology)
|
|
102
|
+
if (!resolved) {
|
|
103
|
+
resolved = new Map()
|
|
104
|
+
clearancesByOntology.set(ontology, resolved)
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (!resolved.has(key)) resolved.set(key, createPropertyClearance(ontology, clearances))
|
|
108
|
+
return resolved.get(key)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
let bySnapshot = appliedClearancesByOntology.get(ontology)
|
|
112
|
+
if (!bySnapshot) {
|
|
113
|
+
bySnapshot = new WeakMap()
|
|
114
|
+
appliedClearancesByOntology.set(ontology, bySnapshot)
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
let resolved = bySnapshot.get(applied)
|
|
42
118
|
if (!resolved) {
|
|
43
119
|
resolved = new Map()
|
|
44
|
-
|
|
120
|
+
bySnapshot.set(applied, resolved)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (!resolved.has(key)) {
|
|
124
|
+
resolved.set(key, createPropertyClearance(ontology, clearances, applied))
|
|
45
125
|
}
|
|
46
|
-
const key = JSON.stringify([...clearances].sort())
|
|
47
|
-
if (!resolved.has(key)) resolved.set(key, createPropertyClearance(ontology, clearances))
|
|
48
126
|
return resolved.get(key)
|
|
49
127
|
}
|
|
50
128
|
|
|
129
|
+
function clearsEvery(clearances: ReadonlySet<string>, markings: ReadonlySet<string>): boolean {
|
|
130
|
+
for (const markingId of markings) if (!clearances.has(markingId)) return false
|
|
131
|
+
return true
|
|
132
|
+
}
|
|
133
|
+
|
|
51
134
|
function createPropertyClearance(
|
|
52
135
|
ontology: OntologyDefinitionCatalog,
|
|
53
|
-
clearances: ReadonlySet<string
|
|
136
|
+
clearances: ReadonlySet<string>,
|
|
137
|
+
applied: AppliedMarkingsSnapshot = NO_APPLIED_MARKINGS
|
|
54
138
|
): PropertyClearance | undefined {
|
|
55
139
|
const missingByType = new Map<string, ReadonlyMap<string, string>>()
|
|
140
|
+
const hiddenByType = new Map<string, HiddenProperties>()
|
|
56
141
|
for (const objectType of ontology.listObjectTypes()) {
|
|
142
|
+
const surplus = applied.properties.get(objectType.id)
|
|
57
143
|
const missing = new Map<string, string>()
|
|
58
144
|
for (const property of objectType.properties) {
|
|
59
|
-
const marking =
|
|
145
|
+
const marking =
|
|
146
|
+
property.markings?.find((markingId) => !clearances.has(markingId)) ??
|
|
147
|
+
firstMissing(surplus?.get(property.id), clearances)
|
|
60
148
|
if (marking !== undefined) missing.set(property.id, marking)
|
|
61
149
|
}
|
|
62
|
-
if (missing.size > 0) missingByType.set(objectType.id, missing)
|
|
63
|
-
}
|
|
64
|
-
if (missingByType.size === 0) return undefined
|
|
65
150
|
|
|
66
|
-
|
|
67
|
-
[...missingByType].map(([objectTypeId, missing]) => [objectTypeId, new Set(missing.keys())])
|
|
68
|
-
)
|
|
69
|
-
return Object.freeze({
|
|
70
|
-
hiddenPropertyIds: (objectTypeId: string) => hiddenByType.get(objectTypeId) ?? NO_PROPERTIES,
|
|
71
|
-
missingMarking: (objectTypeId: string, propertyId: string) =>
|
|
72
|
-
missingByType.get(objectTypeId)?.get(propertyId),
|
|
73
|
-
})
|
|
74
|
-
}
|
|
151
|
+
if (missing.size === 0) continue
|
|
75
152
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
row: TRow,
|
|
84
|
-
clearance: PropertyClearance
|
|
85
|
-
): TRow {
|
|
86
|
-
const hidden = clearance.hiddenPropertyIds(row.objectTypeId)
|
|
87
|
-
const links = row.links
|
|
88
|
-
if (hidden.size === 0 && links === undefined) return row
|
|
89
|
-
|
|
90
|
-
const redacted: TRow = { ...row }
|
|
91
|
-
if (hidden.size > 0) {
|
|
92
|
-
redacted.properties = withoutKeys(row.properties, hidden)
|
|
93
|
-
redacted.redactions = missingClearanceRedactions(hidden)
|
|
94
|
-
}
|
|
95
|
-
if (links !== undefined) {
|
|
96
|
-
redacted.links = Object.fromEntries(
|
|
97
|
-
Object.entries(links).map(([linkId, value]) => [linkId, redactLinkValue(value, clearance)])
|
|
153
|
+
missingByType.set(objectType.id, missing)
|
|
154
|
+
hiddenByType.set(
|
|
155
|
+
objectType.id,
|
|
156
|
+
Object.freeze({
|
|
157
|
+
ids: new Set(missing.keys()),
|
|
158
|
+
redactions: missingClearanceRedactions(missing.keys()),
|
|
159
|
+
})
|
|
98
160
|
)
|
|
99
161
|
}
|
|
100
|
-
return redacted
|
|
101
|
-
}
|
|
102
162
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
)
|
|
107
|
-
if (value === null) return null
|
|
108
|
-
if (Array.isArray(value)) return value.map((row) => redactObjectRow(row, clearance))
|
|
109
|
-
// Array.isArray does not narrow a readonly[] away, so assert the single-object case.
|
|
110
|
-
return redactObjectRow(value as ExpandedObjectRow, clearance)
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Omit unreadable properties from an object event, under the same contract as rows. Other events
|
|
115
|
-
* carry no markable value: link properties and telemetry properties cannot be marked.
|
|
116
|
-
*/
|
|
117
|
-
export function redactDomainEvent(
|
|
118
|
-
event: StoredDomainEvent,
|
|
119
|
-
clearance: PropertyClearance
|
|
120
|
-
): StoredDomainEvent {
|
|
121
|
-
if (event.topic !== "objects") return event
|
|
122
|
-
const hidden = clearance.hiddenPropertyIds(event.payload.objectTypeId)
|
|
123
|
-
if (hidden.size === 0) return event
|
|
124
|
-
|
|
125
|
-
const payload = {
|
|
126
|
-
...event.payload,
|
|
127
|
-
propertyChanges: withoutKeys(event.payload.propertyChanges, hidden),
|
|
128
|
-
redactions: missingClearanceRedactions(hidden),
|
|
163
|
+
const types = new Map<string, Unreadable>()
|
|
164
|
+
for (const [objectTypeId, seals] of applied.types) {
|
|
165
|
+
const unreadable = unreadableBy(seals, clearances, `'${objectTypeId}'`)
|
|
166
|
+
if (unreadable) types.set(objectTypeId, unreadable)
|
|
129
167
|
}
|
|
130
|
-
if (event.type === "object.deleted") return { ...event, payload }
|
|
131
|
-
return {
|
|
132
|
-
...event,
|
|
133
|
-
payload: { ...payload, properties: withoutKeys(event.payload.properties, hidden) },
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
168
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
169
|
+
const links: UnreadableTargets["links"][number][] = []
|
|
170
|
+
const linksByKey = new Map<string, Unreadable>()
|
|
171
|
+
for (const [key, link] of applied.links) {
|
|
172
|
+
const name = `link '${link.objectTypeId}.${link.linkId}'`
|
|
173
|
+
const unreadable = unreadableBy(link.seals, clearances, name)
|
|
174
|
+
if (!unreadable) continue
|
|
175
|
+
|
|
176
|
+
linksByKey.set(key, unreadable)
|
|
177
|
+
links.push(
|
|
178
|
+
Object.freeze({
|
|
179
|
+
...unreadable,
|
|
180
|
+
objectTypeId: link.objectTypeId,
|
|
181
|
+
linkId: link.linkId,
|
|
182
|
+
targetObjectTypeId: link.targetObjectTypeId,
|
|
183
|
+
})
|
|
184
|
+
)
|
|
144
185
|
}
|
|
145
|
-
|
|
186
|
+
|
|
187
|
+
if (hiddenByType.size === 0 && types.size === 0 && links.length === 0) return undefined
|
|
188
|
+
|
|
189
|
+
const unreadable: UnreadableTargets =
|
|
190
|
+
types.size === 0 && links.length === 0
|
|
191
|
+
? NO_UNREADABLE_TARGETS
|
|
192
|
+
: Object.freeze({ types, links: Object.freeze(links) })
|
|
193
|
+
return Object.freeze({
|
|
194
|
+
hiddenProperties: (objectTypeId: string) => hiddenByType.get(objectTypeId),
|
|
195
|
+
missingMarking: (objectTypeId: string, propertyId: string) =>
|
|
196
|
+
missingByType.get(objectTypeId)?.get(propertyId),
|
|
197
|
+
unreadableType: (objectTypeId: string) => types.get(objectTypeId),
|
|
198
|
+
unreadableLink: (objectTypeId: string, linkId: string) =>
|
|
199
|
+
linksByKey.get(appliedLinkKey(objectTypeId, linkId)),
|
|
200
|
+
unreadable: () => unreadable,
|
|
201
|
+
})
|
|
146
202
|
}
|
|
147
203
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
clearance: PropertyClearance
|
|
156
|
-
): ObjectQuerySemanticAdmission {
|
|
157
|
-
// Each state stands for the object types a query has reached so far. A property without an
|
|
158
|
-
// explicit type is checked against all of them.
|
|
159
|
-
const reachedTypes = new WeakMap<ObjectQueryAdmissionState, readonly string[]>()
|
|
160
|
-
const state = (objectTypeIds: readonly string[]): ObjectQueryAdmissionState => {
|
|
161
|
-
const created = Object.freeze({})
|
|
162
|
-
reachedTypes.set(created, Object.freeze([...objectTypeIds]))
|
|
163
|
-
return created
|
|
164
|
-
}
|
|
165
|
-
const reached = (input: ObjectQueryAdmissionState): readonly string[] => {
|
|
166
|
-
const objectTypeIds = reachedTypes.get(input)
|
|
167
|
-
if (!objectTypeIds) {
|
|
168
|
-
throw new Error("[Sixb] Clearance query admission received a state it did not create.")
|
|
169
|
-
}
|
|
170
|
-
return objectTypeIds
|
|
171
|
-
}
|
|
172
|
-
const empty = state([])
|
|
173
|
-
|
|
174
|
-
const admission: ObjectQuerySemanticAdmission = {
|
|
175
|
-
empty: () => empty,
|
|
176
|
-
source: (input) => ({ state: state(input.result.objectTypeIds) }),
|
|
177
|
-
edge: (input) => ({ state: state(input.result.objectTypeIds) }),
|
|
178
|
-
// A difference only returns objects of its first input.
|
|
179
|
-
set: (input) =>
|
|
180
|
-
input.op === "subtract"
|
|
181
|
-
? (input.states[0] ?? empty)
|
|
182
|
-
: state([...new Set(input.states.flatMap(reached))]),
|
|
183
|
-
property: (input) => {
|
|
184
|
-
if (input.use === "project") return undefined
|
|
185
|
-
const objectTypeIds =
|
|
186
|
-
input.objectTypeId === undefined ? reached(input.state) : [input.objectTypeId]
|
|
187
|
-
for (const objectTypeId of objectTypeIds) {
|
|
188
|
-
const marking = clearance.missingMarking(objectTypeId, input.propertyId)
|
|
189
|
-
if (marking === undefined) continue
|
|
190
|
-
return new AuthorizationError(
|
|
191
|
-
`clearance:marking:${marking}`,
|
|
192
|
-
`[Sixb] Cannot ${PROPERTY_USE_VERBS[input.use]} '${objectTypeId}.${input.propertyId}' at '${input.path}': it requires clearance for marking '${marking}'.`
|
|
193
|
-
)
|
|
194
|
-
}
|
|
195
|
-
return undefined
|
|
196
|
-
},
|
|
197
|
-
}
|
|
198
|
-
return Object.freeze(admission)
|
|
204
|
+
function firstMissing(
|
|
205
|
+
markings: ReadonlySet<string> | undefined,
|
|
206
|
+
clearances: ReadonlySet<string>
|
|
207
|
+
): string | undefined {
|
|
208
|
+
if (!markings) return undefined
|
|
209
|
+
for (const markingId of [...markings].sort()) if (!clearances.has(markingId)) return markingId
|
|
210
|
+
return undefined
|
|
199
211
|
}
|
|
200
212
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
213
|
+
/** The first seal the reader lacks a marking for, as the message a denied read returns. */
|
|
214
|
+
function unreadableBy(
|
|
215
|
+
seals: readonly AppliedSeal[],
|
|
216
|
+
clearances: ReadonlySet<string>,
|
|
217
|
+
name: string
|
|
218
|
+
): Unreadable | undefined {
|
|
219
|
+
for (const seal of seals) {
|
|
220
|
+
const marking = firstMissing(seal.markings, clearances)
|
|
221
|
+
if (marking === undefined) continue
|
|
222
|
+
return Object.freeze({
|
|
223
|
+
marking,
|
|
224
|
+
message: `[Sixb] Cannot read ${name} until projection '${seal.projectionId}' applies a compliant version: ${seal.reason} carries marking '${marking}'.`,
|
|
225
|
+
})
|
|
226
|
+
}
|
|
227
|
+
return undefined
|
|
209
228
|
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { AuthorizationError } from "../../authorization/errors"
|
|
2
|
+
import { type PropertyClearance, type Unreadable, unreadableError } from "../property-clearance"
|
|
3
|
+
import type {
|
|
4
|
+
ObjectQueryAdmissionState,
|
|
5
|
+
ObjectQueryPropertyUse,
|
|
6
|
+
ObjectQuerySemanticAdmission,
|
|
7
|
+
} from "./validate"
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Reject every query use of a property the reader cannot read, except projection.
|
|
11
|
+
*
|
|
12
|
+
* Filtering, ordering, searching, or faceting by a hidden value would reveal it through which
|
|
13
|
+
* objects match and in what order. Projection only shapes the output, which is redacted anyway.
|
|
14
|
+
*/
|
|
15
|
+
export function createClearanceQueryAdmission(
|
|
16
|
+
clearance: PropertyClearance
|
|
17
|
+
): ObjectQuerySemanticAdmission {
|
|
18
|
+
// Each state stands for the object types a query has reached so far. A property without an
|
|
19
|
+
// explicit type is checked against all of them.
|
|
20
|
+
const reachedTypes = new WeakMap<ObjectQueryAdmissionState, readonly string[]>()
|
|
21
|
+
const state = (objectTypeIds: readonly string[]): ObjectQueryAdmissionState => {
|
|
22
|
+
const created = Object.freeze({})
|
|
23
|
+
reachedTypes.set(created, Object.freeze([...objectTypeIds]))
|
|
24
|
+
return created
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const reached = (input: ObjectQueryAdmissionState): readonly string[] => {
|
|
28
|
+
const objectTypeIds = reachedTypes.get(input)
|
|
29
|
+
if (!objectTypeIds) {
|
|
30
|
+
throw new Error("[Sixb] Clearance query admission received a state it did not create.")
|
|
31
|
+
}
|
|
32
|
+
return objectTypeIds
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const empty = state([])
|
|
36
|
+
|
|
37
|
+
const admission: ObjectQuerySemanticAdmission = {
|
|
38
|
+
empty: () => empty,
|
|
39
|
+
// An object type or link the reader cannot read is denied like one it has no view grant for.
|
|
40
|
+
source: (input) => ({
|
|
41
|
+
state: state(input.result.objectTypeIds),
|
|
42
|
+
...denied(unreadableTypeAmong(clearance, input.result.objectTypeIds)),
|
|
43
|
+
}),
|
|
44
|
+
edge: (input) => {
|
|
45
|
+
// A link is keyed by its source type: the reached types going out, the result coming in.
|
|
46
|
+
const sourceTypeIds =
|
|
47
|
+
input.direction === "outgoing"
|
|
48
|
+
? reached(input.state)
|
|
49
|
+
: [
|
|
50
|
+
...input.result.objectTypeIds,
|
|
51
|
+
...(input.sourceObjectTypeId ? [input.sourceObjectTypeId] : []),
|
|
52
|
+
]
|
|
53
|
+
|
|
54
|
+
const link = sourceTypeIds
|
|
55
|
+
.map((objectTypeId) => clearance.unreadableLink(objectTypeId, input.linkId))
|
|
56
|
+
.find((unreadable) => unreadable !== undefined)
|
|
57
|
+
|
|
58
|
+
return {
|
|
59
|
+
state: state(input.result.objectTypeIds),
|
|
60
|
+
...denied(link ?? unreadableTypeAmong(clearance, input.result.objectTypeIds)),
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
// A difference only returns objects of its first input.
|
|
64
|
+
set: (input) =>
|
|
65
|
+
input.op === "subtract"
|
|
66
|
+
? (input.states[0] ?? empty)
|
|
67
|
+
: state([...new Set(input.states.flatMap(reached))]),
|
|
68
|
+
property: (input) => {
|
|
69
|
+
if (input.use === "project") return undefined
|
|
70
|
+
|
|
71
|
+
const objectTypeIds =
|
|
72
|
+
input.objectTypeId === undefined ? reached(input.state) : [input.objectTypeId]
|
|
73
|
+
for (const objectTypeId of objectTypeIds) {
|
|
74
|
+
const marking = clearance.missingMarking(objectTypeId, input.propertyId)
|
|
75
|
+
if (marking === undefined) continue
|
|
76
|
+
return new AuthorizationError(
|
|
77
|
+
`clearance:marking:${marking}`,
|
|
78
|
+
`[Sixb] Cannot ${PROPERTY_USE_VERBS[input.use]} '${objectTypeId}.${input.propertyId}' at '${input.path}': it requires clearance for marking '${marking}'.`
|
|
79
|
+
)
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return undefined
|
|
83
|
+
},
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return Object.freeze(admission)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function unreadableTypeAmong(
|
|
90
|
+
clearance: PropertyClearance,
|
|
91
|
+
objectTypeIds: readonly string[]
|
|
92
|
+
): Unreadable | undefined {
|
|
93
|
+
for (const objectTypeId of objectTypeIds) {
|
|
94
|
+
const unreadable = clearance.unreadableType(objectTypeId)
|
|
95
|
+
if (unreadable) return unreadable
|
|
96
|
+
}
|
|
97
|
+
return undefined
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function denied(unreadable: Unreadable | undefined): { readonly denial?: Error } {
|
|
101
|
+
return unreadable ? { denial: unreadableError(unreadable) } : {}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const PROPERTY_USE_VERBS: Readonly<Record<ObjectQueryPropertyUse, string>> = {
|
|
105
|
+
filter: "filter by",
|
|
106
|
+
text: "search",
|
|
107
|
+
vector: "run a vector search over",
|
|
108
|
+
sort: "sort by",
|
|
109
|
+
project: "project",
|
|
110
|
+
"expand.orderBy": "order expanded objects by",
|
|
111
|
+
facet: "facet by",
|
|
112
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { OntologyRegistry } from "../../ontology"
|
|
2
|
+
import { type PropertyClearance, unreadableError } from "../property-clearance"
|
|
3
|
+
import type { ObjectQuery } from "./ir"
|
|
4
|
+
import { type ExecuteObjectQueryLinksInput, preflightObjectQueryLinks } from "./links"
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Refuse a link query that could return a link, or an endpoint, the reader cannot read.
|
|
8
|
+
*
|
|
9
|
+
* A link query returns every link incident to the objects it selects, a page at a time. The page
|
|
10
|
+
* cannot be filtered afterward without breaking its cursor, so what the reader cannot read is
|
|
11
|
+
* refused before the page is read, from the definitions: a link that is unreadable, or that leads
|
|
12
|
+
* to an unreadable object type, whether or not such a link exists.
|
|
13
|
+
*/
|
|
14
|
+
export function assertLinkQueryReadable(input: {
|
|
15
|
+
readonly ontology: OntologyRegistry
|
|
16
|
+
readonly clearance: PropertyClearance
|
|
17
|
+
readonly query: ObjectQuery
|
|
18
|
+
readonly request: Omit<ExecuteObjectQueryLinksInput, "query">
|
|
19
|
+
/** Whether grants alone let the reader view the type: storage already leaves out the others. */
|
|
20
|
+
readonly viewableByGrants: (objectTypeId: string) => boolean
|
|
21
|
+
}): void {
|
|
22
|
+
const { ontology, clearance } = input
|
|
23
|
+
const { types, links } = clearance.unreadable()
|
|
24
|
+
if (types.size === 0 && links.length === 0) return
|
|
25
|
+
|
|
26
|
+
const preflight = preflightObjectQueryLinks(
|
|
27
|
+
{ ...input.request, query: input.query },
|
|
28
|
+
{ ontology }
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
const selected = preflight.validated.result.objectTypeIds
|
|
32
|
+
const outgoing = preflight.direction !== "incoming"
|
|
33
|
+
const incoming = preflight.direction !== "outgoing"
|
|
34
|
+
|
|
35
|
+
const named = (linkId: string) => preflight.linkId === undefined || preflight.linkId === linkId
|
|
36
|
+
const targets = (expected: string | readonly string[], objectTypeId: string) =>
|
|
37
|
+
(typeof expected === "string" ? [expected] : expected).some((target) =>
|
|
38
|
+
ontology.isValidLinkTarget(target, objectTypeId)
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
for (const link of links) {
|
|
42
|
+
if (!named(link.linkId)) continue
|
|
43
|
+
if (
|
|
44
|
+
(outgoing && selected.includes(link.objectTypeId)) ||
|
|
45
|
+
(incoming && selected.some((id) => targets(link.targetObjectTypeId, id)))
|
|
46
|
+
) {
|
|
47
|
+
throw unreadableError(link)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const sealed = [...types].filter(([id]) => input.viewableByGrants(id))
|
|
52
|
+
if (sealed.length === 0) return
|
|
53
|
+
|
|
54
|
+
for (const objectType of ontology.listObjectTypes()) {
|
|
55
|
+
for (const link of objectType.links) {
|
|
56
|
+
if (!named(link.id)) continue
|
|
57
|
+
if (outgoing && selected.includes(objectType.id)) {
|
|
58
|
+
const other = sealed.find(([id]) => targets(link.targetObjectTypeId, id))
|
|
59
|
+
if (other) throw unreadableError(other[1])
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const source = types.get(objectType.id)
|
|
63
|
+
if (
|
|
64
|
+
incoming &&
|
|
65
|
+
source &&
|
|
66
|
+
input.viewableByGrants(objectType.id) &&
|
|
67
|
+
selected.some((id) => targets(link.targetObjectTypeId, id))
|
|
68
|
+
) {
|
|
69
|
+
throw unreadableError(source)
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -5,6 +5,10 @@ A named profile identifies a derived representation, separate from object proper
|
|
|
5
5
|
Indexing sends embedding purpose `document`; search sends `query`. The execution wrapper preserves
|
|
6
6
|
that role through model resolution, admission and accounting. Symmetric providers may ignore it.
|
|
7
7
|
|
|
8
|
+
Each caller sets its own deadline; the execution wrapper adds none. A search has someone waiting
|
|
9
|
+
and gives up after 30 seconds. Indexing, automatic or explicit, waits five minutes: the provider
|
|
10
|
+
bills a call whose response is abandoned, and an abandoned automatic call is a terminal failure.
|
|
11
|
+
|
|
8
12
|
Vector candidates may come from filters, traversals, explicit refs or set operations. Canonical
|
|
9
13
|
validation requires one concrete result type and admits every intermediate type, edge and source
|
|
10
14
|
property. Model lookup uses that resolved result type, not the query's initial type. SQL ranks the
|
|
@@ -6,7 +6,12 @@ import type { PreparedObjectVector } from "../../materialization/vectors"
|
|
|
6
6
|
import { sameEmbeddingModel } from "../../models/embedding-model"
|
|
7
7
|
import { getOntologyMutationRuntime } from "../../runtime/ontology-mutations"
|
|
8
8
|
import type { ExecutionObjectContext } from "../context"
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
INDEXING_EMBEDDING_TIMEOUT_MS,
|
|
11
|
+
normalizeVector,
|
|
12
|
+
vectorConfiguration,
|
|
13
|
+
vectorSources,
|
|
14
|
+
} from "./profile"
|
|
10
15
|
import type { ObjectVectorHandle } from "./types"
|
|
11
16
|
|
|
12
17
|
export function createObjectVectorHandle(
|
|
@@ -65,7 +70,11 @@ export function createObjectVectorHandle(
|
|
|
65
70
|
}
|
|
66
71
|
|
|
67
72
|
// Network work never holds a storage transaction or retries an obsolete computation.
|
|
68
|
-
const result = await model.embed({
|
|
73
|
+
const result = await model.embed({
|
|
74
|
+
texts: [input.text],
|
|
75
|
+
purpose: "document",
|
|
76
|
+
signal: AbortSignal.timeout(INDEXING_EMBEDDING_TIMEOUT_MS),
|
|
77
|
+
})
|
|
69
78
|
if (!Array.isArray(result?.vectors) || result.vectors.length !== 1) {
|
|
70
79
|
throw new MaterializationValidationError(
|
|
71
80
|
"Embedding model must return exactly one vector for one input text."
|
|
@@ -11,7 +11,7 @@ import { ModelExecutionSession } from "../../models/execution/session"
|
|
|
11
11
|
import type { SixbHostContext } from "../../runtime/types"
|
|
12
12
|
import type { VectorIndexingWork } from "../../storage/ontology/vector-indexing"
|
|
13
13
|
import { fail, retryAt, VectorIndexingDeferred } from "./indexing-shared"
|
|
14
|
-
import { normalizeVector } from "./profile"
|
|
14
|
+
import { INDEXING_EMBEDDING_TIMEOUT_MS, normalizeVector } from "./profile"
|
|
15
15
|
|
|
16
16
|
export interface PreparedIndexingWork {
|
|
17
17
|
readonly work: VectorIndexingWork
|
|
@@ -66,7 +66,7 @@ export async function generateVectors(
|
|
|
66
66
|
const result = await model.embed({
|
|
67
67
|
texts: entries.map((entry) => entry.input.text),
|
|
68
68
|
purpose: "document",
|
|
69
|
-
signal,
|
|
69
|
+
signal: AbortSignal.any([signal, AbortSignal.timeout(INDEXING_EMBEDDING_TIMEOUT_MS)]),
|
|
70
70
|
})
|
|
71
71
|
const values = normalizeEmbeddingResult(
|
|
72
72
|
result,
|
|
@@ -4,6 +4,11 @@ import type { ObjectVectorSearchProfile } from "../../ontology/types"
|
|
|
4
4
|
|
|
5
5
|
export const MAX_VECTOR_K = 1000
|
|
6
6
|
export const VECTOR_INPUT_VERSION = 1
|
|
7
|
+
/**
|
|
8
|
+
* Nobody waits on indexing, and the provider bills a call whose response is abandoned. The
|
|
9
|
+
* deadline only frees the worker from a dead connection, so it is far longer than a search's.
|
|
10
|
+
*/
|
|
11
|
+
export const INDEXING_EMBEDDING_TIMEOUT_MS = 5 * 60_000
|
|
7
12
|
|
|
8
13
|
export function vectorConfiguration(profile: ObjectVectorSearchProfile): string {
|
|
9
14
|
return sha256Canonical({
|
package/src/ontology/builders.ts
CHANGED
|
@@ -408,7 +408,12 @@ export function prop<
|
|
|
408
408
|
const TOptions extends PropertyOptions,
|
|
409
409
|
>(id: TId, schema: TSchema, options: TOptions): PropertyResult<TId, TSchema, TOptions>
|
|
410
410
|
export function prop(id: string, schema: Schema, options?: PropertyOptions): Property {
|
|
411
|
-
|
|
411
|
+
// Most properties carry no markings: skip the rest copy that only exists to drop the key.
|
|
412
|
+
if (!options || withoutMarkingsKey(options)) {
|
|
413
|
+
return { id, name: options?.name ?? id, schema, ...options }
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
const { markings, ...rest } = options
|
|
412
417
|
return {
|
|
413
418
|
id,
|
|
414
419
|
name: options?.name ?? id,
|
|
@@ -420,6 +425,12 @@ export function prop(id: string, schema: Schema, options?: PropertyOptions): Pro
|
|
|
420
425
|
}
|
|
421
426
|
}
|
|
422
427
|
|
|
428
|
+
function withoutMarkingsKey(
|
|
429
|
+
options: PropertyOptions
|
|
430
|
+
): options is PropertyOptions & { markings?: undefined } {
|
|
431
|
+
return !("markings" in options)
|
|
432
|
+
}
|
|
433
|
+
|
|
423
434
|
// ── Link shorthand ──────────────────────────────────────────
|
|
424
435
|
|
|
425
436
|
/**
|
|
@@ -24,7 +24,7 @@ export interface RenderOntologyDocsInput {
|
|
|
24
24
|
* Marked properties the reader is not cleared for. Like the ontology API, docs still list them,
|
|
25
25
|
* flagged, so the agent can say the information exists; their values cannot be read or queried.
|
|
26
26
|
*/
|
|
27
|
-
readonly restrictedPropertyIds?: (objectTypeId: string) => ReadonlySet<string>
|
|
27
|
+
readonly restrictedPropertyIds?: (objectTypeId: string) => ReadonlySet<string> | undefined
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
export interface OntologyDocsIndexEntry {
|