@sixb/core 0.1.7 → 0.1.8
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/delegated-admission.d.ts +24 -0
- package/dist/actions/delegated-admission.d.ts.map +1 -0
- package/dist/actions/descriptor.d.ts +29 -0
- package/dist/actions/descriptor.d.ts.map +1 -0
- package/dist/actions/execution.d.ts +5 -5
- package/dist/actions/execution.d.ts.map +1 -1
- package/dist/actions/index.js +36 -30
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/request.d.ts.map +1 -1
- package/dist/actions/run-authorization.d.ts +20 -0
- package/dist/actions/run-authorization.d.ts.map +1 -0
- package/dist/actions/run-dispatch.d.ts +3 -1
- package/dist/actions/run-dispatch.d.ts.map +1 -1
- package/dist/actions/worker.js +3 -3
- package/dist/actions/worker.js.map +1 -1
- package/dist/agents/adapters.d.ts +5 -122
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/authority.d.ts +1 -1
- package/dist/agents/authority.d.ts.map +1 -1
- package/dist/agents/context-resolution.d.ts.map +1 -1
- package/dist/agents/context.js +1 -1
- package/dist/agents/errors.d.ts +0 -9
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/execution.d.ts.map +1 -1
- package/dist/agents/identity.d.ts +3 -0
- package/dist/agents/identity.d.ts.map +1 -0
- package/dist/agents/index.d.ts +3 -3
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +43 -43
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/message.d.ts +4 -5
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/model-loop.d.ts +2 -0
- package/dist/agents/model-loop.d.ts.map +1 -1
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/tool-definition.d.ts +0 -1
- package/dist/agents/tool-definition.d.ts.map +1 -1
- package/dist/agents/validation.d.ts +0 -4
- package/dist/agents/validation.d.ts.map +1 -1
- package/dist/ai-usage/execution.d.ts.map +1 -1
- package/dist/auth/index.js +8 -5
- package/dist/auth/index.js.map +1 -1
- package/dist/authorization/decision.d.ts +10 -2
- package/dist/authorization/decision.d.ts.map +1 -1
- package/dist/authorization/grant-kinds.d.ts +2 -1
- package/dist/authorization/grant-kinds.d.ts.map +1 -1
- package/dist/authorization/index.d.ts +1 -1
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +7 -4
- package/dist/authorization/index.js.map +1 -1
- package/dist/bootstrap/discovery.d.ts +7 -1
- package/dist/bootstrap/discovery.d.ts.map +1 -1
- package/dist/bootstrap/index.js +46 -39
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
- package/dist/chunk-19jp6g9d.js +131 -0
- package/dist/chunk-19jp6g9d.js.map +11 -0
- package/dist/{chunk-x0qhkqje.js → chunk-2dw777qw.js} +50 -5
- package/dist/{chunk-x0qhkqje.js.map → chunk-2dw777qw.js.map} +4 -3
- package/dist/chunk-359jm1jw.js +147 -0
- package/dist/chunk-359jm1jw.js.map +10 -0
- package/dist/{chunk-2b5qtban.js → chunk-3xep5cjx.js} +56 -21
- package/dist/chunk-3xep5cjx.js.map +15 -0
- package/dist/{chunk-qjycjdj6.js → chunk-3z1qec12.js} +6 -8
- package/dist/{chunk-qjycjdj6.js.map → chunk-3z1qec12.js.map} +2 -2
- package/dist/{chunk-5jcdmjam.js → chunk-4jjp5k14.js} +1 -1
- package/dist/{chunk-n2arzn6e.js → chunk-4qfkag59.js} +44 -221
- package/dist/chunk-4qfkag59.js.map +20 -0
- package/dist/{chunk-rre42skh.js → chunk-4sm0aznx.js} +515 -80
- package/dist/{chunk-rre42skh.js.map → chunk-4sm0aznx.js.map} +11 -7
- package/dist/chunk-4yqmp43v.js +159 -0
- package/dist/chunk-4yqmp43v.js.map +11 -0
- package/dist/{chunk-atmkaf60.js → chunk-5e3pq99w.js} +2 -6
- package/dist/{chunk-atmkaf60.js.map → chunk-5e3pq99w.js.map} +3 -3
- package/dist/{chunk-agsvg9ar.js → chunk-5ntny1qx.js} +1 -1
- package/dist/{chunk-z2sery1b.js → chunk-9nbmsvn5.js} +60 -20
- package/dist/chunk-9nbmsvn5.js.map +11 -0
- package/dist/{chunk-e4rvtvpw.js → chunk-aa2pen2v.js} +250 -78
- package/dist/chunk-aa2pen2v.js.map +34 -0
- package/dist/{chunk-64sr682n.js → chunk-ajnan18g.js} +11 -8
- package/dist/chunk-ajnan18g.js.map +12 -0
- package/dist/{chunk-9aehf39w.js → chunk-f26bck4t.js} +4 -4
- package/dist/{chunk-7ds9620f.js → chunk-fvt9rjsa.js} +23 -7
- package/dist/chunk-fvt9rjsa.js.map +10 -0
- package/dist/{chunk-kt81c11h.js → chunk-gbejpkex.js} +5 -5
- package/dist/{chunk-kt81c11h.js.map → chunk-gbejpkex.js.map} +1 -1
- package/dist/{chunk-vjjv9mrb.js → chunk-gzasd5b6.js} +5 -5
- package/dist/{chunk-vjjv9mrb.js.map → chunk-gzasd5b6.js.map} +3 -3
- package/dist/{chunk-d63tybny.js → chunk-h0k55pc7.js} +4 -4
- package/dist/{chunk-d63tybny.js.map → chunk-h0k55pc7.js.map} +1 -1
- package/dist/chunk-h5vqbfmd.js +1537 -0
- package/dist/chunk-h5vqbfmd.js.map +19 -0
- package/dist/{chunk-3kv70xwp.js → chunk-j1sbhm7p.js} +18 -2
- package/dist/chunk-j1sbhm7p.js.map +10 -0
- package/dist/{chunk-hdz94br2.js → chunk-k522z7v6.js} +10 -5
- package/dist/chunk-k522z7v6.js.map +10 -0
- package/dist/{chunk-wjgm6jjt.js → chunk-mth82m8t.js} +128 -94
- package/dist/chunk-mth82m8t.js.map +14 -0
- package/dist/{chunk-qv38twt8.js → chunk-mwsxn98e.js} +46 -25
- package/dist/{chunk-qv38twt8.js.map → chunk-mwsxn98e.js.map} +6 -6
- package/dist/chunk-n4khvw9n.js +111 -0
- package/dist/chunk-n4khvw9n.js.map +11 -0
- package/dist/{chunk-qjzp9xyb.js → chunk-nn0tekr1.js} +6 -8
- package/dist/chunk-nn0tekr1.js.map +12 -0
- package/dist/chunk-nx7k8tpr.js +436 -0
- package/dist/chunk-nx7k8tpr.js.map +12 -0
- package/dist/{chunk-08twe8m6.js → chunk-p1rzczbt.js} +1 -1
- package/dist/{chunk-37wk412q.js → chunk-p1x242ad.js} +587 -70
- package/dist/chunk-p1x242ad.js.map +25 -0
- package/dist/{chunk-tn7xcs2n.js → chunk-pc7ys28c.js} +68 -5
- package/dist/chunk-pc7ys28c.js.map +14 -0
- package/dist/{chunk-3fqt22c4.js → chunk-q0k9nc5a.js} +280 -88
- package/dist/chunk-q0k9nc5a.js.map +14 -0
- package/dist/chunk-r8jrnexe.js +403 -0
- package/dist/chunk-r8jrnexe.js.map +10 -0
- package/dist/{chunk-gbrpsx4m.js → chunk-rafagrwr.js} +30 -2
- package/dist/chunk-rafagrwr.js.map +11 -0
- package/dist/{chunk-xdpwpkha.js → chunk-rv2hkwwa.js} +1 -1
- package/dist/{chunk-6ed5bwnd.js → chunk-sbzzr4kx.js} +1203 -691
- package/dist/{chunk-6ed5bwnd.js.map → chunk-sbzzr4kx.js.map} +15 -9
- package/dist/{chunk-d2ndstdf.js → chunk-v1xppd0y.js} +13 -11
- package/dist/{chunk-d2ndstdf.js.map → chunk-v1xppd0y.js.map} +2 -2
- package/dist/chunk-v4en4jc2.js +252 -0
- package/dist/chunk-v4en4jc2.js.map +10 -0
- package/dist/{chunk-1kamz6j0.js → chunk-w1tvjszy.js} +1 -1
- package/dist/{chunk-rp1mvzb4.js → chunk-w9tg6yyb.js} +11 -6
- package/dist/{chunk-rp1mvzb4.js.map → chunk-w9tg6yyb.js.map} +3 -3
- package/dist/{chunk-4nxeacx7.js → chunk-wdage1eb.js} +1 -1
- package/dist/{chunk-ha58tjtt.js → chunk-wtf06et8.js} +9 -5
- package/dist/{chunk-ha58tjtt.js.map → chunk-wtf06et8.js.map} +3 -3
- package/dist/{chunk-h0knpbz5.js → chunk-xajtptbw.js} +782 -211
- package/dist/chunk-xajtptbw.js.map +40 -0
- package/dist/{chunk-xc7hq65b.js → chunk-yp8ee62z.js} +49 -2
- package/dist/chunk-yp8ee62z.js.map +11 -0
- package/dist/chunk-z4ccwbkz.js +139 -0
- package/dist/chunk-z4ccwbkz.js.map +10 -0
- package/dist/datasets/builders.d.ts +11 -2
- package/dist/datasets/builders.d.ts.map +1 -1
- package/dist/datasets/changes.d.ts +14 -4
- package/dist/datasets/changes.d.ts.map +1 -1
- package/dist/datasets/execution.d.ts +15 -1
- package/dist/datasets/execution.d.ts.map +1 -1
- package/dist/datasets/index.d.ts +1 -0
- package/dist/datasets/index.d.ts.map +1 -1
- package/dist/datasets/sequence.d.ts +7 -0
- package/dist/datasets/sequence.d.ts.map +1 -0
- package/dist/datasets/types.d.ts +1 -0
- package/dist/datasets/types.d.ts.map +1 -1
- package/dist/datasets/validation.d.ts.map +1 -1
- package/dist/datasets/write.d.ts +37 -0
- package/dist/datasets/write.d.ts.map +1 -0
- package/dist/datasets/write.js +17 -0
- package/dist/datasets/write.js.map +9 -0
- package/dist/events/execution.d.ts.map +1 -1
- package/dist/events/types/datasets.d.ts +2 -6
- package/dist/events/types/datasets.d.ts.map +1 -1
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +39 -32
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorization.d.ts +58 -20
- package/dist/execution/authorization.d.ts.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts +69 -0
- package/dist/execution/authorized-object-reader.d.ts.map +1 -0
- package/dist/execution/durable.d.ts.map +1 -1
- package/dist/execution/index.d.ts +1 -1
- package/dist/execution/index.d.ts.map +1 -1
- package/dist/execution/primitive.js +39 -32
- package/dist/execution/primitive.js.map +2 -2
- package/dist/execution/request.d.ts +11 -0
- package/dist/execution/request.d.ts.map +1 -1
- package/dist/execution/request.js +76 -40
- package/dist/execution/request.js.map +3 -3
- package/dist/execution/scopes.d.ts +16 -0
- package/dist/execution/scopes.d.ts.map +1 -1
- package/dist/execution/types.d.ts +9 -0
- package/dist/execution/types.d.ts.map +1 -1
- package/dist/http/api-routes.d.ts +2 -0
- package/dist/http/api-routes.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +92 -78
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/definition-updates.d.ts.map +1 -1
- package/dist/lake-storage/errors.d.ts +5 -1
- package/dist/lake-storage/errors.d.ts.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 -1
- package/dist/lake-storage/index.d.ts.map +1 -1
- package/dist/lake-storage/index.js +24 -7
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/lake-storage/merge-validation.d.ts.map +1 -1
- package/dist/lake-storage/merge.d.ts +13 -2
- package/dist/lake-storage/merge.d.ts.map +1 -1
- package/dist/lake-storage/source-ordering.d.ts +19 -0
- package/dist/lake-storage/source-ordering.d.ts.map +1 -0
- package/dist/lake-storage/sql-transforms.d.ts +2 -1
- package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
- package/dist/lake-storage/types.d.ts +10 -5
- package/dist/lake-storage/types.d.ts.map +1 -1
- package/dist/lake-storage/version-inputs.d.ts +4 -0
- package/dist/lake-storage/version-inputs.d.ts.map +1 -0
- package/dist/materializer/index.js +25 -22
- package/dist/materializer/index.js.map +1 -1
- package/dist/objects/authorized-ontology-view.d.ts +25 -0
- package/dist/objects/authorized-ontology-view.d.ts.map +1 -0
- package/dist/objects/execution.d.ts +1 -1
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +29 -26
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/link/authorization.d.ts +2 -7
- package/dist/objects/link/authorization.d.ts.map +1 -1
- package/dist/objects/query/executor.d.ts +4 -2
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.js +24 -21
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/links.d.ts +22 -1
- package/dist/objects/query/links.d.ts.map +1 -1
- package/dist/objects/query/selected-read-admission.d.ts +27 -0
- package/dist/objects/query/selected-read-admission.d.ts.map +1 -0
- package/dist/objects/query/validate.d.ts +60 -2
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/sdk/object-handle.d.ts.map +1 -1
- package/dist/objects/sdk/object-set.d.ts.map +1 -1
- package/dist/objects/sdk/runtime-query-executor.d.ts +2 -7
- package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
- package/dist/objects/sdk/telemetry-channel.d.ts.map +1 -1
- package/dist/objects/service/list-service.d.ts +2 -3
- package/dist/objects/service/list-service.d.ts.map +1 -1
- package/dist/objects/telemetry/history.d.ts +8 -6
- package/dist/objects/telemetry/history.d.ts.map +1 -1
- package/dist/objects/telemetry/index.d.ts +2 -2
- package/dist/objects/telemetry/index.d.ts.map +1 -1
- package/dist/objects/telemetry/workload.d.ts +11 -0
- package/dist/objects/telemetry/workload.d.ts.map +1 -0
- package/dist/ontology/index.d.ts +2 -1
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +13 -12
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/inference/index.d.ts +2 -1
- package/dist/ontology/inference/index.d.ts.map +1 -1
- package/dist/ontology/internal.d.ts +0 -1
- package/dist/ontology/internal.d.ts.map +1 -1
- package/dist/ontology/internal.js +5 -10
- package/dist/ontology/internal.js.map +3 -3
- package/dist/ontology/json-schema.d.ts +10 -6
- package/dist/ontology/json-schema.d.ts.map +1 -1
- package/dist/ontology/link-path-selection.d.ts +35 -0
- package/dist/ontology/link-path-selection.d.ts.map +1 -0
- package/dist/ontology/refs.d.ts +2 -0
- package/dist/ontology/refs.d.ts.map +1 -1
- package/dist/ontology/tokens.d.ts +2 -1
- package/dist/ontology/tokens.d.ts.map +1 -1
- package/dist/pipelines/execution.d.ts.map +1 -1
- package/dist/pipelines/index.js +27 -24
- package/dist/pipelines/index.js.map +1 -1
- package/dist/pipelines/request.d.ts.map +1 -1
- package/dist/projections/execution.d.ts.map +1 -1
- package/dist/projections/internal.js +25 -22
- package/dist/projections/internal.js.map +1 -1
- package/dist/projections/run-dispatch.d.ts.map +1 -1
- package/dist/rules/execution.d.ts.map +1 -1
- package/dist/runtime/create.d.ts +4 -1
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/definitions.d.ts +2 -0
- package/dist/runtime/definitions.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +2 -0
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +1 -0
- package/dist/runtime/internal.d.ts.map +1 -1
- package/dist/runtime/resolve-definitions.d.ts +2 -0
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/sixb.d.ts +4 -0
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +3 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/schedules/execution.d.ts +2 -1
- package/dist/schedules/execution.d.ts.map +1 -1
- package/dist/security/every.d.ts +4 -1
- package/dist/security/every.d.ts.map +1 -1
- package/dist/security/grants.d.ts +7 -2
- package/dist/security/grants.d.ts.map +1 -1
- package/dist/security/index.d.ts +1 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/registry.d.ts +1 -0
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +7 -1
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts +2 -0
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/shares/access-plan.d.ts +22 -0
- package/dist/shares/access-plan.d.ts.map +1 -0
- package/dist/shares/builders.d.ts +14 -0
- package/dist/shares/builders.d.ts.map +1 -0
- package/dist/shares/compiler.d.ts +14 -0
- package/dist/shares/compiler.d.ts.map +1 -0
- package/dist/shares/errors.d.ts +4 -0
- package/dist/shares/errors.d.ts.map +1 -0
- package/dist/shares/execution.d.ts +57 -0
- package/dist/shares/execution.d.ts.map +1 -0
- package/dist/shares/index.d.ts +10 -0
- package/dist/shares/index.d.ts.map +1 -0
- package/dist/shares/internal.d.ts +3 -0
- package/dist/shares/internal.d.ts.map +1 -0
- package/dist/shares/internal.js +239 -0
- package/dist/shares/internal.js.map +10 -0
- package/dist/shares/intersection.d.ts +9 -0
- package/dist/shares/intersection.d.ts.map +1 -0
- package/dist/shares/session-protocol.d.ts +41 -0
- package/dist/shares/session-protocol.d.ts.map +1 -0
- package/dist/shares/types.d.ts +51 -0
- package/dist/shares/types.d.ts.map +1 -0
- package/dist/shares/validation.d.ts +11 -0
- package/dist/shares/validation.d.ts.map +1 -0
- package/dist/storage/action-runs/provider.js +2 -2
- package/dist/storage/agents/provider.js +2 -2
- package/dist/storage/executions/in-memory.d.ts +3 -0
- package/dist/storage/executions/in-memory.d.ts.map +1 -1
- package/dist/storage/executions/provider.d.ts +4 -1
- package/dist/storage/executions/provider.d.ts.map +1 -1
- package/dist/storage/executions/provider.js +23 -3
- package/dist/storage/executions/provider.js.map +3 -3
- package/dist/storage/executions/run-link.d.ts +7 -0
- package/dist/storage/executions/run-link.d.ts.map +1 -1
- package/dist/storage/executions/validation.d.ts +6 -0
- package/dist/storage/executions/validation.d.ts.map +1 -1
- package/dist/storage/in-memory/index.d.ts +8 -0
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +8 -2
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +65 -36
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/objects/execution-limits.d.ts +25 -0
- package/dist/storage/objects/execution-limits.d.ts.map +1 -0
- package/dist/storage/objects/guard.d.ts +16 -0
- package/dist/storage/objects/guard.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/index.d.ts +3 -0
- package/dist/storage/objects/in-memory/index.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/keys.d.ts +10 -0
- package/dist/storage/objects/in-memory/keys.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/query.d.ts +31 -0
- package/dist/storage/objects/in-memory/query.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/read-scope.d.ts +18 -0
- package/dist/storage/objects/in-memory/read-scope.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/read-source.d.ts +10 -0
- package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/selected-reader.d.ts +9 -0
- package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -0
- package/dist/storage/objects/{in-memory.d.ts → in-memory/storage.d.ts} +13 -10
- package/dist/storage/objects/in-memory/storage.d.ts.map +1 -0
- package/dist/storage/objects/index.d.ts +4 -1
- package/dist/storage/objects/index.d.ts.map +1 -1
- package/dist/storage/objects/keys.d.ts +1 -1
- package/dist/storage/objects/keys.d.ts.map +1 -1
- package/dist/storage/objects/read-scope.d.ts +25 -0
- package/dist/storage/objects/read-scope.d.ts.map +1 -0
- package/dist/storage/objects/types.d.ts +114 -22
- package/dist/storage/objects/types.d.ts.map +1 -1
- package/dist/storage/operation-scope.d.ts +3 -0
- package/dist/storage/operation-scope.d.ts.map +1 -1
- package/dist/storage/operation-scope.js +4 -2
- package/dist/storage/operation-scope.js.map +1 -1
- package/dist/storage/pipeline-runs/provider.js +2 -2
- package/dist/storage/projection-runs/provider.js +2 -2
- package/dist/storage/share-grants/errors.d.ts +8 -0
- package/dist/storage/share-grants/errors.d.ts.map +1 -0
- package/dist/storage/share-grants/in-memory.d.ts +11 -0
- package/dist/storage/share-grants/in-memory.d.ts.map +1 -0
- package/dist/storage/share-grants/index.d.ts +5 -0
- package/dist/storage/share-grants/index.d.ts.map +1 -0
- package/dist/storage/share-grants/provider.d.ts +4 -0
- package/dist/storage/share-grants/provider.d.ts.map +1 -0
- package/dist/storage/share-grants/provider.js +24 -0
- package/dist/storage/share-grants/provider.js.map +9 -0
- package/dist/storage/share-grants/record.d.ts +11 -0
- package/dist/storage/share-grants/record.d.ts.map +1 -0
- package/dist/storage/share-grants/types.d.ts +97 -0
- package/dist/storage/share-grants/types.d.ts.map +1 -0
- package/dist/storage/share-sessions/errors.d.ts +8 -0
- package/dist/storage/share-sessions/errors.d.ts.map +1 -0
- package/dist/storage/share-sessions/in-memory.d.ts +14 -0
- package/dist/storage/share-sessions/in-memory.d.ts.map +1 -0
- package/dist/storage/share-sessions/index.d.ts +5 -0
- package/dist/storage/share-sessions/index.d.ts.map +1 -0
- package/dist/storage/share-sessions/provider.d.ts +3 -0
- package/dist/storage/share-sessions/provider.d.ts.map +1 -0
- package/dist/storage/share-sessions/provider.js +20 -0
- package/dist/storage/share-sessions/provider.js.map +9 -0
- package/dist/storage/share-sessions/record.d.ts +8 -0
- package/dist/storage/share-sessions/record.d.ts.map +1 -0
- package/dist/storage/share-sessions/types.d.ts +50 -0
- package/dist/storage/share-sessions/types.d.ts.map +1 -0
- package/dist/storage/sync-runs/provider.js +2 -2
- package/dist/storage/transaction.d.ts +2 -1
- package/dist/storage/transaction.d.ts.map +1 -1
- package/dist/storage/types.d.ts +8 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/webhook-runs/provider.js +2 -2
- package/dist/storage/workflow-runs/provider.js +10 -7
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/syncs/execution.d.ts.map +1 -1
- package/dist/syncs/index.js +27 -24
- package/dist/syncs/index.js.map +1 -1
- package/dist/syncs/request.d.ts.map +1 -1
- package/dist/testing/dataset-sequence-contract.d.ts +4 -0
- package/dist/testing/dataset-sequence-contract.d.ts.map +1 -0
- package/dist/testing/effective-storage-contract.d.ts.map +1 -1
- package/dist/testing/execution-storage-contract.d.ts +4 -0
- package/dist/testing/execution-storage-contract.d.ts.map +1 -1
- package/dist/testing/index.d.ts +3 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +2555 -908
- package/dist/testing/index.js.map +11 -7
- package/dist/testing/lake-merge-storage-contract.d.ts +1 -0
- package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
- package/dist/testing/lake-storage-contract.d.ts.map +1 -1
- package/dist/testing/object-read-scope-contract.d.ts +22 -0
- package/dist/testing/object-read-scope-contract.d.ts.map +1 -0
- package/dist/testing/share-grant-storage-contract.d.ts +10 -0
- package/dist/testing/share-grant-storage-contract.d.ts.map +1 -0
- package/dist/testing/share-session-storage-contract.d.ts +9 -0
- package/dist/testing/share-session-storage-contract.d.ts.map +1 -0
- package/dist/webhooks/internal.js +24 -21
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workflows/execution.d.ts.map +1 -1
- package/dist/workflows/index.js +42 -35
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/request.d.ts.map +1 -1
- package/package.json +25 -1
- package/src/actions/delegated-admission.ts +72 -0
- package/src/actions/descriptor.ts +58 -0
- package/src/actions/execution.ts +99 -24
- package/src/actions/request.ts +136 -19
- package/src/actions/run-authorization.ts +53 -0
- package/src/actions/run-dispatch.ts +8 -1
- package/src/agents/adapters.ts +30 -420
- package/src/agents/authority.ts +3 -4
- package/src/agents/context-resolution.ts +1 -4
- package/src/agents/errors.ts +0 -10
- package/src/agents/execution.ts +13 -5
- package/src/agents/identity.ts +4 -0
- package/src/agents/index.ts +1 -20
- package/src/agents/message.ts +4 -5
- package/src/agents/model-loop.ts +54 -6
- package/src/agents/request.ts +16 -3
- package/src/agents/tool-definition.ts +0 -19
- package/src/agents/validation.ts +6 -65
- package/src/ai-usage/execution.ts +4 -11
- package/src/authorization/decision.ts +29 -14
- package/src/authorization/grant-kinds.ts +10 -0
- package/src/authorization/index.ts +1 -0
- package/src/bootstrap/discovery.ts +3 -0
- package/src/bootstrap/ontology-type-manifest.ts +12 -6
- package/src/datasets/builders.ts +23 -2
- package/src/datasets/changes.ts +16 -4
- package/src/datasets/execution.ts +76 -5
- package/src/datasets/index.ts +1 -0
- package/src/datasets/sequence.ts +77 -0
- package/src/datasets/types.ts +1 -0
- package/src/datasets/validation.ts +26 -0
- package/src/datasets/write.ts +240 -0
- package/src/events/execution.ts +57 -7
- package/src/events/types/datasets.ts +2 -6
- package/src/execution/agent.ts +1 -4
- package/src/execution/authorization.ts +470 -90
- package/src/execution/authorized-object-reader.ts +695 -0
- package/src/execution/durable.ts +10 -2
- package/src/execution/index.ts +1 -0
- package/src/execution/request.ts +63 -13
- package/src/execution/scopes.ts +36 -6
- package/src/execution/types.ts +8 -0
- package/src/http/api-routes.ts +45 -0
- package/src/index.ts +36 -15
- package/src/lake-storage/definition-updates.ts +9 -0
- package/src/lake-storage/errors.ts +6 -1
- package/src/lake-storage/in-memory.ts +53 -17
- package/src/lake-storage/index.ts +10 -1
- package/src/lake-storage/merge-validation.ts +12 -2
- package/src/lake-storage/merge.ts +40 -2
- package/src/lake-storage/source-ordering.ts +95 -0
- package/src/lake-storage/sql-transforms.ts +2 -1
- package/src/lake-storage/types.ts +10 -5
- package/src/lake-storage/version-inputs.ts +14 -0
- package/src/objects/authorized-ontology-view.ts +512 -0
- package/src/objects/execution.ts +98 -143
- package/src/objects/link/authorization.ts +3 -2
- package/src/objects/query/executor.ts +45 -34
- package/src/objects/query/links.ts +84 -25
- package/src/objects/query/selected-read-admission.ts +310 -0
- package/src/objects/query/validate.ts +353 -36
- package/src/objects/sdk/object-handle.ts +2 -8
- package/src/objects/sdk/object-set.ts +10 -11
- package/src/objects/sdk/runtime-query-executor.ts +8 -28
- package/src/objects/sdk/telemetry-channel.ts +11 -7
- package/src/objects/service/list-service.ts +15 -29
- package/src/objects/telemetry/history.ts +297 -17
- package/src/objects/telemetry/index.ts +2 -2
- package/src/objects/telemetry/workload.ts +79 -0
- package/src/ontology/index.ts +7 -1
- package/src/ontology/inference/index.ts +4 -1
- package/src/ontology/internal.ts +0 -1
- package/src/ontology/json-schema.ts +13 -12
- package/src/ontology/link-path-selection.ts +193 -0
- package/src/ontology/refs.ts +19 -0
- package/src/ontology/tokens.ts +15 -8
- package/src/pipelines/execution.ts +30 -7
- package/src/pipelines/request.ts +5 -0
- package/src/projections/execution.ts +72 -11
- package/src/projections/run-dispatch.ts +6 -12
- package/src/rules/execution.ts +20 -8
- package/src/runtime/create.ts +5 -1
- package/src/runtime/definitions.ts +2 -0
- package/src/runtime/host.ts +25 -6
- package/src/runtime/internal.ts +1 -0
- package/src/runtime/resolve-definitions.ts +9 -0
- package/src/runtime/sixb.ts +23 -2
- package/src/runtime/types.ts +3 -0
- package/src/schedules/execution.ts +24 -2
- package/src/security/every.ts +4 -0
- package/src/security/grants.ts +45 -3
- package/src/security/index.ts +1 -0
- package/src/security/registry.ts +3 -0
- package/src/security/types.ts +8 -0
- package/src/security/validation.ts +3 -0
- package/src/shares/access-plan.ts +225 -0
- package/src/shares/builders.ts +381 -0
- package/src/shares/compiler.ts +359 -0
- package/src/shares/errors.ts +3 -0
- package/src/shares/execution.ts +394 -0
- package/src/shares/index.ts +28 -0
- package/src/shares/internal.ts +9 -0
- package/src/shares/intersection.ts +178 -0
- package/src/shares/session-protocol.ts +258 -0
- package/src/shares/types.ts +76 -0
- package/src/shares/validation.ts +40 -0
- package/src/storage/executions/in-memory.ts +9 -1
- package/src/storage/executions/provider.ts +30 -1
- package/src/storage/executions/run-link.ts +29 -0
- package/src/storage/executions/validation.ts +46 -1
- package/src/storage/in-memory/index.ts +21 -2
- package/src/storage/index.ts +51 -0
- package/src/storage/objects/execution-limits.ts +283 -0
- package/src/storage/objects/guard.ts +55 -0
- package/src/storage/objects/in-memory/index.ts +2 -0
- package/src/storage/objects/in-memory/keys.ts +46 -0
- package/src/storage/objects/in-memory/query.ts +754 -0
- package/src/storage/objects/in-memory/read-scope.ts +211 -0
- package/src/storage/objects/in-memory/read-source.ts +10 -0
- package/src/storage/objects/in-memory/selected-reader.ts +252 -0
- package/src/storage/objects/in-memory/storage.ts +589 -0
- package/src/storage/objects/index.ts +21 -0
- package/src/storage/objects/keys.ts +1 -1
- package/src/storage/objects/read-scope.ts +672 -0
- package/src/storage/objects/types.ts +123 -19
- package/src/storage/operation-scope.ts +16 -0
- package/src/storage/share-grants/errors.ts +14 -0
- package/src/storage/share-grants/in-memory.ts +107 -0
- package/src/storage/share-grants/index.ts +14 -0
- package/src/storage/share-grants/provider.ts +11 -0
- package/src/storage/share-grants/record.ts +347 -0
- package/src/storage/share-grants/types.ts +112 -0
- package/src/storage/share-sessions/errors.ts +14 -0
- package/src/storage/share-sessions/in-memory.ts +105 -0
- package/src/storage/share-sessions/index.ts +11 -0
- package/src/storage/share-sessions/provider.ts +9 -0
- package/src/storage/share-sessions/record.ts +176 -0
- package/src/storage/share-sessions/types.ts +57 -0
- package/src/storage/transaction.ts +14 -2
- package/src/storage/types.ts +27 -0
- package/src/syncs/execution.ts +25 -5
- package/src/syncs/request.ts +5 -0
- package/src/testing/dataset-sequence-contract.ts +373 -0
- package/src/testing/effective-storage-contract.ts +34 -0
- package/src/testing/execution-storage-contract.ts +79 -0
- package/src/testing/index.ts +16 -0
- package/src/testing/lake-merge-storage-contract.ts +3 -0
- package/src/testing/lake-storage-contract.ts +58 -0
- package/src/testing/object-read-scope-contract.ts +939 -0
- package/src/testing/share-grant-storage-contract.ts +325 -0
- package/src/testing/share-session-storage-contract.ts +235 -0
- package/src/workflows/execution.ts +53 -14
- package/src/workflows/request.ts +5 -0
- package/dist/chunk-2b5qtban.js.map +0 -14
- package/dist/chunk-37wk412q.js.map +0 -23
- package/dist/chunk-3fqt22c4.js.map +0 -14
- package/dist/chunk-3kv70xwp.js.map +0 -10
- package/dist/chunk-64sr682n.js.map +0 -12
- package/dist/chunk-7ds9620f.js.map +0 -10
- package/dist/chunk-dqn23610.js +0 -72
- package/dist/chunk-dqn23610.js.map +0 -11
- package/dist/chunk-e4rvtvpw.js.map +0 -34
- package/dist/chunk-gbrpsx4m.js.map +0 -11
- package/dist/chunk-h0knpbz5.js.map +0 -38
- package/dist/chunk-hdz94br2.js.map +0 -10
- package/dist/chunk-n2arzn6e.js.map +0 -20
- package/dist/chunk-qjzp9xyb.js.map +0 -12
- package/dist/chunk-tn7xcs2n.js.map +0 -13
- package/dist/chunk-wjgm6jjt.js.map +0 -13
- package/dist/chunk-xc7hq65b.js.map +0 -10
- package/dist/chunk-y35ma3mj.js +0 -551
- package/dist/chunk-y35ma3mj.js.map +0 -15
- package/dist/chunk-z2sery1b.js.map +0 -11
- package/dist/storage/objects/in-memory.d.ts.map +0 -1
- package/src/storage/objects/in-memory.ts +0 -1241
- /package/dist/{chunk-5jcdmjam.js.map → chunk-4jjp5k14.js.map} +0 -0
- /package/dist/{chunk-agsvg9ar.js.map → chunk-5ntny1qx.js.map} +0 -0
- /package/dist/{chunk-9aehf39w.js.map → chunk-f26bck4t.js.map} +0 -0
- /package/dist/{chunk-08twe8m6.js.map → chunk-p1rzczbt.js.map} +0 -0
- /package/dist/{chunk-xdpwpkha.js.map → chunk-rv2hkwwa.js.map} +0 -0
- /package/dist/{chunk-1kamz6j0.js.map → chunk-w1tvjszy.js.map} +0 -0
- /package/dist/{chunk-4nxeacx7.js.map → chunk-wdage1eb.js.map} +0 -0
package/src/ontology/index.ts
CHANGED
|
@@ -18,8 +18,14 @@ export {
|
|
|
18
18
|
isDecimalValue,
|
|
19
19
|
normalizeDecimalValue,
|
|
20
20
|
} from "./decimal"
|
|
21
|
+
export type {
|
|
22
|
+
LinkPathSelection,
|
|
23
|
+
LinkPathSelectionBuilder,
|
|
24
|
+
LinkPathSelectionInput,
|
|
25
|
+
LinkPathSelectionMode,
|
|
26
|
+
} from "./link-path-selection"
|
|
21
27
|
export type { InferSchemaOrRef, ObjectRef, ObjectRefSchema, SchemaOrRef } from "./refs"
|
|
22
|
-
export { isObjectRefSchema, ref, validateSchemaOrRefValue } from "./refs"
|
|
28
|
+
export { isObjectRefSchema, objectRef, ref, validateSchemaOrRefValue } from "./refs"
|
|
23
29
|
export type {
|
|
24
30
|
LinkToken,
|
|
25
31
|
LinkTokenMap,
|
|
@@ -148,6 +148,7 @@ export type InferPropertySemanticType<
|
|
|
148
148
|
*
|
|
149
149
|
* Semantic type can come either directly from the property or indirectly from
|
|
150
150
|
* a referenced value type.
|
|
151
|
+
* Guard `never` explicitly: UnitsOf<never> is keyof never (string | number | symbol).
|
|
151
152
|
*/
|
|
152
153
|
export type InferPropertyUnit<
|
|
153
154
|
TProperty extends Pick<Property, "schema" | "semanticType">,
|
|
@@ -155,7 +156,9 @@ export type InferPropertyUnit<
|
|
|
155
156
|
> =
|
|
156
157
|
InferPropertySemanticType<TProperty, TValueTypes> extends infer TSemanticType extends
|
|
157
158
|
QuantitativeTypeId
|
|
158
|
-
?
|
|
159
|
+
? [TSemanticType] extends [never]
|
|
160
|
+
? never
|
|
161
|
+
: UnitsOf<TSemanticType>
|
|
159
162
|
: never
|
|
160
163
|
|
|
161
164
|
export type InferObjectProperties<
|
package/src/ontology/internal.ts
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
|
+
import type { JsonObject } from "../json"
|
|
1
2
|
import { OntologyValidationError } from "./errors"
|
|
2
|
-
import {
|
|
3
|
+
import type { SchemaOrRef } from "./refs"
|
|
3
4
|
import type { Schema, ValueType } from "./types"
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
type DeepReadonly<T> = T extends object ? { readonly [K in keyof T]: DeepReadonly<T[K]> } : T
|
|
6
7
|
|
|
7
8
|
export interface SchemaJsonField {
|
|
8
|
-
readonly schema: SchemaOrRef
|
|
9
|
+
readonly schema: DeepReadonly<SchemaOrRef>
|
|
9
10
|
readonly required?: boolean
|
|
10
11
|
readonly nullable?: boolean
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
/** Convert a record of Sixb schemas into the strict JSON object schema used by model outputs. */
|
|
14
15
|
export function schemaRecordToJsonSchema(input: {
|
|
15
|
-
readonly shape: Readonly<Record<string, SchemaOrRef
|
|
16
|
+
readonly shape: Readonly<Record<string, DeepReadonly<SchemaOrRef>>>
|
|
16
17
|
readonly valueTypesById: ReadonlyMap<string, ValueType>
|
|
17
|
-
}):
|
|
18
|
+
}): JsonObject {
|
|
18
19
|
return schemaFieldsToJsonSchema({
|
|
19
20
|
fields: Object.fromEntries(
|
|
20
21
|
Object.entries(input.shape).map(([field, schema]) => [field, { schema, required: true }])
|
|
@@ -27,7 +28,7 @@ export function schemaRecordToJsonSchema(input: {
|
|
|
27
28
|
export function schemaFieldsToJsonSchema(input: {
|
|
28
29
|
readonly fields: Readonly<Record<string, SchemaJsonField>>
|
|
29
30
|
readonly valueTypesById: ReadonlyMap<string, ValueType>
|
|
30
|
-
}):
|
|
31
|
+
}): JsonObject {
|
|
31
32
|
const required = Object.entries(input.fields)
|
|
32
33
|
.filter(([, field]) => field.required === true)
|
|
33
34
|
.map(([field]) => field)
|
|
@@ -45,11 +46,11 @@ export function schemaFieldsToJsonSchema(input: {
|
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
function schemaOrRefJsonSchema(
|
|
48
|
-
schema: SchemaOrRef
|
|
49
|
+
schema: DeepReadonly<SchemaOrRef>,
|
|
49
50
|
valueTypesById: ReadonlyMap<string, ValueType>,
|
|
50
51
|
resolving: ReadonlySet<string>
|
|
51
|
-
):
|
|
52
|
-
if (
|
|
52
|
+
): JsonObject {
|
|
53
|
+
if (typeof schema !== "string" && schema.type === "objectRef") {
|
|
53
54
|
return {
|
|
54
55
|
type: "object",
|
|
55
56
|
properties: {
|
|
@@ -64,10 +65,10 @@ function schemaOrRefJsonSchema(
|
|
|
64
65
|
}
|
|
65
66
|
|
|
66
67
|
function schemaJsonSchema(
|
|
67
|
-
schema: Schema
|
|
68
|
+
schema: DeepReadonly<Schema>,
|
|
68
69
|
valueTypesById: ReadonlyMap<string, ValueType>,
|
|
69
70
|
resolving: ReadonlySet<string>
|
|
70
|
-
):
|
|
71
|
+
): JsonObject {
|
|
71
72
|
if (typeof schema === "string") {
|
|
72
73
|
switch (schema) {
|
|
73
74
|
case "string":
|
|
@@ -103,7 +104,7 @@ function schemaJsonSchema(
|
|
|
103
104
|
}
|
|
104
105
|
}
|
|
105
106
|
|
|
106
|
-
if (schema.type === "enum") return { enum: schema.values }
|
|
107
|
+
if (schema.type === "enum") return { enum: [...schema.values] }
|
|
107
108
|
if (schema.type === "array") {
|
|
108
109
|
return { type: "array", items: schemaJsonSchema(schema.items, valueTypesById, resolving) }
|
|
109
110
|
}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import type { LinkToken } from "./tokens"
|
|
2
|
+
|
|
3
|
+
declare const linkPathSelectionBrand: unique symbol
|
|
4
|
+
|
|
5
|
+
type LinkTargetObjectTypeId<TTarget> = TTarget extends readonly string[]
|
|
6
|
+
? TTarget[number]
|
|
7
|
+
: TTarget extends "*"
|
|
8
|
+
? string
|
|
9
|
+
: TTarget extends string
|
|
10
|
+
? TTarget
|
|
11
|
+
: never
|
|
12
|
+
|
|
13
|
+
export type LinkPathSelectionMode =
|
|
14
|
+
| { readonly kind: "none" }
|
|
15
|
+
| { readonly kind: "all" }
|
|
16
|
+
| {
|
|
17
|
+
readonly kind: "selected"
|
|
18
|
+
readonly links: readonly LinkPathSelection[]
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Inert nested selection produced by `ObjectType.l.someLink.withLinks(...)`.
|
|
23
|
+
*
|
|
24
|
+
* It stores ids only. Consumers such as Share definitions resolve those ids against their own
|
|
25
|
+
* current ontology registry instead of trusting the token's embedded metadata.
|
|
26
|
+
*/
|
|
27
|
+
export type LinkPathSelection<
|
|
28
|
+
TSourceObjectTypeId extends string = string,
|
|
29
|
+
TLinkId extends string = string,
|
|
30
|
+
TTargetObjectTypeId extends string | readonly string[] = string | readonly string[],
|
|
31
|
+
> = {
|
|
32
|
+
readonly [linkPathSelectionBrand]?: never
|
|
33
|
+
readonly kind: "linkPathSelection"
|
|
34
|
+
readonly sourceObjectTypeId: TSourceObjectTypeId
|
|
35
|
+
readonly linkId: TLinkId
|
|
36
|
+
readonly targetObjectTypeId: TTargetObjectTypeId
|
|
37
|
+
readonly selection: LinkPathSelectionMode
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export type LinkPathSelectionInput<TSourceObjectTypeId extends string = string> =
|
|
41
|
+
| LinkToken<TSourceObjectTypeId>
|
|
42
|
+
| LinkPathSelection<TSourceObjectTypeId>
|
|
43
|
+
|
|
44
|
+
export interface LinkPathSelectionBuilder<
|
|
45
|
+
TSourceObjectTypeId extends string,
|
|
46
|
+
TLinkId extends string,
|
|
47
|
+
TTargetObjectTypeId extends string | readonly string[],
|
|
48
|
+
> {
|
|
49
|
+
withLinks(): LinkPathSelection<TSourceObjectTypeId, TLinkId, TTargetObjectTypeId>
|
|
50
|
+
withLinks<
|
|
51
|
+
const TLinks extends readonly LinkPathSelectionInput<
|
|
52
|
+
LinkTargetObjectTypeId<TTargetObjectTypeId>
|
|
53
|
+
>[],
|
|
54
|
+
>(links: TLinks): LinkPathSelection<TSourceObjectTypeId, TLinkId, TTargetObjectTypeId>
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** @internal Snapshot a token/path into the portable ids-only representation. */
|
|
58
|
+
export function snapshotLinkPathSelection(input: LinkPathSelectionInput): LinkPathSelection {
|
|
59
|
+
return snapshotLinkPathSelectionValue(input, new Set())
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function snapshotLinkPathSelectionValue(input: unknown, visiting: Set<object>): LinkPathSelection {
|
|
63
|
+
if (typeof input !== "object" || input === null || Array.isArray(input)) {
|
|
64
|
+
throw new Error("[Sixb] Link path selection must be a link token or nested link selection.")
|
|
65
|
+
}
|
|
66
|
+
if (visiting.has(input)) {
|
|
67
|
+
throw new Error("[Sixb] Link path selection must not contain a cycle.")
|
|
68
|
+
}
|
|
69
|
+
visiting.add(input)
|
|
70
|
+
try {
|
|
71
|
+
if (isLinkPathSelection(input)) {
|
|
72
|
+
return createLinkPathSelectionFromIds(
|
|
73
|
+
{
|
|
74
|
+
sourceObjectTypeId: input.sourceObjectTypeId,
|
|
75
|
+
linkId: input.linkId,
|
|
76
|
+
targetObjectTypeId: input.targetObjectTypeId,
|
|
77
|
+
selection: input.selection,
|
|
78
|
+
},
|
|
79
|
+
visiting
|
|
80
|
+
)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return createLinkPathSelectionFromIds(
|
|
84
|
+
{
|
|
85
|
+
sourceObjectTypeId: (input as { readonly objectTypeId?: unknown }).objectTypeId,
|
|
86
|
+
linkId: (input as { readonly id?: unknown }).id,
|
|
87
|
+
targetObjectTypeId: (input as { readonly targetObjectTypeId?: unknown }).targetObjectTypeId,
|
|
88
|
+
selection: { kind: "none" },
|
|
89
|
+
},
|
|
90
|
+
visiting
|
|
91
|
+
)
|
|
92
|
+
} finally {
|
|
93
|
+
visiting.delete(input)
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** @internal */
|
|
98
|
+
function isLinkPathSelection(value: unknown): value is LinkPathSelection {
|
|
99
|
+
return (
|
|
100
|
+
typeof value === "object" &&
|
|
101
|
+
value !== null &&
|
|
102
|
+
(value as { readonly kind?: unknown }).kind === "linkPathSelection"
|
|
103
|
+
)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export function createLinkPathSelection(
|
|
107
|
+
token: LinkToken,
|
|
108
|
+
links: readonly LinkPathSelectionInput[] | undefined
|
|
109
|
+
): LinkPathSelection {
|
|
110
|
+
if (links !== undefined && !Array.isArray(links)) {
|
|
111
|
+
throw new Error(`[Sixb] Link '${token.objectTypeId}.${token.id}' withLinks expects an array.`)
|
|
112
|
+
}
|
|
113
|
+
if (links?.length === 0) {
|
|
114
|
+
throw new Error(
|
|
115
|
+
`[Sixb] Link '${token.objectTypeId}.${token.id}' withLinks([]) is empty; omit withLinks() when no nested links should be selected.`
|
|
116
|
+
)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return createLinkPathSelectionFromIds({
|
|
120
|
+
sourceObjectTypeId: token.objectTypeId,
|
|
121
|
+
linkId: token.id,
|
|
122
|
+
targetObjectTypeId: token.targetObjectTypeId,
|
|
123
|
+
selection:
|
|
124
|
+
links === undefined
|
|
125
|
+
? { kind: "all" }
|
|
126
|
+
: { kind: "selected", links: links.map(snapshotLinkPathSelection) },
|
|
127
|
+
})
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function createLinkPathSelectionFromIds(
|
|
131
|
+
input: {
|
|
132
|
+
readonly sourceObjectTypeId: unknown
|
|
133
|
+
readonly linkId: unknown
|
|
134
|
+
readonly targetObjectTypeId: unknown
|
|
135
|
+
readonly selection: unknown
|
|
136
|
+
},
|
|
137
|
+
visiting: Set<object> = new Set()
|
|
138
|
+
): LinkPathSelection {
|
|
139
|
+
const sourceObjectTypeId = nonEmptyLinkSelectionId(
|
|
140
|
+
input.sourceObjectTypeId,
|
|
141
|
+
"source object type id"
|
|
142
|
+
)
|
|
143
|
+
const linkId = nonEmptyLinkSelectionId(input.linkId, "link id")
|
|
144
|
+
const targetObjectTypeId = snapshotLinkTarget(input.targetObjectTypeId)
|
|
145
|
+
const selection = snapshotLinkSelectionMode(input.selection, visiting)
|
|
146
|
+
return Object.freeze({
|
|
147
|
+
kind: "linkPathSelection" as const,
|
|
148
|
+
sourceObjectTypeId,
|
|
149
|
+
linkId,
|
|
150
|
+
targetObjectTypeId,
|
|
151
|
+
selection,
|
|
152
|
+
})
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
function snapshotLinkSelectionMode(value: unknown, visiting: Set<object>): LinkPathSelectionMode {
|
|
156
|
+
if (typeof value !== "object" || value === null) {
|
|
157
|
+
throw new Error("[Sixb] Link path selection must declare nested links.")
|
|
158
|
+
}
|
|
159
|
+
const kind = (value as { readonly kind?: unknown }).kind
|
|
160
|
+
if (kind === "none" || kind === "all") return Object.freeze({ kind })
|
|
161
|
+
if (kind !== "selected") {
|
|
162
|
+
throw new Error(`[Sixb] Unknown nested link selection '${String(kind)}'.`)
|
|
163
|
+
}
|
|
164
|
+
const links = (value as { readonly links?: unknown }).links
|
|
165
|
+
if (!Array.isArray(links)) {
|
|
166
|
+
throw new Error("[Sixb] Selected nested links must be an array.")
|
|
167
|
+
}
|
|
168
|
+
if (links.length === 0) {
|
|
169
|
+
throw new Error(
|
|
170
|
+
"[Sixb] Selected nested links must not be empty; omit withLinks() when no nested links should be selected."
|
|
171
|
+
)
|
|
172
|
+
}
|
|
173
|
+
return Object.freeze({
|
|
174
|
+
kind: "selected" as const,
|
|
175
|
+
links: Object.freeze(links.map((link) => snapshotLinkPathSelectionValue(link, visiting))),
|
|
176
|
+
})
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function snapshotLinkTarget(value: unknown): string | readonly string[] {
|
|
180
|
+
if (Array.isArray(value)) {
|
|
181
|
+
return Object.freeze(
|
|
182
|
+
value.map((item) => nonEmptyLinkSelectionId(item, "target object type id"))
|
|
183
|
+
)
|
|
184
|
+
}
|
|
185
|
+
return nonEmptyLinkSelectionId(value, "target object type id")
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
function nonEmptyLinkSelectionId(value: unknown, field: string): string {
|
|
189
|
+
if (typeof value !== "string" || !value.trim()) {
|
|
190
|
+
throw new Error(`[Sixb] Link path ${field} must not be empty.`)
|
|
191
|
+
}
|
|
192
|
+
return value
|
|
193
|
+
}
|
package/src/ontology/refs.ts
CHANGED
|
@@ -34,6 +34,25 @@ export function ref<const TObjectType extends ObjectType>(
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
/** Build an exact, typed reference to one object instance. */
|
|
38
|
+
export function objectRef<const TObjectType extends ObjectType>(
|
|
39
|
+
objectType: TObjectType,
|
|
40
|
+
primaryId: string
|
|
41
|
+
): ObjectRef<TObjectType["id"]> {
|
|
42
|
+
if (
|
|
43
|
+
typeof objectType !== "object" ||
|
|
44
|
+
objectType === null ||
|
|
45
|
+
typeof objectType.id !== "string" ||
|
|
46
|
+
!objectType.id.trim()
|
|
47
|
+
) {
|
|
48
|
+
throw new OntologyValidationError("[Sixb] Object reference type must be an object type.")
|
|
49
|
+
}
|
|
50
|
+
if (typeof primaryId !== "string" || !primaryId.trim()) {
|
|
51
|
+
throw new OntologyValidationError("[Sixb] Object reference primary id must not be empty.")
|
|
52
|
+
}
|
|
53
|
+
return Object.freeze({ objectTypeId: objectType.id, primaryId })
|
|
54
|
+
}
|
|
55
|
+
|
|
37
56
|
export function isObjectRefSchema(schema: SchemaOrRef): schema is ObjectRefSchema {
|
|
38
57
|
return (
|
|
39
58
|
typeof schema === "object" &&
|
package/src/ontology/tokens.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createLinkPathSelection,
|
|
3
|
+
type LinkPathSelectionBuilder,
|
|
4
|
+
type LinkPathSelectionInput,
|
|
5
|
+
} from "./link-path-selection"
|
|
1
6
|
import type { ObjectLink, ObjectType, Property } from "./types"
|
|
2
7
|
|
|
3
8
|
declare const propertyTokenBrand: unique symbol
|
|
@@ -38,7 +43,7 @@ export type LinkToken<
|
|
|
38
43
|
readonly id: TLinkId
|
|
39
44
|
readonly targetObjectTypeId: TTargetObjectTypeId
|
|
40
45
|
readonly link: TLink
|
|
41
|
-
}
|
|
46
|
+
} & LinkPathSelectionBuilder<TObjectTypeId, TLinkId, TTargetObjectTypeId>
|
|
42
47
|
|
|
43
48
|
export type LinkTokenMap<TObjectType extends ObjectType> = {
|
|
44
49
|
readonly [L in TObjectType["links"][number] as L["id"]]: LinkToken<
|
|
@@ -95,17 +100,19 @@ export function createLinkTokenMap<TObjectType extends ObjectType>(
|
|
|
95
100
|
objectType: TObjectType
|
|
96
101
|
): LinkTokenMap<TObjectType> {
|
|
97
102
|
const tokenEntries = objectType.links.map((link) => {
|
|
98
|
-
const token
|
|
99
|
-
TObjectType["id"],
|
|
100
|
-
typeof link.id,
|
|
101
|
-
typeof link.targetObjectTypeId,
|
|
102
|
-
typeof link
|
|
103
|
-
> = {
|
|
103
|
+
const token = {
|
|
104
104
|
objectTypeId: objectType.id,
|
|
105
105
|
id: link.id,
|
|
106
106
|
targetObjectTypeId: link.targetObjectTypeId,
|
|
107
107
|
link,
|
|
108
|
-
}
|
|
108
|
+
} as LinkToken<TObjectType["id"], typeof link.id, typeof link.targetObjectTypeId, typeof link>
|
|
109
|
+
Object.defineProperty(token, "withLinks", {
|
|
110
|
+
configurable: false,
|
|
111
|
+
enumerable: false,
|
|
112
|
+
writable: false,
|
|
113
|
+
value: (...args: [links?: readonly LinkPathSelectionInput[]]) =>
|
|
114
|
+
createLinkPathSelection(token, args.length === 0 ? undefined : args[0]),
|
|
115
|
+
})
|
|
109
116
|
return [link.id, token] as const
|
|
110
117
|
})
|
|
111
118
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { canViewPipelineRun,
|
|
1
|
+
import { assertAuthorized, canViewPipelineRun, isRuntimeAllowed } from "../authorization"
|
|
2
2
|
import type { ExecutionContext } from "../execution"
|
|
3
|
+
import { resolveRuntimeAuthorizationForProject } from "../execution/authorization"
|
|
3
4
|
import type { SixbRuntimeContext } from "../runtime/types"
|
|
4
5
|
import type {
|
|
5
6
|
ListLatestPipelineRunsResult,
|
|
@@ -41,30 +42,46 @@ export function createPipelinesRuntime(
|
|
|
41
42
|
execution: ExecutionContext,
|
|
42
43
|
source: Pick<PipelinesRuntime, "list" | "getById">
|
|
43
44
|
): PipelinesRuntime {
|
|
45
|
+
const authority = resolveRuntimeAuthorizationForProject(runtime)
|
|
44
46
|
const allowed = (pipelineId: string) =>
|
|
45
|
-
|
|
47
|
+
isRuntimeAllowed(runtime, { kind: "pipeline.run", pipelineId })
|
|
46
48
|
const visibleIds = () =>
|
|
47
49
|
source
|
|
48
50
|
.list()
|
|
49
51
|
.filter((pipeline) => allowed(pipeline.id))
|
|
50
52
|
.map((pipeline) => pipeline.id)
|
|
53
|
+
const historyFilterIds = () =>
|
|
54
|
+
authority.type === "unrestricted"
|
|
55
|
+
? undefined
|
|
56
|
+
: authority.type === "principal"
|
|
57
|
+
? visibleIds()
|
|
58
|
+
: []
|
|
51
59
|
|
|
52
60
|
const getRun = async (runId: string) => {
|
|
61
|
+
if (authority.type === "denied" || authority.type === "delegated") return null
|
|
53
62
|
const run =
|
|
54
63
|
(await runtime.storage.pipelineRuns?.getById({
|
|
55
64
|
projectId: runtime.projectId,
|
|
56
65
|
id: runId,
|
|
57
66
|
})) ?? null
|
|
58
|
-
|
|
67
|
+
if (!run) return null
|
|
68
|
+
return authority.type === "unrestricted" || canViewPipelineRun(authority.context, run)
|
|
69
|
+
? run
|
|
70
|
+
: null
|
|
59
71
|
}
|
|
60
72
|
|
|
61
73
|
return {
|
|
62
|
-
list: () =>
|
|
74
|
+
list: () =>
|
|
75
|
+
authority.type === "denied" || authority.type === "delegated"
|
|
76
|
+
? []
|
|
77
|
+
: source.list().filter((pipeline) => allowed(pipeline.id)),
|
|
63
78
|
getById: (pipelineId) => {
|
|
79
|
+
if (authority.type === "denied" || authority.type === "delegated") return null
|
|
64
80
|
const pipeline = source.getById(pipelineId)
|
|
65
81
|
return pipeline && allowed(pipelineId) ? pipeline : null
|
|
66
82
|
},
|
|
67
83
|
request: async (input) => {
|
|
84
|
+
assertAuthorized(runtime, { kind: "pipeline.run", pipelineId: input.pipelineId })
|
|
68
85
|
const pipeline = source.getById(input.pipelineId)
|
|
69
86
|
if (!pipeline) throw new PipelineError(`[Sixb] Unknown pipeline '${input.pipelineId}'`)
|
|
70
87
|
return requestPipelineRun(runtime, execution, pipeline, input)
|
|
@@ -72,15 +89,21 @@ export function createPipelinesRuntime(
|
|
|
72
89
|
runs: {
|
|
73
90
|
getById: getRun,
|
|
74
91
|
list: (input = {}) => {
|
|
92
|
+
if (authority.type === "denied" || authority.type === "delegated") {
|
|
93
|
+
return Promise.resolve({ runs: [], hasMore: false, total: 0 })
|
|
94
|
+
}
|
|
75
95
|
const storage = runtime.storage.pipelineRuns
|
|
76
96
|
if (!storage) return Promise.resolve({ runs: [], hasMore: false, total: 0 })
|
|
77
97
|
return storage.list({
|
|
78
|
-
projectId: runtime.projectId,
|
|
79
98
|
...input,
|
|
80
|
-
pipelineIds:
|
|
99
|
+
pipelineIds: historyFilterIds(),
|
|
100
|
+
projectId: runtime.projectId,
|
|
81
101
|
})
|
|
82
102
|
},
|
|
83
103
|
listLatest: (pipelineIds) => {
|
|
104
|
+
if (authority.type === "denied" || authority.type === "delegated") {
|
|
105
|
+
return Promise.resolve({ runs: [] })
|
|
106
|
+
}
|
|
84
107
|
const storage = runtime.storage.pipelineRuns
|
|
85
108
|
if (!storage || pipelineIds.length === 0) return Promise.resolve({ runs: [] })
|
|
86
109
|
const allowedIds = pipelineIds.filter(allowed)
|
|
@@ -95,9 +118,9 @@ export function createPipelinesRuntime(
|
|
|
95
118
|
const storage = runtime.storage.pipelineRuns
|
|
96
119
|
if (!storage || !(await getRun(runId))) return null
|
|
97
120
|
return storage.listSteps({
|
|
98
|
-
projectId: runtime.projectId,
|
|
99
121
|
...input,
|
|
100
122
|
pipelineRunId: runId,
|
|
123
|
+
projectId: runtime.projectId,
|
|
101
124
|
})
|
|
102
125
|
},
|
|
103
126
|
},
|
package/src/pipelines/request.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { assertAuthorized } from "../authorization"
|
|
2
|
+
import { resolveExecutionScopeAuthorization } from "../execution/authorization"
|
|
2
3
|
import {
|
|
3
4
|
createPrimitiveExecutionRecord,
|
|
4
5
|
ensureExecutionRecord,
|
|
@@ -42,6 +43,10 @@ export async function requestPipelineRun(
|
|
|
42
43
|
pipeline: PipelineDefinition,
|
|
43
44
|
options: PipelineRunRequestOptions = {}
|
|
44
45
|
): Promise<PipelineRunRequestResult> {
|
|
46
|
+
resolveExecutionScopeAuthorization(runtime.projectId, {
|
|
47
|
+
execution,
|
|
48
|
+
authorization: runtime.runtimeAuthorization,
|
|
49
|
+
})
|
|
45
50
|
assertAuthorized(runtime, { kind: "pipeline.run", pipelineId: pipeline.id })
|
|
46
51
|
if (!runtime.storage.pipelineRuns) {
|
|
47
52
|
throw new PipelineError("[Sixb] Pipeline run storage is not configured.")
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { canViewProjection, canViewProjectionRun } from "../authorization"
|
|
2
|
+
import { resolveRuntimeAuthorizationForProject } from "../execution/authorization"
|
|
2
3
|
import type { SixbRuntimeContext } from "../runtime/types"
|
|
3
4
|
import type {
|
|
4
5
|
ListLatestProjectionRunsResult,
|
|
@@ -35,8 +36,31 @@ export function createProjectionsRuntime(
|
|
|
35
36
|
runtime: SixbRuntimeContext,
|
|
36
37
|
source: ProjectionDefinitionCatalog
|
|
37
38
|
): ProjectionsRuntime {
|
|
38
|
-
const
|
|
39
|
-
|
|
39
|
+
const authority = resolveRuntimeAuthorizationForProject(runtime)
|
|
40
|
+
const listVisible = <TProjection extends ProjectionDefinition>(
|
|
41
|
+
list: () => readonly TProjection[]
|
|
42
|
+
): readonly TProjection[] => {
|
|
43
|
+
switch (authority.type) {
|
|
44
|
+
case "denied":
|
|
45
|
+
case "delegated":
|
|
46
|
+
return []
|
|
47
|
+
case "principal":
|
|
48
|
+
return list().filter((projection) => canViewProjection(authority.context, projection))
|
|
49
|
+
case "unrestricted":
|
|
50
|
+
return [...list()]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const visible = (projection: ProjectionDefinition) => {
|
|
54
|
+
switch (authority.type) {
|
|
55
|
+
case "denied":
|
|
56
|
+
case "delegated":
|
|
57
|
+
return false
|
|
58
|
+
case "principal":
|
|
59
|
+
return canViewProjection(authority.context, projection)
|
|
60
|
+
case "unrestricted":
|
|
61
|
+
return true
|
|
62
|
+
}
|
|
63
|
+
}
|
|
40
64
|
const visibleIds = (projectionIds: readonly string[]) =>
|
|
41
65
|
projectionIds.filter((projectionId) => {
|
|
42
66
|
const projection = source.getById(projectionId)
|
|
@@ -44,35 +68,72 @@ export function createProjectionsRuntime(
|
|
|
44
68
|
})
|
|
45
69
|
|
|
46
70
|
return {
|
|
47
|
-
list: () => source.list()
|
|
48
|
-
listObjects: () => source.listObjects()
|
|
49
|
-
listLinks: () => source.listLinks()
|
|
50
|
-
listTelemetry: () => source.listTelemetry()
|
|
71
|
+
list: () => listVisible(() => source.list()),
|
|
72
|
+
listObjects: () => listVisible(() => source.listObjects()),
|
|
73
|
+
listLinks: () => listVisible(() => source.listLinks()),
|
|
74
|
+
listTelemetry: () => listVisible(() => source.listTelemetry()),
|
|
51
75
|
getById: (projectionId) => {
|
|
76
|
+
switch (authority.type) {
|
|
77
|
+
case "denied":
|
|
78
|
+
case "delegated":
|
|
79
|
+
return null
|
|
80
|
+
case "principal":
|
|
81
|
+
case "unrestricted":
|
|
82
|
+
break
|
|
83
|
+
}
|
|
52
84
|
const projection = source.getById(projectionId)
|
|
53
85
|
return projection && visible(projection) ? projection : null
|
|
54
86
|
},
|
|
55
87
|
runs: {
|
|
56
88
|
getById: async (runId) => {
|
|
89
|
+
switch (authority.type) {
|
|
90
|
+
case "denied":
|
|
91
|
+
case "delegated":
|
|
92
|
+
return null
|
|
93
|
+
case "principal":
|
|
94
|
+
case "unrestricted":
|
|
95
|
+
break
|
|
96
|
+
}
|
|
57
97
|
const run =
|
|
58
98
|
(await runtime.storage.projectionRuns?.getById({
|
|
59
99
|
projectId: runtime.projectId,
|
|
60
100
|
id: runId,
|
|
61
101
|
})) ?? null
|
|
62
|
-
|
|
102
|
+
if (!run) return null
|
|
103
|
+
return authority.type === "unrestricted" ||
|
|
104
|
+
canViewProjectionRun(authority.context, run.target)
|
|
105
|
+
? run
|
|
106
|
+
: null
|
|
63
107
|
},
|
|
64
108
|
list: (input = {}) => {
|
|
109
|
+
switch (authority.type) {
|
|
110
|
+
case "denied":
|
|
111
|
+
case "delegated":
|
|
112
|
+
return Promise.resolve({ runs: [], hasMore: false, total: 0 })
|
|
113
|
+
case "principal":
|
|
114
|
+
case "unrestricted":
|
|
115
|
+
break
|
|
116
|
+
}
|
|
65
117
|
const storage = runtime.storage.projectionRuns
|
|
66
118
|
if (!storage) return Promise.resolve({ runs: [], hasMore: false, total: 0 })
|
|
67
119
|
return storage.list({
|
|
68
|
-
projectId: runtime.projectId,
|
|
69
120
|
...input,
|
|
70
|
-
objectTypeIds:
|
|
71
|
-
|
|
72
|
-
|
|
121
|
+
objectTypeIds:
|
|
122
|
+
authority.type === "principal"
|
|
123
|
+
? [...authority.context.grants["view:object"]]
|
|
124
|
+
: undefined,
|
|
125
|
+
projectId: runtime.projectId,
|
|
73
126
|
})
|
|
74
127
|
},
|
|
75
128
|
listLatest: (projectionIds) => {
|
|
129
|
+
switch (authority.type) {
|
|
130
|
+
case "denied":
|
|
131
|
+
case "delegated":
|
|
132
|
+
return Promise.resolve({ runs: [] })
|
|
133
|
+
case "principal":
|
|
134
|
+
case "unrestricted":
|
|
135
|
+
break
|
|
136
|
+
}
|
|
76
137
|
const storage = runtime.storage.projectionRuns
|
|
77
138
|
if (!storage || projectionIds.length === 0) return Promise.resolve({ runs: [] })
|
|
78
139
|
const ids = visibleIds(projectionIds)
|
|
@@ -4,7 +4,7 @@ import { createSixbError, toSixbFailure } from "../errors/internal"
|
|
|
4
4
|
import type { SixbFailure } from "../errors/types"
|
|
5
5
|
import type { RunDispatcher } from "../execution/dispatch"
|
|
6
6
|
import { createPrimitiveExecutionRecord } from "../execution/durable"
|
|
7
|
-
import type { LakeStorage } from "../lake-storage"
|
|
7
|
+
import type { DatasetProducer, LakeStorage } from "../lake-storage"
|
|
8
8
|
import type { Queues } from "../queues"
|
|
9
9
|
import type { SixbDefinitions } from "../runtime/definitions"
|
|
10
10
|
import type { ExecutionRecord, ProjectionRunRecord, Storage } from "../storage"
|
|
@@ -289,14 +289,11 @@ async function assertExistingRun(
|
|
|
289
289
|
async function resolveProducerExecution(
|
|
290
290
|
storage: Storage,
|
|
291
291
|
projectId: string,
|
|
292
|
-
producer:
|
|
293
|
-
| {
|
|
294
|
-
readonly kind: "sync" | "pipeline"
|
|
295
|
-
readonly id?: string
|
|
296
|
-
readonly runId?: string
|
|
297
|
-
}
|
|
298
|
-
| undefined
|
|
292
|
+
producer: DatasetProducer | undefined
|
|
299
293
|
): Promise<ExecutionRecord | null> {
|
|
294
|
+
if (producer?.kind === "ingest") {
|
|
295
|
+
return producer.id ? storage.executions.getById({ projectId, id: producer.id }) : null
|
|
296
|
+
}
|
|
300
297
|
if (!producer?.runId) return null
|
|
301
298
|
if (producer.kind === "sync") {
|
|
302
299
|
const run = await storage.syncRuns?.getById({ projectId, id: producer.runId })
|
|
@@ -342,10 +339,7 @@ async function requireProducerExecution(input: {
|
|
|
342
339
|
)
|
|
343
340
|
}
|
|
344
341
|
|
|
345
|
-
function assertProducerId(
|
|
346
|
-
producer: { readonly kind: "sync" | "pipeline"; readonly id?: string; readonly runId?: string },
|
|
347
|
-
runOwnerId: string
|
|
348
|
-
): void {
|
|
342
|
+
function assertProducerId(producer: DatasetProducer, runOwnerId: string): void {
|
|
349
343
|
if (producer.id === undefined || producer.id === runOwnerId) return
|
|
350
344
|
throw new ProjectionValidationError(
|
|
351
345
|
`[Sixb] Dataset producer '${producer.kind}:${producer.id}' does not match run '${producer.runId}'.`
|