@sixb/core 0.1.17 → 0.1.18
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.js +22 -19
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/read-facade.d.ts +1 -1
- package/dist/actions/validation.d.ts.map +1 -1
- package/dist/actions/worker.js +6 -2
- package/dist/actions/worker.js.map +3 -3
- package/dist/agents/adapters.d.ts +7 -0
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/authority.d.ts +7 -0
- package/dist/agents/authority.d.ts.map +1 -1
- package/dist/agents/context/entries.d.ts +10 -1
- package/dist/agents/context/entries.d.ts.map +1 -1
- package/dist/agents/context/index.d.ts +1 -1
- package/dist/agents/context/index.d.ts.map +1 -1
- package/dist/agents/context/index.js +4 -2
- package/dist/agents/context/index.js.map +1 -1
- package/dist/agents/context-compaction.d.ts.map +1 -1
- package/dist/agents/errors.d.ts +1 -1
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/index.d.ts +6 -4
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +44 -37
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/message.d.ts +8 -1
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/request.d.ts +19 -5
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/skills.d.ts +41 -0
- package/dist/agents/skills.d.ts.map +1 -0
- package/dist/agents/streams/index.js +1 -1
- package/dist/agents/streams/internal.js +1 -1
- package/dist/agents/types.d.ts +33 -4
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/auth/index.js +9 -6
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/auth/types.d.ts +6 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/authorization/index.js +5 -3
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/resolve.d.ts +1 -1
- package/dist/authorization/resolve.d.ts.map +1 -1
- package/dist/authorization/types.d.ts +7 -0
- package/dist/authorization/types.d.ts.map +1 -1
- package/dist/blob-storage/browser.js +1 -1
- package/dist/blob-storage/execution.d.ts.map +1 -1
- package/dist/blob-storage/file-content.d.ts +18 -0
- package/dist/blob-storage/file-content.d.ts.map +1 -0
- package/dist/blob-storage/index.d.ts +1 -1
- package/dist/blob-storage/index.d.ts.map +1 -1
- package/dist/blob-storage/index.js +2 -2
- package/dist/blob-storage/internal.d.ts +2 -0
- package/dist/blob-storage/internal.d.ts.map +1 -1
- package/dist/blob-storage/internal.js +16 -4
- package/dist/blob-storage/internal.js.map +1 -1
- package/dist/blob-storage/media-type.d.ts +8 -0
- package/dist/blob-storage/media-type.d.ts.map +1 -0
- package/dist/blob-storage/types.d.ts +12 -1
- package/dist/blob-storage/types.d.ts.map +1 -1
- package/dist/blob-storage/validation.d.ts +6 -0
- package/dist/blob-storage/validation.d.ts.map +1 -1
- package/dist/bootstrap/agent-context.d.ts +33 -0
- package/dist/bootstrap/agent-context.d.ts.map +1 -0
- package/dist/bootstrap/discovery.d.ts +23 -3
- package/dist/bootstrap/discovery.d.ts.map +1 -1
- package/dist/bootstrap/index.d.ts +2 -1
- package/dist/bootstrap/index.d.ts.map +1 -1
- package/dist/bootstrap/index.js +284 -73
- package/dist/bootstrap/index.js.map +4 -3
- package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
- package/dist/{chunk-gf7yht60.js → chunk-1b1f2d5f.js} +23 -6
- package/dist/chunk-1b1f2d5f.js.map +12 -0
- package/dist/{chunk-9vx5e9g1.js → chunk-1sr8ryzk.js} +3 -3
- package/dist/chunk-1sr8ryzk.js.map +11 -0
- package/dist/{chunk-4gmng3vf.js → chunk-22v5bpz3.js} +1 -1
- package/dist/{chunk-s7ftxrdr.js → chunk-29yx306f.js} +20 -3
- package/dist/{chunk-s7ftxrdr.js.map → chunk-29yx306f.js.map} +3 -3
- package/dist/{chunk-4ra628t7.js → chunk-3zxk45er.js} +70 -6
- package/dist/{chunk-4ra628t7.js.map → chunk-3zxk45er.js.map} +5 -4
- package/dist/{chunk-2am3db31.js → chunk-48e3cn2d.js} +2 -2
- package/dist/{chunk-91kcnbf0.js → chunk-6gmfggss.js} +22 -9
- package/dist/chunk-6gmfggss.js.map +10 -0
- package/dist/{chunk-svabwqdq.js → chunk-6h5m9xjx.js} +43 -415
- package/dist/{chunk-svabwqdq.js.map → chunk-6h5m9xjx.js.map} +7 -11
- package/dist/{chunk-f1xh7a32.js → chunk-7hpdd6r9.js} +2 -2
- package/dist/{chunk-xyvy73tj.js → chunk-bs7sqkre.js} +8 -3
- package/dist/chunk-bs7sqkre.js.map +12 -0
- package/dist/{chunk-rb143ggb.js → chunk-bwjcehza.js} +1 -1
- package/dist/{chunk-t9shqx3w.js → chunk-d0eb5yy6.js} +143 -7
- package/dist/chunk-d0eb5yy6.js.map +14 -0
- package/dist/{chunk-vp3z1ckh.js → chunk-de4z2bj6.js} +5 -5
- package/dist/{chunk-3rrezgyc.js → chunk-dnmadg9k.js} +2 -2
- package/dist/chunk-enpsx8k5.js +127 -0
- package/dist/chunk-enpsx8k5.js.map +10 -0
- package/dist/{chunk-a7er86jd.js → chunk-ex496vct.js} +1 -1
- package/dist/{chunk-jnfxmr3f.js → chunk-f1zxad2t.js} +1 -1
- package/dist/{chunk-6wbm6ymz.js → chunk-fe52eczz.js} +271 -83
- package/dist/chunk-fe52eczz.js.map +49 -0
- package/dist/{chunk-10styjgk.js → chunk-fx93hd2n.js} +71 -29
- package/dist/chunk-fx93hd2n.js.map +20 -0
- package/dist/{chunk-9se093qz.js → chunk-gc4ntf7d.js} +4 -4
- package/dist/{chunk-9se093qz.js.map → chunk-gc4ntf7d.js.map} +1 -1
- package/dist/{chunk-98cw09sw.js → chunk-hkc3jct7.js} +4 -2
- package/dist/chunk-hkc3jct7.js.map +10 -0
- package/dist/{chunk-pja9jfz6.js → chunk-htr6wjmv.js} +115 -53
- package/dist/chunk-htr6wjmv.js.map +19 -0
- package/dist/{chunk-h3v76ams.js → chunk-jhm3zsa7.js} +25 -2
- package/dist/chunk-jhm3zsa7.js.map +12 -0
- package/dist/{chunk-52c5zb0z.js → chunk-k6hrnf35.js} +5 -5
- package/dist/chunk-k6hrnf35.js.map +10 -0
- package/dist/{chunk-c2rga5cx.js → chunk-mfs23znk.js} +1 -1
- package/dist/{chunk-7ecp4v7a.js → chunk-ny3xyvcn.js} +8 -2
- package/dist/{chunk-7ecp4v7a.js.map → chunk-ny3xyvcn.js.map} +3 -3
- package/dist/{chunk-fggq3d9k.js → chunk-p0dqwj3n.js} +5 -5
- package/dist/{chunk-cnb5kv05.js → chunk-p844e0rn.js} +23 -8
- package/dist/chunk-p844e0rn.js.map +19 -0
- package/dist/{chunk-dmn70ztd.js → chunk-pfp1txq2.js} +25 -6
- package/dist/chunk-pfp1txq2.js.map +11 -0
- package/dist/chunk-pqajwytd.js.map +2 -2
- package/dist/{chunk-5be2ath4.js → chunk-qkbx3tf6.js} +17 -128
- package/dist/{chunk-5be2ath4.js.map → chunk-qkbx3tf6.js.map} +6 -7
- package/dist/{chunk-sk0hcjsz.js → chunk-qkvz64nd.js} +2 -2
- package/dist/{chunk-w9yycd3t.js → chunk-qmnnhde6.js} +4 -8
- package/dist/{chunk-w9yycd3t.js.map → chunk-qmnnhde6.js.map} +3 -3
- package/dist/{chunk-5yd8cchh.js → chunk-qq90g05n.js} +8 -8
- package/dist/{chunk-5yd8cchh.js.map → chunk-qq90g05n.js.map} +1 -1
- package/dist/{chunk-tjjgy3z4.js → chunk-qxvp5epv.js} +66 -14
- package/dist/{chunk-tjjgy3z4.js.map → chunk-qxvp5epv.js.map} +9 -8
- package/dist/chunk-rdghfsss.js.map +2 -2
- package/dist/{chunk-rx7h5fdx.js → chunk-rt9p8m9t.js} +1 -1
- package/dist/{chunk-cd234ba4.js → chunk-rz53yb4v.js} +10 -5
- package/dist/chunk-rz53yb4v.js.map +14 -0
- package/dist/{chunk-xcy5ddha.js → chunk-s4jhg8a3.js} +351 -296
- package/dist/chunk-s4jhg8a3.js.map +15 -0
- package/dist/{chunk-69266efg.js → chunk-s54c868q.js} +12 -4
- package/dist/chunk-s54c868q.js.map +12 -0
- package/dist/{chunk-9g6jz9kk.js → chunk-tffvfy6s.js} +6 -5
- package/dist/{chunk-9g6jz9kk.js.map → chunk-tffvfy6s.js.map} +3 -3
- package/dist/{chunk-e67ynxcr.js → chunk-v6xpd60t.js} +3 -3
- package/dist/{chunk-jjrn5v0p.js → chunk-vgk3hknm.js} +1 -1
- package/dist/{chunk-5thzcb8g.js → chunk-vx2yp45y.js} +2 -2
- package/dist/{chunk-dam456ve.js → chunk-vz3gc1tm.js} +394 -31
- package/dist/{chunk-dam456ve.js.map → chunk-vz3gc1tm.js.map} +10 -7
- package/dist/chunk-xt1zt7gv.js +471 -0
- package/dist/chunk-xt1zt7gv.js.map +13 -0
- package/dist/{chunk-rpxz486p.js → chunk-y05543x6.js} +21 -5
- package/dist/{chunk-rpxz486p.js.map → chunk-y05543x6.js.map} +3 -3
- package/dist/{chunk-aq39q04r.js → chunk-y9jmd7e5.js} +4 -4
- package/dist/{chunk-aq39q04r.js.map → chunk-y9jmd7e5.js.map} +1 -1
- package/dist/{chunk-k4g51s47.js → chunk-yv9czyfr.js} +3 -3
- package/dist/{chunk-z5rnrmz1.js → chunk-yw9pyg66.js} +5 -3
- package/dist/chunk-yw9pyg66.js.map +11 -0
- package/dist/{chunk-vre348sb.js → chunk-za5yd58j.js} +2 -2
- package/dist/{chunk-23xs4qp9.js → chunk-zb77kjth.js} +3 -3
- package/dist/{chunk-33saed7g.js → chunk-zxawp1n2.js} +1 -1
- package/dist/datasets/builders.d.ts +12 -1
- package/dist/datasets/builders.d.ts.map +1 -1
- package/dist/datasets/execution.d.ts +27 -1
- package/dist/datasets/execution.d.ts.map +1 -1
- package/dist/datasets/index.d.ts +1 -1
- package/dist/datasets/index.d.ts.map +1 -1
- package/dist/datasets/types.d.ts +2 -0
- package/dist/datasets/types.d.ts.map +1 -1
- package/dist/datasets/write.d.ts +5 -0
- package/dist/datasets/write.d.ts.map +1 -1
- package/dist/datasets/write.js +10 -5
- package/dist/datasets/write.js.map +1 -1
- package/dist/edits/properties.d.ts.map +1 -1
- package/dist/events/execution.d.ts +2 -1
- package/dist/events/execution.d.ts.map +1 -1
- package/dist/events/types/objects.d.ts +5 -0
- package/dist/events/types/objects.d.ts.map +1 -1
- package/dist/execution/agent.d.ts +10 -0
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +39 -34
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts +6 -1
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- package/dist/execution/primitive.js +37 -34
- package/dist/execution/primitive.js.map +2 -2
- package/dist/execution/request.js +38 -35
- package/dist/execution/request.js.map +2 -2
- package/dist/http/api-routes.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/index.d.ts +9 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +57 -52
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/index.js +8 -5
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/materializer/index.js +19 -16
- package/dist/materializer/index.js.map +1 -1
- package/dist/models/catalog.d.ts +1 -1
- package/dist/models/catalog.d.ts.map +1 -1
- package/dist/models/execution/binding.d.ts +6 -0
- package/dist/models/execution/binding.d.ts.map +1 -1
- package/dist/models/execution/index.js +19 -16
- package/dist/models/execution/index.js.map +1 -1
- package/dist/models/execution/model-call-recorder.d.ts +4 -0
- package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
- package/dist/models/execution.d.ts.map +1 -1
- package/dist/models/index.js +1 -1
- package/dist/models/language-model.d.ts +6 -0
- package/dist/models/language-model.d.ts.map +1 -1
- package/dist/objects/context/index.d.ts +1 -1
- package/dist/objects/context/index.d.ts.map +1 -1
- package/dist/objects/context/types.d.ts +6 -0
- package/dist/objects/context/types.d.ts.map +1 -1
- package/dist/objects/execution.d.ts +2 -1
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +23 -19
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/materializer-adapter.d.ts.map +1 -1
- package/dist/objects/object/upsert-batch.d.ts.map +1 -1
- package/dist/objects/object/upsert.d.ts.map +1 -1
- package/dist/objects/property-clearance.d.ts +41 -0
- package/dist/objects/property-clearance.d.ts.map +1 -0
- package/dist/objects/query/executor.d.ts +3 -0
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.js +18 -15
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/validate.d.ts +10 -1
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/sdk/file-handle.d.ts +6 -0
- package/dist/objects/sdk/file-handle.d.ts.map +1 -0
- package/dist/objects/sdk/object-handle.d.ts +2 -2
- package/dist/objects/sdk/object-handle.d.ts.map +1 -1
- package/dist/objects/sdk/object-set.d.ts +2 -0
- package/dist/objects/sdk/object-set.d.ts.map +1 -1
- package/dist/ontology/builders.d.ts +12 -1
- package/dist/ontology/builders.d.ts.map +1 -1
- package/dist/ontology/docs-markdown.d.ts +35 -0
- package/dist/ontology/docs-markdown.d.ts.map +1 -0
- package/dist/ontology/docs.d.ts +50 -0
- package/dist/ontology/docs.d.ts.map +1 -0
- package/dist/ontology/index.js +7 -4
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/inference/index.d.ts +19 -0
- package/dist/ontology/inference/index.d.ts.map +1 -1
- package/dist/ontology/internal.d.ts +3 -1
- package/dist/ontology/internal.d.ts.map +1 -1
- package/dist/ontology/internal.js +276 -3
- package/dist/ontology/internal.js.map +4 -3
- package/dist/ontology/tokens.d.ts +8 -1
- package/dist/ontology/tokens.d.ts.map +1 -1
- package/dist/ontology/types.d.ts +5 -0
- package/dist/ontology/types.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/schema.d.ts +7 -0
- package/dist/ontology/validation/schema.d.ts.map +1 -1
- package/dist/pipelines/index.js +21 -18
- package/dist/pipelines/index.js.map +1 -1
- package/dist/projections/internal.js +19 -16
- package/dist/projections/internal.js.map +1 -1
- package/dist/runtime/create.d.ts +11 -2
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/definitions.d.ts +3 -1
- package/dist/runtime/definitions.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +13 -2
- 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 +21 -18
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/locale.d.ts +9 -0
- package/dist/runtime/locale.d.ts.map +1 -0
- package/dist/runtime/resolve-definitions.d.ts +4 -2
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +30 -3
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandboxes/index.js +7 -6
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/scheduler/index.js +1 -1
- package/dist/scheduler/runtime.d.ts +3 -0
- package/dist/scheduler/runtime.d.ts.map +1 -1
- package/dist/security/builders.d.ts +11 -2
- package/dist/security/builders.d.ts.map +1 -1
- package/dist/security/index.d.ts +4 -4
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/markings.d.ts +19 -0
- package/dist/security/markings.d.ts.map +1 -0
- package/dist/security/redactions.d.ts +4 -0
- package/dist/security/redactions.d.ts.map +1 -0
- package/dist/security/registry.d.ts +7 -1
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +25 -0
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts +4 -1
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/shares/internal.js +18 -15
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/agents/provider.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +5 -4
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +15 -9
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/file-upload-sessions/provider.js +10 -7
- package/dist/storage/file-upload-sessions/provider.js.map +1 -1
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +18 -15
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.js +4 -3
- package/dist/storage/internal.js.map +1 -1
- package/dist/storage/objects/types.d.ts +7 -0
- package/dist/storage/objects/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +10 -7
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/syncs/index.js +22 -19
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/index.js +55 -53
- package/dist/testing/index.js.map +2 -2
- package/dist/webhooks/internal.js +19 -16
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workflows/builders.d.ts.map +1 -1
- package/dist/workflows/index.js +41 -38
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/request.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +6 -3
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/validation.d.ts +2 -1
- package/dist/workflows/validation.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/actions/read-facade.ts +2 -1
- package/src/actions/validation.ts +4 -1
- package/src/agents/adapters.ts +15 -0
- package/src/agents/authority.ts +15 -0
- package/src/agents/context/entries.ts +48 -4
- package/src/agents/context/index.ts +1 -0
- package/src/agents/context-compaction.ts +6 -0
- package/src/agents/errors.ts +3 -0
- package/src/agents/index.ts +13 -1
- package/src/agents/message.ts +9 -0
- package/src/agents/request.ts +178 -22
- package/src/agents/skills.ts +63 -0
- package/src/agents/types.ts +35 -5
- package/src/auth/runtime.ts +14 -0
- package/src/auth/types.ts +6 -0
- package/src/authorization/resolve.ts +6 -1
- package/src/authorization/types.ts +7 -0
- package/src/blob-storage/execution.ts +12 -0
- package/src/blob-storage/file-content.ts +106 -0
- package/src/blob-storage/index.ts +1 -0
- package/src/blob-storage/internal.ts +7 -0
- package/src/blob-storage/media-type.ts +29 -0
- package/src/blob-storage/types.ts +13 -1
- package/src/blob-storage/validation.ts +13 -0
- package/src/bootstrap/agent-context.ts +356 -0
- package/src/bootstrap/discovery.ts +100 -33
- package/src/bootstrap/index.ts +1 -1
- package/src/bootstrap/ontology-type-manifest.ts +3 -38
- package/src/datasets/builders.ts +17 -1
- package/src/datasets/execution.ts +110 -2
- package/src/datasets/index.ts +7 -1
- package/src/datasets/types.ts +2 -0
- package/src/datasets/write.ts +21 -2
- package/src/edits/properties.ts +3 -0
- package/src/events/execution.ts +15 -16
- package/src/events/types/objects.ts +5 -0
- package/src/execution/agent.ts +27 -0
- package/src/execution/authorization.ts +1 -0
- package/src/execution/authorized-object-reader.ts +96 -34
- package/src/execution/scopes.ts +2 -6
- package/src/http/api-routes.ts +4 -3
- package/src/index.ts +27 -2
- package/src/models/catalog.ts +26 -2
- package/src/models/execution/README.md +4 -3
- package/src/models/execution/binding.ts +6 -0
- package/src/models/execution/model-call-recorder.ts +10 -0
- package/src/models/execution/session.ts +2 -2
- package/src/models/execution.ts +6 -2
- package/src/models/language-model.ts +6 -0
- package/src/objects/context/index.ts +1 -0
- package/src/objects/context/types.ts +7 -0
- package/src/objects/execution.ts +4 -1
- package/src/objects/materializer-adapter.ts +3 -0
- package/src/objects/object/upsert-batch.ts +4 -1
- package/src/objects/object/upsert.ts +3 -1
- package/src/objects/property-clearance.ts +209 -0
- package/src/objects/query/executor.ts +43 -36
- package/src/objects/query/validate.ts +133 -14
- package/src/objects/sdk/file-handle.ts +77 -0
- package/src/objects/sdk/object-handle.ts +8 -4
- package/src/objects/sdk/object-set.ts +5 -2
- package/src/ontology/builders.ts +18 -2
- package/src/ontology/docs-markdown.ts +394 -0
- package/src/ontology/docs.ts +196 -0
- package/src/ontology/inference/index.ts +25 -0
- package/src/ontology/internal.ts +7 -0
- package/src/ontology/tokens.ts +13 -2
- package/src/ontology/types.ts +5 -0
- package/src/ontology/validation/index.ts +1 -0
- package/src/ontology/validation/schema.ts +26 -1
- package/src/runtime/create.ts +34 -4
- package/src/runtime/definitions.ts +3 -1
- package/src/runtime/host.ts +45 -1
- package/src/runtime/index.ts +3 -0
- package/src/runtime/locale.ts +26 -0
- package/src/runtime/resolve-definitions.ts +28 -1
- package/src/runtime/sixb.ts +1 -1
- package/src/runtime/types.ts +39 -3
- package/src/scheduler/runtime.ts +11 -2
- package/src/security/builders.ts +49 -5
- package/src/security/index.ts +6 -1
- package/src/security/markings.ts +313 -0
- package/src/security/redactions.ts +6 -0
- package/src/security/registry.ts +21 -1
- package/src/security/types.ts +26 -0
- package/src/security/validation.ts +59 -2
- package/src/storage/agents/provider.ts +11 -0
- package/src/storage/agents/types.ts +15 -7
- package/src/storage/index.ts +1 -0
- package/src/storage/objects/types.ts +7 -0
- package/src/workflows/builders.ts +24 -1
- package/src/workflows/request.ts +3 -0
- package/src/workflows/types.ts +6 -3
- package/src/workflows/validation.ts +32 -4
- package/dist/chunk-10styjgk.js.map +0 -20
- package/dist/chunk-52c5zb0z.js.map +0 -10
- package/dist/chunk-69266efg.js.map +0 -12
- package/dist/chunk-6wbm6ymz.js.map +0 -48
- package/dist/chunk-91kcnbf0.js.map +0 -10
- package/dist/chunk-98cw09sw.js.map +0 -10
- package/dist/chunk-9vx5e9g1.js.map +0 -11
- package/dist/chunk-cd234ba4.js.map +0 -14
- package/dist/chunk-cnb5kv05.js.map +0 -19
- package/dist/chunk-dmn70ztd.js.map +0 -11
- package/dist/chunk-gf7yht60.js.map +0 -12
- package/dist/chunk-h3v76ams.js.map +0 -11
- package/dist/chunk-pja9jfz6.js.map +0 -19
- package/dist/chunk-t9shqx3w.js.map +0 -12
- package/dist/chunk-xcy5ddha.js.map +0 -15
- package/dist/chunk-xyvy73tj.js.map +0 -12
- package/dist/chunk-z5rnrmz1.js.map +0 -11
- /package/dist/{chunk-4gmng3vf.js.map → chunk-22v5bpz3.js.map} +0 -0
- /package/dist/{chunk-2am3db31.js.map → chunk-48e3cn2d.js.map} +0 -0
- /package/dist/{chunk-f1xh7a32.js.map → chunk-7hpdd6r9.js.map} +0 -0
- /package/dist/{chunk-rb143ggb.js.map → chunk-bwjcehza.js.map} +0 -0
- /package/dist/{chunk-vp3z1ckh.js.map → chunk-de4z2bj6.js.map} +0 -0
- /package/dist/{chunk-3rrezgyc.js.map → chunk-dnmadg9k.js.map} +0 -0
- /package/dist/{chunk-a7er86jd.js.map → chunk-ex496vct.js.map} +0 -0
- /package/dist/{chunk-jnfxmr3f.js.map → chunk-f1zxad2t.js.map} +0 -0
- /package/dist/{chunk-c2rga5cx.js.map → chunk-mfs23znk.js.map} +0 -0
- /package/dist/{chunk-fggq3d9k.js.map → chunk-p0dqwj3n.js.map} +0 -0
- /package/dist/{chunk-sk0hcjsz.js.map → chunk-qkvz64nd.js.map} +0 -0
- /package/dist/{chunk-rx7h5fdx.js.map → chunk-rt9p8m9t.js.map} +0 -0
- /package/dist/{chunk-e67ynxcr.js.map → chunk-v6xpd60t.js.map} +0 -0
- /package/dist/{chunk-jjrn5v0p.js.map → chunk-vgk3hknm.js.map} +0 -0
- /package/dist/{chunk-5thzcb8g.js.map → chunk-vx2yp45y.js.map} +0 -0
- /package/dist/{chunk-k4g51s47.js.map → chunk-yv9czyfr.js.map} +0 -0
- /package/dist/{chunk-vre348sb.js.map → chunk-za5yd58j.js.map} +0 -0
- /package/dist/{chunk-23xs4qp9.js.map → chunk-zb77kjth.js.map} +0 -0
- /package/dist/{chunk-33saed7g.js.map → chunk-zxawp1n2.js.map} +0 -0
package/src/auth/runtime.ts
CHANGED
|
@@ -655,6 +655,7 @@ export class AuthRuntime {
|
|
|
655
655
|
caller: AuthenticatedUserRequestSession,
|
|
656
656
|
input: CreatePersonalAccessTokenInput
|
|
657
657
|
): Promise<CreateAccessTokenResult> {
|
|
658
|
+
assertSessionCaller(caller)
|
|
658
659
|
const storage = this.requireAuthStorage()
|
|
659
660
|
// A personal token can only carry groups the caller currently belongs to.
|
|
660
661
|
const groupIds = constrainRequestedGroupIds(input.groupIds, caller.groupIds, {
|
|
@@ -815,6 +816,7 @@ export class AuthRuntime {
|
|
|
815
816
|
caller: AuthenticatedUserRequestSession,
|
|
816
817
|
input: CreateServiceAccountAccessTokenInput
|
|
817
818
|
): Promise<CreateServiceAccountAccessTokenResult> {
|
|
819
|
+
assertSessionCaller(caller)
|
|
818
820
|
const storage = this.requireAuthStorage()
|
|
819
821
|
const { serviceAccount, groupIds: serviceAccountGroupIds } =
|
|
820
822
|
await this.requireManageableServiceAccount(storage, caller.groupIds, input.serviceAccountId)
|
|
@@ -1564,6 +1566,18 @@ function callerSessionId(caller: AuthenticatedRequestAuthSession): string | unde
|
|
|
1564
1566
|
return caller.credentialSource === "session" ? caller.session.id : undefined
|
|
1565
1567
|
}
|
|
1566
1568
|
|
|
1569
|
+
// Access tokens are created only by a signed-in person, never by another access token. A token
|
|
1570
|
+
// minting one could hand out more groups or a later expiry than it carries, and what it minted
|
|
1571
|
+
// would outlive its own revocation.
|
|
1572
|
+
function assertSessionCaller(caller: AuthenticatedUserRequestSession): void {
|
|
1573
|
+
if (caller.credentialSource !== "session") {
|
|
1574
|
+
throw new AuthRuntimeError(
|
|
1575
|
+
"authorization_denied",
|
|
1576
|
+
"[Sixb] Access tokens can only be created from a signed-in session, not with another access token."
|
|
1577
|
+
)
|
|
1578
|
+
}
|
|
1579
|
+
}
|
|
1580
|
+
|
|
1567
1581
|
function constrainTokenGroupIds(
|
|
1568
1582
|
principalGroupIds: readonly string[],
|
|
1569
1583
|
accessToken: AccessTokenRecord
|
package/src/auth/types.ts
CHANGED
|
@@ -190,6 +190,12 @@ export interface OidcStartSignInInput {
|
|
|
190
190
|
|
|
191
191
|
export interface OidcStartSignInResult {
|
|
192
192
|
readonly redirectTo: string
|
|
193
|
+
/**
|
|
194
|
+
* The `state` sent to the provider. The server keeps it in a cookie until `expiresAt` and
|
|
195
|
+
* completes the callback only in the browser that holds it.
|
|
196
|
+
*/
|
|
197
|
+
readonly state: string
|
|
198
|
+
readonly expiresAt: Date
|
|
193
199
|
}
|
|
194
200
|
|
|
195
201
|
export interface OidcCallbackInput {
|
|
@@ -70,7 +70,7 @@ function expandSelection(
|
|
|
70
70
|
*
|
|
71
71
|
* Pure set-union over pre-resolved roles: roles match when their grantedTo
|
|
72
72
|
* groups intersect the principal's memberships, and their concrete id sets
|
|
73
|
-
* union into the principal's
|
|
73
|
+
* and clearances union into the principal's context.
|
|
74
74
|
*/
|
|
75
75
|
export function resolveAuthorizationContext(input: {
|
|
76
76
|
readonly principal: Principal
|
|
@@ -81,6 +81,7 @@ export function resolveAuthorizationContext(input: {
|
|
|
81
81
|
const memberGroupIds = new Set(input.groupIds)
|
|
82
82
|
const roleIds: string[] = []
|
|
83
83
|
const grants = emptyGrantSets()
|
|
84
|
+
const clearances = new Set<string>()
|
|
84
85
|
|
|
85
86
|
for (const role of input.roles) {
|
|
86
87
|
if (!role.grantedToGroupIds.some((groupId) => memberGroupIds.has(groupId))) {
|
|
@@ -96,6 +97,9 @@ export function resolveAuthorizationContext(input: {
|
|
|
96
97
|
grants[kind].add(id)
|
|
97
98
|
}
|
|
98
99
|
}
|
|
100
|
+
for (const markingId of role.clearances ?? []) {
|
|
101
|
+
clearances.add(markingId)
|
|
102
|
+
}
|
|
99
103
|
}
|
|
100
104
|
|
|
101
105
|
return {
|
|
@@ -104,5 +108,6 @@ export function resolveAuthorizationContext(input: {
|
|
|
104
108
|
groupIds: input.groupIds,
|
|
105
109
|
roleIds,
|
|
106
110
|
grants,
|
|
111
|
+
clearances,
|
|
107
112
|
}
|
|
108
113
|
}
|
|
@@ -42,6 +42,8 @@ export interface ResolvedRole {
|
|
|
42
42
|
readonly id: string
|
|
43
43
|
readonly grantedToGroupIds: readonly string[]
|
|
44
44
|
readonly grants: GrantIndex
|
|
45
|
+
/** Marking ids this role clears. Absent means none. */
|
|
46
|
+
readonly clearances?: ReadonlySet<string>
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
export interface AuthorizationContext {
|
|
@@ -51,4 +53,9 @@ export interface AuthorizationContext {
|
|
|
51
53
|
/** Roles whose grantedTo groups intersect the principal's memberships. */
|
|
52
54
|
readonly roleIds: readonly string[]
|
|
53
55
|
readonly grants: GrantIndex
|
|
56
|
+
/**
|
|
57
|
+
* Marking ids the principal may read, unioned from its roles. Absent means none: a context built
|
|
58
|
+
* without clearances reads no marked property.
|
|
59
|
+
*/
|
|
60
|
+
readonly clearances?: ReadonlySet<string>
|
|
54
61
|
}
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
type FileDownloadUrlContext,
|
|
9
9
|
revokeFileDownloadUrl,
|
|
10
10
|
} from "./download-urls"
|
|
11
|
+
import { canonicalMediaType } from "./media-type"
|
|
11
12
|
import type {
|
|
12
13
|
AbortBlobUploadInput,
|
|
13
14
|
BlobByteRange,
|
|
@@ -60,6 +61,7 @@ export function createBlobsRuntime(
|
|
|
60
61
|
const executionBlobs: BlobsRuntime = {
|
|
61
62
|
put: (input) => {
|
|
62
63
|
assertAccess()
|
|
64
|
+
assertMediaType("put", input.mediaType)
|
|
63
65
|
return blobStorage.put(input)
|
|
64
66
|
},
|
|
65
67
|
open: (blobId) => {
|
|
@@ -89,6 +91,7 @@ export function createBlobsRuntime(
|
|
|
89
91
|
if (supportsDirectUpload(blobStorage)) {
|
|
90
92
|
executionBlobs.createUpload = (input) => {
|
|
91
93
|
assertAccess()
|
|
94
|
+
assertMediaType("createUpload", input.mediaType)
|
|
92
95
|
return blobStorage.createUpload(input)
|
|
93
96
|
}
|
|
94
97
|
executionBlobs.signUploadPart = (input) => {
|
|
@@ -97,6 +100,7 @@ export function createBlobsRuntime(
|
|
|
97
100
|
}
|
|
98
101
|
executionBlobs.completeUpload = (input) => {
|
|
99
102
|
assertAccess()
|
|
103
|
+
assertMediaType("completeUpload", input.mediaType)
|
|
100
104
|
return blobStorage.completeUpload(input)
|
|
101
105
|
}
|
|
102
106
|
executionBlobs.abortUpload = (input) => {
|
|
@@ -107,3 +111,11 @@ export function createBlobsRuntime(
|
|
|
107
111
|
|
|
108
112
|
return Object.freeze(executionBlobs)
|
|
109
113
|
}
|
|
114
|
+
|
|
115
|
+
function assertMediaType(method: string, mediaType: string | undefined): void {
|
|
116
|
+
if (mediaType !== undefined && canonicalMediaType(mediaType) === null) {
|
|
117
|
+
throw new Error(
|
|
118
|
+
`[Sixb] blobs.${method}() mediaType must be one media type, such as "application/pdf". Received ${JSON.stringify(mediaType)}.`
|
|
119
|
+
)
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { BlobInfo, BlobStorage, FileRef, OpenedFileRef } from "./types"
|
|
2
|
+
import { isFileRef } from "./validation"
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* A file is served only through the record that references it: the caller reads that record with
|
|
6
|
+
* its own authority, resolves the FileRef inside it, then checks the FileRef against the stored
|
|
7
|
+
* blob. File content routes and the SDK's `file().open()` share these steps.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/** The FileRef at a JSON Pointer in an authorized record, or null when none is there. */
|
|
11
|
+
export function resolveFileRefAtPath(root: unknown, path: string): FileRef | null {
|
|
12
|
+
const value = resolveJsonPointer(root, path)
|
|
13
|
+
return isFileRef(value) ? value : null
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** The stored blob a FileRef names, or null when it is absent or no longer matches it. */
|
|
17
|
+
export async function statFileRef(
|
|
18
|
+
blobStorage: Pick<BlobStorage, "stat">,
|
|
19
|
+
fileRef: FileRef
|
|
20
|
+
): Promise<BlobInfo | null> {
|
|
21
|
+
const stat = await blobStorage.stat(fileRef.blobId)
|
|
22
|
+
return stat &&
|
|
23
|
+
stat.blobId === fileRef.blobId &&
|
|
24
|
+
stat.digest === fileRef.digest &&
|
|
25
|
+
stat.sizeBytes === fileRef.sizeBytes
|
|
26
|
+
? stat
|
|
27
|
+
: null
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Open a FileRef resolved from an authorized record, or return null when its blob is gone. The
|
|
32
|
+
* blob itself is opened on the body's first read, so a body nobody reads holds nothing.
|
|
33
|
+
*/
|
|
34
|
+
export async function openFileRef(
|
|
35
|
+
blobStorage: Pick<BlobStorage, "stat" | "open">,
|
|
36
|
+
fileRef: FileRef
|
|
37
|
+
): Promise<OpenedFileRef | null> {
|
|
38
|
+
const stat = await statFileRef(blobStorage, fileRef)
|
|
39
|
+
if (!stat) return null
|
|
40
|
+
return { fileRef, body: openOnFirstRead(blobStorage, fileRef.blobId) }
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function openOnFirstRead(
|
|
44
|
+
blobStorage: Pick<BlobStorage, "open">,
|
|
45
|
+
blobId: string
|
|
46
|
+
): ReadableStream<Uint8Array> {
|
|
47
|
+
let reader: ReadableStreamDefaultReader<Uint8Array> | undefined
|
|
48
|
+
return new ReadableStream<Uint8Array>(
|
|
49
|
+
{
|
|
50
|
+
async pull(controller) {
|
|
51
|
+
reader ??= (await blobStorage.open(blobId)).getReader()
|
|
52
|
+
const { done, value } = await reader.read()
|
|
53
|
+
if (done) controller.close()
|
|
54
|
+
else controller.enqueue(value)
|
|
55
|
+
},
|
|
56
|
+
async cancel(reason) {
|
|
57
|
+
await reader?.cancel(reason)
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
// No read-ahead: the first pull waits for the first read.
|
|
61
|
+
{ highWaterMark: 0 }
|
|
62
|
+
)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** Escape one segment of a JSON Pointer. */
|
|
66
|
+
export function jsonPointerSegment(segment: string | number): string {
|
|
67
|
+
return String(segment).replaceAll("~", "~0").replaceAll("/", "~1")
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function resolveJsonPointer(root: unknown, pointer: string): unknown {
|
|
71
|
+
if (pointer === "") {
|
|
72
|
+
return root
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (!pointer.startsWith("/")) {
|
|
76
|
+
return undefined
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
let current = root
|
|
80
|
+
for (const rawSegment of pointer.slice(1).split("/")) {
|
|
81
|
+
const segment = decodeJsonPointerSegment(rawSegment)
|
|
82
|
+
if (Array.isArray(current)) {
|
|
83
|
+
const index = Number.parseInt(segment, 10)
|
|
84
|
+
if (!Number.isInteger(index) || index < 0 || index.toString() !== segment) {
|
|
85
|
+
return undefined
|
|
86
|
+
}
|
|
87
|
+
if (!Object.hasOwn(current, segment)) {
|
|
88
|
+
return undefined
|
|
89
|
+
}
|
|
90
|
+
current = current[index]
|
|
91
|
+
continue
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (typeof current !== "object" || current === null || !Object.hasOwn(current, segment)) {
|
|
95
|
+
return undefined
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
current = (current as Record<string, unknown>)[segment]
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return current
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function decodeJsonPointerSegment(segment: string): string {
|
|
105
|
+
return segment.replaceAll("~1", "/").replaceAll("~0", "~")
|
|
106
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// One media type as RFC 9110 defines it: `type/subtype`, each a token, then optional
|
|
2
|
+
// `;name=value` parameters whose value is a token or a quoted string. Stricter than the RFC where
|
|
3
|
+
// leniency only invites a second reading: no surrounding whitespace, no empty parameters, no
|
|
4
|
+
// escapes, and no comma anywhere. Browsers read a comma-separated value as a list of types and
|
|
5
|
+
// use the last valid one, so a value with a comma can mean something other than its first type.
|
|
6
|
+
const TOKEN = "[!#$%&'*+.^_`|~0-9A-Za-z-]+"
|
|
7
|
+
const QUOTED_STRING = '"[\\t\\x20\\x21\\x23-\\x2b\\x2d-\\x5b\\x5d-\\x7e]*"'
|
|
8
|
+
const PARAMETER = `[\\t ]*;[\\t ]*(${TOKEN})=(${TOKEN}|${QUOTED_STRING})`
|
|
9
|
+
const MEDIA_TYPE_PATTERN = new RegExp(`^(${TOKEN})/(${TOKEN})((?:${PARAMETER})*)$`)
|
|
10
|
+
const PARAMETER_PATTERN = new RegExp(PARAMETER, "g")
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The canonical form of a single well-formed media type, or `null` for anything else.
|
|
14
|
+
*
|
|
15
|
+
* Type, subtype, and parameter names are case-insensitive, so they are lowercased; parameter
|
|
16
|
+
* values keep their case. `"Text/Plain; Charset=UTF-8"` becomes `"text/plain;charset=UTF-8"`.
|
|
17
|
+
*/
|
|
18
|
+
export function canonicalMediaType(value: unknown): string | null {
|
|
19
|
+
if (typeof value !== "string") return null
|
|
20
|
+
const match = MEDIA_TYPE_PATTERN.exec(value)
|
|
21
|
+
if (!match) return null
|
|
22
|
+
|
|
23
|
+
const [, type, subtype, parameters] = match
|
|
24
|
+
let canonical = `${type.toLowerCase()}/${subtype.toLowerCase()}`
|
|
25
|
+
for (const [, name, parameterValue] of parameters.matchAll(PARAMETER_PATTERN)) {
|
|
26
|
+
canonical += `;${name.toLowerCase()}=${parameterValue}`
|
|
27
|
+
}
|
|
28
|
+
return canonical
|
|
29
|
+
}
|
|
@@ -7,7 +7,9 @@ export type BlobDigest = `sha256:${string}`
|
|
|
7
7
|
* `blobId` is always `blob_<sha256 hex>` derived from `digest`. `fileName`,
|
|
8
8
|
* `mediaType`, and `logicalPath` are caller-supplied per-reference metadata (not
|
|
9
9
|
* part of blob identity) and are untrusted — consumers must sanitize them before
|
|
10
|
-
* using them for paths, headers, or rendering.
|
|
10
|
+
* using them for paths, headers, or rendering. A caller storing a reference must give a
|
|
11
|
+
* single media type such as `image/png` (`isValidFileRef`); references stored earlier may
|
|
12
|
+
* hold anything, so file routes re-parse it before serving.
|
|
11
13
|
*/
|
|
12
14
|
export interface FileRef {
|
|
13
15
|
readonly blobId: string
|
|
@@ -20,6 +22,16 @@ export interface FileRef {
|
|
|
20
22
|
|
|
21
23
|
export type BlobBody = ArrayBuffer | Uint8Array | Blob | ReadableStream<Uint8Array>
|
|
22
24
|
|
|
25
|
+
/** A FileRef opened through the record that references it. */
|
|
26
|
+
export interface OpenedFileRef {
|
|
27
|
+
readonly fileRef: FileRef
|
|
28
|
+
/**
|
|
29
|
+
* The file's bytes. The stored blob is opened on the first read: read the body to its end or
|
|
30
|
+
* cancel it, and a body never read holds nothing.
|
|
31
|
+
*/
|
|
32
|
+
readonly body: ReadableStream<Uint8Array>
|
|
33
|
+
}
|
|
34
|
+
|
|
23
35
|
export interface PutBlobInput {
|
|
24
36
|
readonly body: BlobBody
|
|
25
37
|
/** Reject the write when the consumed byte count differs from this value. */
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isPlainRecord } from "../json"
|
|
2
2
|
import { blobIdFromDigest } from "./derive"
|
|
3
|
+
import { canonicalMediaType } from "./media-type"
|
|
3
4
|
import type {
|
|
4
5
|
BlobDigest,
|
|
5
6
|
BlobStorage,
|
|
@@ -30,6 +31,18 @@ export function isFileRef(value: unknown): value is FileRef {
|
|
|
30
31
|
)
|
|
31
32
|
}
|
|
32
33
|
|
|
34
|
+
/**
|
|
35
|
+
* `isFileRef`, plus a `mediaType` that, when present, is exactly one media type. Paths that store
|
|
36
|
+
* a reference a caller hands them use this. Reads keep `isFileRef`, so references stored before
|
|
37
|
+
* the rule still load; file routes re-parse the type before serving it.
|
|
38
|
+
*/
|
|
39
|
+
export function isValidFileRef(value: unknown): value is FileRef {
|
|
40
|
+
return (
|
|
41
|
+
isFileRef(value) &&
|
|
42
|
+
(value.mediaType === undefined || canonicalMediaType(value.mediaType) !== null)
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
|
|
33
46
|
export function supportsDirectUpload(
|
|
34
47
|
storage: BlobStorage
|
|
35
48
|
): storage is BlobStorage & DirectUploadBlobStorage {
|