@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
|
@@ -11,21 +11,22 @@ import {
|
|
|
11
11
|
objectBatchKey,
|
|
12
12
|
objectLinkCursor,
|
|
13
13
|
queryScalarValuesEqual
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-sbzzr4kx.js";
|
|
15
15
|
import {
|
|
16
|
+
MAX_OBJECT_READ_FACETS,
|
|
16
17
|
assertAuthorized,
|
|
17
18
|
isAllowed
|
|
18
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-p1x242ad.js";
|
|
19
20
|
import {
|
|
20
21
|
validatePropertyValue,
|
|
21
22
|
validateSchemaValue
|
|
22
|
-
} from "./chunk-
|
|
23
|
-
import {
|
|
24
|
-
normalizeDecimalValue
|
|
25
|
-
} from "./chunk-04b07a9q.js";
|
|
23
|
+
} from "./chunk-h0k55pc7.js";
|
|
26
24
|
import {
|
|
27
25
|
formatUnknownObjectTypeMessage
|
|
28
26
|
} from "./chunk-dktq02ne.js";
|
|
27
|
+
import {
|
|
28
|
+
normalizeDecimalValue
|
|
29
|
+
} from "./chunk-04b07a9q.js";
|
|
29
30
|
import {
|
|
30
31
|
stableJsonStringify
|
|
31
32
|
} from "./chunk-n6jxh8sw.js";
|
|
@@ -330,29 +331,53 @@ function addIssue(issues, path, code, message) {
|
|
|
330
331
|
var DEFAULT_MAX_LIMIT = 1000;
|
|
331
332
|
var DEFAULT_MAX_PAGE_SIZE = 1000;
|
|
332
333
|
var DEFAULT_MAX_REFS = 1000;
|
|
334
|
+
var NOOP_ADMISSION_STATE = Object.freeze({});
|
|
335
|
+
var NOOP_QUERY_ADMISSION = Object.freeze({
|
|
336
|
+
empty: () => NOOP_ADMISSION_STATE,
|
|
337
|
+
source: () => ({ state: NOOP_ADMISSION_STATE }),
|
|
338
|
+
property: () => {
|
|
339
|
+
return;
|
|
340
|
+
},
|
|
341
|
+
edge: (input) => ({
|
|
342
|
+
state: input.state
|
|
343
|
+
}),
|
|
344
|
+
set: (input) => input.states[0] ?? NOOP_ADMISSION_STATE
|
|
345
|
+
});
|
|
333
346
|
function validateObjectQuery(query, options) {
|
|
347
|
+
const admitted = validateObjectQueryWithAdmission(query, options, NOOP_QUERY_ADMISSION);
|
|
348
|
+
return {
|
|
349
|
+
query: admitted.query,
|
|
350
|
+
result: admitted.result,
|
|
351
|
+
touchedObjectTypeIds: admitted.touchedObjectTypeIds
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
function validateObjectQueryWithAdmission(query, options, admission) {
|
|
334
355
|
const normalized = options.normalize === false ? query : normalizeObjectQuery(query);
|
|
335
|
-
const ctx = createValidationContext(options);
|
|
356
|
+
const ctx = createValidationContext(options, admission);
|
|
336
357
|
const validation = validateQueryNode(normalized, "$", ctx);
|
|
337
358
|
if (ctx.issues.length > 0) {
|
|
338
359
|
throw new ObjectQueryValidationError(ctx.issues);
|
|
339
360
|
}
|
|
361
|
+
const denial = ctx.admissionDenials[0];
|
|
362
|
+
if (denial)
|
|
363
|
+
throw denial;
|
|
340
364
|
return {
|
|
341
365
|
query: validation.query,
|
|
342
366
|
result: validation.result,
|
|
343
|
-
touchedObjectTypeIds: [...ctx.touchedObjectTypeIds]
|
|
367
|
+
touchedObjectTypeIds: [...ctx.touchedObjectTypeIds],
|
|
368
|
+
admissionState: validation.admissionState
|
|
344
369
|
};
|
|
345
370
|
}
|
|
346
371
|
function collectObjectQueryValidationIssues(query, options) {
|
|
347
372
|
const normalized = options.normalize === false ? query : normalizeObjectQuery(query);
|
|
348
|
-
const ctx = createValidationContext(options);
|
|
373
|
+
const ctx = createValidationContext(options, NOOP_QUERY_ADMISSION);
|
|
349
374
|
validateQueryNode(normalized, "$", ctx);
|
|
350
375
|
return ctx.issues;
|
|
351
376
|
}
|
|
352
377
|
function resolveObjectQueryResultShape(query, options) {
|
|
353
378
|
return validateObjectQuery(query, options).result;
|
|
354
379
|
}
|
|
355
|
-
function createValidationContext(options) {
|
|
380
|
+
function createValidationContext(options, admission) {
|
|
356
381
|
return {
|
|
357
382
|
ontology: options.ontology,
|
|
358
383
|
valueTypesById: options.ontology.getValueTypesById(),
|
|
@@ -360,7 +385,9 @@ function createValidationContext(options) {
|
|
|
360
385
|
maxPageSize: options.maxPageSize ?? DEFAULT_MAX_PAGE_SIZE,
|
|
361
386
|
maxRefs: options.maxRefs ?? DEFAULT_MAX_REFS,
|
|
362
387
|
issues: [],
|
|
363
|
-
touchedObjectTypeIds: new Set
|
|
388
|
+
touchedObjectTypeIds: new Set,
|
|
389
|
+
admission,
|
|
390
|
+
admissionDenials: []
|
|
364
391
|
};
|
|
365
392
|
}
|
|
366
393
|
function validateQueryNode(query, path, ctx) {
|
|
@@ -372,18 +399,42 @@ function validateQueryNode(query, path, ctx) {
|
|
|
372
399
|
}
|
|
373
400
|
function dispatchQueryNode(query, path, ctx) {
|
|
374
401
|
switch (query.kind) {
|
|
375
|
-
case "start":
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
402
|
+
case "start": {
|
|
403
|
+
const validation = validateStart(query.objectTypeId, query.includeSubtypes, path, ctx);
|
|
404
|
+
return {
|
|
405
|
+
...validation,
|
|
406
|
+
admissionState: admitTransition(ctx, ctx.admission.source({
|
|
407
|
+
kind: "start",
|
|
408
|
+
result: validation.result,
|
|
409
|
+
objectTypeId: query.objectTypeId,
|
|
410
|
+
path
|
|
411
|
+
}))
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
case "refs": {
|
|
415
|
+
const validation = validateRefs(query.refs, path, ctx);
|
|
416
|
+
return {
|
|
417
|
+
...validation,
|
|
418
|
+
admissionState: admitTransition(ctx, ctx.admission.source({
|
|
419
|
+
kind: "refs",
|
|
420
|
+
result: validation.result,
|
|
421
|
+
refs: validation.query.kind === "refs" ? validation.query.refs : query.refs,
|
|
422
|
+
path
|
|
423
|
+
}))
|
|
424
|
+
};
|
|
425
|
+
}
|
|
379
426
|
case "filter": {
|
|
380
427
|
const input = validateQueryNode(query.input, `${path}.input`, ctx);
|
|
381
|
-
const predicate = validatePredicate(query.predicate, input.result, `${path}.predicate`, ctx);
|
|
382
|
-
return {
|
|
428
|
+
const predicate = validatePredicate(query.predicate, input.result, input.admissionState, `${path}.predicate`, ctx);
|
|
429
|
+
return {
|
|
430
|
+
result: input.result,
|
|
431
|
+
query: { ...query, input: input.query, predicate },
|
|
432
|
+
admissionState: input.admissionState
|
|
433
|
+
};
|
|
383
434
|
}
|
|
384
435
|
case "text": {
|
|
385
436
|
const input = validateQueryNode(query.input, `${path}.input`, ctx);
|
|
386
|
-
const textFields = validateTextQuery(query.query, query.fields, input.result, path, ctx);
|
|
437
|
+
const textFields = validateTextQuery(query.query, query.fields, input.result, input.admissionState, path, ctx);
|
|
387
438
|
return {
|
|
388
439
|
result: input.result,
|
|
389
440
|
query: {
|
|
@@ -391,47 +442,82 @@ function dispatchQueryNode(query, path, ctx) {
|
|
|
391
442
|
input: input.query,
|
|
392
443
|
fields: query.fields,
|
|
393
444
|
fieldsByObjectType: query.fields ? undefined : textFields.fieldsByObjectType
|
|
394
|
-
}
|
|
445
|
+
},
|
|
446
|
+
admissionState: input.admissionState
|
|
395
447
|
};
|
|
396
448
|
}
|
|
397
449
|
case "vector": {
|
|
398
450
|
const input = validateQueryNode(query.input, `${path}.input`, ctx);
|
|
399
|
-
validateVectorQuery(query.vector, query.propertyId, query.k, input.result, path, ctx);
|
|
400
|
-
return {
|
|
451
|
+
validateVectorQuery(query.vector, query.propertyId, query.k, input.result, input.admissionState, path, ctx);
|
|
452
|
+
return {
|
|
453
|
+
result: input.result,
|
|
454
|
+
query: { ...query, input: input.query },
|
|
455
|
+
admissionState: input.admissionState
|
|
456
|
+
};
|
|
401
457
|
}
|
|
402
458
|
case "traverse": {
|
|
403
459
|
const input = validateQueryNode(query.input, `${path}.input`, ctx);
|
|
460
|
+
const result = validateTraverse(query.linkId, query.direction, query.sourceObjectTypeId, input.result, path, ctx);
|
|
404
461
|
return {
|
|
405
|
-
result
|
|
406
|
-
query: { ...query, input: input.query }
|
|
462
|
+
result,
|
|
463
|
+
query: { ...query, input: input.query },
|
|
464
|
+
admissionState: admitTransition(ctx, ctx.admission.edge({
|
|
465
|
+
state: input.admissionState,
|
|
466
|
+
result,
|
|
467
|
+
linkId: query.linkId,
|
|
468
|
+
direction: query.direction,
|
|
469
|
+
sourceObjectTypeId: query.sourceObjectTypeId,
|
|
470
|
+
use: "traverse",
|
|
471
|
+
path
|
|
472
|
+
}))
|
|
407
473
|
};
|
|
408
474
|
}
|
|
409
475
|
case "set":
|
|
410
476
|
return validateSet(query.inputs, query.op, path, ctx);
|
|
411
477
|
case "sort": {
|
|
412
478
|
const input = validateQueryNode(query.input, `${path}.input`, ctx);
|
|
413
|
-
const fields = validateSortFields(query.fields, input.result, path, ctx);
|
|
414
|
-
return {
|
|
479
|
+
const fields = validateSortFields(query.fields, input.result, input.admissionState, "sort", path, ctx);
|
|
480
|
+
return {
|
|
481
|
+
result: input.result,
|
|
482
|
+
query: { ...query, input: input.query, fields },
|
|
483
|
+
admissionState: input.admissionState
|
|
484
|
+
};
|
|
415
485
|
}
|
|
416
486
|
case "limit": {
|
|
417
487
|
const input = validateQueryNode(query.input, `${path}.input`, ctx);
|
|
418
488
|
validateLimit(query.limit, path, ctx);
|
|
419
|
-
return {
|
|
489
|
+
return {
|
|
490
|
+
result: input.result,
|
|
491
|
+
query: { ...query, input: input.query },
|
|
492
|
+
admissionState: input.admissionState
|
|
493
|
+
};
|
|
420
494
|
}
|
|
421
495
|
case "page": {
|
|
422
496
|
const input = validateQueryNode(query.input, `${path}.input`, ctx);
|
|
423
497
|
validatePage(query.pageSize, query.pageToken, path, ctx);
|
|
424
|
-
return {
|
|
498
|
+
return {
|
|
499
|
+
result: input.result,
|
|
500
|
+
query: { ...query, input: input.query },
|
|
501
|
+
admissionState: input.admissionState
|
|
502
|
+
};
|
|
425
503
|
}
|
|
426
504
|
case "project": {
|
|
427
505
|
const input = validateQueryNode(query.input, `${path}.input`, ctx);
|
|
428
|
-
validateProjection(query.properties, input.result, path, ctx);
|
|
429
|
-
return {
|
|
506
|
+
validateProjection(query.properties, input.result, input.admissionState, path, ctx);
|
|
507
|
+
return {
|
|
508
|
+
result: input.result,
|
|
509
|
+
query: { ...query, input: input.query },
|
|
510
|
+
admissionState: input.admissionState
|
|
511
|
+
};
|
|
430
512
|
}
|
|
431
513
|
case "expand": {
|
|
432
514
|
const input = validateQueryNode(query.input, `${path}.input`, ctx);
|
|
433
|
-
const expansions = validateExpansions(query.expansions, input.result, `${path}.expansions`, ctx);
|
|
434
|
-
return {
|
|
515
|
+
const expansions = validateExpansions(query.expansions, input.result, input.admissionState, `${path}.expansions`, ctx);
|
|
516
|
+
return {
|
|
517
|
+
result: input.result,
|
|
518
|
+
query: { ...query, input: input.query, expansions },
|
|
519
|
+
admissionState: input.admissionState
|
|
520
|
+
};
|
|
435
521
|
}
|
|
436
522
|
}
|
|
437
523
|
}
|
|
@@ -473,7 +559,7 @@ function validateStart(objectTypeId, includeSubtypes, path, ctx) {
|
|
|
473
559
|
const objectTypeIds = includeSubtypes ? uniqueStrings([objectTypeId, ...ctx.ontology.listSubTypes(objectTypeId)]) : [objectTypeId];
|
|
474
560
|
return { result: { objectTypeIds }, query: { kind: "start", objectTypeId, includeSubtypes } };
|
|
475
561
|
}
|
|
476
|
-
function validatePredicate(predicate, shape, path, ctx) {
|
|
562
|
+
function validatePredicate(predicate, shape, admissionState, path, ctx) {
|
|
477
563
|
switch (predicate.op) {
|
|
478
564
|
case "and":
|
|
479
565
|
case "or":
|
|
@@ -482,12 +568,12 @@ function validatePredicate(predicate, shape, path, ctx) {
|
|
|
482
568
|
}
|
|
483
569
|
return {
|
|
484
570
|
...predicate,
|
|
485
|
-
items: predicate.items.map((item, index) => validatePredicate(item, shape, `${path}.items[${index}]`, ctx))
|
|
571
|
+
items: predicate.items.map((item, index) => validatePredicate(item, shape, admissionState, `${path}.items[${index}]`, ctx))
|
|
486
572
|
};
|
|
487
573
|
case "not":
|
|
488
574
|
return {
|
|
489
575
|
...predicate,
|
|
490
|
-
item: validatePredicate(predicate.item, shape, `${path}.item`, ctx)
|
|
576
|
+
item: validatePredicate(predicate.item, shape, admissionState, `${path}.item`, ctx)
|
|
491
577
|
};
|
|
492
578
|
case "eq":
|
|
493
579
|
case "neq":
|
|
@@ -498,6 +584,12 @@ function validatePredicate(predicate, shape, path, ctx) {
|
|
|
498
584
|
const { scalarKind: _authoredScalarKind, ...authoredPredicate } = predicate;
|
|
499
585
|
const scalarKind = resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx);
|
|
500
586
|
validatePredicateValue(predicate.propertyId, predicate.value, shape, path, ctx);
|
|
587
|
+
admitProperty(ctx, {
|
|
588
|
+
state: admissionState,
|
|
589
|
+
propertyId: predicate.propertyId,
|
|
590
|
+
use: "filter",
|
|
591
|
+
path
|
|
592
|
+
});
|
|
501
593
|
return {
|
|
502
594
|
...authoredPredicate,
|
|
503
595
|
value: normalizeObjectQueryValue(predicate.value, scalarKind),
|
|
@@ -513,6 +605,12 @@ function validatePredicate(predicate, shape, path, ctx) {
|
|
|
513
605
|
predicate.values.forEach((value, index) => {
|
|
514
606
|
validatePredicateValue(predicate.propertyId, value, shape, `${path}.values[${index}]`, ctx);
|
|
515
607
|
});
|
|
608
|
+
admitProperty(ctx, {
|
|
609
|
+
state: admissionState,
|
|
610
|
+
propertyId: predicate.propertyId,
|
|
611
|
+
use: "filter",
|
|
612
|
+
path
|
|
613
|
+
});
|
|
516
614
|
return {
|
|
517
615
|
...authoredPredicate,
|
|
518
616
|
values: predicate.values.map((value) => normalizeObjectQueryValue(value, scalarKind)),
|
|
@@ -521,6 +619,12 @@ function validatePredicate(predicate, shape, path, ctx) {
|
|
|
521
619
|
}
|
|
522
620
|
case "exists":
|
|
523
621
|
resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx);
|
|
622
|
+
admitProperty(ctx, {
|
|
623
|
+
state: admissionState,
|
|
624
|
+
propertyId: predicate.propertyId,
|
|
625
|
+
use: "filter",
|
|
626
|
+
path
|
|
627
|
+
});
|
|
524
628
|
if (typeof predicate.value !== "boolean") {
|
|
525
629
|
addIssue2(ctx, path, "invalid_exists_value", "Predicate 'exists' value must be boolean");
|
|
526
630
|
}
|
|
@@ -528,6 +632,12 @@ function validatePredicate(predicate, shape, path, ctx) {
|
|
|
528
632
|
case "contains":
|
|
529
633
|
resolveAndValidatePredicateProperty(predicate.propertyId, predicate.op, shape, path, ctx);
|
|
530
634
|
validateContainsValue(predicate.propertyId, predicate.value, shape, path, ctx);
|
|
635
|
+
admitProperty(ctx, {
|
|
636
|
+
state: admissionState,
|
|
637
|
+
propertyId: predicate.propertyId,
|
|
638
|
+
use: "filter",
|
|
639
|
+
path
|
|
640
|
+
});
|
|
531
641
|
return predicate;
|
|
532
642
|
}
|
|
533
643
|
}
|
|
@@ -629,7 +739,7 @@ function validateContainsValue(propertyId, value, shape, path, ctx) {
|
|
|
629
739
|
}
|
|
630
740
|
}
|
|
631
741
|
}
|
|
632
|
-
function validateTextQuery(query, fields, shape, path, ctx) {
|
|
742
|
+
function validateTextQuery(query, fields, shape, admissionState, path, ctx) {
|
|
633
743
|
if (query.trim().length === 0) {
|
|
634
744
|
addIssue2(ctx, path, "empty_text_query", "Text query must not be empty");
|
|
635
745
|
}
|
|
@@ -643,6 +753,13 @@ function validateTextQuery(query, fields, shape, path, ctx) {
|
|
|
643
753
|
if (fieldsByObjectType)
|
|
644
754
|
fieldsByObjectType[objectType.id] = uniqueStrings(fieldIds);
|
|
645
755
|
for (const fieldId of fieldIds) {
|
|
756
|
+
admitProperty(ctx, {
|
|
757
|
+
state: admissionState,
|
|
758
|
+
propertyId: fieldId,
|
|
759
|
+
objectTypeId: objectType.id,
|
|
760
|
+
use: "text",
|
|
761
|
+
path: `${path}.fields`
|
|
762
|
+
});
|
|
646
763
|
const property = getProperty(objectType, fieldId);
|
|
647
764
|
if (!property) {
|
|
648
765
|
addIssue2(ctx, path, "unknown_text_field", `Text query references unknown property '${fieldId}' on '${objectType.id}'`);
|
|
@@ -658,7 +775,7 @@ function validateTextQuery(query, fields, shape, path, ctx) {
|
|
|
658
775
|
}
|
|
659
776
|
return fieldsByObjectType ? { fieldsByObjectType } : {};
|
|
660
777
|
}
|
|
661
|
-
function validateVectorQuery(vector, propertyId, k, shape, path, ctx) {
|
|
778
|
+
function validateVectorQuery(vector, propertyId, k, shape, admissionState, path, ctx) {
|
|
662
779
|
if (!Number.isInteger(k) || k <= 0) {
|
|
663
780
|
addIssue2(ctx, path, "invalid_vector_k", "Vector query k must be a positive integer");
|
|
664
781
|
}
|
|
@@ -669,6 +786,13 @@ function validateVectorQuery(vector, propertyId, k, shape, path, ctx) {
|
|
|
669
786
|
addIssue2(ctx, path, "invalid_vector_value", "Vector query vector values must be finite numbers");
|
|
670
787
|
}
|
|
671
788
|
for (const objectType of getObjectTypesForResult(shape, ctx)) {
|
|
789
|
+
admitProperty(ctx, {
|
|
790
|
+
state: admissionState,
|
|
791
|
+
propertyId,
|
|
792
|
+
objectTypeId: objectType.id,
|
|
793
|
+
use: "vector",
|
|
794
|
+
path
|
|
795
|
+
});
|
|
672
796
|
const property = getProperty(objectType, propertyId);
|
|
673
797
|
if (!property) {
|
|
674
798
|
addIssue2(ctx, path, "unknown_vector_property", `Vector query references unknown property '${propertyId}' on '${objectType.id}'`);
|
|
@@ -749,21 +873,30 @@ function validateIncomingTraverse(linkId, sourceObjectTypeId, shape, path, ctx)
|
|
|
749
873
|
}
|
|
750
874
|
return { objectTypeIds: uniqueStrings(sourceTypeIds) };
|
|
751
875
|
}
|
|
752
|
-
function validateExpansions(expansions, shape, path, ctx) {
|
|
753
|
-
return expansions.map((expansion, index) => validateExpansion(expansion, shape, `${path}[${index}]`, ctx));
|
|
876
|
+
function validateExpansions(expansions, shape, admissionState, path, ctx) {
|
|
877
|
+
return expansions.map((expansion, index) => validateExpansion(expansion, shape, admissionState, `${path}[${index}]`, ctx));
|
|
754
878
|
}
|
|
755
|
-
function validateExpansion(expansion, shape, path, ctx) {
|
|
879
|
+
function validateExpansion(expansion, shape, admissionState, path, ctx) {
|
|
756
880
|
if (!expansion.linkId) {
|
|
757
881
|
addIssue2(ctx, path, "missing_expand_link", "expand.linkId is required");
|
|
758
882
|
return expansion;
|
|
759
883
|
}
|
|
760
884
|
const targetShape = expansion.direction === "incoming" ? resolveIncomingExpansionTargets(expansion.linkId, expansion.sourceObjectTypeId, shape, path, ctx) : resolveOutgoingExpansionTargets(expansion.linkId, expansion.sourceObjectTypeId, shape, path, ctx);
|
|
885
|
+
const targetAdmissionState = admitTransition(ctx, ctx.admission.edge({
|
|
886
|
+
state: admissionState,
|
|
887
|
+
result: targetShape,
|
|
888
|
+
linkId: expansion.linkId,
|
|
889
|
+
direction: expansion.direction,
|
|
890
|
+
sourceObjectTypeId: expansion.sourceObjectTypeId,
|
|
891
|
+
use: "expand",
|
|
892
|
+
path
|
|
893
|
+
}));
|
|
761
894
|
for (const targetTypeId of targetShape.objectTypeIds) {
|
|
762
895
|
ctx.touchedObjectTypeIds.add(targetTypeId);
|
|
763
896
|
}
|
|
764
897
|
validateExpansionLimit(expansion.limit, path, ctx);
|
|
765
|
-
const orderBy = expansion.orderBy ? validateSortFields(expansion.orderBy, targetShape, `${path}.orderBy`, ctx) : undefined;
|
|
766
|
-
const expand = expansion.expand ? validateExpansions(expansion.expand, targetShape, `${path}.expand`, ctx) : undefined;
|
|
898
|
+
const orderBy = expansion.orderBy ? validateSortFields(expansion.orderBy, targetShape, targetAdmissionState, "expand.orderBy", `${path}.orderBy`, ctx) : undefined;
|
|
899
|
+
const expand = expansion.expand ? validateExpansions(expansion.expand, targetShape, targetAdmissionState, `${path}.expand`, ctx) : undefined;
|
|
767
900
|
return { ...expansion, orderBy, expand };
|
|
768
901
|
}
|
|
769
902
|
function resolveOutgoingExpansionTargets(linkId, sourceObjectTypeId, shape, path, ctx) {
|
|
@@ -833,7 +966,11 @@ function validateExpansionLimit(limit, path, ctx) {
|
|
|
833
966
|
function validateSet(inputs, op, path, ctx) {
|
|
834
967
|
if (inputs.length === 0) {
|
|
835
968
|
addIssue2(ctx, path, "empty_set", `Set operation '${op}' must include at least one input`);
|
|
836
|
-
return {
|
|
969
|
+
return {
|
|
970
|
+
result: { objectTypeIds: [] },
|
|
971
|
+
query: { kind: "set", op, inputs },
|
|
972
|
+
admissionState: ctx.admission.empty()
|
|
973
|
+
};
|
|
837
974
|
}
|
|
838
975
|
const results = inputs.map((input, index) => validateQueryNode(input, `${path}.inputs[${index}]`, ctx));
|
|
839
976
|
const first = results[0]?.result ?? { objectTypeIds: [] };
|
|
@@ -845,10 +982,15 @@ function validateSet(inputs, op, path, ctx) {
|
|
|
845
982
|
});
|
|
846
983
|
return {
|
|
847
984
|
result: first,
|
|
848
|
-
query: { kind: "set", op, inputs: results.map((result) => result.query) }
|
|
985
|
+
query: { kind: "set", op, inputs: results.map((result) => result.query) },
|
|
986
|
+
admissionState: ctx.admission.set({
|
|
987
|
+
op,
|
|
988
|
+
states: results.map((result) => result.admissionState),
|
|
989
|
+
path
|
|
990
|
+
})
|
|
849
991
|
};
|
|
850
992
|
}
|
|
851
|
-
function validateSortFields(fields, shape, path, ctx) {
|
|
993
|
+
function validateSortFields(fields, shape, admissionState, use, path, ctx) {
|
|
852
994
|
if (fields.length === 0) {
|
|
853
995
|
addIssue2(ctx, path, "empty_sort", "Sort must include at least one field");
|
|
854
996
|
return [];
|
|
@@ -865,6 +1007,12 @@ function validateSortFields(fields, shape, path, ctx) {
|
|
|
865
1007
|
seen.add(key);
|
|
866
1008
|
if (field.kind === "relevance")
|
|
867
1009
|
return field;
|
|
1010
|
+
admitProperty(ctx, {
|
|
1011
|
+
state: admissionState,
|
|
1012
|
+
propertyId: field.propertyId,
|
|
1013
|
+
use,
|
|
1014
|
+
path: `${path}.fields[${index}]`
|
|
1015
|
+
});
|
|
868
1016
|
const { scalarKind: _authoredScalarKind, ...authoredField } = field;
|
|
869
1017
|
const schemas = [];
|
|
870
1018
|
for (const { objectType, property } of getPropertiesForResult(field.propertyId, shape, `${path}.fields[${index}]`, ctx)) {
|
|
@@ -900,7 +1048,7 @@ function validatePage(pageSize, pageToken, path, ctx) {
|
|
|
900
1048
|
addIssue2(ctx, path, "empty_page_token", "pageToken must not be empty when provided");
|
|
901
1049
|
}
|
|
902
1050
|
}
|
|
903
|
-
function validateProjection(properties, shape, path, ctx) {
|
|
1051
|
+
function validateProjection(properties, shape, admissionState, path, ctx) {
|
|
904
1052
|
if (!properties)
|
|
905
1053
|
return;
|
|
906
1054
|
if (properties.length === 0) {
|
|
@@ -908,6 +1056,12 @@ function validateProjection(properties, shape, path, ctx) {
|
|
|
908
1056
|
}
|
|
909
1057
|
const seen = new Set;
|
|
910
1058
|
properties.forEach((propertyId, index) => {
|
|
1059
|
+
admitProperty(ctx, {
|
|
1060
|
+
state: admissionState,
|
|
1061
|
+
propertyId,
|
|
1062
|
+
use: "project",
|
|
1063
|
+
path: `${path}.properties[${index}]`
|
|
1064
|
+
});
|
|
911
1065
|
if (seen.has(propertyId)) {
|
|
912
1066
|
addIssue2(ctx, `${path}.properties[${index}]`, "duplicate_projection_property", `Duplicate projected property '${propertyId}'`);
|
|
913
1067
|
}
|
|
@@ -1011,6 +1165,20 @@ function keyForTypeIds(typeIds) {
|
|
|
1011
1165
|
function uniqueStrings(values) {
|
|
1012
1166
|
return [...new Set(values)];
|
|
1013
1167
|
}
|
|
1168
|
+
function admitTransition(ctx, transition) {
|
|
1169
|
+
if (transition.denial)
|
|
1170
|
+
recordAdmissionDenial(ctx, transition.denial);
|
|
1171
|
+
return transition.state;
|
|
1172
|
+
}
|
|
1173
|
+
function admitProperty(ctx, input) {
|
|
1174
|
+
const denial = ctx.admission.property(input);
|
|
1175
|
+
if (denial)
|
|
1176
|
+
recordAdmissionDenial(ctx, denial);
|
|
1177
|
+
}
|
|
1178
|
+
function recordAdmissionDenial(ctx, denial) {
|
|
1179
|
+
if (ctx.admissionDenials.length === 0)
|
|
1180
|
+
ctx.admissionDenials.push(denial);
|
|
1181
|
+
}
|
|
1014
1182
|
function addIssue2(ctx, path, code, message) {
|
|
1015
1183
|
ctx.issues.push({ path, code, message });
|
|
1016
1184
|
}
|
|
@@ -1029,7 +1197,7 @@ async function executeObjectQuery(input, options) {
|
|
|
1029
1197
|
maxRefs: options.maxRefs,
|
|
1030
1198
|
normalize: false
|
|
1031
1199
|
});
|
|
1032
|
-
assertQueryViewable(validated, options);
|
|
1200
|
+
assertQueryViewable(input.projectId, validated, options);
|
|
1033
1201
|
const capabilities = options.storage.queryCapabilities();
|
|
1034
1202
|
const hasQueryObjects = typeof options.storage.queryObjects === "function";
|
|
1035
1203
|
const hasCountObjects = typeof options.storage.countObjects === "function";
|
|
@@ -1082,7 +1250,7 @@ async function countObjects(input, options) {
|
|
|
1082
1250
|
maxRefs: options.maxRefs,
|
|
1083
1251
|
normalize: false
|
|
1084
1252
|
});
|
|
1085
|
-
assertQueryViewable(validated, options);
|
|
1253
|
+
assertQueryViewable(input.projectId, validated, options);
|
|
1086
1254
|
const capabilities = options.storage.queryCapabilities();
|
|
1087
1255
|
const hasQueryObjects = typeof options.storage.queryObjects === "function";
|
|
1088
1256
|
const hasCountObjects = typeof options.storage.countObjects === "function";
|
|
@@ -1136,7 +1304,7 @@ async function existsObjects(input, options) {
|
|
|
1136
1304
|
maxRefs: options.maxRefs,
|
|
1137
1305
|
normalize: false
|
|
1138
1306
|
});
|
|
1139
|
-
assertQueryViewable(validated, options);
|
|
1307
|
+
assertQueryViewable(input.projectId, validated, options);
|
|
1140
1308
|
const capabilities = options.storage.queryCapabilities();
|
|
1141
1309
|
const hasQueryObjects = typeof options.storage.queryObjects === "function";
|
|
1142
1310
|
const hasCountObjects = typeof options.storage.countObjects === "function";
|
|
@@ -1190,8 +1358,8 @@ async function facetObjects(input, options) {
|
|
|
1190
1358
|
maxRefs: options.maxRefs,
|
|
1191
1359
|
normalize: false
|
|
1192
1360
|
});
|
|
1193
|
-
assertQueryViewable(validated, options);
|
|
1194
|
-
const facets =
|
|
1361
|
+
assertQueryViewable(input.projectId, validated, options);
|
|
1362
|
+
const facets = validateObjectFacetRequests(input.facets, validated.result.objectTypeIds, options);
|
|
1195
1363
|
const aggregateQuery = stripOuterRowShape(validated.query);
|
|
1196
1364
|
const capabilities = options.storage.queryCapabilities();
|
|
1197
1365
|
const hasQueryObjects = typeof options.storage.queryObjects === "function";
|
|
@@ -1240,10 +1408,10 @@ async function facetObjects(input, options) {
|
|
|
1240
1408
|
plan
|
|
1241
1409
|
};
|
|
1242
1410
|
}
|
|
1243
|
-
function assertQueryViewable(validated, authorization) {
|
|
1411
|
+
function assertQueryViewable(projectId, validated, authorization) {
|
|
1244
1412
|
if (!authorization.runtimeAuthorization && !authorization.authorization)
|
|
1245
1413
|
return;
|
|
1246
|
-
assertAuthorized(authorization, {
|
|
1414
|
+
assertAuthorized({ projectId, ...authorization }, {
|
|
1247
1415
|
kind: "object.query",
|
|
1248
1416
|
touchedObjectTypeIds: validated.touchedObjectTypeIds
|
|
1249
1417
|
});
|
|
@@ -1508,31 +1676,20 @@ async function collectOutgoingEdges(projectId, parents, expansion, options) {
|
|
|
1508
1676
|
});
|
|
1509
1677
|
}
|
|
1510
1678
|
async function collectIncomingEdges(projectId, parents, expansion, options) {
|
|
1511
|
-
const
|
|
1679
|
+
const linksByKey = await options.storage.listLinksBatch({
|
|
1512
1680
|
projectId,
|
|
1681
|
+
direction: "incoming",
|
|
1513
1682
|
items: parents.map((parent) => ({
|
|
1514
1683
|
objectTypeId: parent.objectTypeId,
|
|
1515
|
-
objectId: parent.primaryId
|
|
1684
|
+
objectId: parent.primaryId,
|
|
1685
|
+
linkId: expansion.linkId
|
|
1516
1686
|
}))
|
|
1517
1687
|
});
|
|
1518
|
-
const byTarget = new Map;
|
|
1519
|
-
for (const link of incident) {
|
|
1520
|
-
if (link.linkId !== expansion.linkId)
|
|
1521
|
-
continue;
|
|
1522
|
-
if (expansion.sourceObjectTypeId && link.sourceTypeId !== expansion.sourceObjectTypeId)
|
|
1523
|
-
continue;
|
|
1524
|
-
const key = targetKey(link.targetTypeId, link.targetId);
|
|
1525
|
-
const bucket = byTarget.get(key);
|
|
1526
|
-
if (bucket)
|
|
1527
|
-
bucket.push(link);
|
|
1528
|
-
else
|
|
1529
|
-
byTarget.set(key, [link]);
|
|
1530
|
-
}
|
|
1531
1688
|
return parents.map((parent) => {
|
|
1532
|
-
const links =
|
|
1689
|
+
const links = linksByKey.get(linkBatchKey(parent.objectTypeId, parent.primaryId, expansion.linkId));
|
|
1533
1690
|
if (!links)
|
|
1534
1691
|
return [];
|
|
1535
|
-
return links.map((link) => ({
|
|
1692
|
+
return links.filter((link) => !expansion.sourceObjectTypeId || link.sourceTypeId === expansion.sourceObjectTypeId).map((link) => ({
|
|
1536
1693
|
neighborTypeId: link.sourceTypeId,
|
|
1537
1694
|
neighborId: link.sourceId,
|
|
1538
1695
|
edgeProperties: link.properties
|
|
@@ -1750,12 +1907,21 @@ function stripOuterRowShape(query) {
|
|
|
1750
1907
|
return query;
|
|
1751
1908
|
}
|
|
1752
1909
|
}
|
|
1753
|
-
function
|
|
1910
|
+
function validateObjectFacetRequests(facets, objectTypeIds, options) {
|
|
1754
1911
|
const issues = [];
|
|
1755
1912
|
const maxLimit = options.maxFacetLimit ?? DEFAULT_MAX_FACET_LIMIT;
|
|
1756
1913
|
if (facets.length === 0) {
|
|
1757
1914
|
addFacetIssue(issues, "$.facets", "empty_facets", "At least one facet is required");
|
|
1758
1915
|
}
|
|
1916
|
+
if (facets.length > MAX_OBJECT_READ_FACETS) {
|
|
1917
|
+
throw new ObjectQueryValidationError([
|
|
1918
|
+
{
|
|
1919
|
+
path: "$.facets",
|
|
1920
|
+
code: "too_many_facets",
|
|
1921
|
+
message: `facets must include at most ${MAX_OBJECT_READ_FACETS} facet requests`
|
|
1922
|
+
}
|
|
1923
|
+
]);
|
|
1924
|
+
}
|
|
1759
1925
|
if (!Number.isInteger(maxLimit) || maxLimit <= 0) {
|
|
1760
1926
|
addFacetIssue(issues, "$.maxFacetLimit", "invalid_facet_bound", "maxFacetLimit must be positive");
|
|
1761
1927
|
}
|
|
@@ -2020,19 +2186,32 @@ var MAX_LINK_QUERY_OBJECTS = 1000;
|
|
|
2020
2186
|
var MAX_LINK_PAGE_SIZE = 1000;
|
|
2021
2187
|
var DEFAULT_LINK_PAGE_SIZE = 100;
|
|
2022
2188
|
var LINK_PAGE_TOKEN_PREFIX = "link:v1:";
|
|
2023
|
-
|
|
2024
|
-
const
|
|
2189
|
+
function preflightObjectQueryLinks(input, options) {
|
|
2190
|
+
const projectId = input.projectId;
|
|
2191
|
+
const query = input.query;
|
|
2192
|
+
const requestedDirection = input.direction;
|
|
2193
|
+
const linkId = input.linkId;
|
|
2194
|
+
const requestedIncludeObjects = input.includeObjects;
|
|
2195
|
+
const requestedPageSize = input.pageSize;
|
|
2196
|
+
const pageToken = input.pageToken;
|
|
2197
|
+
const direction = requestedDirection ?? "both";
|
|
2025
2198
|
if (direction !== "outgoing" && direction !== "incoming" && direction !== "both") {
|
|
2026
2199
|
throw new ObjectQueryExecutionError("invalid_link_direction", "direction must be 'outgoing', 'incoming', or 'both'", "$.direction");
|
|
2027
2200
|
}
|
|
2028
|
-
if (
|
|
2201
|
+
if (linkId !== undefined && typeof linkId !== "string") {
|
|
2202
|
+
throw new ObjectQueryExecutionError("invalid_link_id", "linkId must be a string", "$.linkId");
|
|
2203
|
+
}
|
|
2204
|
+
if (linkId !== undefined && linkId.length === 0) {
|
|
2029
2205
|
throw new ObjectQueryExecutionError("invalid_link_id", "linkId must not be empty", "$.linkId");
|
|
2030
2206
|
}
|
|
2031
|
-
|
|
2207
|
+
if (requestedIncludeObjects !== undefined && typeof requestedIncludeObjects !== "boolean") {
|
|
2208
|
+
throw new ObjectQueryExecutionError("invalid_link_include_objects", "includeObjects must be a boolean", "$.includeObjects");
|
|
2209
|
+
}
|
|
2210
|
+
const pageSize = requestedPageSize ?? DEFAULT_LINK_PAGE_SIZE;
|
|
2032
2211
|
if (!Number.isInteger(pageSize) || pageSize <= 0 || pageSize > MAX_LINK_PAGE_SIZE) {
|
|
2033
2212
|
throw new ObjectQueryExecutionError("invalid_link_page_size", `pageSize must be an integer between 1 and ${MAX_LINK_PAGE_SIZE}`, "$.pageSize");
|
|
2034
2213
|
}
|
|
2035
|
-
const validated = validateObjectQuery(normalizeObjectQuery(
|
|
2214
|
+
const validated = validateObjectQuery(normalizeObjectQuery(query), {
|
|
2036
2215
|
ontology: options.ontology,
|
|
2037
2216
|
maxLimit: options.maxLimit,
|
|
2038
2217
|
maxPageSize: options.maxPageSize,
|
|
@@ -2040,12 +2219,25 @@ async function executeObjectQueryLinks(input, options) {
|
|
|
2040
2219
|
normalize: false
|
|
2041
2220
|
});
|
|
2042
2221
|
assertLinkSelectorShape(validated.query);
|
|
2043
|
-
const
|
|
2044
|
-
const
|
|
2045
|
-
|
|
2222
|
+
const pageScope = linkPageScope(projectId, validated.query, direction, linkId);
|
|
2223
|
+
const cursor = decodeLinkPageToken(pageToken, pageScope);
|
|
2224
|
+
return {
|
|
2225
|
+
projectId,
|
|
2226
|
+
validated,
|
|
2227
|
+
direction,
|
|
2228
|
+
...linkId === undefined ? {} : { linkId },
|
|
2229
|
+
includeObjects: requestedIncludeObjects ?? false,
|
|
2230
|
+
pageSize,
|
|
2231
|
+
...cursor === undefined ? {} : { cursor },
|
|
2232
|
+
pageScope
|
|
2233
|
+
};
|
|
2234
|
+
}
|
|
2235
|
+
async function executeObjectQueryLinks(input, options) {
|
|
2236
|
+
const preflight = preflightObjectQueryLinks(input, options);
|
|
2237
|
+
const selectorQuery = preflight.validated.query;
|
|
2046
2238
|
const boundedSelector = selectorQuery.kind === "page" ? selectorQuery : { kind: "limit", limit: MAX_LINK_QUERY_OBJECTS + 1, input: selectorQuery };
|
|
2047
2239
|
const selection = await executeObjectQuery({
|
|
2048
|
-
projectId:
|
|
2240
|
+
projectId: preflight.projectId,
|
|
2049
2241
|
query: boundedSelector,
|
|
2050
2242
|
includeTotal: false
|
|
2051
2243
|
}, {
|
|
@@ -2061,16 +2253,16 @@ async function executeObjectQueryLinks(input, options) {
|
|
|
2061
2253
|
}
|
|
2062
2254
|
const endpointObjectTypeIds = visibleEndpointTypeIds(options);
|
|
2063
2255
|
const page = await options.storage.queryLinks({
|
|
2064
|
-
projectId:
|
|
2256
|
+
projectId: preflight.projectId,
|
|
2065
2257
|
objectRefs: selected.map((row) => ({
|
|
2066
2258
|
objectTypeId: row.objectTypeId,
|
|
2067
2259
|
primaryId: row.primaryId
|
|
2068
2260
|
})),
|
|
2069
|
-
direction,
|
|
2070
|
-
...
|
|
2261
|
+
direction: preflight.direction,
|
|
2262
|
+
...preflight.linkId === undefined ? {} : { linkId: preflight.linkId },
|
|
2071
2263
|
...endpointObjectTypeIds === undefined ? {} : { endpointObjectTypeIds },
|
|
2072
|
-
...cursor === undefined ? {} : { after: cursor },
|
|
2073
|
-
limit: pageSize
|
|
2264
|
+
...preflight.cursor === undefined ? {} : { after: preflight.cursor },
|
|
2265
|
+
limit: preflight.pageSize
|
|
2074
2266
|
});
|
|
2075
2267
|
const lastLink = page.links.at(-1);
|
|
2076
2268
|
let nextPageToken;
|
|
@@ -2078,9 +2270,9 @@ async function executeObjectQueryLinks(input, options) {
|
|
|
2078
2270
|
if (!lastLink) {
|
|
2079
2271
|
throw new Error("[Sixb] Object storage returned hasMore for an empty link page.");
|
|
2080
2272
|
}
|
|
2081
|
-
nextPageToken = encodeLinkPageToken(objectLinkCursor(lastLink), pageScope);
|
|
2273
|
+
nextPageToken = encodeLinkPageToken(objectLinkCursor(lastLink), preflight.pageScope);
|
|
2082
2274
|
}
|
|
2083
|
-
const objects =
|
|
2275
|
+
const objects = preflight.includeObjects ? await hydrateLinkQueryObjects(preflight.projectId, selected, page.links, options.storage) : [];
|
|
2084
2276
|
return {
|
|
2085
2277
|
objects,
|
|
2086
2278
|
links: page.links,
|
|
@@ -2193,6 +2385,6 @@ async function hydrateLinkQueryObjects(projectId, selected, links, storage) {
|
|
|
2193
2385
|
return row ? [row] : [];
|
|
2194
2386
|
});
|
|
2195
2387
|
}
|
|
2196
|
-
export { planObjectQuery, validateObjectQuery, collectObjectQueryValidationIssues, resolveObjectQueryResultShape, executeObjectQuery, countObjects, existsObjects, facetObjects, explainObjectQuery, executeObjectQueryLinks };
|
|
2388
|
+
export { planObjectQuery, validateObjectQuery, validateObjectQueryWithAdmission, collectObjectQueryValidationIssues, resolveObjectQueryResultShape, executeObjectQuery, countObjects, existsObjects, facetObjects, validateObjectFacetRequests, explainObjectQuery, preflightObjectQueryLinks, executeObjectQueryLinks };
|
|
2197
2389
|
|
|
2198
|
-
//# debugId=
|
|
2390
|
+
//# debugId=B113F0A1FC28DC4164756E2164756E21
|