@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
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
import {
|
|
3
|
+
compileSelectedObjectReadScope
|
|
4
|
+
} from "./chunk-r8jrnexe.js";
|
|
2
5
|
import {
|
|
3
6
|
resolveSemanticType
|
|
4
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-h0k55pc7.js";
|
|
5
8
|
import {
|
|
6
9
|
createSixbError
|
|
7
10
|
} from "./chunk-2xns679x.js";
|
|
@@ -9,6 +12,14 @@ import {
|
|
|
9
12
|
compareStrings
|
|
10
13
|
} from "./chunk-n6jxh8sw.js";
|
|
11
14
|
|
|
15
|
+
// src/execution/authorization.ts
|
|
16
|
+
import { isDeepStrictEqual } from "util";
|
|
17
|
+
|
|
18
|
+
// src/agents/identity.ts
|
|
19
|
+
function agentServiceAccountId(actorId) {
|
|
20
|
+
return `svc_agent_${actorId}`;
|
|
21
|
+
}
|
|
22
|
+
|
|
12
23
|
// src/authorization/grant-kinds.ts
|
|
13
24
|
var GRANT_KINDS = {
|
|
14
25
|
"access:application": {
|
|
@@ -42,6 +53,11 @@ var GRANT_KINDS = {
|
|
|
42
53
|
subject: "action",
|
|
43
54
|
fix: "Add it to 'actions/' or pass it to createSixb({ actions })."
|
|
44
55
|
},
|
|
56
|
+
"share:share": {
|
|
57
|
+
universeKey: "shareIds",
|
|
58
|
+
subject: "share",
|
|
59
|
+
fix: "Add it to 'shares/' or pass it to createSixb({ shares })."
|
|
60
|
+
},
|
|
45
61
|
"run:workflow": {
|
|
46
62
|
universeKey: "workflowIds",
|
|
47
63
|
subject: "workflow",
|
|
@@ -97,6 +113,8 @@ function grantKindOf(grant) {
|
|
|
97
113
|
return "append:telemetry";
|
|
98
114
|
case "apply":
|
|
99
115
|
return "apply:action";
|
|
116
|
+
case "share":
|
|
117
|
+
return "share:share";
|
|
100
118
|
case "run":
|
|
101
119
|
return `run:${grant.target}`;
|
|
102
120
|
case "observe":
|
|
@@ -113,6 +131,7 @@ function emptyGrantSets() {
|
|
|
113
131
|
"edit:object": new Set,
|
|
114
132
|
"append:telemetry": new Set,
|
|
115
133
|
"apply:action": new Set,
|
|
134
|
+
"share:share": new Set,
|
|
116
135
|
"run:workflow": new Set,
|
|
117
136
|
"run:sync": new Set,
|
|
118
137
|
"run:pipeline": new Set,
|
|
@@ -124,6 +143,245 @@ function emptyGrantSets() {
|
|
|
124
143
|
};
|
|
125
144
|
}
|
|
126
145
|
|
|
146
|
+
// src/storage/objects/execution-limits.ts
|
|
147
|
+
var MAX_OBJECT_READ_FACETS = 16;
|
|
148
|
+
var MAX_OUTPUT_JSON_DEPTH = 64;
|
|
149
|
+
|
|
150
|
+
class ObjectReadLimitExceededError extends Error {
|
|
151
|
+
metric;
|
|
152
|
+
limit;
|
|
153
|
+
name = "ObjectReadLimitExceededError";
|
|
154
|
+
code = "object_read_limit_exceeded";
|
|
155
|
+
constructor(metric, limit) {
|
|
156
|
+
super(`[Sixb] Object read exceeded its ${metric} limit (${limit}).`);
|
|
157
|
+
this.metric = metric;
|
|
158
|
+
this.limit = limit;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function snapshotObjectReadExecutionLimits(limits) {
|
|
162
|
+
if (typeof limits !== "object" || limits === null) {
|
|
163
|
+
throw new Error("[Sixb] Object read execution limits must be provided.");
|
|
164
|
+
}
|
|
165
|
+
return Object.freeze({
|
|
166
|
+
maxTraversalFacts: positiveSafeInteger(limits.maxTraversalFacts, "maxTraversalFacts"),
|
|
167
|
+
maxOutputJsonBytes: positiveSafeInteger(limits.maxOutputJsonBytes, "maxOutputJsonBytes")
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
function assertObjectReadFacetCount(count) {
|
|
171
|
+
if (!Number.isSafeInteger(count) || count < 0 || count > MAX_OBJECT_READ_FACETS) {
|
|
172
|
+
throw new Error(`[Sixb] An object read supports between 0 and ${MAX_OBJECT_READ_FACETS} facets.`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
function assertObjectReadOutputWithinLimit(value, limits) {
|
|
176
|
+
const fail = () => {
|
|
177
|
+
throw new ObjectReadLimitExceededError("outputJsonBytes", limits.maxOutputJsonBytes);
|
|
178
|
+
};
|
|
179
|
+
const stack = [];
|
|
180
|
+
let bytes = 0;
|
|
181
|
+
const addBytes = (count) => {
|
|
182
|
+
bytes += count;
|
|
183
|
+
if (bytes > limits.maxOutputJsonBytes)
|
|
184
|
+
fail();
|
|
185
|
+
};
|
|
186
|
+
const addPrimitiveBytes = (primitive) => {
|
|
187
|
+
switch (typeof primitive) {
|
|
188
|
+
case "string":
|
|
189
|
+
addBytes(jsonStringUtf8Length(primitive));
|
|
190
|
+
break;
|
|
191
|
+
case "number":
|
|
192
|
+
addBytes(Number.isFinite(primitive) ? Object.is(primitive, -0) ? 1 : String(primitive).length : 4);
|
|
193
|
+
break;
|
|
194
|
+
case "boolean":
|
|
195
|
+
addBytes(primitive ? 4 : 5);
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
try {
|
|
200
|
+
JSON.stringify(value, function(key, current) {
|
|
201
|
+
const parent = isObject(this) ? this : undefined;
|
|
202
|
+
let parentFrameIndex = -1;
|
|
203
|
+
if (parent) {
|
|
204
|
+
for (let index = stack.length - 1;index >= 0; index -= 1) {
|
|
205
|
+
if (stack[index]?.value === parent) {
|
|
206
|
+
parentFrameIndex = index;
|
|
207
|
+
break;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
const isRoot = parentFrameIndex === -1;
|
|
212
|
+
if (isRoot) {
|
|
213
|
+
stack.length = 0;
|
|
214
|
+
} else {
|
|
215
|
+
stack.length = parentFrameIndex + 1;
|
|
216
|
+
}
|
|
217
|
+
const parentFrame = isRoot ? undefined : stack[parentFrameIndex];
|
|
218
|
+
const parentIsArray = Array.isArray(parent);
|
|
219
|
+
const unsupported = current === undefined || typeof current === "function" || typeof current === "symbol";
|
|
220
|
+
if (!isRoot) {
|
|
221
|
+
if (!parentIsArray && unsupported)
|
|
222
|
+
return current;
|
|
223
|
+
if (!parentFrame)
|
|
224
|
+
return fail();
|
|
225
|
+
if (parentFrame.serializedChildren > 0)
|
|
226
|
+
addBytes(1);
|
|
227
|
+
parentFrame.serializedChildren += 1;
|
|
228
|
+
if (!parentIsArray)
|
|
229
|
+
addBytes(jsonStringUtf8Length(key) + 1);
|
|
230
|
+
} else if (unsupported) {
|
|
231
|
+
return current;
|
|
232
|
+
}
|
|
233
|
+
if (parentIsArray && unsupported) {
|
|
234
|
+
addBytes(4);
|
|
235
|
+
return current;
|
|
236
|
+
}
|
|
237
|
+
if (isObject(current)) {
|
|
238
|
+
const special = inspectJsonSpecialObject(current);
|
|
239
|
+
switch (special.kind) {
|
|
240
|
+
case "primitive":
|
|
241
|
+
addPrimitiveBytes(special.value);
|
|
242
|
+
return special.value;
|
|
243
|
+
case "bigint":
|
|
244
|
+
throw new TypeError("BigInt is not JSON serializable");
|
|
245
|
+
case "raw":
|
|
246
|
+
addBytes(rawJsonUtf8Length(special.value));
|
|
247
|
+
return current;
|
|
248
|
+
case "ordinary":
|
|
249
|
+
break;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
switch (typeof current) {
|
|
253
|
+
case "string":
|
|
254
|
+
addPrimitiveBytes(current);
|
|
255
|
+
break;
|
|
256
|
+
case "number":
|
|
257
|
+
addPrimitiveBytes(current);
|
|
258
|
+
break;
|
|
259
|
+
case "boolean":
|
|
260
|
+
addPrimitiveBytes(current);
|
|
261
|
+
break;
|
|
262
|
+
case "bigint":
|
|
263
|
+
throw new TypeError("BigInt is not JSON serializable");
|
|
264
|
+
case "object":
|
|
265
|
+
if (current === null) {
|
|
266
|
+
addBytes(4);
|
|
267
|
+
break;
|
|
268
|
+
}
|
|
269
|
+
if (stack.some((frame) => frame.value === current)) {
|
|
270
|
+
throw new TypeError("Cyclic object value");
|
|
271
|
+
}
|
|
272
|
+
if (stack.length + 1 > MAX_OUTPUT_JSON_DEPTH)
|
|
273
|
+
fail();
|
|
274
|
+
addBytes(2);
|
|
275
|
+
stack.push({ value: current, serializedChildren: 0 });
|
|
276
|
+
break;
|
|
277
|
+
}
|
|
278
|
+
return current;
|
|
279
|
+
});
|
|
280
|
+
} catch (error) {
|
|
281
|
+
if (error instanceof ObjectReadLimitExceededError)
|
|
282
|
+
throw error;
|
|
283
|
+
if (error instanceof RangeError || error instanceof TypeError)
|
|
284
|
+
fail();
|
|
285
|
+
throw error;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
var jsonWithRawJson = JSON;
|
|
289
|
+
var isRawJson = jsonWithRawJson.isRawJSON?.bind(jsonWithRawJson);
|
|
290
|
+
var booleanValueOf = bindValueOf(Boolean.prototype.valueOf);
|
|
291
|
+
var numberValueOf = bindValueOf(Number.prototype.valueOf);
|
|
292
|
+
var stringValueOf = bindValueOf(String.prototype.valueOf);
|
|
293
|
+
var bigintValueOf = bindValueOf(BigInt.prototype.valueOf);
|
|
294
|
+
var toStringValue = String;
|
|
295
|
+
function inspectJsonSpecialObject(value) {
|
|
296
|
+
if (isRawJson?.(value)) {
|
|
297
|
+
const raw = value.rawJSON;
|
|
298
|
+
if (typeof raw !== "string")
|
|
299
|
+
return { kind: "ordinary" };
|
|
300
|
+
return { kind: "raw", value: raw };
|
|
301
|
+
}
|
|
302
|
+
const boolean = unbox(value, booleanValueOf);
|
|
303
|
+
if (boolean.matched)
|
|
304
|
+
return { kind: "primitive", value: boolean.value };
|
|
305
|
+
const number = unbox(value, numberValueOf);
|
|
306
|
+
if (number.matched)
|
|
307
|
+
return { kind: "primitive", value: +value };
|
|
308
|
+
const string = unbox(value, stringValueOf);
|
|
309
|
+
if (string.matched)
|
|
310
|
+
return { kind: "primitive", value: toStringValue(value) };
|
|
311
|
+
if (unbox(value, bigintValueOf).matched)
|
|
312
|
+
return { kind: "bigint" };
|
|
313
|
+
return { kind: "ordinary" };
|
|
314
|
+
}
|
|
315
|
+
function bindValueOf(unboxer) {
|
|
316
|
+
return Function.prototype.call.bind(unboxer);
|
|
317
|
+
}
|
|
318
|
+
function unbox(value, unboxer) {
|
|
319
|
+
try {
|
|
320
|
+
return { matched: true, value: unboxer(value) };
|
|
321
|
+
} catch {
|
|
322
|
+
return { matched: false };
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
function rawJsonUtf8Length(value) {
|
|
326
|
+
let bytes = 0;
|
|
327
|
+
for (let index = 0;index < value.length; index += 1) {
|
|
328
|
+
const code = value.charCodeAt(index);
|
|
329
|
+
if (code <= 127) {
|
|
330
|
+
bytes += 1;
|
|
331
|
+
} else if (code <= 2047) {
|
|
332
|
+
bytes += 2;
|
|
333
|
+
} else if (code >= 55296 && code <= 56319) {
|
|
334
|
+
const next = value.charCodeAt(index + 1);
|
|
335
|
+
if (next >= 56320 && next <= 57343) {
|
|
336
|
+
bytes += 4;
|
|
337
|
+
index += 1;
|
|
338
|
+
} else {
|
|
339
|
+
bytes += 3;
|
|
340
|
+
}
|
|
341
|
+
} else {
|
|
342
|
+
bytes += 3;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return bytes;
|
|
346
|
+
}
|
|
347
|
+
function jsonStringUtf8Length(value) {
|
|
348
|
+
let bytes = 2;
|
|
349
|
+
for (let index = 0;index < value.length; index += 1) {
|
|
350
|
+
const code = value.charCodeAt(index);
|
|
351
|
+
if (code === 34 || code === 92) {
|
|
352
|
+
bytes += 2;
|
|
353
|
+
} else if (code <= 31) {
|
|
354
|
+
bytes += code === 8 || code === 9 || code === 10 || code === 12 || code === 13 ? 2 : 6;
|
|
355
|
+
} else if (code <= 127) {
|
|
356
|
+
bytes += 1;
|
|
357
|
+
} else if (code <= 2047) {
|
|
358
|
+
bytes += 2;
|
|
359
|
+
} else if (code >= 55296 && code <= 56319) {
|
|
360
|
+
const next = value.charCodeAt(index + 1);
|
|
361
|
+
if (next >= 56320 && next <= 57343) {
|
|
362
|
+
bytes += 4;
|
|
363
|
+
index += 1;
|
|
364
|
+
} else {
|
|
365
|
+
bytes += 6;
|
|
366
|
+
}
|
|
367
|
+
} else if (code >= 56320 && code <= 57343) {
|
|
368
|
+
bytes += 6;
|
|
369
|
+
} else {
|
|
370
|
+
bytes += 3;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return bytes;
|
|
374
|
+
}
|
|
375
|
+
function isObject(value) {
|
|
376
|
+
return typeof value === "object" && value !== null;
|
|
377
|
+
}
|
|
378
|
+
function positiveSafeInteger(value, name) {
|
|
379
|
+
if (typeof value !== "number" || !Number.isSafeInteger(value) || value <= 0) {
|
|
380
|
+
throw new Error(`[Sixb] ${name} must be a positive safe integer.`);
|
|
381
|
+
}
|
|
382
|
+
return value;
|
|
383
|
+
}
|
|
384
|
+
|
|
127
385
|
// src/execution/types.ts
|
|
128
386
|
class RuntimeAuthorizationCapability {
|
|
129
387
|
#runtimeAuthorization = true;
|
|
@@ -146,35 +404,32 @@ function isRuntimeAuthorizationCapability(value) {
|
|
|
146
404
|
|
|
147
405
|
// src/execution/authorization.ts
|
|
148
406
|
var registeredAuthorizations = new WeakMap;
|
|
407
|
+
var MAX_DELEGATED_ACTION_APPLY_TARGETS = 4096;
|
|
408
|
+
var MAX_DELEGATED_ACTION_IDENTIFIER_CHARACTERS = 1e6;
|
|
149
409
|
function createPrincipalRuntimeAuthorization(input) {
|
|
410
|
+
if (input.execution.executor.type !== "request") {
|
|
411
|
+
throw new Error("[Sixb] Principal runtime authorization requires a request execution.");
|
|
412
|
+
}
|
|
150
413
|
return createRegisteredPrincipalAuthorization(input);
|
|
151
414
|
}
|
|
152
415
|
function createAgentRuntimeAuthorization(input) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
assertNonEmpty(input.runId, "Agent run id");
|
|
157
|
-
const executionBinding = {
|
|
158
|
-
type: "agent",
|
|
159
|
-
executionId: input.executionId,
|
|
160
|
-
...input.actorId === undefined ? {} : { actorId: input.actorId },
|
|
161
|
-
runId: input.runId
|
|
162
|
-
};
|
|
416
|
+
if (input.execution.executor.type !== "agent") {
|
|
417
|
+
throw new Error("[Sixb] Agent runtime authorization requires an Agent execution.");
|
|
418
|
+
}
|
|
163
419
|
if (input.authority.type === "principal") {
|
|
164
420
|
return createRegisteredPrincipalAuthorization({
|
|
165
|
-
|
|
421
|
+
execution: input.execution,
|
|
166
422
|
context: input.authority.context,
|
|
167
423
|
...input.authority.credential === undefined ? {} : { credential: input.authority.credential }
|
|
168
|
-
}
|
|
424
|
+
});
|
|
169
425
|
}
|
|
170
|
-
return register({
|
|
426
|
+
return register(input.execution, {
|
|
171
427
|
type: "unrestricted",
|
|
172
|
-
projectId: input.projectId,
|
|
173
|
-
ref: Object.freeze({ type: "disabled" })
|
|
174
|
-
executionBinding: Object.freeze(executionBinding)
|
|
428
|
+
projectId: input.execution.projectId,
|
|
429
|
+
ref: Object.freeze({ type: "disabled" })
|
|
175
430
|
});
|
|
176
431
|
}
|
|
177
|
-
function createRegisteredPrincipalAuthorization(input
|
|
432
|
+
function createRegisteredPrincipalAuthorization(input) {
|
|
178
433
|
const context = snapshotAuthorizationContext(input.context);
|
|
179
434
|
const credential = input.credential ? snapshotCredential(input.credential) : undefined;
|
|
180
435
|
assertCredentialMatchesContext(context, credential);
|
|
@@ -183,22 +438,46 @@ function createRegisteredPrincipalAuthorization(input, executionBinding) {
|
|
|
183
438
|
principal: context.principal,
|
|
184
439
|
...credential === undefined ? {} : { credential }
|
|
185
440
|
});
|
|
186
|
-
return register({
|
|
441
|
+
return register(input.execution, {
|
|
187
442
|
type: "principal",
|
|
188
|
-
projectId: input.projectId,
|
|
443
|
+
projectId: input.execution.projectId,
|
|
189
444
|
context,
|
|
190
|
-
ref
|
|
191
|
-
|
|
445
|
+
ref
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
function createDisabledRuntimeAuthorization(execution) {
|
|
449
|
+
return register(execution, {
|
|
450
|
+
type: "unrestricted",
|
|
451
|
+
projectId: execution.projectId,
|
|
452
|
+
ref: Object.freeze({ type: "disabled" })
|
|
192
453
|
});
|
|
193
454
|
}
|
|
194
|
-
function
|
|
195
|
-
|
|
455
|
+
function createDelegatedRuntimeAuthorization(input) {
|
|
456
|
+
const execution = input.execution;
|
|
457
|
+
const objectReadInput = input.objectRead;
|
|
458
|
+
const actionApplyInput = input.actionApply;
|
|
459
|
+
const delegationInput = input.delegation;
|
|
460
|
+
const delegation = delegationInput === undefined ? undefined : snapshotSharedDelegation(delegationInput);
|
|
461
|
+
if (execution.executor.type !== "request" || execution.requestedBy !== undefined) {
|
|
462
|
+
throw new Error("[Sixb] Delegated runtime authorization requires a request execution without a principal.");
|
|
463
|
+
}
|
|
464
|
+
const objectRead = Object.freeze({
|
|
465
|
+
scope: compileSelectedObjectReadScope(objectReadInput.selection),
|
|
466
|
+
limits: snapshotObjectReadExecutionLimits(objectReadInput.limits)
|
|
467
|
+
});
|
|
468
|
+
return register(execution, {
|
|
469
|
+
type: "delegated",
|
|
470
|
+
projectId: execution.projectId,
|
|
471
|
+
objectRead,
|
|
472
|
+
actionApply: snapshotDelegatedActionApply(actionApplyInput ?? []),
|
|
473
|
+
...delegation === undefined ? {} : { delegation }
|
|
474
|
+
});
|
|
196
475
|
}
|
|
197
476
|
function createTrustedPrimitiveRuntimeAuthorization(input) {
|
|
198
477
|
const primitive = snapshotTrustedPrimitive(input.primitive);
|
|
199
|
-
return register({
|
|
478
|
+
return register(input.execution, {
|
|
200
479
|
type: "unrestricted",
|
|
201
|
-
projectId: input.projectId,
|
|
480
|
+
projectId: input.execution.projectId,
|
|
202
481
|
ref: Object.freeze({ type: "trustedPrimitive", primitive })
|
|
203
482
|
});
|
|
204
483
|
}
|
|
@@ -206,15 +485,38 @@ function resolveRuntimeAuthorization(authorization) {
|
|
|
206
485
|
if (!isRuntimeAuthorizationCapability(authorization)) {
|
|
207
486
|
return { type: "denied" };
|
|
208
487
|
}
|
|
209
|
-
return registeredAuthorizations.get(authorization) ?? { type: "denied" };
|
|
488
|
+
return registeredAuthorizations.get(authorization)?.resolved ?? { type: "denied" };
|
|
489
|
+
}
|
|
490
|
+
function resolveRuntimeAuthorizationForProject(input) {
|
|
491
|
+
const resolved = resolveRuntimeAuthorization(input.runtimeAuthorization);
|
|
492
|
+
if (resolved.type === "denied" || typeof input.projectId !== "string" || resolved.projectId !== input.projectId) {
|
|
493
|
+
return { type: "denied" };
|
|
494
|
+
}
|
|
495
|
+
return resolved;
|
|
210
496
|
}
|
|
211
497
|
function getAuthorizationRef(authorization) {
|
|
212
498
|
const resolved = resolveRuntimeAuthorization(authorization);
|
|
213
499
|
if (resolved.type === "denied") {
|
|
214
500
|
throw new Error("[Sixb] Runtime authorization is not a registered Core capability.");
|
|
215
501
|
}
|
|
502
|
+
if (resolved.type === "delegated") {
|
|
503
|
+
if (resolved.delegation) {
|
|
504
|
+
return { type: "delegated", delegation: { ...resolved.delegation } };
|
|
505
|
+
}
|
|
506
|
+
throw new Error("[Sixb] Delegated runtime authorization cannot cross a durable execution boundary.");
|
|
507
|
+
}
|
|
216
508
|
return cloneAuthorizationRef(resolved.ref);
|
|
217
509
|
}
|
|
510
|
+
function snapshotSharedDelegation(input) {
|
|
511
|
+
const kind = input.kind;
|
|
512
|
+
const grantId = input.grantId;
|
|
513
|
+
const sessionId = input.sessionId;
|
|
514
|
+
if (kind !== "share")
|
|
515
|
+
throw new Error("[Sixb] Unknown delegated authority provenance.");
|
|
516
|
+
assertNonEmpty(grantId, "Share grant id");
|
|
517
|
+
assertNonEmpty(sessionId, "Share session id");
|
|
518
|
+
return Object.freeze({ kind, grantId, sessionId });
|
|
519
|
+
}
|
|
218
520
|
function assertExecutionScopeProject(projectId, scope) {
|
|
219
521
|
assertNonEmpty(projectId, "Project id");
|
|
220
522
|
if (scope.execution.projectId !== projectId) {
|
|
@@ -240,46 +542,71 @@ function assertExecutionScopeProject(projectId, scope) {
|
|
|
240
542
|
});
|
|
241
543
|
}
|
|
242
544
|
}
|
|
545
|
+
function captureExecutionScope(scope) {
|
|
546
|
+
const execution = scope.execution;
|
|
547
|
+
const authorization = scope.authorization;
|
|
548
|
+
return Object.freeze({ execution, authorization });
|
|
549
|
+
}
|
|
243
550
|
function resolveExecutionScopeAuthorization(projectId, scope) {
|
|
244
|
-
|
|
245
|
-
|
|
551
|
+
const capturedScope = captureExecutionScope(scope);
|
|
552
|
+
assertExecutionScopeProject(projectId, capturedScope);
|
|
553
|
+
const resolved = resolveRuntimeAuthorization(capturedScope.authorization);
|
|
246
554
|
if (resolved.type === "denied") {
|
|
247
|
-
throw createSixbError("internal.unexpected", "[Sixb] Execution scope carries unregistered runtime authorization.", { details: { executionId:
|
|
555
|
+
throw createSixbError("internal.unexpected", "[Sixb] Execution scope carries unregistered runtime authorization.", { details: { executionId: capturedScope.execution.id, projectId } });
|
|
556
|
+
}
|
|
557
|
+
const registration = registeredAuthorizations.get(capturedScope.authorization);
|
|
558
|
+
if (!registration || !executionMatchesBinding(registration.execution, capturedScope.execution)) {
|
|
559
|
+
throw invalidExecutionAuthority(capturedScope.execution.id, "authority is bound to different execution provenance");
|
|
248
560
|
}
|
|
249
|
-
|
|
561
|
+
assertResolvedAuthorizationMatchesExecution(resolved, capturedScope.execution);
|
|
562
|
+
return resolved;
|
|
563
|
+
}
|
|
564
|
+
function assertResolvedAuthorizationMatchesExecution(resolved, execution) {
|
|
250
565
|
switch (execution.executor.type) {
|
|
251
566
|
case "request":
|
|
252
567
|
if (execution.source.type !== "http" || execution.source.requestId !== execution.executor.requestId) {
|
|
253
568
|
throw invalidExecutionAuthority(execution.id, "request source does not match its executor");
|
|
254
569
|
}
|
|
255
|
-
if (resolved.
|
|
256
|
-
if (
|
|
570
|
+
if (resolved.type === "principal") {
|
|
571
|
+
if (!principalsEqual(execution.requestedBy, resolved.ref.principal)) {
|
|
257
572
|
throw invalidExecutionAuthority(execution.id, "request authority does not match its requested-by principal");
|
|
258
573
|
}
|
|
259
|
-
return
|
|
574
|
+
return;
|
|
575
|
+
}
|
|
576
|
+
if (resolved.type === "unrestricted" && resolved.ref.type === "disabled" && execution.requestedBy === undefined) {
|
|
577
|
+
return;
|
|
260
578
|
}
|
|
261
|
-
if (resolved.
|
|
262
|
-
return
|
|
263
|
-
throw invalidExecutionAuthority(execution.id, "request execution requires principal or explicitly disabled authority");
|
|
579
|
+
if (resolved.type === "delegated" && execution.requestedBy === undefined)
|
|
580
|
+
return;
|
|
581
|
+
throw invalidExecutionAuthority(execution.id, "request execution requires principal, delegated, or explicitly disabled authority");
|
|
264
582
|
case "primitive":
|
|
265
|
-
if (resolved.ref.type !== "trustedPrimitive" || resolved.ref.primitive.kind !== execution.executor.kind || resolved.ref.primitive.id !== execution.executor.id || resolved.ref.primitive.runId !== execution.executor.runId) {
|
|
583
|
+
if (resolved.type !== "unrestricted" || resolved.ref.type !== "trustedPrimitive" || resolved.ref.primitive.kind !== execution.executor.kind || resolved.ref.primitive.id !== execution.executor.id || resolved.ref.primitive.runId !== execution.executor.runId) {
|
|
266
584
|
throw invalidExecutionAuthority(execution.id, "trusted primitive authority does not match its executor");
|
|
267
585
|
}
|
|
268
|
-
return
|
|
586
|
+
return;
|
|
269
587
|
case "agent":
|
|
270
|
-
if (
|
|
271
|
-
throw invalidExecutionAuthority(execution.id, "agent
|
|
588
|
+
if (execution.source.type !== "execution") {
|
|
589
|
+
throw invalidExecutionAuthority(execution.id, "agent execution requires an execution source");
|
|
590
|
+
}
|
|
591
|
+
if (resolved.type === "principal" && resolved.ref.type === "principal") {
|
|
592
|
+
if (resolved.ref.principal.type === "serviceAccount") {
|
|
593
|
+
const actorId = execution.executor.actorId;
|
|
594
|
+
if (actorId === undefined || resolved.ref.principal.id !== agentServiceAccountId(actorId) || resolved.ref.credential !== undefined) {
|
|
595
|
+
throw invalidExecutionAuthority(execution.id, "agent authority must reference its managed service account");
|
|
596
|
+
}
|
|
597
|
+
} else if (resolved.ref.credential === undefined) {
|
|
598
|
+
throw invalidExecutionAuthority(execution.id, "inherited user agent authority requires a credential");
|
|
599
|
+
}
|
|
600
|
+
return;
|
|
272
601
|
}
|
|
273
|
-
if (resolved.type === "principal" && resolved.ref.type === "principal")
|
|
274
|
-
return resolved;
|
|
275
602
|
if (resolved.type === "unrestricted" && resolved.ref.type === "disabled")
|
|
276
|
-
return
|
|
603
|
+
return;
|
|
277
604
|
throw invalidExecutionAuthority(execution.id, "agent authority must be principal or explicitly disabled");
|
|
278
605
|
case "kernel":
|
|
279
|
-
if (resolved.ref.type !== "kernel" || execution.requestedBy !== undefined || resolved.ref.operation.type !== execution.executor.operation.type || resolved.ref.operation.recoveryId !== execution.executor.operation.recoveryId) {
|
|
606
|
+
if (resolved.type !== "unrestricted" || resolved.ref.type !== "kernel" || execution.requestedBy !== undefined || resolved.ref.operation.type !== execution.executor.operation.type || resolved.ref.operation.recoveryId !== execution.executor.operation.recoveryId) {
|
|
280
607
|
throw invalidExecutionAuthority(execution.id, "kernel authority does not match its executor");
|
|
281
608
|
}
|
|
282
|
-
return
|
|
609
|
+
return;
|
|
283
610
|
}
|
|
284
611
|
}
|
|
285
612
|
function principalsEqual(left, right) {
|
|
@@ -288,20 +615,99 @@ function principalsEqual(left, right) {
|
|
|
288
615
|
function invalidExecutionAuthority(executionId, reason) {
|
|
289
616
|
return createSixbError("internal.unexpected", `[Sixb] Execution '${executionId}' is incompatible with its authority: ${reason}.`, { details: { executionId, reason } });
|
|
290
617
|
}
|
|
291
|
-
function register(input) {
|
|
618
|
+
function register(execution, input) {
|
|
292
619
|
assertNonEmpty(input.projectId, "Authorization project id");
|
|
620
|
+
const executionBinding = snapshotExecutionContext(execution);
|
|
621
|
+
if (input.projectId !== executionBinding.projectId) {
|
|
622
|
+
throw new Error(`[Sixb] Runtime authorization belongs to project '${input.projectId}', not execution project '${executionBinding.projectId}'.`);
|
|
623
|
+
}
|
|
624
|
+
assertResolvedAuthorizationMatchesExecution(input, executionBinding);
|
|
293
625
|
const authorization = createRuntimeAuthorizationCapability();
|
|
294
|
-
registeredAuthorizations.set(authorization, Object.freeze(input));
|
|
626
|
+
registeredAuthorizations.set(authorization, Object.freeze({ resolved: Object.freeze(input), execution: executionBinding }));
|
|
295
627
|
return authorization;
|
|
296
628
|
}
|
|
629
|
+
function executionMatchesBinding(binding, execution) {
|
|
630
|
+
try {
|
|
631
|
+
return isDeepStrictEqual(binding, snapshotExecutionContext(execution));
|
|
632
|
+
} catch {
|
|
633
|
+
return false;
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
function snapshotExecutionContext(execution) {
|
|
637
|
+
assertNonEmpty(execution.id, "Execution id");
|
|
638
|
+
assertNonEmpty(execution.projectId, "Execution project id");
|
|
639
|
+
assertNonEmpty(execution.correlationId, "Execution correlation id");
|
|
640
|
+
return Object.freeze({
|
|
641
|
+
id: execution.id,
|
|
642
|
+
projectId: execution.projectId,
|
|
643
|
+
...execution.requestedBy === undefined ? {} : { requestedBy: snapshotAuthorizablePrincipal(execution.requestedBy) },
|
|
644
|
+
executor: snapshotExecutionExecutor(execution.executor),
|
|
645
|
+
source: snapshotExecutionSource(execution.source),
|
|
646
|
+
correlationId: execution.correlationId
|
|
647
|
+
});
|
|
648
|
+
}
|
|
649
|
+
function snapshotExecutionExecutor(executor) {
|
|
650
|
+
switch (executor.type) {
|
|
651
|
+
case "request":
|
|
652
|
+
assertNonEmpty(executor.requestId, "Execution request id");
|
|
653
|
+
return Object.freeze({ type: "request", requestId: executor.requestId });
|
|
654
|
+
case "primitive": {
|
|
655
|
+
const primitive = snapshotTrustedPrimitive(executor);
|
|
656
|
+
return Object.freeze({ type: "primitive", ...primitive });
|
|
657
|
+
}
|
|
658
|
+
case "agent":
|
|
659
|
+
if (executor.actorId !== undefined)
|
|
660
|
+
assertNonEmpty(executor.actorId, "Execution Agent actor id");
|
|
661
|
+
assertNonEmpty(executor.runId, "Execution Agent run id");
|
|
662
|
+
return Object.freeze({
|
|
663
|
+
type: "agent",
|
|
664
|
+
...executor.actorId === undefined ? {} : { actorId: executor.actorId },
|
|
665
|
+
runId: executor.runId
|
|
666
|
+
});
|
|
667
|
+
case "kernel":
|
|
668
|
+
return Object.freeze({
|
|
669
|
+
type: "kernel",
|
|
670
|
+
operation: snapshotKernelOperation(executor.operation)
|
|
671
|
+
});
|
|
672
|
+
}
|
|
673
|
+
throw new Error(`[Sixb] Unknown execution executor type '${String(executor.type)}'.`);
|
|
674
|
+
}
|
|
675
|
+
function snapshotExecutionSource(source) {
|
|
676
|
+
switch (source.type) {
|
|
677
|
+
case "http":
|
|
678
|
+
assertNonEmpty(source.requestId, "Execution source request id");
|
|
679
|
+
return Object.freeze({ type: "http", requestId: source.requestId });
|
|
680
|
+
case "webhook":
|
|
681
|
+
assertNonEmpty(source.deliveryId, "Execution source delivery id");
|
|
682
|
+
return Object.freeze({ type: "webhook", deliveryId: source.deliveryId });
|
|
683
|
+
case "schedule":
|
|
684
|
+
case "event":
|
|
685
|
+
assertNonEmpty(source.eventId, "Execution source event id");
|
|
686
|
+
return Object.freeze({ type: source.type, eventId: source.eventId });
|
|
687
|
+
case "datasetVersion":
|
|
688
|
+
assertNonEmpty(source.datasetId, "Execution source dataset id");
|
|
689
|
+
assertNonEmpty(source.versionId, "Execution source dataset version id");
|
|
690
|
+
return Object.freeze({
|
|
691
|
+
type: "datasetVersion",
|
|
692
|
+
datasetId: source.datasetId,
|
|
693
|
+
versionId: source.versionId
|
|
694
|
+
});
|
|
695
|
+
case "execution":
|
|
696
|
+
assertNonEmpty(source.executionId, "Execution source execution id");
|
|
697
|
+
return Object.freeze({ type: "execution", executionId: source.executionId });
|
|
698
|
+
}
|
|
699
|
+
throw new Error(`[Sixb] Unknown execution source type '${String(source.type)}'.`);
|
|
700
|
+
}
|
|
297
701
|
function snapshotAuthorizationContext(context) {
|
|
298
702
|
const principal = snapshotAuthorizablePrincipal(context.principal);
|
|
299
|
-
const grants =
|
|
300
|
-
grants["run:agent"] = context.grants["run:agent"];
|
|
703
|
+
const grants = {};
|
|
301
704
|
for (const kind of TARGETED_GRANT_KIND_KEYS) {
|
|
302
|
-
grants[kind] = new
|
|
705
|
+
grants[kind] = new ImmutableGrantSet(context.grants[kind]);
|
|
303
706
|
}
|
|
304
|
-
const frozenGrants = Object.freeze(
|
|
707
|
+
const frozenGrants = Object.freeze({
|
|
708
|
+
...grants,
|
|
709
|
+
"run:agent": context.grants["run:agent"]
|
|
710
|
+
});
|
|
305
711
|
return Object.freeze({
|
|
306
712
|
principal,
|
|
307
713
|
...context.sessionId === undefined ? {} : { sessionId: context.sessionId },
|
|
@@ -310,6 +716,51 @@ function snapshotAuthorizationContext(context) {
|
|
|
310
716
|
grants: frozenGrants
|
|
311
717
|
});
|
|
312
718
|
}
|
|
719
|
+
|
|
720
|
+
class ImmutableGrantSet {
|
|
721
|
+
#values;
|
|
722
|
+
[Symbol.toStringTag] = "Set";
|
|
723
|
+
constructor(values) {
|
|
724
|
+
this.#values = new Set(values);
|
|
725
|
+
Object.freeze(this);
|
|
726
|
+
}
|
|
727
|
+
get size() {
|
|
728
|
+
return this.#values.size;
|
|
729
|
+
}
|
|
730
|
+
has(value) {
|
|
731
|
+
return this.#values.has(value);
|
|
732
|
+
}
|
|
733
|
+
entries() {
|
|
734
|
+
return this.#values.entries();
|
|
735
|
+
}
|
|
736
|
+
keys() {
|
|
737
|
+
return this.#values.keys();
|
|
738
|
+
}
|
|
739
|
+
values() {
|
|
740
|
+
return this.#values.values();
|
|
741
|
+
}
|
|
742
|
+
[Symbol.iterator]() {
|
|
743
|
+
return this.#values[Symbol.iterator]();
|
|
744
|
+
}
|
|
745
|
+
forEach(callback, thisArg) {
|
|
746
|
+
for (const value of this.#values) {
|
|
747
|
+
callback.call(thisArg, value, value, this);
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
add(_value) {
|
|
751
|
+
throw immutableGrantSetMutation();
|
|
752
|
+
}
|
|
753
|
+
delete(_value) {
|
|
754
|
+
throw immutableGrantSetMutation();
|
|
755
|
+
}
|
|
756
|
+
clear() {
|
|
757
|
+
throw immutableGrantSetMutation();
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
Object.freeze(ImmutableGrantSet.prototype);
|
|
761
|
+
function immutableGrantSetMutation() {
|
|
762
|
+
return new Error("[Sixb] Runtime authorization grants are immutable.");
|
|
763
|
+
}
|
|
313
764
|
function snapshotAuthorizablePrincipal(principal) {
|
|
314
765
|
if (principal.type !== "user" && principal.type !== "serviceAccount") {
|
|
315
766
|
throw new Error(`[Sixb] Principal type '${principal.type}' cannot hold runtime authorization.`);
|
|
@@ -344,6 +795,56 @@ function snapshotTrustedPrimitive(primitive) {
|
|
|
344
795
|
assertNonEmpty(primitive.runId, "Trusted primitive run id");
|
|
345
796
|
return Object.freeze({ kind: primitive.kind, id: primitive.id, runId: primitive.runId });
|
|
346
797
|
}
|
|
798
|
+
function snapshotKernelOperation(operation) {
|
|
799
|
+
if (operation.type !== "ontology.recover") {
|
|
800
|
+
throw new Error(`[Sixb] Unknown kernel operation '${operation.type}'.`);
|
|
801
|
+
}
|
|
802
|
+
assertNonEmpty(operation.recoveryId, "Kernel recovery id");
|
|
803
|
+
return Object.freeze({ type: operation.type, recoveryId: operation.recoveryId });
|
|
804
|
+
}
|
|
805
|
+
function snapshotDelegatedActionApply(input) {
|
|
806
|
+
if (!Array.isArray(input)) {
|
|
807
|
+
throw new Error("[Sixb] Delegated Action targets must be an array.");
|
|
808
|
+
}
|
|
809
|
+
const targetCount = input.length;
|
|
810
|
+
if (targetCount > MAX_DELEGATED_ACTION_APPLY_TARGETS) {
|
|
811
|
+
throw new Error(`[Sixb] Delegated authority exceeds the maximum of ${MAX_DELEGATED_ACTION_APPLY_TARGETS} Action targets.`);
|
|
812
|
+
}
|
|
813
|
+
let identifierCharacters = 0;
|
|
814
|
+
const targets = [];
|
|
815
|
+
for (let index = 0;index < targetCount; index += 1) {
|
|
816
|
+
const authoredTarget = input[index];
|
|
817
|
+
if (!isRecord(authoredTarget)) {
|
|
818
|
+
throw new Error(`[Sixb] Delegated Action target ${index} must be an object.`);
|
|
819
|
+
}
|
|
820
|
+
const authoredActionId = authoredTarget.actionId;
|
|
821
|
+
const authoredSubject = authoredTarget.subject;
|
|
822
|
+
if (!isRecord(authoredSubject)) {
|
|
823
|
+
throw new Error(`[Sixb] Delegated Action target ${index} subject must be an ObjectRef.`);
|
|
824
|
+
}
|
|
825
|
+
const actionId = delegatedActionIdentifier(authoredActionId, `Delegated Action target ${index} action id`);
|
|
826
|
+
const objectTypeId = delegatedActionIdentifier(authoredSubject.objectTypeId, `Delegated Action target ${index} subject object type id`);
|
|
827
|
+
const primaryId = delegatedActionIdentifier(authoredSubject.primaryId, `Delegated Action target ${index} subject primary id`);
|
|
828
|
+
identifierCharacters += actionId.length + objectTypeId.length + primaryId.length;
|
|
829
|
+
if (identifierCharacters > MAX_DELEGATED_ACTION_IDENTIFIER_CHARACTERS) {
|
|
830
|
+
throw new Error(`[Sixb] Delegated authority exceeds the maximum of ${MAX_DELEGATED_ACTION_IDENTIFIER_CHARACTERS} Action identifier characters.`);
|
|
831
|
+
}
|
|
832
|
+
targets.push(Object.freeze({
|
|
833
|
+
actionId,
|
|
834
|
+
subject: Object.freeze({ objectTypeId, primaryId })
|
|
835
|
+
}));
|
|
836
|
+
}
|
|
837
|
+
return Object.freeze(targets);
|
|
838
|
+
}
|
|
839
|
+
function delegatedActionIdentifier(value, label) {
|
|
840
|
+
if (typeof value !== "string" || !value.trim()) {
|
|
841
|
+
throw new Error(`[Sixb] ${label} must not be empty.`);
|
|
842
|
+
}
|
|
843
|
+
return value;
|
|
844
|
+
}
|
|
845
|
+
function isRecord(value) {
|
|
846
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
847
|
+
}
|
|
347
848
|
function cloneAuthorizationRef(ref) {
|
|
348
849
|
switch (ref.type) {
|
|
349
850
|
case "principal":
|
|
@@ -354,6 +855,8 @@ function cloneAuthorizationRef(ref) {
|
|
|
354
855
|
};
|
|
355
856
|
case "trustedPrimitive":
|
|
356
857
|
return { type: "trustedPrimitive", primitive: { ...ref.primitive } };
|
|
858
|
+
case "delegated":
|
|
859
|
+
return { type: "delegated", delegation: { ...ref.delegation } };
|
|
357
860
|
case "kernel":
|
|
358
861
|
return { type: "kernel", operation: { ...ref.operation } };
|
|
359
862
|
case "disabled":
|
|
@@ -394,6 +897,8 @@ function atomsFor(request) {
|
|
|
394
897
|
return [{ kind: "append:telemetry", id: request.objectTypeId }];
|
|
395
898
|
case "action.apply":
|
|
396
899
|
return [{ kind: "apply:action", id: request.actionId }];
|
|
900
|
+
case "share.manage":
|
|
901
|
+
return [{ kind: "share:share", id: request.shareId }];
|
|
397
902
|
case "workflow.run":
|
|
398
903
|
return [{ kind: "run:workflow", id: request.workflowId }];
|
|
399
904
|
case "sync.run":
|
|
@@ -438,6 +943,9 @@ function isAllowed(authorization, request) {
|
|
|
438
943
|
}
|
|
439
944
|
function assertAuthorized(runtime, request) {
|
|
440
945
|
const resolved = assertRuntimeAuthorizationBound(runtime);
|
|
946
|
+
if (resolved.type === "delegated") {
|
|
947
|
+
throw new AuthorizationError(`delegated:${request.kind}`, `[Sixb] Operation '${request.kind}' is not covered by delegated authorization.`);
|
|
948
|
+
}
|
|
441
949
|
const authorization = resolved.type === "principal" ? resolved.context : undefined;
|
|
442
950
|
const decision = evaluate(authorization, request);
|
|
443
951
|
if (decision.allowed) {
|
|
@@ -445,8 +953,14 @@ function assertAuthorized(runtime, request) {
|
|
|
445
953
|
}
|
|
446
954
|
throw new AuthorizationError(decision.missing[0] ?? request.kind, deniedMessage(authorization, request));
|
|
447
955
|
}
|
|
956
|
+
function isRuntimeAllowed(runtime, request) {
|
|
957
|
+
const authority = resolveRuntimeAuthorizationForProject(runtime);
|
|
958
|
+
if (authority.type === "denied" || authority.type === "delegated")
|
|
959
|
+
return false;
|
|
960
|
+
return authority.type === "unrestricted" || isAllowed(authority.context, request);
|
|
961
|
+
}
|
|
448
962
|
function assertRuntimeAuthorizationBound(runtime) {
|
|
449
|
-
const resolved =
|
|
963
|
+
const resolved = resolveRuntimeAuthorizationForProject(runtime);
|
|
450
964
|
if (resolved.type === "denied") {
|
|
451
965
|
throw new AuthorizationError("runtime:unbound", "[Sixb] Protected operations require a registered execution scope.");
|
|
452
966
|
}
|
|
@@ -470,13 +984,14 @@ function assertPrivileged(runtime, operation) {
|
|
|
470
984
|
throw new AuthorizationError(`privileged:${operation}`, `[Sixb] Operation '${operation}' is not covered by scoped authorization grants.`);
|
|
471
985
|
}
|
|
472
986
|
function assertProviderAccess(runtime, execution, operation) {
|
|
473
|
-
const resolved =
|
|
987
|
+
const resolved = resolveExecutionScopeAuthorization(runtime.projectId, {
|
|
988
|
+
execution,
|
|
989
|
+
authorization: runtime.runtimeAuthorization
|
|
990
|
+
});
|
|
474
991
|
if (resolved.type === "unrestricted") {
|
|
475
992
|
return;
|
|
476
993
|
}
|
|
477
|
-
|
|
478
|
-
const executor = execution.executor;
|
|
479
|
-
if (binding?.type === "agent" && executor.type === "agent" && binding.executionId === execution.id && binding.actorId === executor.actorId && binding.runId === executor.runId) {
|
|
994
|
+
if (execution.executor.type === "agent") {
|
|
480
995
|
return;
|
|
481
996
|
}
|
|
482
997
|
throw new AuthorizationError(`privileged:${operation}`, `[Sixb] Operation '${operation}' is not covered by scoped authorization grants.`);
|
|
@@ -496,6 +1011,8 @@ function deniedMessage(authorization, request) {
|
|
|
496
1011
|
return `[Sixb] Principal '${principalId}' is not allowed to append telemetry for object type '${request.objectTypeId}'.`;
|
|
497
1012
|
case "action.apply":
|
|
498
1013
|
return `[Sixb] Principal '${principalId}' is not allowed to apply action '${request.actionId}'.`;
|
|
1014
|
+
case "share.manage":
|
|
1015
|
+
return `[Sixb] Principal '${principalId}' is not allowed to manage Share '${request.shareId}'.`;
|
|
499
1016
|
case "workflow.run":
|
|
500
1017
|
return `[Sixb] Principal '${principalId}' is not allowed to run workflow '${request.workflowId}'.`;
|
|
501
1018
|
case "sync.run":
|
|
@@ -1026,7 +1543,7 @@ function assertProjectionDataset(dataset) {
|
|
|
1026
1543
|
}
|
|
1027
1544
|
assertNonEmpty2(dataset.id, "dataset id");
|
|
1028
1545
|
}
|
|
1029
|
-
function
|
|
1546
|
+
function isRecord2(value) {
|
|
1030
1547
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1031
1548
|
}
|
|
1032
1549
|
function lowerForeignKeyMapping(mapping) {
|
|
@@ -1039,7 +1556,7 @@ function lowerForeignKeyMapping(mapping) {
|
|
|
1039
1556
|
return lowered;
|
|
1040
1557
|
}
|
|
1041
1558
|
function isForeignKeyDescriptor(value) {
|
|
1042
|
-
return
|
|
1559
|
+
return isRecord2(value) && typeof value.linkId === "string";
|
|
1043
1560
|
}
|
|
1044
1561
|
function defineProjection(id, target) {
|
|
1045
1562
|
if ("link" in target)
|
|
@@ -1192,7 +1709,7 @@ function lowerTelemetryPropertiesPointMapping(objectType, mapping) {
|
|
|
1192
1709
|
if (mapping.properties === undefined) {
|
|
1193
1710
|
throw new ProjectionValidationError("Telemetry projection point mapping requires properties.");
|
|
1194
1711
|
}
|
|
1195
|
-
if (!
|
|
1712
|
+
if (!isRecord2(mapping.properties)) {
|
|
1196
1713
|
throw new ProjectionValidationError("Telemetry projection point mapping properties must be an object.");
|
|
1197
1714
|
}
|
|
1198
1715
|
assertNonEmpty2(mapping.objectId, "objectId field");
|
|
@@ -1220,7 +1737,7 @@ function lowerTelemetryPropertyMapping(propertyId, input) {
|
|
|
1220
1737
|
assertNonEmpty2(input, `property '${propertyId}' value field`);
|
|
1221
1738
|
return { valueField: input };
|
|
1222
1739
|
}
|
|
1223
|
-
if (!
|
|
1740
|
+
if (!isRecord2(input)) {
|
|
1224
1741
|
throw new ProjectionValidationError(`Telemetry projection property '${propertyId}' must map a value column or value/unit columns.`);
|
|
1225
1742
|
}
|
|
1226
1743
|
const allowedKeys = new Set(["value", "unit"]);
|
|
@@ -1289,33 +1806,33 @@ function buildLinkProjection(id, linkToken) {
|
|
|
1289
1806
|
};
|
|
1290
1807
|
}
|
|
1291
1808
|
function isObjectProjectionDefinition(value) {
|
|
1292
|
-
if (!
|
|
1809
|
+
if (!isRecord2(value))
|
|
1293
1810
|
return false;
|
|
1294
|
-
return value._tag === "ObjectProjectionDefinition" && typeof value.id === "string" && typeof value.objectTypeId === "string" && typeof value.datasetId === "string" &&
|
|
1811
|
+
return value._tag === "ObjectProjectionDefinition" && typeof value.id === "string" && typeof value.objectTypeId === "string" && typeof value.datasetId === "string" && isRecord2(value.properties) && isRecord2(value.links) && isSourceEditConflictResolution(value.conflictResolution);
|
|
1295
1812
|
}
|
|
1296
1813
|
function isSourceEditConflictResolution(value) {
|
|
1297
1814
|
if (value === undefined)
|
|
1298
1815
|
return true;
|
|
1299
|
-
if (!
|
|
1816
|
+
if (!isRecord2(value) || typeof value.strategy !== "string")
|
|
1300
1817
|
return false;
|
|
1301
1818
|
if (value.strategy === "editsWin")
|
|
1302
1819
|
return value.sourceTimestamp === undefined;
|
|
1303
1820
|
return value.strategy === "mostRecent" && typeof value.sourceTimestamp === "string";
|
|
1304
1821
|
}
|
|
1305
1822
|
function isLinkProjectionDefinition(value) {
|
|
1306
|
-
if (!
|
|
1823
|
+
if (!isRecord2(value))
|
|
1307
1824
|
return false;
|
|
1308
1825
|
return value._tag === "LinkProjectionDefinition" && typeof value.id === "string" && typeof value.linkId === "string" && typeof value.sourceObjectTypeId === "string" && typeof value.targetObjectTypeId === "string" && typeof value.datasetId === "string" && typeof value.sourceField === "string" && typeof value.targetField === "string";
|
|
1309
1826
|
}
|
|
1310
1827
|
function isTelemetryProjectionDefinition(value) {
|
|
1311
|
-
if (!
|
|
1828
|
+
if (!isRecord2(value))
|
|
1312
1829
|
return false;
|
|
1313
1830
|
return value._tag === "TelemetryProjectionDefinition" && typeof value.id === "string" && typeof value.objectTypeId === "string" && typeof value.datasetId === "string" && typeof value.objectIdField === "string" && typeof value.atField === "string" && isTelemetryProjectionProperties(value.properties);
|
|
1314
1831
|
}
|
|
1315
1832
|
function isTelemetryProjectionProperties(value) {
|
|
1316
|
-
if (!
|
|
1833
|
+
if (!isRecord2(value) || Object.keys(value).length === 0)
|
|
1317
1834
|
return false;
|
|
1318
|
-
return Object.values(value).every((mapping) =>
|
|
1835
|
+
return Object.values(value).every((mapping) => isRecord2(mapping) && typeof mapping.valueField === "string" && (mapping.unitField === undefined || typeof mapping.unitField === "string"));
|
|
1319
1836
|
}
|
|
1320
1837
|
function isProjectionDefinition(value) {
|
|
1321
1838
|
return isObjectProjectionDefinition(value) || isLinkProjectionDefinition(value) || isTelemetryProjectionDefinition(value);
|
|
@@ -1365,6 +1882,6 @@ function canViewProjection(authorization, projection) {
|
|
|
1365
1882
|
function emptyGrantIndex() {
|
|
1366
1883
|
return emptyGrantSets();
|
|
1367
1884
|
}
|
|
1368
|
-
export { ProjectionValidationError, computeProjectionOwnership, validateProjectionOwnership, validateTelemetryProjectionFieldMapping, validateProjectionsAtStartup, defineProjection, fromForeignKey, isObjectProjectionDefinition, isLinkProjectionDefinition, isTelemetryProjectionDefinition, isProjectionDefinition, projectionTargetOf, GRANT_KINDS, grantKindOf, createPrincipalRuntimeAuthorization, createAgentRuntimeAuthorization, createDisabledRuntimeAuthorization, createTrustedPrimitiveRuntimeAuthorization, getAuthorizationRef, resolveExecutionScopeAuthorization, AuthorizationError, evaluate, isAllowed, assertAuthorized, assertRuntimeAuthorizationBound, assertCanEdit, assertCanAppendTelemetry, assertCanManageConnector, assertPrivileged, assertProviderAccess, isApplicationAccessControlled, canAccessApplication, canViewEvent, resolveRoleGrants, resolveAuthorizationContext, canViewActionRun, canViewWorkflowRun, canViewWorkflowIntervention, canViewPipelineRun, canViewProjectionRun, canViewProjection, emptyGrantIndex };
|
|
1885
|
+
export { ProjectionValidationError, computeProjectionOwnership, validateProjectionOwnership, validateTelemetryProjectionFieldMapping, validateProjectionsAtStartup, defineProjection, fromForeignKey, isObjectProjectionDefinition, isLinkProjectionDefinition, isTelemetryProjectionDefinition, isProjectionDefinition, projectionTargetOf, agentServiceAccountId, GRANT_KINDS, grantKindOf, MAX_OBJECT_READ_FACETS, ObjectReadLimitExceededError, snapshotObjectReadExecutionLimits, assertObjectReadFacetCount, assertObjectReadOutputWithinLimit, createPrincipalRuntimeAuthorization, createAgentRuntimeAuthorization, createDisabledRuntimeAuthorization, createDelegatedRuntimeAuthorization, createTrustedPrimitiveRuntimeAuthorization, resolveRuntimeAuthorizationForProject, getAuthorizationRef, captureExecutionScope, resolveExecutionScopeAuthorization, AuthorizationError, evaluate, isAllowed, assertAuthorized, isRuntimeAllowed, assertRuntimeAuthorizationBound, assertCanEdit, assertCanAppendTelemetry, assertCanManageConnector, assertPrivileged, assertProviderAccess, isApplicationAccessControlled, canAccessApplication, canViewEvent, resolveRoleGrants, resolveAuthorizationContext, canViewActionRun, canViewWorkflowRun, canViewWorkflowIntervention, canViewPipelineRun, canViewProjectionRun, canViewProjection, emptyGrantIndex };
|
|
1369
1886
|
|
|
1370
|
-
//# debugId=
|
|
1887
|
+
//# debugId=57388FDEBF4490DF64756E2164756E21
|