@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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isFileRef } from "../../blob-storage/validation"
|
|
1
|
+
import { isFileRef, isValidFileRef } from "../../blob-storage/validation"
|
|
2
2
|
import { withFailureMessage } from "../../errors/failure-message"
|
|
3
3
|
import type { ObjectFieldSchema, Schema, ValueType, ValueTypeRefSchema } from ".."
|
|
4
4
|
import { isDecimalString } from "../decimal"
|
|
@@ -201,6 +201,31 @@ export function validateSchemaValue(
|
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
203
|
|
|
204
|
+
/**
|
|
205
|
+
* Reject a value from a caller that holds a file reference whose `mediaType` is not exactly one
|
|
206
|
+
* media type, anywhere inside it. Call it where caller input is accepted, after
|
|
207
|
+
* `validateSchemaValue`; that validator also re-checks stored state, which must keep loading
|
|
208
|
+
* references written before the rule.
|
|
209
|
+
*/
|
|
210
|
+
export function assertValidFileRefs(value: unknown, path: string): void {
|
|
211
|
+
if (isFileRef(value)) {
|
|
212
|
+
if (!isValidFileRef(value)) {
|
|
213
|
+
throw withFailureMessage(
|
|
214
|
+
new OntologyValidationError(
|
|
215
|
+
`[Sixb] Property ${path}.mediaType must be one media type, such as "application/pdf"`
|
|
216
|
+
),
|
|
217
|
+
`Property ${path}.mediaType must be one media type, such as "application/pdf".`
|
|
218
|
+
)
|
|
219
|
+
}
|
|
220
|
+
return
|
|
221
|
+
}
|
|
222
|
+
if (Array.isArray(value)) {
|
|
223
|
+
for (const [index, item] of value.entries()) assertValidFileRefs(item, `${path}[${index}]`)
|
|
224
|
+
} else if (isRecord(value)) {
|
|
225
|
+
for (const [key, item] of Object.entries(value)) assertValidFileRefs(item, `${path}.${key}`)
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
204
229
|
function validateFieldValue(
|
|
205
230
|
field: ObjectFieldSchema,
|
|
206
231
|
value: unknown,
|
package/src/runtime/create.ts
CHANGED
|
@@ -4,7 +4,12 @@ import type { AgentToolDefinition } from "../agents"
|
|
|
4
4
|
import { assertNoAgentDefinitions } from "../agents/retired-config"
|
|
5
5
|
import type { SixbAuthConfig } from "../auth"
|
|
6
6
|
import type { BlobStorage } from "../blob-storage"
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
discoverAgentSkills,
|
|
9
|
+
discoverOntologyFiles,
|
|
10
|
+
discoverProjectInstructions,
|
|
11
|
+
} from "../bootstrap/agent-context"
|
|
12
|
+
import { discoverOntologySources, discoverProjectDefinitions } from "../bootstrap/discovery"
|
|
8
13
|
import type { Broker } from "../broker"
|
|
9
14
|
import type { ConnectorConnectionOptions, ConnectorDefinition } from "../connectors/types"
|
|
10
15
|
import type { DatasetDefinition } from "../datasets"
|
|
@@ -20,7 +25,12 @@ import type { Queues } from "../queues"
|
|
|
20
25
|
import type { RuleDefinition } from "../rules"
|
|
21
26
|
import type { SandboxFactory } from "../sandboxes"
|
|
22
27
|
import type { ScheduleDefinition } from "../schedules"
|
|
23
|
-
import type {
|
|
28
|
+
import type {
|
|
29
|
+
GroupDefinition,
|
|
30
|
+
MarkingDefinition,
|
|
31
|
+
MembershipPolicyDefinition,
|
|
32
|
+
RoleDefinition,
|
|
33
|
+
} from "../security"
|
|
24
34
|
import type { ParamsConfig } from "../shared/params/types"
|
|
25
35
|
import type { ShareDefinition } from "../shares"
|
|
26
36
|
import type { Storage } from "../storage"
|
|
@@ -32,6 +42,13 @@ import type { OntologySource } from "./types"
|
|
|
32
42
|
|
|
33
43
|
export interface CreateSixbOptions<in out TParams extends ParamsConfig = ParamsConfig> {
|
|
34
44
|
id?: string
|
|
45
|
+
/** BCP 47 language of the project, such as `"fr-FR"`. Defaults to `"en"`. */
|
|
46
|
+
locale?: string
|
|
47
|
+
/**
|
|
48
|
+
* IANA time zone of the project, such as `"Europe/Paris"`. Defaults to `"UTC"`. Cron schedules
|
|
49
|
+
* without their own time zone and agent runs use it.
|
|
50
|
+
*/
|
|
51
|
+
timeZone?: string
|
|
35
52
|
broker: Broker
|
|
36
53
|
storage: Storage
|
|
37
54
|
lakeStorage: LakeStorage
|
|
@@ -63,6 +80,7 @@ export interface CreateSixbOptions<in out TParams extends ParamsConfig = ParamsC
|
|
|
63
80
|
projections?: readonly ProjectionDefinition[]
|
|
64
81
|
rules?: readonly RuleDefinition[]
|
|
65
82
|
workflows?: readonly WorkflowDefinition[]
|
|
83
|
+
markings?: readonly MarkingDefinition[]
|
|
66
84
|
groups?: readonly GroupDefinition[]
|
|
67
85
|
roles?: readonly RoleDefinition[]
|
|
68
86
|
membershipPolicies?: readonly MembershipPolicyDefinition[]
|
|
@@ -78,7 +96,8 @@ export interface CreateSixbOptions<in out TParams extends ParamsConfig = ParamsC
|
|
|
78
96
|
* The host auto-discovers exported definitions from `ontology/`, `actions/`, `datasets/`,
|
|
79
97
|
* `connectors/`, `syncs/`, `schedules/`, `pipelines/`, `projections/`,
|
|
80
98
|
* `rules/`, `workflows/`, `shares/`, and `security/{groups,roles,policies}/`
|
|
81
|
-
* relative to `projectRoot
|
|
99
|
+
* relative to `projectRoot`, along with the Agent's `skills/`, `SIXB.md`, and the docs and scripts
|
|
100
|
+
* under `ontology/`.
|
|
82
101
|
*/
|
|
83
102
|
export async function createSixb<const TParams extends ParamsConfig = ParamsConfig>(
|
|
84
103
|
options: CreateSixbOptions<TParams>
|
|
@@ -87,7 +106,7 @@ export async function createSixb<const TParams extends ParamsConfig = ParamsConf
|
|
|
87
106
|
const projectRoot = resolve(options.projectRoot ?? process.cwd())
|
|
88
107
|
|
|
89
108
|
const discoveredOntology = await discoverOntologySources(projectRoot)
|
|
90
|
-
const allSources = [...(options.ontologies ?? []), ...discoveredOntology]
|
|
109
|
+
const allSources = [...(options.ontologies ?? []), ...discoveredOntology.sources]
|
|
91
110
|
|
|
92
111
|
if (allSources.length === 0) {
|
|
93
112
|
throw new RuntimeError(
|
|
@@ -96,12 +115,17 @@ export async function createSixb<const TParams extends ParamsConfig = ParamsConf
|
|
|
96
115
|
}
|
|
97
116
|
|
|
98
117
|
const definitions = await discoverProjectDefinitions(projectRoot)
|
|
118
|
+
const skills = await discoverAgentSkills(projectRoot)
|
|
119
|
+
const instructions = await discoverProjectInstructions(projectRoot)
|
|
120
|
+
const ontologyFiles = await discoverOntologyFiles(projectRoot)
|
|
99
121
|
|
|
100
122
|
// Explicit definitions come first so local setup can override ordering while duplicate ids are
|
|
101
123
|
// still rejected by the SixbHost constructor. Every family merges — `actions` and `projections`
|
|
102
124
|
// used to *replace* discovery instead, silently and undocumented.
|
|
103
125
|
return new SixbHost<TParams>({
|
|
104
126
|
id: options.id,
|
|
127
|
+
locale: options.locale,
|
|
128
|
+
timeZone: options.timeZone,
|
|
105
129
|
ontology: allSources,
|
|
106
130
|
broker: options.broker,
|
|
107
131
|
storage: options.storage,
|
|
@@ -124,11 +148,17 @@ export async function createSixb<const TParams extends ParamsConfig = ParamsConf
|
|
|
124
148
|
projections: [...(options.projections ?? []), ...definitions.projections],
|
|
125
149
|
rules: [...(options.rules ?? []), ...definitions.rules],
|
|
126
150
|
workflows: [...(options.workflows ?? []), ...definitions.workflows],
|
|
151
|
+
markings: [...(options.markings ?? []), ...definitions.markings],
|
|
127
152
|
groups: [...(options.groups ?? []), ...definitions.groups],
|
|
128
153
|
roles: [...(options.roles ?? []), ...definitions.roles],
|
|
129
154
|
membershipPolicies: [...(options.membershipPolicies ?? []), ...definitions.membershipPolicies],
|
|
130
155
|
models: options.models,
|
|
131
156
|
tools: options.tools,
|
|
157
|
+
agent: {
|
|
158
|
+
skills,
|
|
159
|
+
...(instructions === undefined ? {} : { instructions }),
|
|
160
|
+
ontologyDocs: { modules: discoveredOntology.modules, ...ontologyFiles },
|
|
161
|
+
},
|
|
132
162
|
shares: [...(options.shares ?? []), ...definitions.shares],
|
|
133
163
|
auth: options.auth,
|
|
134
164
|
})
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ActionDefinitionCatalog } from "../actions"
|
|
2
|
-
import type { AgentToolCatalog } from "../agents"
|
|
2
|
+
import type { AgentDefinitions, AgentToolCatalog } from "../agents"
|
|
3
3
|
import type { ConnectorDefinition } from "../connectors"
|
|
4
4
|
import type { DatasetDefinition } from "../datasets"
|
|
5
5
|
import type { ModelCatalog } from "../models"
|
|
@@ -24,6 +24,8 @@ export interface SixbDefinitions {
|
|
|
24
24
|
readonly ontology: OntologyDefinitionCatalog
|
|
25
25
|
readonly actions: ActionDefinitionCatalog
|
|
26
26
|
readonly tools: AgentToolCatalog
|
|
27
|
+
/** The project files the Agent reads: `skills/`, `SIXB.md`, and the docs of `ontology/`. */
|
|
28
|
+
readonly agent: AgentDefinitions
|
|
27
29
|
readonly connectors: DefinitionCatalog<ConnectorDefinition>
|
|
28
30
|
readonly datasets: DefinitionCatalog<DatasetDefinition>
|
|
29
31
|
/** Absent until a project configures `models` in createSixb(). */
|
package/src/runtime/host.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import { resolve } from "node:path"
|
|
9
9
|
import type { ActionDefinition } from "../actions/types"
|
|
10
|
-
import type { AgentToolDefinition } from "../agents"
|
|
10
|
+
import type { AgentDefinitionsInput, AgentToolDefinition } from "../agents"
|
|
11
11
|
import {
|
|
12
12
|
AuthRuntime,
|
|
13
13
|
AuthRuntimeError,
|
|
@@ -74,6 +74,7 @@ import { type SchedulerController, SchedulerRuntime } from "../scheduler"
|
|
|
74
74
|
import type { ScheduleDefinition } from "../schedules"
|
|
75
75
|
import type {
|
|
76
76
|
GroupDefinition,
|
|
77
|
+
MarkingDefinition,
|
|
77
78
|
MembershipPolicyDefinition,
|
|
78
79
|
RoleDefinition,
|
|
79
80
|
SecurityDefinitionCatalog,
|
|
@@ -86,6 +87,13 @@ import type { RegisteredWebhook } from "../webhooks"
|
|
|
86
87
|
import { WebhookRegistry, WebhookValidationError } from "../webhooks"
|
|
87
88
|
import type { WorkflowDefinition } from "../workflows"
|
|
88
89
|
import type { SixbDefinitions } from "./definitions"
|
|
90
|
+
import { RuntimeError } from "./errors"
|
|
91
|
+
import {
|
|
92
|
+
canonicalLocale,
|
|
93
|
+
canonicalTimeZone,
|
|
94
|
+
DEFAULT_PROJECT_LOCALE,
|
|
95
|
+
DEFAULT_PROJECT_TIME_ZONE,
|
|
96
|
+
} from "./locale"
|
|
89
97
|
import {
|
|
90
98
|
createOntologyMutationRuntime,
|
|
91
99
|
registerOntologyMutationRuntime,
|
|
@@ -98,6 +106,10 @@ import type { OntologySource, SixbHostContext, SixbRuntimeContext } from "./type
|
|
|
98
106
|
|
|
99
107
|
export interface SixbHostOptions<in out TParams extends ParamsConfig = ParamsConfig> {
|
|
100
108
|
id?: string
|
|
109
|
+
/** BCP 47 language of the project. Defaults to `"en"`. */
|
|
110
|
+
locale?: string
|
|
111
|
+
/** IANA time zone of the project. Defaults to `"UTC"`. */
|
|
112
|
+
timeZone?: string
|
|
101
113
|
ontology: readonly OntologySource[]
|
|
102
114
|
broker: Broker
|
|
103
115
|
storage: Storage
|
|
@@ -129,6 +141,9 @@ export interface SixbHostOptions<in out TParams extends ParamsConfig = ParamsCon
|
|
|
129
141
|
models?: ModelCatalogInput
|
|
130
142
|
/** Project tools available to Agent runtimes. */
|
|
131
143
|
tools?: readonly AgentToolDefinition[]
|
|
144
|
+
/** The project files the Agent reads. createSixb() discovers them. */
|
|
145
|
+
agent?: AgentDefinitionsInput
|
|
146
|
+
markings?: readonly MarkingDefinition[]
|
|
132
147
|
groups?: readonly GroupDefinition[]
|
|
133
148
|
roles?: readonly RoleDefinition[]
|
|
134
149
|
membershipPolicies?: readonly MembershipPolicyDefinition[]
|
|
@@ -141,6 +156,10 @@ export interface SixbHostOptions<in out TParams extends ParamsConfig = ParamsCon
|
|
|
141
156
|
// return `SixbHost` that returns `new SixbHost(options)`.
|
|
142
157
|
export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
|
|
143
158
|
readonly projectId: string
|
|
159
|
+
/** Canonical BCP 47 language of the project. */
|
|
160
|
+
readonly locale: string
|
|
161
|
+
/** Canonical IANA time zone of the project. */
|
|
162
|
+
readonly timeZone: string
|
|
144
163
|
private readonly webhookRegistry: WebhookRegistry
|
|
145
164
|
private readonly hostContext: SixbHostContext
|
|
146
165
|
private readonly committedFacts: OntologyOutboxDispatcher
|
|
@@ -167,6 +186,8 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
|
|
|
167
186
|
constructor(options: SixbHostOptions<TParams>) {
|
|
168
187
|
const errorReporter = attachSixbErrorReporter(this, options.onError)
|
|
169
188
|
this.projectId = options.id ?? "default"
|
|
189
|
+
this.locale = resolveProjectLocale(options.locale)
|
|
190
|
+
this.timeZone = resolveProjectTimeZone(options.timeZone)
|
|
170
191
|
this.broker = options.broker
|
|
171
192
|
this.eventService = createDomainEventService({
|
|
172
193
|
projectId: this.projectId,
|
|
@@ -280,6 +301,7 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
|
|
|
280
301
|
this.scheduler = new SchedulerRuntime({
|
|
281
302
|
schedules: definitions.schedules.list(),
|
|
282
303
|
events: this.eventService,
|
|
304
|
+
timeZone: this.timeZone,
|
|
283
305
|
})
|
|
284
306
|
}
|
|
285
307
|
|
|
@@ -410,6 +432,28 @@ export type SixbHostView = Omit<SixbHost, "withScope"> & {
|
|
|
410
432
|
withScope(scope: ExecutionScope): object
|
|
411
433
|
}
|
|
412
434
|
|
|
435
|
+
function resolveProjectLocale(locale: unknown): string {
|
|
436
|
+
if (locale === undefined) return DEFAULT_PROJECT_LOCALE
|
|
437
|
+
const canonical = canonicalLocale(locale)
|
|
438
|
+
if (canonical === undefined) {
|
|
439
|
+
throw new RuntimeError(
|
|
440
|
+
`[Sixb] 'locale' must be a BCP 47 language tag such as "fr-FR"; received ${JSON.stringify(locale)}.`
|
|
441
|
+
)
|
|
442
|
+
}
|
|
443
|
+
return canonical
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
function resolveProjectTimeZone(timeZone: unknown): string {
|
|
447
|
+
if (timeZone === undefined) return DEFAULT_PROJECT_TIME_ZONE
|
|
448
|
+
const canonical = canonicalTimeZone(timeZone)
|
|
449
|
+
if (canonical === undefined) {
|
|
450
|
+
throw new RuntimeError(
|
|
451
|
+
`[Sixb] 'timeZone' must be an IANA time zone such as "Europe/Paris"; received ${JSON.stringify(timeZone)}.`
|
|
452
|
+
)
|
|
453
|
+
}
|
|
454
|
+
return canonical
|
|
455
|
+
}
|
|
456
|
+
|
|
413
457
|
function validateAuthStrategySecurityReferences(
|
|
414
458
|
strategy: ReturnType<AuthRuntime["getStrategy"]>,
|
|
415
459
|
security: SecurityDefinitionCatalog
|
package/src/runtime/index.ts
CHANGED
|
@@ -30,12 +30,15 @@ export { SixbHost } from "./host"
|
|
|
30
30
|
export type { Sixb } from "./sixb"
|
|
31
31
|
export type {
|
|
32
32
|
BatchItemResult,
|
|
33
|
+
FileListPropertyToken,
|
|
34
|
+
FilePropertyToken,
|
|
33
35
|
ListResult,
|
|
34
36
|
ListResultWithoutTotal,
|
|
35
37
|
ObjectByIdHandle,
|
|
36
38
|
ObjectExpandBuilder,
|
|
37
39
|
ObjectExpandOptions,
|
|
38
40
|
ObjectExpansionSort,
|
|
41
|
+
ObjectFileHandle,
|
|
39
42
|
ObjectQueryBuilder,
|
|
40
43
|
ObjectQueryFacetBucket,
|
|
41
44
|
ObjectQueryFacetInput,
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Language assumed when a project sets none. */
|
|
2
|
+
export const DEFAULT_PROJECT_LOCALE = "en"
|
|
3
|
+
|
|
4
|
+
/** Time zone assumed when a project sets none; cron schedules have always used it. */
|
|
5
|
+
export const DEFAULT_PROJECT_TIME_ZONE = "UTC"
|
|
6
|
+
|
|
7
|
+
/** The canonical form of a BCP 47 language tag (`fr-fr` → `fr-FR`), or `undefined` if invalid. */
|
|
8
|
+
export function canonicalLocale(value: unknown): string | undefined {
|
|
9
|
+
if (typeof value !== "string") return undefined
|
|
10
|
+
try {
|
|
11
|
+
const [locale] = Intl.getCanonicalLocales(value)
|
|
12
|
+
return locale
|
|
13
|
+
} catch {
|
|
14
|
+
return undefined
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** The canonical IANA name of a time zone (`europe/paris` → `Europe/Paris`), or `undefined`. */
|
|
19
|
+
export function canonicalTimeZone(value: unknown): string | undefined {
|
|
20
|
+
if (typeof value !== "string" || value.trim() !== value || value === "") return undefined
|
|
21
|
+
try {
|
|
22
|
+
return new Intl.DateTimeFormat("en-US", { timeZone: value }).resolvedOptions().timeZone
|
|
23
|
+
} catch {
|
|
24
|
+
return undefined
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ActionRegistry } from "../actions"
|
|
2
2
|
import type { ActionDefinition } from "../actions/types"
|
|
3
|
-
import type { AgentToolDefinition } from "../agents"
|
|
3
|
+
import type { AgentDefinitionsInput, AgentToolDefinition } from "../agents"
|
|
4
4
|
import { assertNoAgentDefinitions } from "../agents/retired-config"
|
|
5
|
+
import { createAgentSkillCatalog } from "../agents/skills"
|
|
5
6
|
import { createAgentToolCatalog } from "../agents/tool-catalog"
|
|
6
7
|
import type { ConnectorDefinition } from "../connectors"
|
|
7
8
|
import type { DatasetDefinition } from "../datasets/types"
|
|
@@ -9,6 +10,7 @@ import { assertDatasetDefinition } from "../datasets/validation"
|
|
|
9
10
|
import { createModelCatalog, type ModelCatalogInput } from "../models"
|
|
10
11
|
import { sameEmbeddingModel } from "../models/embedding-model"
|
|
11
12
|
import { OntologyRegistry } from "../ontology"
|
|
13
|
+
import { createOntologyDocsCatalog } from "../ontology/docs"
|
|
12
14
|
import type { PipelineDefinition } from "../pipelines/types"
|
|
13
15
|
import { ProjectionRegistry } from "../projections"
|
|
14
16
|
import type { ProjectionDefinition } from "../projections/types"
|
|
@@ -16,10 +18,12 @@ import { type RuleDefinition, validateRulesAtStartup } from "../rules"
|
|
|
16
18
|
import { type ScheduleDefinition, validateSchedulesAtStartup } from "../schedules"
|
|
17
19
|
import {
|
|
18
20
|
type GroupDefinition,
|
|
21
|
+
type MarkingDefinition,
|
|
19
22
|
type MembershipPolicyDefinition,
|
|
20
23
|
type RoleDefinition,
|
|
21
24
|
SecurityRegistry,
|
|
22
25
|
} from "../security"
|
|
26
|
+
import { validateMarkingsAtStartup } from "../security/markings"
|
|
23
27
|
import { type ShareDefinition, validateSharesAtStartup } from "../shares"
|
|
24
28
|
import type { SyncDefinition } from "../syncs"
|
|
25
29
|
import {
|
|
@@ -44,8 +48,10 @@ interface DefinitionOptions {
|
|
|
44
48
|
readonly rules?: readonly RuleDefinition[]
|
|
45
49
|
readonly workflows?: readonly WorkflowDefinition[]
|
|
46
50
|
readonly tools?: readonly AgentToolDefinition[]
|
|
51
|
+
readonly agent?: AgentDefinitionsInput
|
|
47
52
|
readonly models?: ModelCatalogInput
|
|
48
53
|
readonly shares?: readonly ShareDefinition[]
|
|
54
|
+
readonly markings?: readonly MarkingDefinition[]
|
|
49
55
|
readonly groups?: readonly GroupDefinition[]
|
|
50
56
|
readonly roles?: readonly RoleDefinition[]
|
|
51
57
|
readonly membershipPolicies?: readonly MembershipPolicyDefinition[]
|
|
@@ -89,6 +95,11 @@ export function resolveDefinitions(options: DefinitionOptions): ResolvedDefiniti
|
|
|
89
95
|
}
|
|
90
96
|
}
|
|
91
97
|
const tools = createAgentToolCatalog(options.tools)
|
|
98
|
+
const skills = createAgentSkillCatalog(options.agent?.skills)
|
|
99
|
+
const ontologyDocs = createOntologyDocsCatalog({
|
|
100
|
+
objectTypes: ontology.listObjectTypes(),
|
|
101
|
+
...(options.agent?.ontologyDocs === undefined ? {} : { docs: options.agent.ontologyDocs }),
|
|
102
|
+
})
|
|
92
103
|
const connectorsById = indexUniqueDefinitions("connector", options.connectors ?? [])
|
|
93
104
|
|
|
94
105
|
// Datasets resolve first because syncs, pipelines, projections, and security depend on them.
|
|
@@ -152,10 +163,12 @@ export function resolveDefinitions(options: DefinitionOptions): ResolvedDefiniti
|
|
|
152
163
|
registeredActionIds,
|
|
153
164
|
...(models === undefined ? {} : { models }),
|
|
154
165
|
tools,
|
|
166
|
+
skills,
|
|
155
167
|
})
|
|
156
168
|
const workflowsById = indexUniqueDefinitions("workflow", workflows)
|
|
157
169
|
|
|
158
170
|
const security = new SecurityRegistry({
|
|
171
|
+
markings: options.markings ?? [],
|
|
159
172
|
groups: options.groups ?? [],
|
|
160
173
|
roles: options.roles ?? [],
|
|
161
174
|
membershipPolicies: options.membershipPolicies ?? [],
|
|
@@ -181,11 +194,25 @@ export function resolveDefinitions(options: DefinitionOptions): ResolvedDefiniti
|
|
|
181
194
|
syncs,
|
|
182
195
|
telemetryProjections: projectionRegistry.listTelemetry(),
|
|
183
196
|
})
|
|
197
|
+
validateMarkingsAtStartup({
|
|
198
|
+
markingIds: new Set(security.listMarkings().map((marking) => marking.id)),
|
|
199
|
+
ontology,
|
|
200
|
+
datasetsById,
|
|
201
|
+
pipelines,
|
|
202
|
+
projections: projectionRegistry,
|
|
203
|
+
})
|
|
184
204
|
|
|
185
205
|
return Object.freeze({
|
|
186
206
|
ontology,
|
|
187
207
|
actions: actionRegistry,
|
|
188
208
|
tools,
|
|
209
|
+
agent: Object.freeze({
|
|
210
|
+
skills,
|
|
211
|
+
...(options.agent?.instructions === undefined
|
|
212
|
+
? {}
|
|
213
|
+
: { instructions: options.agent.instructions }),
|
|
214
|
+
ontologyDocs,
|
|
215
|
+
}),
|
|
189
216
|
connectors: createDefinitionCatalog(connectorsById),
|
|
190
217
|
datasets: createDefinitionCatalog(datasetsById),
|
|
191
218
|
...(models === undefined ? {} : { models }),
|
package/src/runtime/sixb.ts
CHANGED
|
@@ -110,7 +110,7 @@ function createExecutionFacades<TParams extends Record<string, unknown>>(
|
|
|
110
110
|
dependencies: SixbDependencies
|
|
111
111
|
): Omit<Sixb<TParams>, "execution"> {
|
|
112
112
|
return {
|
|
113
|
-
objects: createObjectsRuntime(runtime, execution),
|
|
113
|
+
objects: createObjectsRuntime(runtime, execution, dependencies.blobStorage),
|
|
114
114
|
actions: createActionsRuntime(runtime, execution),
|
|
115
115
|
datasets: createDatasetsRuntime(
|
|
116
116
|
runtime,
|
package/src/runtime/types.ts
CHANGED
|
@@ -12,6 +12,7 @@ import type {
|
|
|
12
12
|
RequestActionResult,
|
|
13
13
|
} from "../actions"
|
|
14
14
|
import type { AuthorizationContext } from "../authorization"
|
|
15
|
+
import type { OpenedFileRef } from "../blob-storage"
|
|
15
16
|
import type { Broker } from "../broker"
|
|
16
17
|
import type { DomainEventLog } from "../events"
|
|
17
18
|
import type { RuntimeAuthorization } from "../execution"
|
|
@@ -43,11 +44,12 @@ import type { OntologyDocumentInput, OntologyRegistry, OntologySource } from "..
|
|
|
43
44
|
import type {
|
|
44
45
|
LinkToken,
|
|
45
46
|
ObjectTypeProperties,
|
|
47
|
+
ObjectTypeReadProperties,
|
|
46
48
|
ObjectTypeWithPropertyTokens,
|
|
47
49
|
PropertyToken,
|
|
48
50
|
} from "../ontology/tokens"
|
|
49
51
|
import type { Queues } from "../queues"
|
|
50
|
-
import type { ActionRunRecord, ObjectLinkRow, Storage } from "../storage"
|
|
52
|
+
import type { ActionRunRecord, ObjectLinkRow, Redactions, Storage } from "../storage"
|
|
51
53
|
// ── Shared runtime context ──────────────────────────────────
|
|
52
54
|
|
|
53
55
|
/**
|
|
@@ -100,7 +102,7 @@ export type { OntologyDocumentInput, OntologySource }
|
|
|
100
102
|
// ── Rows ────────────────────────────────────────────────────
|
|
101
103
|
//
|
|
102
104
|
// Rows read `properties` from the type inferred where the object type is defined
|
|
103
|
-
// (`
|
|
105
|
+
// (`ObjectTypeReadProperties`), never from the schema, so relating two rows — or anything returning
|
|
104
106
|
// them — costs no schema inference. Rows and query builders also declare their variance, so
|
|
105
107
|
// TypeScript never measures it: a measurement that overflows (TS2589) caches the variance it gave
|
|
106
108
|
// up on, under which a plain query once passed for an expanded one.
|
|
@@ -109,7 +111,10 @@ export type { OntologyDocumentInput, OntologySource }
|
|
|
109
111
|
export type TwinObject<out TObjectType extends ObjectTypeWithPropertyTokens> = {
|
|
110
112
|
primaryId: string
|
|
111
113
|
objectTypeId: TObjectType["id"]
|
|
112
|
-
|
|
114
|
+
/** A marked property is absent when the reader lacks its clearance; see `redactions`. */
|
|
115
|
+
properties: ObjectTypeReadProperties<TObjectType>
|
|
116
|
+
/** Properties omitted because the reader lacks a clearance, keyed by property id. */
|
|
117
|
+
redactions?: Redactions
|
|
113
118
|
createdAt: Date
|
|
114
119
|
updatedAt: Date
|
|
115
120
|
}
|
|
@@ -313,6 +318,32 @@ export type ObjectWhereBuilder<TObjectType extends ObjectTypeWithPropertyTokens>
|
|
|
313
318
|
export type TelemetryPropertyToken<TObjectType extends ObjectTypeWithPropertyTokens> =
|
|
314
319
|
TObjectType["p"][InferTelemetryPropertyIds<TObjectType>]
|
|
315
320
|
|
|
321
|
+
type FilePropertyId<TObjectType extends ObjectTypeWithPropertyTokens, TSchema> = Extract<
|
|
322
|
+
TObjectType["properties"][number],
|
|
323
|
+
{ readonly schema: TSchema }
|
|
324
|
+
>["id"]
|
|
325
|
+
|
|
326
|
+
/** A property token holding one file: its schema is `"fileRef"`. */
|
|
327
|
+
export type FilePropertyToken<TObjectType extends ObjectTypeWithPropertyTokens> =
|
|
328
|
+
TObjectType["p"][FilePropertyId<TObjectType, "fileRef">]
|
|
329
|
+
|
|
330
|
+
/** A property token holding a list of files: an array of `"fileRef"`. */
|
|
331
|
+
export type FileListPropertyToken<TObjectType extends ObjectTypeWithPropertyTokens> =
|
|
332
|
+
TObjectType["p"][FilePropertyId<
|
|
333
|
+
TObjectType,
|
|
334
|
+
{ readonly type: "array"; readonly items: "fileRef" }
|
|
335
|
+
>]
|
|
336
|
+
|
|
337
|
+
/** One file property value of one object, read through that object. */
|
|
338
|
+
export interface ObjectFileHandle {
|
|
339
|
+
/**
|
|
340
|
+
* Re-read the object with the caller's permissions and open the file it references. Returns
|
|
341
|
+
* null when the object, the value or its stored blob is absent; throws `AuthorizationError`
|
|
342
|
+
* when the caller cannot view the object type or is not cleared for the property's markings.
|
|
343
|
+
*/
|
|
344
|
+
open(): Promise<OpenedFileRef | null>
|
|
345
|
+
}
|
|
346
|
+
|
|
316
347
|
type AnyPropertyToken = PropertyToken<string, string, Property>
|
|
317
348
|
|
|
318
349
|
type ObjectSetPropertyId<TObjectType extends ObjectTypeWithPropertyTokens> =
|
|
@@ -773,6 +804,11 @@ export interface ObjectReadByIdHandle<out TObjectType extends ObjectTypeWithProp
|
|
|
773
804
|
|
|
774
805
|
/** List links from this object, optionally filtered by link token. */
|
|
775
806
|
listLinks(link?: LinkTokenForObjectType<TObjectType>): Promise<readonly ObjectLinkRow[]>
|
|
807
|
+
|
|
808
|
+
/** Read a `fileRef` property of this object. */
|
|
809
|
+
file(property: FilePropertyToken<TObjectType>): ObjectFileHandle
|
|
810
|
+
/** Read one file of a property holding a list of files. */
|
|
811
|
+
file(property: FileListPropertyToken<TObjectType>, index: number): ObjectFileHandle
|
|
776
812
|
}
|
|
777
813
|
|
|
778
814
|
/**
|
package/src/scheduler/runtime.ts
CHANGED
|
@@ -18,6 +18,8 @@ const MAX_TIMER_DELAY_MS = 2_147_483_647
|
|
|
18
18
|
export interface SchedulerRuntimeOptions {
|
|
19
19
|
schedules: readonly ScheduleDefinition[]
|
|
20
20
|
events: DomainEventLog
|
|
21
|
+
/** Evaluates cron schedules that set no time zone of their own. Defaults to UTC. */
|
|
22
|
+
timeZone?: string
|
|
21
23
|
now?: () => Date
|
|
22
24
|
}
|
|
23
25
|
|
|
@@ -30,6 +32,7 @@ export interface SchedulerController {
|
|
|
30
32
|
export class SchedulerRuntime implements SchedulerController {
|
|
31
33
|
private readonly schedules: readonly CronScheduleDefinition[]
|
|
32
34
|
private readonly events: DomainEventLog
|
|
35
|
+
private readonly timeZone: string | undefined
|
|
33
36
|
private readonly now: () => Date
|
|
34
37
|
private started = false
|
|
35
38
|
private timer: ReturnType<typeof setTimeout> | null = null
|
|
@@ -39,6 +42,8 @@ export class SchedulerRuntime implements SchedulerController {
|
|
|
39
42
|
constructor(options: SchedulerRuntimeOptions) {
|
|
40
43
|
this.schedules = options.schedules.filter(isCronSchedule)
|
|
41
44
|
this.events = options.events
|
|
45
|
+
// `undefined` keeps the arithmetic UTC path; an explicit "UTC" would go through Intl.
|
|
46
|
+
this.timeZone = options.timeZone === "UTC" ? undefined : options.timeZone
|
|
42
47
|
this.now = options.now ?? (() => new Date())
|
|
43
48
|
}
|
|
44
49
|
|
|
@@ -60,7 +65,11 @@ export class SchedulerRuntime implements SchedulerController {
|
|
|
60
65
|
// agree, or one unschedulable expression stops every other schedule in the project and
|
|
61
66
|
// crash-loops the scheduler role.
|
|
62
67
|
try {
|
|
63
|
-
const next = nextCronOccurrence(
|
|
68
|
+
const next = nextCronOccurrence(
|
|
69
|
+
schedule.trigger.expression,
|
|
70
|
+
now,
|
|
71
|
+
schedule.trigger.timezone ?? this.timeZone
|
|
72
|
+
)
|
|
64
73
|
this.nextOccurrences.set(schedule.id, next)
|
|
65
74
|
} catch (error) {
|
|
66
75
|
console.error(
|
|
@@ -178,7 +187,7 @@ export class SchedulerRuntime implements SchedulerController {
|
|
|
178
187
|
const next = nextCronOccurrence(
|
|
179
188
|
schedule.trigger.expression,
|
|
180
189
|
occurrenceAt,
|
|
181
|
-
schedule.trigger.timezone
|
|
190
|
+
schedule.trigger.timezone ?? this.timeZone
|
|
182
191
|
)
|
|
183
192
|
this.nextOccurrences.set(schedule.id, next)
|
|
184
193
|
} catch (error) {
|
package/src/security/builders.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { SecurityValidationError } from "./errors"
|
|
|
2
2
|
import type {
|
|
3
3
|
GrantDefinition,
|
|
4
4
|
GroupDefinition,
|
|
5
|
+
MarkingDefinition,
|
|
5
6
|
MembershipOperation,
|
|
6
7
|
MembershipPolicyDefinition,
|
|
7
8
|
RoleDefinition,
|
|
@@ -18,11 +19,18 @@ export interface DefineGroupOptions {
|
|
|
18
19
|
readonly description?: string
|
|
19
20
|
}
|
|
20
21
|
|
|
22
|
+
export interface DefineMarkingOptions {
|
|
23
|
+
readonly label?: string
|
|
24
|
+
readonly description?: string
|
|
25
|
+
}
|
|
26
|
+
|
|
21
27
|
export interface DefineRoleOptions {
|
|
22
28
|
readonly label?: string
|
|
23
29
|
readonly description?: string
|
|
24
30
|
readonly grantedTo: readonly GroupDefinition[]
|
|
25
|
-
readonly grants
|
|
31
|
+
readonly grants?: readonly GrantDefinition[]
|
|
32
|
+
/** Markings this role's members may read. */
|
|
33
|
+
readonly clearances?: readonly MarkingDefinition[]
|
|
26
34
|
}
|
|
27
35
|
|
|
28
36
|
export interface DefineMembershipPolicyOptions {
|
|
@@ -81,6 +89,37 @@ export function defineGroup<const TId extends string>(
|
|
|
81
89
|
}
|
|
82
90
|
}
|
|
83
91
|
|
|
92
|
+
/** Read the ids of marking definitions, rejecting anything else such as a bare id. */
|
|
93
|
+
export function markingIdsFrom(
|
|
94
|
+
markings: readonly MarkingDefinition[],
|
|
95
|
+
field: string
|
|
96
|
+
): readonly string[] {
|
|
97
|
+
return markings.map((marking) => {
|
|
98
|
+
if (!isRecord(marking) || marking.kind !== "marking") {
|
|
99
|
+
throw new SecurityValidationError(`[Sixb] ${field} must contain only marking definitions.`)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
assertNonEmptyString(marking.id, `${field} marking id`)
|
|
103
|
+
return marking.id
|
|
104
|
+
})
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export function defineMarking<const TId extends string>(
|
|
108
|
+
id: TId,
|
|
109
|
+
options: DefineMarkingOptions = {}
|
|
110
|
+
): MarkingDefinition<TId> {
|
|
111
|
+
assertNonEmptyString(id, "Marking id")
|
|
112
|
+
assertOptionalString(options.label, `Marking '${id}' label`)
|
|
113
|
+
assertOptionalString(options.description, `Marking '${id}' description`)
|
|
114
|
+
|
|
115
|
+
return {
|
|
116
|
+
kind: "marking",
|
|
117
|
+
id,
|
|
118
|
+
...(options.label !== undefined ? { label: options.label } : {}),
|
|
119
|
+
...(options.description !== undefined ? { description: options.description } : {}),
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
84
123
|
export function defineRole<const TId extends string>(
|
|
85
124
|
id: TId,
|
|
86
125
|
options: DefineRoleOptions
|
|
@@ -91,13 +130,17 @@ export function defineRole<const TId extends string>(
|
|
|
91
130
|
assertNonEmptyArray(options.grantedTo, `Role '${id}' grantedTo`)
|
|
92
131
|
|
|
93
132
|
const grantedToGroupIds = groupIdsFrom(options.grantedTo, `Role '${id}' grantedTo`)
|
|
133
|
+
const grants = options.grants ?? []
|
|
134
|
+
const clearances = markingIdsFrom(options.clearances ?? [], `Role '${id}' clearances`)
|
|
94
135
|
|
|
95
|
-
for (const grant of
|
|
136
|
+
for (const grant of grants) {
|
|
96
137
|
assertGrantDefinition(grant, `Role '${id}' grants`)
|
|
97
138
|
}
|
|
98
139
|
|
|
99
|
-
if (
|
|
100
|
-
throw new SecurityValidationError(
|
|
140
|
+
if (grants.length === 0 && clearances.length === 0) {
|
|
141
|
+
throw new SecurityValidationError(
|
|
142
|
+
`[Sixb] Role '${id}' must declare at least one grant or clearance.`
|
|
143
|
+
)
|
|
101
144
|
}
|
|
102
145
|
|
|
103
146
|
return {
|
|
@@ -106,7 +149,8 @@ export function defineRole<const TId extends string>(
|
|
|
106
149
|
...(options.label !== undefined ? { label: options.label } : {}),
|
|
107
150
|
...(options.description !== undefined ? { description: options.description } : {}),
|
|
108
151
|
grantedToGroupIds,
|
|
109
|
-
grants
|
|
152
|
+
grants,
|
|
153
|
+
...(clearances.length > 0 ? { clearances } : {}),
|
|
110
154
|
}
|
|
111
155
|
}
|
|
112
156
|
|