@sixb/core 0.1.12 → 0.1.13
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/index.d.ts +2 -2
- package/dist/actions/index.d.ts.map +1 -1
- package/dist/actions/index.js +28 -26
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/read-facade.d.ts +14 -16
- package/dist/actions/read-facade.d.ts.map +1 -1
- package/dist/actions/request.d.ts.map +1 -1
- package/dist/actions/run-dispatch.d.ts +2 -0
- package/dist/actions/run-dispatch.d.ts.map +1 -1
- package/dist/actions/types/context.d.ts +18 -31
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/types/params.d.ts +2 -1
- package/dist/actions/types/params.d.ts.map +1 -1
- package/dist/actions/worker.js +1 -1
- package/dist/agents/index.js +41 -39
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/streams/index.js +2 -2
- package/dist/agents/streams/internal.js +2 -2
- package/dist/assert-never.d.ts +6 -0
- package/dist/assert-never.d.ts.map +1 -0
- package/dist/auth/client-address.d.ts +3 -0
- package/dist/auth/client-address.d.ts.map +1 -0
- package/dist/auth/csrf.d.ts +5 -1
- package/dist/auth/csrf.d.ts.map +1 -1
- package/dist/auth/index.d.ts +3 -2
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +14 -8
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/runtime.d.ts +58 -41
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/auth/session-cache.d.ts +10 -3
- package/dist/auth/session-cache.d.ts.map +1 -1
- package/dist/auth/sessions.d.ts +12 -0
- package/dist/auth/sessions.d.ts.map +1 -1
- package/dist/auth/strategy.js +1 -1
- package/dist/auth/types.d.ts +8 -15
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/authorization/index.js +3 -3
- package/dist/bootstrap/index.d.ts +1 -1
- package/dist/bootstrap/index.d.ts.map +1 -1
- package/dist/bootstrap/index.js +45 -43
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/bootstrap/ontology-type-manifest.d.ts +8 -0
- package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
- package/dist/{chunk-q5gz3g2j.js → chunk-0321g649.js} +2 -16
- package/dist/{chunk-q5gz3g2j.js.map → chunk-0321g649.js.map} +2 -2
- package/dist/{chunk-e1f1sqba.js → chunk-04h4t2b5.js} +3 -3
- package/dist/{chunk-y3ev53cq.js → chunk-2fv8sajb.js} +2 -2
- package/dist/{chunk-3bnt2wna.js → chunk-2hbhn1ff.js} +1 -1
- package/dist/{chunk-eyjzgav0.js → chunk-3nx8vj5a.js} +6 -4
- package/dist/chunk-3nx8vj5a.js.map +12 -0
- package/dist/{chunk-5tetw4hn.js → chunk-4tnrzqqh.js} +1 -1
- package/dist/{chunk-g50nxqs5.js → chunk-63fp9x3q.js} +63 -20
- package/dist/chunk-63fp9x3q.js.map +20 -0
- package/dist/{chunk-qm535afa.js → chunk-693f3zn8.js} +66 -24
- package/dist/chunk-693f3zn8.js.map +15 -0
- package/dist/{chunk-7zgecwy1.js → chunk-6x0pqh32.js} +12 -1
- package/dist/{chunk-7zgecwy1.js.map → chunk-6x0pqh32.js.map} +3 -3
- package/dist/{chunk-6ma8dvzc.js → chunk-898y24dd.js} +49 -42
- package/dist/chunk-898y24dd.js.map +15 -0
- package/dist/{chunk-7qnvhtcd.js → chunk-91wthfwe.js} +17 -17
- package/dist/{chunk-7qnvhtcd.js.map → chunk-91wthfwe.js.map} +5 -5
- package/dist/chunk-96yw3pwd.js.map +2 -2
- package/dist/{chunk-2cxv584m.js → chunk-9pfw47qx.js} +309 -204
- package/dist/chunk-9pfw47qx.js.map +44 -0
- package/dist/{chunk-4k53sm9e.js → chunk-a0073121.js} +59 -59
- package/dist/{chunk-4k53sm9e.js.map → chunk-a0073121.js.map} +5 -5
- package/dist/{chunk-jjwhy3rs.js → chunk-a69fkrtr.js} +5 -5
- package/dist/{chunk-y1ahv8b7.js → chunk-bdhfn0ww.js} +1 -1
- package/dist/{chunk-4ph94nhd.js → chunk-bep5rrdq.js} +2 -2
- package/dist/{chunk-kept9cdd.js → chunk-bxx3ms5t.js} +1 -1
- package/dist/{chunk-xtfryrfb.js → chunk-cbn96bve.js} +2 -2
- package/dist/{chunk-nzsy3xrp.js → chunk-cvrbhvtr.js} +69 -44
- package/dist/{chunk-nzsy3xrp.js.map → chunk-cvrbhvtr.js.map} +7 -7
- package/dist/{chunk-vsg0g7h9.js → chunk-d8yes9yx.js} +304 -45
- package/dist/chunk-d8yes9yx.js.map +20 -0
- package/dist/{chunk-tg4g4zh0.js → chunk-darm7eeg.js} +9 -9
- package/dist/{chunk-tg4g4zh0.js.map → chunk-darm7eeg.js.map} +3 -3
- package/dist/{chunk-vpxss818.js → chunk-drz59ve0.js} +9 -8
- package/dist/chunk-drz59ve0.js.map +10 -0
- package/dist/{chunk-7c2g3sz9.js → chunk-dsfw1bdr.js} +5 -5
- package/dist/{chunk-7c2g3sz9.js.map → chunk-dsfw1bdr.js.map} +1 -1
- package/dist/{chunk-p6r1ex7t.js → chunk-ffwvdgk1.js} +5 -13
- package/dist/chunk-ffwvdgk1.js.map +10 -0
- package/dist/{chunk-r5zythxp.js → chunk-gbcrz0gr.js} +7 -7
- package/dist/{chunk-ybhz3j9g.js → chunk-gc226ten.js} +104 -148
- package/dist/{chunk-ybhz3j9g.js.map → chunk-gc226ten.js.map} +7 -8
- package/dist/{chunk-3ghw2t5q.js → chunk-gmt22nxx.js} +10 -16
- package/dist/chunk-gmt22nxx.js.map +10 -0
- package/dist/chunk-h89wz928.js +42 -0
- package/dist/chunk-h89wz928.js.map +10 -0
- package/dist/{chunk-hkw8rykk.js → chunk-ht4a7mjg.js} +74 -4
- package/dist/chunk-ht4a7mjg.js.map +15 -0
- package/dist/{chunk-t7dzd1tm.js → chunk-jhyc777j.js} +2 -2
- package/dist/{chunk-xn686q2e.js → chunk-jmwy25mf.js} +75 -57
- package/dist/{chunk-xn686q2e.js.map → chunk-jmwy25mf.js.map} +3 -3
- package/dist/{chunk-f06sf7rr.js → chunk-k4kkp58d.js} +18 -5
- package/dist/chunk-k4kkp58d.js.map +11 -0
- package/dist/{chunk-2h63nrde.js → chunk-ky7zpbtt.js} +5 -7
- package/dist/{chunk-2h63nrde.js.map → chunk-ky7zpbtt.js.map} +3 -4
- package/dist/chunk-m4ehq95f.js +9 -0
- package/dist/chunk-m4ehq95f.js.map +10 -0
- package/dist/{chunk-0mza4xb2.js → chunk-m8zkvep1.js} +2 -2
- package/dist/{chunk-b768c93y.js → chunk-mf6hwpzh.js} +83 -28
- package/dist/{chunk-b768c93y.js.map → chunk-mf6hwpzh.js.map} +5 -5
- package/dist/{chunk-yxb4c62x.js → chunk-mr60an99.js} +3 -2
- package/dist/{chunk-yxb4c62x.js.map → chunk-mr60an99.js.map} +3 -3
- package/dist/chunk-n33e8dz8.js +191 -0
- package/dist/chunk-n33e8dz8.js.map +11 -0
- package/dist/chunk-rdghfsss.js.map +2 -2
- package/dist/{chunk-m7cx05vp.js → chunk-rqtdtm43.js} +126 -59
- package/dist/{chunk-m7cx05vp.js.map → chunk-rqtdtm43.js.map} +13 -12
- package/dist/{chunk-bbaa1fet.js → chunk-rzcjp5m2.js} +7 -3
- package/dist/chunk-rzcjp5m2.js.map +25 -0
- package/dist/{chunk-hzw7yv5g.js → chunk-rzkr70gr.js} +5 -1
- package/dist/{chunk-hzw7yv5g.js.map → chunk-rzkr70gr.js.map} +3 -3
- package/dist/{chunk-sfypc7mk.js → chunk-s24qbp32.js} +4 -4
- package/dist/{chunk-axndsymr.js → chunk-tw03bsmb.js} +2 -2
- package/dist/{chunk-axndsymr.js.map → chunk-tw03bsmb.js.map} +3 -3
- package/dist/{chunk-y0v18c2j.js → chunk-vef6qa14.js} +2 -2
- package/dist/{chunk-gzt6v1ja.js → chunk-vn3yh259.js} +1 -1
- package/dist/{chunk-bg2bs62d.js → chunk-w9bp61e7.js} +5 -5
- package/dist/{chunk-3h7ctayx.js → chunk-xgptywp0.js} +4 -3
- package/dist/chunk-xgptywp0.js.map +11 -0
- package/dist/{chunk-gswwr35f.js → chunk-y487ywrv.js} +4 -4
- package/dist/{chunk-bet1rb9h.js → chunk-y6vnvayj.js} +1 -1
- package/dist/{chunk-x9tmx3fc.js → chunk-ypj2wqtj.js} +3 -6
- package/dist/{chunk-x9tmx3fc.js.map → chunk-ypj2wqtj.js.map} +4 -4
- package/dist/{chunk-g2gezsg5.js → chunk-z9h698s8.js} +1 -1
- package/dist/{chunk-wjffn5m4.js → chunk-zdkcdshk.js} +3 -36
- package/dist/{chunk-wjffn5m4.js.map → chunk-zdkcdshk.js.map} +3 -4
- package/dist/{chunk-bfjv1adk.js → chunk-znw0zvy4.js} +1 -1
- package/dist/edits/types.d.ts +19 -19
- package/dist/edits/types.d.ts.map +1 -1
- package/dist/error-reporting/internal.js +3 -3
- package/dist/errors/catalog.d.ts +4 -0
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/internal.js +1 -1
- package/dist/events/envelope.d.ts +0 -12
- package/dist/events/envelope.d.ts.map +1 -1
- package/dist/events/index.d.ts +1 -1
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +3 -3
- package/dist/events/service.d.ts +1 -2
- package/dist/events/service.d.ts.map +1 -1
- package/dist/events/toStoredEvent.d.ts +1 -2
- package/dist/events/toStoredEvent.d.ts.map +1 -1
- package/dist/events/types/index.d.ts +2 -1
- package/dist/events/types/index.d.ts.map +1 -1
- package/dist/execution/agent.d.ts +1 -2
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +39 -37
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- package/dist/execution/primitive.d.ts +1 -2
- package/dist/execution/primitive.d.ts.map +1 -1
- package/dist/execution/primitive.js +38 -36
- package/dist/execution/primitive.js.map +3 -3
- package/dist/execution/request.d.ts +1 -2
- package/dist/execution/request.d.ts.map +1 -1
- package/dist/execution/request.js +39 -37
- package/dist/execution/request.js.map +3 -3
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +56 -50
- package/dist/index.js.map +1 -1
- package/dist/maintenance/ontology-maintenance.d.ts +11 -1
- package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
- package/dist/materialization/errors.d.ts +3 -1
- package/dist/materialization/errors.d.ts.map +1 -1
- package/dist/materialization/events.d.ts +27 -2
- package/dist/materialization/events.d.ts.map +1 -1
- package/dist/materializer/edits/commit.d.ts.map +1 -1
- package/dist/materializer/edits/operations.d.ts +2 -1
- package/dist/materializer/edits/operations.d.ts.map +1 -1
- package/dist/materializer/edits/plan.d.ts +2 -2
- package/dist/materializer/edits/plan.d.ts.map +1 -1
- package/dist/materializer/edits/user-refs.d.ts +30 -0
- package/dist/materializer/edits/user-refs.d.ts.map +1 -0
- package/dist/materializer/effective/build-events.d.ts +2 -2
- package/dist/materializer/effective/build-events.d.ts.map +1 -1
- package/dist/materializer/execution/scope.d.ts +11 -3
- package/dist/materializer/execution/scope.d.ts.map +1 -1
- package/dist/materializer/index.js +23 -21
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/projections/replacement-plan.d.ts +2 -0
- package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
- package/dist/materializer/telemetry/plan.d.ts +2 -2
- package/dist/materializer/telemetry/plan.d.ts.map +1 -1
- package/dist/models/execution/index.js +23 -21
- package/dist/models/execution/index.js.map +1 -1
- package/dist/models/index.js +1 -1
- package/dist/objects/execution.d.ts +21 -27
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +28 -26
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.js +27 -25
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/ir.d.ts +8 -1
- package/dist/objects/query/ir.d.ts.map +1 -1
- package/dist/objects/query/scalar-values.d.ts.map +1 -1
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/sdk/object-handle.d.ts +1 -2
- package/dist/objects/sdk/object-handle.d.ts.map +1 -1
- package/dist/objects/sdk/object-set.d.ts +2 -3
- package/dist/objects/sdk/object-set.d.ts.map +1 -1
- package/dist/objects/sdk/query-builder.d.ts +8 -10
- package/dist/objects/sdk/query-builder.d.ts.map +1 -1
- package/dist/objects/sdk/telemetry-channel.d.ts +1 -2
- package/dist/objects/sdk/telemetry-channel.d.ts.map +1 -1
- package/dist/objects/sdk/where.d.ts +2 -3
- package/dist/objects/sdk/where.d.ts.map +1 -1
- package/dist/ontology/builders.d.ts +11 -10
- package/dist/ontology/builders.d.ts.map +1 -1
- package/dist/ontology/index.d.ts +4 -2
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +6 -4
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/inference/index.d.ts +34 -22
- package/dist/ontology/inference/index.d.ts.map +1 -1
- package/dist/ontology/internal.d.ts +1 -0
- package/dist/ontology/internal.d.ts.map +1 -1
- package/dist/ontology/internal.js +9 -7
- package/dist/ontology/internal.js.map +1 -1
- package/dist/ontology/primitives.d.ts +38 -0
- package/dist/ontology/primitives.d.ts.map +1 -0
- package/dist/ontology/query-capabilities.d.ts +38 -0
- package/dist/ontology/query-capabilities.d.ts.map +1 -0
- package/dist/ontology/refs.d.ts +23 -2
- package/dist/ontology/refs.d.ts.map +1 -1
- package/dist/ontology/registered.d.ts +16 -0
- package/dist/ontology/registered.d.ts.map +1 -0
- package/dist/ontology/registry.d.ts.map +1 -1
- package/dist/ontology/tokens.d.ts +35 -1
- package/dist/ontology/tokens.d.ts.map +1 -1
- package/dist/ontology/types.d.ts +18 -4
- package/dist/ontology/types.d.ts.map +1 -1
- package/dist/ontology/user-ref.d.ts +35 -0
- package/dist/ontology/user-ref.d.ts.map +1 -0
- package/dist/ontology/validation/definition.d.ts.map +1 -1
- package/dist/ontology/validation/index.d.ts +1 -1
- package/dist/ontology/validation/index.d.ts.map +1 -1
- package/dist/ontology/validation/normalize.d.ts.map +1 -1
- package/dist/ontology/validation/properties.d.ts +6 -1
- package/dist/ontology/validation/properties.d.ts.map +1 -1
- package/dist/ontology/validation/query.d.ts.map +1 -1
- package/dist/ontology/validation/schema.d.ts.map +1 -1
- package/dist/pipelines/index.js +26 -24
- package/dist/pipelines/index.js.map +1 -1
- package/dist/predicates/types.d.ts +53 -3
- package/dist/predicates/types.d.ts.map +1 -1
- package/dist/projections/builders.d.ts +19 -1
- package/dist/projections/builders.d.ts.map +1 -1
- package/dist/projections/internal.js +23 -21
- package/dist/projections/internal.js.map +1 -1
- package/dist/projections/validation.d.ts.map +1 -1
- package/dist/query.js +2 -2
- package/dist/queues/in-memory.d.ts +1 -1
- package/dist/queues/in-memory.d.ts.map +1 -1
- package/dist/runtime/create.d.ts +1 -1
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +5 -5
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/internal.js +27 -25
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/sixb.d.ts +5 -5
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +171 -188
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandboxes/index.js +5 -5
- package/dist/sandboxes/sandbox.d.ts +4 -1
- package/dist/sandboxes/sandbox.d.ts.map +1 -1
- package/dist/shared/params/types.d.ts +4 -3
- package/dist/shared/params/types.d.ts.map +1 -1
- package/dist/shared/params/user-refs.d.ts +19 -0
- package/dist/shared/params/user-refs.d.ts.map +1 -0
- package/dist/shares/compiler.d.ts.map +1 -1
- package/dist/shares/internal.js +24 -22
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/action-runs/failure.js +2 -2
- package/dist/storage/action-runs/types.d.ts +1 -1
- package/dist/storage/action-runs/types.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +1 -1
- package/dist/storage/ai-limits/enforcement.js +2 -2
- package/dist/storage/auth/in-memory/access-tokens.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/device-authorizations.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/sessions.d.ts +8 -1
- package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/shared.d.ts.map +1 -1
- package/dist/storage/auth/index.d.ts +1 -1
- package/dist/storage/auth/index.d.ts.map +1 -1
- package/dist/storage/auth/types.d.ts +62 -13
- package/dist/storage/auth/types.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +1 -1
- package/dist/storage/executions/provider.js +1 -1
- package/dist/storage/file-upload-sessions/in-memory.d.ts +9 -18
- package/dist/storage/file-upload-sessions/in-memory.d.ts.map +1 -1
- package/dist/storage/file-upload-sessions/index.d.ts +1 -1
- package/dist/storage/file-upload-sessions/index.d.ts.map +1 -1
- package/dist/storage/file-upload-sessions/provider.d.ts +52 -0
- package/dist/storage/file-upload-sessions/provider.d.ts.map +1 -0
- package/dist/storage/file-upload-sessions/provider.js +24 -0
- package/dist/storage/file-upload-sessions/provider.js.map +9 -0
- package/dist/storage/file-upload-sessions/types.d.ts +19 -1
- package/dist/storage/file-upload-sessions/types.d.ts.map +1 -1
- package/dist/storage/file-upload-sessions/utils.d.ts +8 -2
- package/dist/storage/file-upload-sessions/utils.d.ts.map +1 -1
- package/dist/storage/index.d.ts +3 -3
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +29 -25
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.js +11 -9
- package/dist/storage/internal.js.map +1 -1
- package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
- package/dist/storage/ontology/commits.d.ts +6 -2
- package/dist/storage/ontology/commits.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/provider-work.d.ts.map +1 -1
- package/dist/storage/ontology/provider.d.ts +14 -1
- package/dist/storage/ontology/provider.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +8 -2
- package/dist/storage/ontology/provider.js.map +1 -1
- package/dist/storage/operation-scope.d.ts.map +1 -1
- package/dist/storage/operation-scope.js +1 -1
- package/dist/storage/projection-runs/provider.js +2 -2
- package/dist/storage/types.d.ts +1 -1
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/workflow-interventions/index.d.ts +1 -1
- package/dist/storage/workflow-interventions/index.d.ts.map +1 -1
- package/dist/storage/workflow-interventions/types.d.ts +5 -8
- package/dist/storage/workflow-interventions/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +8 -8
- package/dist/syncs/index.js +27 -25
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/action-execution.d.ts +4 -0
- package/dist/testing/action-execution.d.ts.map +1 -1
- package/dist/testing/auth-storage-contract.d.ts.map +1 -1
- package/dist/testing/execution.d.ts +1 -2
- package/dist/testing/execution.d.ts.map +1 -1
- package/dist/testing/file-upload-session-storage-contract.d.ts +12 -0
- package/dist/testing/file-upload-session-storage-contract.d.ts.map +1 -0
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +1951 -1242
- package/dist/testing/index.js.map +15 -13
- package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
- package/dist/testing/object-query-contract.d.ts.map +1 -1
- package/dist/testing/ontology-contract-fixture.d.ts +8 -0
- package/dist/testing/ontology-contract-fixture.d.ts.map +1 -1
- package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
- package/dist/testing/sandboxes-contract.d.ts.map +1 -1
- package/dist/testing/workflow-intervention-storage-contract.d.ts +8 -0
- package/dist/testing/workflow-intervention-storage-contract.d.ts.map +1 -0
- package/dist/webhooks/internal.js +24 -22
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/webhooks/types.d.ts +2 -2
- package/dist/webhooks/types.d.ts.map +1 -1
- package/dist/workers/index.js +1 -1
- package/dist/workflows/index.js +42 -40
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/run-dispatch.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +2 -2
- package/dist/workflows/types.d.ts.map +1 -1
- package/package.json +7 -1
- package/src/actions/index.ts +0 -3
- package/src/actions/read-facade.ts +102 -62
- package/src/actions/request.ts +13 -0
- package/src/actions/run-dispatch.ts +3 -0
- package/src/actions/types/context.ts +17 -65
- package/src/actions/types/params.ts +2 -1
- package/src/agents/authority.ts +1 -1
- package/src/assert-never.ts +7 -0
- package/src/auth/client-address.ts +12 -0
- package/src/auth/csrf.ts +14 -5
- package/src/auth/index.ts +3 -2
- package/src/auth/runtime.ts +299 -277
- package/src/auth/session-cache.ts +18 -6
- package/src/auth/sessions.ts +30 -0
- package/src/auth/types.ts +7 -17
- package/src/bootstrap/index.ts +1 -0
- package/src/bootstrap/ontology-type-manifest.ts +112 -60
- package/src/edits/types.ts +47 -63
- package/src/errors/catalog.ts +4 -0
- package/src/events/envelope.ts +0 -13
- package/src/events/index.ts +1 -1
- package/src/events/service.ts +1 -11
- package/src/events/toStoredEvent.ts +1 -3
- package/src/events/types/index.ts +1 -1
- package/src/execution/agent.ts +1 -2
- package/src/execution/authorized-object-reader.ts +5 -7
- package/src/execution/primitive.ts +1 -2
- package/src/execution/request.ts +1 -2
- package/src/index.ts +8 -7
- package/src/maintenance/ontology-maintenance.ts +77 -1
- package/src/materialization/errors.ts +2 -0
- package/src/materialization/events.ts +27 -2
- package/src/materializer/README.md +2 -0
- package/src/materializer/edits/commit.ts +21 -12
- package/src/materializer/edits/operations.ts +32 -4
- package/src/materializer/edits/plan.ts +4 -5
- package/src/materializer/edits/user-refs.ts +115 -0
- package/src/materializer/effective/build-events.ts +4 -5
- package/src/materializer/execution/scope.ts +40 -7
- package/src/materializer/projections/replace.ts +2 -0
- package/src/materializer/projections/replacement-plan.ts +4 -0
- package/src/materializer/telemetry/append.ts +4 -12
- package/src/materializer/telemetry/plan.ts +4 -5
- package/src/objects/execution.ts +33 -62
- package/src/objects/query/executor.ts +12 -3
- package/src/objects/query/ir.ts +7 -0
- package/src/objects/query/planner.ts +1 -0
- package/src/objects/query/scalar-values.ts +19 -0
- package/src/objects/query/validate.ts +55 -44
- package/src/objects/sdk/object-handle.ts +8 -8
- package/src/objects/sdk/object-set.ts +8 -15
- package/src/objects/sdk/query-builder.ts +59 -71
- package/src/objects/sdk/telemetry-channel.ts +6 -7
- package/src/objects/sdk/where.ts +6 -13
- package/src/ontology/builders.ts +15 -11
- package/src/ontology/index.ts +4 -0
- package/src/ontology/inference/index.ts +56 -36
- package/src/ontology/internal.ts +1 -0
- package/src/ontology/json-schema.ts +12 -0
- package/src/ontology/primitives.ts +91 -0
- package/src/ontology/query-capabilities.ts +136 -0
- package/src/ontology/refs.ts +33 -6
- package/src/ontology/registered.ts +22 -0
- package/src/ontology/registry.ts +6 -3
- package/src/ontology/tokens.ts +41 -2
- package/src/ontology/types.ts +19 -3
- package/src/ontology/user-ref.ts +120 -0
- package/src/ontology/validation/definition.ts +2 -13
- package/src/ontology/validation/index.ts +1 -0
- package/src/ontology/validation/normalize.ts +39 -3
- package/src/ontology/validation/properties.ts +95 -19
- package/src/ontology/validation/query.ts +11 -42
- package/src/ontology/validation/schema.ts +16 -0
- package/src/predicates/types.ts +43 -33
- package/src/projections/builders.ts +24 -3
- package/src/projections/validation.ts +15 -1
- package/src/runtime/create.ts +2 -2
- package/src/runtime/host.ts +10 -12
- package/src/runtime/index.ts +3 -2
- package/src/runtime/sixb.ts +13 -23
- package/src/runtime/types.ts +277 -479
- package/src/sandboxes/sandbox.ts +4 -1
- package/src/shared/params/types.ts +4 -3
- package/src/shared/params/user-refs.ts +48 -0
- package/src/shares/compiler.ts +6 -16
- package/src/storage/action-runs/types.ts +1 -0
- package/src/storage/auth/in-memory/access-tokens.ts +5 -2
- package/src/storage/auth/in-memory/auth-storage.ts +5 -8
- package/src/storage/auth/in-memory/device-authorizations.ts +0 -2
- package/src/storage/auth/in-memory/sessions.ts +69 -1
- package/src/storage/auth/in-memory/shared.ts +13 -7
- package/src/storage/auth/index.ts +2 -1
- package/src/storage/auth/types.ts +57 -13
- package/src/storage/executions/validation.ts +1 -1
- package/src/storage/file-upload-sessions/in-memory.ts +64 -113
- package/src/storage/file-upload-sessions/index.ts +1 -0
- package/src/storage/file-upload-sessions/provider.ts +258 -0
- package/src/storage/file-upload-sessions/types.ts +20 -1
- package/src/storage/file-upload-sessions/utils.ts +25 -9
- package/src/storage/index.ts +3 -2
- package/src/storage/objects/in-memory/query.ts +13 -3
- package/src/storage/ontology/commits.ts +6 -2
- package/src/storage/ontology/in-memory/materializations.ts +6 -34
- package/src/storage/ontology/provider-header-validation.ts +57 -0
- package/src/storage/ontology/provider-work.ts +15 -3
- package/src/storage/ontology/provider.ts +59 -1
- package/src/storage/operation-scope.ts +1 -0
- package/src/storage/types.ts +0 -1
- package/src/storage/workflow-interventions/index.ts +0 -1
- package/src/storage/workflow-interventions/types.ts +5 -9
- package/src/testing/action-execution.ts +13 -3
- package/src/testing/auth-storage-contract.ts +149 -62
- package/src/testing/execution-storage-contract.ts +1 -2
- package/src/testing/execution.ts +4 -7
- package/src/testing/file-upload-session-storage-contract.ts +335 -0
- package/src/testing/index.ts +8 -0
- package/src/testing/materializer-storage-contract.ts +86 -4
- package/src/testing/object-query-contract.ts +121 -2
- package/src/testing/ontology-contract-fixture.ts +23 -3
- package/src/testing/ontology-storage-contract.ts +58 -0
- package/src/testing/sandboxes-contract.ts +27 -0
- package/src/testing/workflow-intervention-storage-contract.ts +203 -0
- package/src/webhooks/types.ts +2 -2
- package/src/workflows/run-dispatch.ts +12 -1
- package/src/workflows/snapshot.ts +16 -7
- package/src/workflows/types.ts +2 -2
- package/dist/chunk-2cxv584m.js.map +0 -43
- package/dist/chunk-3ghw2t5q.js.map +0 -10
- package/dist/chunk-3h7ctayx.js.map +0 -11
- package/dist/chunk-6ma8dvzc.js.map +0 -15
- package/dist/chunk-bbaa1fet.js.map +0 -25
- package/dist/chunk-eyjzgav0.js.map +0 -12
- package/dist/chunk-f06sf7rr.js.map +0 -11
- package/dist/chunk-g50nxqs5.js.map +0 -18
- package/dist/chunk-hkw8rykk.js.map +0 -15
- package/dist/chunk-p6r1ex7t.js.map +0 -10
- package/dist/chunk-qm535afa.js.map +0 -15
- package/dist/chunk-vpxss818.js.map +0 -10
- package/dist/chunk-vsg0g7h9.js.map +0 -17
- /package/dist/{chunk-e1f1sqba.js.map → chunk-04h4t2b5.js.map} +0 -0
- /package/dist/{chunk-y3ev53cq.js.map → chunk-2fv8sajb.js.map} +0 -0
- /package/dist/{chunk-3bnt2wna.js.map → chunk-2hbhn1ff.js.map} +0 -0
- /package/dist/{chunk-5tetw4hn.js.map → chunk-4tnrzqqh.js.map} +0 -0
- /package/dist/{chunk-jjwhy3rs.js.map → chunk-a69fkrtr.js.map} +0 -0
- /package/dist/{chunk-y1ahv8b7.js.map → chunk-bdhfn0ww.js.map} +0 -0
- /package/dist/{chunk-4ph94nhd.js.map → chunk-bep5rrdq.js.map} +0 -0
- /package/dist/{chunk-kept9cdd.js.map → chunk-bxx3ms5t.js.map} +0 -0
- /package/dist/{chunk-xtfryrfb.js.map → chunk-cbn96bve.js.map} +0 -0
- /package/dist/{chunk-r5zythxp.js.map → chunk-gbcrz0gr.js.map} +0 -0
- /package/dist/{chunk-t7dzd1tm.js.map → chunk-jhyc777j.js.map} +0 -0
- /package/dist/{chunk-0mza4xb2.js.map → chunk-m8zkvep1.js.map} +0 -0
- /package/dist/{chunk-sfypc7mk.js.map → chunk-s24qbp32.js.map} +0 -0
- /package/dist/{chunk-y0v18c2j.js.map → chunk-vef6qa14.js.map} +0 -0
- /package/dist/{chunk-gzt6v1ja.js.map → chunk-vn3yh259.js.map} +0 -0
- /package/dist/{chunk-bg2bs62d.js.map → chunk-w9bp61e7.js.map} +0 -0
- /package/dist/{chunk-gswwr35f.js.map → chunk-y487ywrv.js.map} +0 -0
- /package/dist/{chunk-bet1rb9h.js.map → chunk-y6vnvayj.js.map} +0 -0
- /package/dist/{chunk-g2gezsg5.js.map → chunk-z9h698s8.js.map} +0 -0
- /package/dist/{chunk-bfjv1adk.js.map → chunk-znw0zvy4.js.map} +0 -0
|
@@ -3,6 +3,7 @@ import type { AuthenticatedAuthSession } from "./types"
|
|
|
3
3
|
|
|
4
4
|
interface SessionCacheEntry {
|
|
5
5
|
readonly tokenHash: string
|
|
6
|
+
readonly transport: "cookie" | "bearer"
|
|
6
7
|
readonly audience: AuthSessionAudience
|
|
7
8
|
readonly session: AuthenticatedAuthSession
|
|
8
9
|
readonly expiresAtMs: number
|
|
@@ -11,11 +12,18 @@ interface SessionCacheEntry {
|
|
|
11
12
|
export interface SessionCacheGetInput {
|
|
12
13
|
readonly sessionId: string
|
|
13
14
|
readonly tokenHash: string
|
|
14
|
-
|
|
15
|
+
/** A cookie is only ever answered from a cookie entry, and a bearer token from a bearer entry. */
|
|
16
|
+
readonly transport: "cookie" | "bearer"
|
|
17
|
+
/** The browser audience a cookie was read for. Bearer sessions carry their own. */
|
|
18
|
+
readonly audience?: AuthSessionAudience
|
|
15
19
|
readonly nowMs: number
|
|
16
20
|
}
|
|
17
21
|
|
|
18
|
-
export interface SessionCacheSetInput
|
|
22
|
+
export interface SessionCacheSetInput {
|
|
23
|
+
readonly sessionId: string
|
|
24
|
+
readonly tokenHash: string
|
|
25
|
+
readonly audience: AuthSessionAudience
|
|
26
|
+
readonly nowMs: number
|
|
19
27
|
readonly session: AuthenticatedAuthSession
|
|
20
28
|
readonly sessionExpiresAtMs: number
|
|
21
29
|
readonly sessionAbsoluteExpiresAtMs?: number
|
|
@@ -30,7 +38,7 @@ export interface SessionCacheSetInput extends SessionCacheGetInput {
|
|
|
30
38
|
* API stalls. Caching the resolved result for a short TTL collapses those reads to one
|
|
31
39
|
* per session per window.
|
|
32
40
|
*
|
|
33
|
-
* Safety: entries are pinned to the exact token hash
|
|
41
|
+
* Safety: entries are pinned to the exact token hash, transport, and audience that produced them and
|
|
34
42
|
* are never served past the session's rolling or absolute deadline. The short TTL bounds how long
|
|
35
43
|
* a revoked session can linger; sign-out additionally invalidates eagerly via
|
|
36
44
|
* {@link SessionCache.invalidate}.
|
|
@@ -52,7 +60,8 @@ export class SessionCache {
|
|
|
52
60
|
if (
|
|
53
61
|
entry.expiresAtMs <= input.nowMs ||
|
|
54
62
|
entry.tokenHash !== input.tokenHash ||
|
|
55
|
-
entry.
|
|
63
|
+
entry.transport !== input.transport ||
|
|
64
|
+
(input.audience !== undefined && entry.audience !== input.audience)
|
|
56
65
|
) {
|
|
57
66
|
this.entries.delete(input.sessionId)
|
|
58
67
|
return undefined
|
|
@@ -62,11 +71,13 @@ export class SessionCache {
|
|
|
62
71
|
}
|
|
63
72
|
|
|
64
73
|
set(input: SessionCacheSetInput): void {
|
|
65
|
-
// Never let a cached session outlive the real session
|
|
74
|
+
// Never let a cached session outlive the real session, or a bearer session its access token.
|
|
75
|
+
const bearer = input.session.session.bearer
|
|
66
76
|
const expiresAtMs = Math.min(
|
|
67
77
|
input.nowMs + this.ttlMs,
|
|
68
78
|
input.sessionExpiresAtMs,
|
|
69
|
-
input.sessionAbsoluteExpiresAtMs ?? Number.POSITIVE_INFINITY
|
|
79
|
+
input.sessionAbsoluteExpiresAtMs ?? Number.POSITIVE_INFINITY,
|
|
80
|
+
bearer?.accessExpiresAt.getTime() ?? Number.POSITIVE_INFINITY
|
|
70
81
|
)
|
|
71
82
|
if (expiresAtMs <= input.nowMs) {
|
|
72
83
|
return
|
|
@@ -76,6 +87,7 @@ export class SessionCache {
|
|
|
76
87
|
this.entries.delete(input.sessionId)
|
|
77
88
|
this.entries.set(input.sessionId, {
|
|
78
89
|
tokenHash: input.tokenHash,
|
|
90
|
+
transport: bearer ? "bearer" : "cookie",
|
|
79
91
|
audience: input.audience,
|
|
80
92
|
session: input.session,
|
|
81
93
|
expiresAtMs,
|
package/src/auth/sessions.ts
CHANGED
|
@@ -53,3 +53,33 @@ export function createSessionCredential(sessionId = `ses_${randomUUID()}`): Sess
|
|
|
53
53
|
cookieValue: formatSessionCookieValue(sessionId, sessionSecret),
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
+
|
|
57
|
+
export const SESSION_ACCESS_TOKEN_PREFIX = "sixb_at_"
|
|
58
|
+
export const SESSION_REFRESH_TOKEN_PREFIX = "sixb_rt_"
|
|
59
|
+
|
|
60
|
+
export interface BearerSessionTokens {
|
|
61
|
+
readonly accessToken: string
|
|
62
|
+
readonly refreshToken: string
|
|
63
|
+
readonly tokenHash: string
|
|
64
|
+
readonly refreshTokenHash: string
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** Fresh access and refresh tokens for a native client's session. Only their hashes are stored. */
|
|
68
|
+
export function createBearerSessionTokens(sessionId: string): BearerSessionTokens {
|
|
69
|
+
const accessSecret = generateSessionSecret()
|
|
70
|
+
const refreshSecret = generateSessionSecret()
|
|
71
|
+
return {
|
|
72
|
+
accessToken: `${SESSION_ACCESS_TOKEN_PREFIX}${formatSessionCookieValue(sessionId, accessSecret)}`,
|
|
73
|
+
refreshToken: `${SESSION_REFRESH_TOKEN_PREFIX}${formatSessionCookieValue(sessionId, refreshSecret)}`,
|
|
74
|
+
tokenHash: hashSessionSecret(accessSecret),
|
|
75
|
+
refreshTokenHash: hashSessionSecret(refreshSecret),
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** The session id and secret in a bearer session token, or null when it is not one. */
|
|
80
|
+
export function parseBearerSessionToken(
|
|
81
|
+
prefix: typeof SESSION_ACCESS_TOKEN_PREFIX | typeof SESSION_REFRESH_TOKEN_PREFIX,
|
|
82
|
+
value: string
|
|
83
|
+
): SessionCookieParts | null {
|
|
84
|
+
return value.startsWith(prefix) ? parseSessionCookieValue(value.slice(prefix.length)) : null
|
|
85
|
+
}
|
package/src/auth/types.ts
CHANGED
|
@@ -30,13 +30,6 @@ export function principalsEqual(left: Principal, right: Principal): boolean {
|
|
|
30
30
|
return left.type === right.type && left.id === right.id
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
export interface SecurityContext {
|
|
34
|
-
readonly principal: Principal
|
|
35
|
-
readonly sessionId?: string
|
|
36
|
-
readonly projectId: string
|
|
37
|
-
readonly correlationId: string
|
|
38
|
-
}
|
|
39
|
-
|
|
40
33
|
export type AuthStrategyKind = "magicLink" | "oidc" | "dev" | "disabled"
|
|
41
34
|
|
|
42
35
|
export interface AuthStrategy {
|
|
@@ -225,7 +218,6 @@ export interface InviteUserInput {
|
|
|
225
218
|
readonly groups?: readonly GroupDefinition[]
|
|
226
219
|
readonly groupIds?: readonly string[]
|
|
227
220
|
readonly expiresAt?: Date
|
|
228
|
-
readonly returnTo?: string
|
|
229
221
|
/** Reveal the delivered link once in the result. Defaults to false. */
|
|
230
222
|
readonly revealLink?: boolean
|
|
231
223
|
}
|
|
@@ -368,7 +360,8 @@ export interface ReactivateMemberResult {
|
|
|
368
360
|
readonly groupIds: readonly string[]
|
|
369
361
|
}
|
|
370
362
|
|
|
371
|
-
|
|
363
|
+
/** `"session"` reads only the cookie; `"any"` reads a bearer access token, else the cookie. */
|
|
364
|
+
export type AuthCredentialSource = "session" | "any"
|
|
372
365
|
|
|
373
366
|
export interface AuthSessionResolutionOptions extends AuthSessionAudienceOptions {
|
|
374
367
|
readonly credentialSource?: AuthCredentialSource
|
|
@@ -376,12 +369,11 @@ export interface AuthSessionResolutionOptions extends AuthSessionAudienceOptions
|
|
|
376
369
|
readonly sessionActivity?: "foreground"
|
|
377
370
|
}
|
|
378
371
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
}
|
|
372
|
+
/** Where an invitation link sends its recipient. */
|
|
373
|
+
export interface InvitationDestination {
|
|
374
|
+
readonly audience: AuthSessionAudience
|
|
375
|
+
readonly requestOrigin: string
|
|
376
|
+
readonly returnTo: string
|
|
385
377
|
}
|
|
386
378
|
|
|
387
379
|
export interface RevokeInvitationInput {
|
|
@@ -521,9 +513,7 @@ export type SixbAuthConfig =
|
|
|
521
513
|
|
|
522
514
|
export type AuthSessionFailureReason =
|
|
523
515
|
| "auth_disabled"
|
|
524
|
-
| "missing_credentials"
|
|
525
516
|
| "missing_cookie"
|
|
526
|
-
| "missing_access_token"
|
|
527
517
|
| "invalid_cookie"
|
|
528
518
|
| "invalid_access_token"
|
|
529
519
|
| "invalid_session"
|
package/src/bootstrap/index.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { dirname, extname, join, relative, resolve, sep } from "node:path"
|
|
|
3
3
|
import { pathToFileURL } from "node:url"
|
|
4
4
|
import type { OntologyDocumentInput } from "../ontology/registry"
|
|
5
5
|
import type { ObjectTypeWithPropertyTokens } from "../ontology/tokens"
|
|
6
|
+
import type { ValueType } from "../ontology/types"
|
|
6
7
|
import { RuntimeError } from "../runtime/errors"
|
|
7
8
|
|
|
8
9
|
const moduleExtensions = new Set([".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"])
|
|
@@ -14,8 +15,17 @@ export interface OntologyTypeManifestEntry {
|
|
|
14
15
|
readonly typeExpression: string
|
|
15
16
|
}
|
|
16
17
|
|
|
18
|
+
/** A value type the manifest registers, so a string-only `valueTypeRef("id")` is typed. */
|
|
19
|
+
export interface OntologyValueTypeManifestEntry {
|
|
20
|
+
readonly valueTypeId: string
|
|
21
|
+
readonly modulePath: string
|
|
22
|
+
readonly exportName: string
|
|
23
|
+
readonly typeExpression: string
|
|
24
|
+
}
|
|
25
|
+
|
|
17
26
|
export interface OntologyTypeManifestDiscovery {
|
|
18
27
|
readonly entries: readonly OntologyTypeManifestEntry[]
|
|
28
|
+
readonly valueTypeEntries: readonly OntologyValueTypeManifestEntry[]
|
|
19
29
|
readonly moduleCount: number
|
|
20
30
|
}
|
|
21
31
|
|
|
@@ -37,7 +47,8 @@ export async function discoverOntologyTypeManifest(
|
|
|
37
47
|
const ontologyDir = join(resolvedProjectRoot, "ontology")
|
|
38
48
|
const modulePaths = await listModuleFiles(ontologyDir)
|
|
39
49
|
const entries = new Map<string, OntologyTypeManifestEntry>()
|
|
40
|
-
const
|
|
50
|
+
const valueTypeEntries = new Map<string, OntologyValueTypeManifestEntry>()
|
|
51
|
+
const seen = new Set<unknown>()
|
|
41
52
|
|
|
42
53
|
for (const modulePath of modulePaths) {
|
|
43
54
|
const moduleSpecifier = toGeneratedModuleSpecifier({
|
|
@@ -56,13 +67,17 @@ export async function discoverOntologyTypeManifest(
|
|
|
56
67
|
modulePath,
|
|
57
68
|
moduleSpecifier,
|
|
58
69
|
entries,
|
|
59
|
-
|
|
70
|
+
valueTypeEntries,
|
|
71
|
+
seen,
|
|
60
72
|
})
|
|
61
73
|
}
|
|
62
74
|
}
|
|
63
75
|
|
|
64
76
|
return {
|
|
65
77
|
entries: [...entries.values()].sort((a, b) => a.objectTypeId.localeCompare(b.objectTypeId)),
|
|
78
|
+
valueTypeEntries: [...valueTypeEntries.values()].sort((a, b) =>
|
|
79
|
+
a.valueTypeId.localeCompare(b.valueTypeId)
|
|
80
|
+
),
|
|
66
81
|
moduleCount: modulePaths.length,
|
|
67
82
|
}
|
|
68
83
|
}
|
|
@@ -89,7 +104,7 @@ export async function generateOntologyTypeManifest(
|
|
|
89
104
|
}
|
|
90
105
|
}
|
|
91
106
|
|
|
92
|
-
const content = renderOntologyTypeManifest(discovery
|
|
107
|
+
const content = renderOntologyTypeManifest(discovery)
|
|
93
108
|
await mkdir(dirname(outFile), { recursive: true })
|
|
94
109
|
const written = await writeFileIfChanged(outFile, content)
|
|
95
110
|
|
|
@@ -101,98 +116,114 @@ export async function generateOntologyTypeManifest(
|
|
|
101
116
|
}
|
|
102
117
|
}
|
|
103
118
|
|
|
119
|
+
/**
|
|
120
|
+
* Mirrors what runtime discovery registers from an `ontology/` module: exported object types and
|
|
121
|
+
* value types, the ones an exported ontology document carries, and those inside exported arrays.
|
|
122
|
+
*/
|
|
104
123
|
function collectManifestEntries(input: {
|
|
105
124
|
readonly exportedValue: unknown
|
|
106
125
|
readonly exportName: string
|
|
107
126
|
readonly modulePath: string
|
|
108
127
|
readonly moduleSpecifier: string
|
|
109
128
|
readonly entries: Map<string, OntologyTypeManifestEntry>
|
|
110
|
-
readonly
|
|
129
|
+
readonly valueTypeEntries: Map<string, OntologyValueTypeManifestEntry>
|
|
130
|
+
readonly seen: Set<unknown>
|
|
111
131
|
}): void {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
132
|
+
const exported = `(typeof import(${JSON.stringify(input.moduleSpecifier)})[${JSON.stringify(
|
|
133
|
+
input.exportName
|
|
134
|
+
)}])`
|
|
135
|
+
const add = (value: unknown, typeExpression: (id: string) => string): void => {
|
|
136
|
+
if (isObjectTypeWithPropertyTokens(value)) {
|
|
137
|
+
addManifestEntry({
|
|
138
|
+
kind: "object type",
|
|
139
|
+
definition: value,
|
|
140
|
+
entry: {
|
|
141
|
+
objectTypeId: value.id,
|
|
142
|
+
modulePath: input.modulePath,
|
|
143
|
+
exportName: input.exportName,
|
|
144
|
+
typeExpression: typeExpression(value.id),
|
|
145
|
+
},
|
|
146
|
+
idOf: (entry) => entry.objectTypeId,
|
|
147
|
+
entries: input.entries,
|
|
148
|
+
seen: input.seen,
|
|
149
|
+
})
|
|
150
|
+
} else if (isValueType(value)) {
|
|
151
|
+
addManifestEntry({
|
|
152
|
+
kind: "value type",
|
|
153
|
+
definition: value,
|
|
154
|
+
entry: {
|
|
155
|
+
valueTypeId: value.id,
|
|
156
|
+
modulePath: input.modulePath,
|
|
157
|
+
exportName: input.exportName,
|
|
158
|
+
typeExpression: typeExpression(value.id),
|
|
159
|
+
},
|
|
160
|
+
idOf: (entry) => entry.valueTypeId,
|
|
161
|
+
entries: input.valueTypeEntries,
|
|
162
|
+
seen: input.seen,
|
|
163
|
+
})
|
|
164
|
+
}
|
|
124
165
|
}
|
|
125
166
|
|
|
126
167
|
if (isOntologyDocumentInput(input.exportedValue)) {
|
|
127
168
|
for (const objectType of input.exportedValue.objectTypes) {
|
|
128
|
-
|
|
169
|
+
add(
|
|
129
170
|
objectType,
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
)} }
|
|
137
|
-
|
|
138
|
-
seenObjectTypes: input.seenObjectTypes,
|
|
139
|
-
})
|
|
171
|
+
(id) => `Extract<${exported}["objectTypes"][number], { id: ${JSON.stringify(id)} }>`
|
|
172
|
+
)
|
|
173
|
+
}
|
|
174
|
+
for (const valueType of input.exportedValue.valueTypes ?? []) {
|
|
175
|
+
add(
|
|
176
|
+
valueType,
|
|
177
|
+
(id) => `Extract<${exported}["valueTypes"][number], { id: ${JSON.stringify(id)} }>`
|
|
178
|
+
)
|
|
140
179
|
}
|
|
141
180
|
return
|
|
142
181
|
}
|
|
143
182
|
|
|
144
183
|
if (Array.isArray(input.exportedValue)) {
|
|
145
184
|
for (const item of input.exportedValue) {
|
|
146
|
-
|
|
147
|
-
addManifestEntry({
|
|
148
|
-
objectType: item,
|
|
149
|
-
modulePath: input.modulePath,
|
|
150
|
-
exportName: input.exportName,
|
|
151
|
-
typeExpression: `Extract<(typeof import(${JSON.stringify(
|
|
152
|
-
input.moduleSpecifier
|
|
153
|
-
)})[${JSON.stringify(input.exportName)}])[number], { id: ${JSON.stringify(item.id)} }>`,
|
|
154
|
-
entries: input.entries,
|
|
155
|
-
seenObjectTypes: input.seenObjectTypes,
|
|
156
|
-
})
|
|
185
|
+
add(item, (id) => `Extract<${exported}[number], { id: ${JSON.stringify(id)} }>`)
|
|
157
186
|
}
|
|
187
|
+
return
|
|
158
188
|
}
|
|
189
|
+
|
|
190
|
+
add(
|
|
191
|
+
input.exportedValue,
|
|
192
|
+
() =>
|
|
193
|
+
`typeof import(${JSON.stringify(input.moduleSpecifier)})[${JSON.stringify(input.exportName)}]`
|
|
194
|
+
)
|
|
159
195
|
}
|
|
160
196
|
|
|
161
|
-
function addManifestEntry(input: {
|
|
162
|
-
readonly
|
|
163
|
-
readonly
|
|
164
|
-
readonly
|
|
165
|
-
readonly
|
|
166
|
-
readonly entries: Map<string,
|
|
167
|
-
readonly
|
|
197
|
+
function addManifestEntry<TEntry extends { readonly modulePath: string }>(input: {
|
|
198
|
+
readonly kind: "object type" | "value type"
|
|
199
|
+
readonly definition: unknown
|
|
200
|
+
readonly entry: TEntry
|
|
201
|
+
readonly idOf: (entry: TEntry) => string
|
|
202
|
+
readonly entries: Map<string, TEntry>
|
|
203
|
+
readonly seen: Set<unknown>
|
|
168
204
|
}): void {
|
|
169
|
-
|
|
205
|
+
// The same definition re-exported from several places is one registration.
|
|
206
|
+
if (input.seen.has(input.definition)) {
|
|
170
207
|
return
|
|
171
208
|
}
|
|
172
|
-
input.
|
|
173
|
-
|
|
174
|
-
const existing = input.entries.get(input.objectType.id)
|
|
175
|
-
const entry: OntologyTypeManifestEntry = {
|
|
176
|
-
objectTypeId: input.objectType.id,
|
|
177
|
-
modulePath: input.modulePath,
|
|
178
|
-
exportName: input.exportName,
|
|
179
|
-
typeExpression: input.typeExpression,
|
|
180
|
-
}
|
|
209
|
+
input.seen.add(input.definition)
|
|
181
210
|
|
|
211
|
+
const id = input.idOf(input.entry)
|
|
212
|
+
const existing = input.entries.get(id)
|
|
182
213
|
if (!existing) {
|
|
183
|
-
input.entries.set(
|
|
214
|
+
input.entries.set(id, input.entry)
|
|
184
215
|
return
|
|
185
216
|
}
|
|
186
217
|
|
|
187
218
|
throw new RuntimeError(
|
|
188
|
-
`[Sixb] Duplicate ontology
|
|
219
|
+
`[Sixb] Duplicate ontology ${input.kind} id "${id}" while generating `.concat(
|
|
189
220
|
`the type manifest: ${relative(process.cwd(), existing.modulePath)} and `,
|
|
190
|
-
`${relative(process.cwd(), input.modulePath)}.`
|
|
221
|
+
`${relative(process.cwd(), input.entry.modulePath)}.`
|
|
191
222
|
)
|
|
192
223
|
)
|
|
193
224
|
}
|
|
194
225
|
|
|
195
|
-
function renderOntologyTypeManifest(
|
|
226
|
+
function renderOntologyTypeManifest(discovery: OntologyTypeManifestDiscovery): string {
|
|
196
227
|
const lines = [
|
|
197
228
|
"// This file is auto-generated by Sixb.",
|
|
198
229
|
"// Do not edit this file directly.",
|
|
@@ -201,10 +232,16 @@ function renderOntologyTypeManifest(entries: readonly OntologyTypeManifestEntry[
|
|
|
201
232
|
" interface SixbObjectTypeMap {",
|
|
202
233
|
]
|
|
203
234
|
|
|
204
|
-
for (const entry of entries) {
|
|
235
|
+
for (const entry of discovery.entries) {
|
|
205
236
|
lines.push(` ${JSON.stringify(entry.objectTypeId)}: ${entry.typeExpression}`)
|
|
206
237
|
}
|
|
207
238
|
|
|
239
|
+
lines.push(" }", " interface SixbValueTypeMap {")
|
|
240
|
+
|
|
241
|
+
for (const entry of discovery.valueTypeEntries) {
|
|
242
|
+
lines.push(` ${JSON.stringify(entry.valueTypeId)}: ${entry.typeExpression}`)
|
|
243
|
+
}
|
|
244
|
+
|
|
208
245
|
lines.push(" }", "}", "", "export {}", "")
|
|
209
246
|
return lines.join("\n")
|
|
210
247
|
}
|
|
@@ -309,6 +346,21 @@ function isObjectTypeWithPropertyTokens(value: unknown): value is ObjectTypeWith
|
|
|
309
346
|
)
|
|
310
347
|
}
|
|
311
348
|
|
|
349
|
+
/** Same shape test runtime discovery applies to an exported value type. */
|
|
350
|
+
function isValueType(value: unknown): value is ValueType {
|
|
351
|
+
if (!isRecord(value)) {
|
|
352
|
+
return false
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
return (
|
|
356
|
+
typeof value.id === "string" &&
|
|
357
|
+
typeof value.name === "string" &&
|
|
358
|
+
"schema" in value &&
|
|
359
|
+
!Array.isArray(value.properties) &&
|
|
360
|
+
!Array.isArray(value.objectTypes)
|
|
361
|
+
)
|
|
362
|
+
}
|
|
363
|
+
|
|
312
364
|
function isOntologyDocumentInput(value: unknown): value is OntologyDocumentInput {
|
|
313
365
|
if (!isRecord(value)) {
|
|
314
366
|
return false
|
package/src/edits/types.ts
CHANGED
|
@@ -114,25 +114,24 @@ export type EditablePropertyId<TObjectType extends ObjectType> =
|
|
|
114
114
|
|
|
115
115
|
type StaticPropertyMap<
|
|
116
116
|
TProperties extends readonly Property[],
|
|
117
|
-
TValueTypes extends readonly ValueType[],
|
|
118
117
|
TMode extends "create" | "update",
|
|
119
118
|
> = string extends TProperties[number]["id"]
|
|
120
119
|
? Record<string, unknown>
|
|
121
120
|
: Simplify<{
|
|
122
121
|
[TProp in TProperties[number] as TMode extends "create"
|
|
123
122
|
? CreatablePropertyId<TProp>
|
|
124
|
-
: SettablePropertyId<TProp>]?: InferPropertyValue<TProp
|
|
123
|
+
: SettablePropertyId<TProp>]?: InferPropertyValue<TProp>
|
|
125
124
|
}>
|
|
126
125
|
|
|
127
|
-
export type EditCreateProperties<
|
|
128
|
-
TObjectType
|
|
129
|
-
|
|
130
|
-
>
|
|
126
|
+
export type EditCreateProperties<TObjectType extends ObjectType> = StaticPropertyMap<
|
|
127
|
+
TObjectType["properties"],
|
|
128
|
+
"create"
|
|
129
|
+
>
|
|
131
130
|
|
|
132
|
-
export type EditUpdateProperties<
|
|
133
|
-
TObjectType
|
|
134
|
-
|
|
135
|
-
>
|
|
131
|
+
export type EditUpdateProperties<TObjectType extends ObjectType> = StaticPropertyMap<
|
|
132
|
+
TObjectType["properties"],
|
|
133
|
+
"update"
|
|
134
|
+
>
|
|
136
135
|
|
|
137
136
|
type LinkProperties<TLink extends { properties?: readonly Property[] }> = TLink extends {
|
|
138
137
|
properties: infer TProperties extends readonly Property[]
|
|
@@ -147,23 +146,18 @@ type RequiredLinkPropertyId<TProperty extends Property> = TProperty extends { re
|
|
|
147
146
|
? LinkPropertyId<TProperty>
|
|
148
147
|
: never
|
|
149
148
|
|
|
150
|
-
type EditLinkProperties<
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
[TProp in LinkProperties<TLink>[number] as TProp extends { required: true }
|
|
163
|
-
? never
|
|
164
|
-
: LinkPropertyId<TProp>]?: InferPropertyValue<TProp, TValueTypes>
|
|
165
|
-
}
|
|
166
|
-
>
|
|
149
|
+
type EditLinkProperties<TLink extends { properties?: readonly Property[] }> =
|
|
150
|
+
string extends LinkProperties<TLink>[number]["id"]
|
|
151
|
+
? Record<string, unknown>
|
|
152
|
+
: Simplify<
|
|
153
|
+
{
|
|
154
|
+
[TProp in LinkProperties<TLink>[number] as RequiredLinkPropertyId<TProp>]: InferPropertyValue<TProp>
|
|
155
|
+
} & {
|
|
156
|
+
[TProp in LinkProperties<TLink>[number] as TProp extends { required: true }
|
|
157
|
+
? never
|
|
158
|
+
: LinkPropertyId<TProp>]?: InferPropertyValue<TProp>
|
|
159
|
+
}
|
|
160
|
+
>
|
|
167
161
|
|
|
168
162
|
type RequiredLinkPropertyIds<TLink extends { properties?: readonly Property[] }> =
|
|
169
163
|
LinkProperties<TLink>[number] extends infer TProperty extends Property
|
|
@@ -191,34 +185,32 @@ type EditLinkTargetRef<TLinkToken extends LinkToken<string, string, string | rea
|
|
|
191
185
|
? EditObjectRef<string>
|
|
192
186
|
: EditObjectRef<ResolveTargetObjectTypeId<TLinkToken["targetObjectTypeId"]>>
|
|
193
187
|
|
|
194
|
-
type EditLinkOptionsArg<
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
},
|
|
211
|
-
]
|
|
188
|
+
type EditLinkOptionsArg<TLinkToken extends LinkToken<string, string, string | readonly string[]>> =
|
|
189
|
+
string extends TLinkToken["id"]
|
|
190
|
+
? [options?: { readonly properties?: Readonly<Record<string, unknown>> }]
|
|
191
|
+
: HasLinkProperties<TLinkToken["link"]> extends false
|
|
192
|
+
? [options?: { readonly properties?: never }]
|
|
193
|
+
: HasRequiredLinkProperties<TLinkToken["link"]> extends true
|
|
194
|
+
? [
|
|
195
|
+
options: {
|
|
196
|
+
readonly properties: EditLinkProperties<TLinkToken["link"]>
|
|
197
|
+
},
|
|
198
|
+
]
|
|
199
|
+
: [
|
|
200
|
+
options?: {
|
|
201
|
+
readonly properties?: EditLinkProperties<TLinkToken["link"]>
|
|
202
|
+
},
|
|
203
|
+
]
|
|
212
204
|
|
|
213
205
|
export interface RecordEditsOptions {
|
|
214
206
|
readonly runId: string
|
|
215
207
|
readonly valueTypesById?: ReadonlyMap<string, ValueType>
|
|
216
208
|
}
|
|
217
209
|
|
|
218
|
-
export interface RecordEditsContext
|
|
210
|
+
export interface RecordEditsContext {
|
|
219
211
|
objects<const TObjectType extends ObjectTypeWithPropertyTokens>(
|
|
220
212
|
objectType: TObjectType
|
|
221
|
-
): EditObjectSetRecorder<TObjectType
|
|
213
|
+
): EditObjectSetRecorder<TObjectType>
|
|
222
214
|
}
|
|
223
215
|
|
|
224
216
|
export type RecordEditsHandlerResult = ReturnType<() => void>
|
|
@@ -226,26 +218,18 @@ export type RecordEditsHandlerResult = ReturnType<() => void>
|
|
|
226
218
|
export type RecordEditsHandlerReturn = RecordEditsHandlerResult | Promise<RecordEditsHandlerResult>
|
|
227
219
|
|
|
228
220
|
export type RecordEditsHandler<
|
|
229
|
-
TValueTypes extends readonly ValueType[] = [],
|
|
230
221
|
TResult extends RecordEditsHandlerReturn = RecordEditsHandlerReturn,
|
|
231
|
-
> = (ctx: RecordEditsContext
|
|
222
|
+
> = (ctx: RecordEditsContext) => TResult
|
|
232
223
|
|
|
233
|
-
export interface EditObjectSetRecorder<
|
|
234
|
-
|
|
235
|
-
TValueTypes extends readonly ValueType[] = [],
|
|
236
|
-
> {
|
|
237
|
-
byId(primaryId: string): EditObjectHandle<TObjectType, TValueTypes>
|
|
224
|
+
export interface EditObjectSetRecorder<TObjectType extends ObjectType> {
|
|
225
|
+
byId(primaryId: string): EditObjectHandle<TObjectType>
|
|
238
226
|
|
|
239
|
-
create(
|
|
240
|
-
properties: EditCreateProperties<TObjectType, TValueTypes>
|
|
241
|
-
): EditObjectHandle<TObjectType, TValueTypes>
|
|
227
|
+
create(properties: EditCreateProperties<TObjectType>): EditObjectHandle<TObjectType>
|
|
242
228
|
}
|
|
243
229
|
|
|
244
|
-
export interface EditObjectHandle<
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
> extends TypedEditObjectRef<TObjectType> {
|
|
248
|
-
update(properties: EditUpdateProperties<TObjectType, TValueTypes>): void
|
|
230
|
+
export interface EditObjectHandle<TObjectType extends ObjectType = ObjectType>
|
|
231
|
+
extends TypedEditObjectRef<TObjectType> {
|
|
232
|
+
update(properties: EditUpdateProperties<TObjectType>): void
|
|
249
233
|
|
|
250
234
|
/** Clears managed values, leaving the property absent from managed authority. */
|
|
251
235
|
unset(...propertyIds: readonly EditablePropertyId<TObjectType>[]): void
|
|
@@ -260,7 +244,7 @@ export interface EditObjectHandle<
|
|
|
260
244
|
link<const TLinkToken extends LinkToken<TObjectType["id"], string, string | readonly string[]>>(
|
|
261
245
|
link: TLinkToken,
|
|
262
246
|
target: EditLinkTargetRef<TLinkToken>,
|
|
263
|
-
...options: EditLinkOptionsArg<TLinkToken
|
|
247
|
+
...options: EditLinkOptionsArg<TLinkToken>
|
|
264
248
|
): void
|
|
265
249
|
|
|
266
250
|
unlink<const TLinkToken extends LinkToken<TObjectType["id"], string, string | readonly string[]>>(
|
package/src/errors/catalog.ts
CHANGED
|
@@ -14,6 +14,10 @@ export const SIXB_ERROR_DEFINITIONS = {
|
|
|
14
14
|
publicMessage: "Action execution failed.",
|
|
15
15
|
retryable: false,
|
|
16
16
|
},
|
|
17
|
+
"action.read_conflict": {
|
|
18
|
+
publicMessage: "Data the Action read changed before its commit.",
|
|
19
|
+
retryable: true,
|
|
20
|
+
},
|
|
17
21
|
"agent.execution_failed": {
|
|
18
22
|
publicMessage: "Agent execution failed.",
|
|
19
23
|
retryable: false,
|
package/src/events/envelope.ts
CHANGED
|
@@ -1,17 +1,5 @@
|
|
|
1
1
|
import type { JsonValue } from "../json"
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* Who made a change.
|
|
5
|
-
*
|
|
6
|
-
* The type literals are exactly `Principal["type"]` from `auth/types`, on purpose: an actor *is* a
|
|
7
|
-
* principal recorded on an event, and two spellings of the same concept meant a translation layer
|
|
8
|
-
* between them, which is one more place for the two to drift.
|
|
9
|
-
*/
|
|
10
|
-
export interface EventActor {
|
|
11
|
-
type: "user" | "serviceAccount" | "system"
|
|
12
|
-
id: string
|
|
13
|
-
}
|
|
14
|
-
|
|
15
3
|
export interface ActionEventOrigin {
|
|
16
4
|
readonly kind: "action"
|
|
17
5
|
readonly actionId: string
|
|
@@ -62,7 +50,6 @@ export interface EventEnvelope {
|
|
|
62
50
|
correlationId?: string
|
|
63
51
|
causationId?: string
|
|
64
52
|
idempotencyKey?: string
|
|
65
|
-
actor?: EventActor
|
|
66
53
|
origin?: EventOrigin
|
|
67
54
|
metadata?: Record<string, JsonValue>
|
|
68
55
|
}
|