@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
|
@@ -13,8 +13,10 @@ import { ObjectQueryValidationError } from "./errors"
|
|
|
13
13
|
import type {
|
|
14
14
|
ObjectExpansion,
|
|
15
15
|
ObjectQuery,
|
|
16
|
+
ObjectQueryDirection,
|
|
16
17
|
ObjectQueryPredicate,
|
|
17
18
|
ObjectQueryResultShape,
|
|
19
|
+
ObjectQuerySetOperation,
|
|
18
20
|
ObjectQuerySortField,
|
|
19
21
|
QueryScalarKind,
|
|
20
22
|
} from "./ir"
|
|
@@ -41,6 +43,71 @@ export interface ObjectQueryValidationOptions {
|
|
|
41
43
|
normalize?: boolean
|
|
42
44
|
}
|
|
43
45
|
|
|
46
|
+
/** Opaque semantic state carried by the canonical query validator for an internal admission. */
|
|
47
|
+
export type ObjectQueryAdmissionState = object
|
|
48
|
+
|
|
49
|
+
export type ObjectQueryPropertyUse =
|
|
50
|
+
| "filter"
|
|
51
|
+
| "text"
|
|
52
|
+
| "vector"
|
|
53
|
+
| "sort"
|
|
54
|
+
| "project"
|
|
55
|
+
| "expand.orderBy"
|
|
56
|
+
| "facet"
|
|
57
|
+
|
|
58
|
+
export type ObjectQueryEdgeUse = "traverse" | "expand" | "queryLinks"
|
|
59
|
+
|
|
60
|
+
export interface ObjectQueryAdmissionTransition {
|
|
61
|
+
readonly state: ObjectQueryAdmissionState
|
|
62
|
+
/** Recorded during the walk and raised only after ordinary validation succeeds. */
|
|
63
|
+
readonly denial?: Error
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Internal semantic admission reducer driven by the canonical query validator.
|
|
68
|
+
*
|
|
69
|
+
* It deliberately has no AST visitor: validation owns recursion through query nodes, predicates,
|
|
70
|
+
* and expansions, while an admission only reduces the semantic sources, properties, edges, and
|
|
71
|
+
* set operations it observes.
|
|
72
|
+
*/
|
|
73
|
+
export interface ObjectQuerySemanticAdmission {
|
|
74
|
+
empty(): ObjectQueryAdmissionState
|
|
75
|
+
source(input: {
|
|
76
|
+
readonly kind: "start" | "refs"
|
|
77
|
+
readonly result: ObjectQueryResultShape
|
|
78
|
+
readonly objectTypeId?: string
|
|
79
|
+
readonly refs?: readonly ObjectRef[]
|
|
80
|
+
readonly path: string
|
|
81
|
+
}): ObjectQueryAdmissionTransition
|
|
82
|
+
property(input: {
|
|
83
|
+
readonly state: ObjectQueryAdmissionState
|
|
84
|
+
readonly propertyId: string
|
|
85
|
+
readonly objectTypeId?: string
|
|
86
|
+
readonly use: ObjectQueryPropertyUse
|
|
87
|
+
readonly path: string
|
|
88
|
+
}): Error | undefined
|
|
89
|
+
edge(input: {
|
|
90
|
+
readonly state: ObjectQueryAdmissionState
|
|
91
|
+
/** Ontology-resolved shape after following this edge. */
|
|
92
|
+
readonly result: ObjectQueryResultShape
|
|
93
|
+
readonly linkId: string
|
|
94
|
+
readonly direction: ObjectQueryDirection
|
|
95
|
+
readonly sourceObjectTypeId?: string
|
|
96
|
+
readonly use: ObjectQueryEdgeUse
|
|
97
|
+
readonly path: string
|
|
98
|
+
}): ObjectQueryAdmissionTransition
|
|
99
|
+
set(input: {
|
|
100
|
+
readonly op: ObjectQuerySetOperation
|
|
101
|
+
readonly states: readonly ObjectQueryAdmissionState[]
|
|
102
|
+
readonly path: string
|
|
103
|
+
}): ObjectQueryAdmissionState
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export interface AdmittedObjectQuery extends ValidatedObjectQuery {
|
|
107
|
+
/** Root provenance for terminal-specific checks such as facets and physical link queries. */
|
|
108
|
+
admissionState: ObjectQueryAdmissionState
|
|
109
|
+
}
|
|
110
|
+
|
|
44
111
|
type QueryValidationContext = Required<
|
|
45
112
|
Pick<ObjectQueryValidationOptions, "maxLimit" | "maxPageSize" | "maxRefs">
|
|
46
113
|
> & {
|
|
@@ -48,13 +115,19 @@ type QueryValidationContext = Required<
|
|
|
48
115
|
valueTypesById: ReadonlyMap<string, ValueType>
|
|
49
116
|
issues: ObjectQueryValidationIssue[]
|
|
50
117
|
touchedObjectTypeIds: Set<string>
|
|
118
|
+
admission: ObjectQuerySemanticAdmission
|
|
119
|
+
admissionDenials: Error[]
|
|
51
120
|
}
|
|
52
121
|
|
|
53
|
-
interface
|
|
122
|
+
interface QueryNodeValidation {
|
|
54
123
|
result: ObjectQueryResultShape
|
|
55
124
|
query: ObjectQuery
|
|
56
125
|
}
|
|
57
126
|
|
|
127
|
+
interface QueryValidationResult extends QueryNodeValidation {
|
|
128
|
+
admissionState: ObjectQueryAdmissionState
|
|
129
|
+
}
|
|
130
|
+
|
|
58
131
|
interface TextFieldResolution {
|
|
59
132
|
fieldsByObjectType?: Record<string, string[]>
|
|
60
133
|
}
|
|
@@ -63,22 +136,55 @@ const DEFAULT_MAX_LIMIT = 1_000
|
|
|
63
136
|
const DEFAULT_MAX_PAGE_SIZE = 1_000
|
|
64
137
|
const DEFAULT_MAX_REFS = 1_000
|
|
65
138
|
|
|
139
|
+
const NOOP_ADMISSION_STATE = Object.freeze({})
|
|
140
|
+
const NOOP_QUERY_ADMISSION: ObjectQuerySemanticAdmission = Object.freeze({
|
|
141
|
+
empty: () => NOOP_ADMISSION_STATE,
|
|
142
|
+
source: () => ({ state: NOOP_ADMISSION_STATE }),
|
|
143
|
+
property: () => undefined,
|
|
144
|
+
edge: (input: Parameters<ObjectQuerySemanticAdmission["edge"]>[0]) => ({
|
|
145
|
+
state: input.state,
|
|
146
|
+
}),
|
|
147
|
+
set: (input: Parameters<ObjectQuerySemanticAdmission["set"]>[0]) =>
|
|
148
|
+
input.states[0] ?? NOOP_ADMISSION_STATE,
|
|
149
|
+
})
|
|
150
|
+
|
|
66
151
|
export function validateObjectQuery(
|
|
67
152
|
query: ObjectQuery,
|
|
68
153
|
options: ObjectQueryValidationOptions
|
|
69
154
|
): ValidatedObjectQuery {
|
|
155
|
+
const admitted = validateObjectQueryWithAdmission(query, options, NOOP_QUERY_ADMISSION)
|
|
156
|
+
return {
|
|
157
|
+
query: admitted.query,
|
|
158
|
+
result: admitted.result,
|
|
159
|
+
touchedObjectTypeIds: admitted.touchedObjectTypeIds,
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Validate and semantically admit one query in the same canonical walk.
|
|
165
|
+
*
|
|
166
|
+
* This is an internal direct-file API. It is intentionally absent from public query barrels.
|
|
167
|
+
*/
|
|
168
|
+
export function validateObjectQueryWithAdmission(
|
|
169
|
+
query: ObjectQuery,
|
|
170
|
+
options: ObjectQueryValidationOptions,
|
|
171
|
+
admission: ObjectQuerySemanticAdmission
|
|
172
|
+
): AdmittedObjectQuery {
|
|
70
173
|
const normalized = options.normalize === false ? query : normalizeObjectQuery(query)
|
|
71
|
-
const ctx = createValidationContext(options)
|
|
174
|
+
const ctx = createValidationContext(options, admission)
|
|
72
175
|
const validation = validateQueryNode(normalized, "$", ctx)
|
|
73
176
|
|
|
74
177
|
if (ctx.issues.length > 0) {
|
|
75
178
|
throw new ObjectQueryValidationError(ctx.issues)
|
|
76
179
|
}
|
|
180
|
+
const denial = ctx.admissionDenials[0]
|
|
181
|
+
if (denial) throw denial
|
|
77
182
|
|
|
78
183
|
return {
|
|
79
184
|
query: validation.query,
|
|
80
185
|
result: validation.result,
|
|
81
186
|
touchedObjectTypeIds: [...ctx.touchedObjectTypeIds],
|
|
187
|
+
admissionState: validation.admissionState,
|
|
82
188
|
}
|
|
83
189
|
}
|
|
84
190
|
|
|
@@ -87,7 +193,7 @@ export function collectObjectQueryValidationIssues(
|
|
|
87
193
|
options: ObjectQueryValidationOptions
|
|
88
194
|
): readonly ObjectQueryValidationIssue[] {
|
|
89
195
|
const normalized = options.normalize === false ? query : normalizeObjectQuery(query)
|
|
90
|
-
const ctx = createValidationContext(options)
|
|
196
|
+
const ctx = createValidationContext(options, NOOP_QUERY_ADMISSION)
|
|
91
197
|
validateQueryNode(normalized, "$", ctx)
|
|
92
198
|
return ctx.issues
|
|
93
199
|
}
|
|
@@ -99,7 +205,10 @@ export function resolveObjectQueryResultShape(
|
|
|
99
205
|
return validateObjectQuery(query, options).result
|
|
100
206
|
}
|
|
101
207
|
|
|
102
|
-
function createValidationContext(
|
|
208
|
+
function createValidationContext(
|
|
209
|
+
options: ObjectQueryValidationOptions,
|
|
210
|
+
admission: ObjectQuerySemanticAdmission
|
|
211
|
+
): QueryValidationContext {
|
|
103
212
|
return {
|
|
104
213
|
ontology: options.ontology,
|
|
105
214
|
valueTypesById: options.ontology.getValueTypesById(),
|
|
@@ -108,6 +217,8 @@ function createValidationContext(options: ObjectQueryValidationOptions): QueryVa
|
|
|
108
217
|
maxRefs: options.maxRefs ?? DEFAULT_MAX_REFS,
|
|
109
218
|
issues: [],
|
|
110
219
|
touchedObjectTypeIds: new Set<string>(),
|
|
220
|
+
admission,
|
|
221
|
+
admissionDenials: [],
|
|
111
222
|
}
|
|
112
223
|
}
|
|
113
224
|
|
|
@@ -133,18 +244,61 @@ function dispatchQueryNode(
|
|
|
133
244
|
ctx: QueryValidationContext
|
|
134
245
|
): QueryValidationResult {
|
|
135
246
|
switch (query.kind) {
|
|
136
|
-
case "start":
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
247
|
+
case "start": {
|
|
248
|
+
const validation = validateStart(query.objectTypeId, query.includeSubtypes, path, ctx)
|
|
249
|
+
return {
|
|
250
|
+
...validation,
|
|
251
|
+
admissionState: admitTransition(
|
|
252
|
+
ctx,
|
|
253
|
+
ctx.admission.source({
|
|
254
|
+
kind: "start",
|
|
255
|
+
result: validation.result,
|
|
256
|
+
objectTypeId: query.objectTypeId,
|
|
257
|
+
path,
|
|
258
|
+
})
|
|
259
|
+
),
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
case "refs": {
|
|
263
|
+
const validation = validateRefs(query.refs, path, ctx)
|
|
264
|
+
return {
|
|
265
|
+
...validation,
|
|
266
|
+
admissionState: admitTransition(
|
|
267
|
+
ctx,
|
|
268
|
+
ctx.admission.source({
|
|
269
|
+
kind: "refs",
|
|
270
|
+
result: validation.result,
|
|
271
|
+
refs: validation.query.kind === "refs" ? validation.query.refs : query.refs,
|
|
272
|
+
path,
|
|
273
|
+
})
|
|
274
|
+
),
|
|
275
|
+
}
|
|
276
|
+
}
|
|
140
277
|
case "filter": {
|
|
141
278
|
const input = validateQueryNode(query.input, `${path}.input`, ctx)
|
|
142
|
-
const predicate = validatePredicate(
|
|
143
|
-
|
|
279
|
+
const predicate = validatePredicate(
|
|
280
|
+
query.predicate,
|
|
281
|
+
input.result,
|
|
282
|
+
input.admissionState,
|
|
283
|
+
`${path}.predicate`,
|
|
284
|
+
ctx
|
|
285
|
+
)
|
|
286
|
+
return {
|
|
287
|
+
result: input.result,
|
|
288
|
+
query: { ...query, input: input.query, predicate },
|
|
289
|
+
admissionState: input.admissionState,
|
|
290
|
+
}
|
|
144
291
|
}
|
|
145
292
|
case "text": {
|
|
146
293
|
const input = validateQueryNode(query.input, `${path}.input`, ctx)
|
|
147
|
-
const textFields = validateTextQuery(
|
|
294
|
+
const textFields = validateTextQuery(
|
|
295
|
+
query.query,
|
|
296
|
+
query.fields,
|
|
297
|
+
input.result,
|
|
298
|
+
input.admissionState,
|
|
299
|
+
path,
|
|
300
|
+
ctx
|
|
301
|
+
)
|
|
148
302
|
return {
|
|
149
303
|
result: input.result,
|
|
150
304
|
query: {
|
|
@@ -153,48 +307,97 @@ function dispatchQueryNode(
|
|
|
153
307
|
fields: query.fields,
|
|
154
308
|
fieldsByObjectType: query.fields ? undefined : textFields.fieldsByObjectType,
|
|
155
309
|
},
|
|
310
|
+
admissionState: input.admissionState,
|
|
156
311
|
}
|
|
157
312
|
}
|
|
158
313
|
case "vector": {
|
|
159
314
|
const input = validateQueryNode(query.input, `${path}.input`, ctx)
|
|
160
|
-
validateVectorQuery(
|
|
161
|
-
|
|
315
|
+
validateVectorQuery(
|
|
316
|
+
query.vector,
|
|
317
|
+
query.propertyId,
|
|
318
|
+
query.k,
|
|
319
|
+
input.result,
|
|
320
|
+
input.admissionState,
|
|
321
|
+
path,
|
|
322
|
+
ctx
|
|
323
|
+
)
|
|
324
|
+
return {
|
|
325
|
+
result: input.result,
|
|
326
|
+
query: { ...query, input: input.query },
|
|
327
|
+
admissionState: input.admissionState,
|
|
328
|
+
}
|
|
162
329
|
}
|
|
163
330
|
case "traverse": {
|
|
164
331
|
const input = validateQueryNode(query.input, `${path}.input`, ctx)
|
|
332
|
+
const result = validateTraverse(
|
|
333
|
+
query.linkId,
|
|
334
|
+
query.direction,
|
|
335
|
+
query.sourceObjectTypeId,
|
|
336
|
+
input.result,
|
|
337
|
+
path,
|
|
338
|
+
ctx
|
|
339
|
+
)
|
|
165
340
|
return {
|
|
166
|
-
result
|
|
167
|
-
query.linkId,
|
|
168
|
-
query.direction,
|
|
169
|
-
query.sourceObjectTypeId,
|
|
170
|
-
input.result,
|
|
171
|
-
path,
|
|
172
|
-
ctx
|
|
173
|
-
),
|
|
341
|
+
result,
|
|
174
342
|
query: { ...query, input: input.query },
|
|
343
|
+
admissionState: admitTransition(
|
|
344
|
+
ctx,
|
|
345
|
+
ctx.admission.edge({
|
|
346
|
+
state: input.admissionState,
|
|
347
|
+
result,
|
|
348
|
+
linkId: query.linkId,
|
|
349
|
+
direction: query.direction,
|
|
350
|
+
sourceObjectTypeId: query.sourceObjectTypeId,
|
|
351
|
+
use: "traverse",
|
|
352
|
+
path,
|
|
353
|
+
})
|
|
354
|
+
),
|
|
175
355
|
}
|
|
176
356
|
}
|
|
177
357
|
case "set":
|
|
178
358
|
return validateSet(query.inputs, query.op, path, ctx)
|
|
179
359
|
case "sort": {
|
|
180
360
|
const input = validateQueryNode(query.input, `${path}.input`, ctx)
|
|
181
|
-
const fields = validateSortFields(
|
|
182
|
-
|
|
361
|
+
const fields = validateSortFields(
|
|
362
|
+
query.fields,
|
|
363
|
+
input.result,
|
|
364
|
+
input.admissionState,
|
|
365
|
+
"sort",
|
|
366
|
+
path,
|
|
367
|
+
ctx
|
|
368
|
+
)
|
|
369
|
+
return {
|
|
370
|
+
result: input.result,
|
|
371
|
+
query: { ...query, input: input.query, fields },
|
|
372
|
+
admissionState: input.admissionState,
|
|
373
|
+
}
|
|
183
374
|
}
|
|
184
375
|
case "limit": {
|
|
185
376
|
const input = validateQueryNode(query.input, `${path}.input`, ctx)
|
|
186
377
|
validateLimit(query.limit, path, ctx)
|
|
187
|
-
return {
|
|
378
|
+
return {
|
|
379
|
+
result: input.result,
|
|
380
|
+
query: { ...query, input: input.query },
|
|
381
|
+
admissionState: input.admissionState,
|
|
382
|
+
}
|
|
188
383
|
}
|
|
189
384
|
case "page": {
|
|
190
385
|
const input = validateQueryNode(query.input, `${path}.input`, ctx)
|
|
191
386
|
validatePage(query.pageSize, query.pageToken, path, ctx)
|
|
192
|
-
return {
|
|
387
|
+
return {
|
|
388
|
+
result: input.result,
|
|
389
|
+
query: { ...query, input: input.query },
|
|
390
|
+
admissionState: input.admissionState,
|
|
391
|
+
}
|
|
193
392
|
}
|
|
194
393
|
case "project": {
|
|
195
394
|
const input = validateQueryNode(query.input, `${path}.input`, ctx)
|
|
196
|
-
validateProjection(query.properties, input.result, path, ctx)
|
|
197
|
-
return {
|
|
395
|
+
validateProjection(query.properties, input.result, input.admissionState, path, ctx)
|
|
396
|
+
return {
|
|
397
|
+
result: input.result,
|
|
398
|
+
query: { ...query, input: input.query },
|
|
399
|
+
admissionState: input.admissionState,
|
|
400
|
+
}
|
|
198
401
|
}
|
|
199
402
|
case "expand": {
|
|
200
403
|
const input = validateQueryNode(query.input, `${path}.input`, ctx)
|
|
@@ -203,10 +406,15 @@ function dispatchQueryNode(
|
|
|
203
406
|
const expansions = validateExpansions(
|
|
204
407
|
query.expansions,
|
|
205
408
|
input.result,
|
|
409
|
+
input.admissionState,
|
|
206
410
|
`${path}.expansions`,
|
|
207
411
|
ctx
|
|
208
412
|
)
|
|
209
|
-
return {
|
|
413
|
+
return {
|
|
414
|
+
result: input.result,
|
|
415
|
+
query: { ...query, input: input.query, expansions },
|
|
416
|
+
admissionState: input.admissionState,
|
|
417
|
+
}
|
|
210
418
|
}
|
|
211
419
|
}
|
|
212
420
|
}
|
|
@@ -215,7 +423,7 @@ function validateRefs(
|
|
|
215
423
|
refs: readonly ObjectRef[],
|
|
216
424
|
path: string,
|
|
217
425
|
ctx: QueryValidationContext
|
|
218
|
-
):
|
|
426
|
+
): QueryNodeValidation {
|
|
219
427
|
if (refs.length === 0) {
|
|
220
428
|
addIssue(ctx, `${path}.refs`, "empty_refs", "refs must include at least one object reference")
|
|
221
429
|
}
|
|
@@ -260,7 +468,7 @@ function validateStart(
|
|
|
260
468
|
includeSubtypes: boolean | undefined,
|
|
261
469
|
path: string,
|
|
262
470
|
ctx: QueryValidationContext
|
|
263
|
-
):
|
|
471
|
+
): QueryNodeValidation {
|
|
264
472
|
if (!objectTypeId) {
|
|
265
473
|
addIssue(ctx, path, "missing_object_type", "start.objectTypeId is required")
|
|
266
474
|
return { result: { objectTypeIds: [] }, query: { kind: "start", objectTypeId } }
|
|
@@ -281,6 +489,7 @@ function validateStart(
|
|
|
281
489
|
function validatePredicate(
|
|
282
490
|
predicate: ObjectQueryPredicate,
|
|
283
491
|
shape: ObjectQueryResultShape,
|
|
492
|
+
admissionState: ObjectQueryAdmissionState,
|
|
284
493
|
path: string,
|
|
285
494
|
ctx: QueryValidationContext
|
|
286
495
|
): ObjectQueryPredicate {
|
|
@@ -298,13 +507,13 @@ function validatePredicate(
|
|
|
298
507
|
return {
|
|
299
508
|
...predicate,
|
|
300
509
|
items: predicate.items.map((item, index) =>
|
|
301
|
-
validatePredicate(item, shape, `${path}.items[${index}]`, ctx)
|
|
510
|
+
validatePredicate(item, shape, admissionState, `${path}.items[${index}]`, ctx)
|
|
302
511
|
),
|
|
303
512
|
}
|
|
304
513
|
case "not":
|
|
305
514
|
return {
|
|
306
515
|
...predicate,
|
|
307
|
-
item: validatePredicate(predicate.item, shape, `${path}.item`, ctx),
|
|
516
|
+
item: validatePredicate(predicate.item, shape, admissionState, `${path}.item`, ctx),
|
|
308
517
|
}
|
|
309
518
|
case "eq":
|
|
310
519
|
case "neq":
|
|
@@ -321,6 +530,12 @@ function validatePredicate(
|
|
|
321
530
|
ctx
|
|
322
531
|
)
|
|
323
532
|
validatePredicateValue(predicate.propertyId, predicate.value, shape, path, ctx)
|
|
533
|
+
admitProperty(ctx, {
|
|
534
|
+
state: admissionState,
|
|
535
|
+
propertyId: predicate.propertyId,
|
|
536
|
+
use: "filter",
|
|
537
|
+
path,
|
|
538
|
+
})
|
|
324
539
|
return {
|
|
325
540
|
...authoredPredicate,
|
|
326
541
|
value: normalizeObjectQueryValue(predicate.value, scalarKind),
|
|
@@ -342,6 +557,12 @@ function validatePredicate(
|
|
|
342
557
|
predicate.values.forEach((value, index) => {
|
|
343
558
|
validatePredicateValue(predicate.propertyId, value, shape, `${path}.values[${index}]`, ctx)
|
|
344
559
|
})
|
|
560
|
+
admitProperty(ctx, {
|
|
561
|
+
state: admissionState,
|
|
562
|
+
propertyId: predicate.propertyId,
|
|
563
|
+
use: "filter",
|
|
564
|
+
path,
|
|
565
|
+
})
|
|
345
566
|
return {
|
|
346
567
|
...authoredPredicate,
|
|
347
568
|
values: predicate.values.map((value) => normalizeObjectQueryValue(value, scalarKind)),
|
|
@@ -350,6 +571,12 @@ function validatePredicate(
|
|
|
350
571
|
}
|
|
351
572
|
case "exists":
|
|
352
573
|
resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx)
|
|
574
|
+
admitProperty(ctx, {
|
|
575
|
+
state: admissionState,
|
|
576
|
+
propertyId: predicate.propertyId,
|
|
577
|
+
use: "filter",
|
|
578
|
+
path,
|
|
579
|
+
})
|
|
353
580
|
if (typeof predicate.value !== "boolean") {
|
|
354
581
|
addIssue(ctx, path, "invalid_exists_value", "Predicate 'exists' value must be boolean")
|
|
355
582
|
}
|
|
@@ -357,6 +584,12 @@ function validatePredicate(
|
|
|
357
584
|
case "contains":
|
|
358
585
|
resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx)
|
|
359
586
|
validateContainsValue(predicate.propertyId, predicate.value, shape, path, ctx)
|
|
587
|
+
admitProperty(ctx, {
|
|
588
|
+
state: admissionState,
|
|
589
|
+
propertyId: predicate.propertyId,
|
|
590
|
+
use: "filter",
|
|
591
|
+
path,
|
|
592
|
+
})
|
|
360
593
|
return predicate
|
|
361
594
|
}
|
|
362
595
|
}
|
|
@@ -552,6 +785,7 @@ function validateTextQuery(
|
|
|
552
785
|
query: string,
|
|
553
786
|
fields: readonly string[] | undefined,
|
|
554
787
|
shape: ObjectQueryResultShape,
|
|
788
|
+
admissionState: ObjectQueryAdmissionState,
|
|
555
789
|
path: string,
|
|
556
790
|
ctx: QueryValidationContext
|
|
557
791
|
): TextFieldResolution {
|
|
@@ -576,6 +810,13 @@ function validateTextQuery(
|
|
|
576
810
|
if (fieldsByObjectType) fieldsByObjectType[objectType.id] = uniqueStrings(fieldIds)
|
|
577
811
|
|
|
578
812
|
for (const fieldId of fieldIds) {
|
|
813
|
+
admitProperty(ctx, {
|
|
814
|
+
state: admissionState,
|
|
815
|
+
propertyId: fieldId,
|
|
816
|
+
objectTypeId: objectType.id,
|
|
817
|
+
use: "text",
|
|
818
|
+
path: `${path}.fields`,
|
|
819
|
+
})
|
|
579
820
|
const property = getProperty(objectType, fieldId)
|
|
580
821
|
if (!property) {
|
|
581
822
|
addIssue(
|
|
@@ -609,6 +850,7 @@ function validateVectorQuery(
|
|
|
609
850
|
propertyId: string,
|
|
610
851
|
k: number,
|
|
611
852
|
shape: ObjectQueryResultShape,
|
|
853
|
+
admissionState: ObjectQueryAdmissionState,
|
|
612
854
|
path: string,
|
|
613
855
|
ctx: QueryValidationContext
|
|
614
856
|
): void {
|
|
@@ -625,6 +867,13 @@ function validateVectorQuery(
|
|
|
625
867
|
}
|
|
626
868
|
|
|
627
869
|
for (const objectType of getObjectTypesForResult(shape, ctx)) {
|
|
870
|
+
admitProperty(ctx, {
|
|
871
|
+
state: admissionState,
|
|
872
|
+
propertyId,
|
|
873
|
+
objectTypeId: objectType.id,
|
|
874
|
+
use: "vector",
|
|
875
|
+
path,
|
|
876
|
+
})
|
|
628
877
|
const property = getProperty(objectType, propertyId)
|
|
629
878
|
if (!property) {
|
|
630
879
|
addIssue(
|
|
@@ -795,17 +1044,19 @@ function validateIncomingTraverse(
|
|
|
795
1044
|
function validateExpansions(
|
|
796
1045
|
expansions: readonly ObjectExpansion[],
|
|
797
1046
|
shape: ObjectQueryResultShape,
|
|
1047
|
+
admissionState: ObjectQueryAdmissionState,
|
|
798
1048
|
path: string,
|
|
799
1049
|
ctx: QueryValidationContext
|
|
800
1050
|
): ObjectExpansion[] {
|
|
801
1051
|
return expansions.map((expansion, index) =>
|
|
802
|
-
validateExpansion(expansion, shape, `${path}[${index}]`, ctx)
|
|
1052
|
+
validateExpansion(expansion, shape, admissionState, `${path}[${index}]`, ctx)
|
|
803
1053
|
)
|
|
804
1054
|
}
|
|
805
1055
|
|
|
806
1056
|
function validateExpansion(
|
|
807
1057
|
expansion: ObjectExpansion,
|
|
808
1058
|
shape: ObjectQueryResultShape,
|
|
1059
|
+
admissionState: ObjectQueryAdmissionState,
|
|
809
1060
|
path: string,
|
|
810
1061
|
ctx: QueryValidationContext
|
|
811
1062
|
): ObjectExpansion {
|
|
@@ -830,6 +1081,18 @@ function validateExpansion(
|
|
|
830
1081
|
path,
|
|
831
1082
|
ctx
|
|
832
1083
|
)
|
|
1084
|
+
const targetAdmissionState = admitTransition(
|
|
1085
|
+
ctx,
|
|
1086
|
+
ctx.admission.edge({
|
|
1087
|
+
state: admissionState,
|
|
1088
|
+
result: targetShape,
|
|
1089
|
+
linkId: expansion.linkId,
|
|
1090
|
+
direction: expansion.direction,
|
|
1091
|
+
sourceObjectTypeId: expansion.sourceObjectTypeId,
|
|
1092
|
+
use: "expand",
|
|
1093
|
+
path,
|
|
1094
|
+
})
|
|
1095
|
+
)
|
|
833
1096
|
|
|
834
1097
|
// Expansion targets are touched types: the principal must be able to `view`
|
|
835
1098
|
// every type a query hydrates, exactly like `start`/`traverse`. `dispatch`'s
|
|
@@ -841,10 +1104,17 @@ function validateExpansion(
|
|
|
841
1104
|
|
|
842
1105
|
validateExpansionLimit(expansion.limit, path, ctx)
|
|
843
1106
|
const orderBy = expansion.orderBy
|
|
844
|
-
? validateSortFields(
|
|
1107
|
+
? validateSortFields(
|
|
1108
|
+
expansion.orderBy,
|
|
1109
|
+
targetShape,
|
|
1110
|
+
targetAdmissionState,
|
|
1111
|
+
"expand.orderBy",
|
|
1112
|
+
`${path}.orderBy`,
|
|
1113
|
+
ctx
|
|
1114
|
+
)
|
|
845
1115
|
: undefined
|
|
846
1116
|
const expand = expansion.expand
|
|
847
|
-
? validateExpansions(expansion.expand, targetShape, `${path}.expand`, ctx)
|
|
1117
|
+
? validateExpansions(expansion.expand, targetShape, targetAdmissionState, `${path}.expand`, ctx)
|
|
848
1118
|
: undefined
|
|
849
1119
|
|
|
850
1120
|
return { ...expansion, orderBy, expand }
|
|
@@ -996,7 +1266,11 @@ function validateSet(
|
|
|
996
1266
|
): QueryValidationResult {
|
|
997
1267
|
if (inputs.length === 0) {
|
|
998
1268
|
addIssue(ctx, path, "empty_set", `Set operation '${op}' must include at least one input`)
|
|
999
|
-
return {
|
|
1269
|
+
return {
|
|
1270
|
+
result: { objectTypeIds: [] },
|
|
1271
|
+
query: { kind: "set", op, inputs },
|
|
1272
|
+
admissionState: ctx.admission.empty(),
|
|
1273
|
+
}
|
|
1000
1274
|
}
|
|
1001
1275
|
|
|
1002
1276
|
const results = inputs.map((input, index) =>
|
|
@@ -1019,12 +1293,19 @@ function validateSet(
|
|
|
1019
1293
|
return {
|
|
1020
1294
|
result: first,
|
|
1021
1295
|
query: { kind: "set", op, inputs: results.map((result) => result.query) },
|
|
1296
|
+
admissionState: ctx.admission.set({
|
|
1297
|
+
op,
|
|
1298
|
+
states: results.map((result) => result.admissionState),
|
|
1299
|
+
path,
|
|
1300
|
+
}),
|
|
1022
1301
|
}
|
|
1023
1302
|
}
|
|
1024
1303
|
|
|
1025
1304
|
function validateSortFields(
|
|
1026
1305
|
fields: readonly ObjectQuerySortField[],
|
|
1027
1306
|
shape: ObjectQueryResultShape,
|
|
1307
|
+
admissionState: ObjectQueryAdmissionState,
|
|
1308
|
+
use: Extract<ObjectQueryPropertyUse, "sort" | "expand.orderBy">,
|
|
1028
1309
|
path: string,
|
|
1029
1310
|
ctx: QueryValidationContext
|
|
1030
1311
|
): ObjectQuerySortField[] {
|
|
@@ -1057,6 +1338,13 @@ function validateSortFields(
|
|
|
1057
1338
|
|
|
1058
1339
|
if (field.kind === "relevance") return field
|
|
1059
1340
|
|
|
1341
|
+
admitProperty(ctx, {
|
|
1342
|
+
state: admissionState,
|
|
1343
|
+
propertyId: field.propertyId,
|
|
1344
|
+
use,
|
|
1345
|
+
path: `${path}.fields[${index}]`,
|
|
1346
|
+
})
|
|
1347
|
+
|
|
1060
1348
|
const { scalarKind: _authoredScalarKind, ...authoredField } = field
|
|
1061
1349
|
|
|
1062
1350
|
const schemas: Schema[] = []
|
|
@@ -1132,6 +1420,7 @@ function validatePage(
|
|
|
1132
1420
|
function validateProjection(
|
|
1133
1421
|
properties: readonly string[] | undefined,
|
|
1134
1422
|
shape: ObjectQueryResultShape,
|
|
1423
|
+
admissionState: ObjectQueryAdmissionState,
|
|
1135
1424
|
path: string,
|
|
1136
1425
|
ctx: QueryValidationContext
|
|
1137
1426
|
): void {
|
|
@@ -1142,6 +1431,12 @@ function validateProjection(
|
|
|
1142
1431
|
|
|
1143
1432
|
const seen = new Set<string>()
|
|
1144
1433
|
properties.forEach((propertyId, index) => {
|
|
1434
|
+
admitProperty(ctx, {
|
|
1435
|
+
state: admissionState,
|
|
1436
|
+
propertyId,
|
|
1437
|
+
use: "project",
|
|
1438
|
+
path: `${path}.properties[${index}]`,
|
|
1439
|
+
})
|
|
1145
1440
|
if (seen.has(propertyId)) {
|
|
1146
1441
|
addIssue(
|
|
1147
1442
|
ctx,
|
|
@@ -1327,6 +1622,28 @@ function uniqueStrings(values: readonly string[]): string[] {
|
|
|
1327
1622
|
return [...new Set(values)]
|
|
1328
1623
|
}
|
|
1329
1624
|
|
|
1625
|
+
function admitTransition(
|
|
1626
|
+
ctx: QueryValidationContext,
|
|
1627
|
+
transition: ObjectQueryAdmissionTransition
|
|
1628
|
+
): ObjectQueryAdmissionState {
|
|
1629
|
+
if (transition.denial) recordAdmissionDenial(ctx, transition.denial)
|
|
1630
|
+
return transition.state
|
|
1631
|
+
}
|
|
1632
|
+
|
|
1633
|
+
function admitProperty(
|
|
1634
|
+
ctx: QueryValidationContext,
|
|
1635
|
+
input: Parameters<ObjectQuerySemanticAdmission["property"]>[0]
|
|
1636
|
+
): void {
|
|
1637
|
+
const denial = ctx.admission.property(input)
|
|
1638
|
+
if (denial) recordAdmissionDenial(ctx, denial)
|
|
1639
|
+
}
|
|
1640
|
+
|
|
1641
|
+
function recordAdmissionDenial(ctx: QueryValidationContext, denial: Error): void {
|
|
1642
|
+
// Only the first deterministic denial is observable. Keep walking so ordinary validation keeps
|
|
1643
|
+
// priority, but do not retain attacker-controlled messages for every rejected field or edge.
|
|
1644
|
+
if (ctx.admissionDenials.length === 0) ctx.admissionDenials.push(denial)
|
|
1645
|
+
}
|
|
1646
|
+
|
|
1330
1647
|
function addIssue(ctx: QueryValidationContext, path: string, code: string, message: string): void {
|
|
1331
1648
|
ctx.issues.push({ path, code, message })
|
|
1332
1649
|
}
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* per-property telemetry appenders with compile-time unit and value type safety.
|
|
5
5
|
*/
|
|
6
6
|
import type { ActionDefinition } from "../../actions"
|
|
7
|
-
import { assertAuthorized, assertPrivileged } from "../../authorization"
|
|
8
7
|
import type { ObjectLink, ObjectRef, ValueType } from "../../ontology"
|
|
9
8
|
import { OntologyValidationError } from "../../ontology/errors"
|
|
10
9
|
import type { LinkToken, ObjectTypeWithPropertyTokens } from "../../ontology/tokens"
|
|
@@ -28,9 +27,7 @@ export function createObjectByIdHandle<
|
|
|
28
27
|
>(ctx: ExecutionObjectContext, primaryId: string): ObjectByIdHandle<TObjectType, TValueTypes> {
|
|
29
28
|
const objectHandle = {
|
|
30
29
|
get: async () => {
|
|
31
|
-
|
|
32
|
-
const row = await ctx.storage.objects.getByPrimaryId({
|
|
33
|
-
projectId: ctx.projectId,
|
|
30
|
+
const row = await ctx.objectReader.getByPrimaryId({
|
|
34
31
|
objectTypeId: ctx.objectType.id,
|
|
35
32
|
primaryId,
|
|
36
33
|
})
|
|
@@ -38,13 +35,10 @@ export function createObjectByIdHandle<
|
|
|
38
35
|
},
|
|
39
36
|
|
|
40
37
|
listLinks: async (linkToken?: AnyLinkToken) => {
|
|
41
|
-
// Link rows reveal target types; no link grant semantics exist yet.
|
|
42
|
-
assertPrivileged(ctx, "listLinks")
|
|
43
38
|
if (linkToken) {
|
|
44
39
|
assertLinkTokenBelongsToObjectType(ctx.objectType, linkToken)
|
|
45
40
|
}
|
|
46
|
-
return ctx.
|
|
47
|
-
projectId: ctx.projectId,
|
|
41
|
+
return ctx.objectReader.listLinks({
|
|
48
42
|
objectTypeId: ctx.objectType.id,
|
|
49
43
|
objectId: primaryId,
|
|
50
44
|
linkId: linkToken?.id,
|