@sixb/core 0.1.5 → 0.1.7
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 +37 -33
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/types/definitions.d.ts +8 -2
- package/dist/actions/types/definitions.d.ts.map +1 -1
- package/dist/actions/worker.js +3 -3
- package/dist/agents/adapters.d.ts +33 -76
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/authority.d.ts +22 -6
- package/dist/agents/authority.d.ts.map +1 -1
- package/dist/agents/builders.d.ts +3 -11
- package/dist/agents/builders.d.ts.map +1 -1
- package/dist/agents/context.js +2 -2
- package/dist/agents/dispatch.d.ts +9 -1
- package/dist/agents/dispatch.d.ts.map +1 -1
- package/dist/agents/errors.d.ts +2 -2
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/execution.d.ts +9 -10
- package/dist/agents/execution.d.ts.map +1 -1
- package/dist/agents/ids.d.ts +4 -0
- package/dist/agents/ids.d.ts.map +1 -1
- package/dist/agents/index.d.ts +13 -9
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +80 -68
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/message.d.ts +17 -10
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/model-loop.d.ts +56 -0
- package/dist/agents/model-loop.d.ts.map +1 -0
- package/dist/agents/reference.d.ts +4 -0
- package/dist/agents/reference.d.ts.map +1 -0
- package/dist/agents/request.d.ts +10 -8
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/retired-config.d.ts +4 -0
- package/dist/agents/retired-config.d.ts.map +1 -0
- package/dist/agents/streams.d.ts +13 -8
- package/dist/agents/streams.d.ts.map +1 -1
- package/dist/agents/streams.js +7 -5
- package/dist/agents/streams.js.map +1 -1
- package/dist/agents/tool-catalog.d.ts +9 -0
- package/dist/agents/tool-catalog.d.ts.map +1 -0
- package/dist/agents/tool-definition.d.ts +1 -0
- package/dist/agents/tool-definition.d.ts.map +1 -1
- package/dist/agents/types.d.ts +31 -68
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/validation.d.ts +4 -10
- package/dist/agents/validation.d.ts.map +1 -1
- package/dist/ai-usage/execution.d.ts +53 -0
- package/dist/ai-usage/execution.d.ts.map +1 -0
- package/dist/ai-usage/index.d.ts +3 -0
- package/dist/ai-usage/index.d.ts.map +1 -0
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +7 -7
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/auth/strategy.d.ts +1 -1
- package/dist/auth/strategy.d.ts.map +1 -1
- package/dist/auth/types.d.ts +13 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/authorization/decision.d.ts +5 -2
- package/dist/authorization/decision.d.ts.map +1 -1
- package/dist/authorization/grant-kinds.d.ts +24 -8
- package/dist/authorization/grant-kinds.d.ts.map +1 -1
- package/dist/authorization/index.d.ts +1 -1
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +8 -6
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/resolve.d.ts +3 -3
- package/dist/authorization/resolve.d.ts.map +1 -1
- package/dist/authorization/types.d.ts +7 -5
- package/dist/authorization/types.d.ts.map +1 -1
- package/dist/blob-storage/browser.js +2 -2
- package/dist/blob-storage/index.js +3 -3
- package/dist/bootstrap/discovery.d.ts +1 -7
- package/dist/bootstrap/discovery.d.ts.map +1 -1
- package/dist/bootstrap/index.js +52 -48
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/broker/index.js +2 -2
- package/dist/{chunk-zqysyfjt.js → chunk-08m3b6w8.js} +1 -1
- package/dist/{chunk-xdf9yswn.js → chunk-08twe8m6.js} +93 -8
- package/dist/chunk-08twe8m6.js.map +12 -0
- package/dist/{chunk-xkthy56g.js → chunk-1kamz6j0.js} +1 -1
- package/dist/{chunk-h6h91mfy.js → chunk-2b5qtban.js} +12 -12
- package/dist/{chunk-h6h91mfy.js.map → chunk-2b5qtban.js.map} +3 -3
- package/dist/{chunk-0172wgm9.js → chunk-2xns679x.js} +10 -2
- package/dist/{chunk-0172wgm9.js.map → chunk-2xns679x.js.map} +3 -3
- package/dist/{chunk-f83ka50g.js → chunk-37wk412q.js} +86 -28
- package/dist/{chunk-f83ka50g.js.map → chunk-37wk412q.js.map} +8 -8
- package/dist/{chunk-6d5xdj1q.js → chunk-3fqt22c4.js} +4 -4
- package/dist/{chunk-t9xghkva.js → chunk-3kv70xwp.js} +3 -2
- package/dist/{chunk-t9xghkva.js.map → chunk-3kv70xwp.js.map} +3 -3
- package/dist/{chunk-z3zp0bj1.js → chunk-407j3msh.js} +1 -1
- package/dist/{chunk-rhrbz7d4.js → chunk-4a849fr1.js} +1 -1
- package/dist/{chunk-62c7t4jc.js → chunk-4nxeacx7.js} +1 -1
- package/dist/{chunk-cy0n5dms.js → chunk-5jcdmjam.js} +1 -1
- package/dist/{chunk-819wnjz8.js → chunk-64sr682n.js} +7 -7
- package/dist/{chunk-v0egge8b.js → chunk-6ed5bwnd.js} +666 -81
- package/dist/chunk-6ed5bwnd.js.map +57 -0
- package/dist/{chunk-x2yw73hy.js → chunk-7ds9620f.js} +1 -1
- package/dist/{chunk-dm72y8wt.js → chunk-7y0f6rf1.js} +29 -16
- package/dist/chunk-7y0f6rf1.js.map +10 -0
- package/dist/{chunk-72q2y8hn.js → chunk-8tsf6dmc.js} +2 -2
- package/dist/{chunk-72q2y8hn.js.map → chunk-8tsf6dmc.js.map} +3 -3
- package/dist/{chunk-tbv03sx2.js → chunk-9aehf39w.js} +7 -7
- package/dist/{chunk-ezake7g1.js → chunk-agsvg9ar.js} +1 -1
- package/dist/{chunk-rdeagz6b.js → chunk-atmkaf60.js} +1 -1
- package/dist/{chunk-rdeagz6b.js.map → chunk-atmkaf60.js.map} +2 -2
- package/dist/chunk-c15dr03f.js +43 -0
- package/dist/chunk-c15dr03f.js.map +10 -0
- package/dist/{chunk-78c6xvyr.js → chunk-d2ndstdf.js} +8 -6
- package/dist/{chunk-78c6xvyr.js.map → chunk-d2ndstdf.js.map} +2 -2
- package/dist/{chunk-rnshztfq.js → chunk-d63tybny.js} +2 -2
- package/dist/{chunk-t0jjkep3.js → chunk-d8qkxt2v.js} +4 -2
- package/dist/chunk-d8qkxt2v.js.map +10 -0
- package/dist/{chunk-vybf6pkp.js → chunk-dbc80ad7.js} +1 -1
- package/dist/{chunk-4gz41why.js → chunk-dqn23610.js} +1 -1
- package/dist/{chunk-z3ga9q5m.js → chunk-e4rvtvpw.js} +13 -11
- package/dist/{chunk-z3ga9q5m.js.map → chunk-e4rvtvpw.js.map} +2 -2
- package/dist/{chunk-h9kxd41f.js → chunk-gbrpsx4m.js} +19 -6
- package/dist/chunk-gbrpsx4m.js.map +11 -0
- package/dist/{chunk-84h6qhmp.js → chunk-h0knpbz5.js} +468 -1236
- package/dist/chunk-h0knpbz5.js.map +38 -0
- package/dist/{chunk-zp2v2rv6.js → chunk-ha58tjtt.js} +6 -6
- package/dist/{chunk-f6erf2vv.js → chunk-hdz94br2.js} +2 -2
- package/dist/chunk-jecn6t54.js +307 -0
- package/dist/chunk-jecn6t54.js.map +12 -0
- package/dist/{chunk-dsrkgtnh.js → chunk-jq43kdvk.js} +1 -1
- package/dist/{chunk-wtmzkcht.js → chunk-k34z5rvh.js} +1 -1
- package/dist/{chunk-htq0qh7z.js → chunk-ka3a2ft3.js} +2 -2
- package/dist/{chunk-4h947jd8.js → chunk-kt81c11h.js} +2 -2
- package/dist/chunk-n2arzn6e.js +1745 -0
- package/dist/chunk-n2arzn6e.js.map +20 -0
- package/dist/{chunk-f2rt4vkh.js → chunk-n2w475r0.js} +3 -3
- package/dist/{chunk-t8t39h7v.js → chunk-n6jxh8sw.js} +10 -2
- package/dist/chunk-n6jxh8sw.js.map +10 -0
- package/dist/{chunk-drjqm1aa.js → chunk-p03r0h5s.js} +310 -28
- package/dist/chunk-p03r0h5s.js.map +16 -0
- package/dist/chunk-p2vqaxkc.js +528 -0
- package/dist/chunk-p2vqaxkc.js.map +15 -0
- package/dist/{chunk-gadsm794.js → chunk-qjycjdj6.js} +84 -11
- package/dist/chunk-qjycjdj6.js.map +12 -0
- package/dist/chunk-qjzp9xyb.js +286 -0
- package/dist/chunk-qjzp9xyb.js.map +12 -0
- package/dist/{chunk-am6eczah.js → chunk-qv38twt8.js} +50 -69
- package/dist/{chunk-am6eczah.js.map → chunk-qv38twt8.js.map} +8 -8
- package/dist/{chunk-bhxaq2nn.js → chunk-qw9gvjv5.js} +1 -1
- package/dist/{chunk-r0rry8dn.js → chunk-rp1mvzb4.js} +6 -6
- package/dist/{chunk-tkdscva6.js → chunk-rre42skh.js} +187 -18
- package/dist/chunk-rre42skh.js.map +39 -0
- package/dist/{chunk-ghteq96b.js → chunk-s5y30bc9.js} +2 -2
- package/dist/{chunk-a31h57d5.js → chunk-tn7xcs2n.js} +2 -2
- package/dist/{chunk-6gjqgd3d.js → chunk-tpnd31c1.js} +2 -1
- package/dist/chunk-tpnd31c1.js.map +11 -0
- package/dist/chunk-trxxmgnf.js +68 -0
- package/dist/chunk-trxxmgnf.js.map +11 -0
- package/dist/{chunk-ea73pzk7.js → chunk-vjjv9mrb.js} +2 -2
- package/dist/{chunk-8b55ygje.js → chunk-w3e09qqk.js} +1 -1
- package/dist/{chunk-ckxfnx7f.js → chunk-wjgm6jjt.js} +2 -2
- package/dist/{chunk-3j7573mj.js → chunk-x0qhkqje.js} +2 -2
- package/dist/{chunk-dysw7nsm.js → chunk-xdpwpkha.js} +2 -2
- package/dist/{chunk-1q02e95s.js → chunk-y35ma3mj.js} +11 -16
- package/dist/{chunk-1q02e95s.js.map → chunk-y35ma3mj.js.map} +3 -4
- package/dist/{chunk-qewtks41.js → chunk-z2sery1b.js} +64 -1
- package/dist/{chunk-qewtks41.js.map → chunk-z2sery1b.js.map} +3 -3
- package/dist/error-reporting/internal.js +4 -4
- package/dist/error-reporting/types.d.ts +7 -2
- package/dist/error-reporting/types.d.ts.map +1 -1
- package/dist/errors/catalog.d.ts +8 -0
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/internal.js +2 -2
- package/dist/events/index.js +4 -4
- package/dist/execution/agent.d.ts +18 -9
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +52 -43
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorization.d.ts +14 -4
- package/dist/execution/authorization.d.ts.map +1 -1
- package/dist/execution/primitive.js +45 -43
- package/dist/execution/primitive.js.map +2 -2
- package/dist/execution/request.d.ts +3 -1
- package/dist/execution/request.d.ts.map +1 -1
- package/dist/execution/request.js +46 -44
- package/dist/execution/request.js.map +3 -3
- package/dist/execution/types.d.ts +1 -1
- package/dist/execution/types.d.ts.map +1 -1
- package/dist/http/api-routes.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/index.d.ts +9 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +82 -77
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts +2 -0
- package/dist/json.d.ts.map +1 -1
- package/dist/lake-storage/index.js +5 -5
- package/dist/logging/index.js +3 -3
- package/dist/logging/types.js +2 -2
- package/dist/materialization/index.js +2 -2
- package/dist/materializer/index.js +33 -29
- package/dist/materializer/index.js.map +1 -1
- package/dist/models/catalog.d.ts +40 -0
- package/dist/models/catalog.d.ts.map +1 -0
- package/dist/models/definitions.d.ts +25 -0
- package/dist/models/definitions.d.ts.map +1 -0
- package/dist/models/errors.d.ts +52 -0
- package/dist/models/errors.d.ts.map +1 -0
- package/dist/models/events.d.ts +192 -0
- package/dist/models/events.d.ts.map +1 -0
- package/dist/models/index.d.ts +17 -39
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +50 -0
- package/dist/models/index.js.map +9 -0
- package/dist/models/language-model.d.ts +90 -0
- package/dist/models/language-model.d.ts.map +1 -0
- package/dist/models/messages.d.ts +74 -0
- package/dist/models/messages.d.ts.map +1 -0
- package/dist/models/pricing.d.ts +69 -0
- package/dist/models/pricing.d.ts.map +1 -0
- package/dist/models/rate-card.d.ts +24 -0
- package/dist/models/rate-card.d.ts.map +1 -0
- package/dist/models/tools.d.ts +24 -0
- package/dist/models/tools.d.ts.map +1 -0
- package/dist/objects/index.js +38 -34
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/query/index.js +32 -28
- package/dist/objects/query/index.js.map +1 -1
- package/dist/ontology/index.js +5 -5
- package/dist/ontology/internal.js +4 -4
- package/dist/pipelines/index.js +37 -35
- package/dist/pipelines/index.js.map +1 -1
- package/dist/projections/internal.js +35 -31
- package/dist/projections/internal.js.map +1 -1
- package/dist/queues/in-memory.d.ts +3 -2
- package/dist/queues/in-memory.d.ts.map +1 -1
- package/dist/queues/index.d.ts +3 -1
- package/dist/queues/index.d.ts.map +1 -1
- package/dist/queues/index.js +1 -1
- package/dist/queues/types.d.ts +15 -3
- package/dist/queues/types.d.ts.map +1 -1
- package/dist/runtime/create.d.ts +4 -4
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/definitions.d.ts +2 -2
- package/dist/runtime/definitions.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +3 -2
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/resolve-definitions.d.ts +2 -2
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/sixb.d.ts +4 -2
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/security/every.d.ts +1 -4
- package/dist/security/every.d.ts.map +1 -1
- package/dist/security/grants.d.ts +6 -5
- package/dist/security/grants.d.ts.map +1 -1
- package/dist/security/index.d.ts +1 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/registry.d.ts +1 -1
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +13 -5
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts +4 -2
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/storage/action-runs/failure.js +3 -3
- package/dist/storage/action-runs/provider.js +2 -2
- package/dist/storage/agents/errors.d.ts +1 -1
- package/dist/storage/agents/errors.d.ts.map +1 -1
- package/dist/storage/agents/in-memory.d.ts +3 -2
- package/dist/storage/agents/in-memory.d.ts.map +1 -1
- package/dist/storage/agents/index.d.ts +1 -1
- package/dist/storage/agents/index.d.ts.map +1 -1
- package/dist/storage/agents/provider.d.ts +11 -4
- package/dist/storage/agents/provider.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +18 -15
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +65 -17
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/analytics.d.ts +2 -1
- package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
- package/dist/storage/ai-cost/codec.d.ts +3 -2
- package/dist/storage/ai-cost/codec.d.ts.map +1 -1
- package/dist/storage/ai-cost/groups.d.ts +51 -0
- package/dist/storage/ai-cost/groups.d.ts.map +1 -0
- package/dist/storage/ai-cost/in-memory.d.ts +11 -1
- package/dist/storage/ai-cost/in-memory.d.ts.map +1 -1
- package/dist/storage/ai-cost/index.d.ts +1 -1
- package/dist/storage/ai-cost/index.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.d.ts +2 -0
- package/dist/storage/ai-cost/provider.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.js +29 -13
- package/dist/storage/ai-cost/provider.js.map +3 -3
- package/dist/storage/ai-cost/types.d.ts +64 -15
- package/dist/storage/ai-cost/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/validation.d.ts +2 -1
- package/dist/storage/ai-cost/validation.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.d.ts +14 -0
- package/dist/storage/ai-limits/enforcement.d.ts.map +1 -0
- package/dist/storage/ai-limits/enforcement.js +21 -0
- package/dist/storage/ai-limits/enforcement.js.map +9 -0
- package/dist/storage/ai-limits/errors.d.ts +8 -0
- package/dist/storage/ai-limits/errors.d.ts.map +1 -0
- package/dist/storage/ai-limits/in-memory.d.ts +78 -0
- package/dist/storage/ai-limits/in-memory.d.ts.map +1 -0
- package/dist/storage/ai-limits/index.d.ts +7 -0
- package/dist/storage/ai-limits/index.d.ts.map +1 -0
- package/dist/storage/ai-limits/period.d.ts +4 -0
- package/dist/storage/ai-limits/period.d.ts.map +1 -0
- package/dist/storage/ai-limits/provider.d.ts +85 -0
- package/dist/storage/ai-limits/provider.d.ts.map +1 -0
- package/dist/storage/ai-limits/provider.js +62 -0
- package/dist/storage/ai-limits/provider.js.map +9 -0
- package/dist/storage/ai-limits/types.d.ts +175 -0
- package/dist/storage/ai-limits/types.d.ts.map +1 -0
- package/dist/storage/ai-usage/in-memory.d.ts +4 -0
- package/dist/storage/ai-usage/in-memory.d.ts.map +1 -1
- package/dist/storage/ai-usage/record.d.ts.map +1 -1
- package/dist/storage/ai-usage/types.d.ts +6 -2
- package/dist/storage/ai-usage/types.d.ts.map +1 -1
- package/dist/storage/auth/errors.d.ts +1 -1
- package/dist/storage/auth/errors.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/auth-storage.d.ts +4 -1
- package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/device-authorizations.d.ts +29 -0
- package/dist/storage/auth/in-memory/device-authorizations.d.ts.map +1 -0
- package/dist/storage/auth/in-memory/shared.d.ts +3 -1
- package/dist/storage/auth/in-memory/shared.d.ts.map +1 -1
- package/dist/storage/auth/index.d.ts +2 -1
- package/dist/storage/auth/index.d.ts.map +1 -1
- package/dist/storage/auth/types.d.ts +66 -0
- package/dist/storage/auth/types.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +2 -2
- package/dist/storage/executions/provider.js +1 -1
- package/dist/storage/executions/run-link.d.ts +7 -2
- package/dist/storage/executions/run-link.d.ts.map +1 -1
- package/dist/storage/executions/validation.d.ts.map +1 -1
- package/dist/storage/in-memory/index.d.ts +4 -0
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +8 -5
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +51 -38
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts +4 -3
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/index.d.ts +1 -1
- package/dist/storage/ontology/index.d.ts.map +1 -1
- package/dist/storage/ontology/materializations.d.ts +7 -3
- package/dist/storage/ontology/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/provider.d.ts +2 -2
- package/dist/storage/ontology/provider.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +3 -3
- package/dist/storage/pipeline-runs/provider.js +2 -2
- package/dist/storage/projection-runs/provider.js +4 -4
- package/dist/storage/sync-runs/provider.js +2 -2
- package/dist/storage/types.d.ts +5 -1
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/webhook-runs/provider.js +2 -2
- package/dist/storage/workflow-runs/provider.d.ts +1 -1
- package/dist/storage/workflow-runs/provider.js +10 -11
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/storage/workflow-runs/types.d.ts +5 -4
- package/dist/storage/workflow-runs/types.d.ts.map +1 -1
- package/dist/syncs/index.js +37 -35
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/agent-execution.d.ts +3 -1
- package/dist/testing/agent-execution.d.ts.map +1 -1
- package/dist/testing/agent-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-limit-storage-contract.d.ts +18 -0
- package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -0
- package/dist/testing/ai-model-call-groups-contract.d.ts +6 -0
- package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -0
- package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
- package/dist/testing/auth-storage-contract.d.ts.map +1 -1
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +3758 -1945
- package/dist/testing/index.js.map +15 -13
- package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
- package/dist/testing/queues-contract.d.ts.map +1 -1
- package/dist/webhooks/internal.js +32 -28
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +2 -2
- package/dist/workflows/agent-step-identity.d.ts +3 -0
- package/dist/workflows/agent-step-identity.d.ts.map +1 -0
- package/dist/workflows/builders.d.ts +2 -3
- package/dist/workflows/builders.d.ts.map +1 -1
- package/dist/workflows/execution.d.ts +1 -1
- package/dist/workflows/execution.d.ts.map +1 -1
- package/dist/workflows/failure.d.ts +1 -1
- package/dist/workflows/failure.d.ts.map +1 -1
- package/dist/workflows/index.d.ts +3 -2
- package/dist/workflows/index.d.ts.map +1 -1
- package/dist/workflows/index.js +53 -45
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/types.d.ts +26 -11
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/validation.d.ts +7 -1
- package/dist/workflows/validation.d.ts.map +1 -1
- package/package.json +19 -4
- package/src/actions/types/definitions.ts +24 -2
- package/src/agents/adapters.ts +109 -115
- package/src/agents/authority.ts +214 -32
- package/src/agents/builders.ts +3 -50
- package/src/agents/context-compaction.ts +4 -0
- package/src/agents/dispatch.ts +59 -2
- package/src/agents/errors.ts +5 -2
- package/src/agents/execution.ts +53 -52
- package/src/agents/ids.ts +16 -1
- package/src/agents/index.ts +23 -11
- package/src/agents/message.ts +18 -9
- package/src/agents/model-loop.ts +1023 -0
- package/src/agents/reference.ts +7 -0
- package/src/agents/request.ts +141 -74
- package/src/agents/retired-config.ts +20 -0
- package/src/agents/streams.ts +45 -19
- package/src/agents/tool-catalog.ts +21 -0
- package/src/agents/tool-definition.ts +23 -0
- package/src/agents/types.ts +39 -81
- package/src/agents/validation.ts +34 -180
- package/src/ai-usage/execution.ts +196 -0
- package/src/ai-usage/index.ts +15 -0
- package/src/auth/index.ts +1 -0
- package/src/auth/runtime.ts +8 -0
- package/src/auth/strategy.ts +1 -0
- package/src/auth/types.ts +14 -0
- package/src/authorization/decision.ts +27 -10
- package/src/authorization/grant-kinds.ts +62 -15
- package/src/authorization/index.ts +1 -0
- package/src/authorization/resolve.ts +12 -5
- package/src/authorization/types.ts +7 -5
- package/src/bootstrap/discovery.ts +0 -3
- package/src/error-reporting/types.ts +4 -2
- package/src/errors/catalog.ts +8 -0
- package/src/execution/agent.ts +129 -22
- package/src/execution/authorization.ts +48 -18
- package/src/execution/request.ts +4 -1
- package/src/execution/types.ts +1 -1
- package/src/http/api-routes.ts +63 -0
- package/src/index.ts +36 -7
- package/src/json.ts +9 -0
- package/src/models/catalog.ts +137 -0
- package/src/models/definitions.ts +202 -0
- package/src/models/errors.ts +83 -0
- package/src/models/events.ts +198 -0
- package/src/models/index.ts +89 -71
- package/src/models/language-model.ts +143 -0
- package/src/models/messages.ts +78 -0
- package/src/models/pricing.ts +390 -0
- package/src/models/rate-card.ts +101 -0
- package/src/models/tools.ts +29 -0
- package/src/queues/in-memory.ts +5 -0
- package/src/queues/index.ts +11 -0
- package/src/queues/types.ts +20 -3
- package/src/runtime/create.ts +7 -5
- package/src/runtime/definitions.ts +2 -2
- package/src/runtime/host.ts +3 -2
- package/src/runtime/resolve-definitions.ts +13 -36
- package/src/runtime/sixb.ts +6 -8
- package/src/security/every.ts +0 -4
- package/src/security/grants.ts +55 -11
- package/src/security/index.ts +2 -0
- package/src/security/registry.ts +6 -5
- package/src/security/types.ts +15 -4
- package/src/security/validation.ts +30 -9
- package/src/storage/agents/errors.ts +1 -0
- package/src/storage/agents/in-memory.ts +121 -11
- package/src/storage/agents/index.ts +7 -0
- package/src/storage/agents/provider.ts +150 -6
- package/src/storage/agents/types.ts +73 -16
- package/src/storage/ai-cost/analytics.ts +63 -6
- package/src/storage/ai-cost/codec.ts +37 -12
- package/src/storage/ai-cost/groups.ts +248 -0
- package/src/storage/ai-cost/in-memory.ts +42 -0
- package/src/storage/ai-cost/index.ts +6 -0
- package/src/storage/ai-cost/provider.ts +7 -0
- package/src/storage/ai-cost/types.ts +76 -14
- package/src/storage/ai-cost/validation.ts +147 -17
- package/src/storage/ai-limits/enforcement.ts +68 -0
- package/src/storage/ai-limits/errors.ts +23 -0
- package/src/storage/ai-limits/in-memory.ts +671 -0
- package/src/storage/ai-limits/index.ts +31 -0
- package/src/storage/ai-limits/period.ts +11 -0
- package/src/storage/ai-limits/provider.ts +430 -0
- package/src/storage/ai-limits/types.ts +195 -0
- package/src/storage/ai-usage/in-memory.ts +13 -0
- package/src/storage/ai-usage/record.ts +17 -0
- package/src/storage/ai-usage/types.ts +6 -2
- package/src/storage/auth/errors.ts +6 -0
- package/src/storage/auth/in-memory/auth-storage.ts +69 -0
- package/src/storage/auth/in-memory/device-authorizations.ts +145 -0
- package/src/storage/auth/in-memory/shared.ts +7 -0
- package/src/storage/auth/index.ts +7 -0
- package/src/storage/auth/types.ts +73 -0
- package/src/storage/executions/run-link.ts +16 -6
- package/src/storage/executions/validation.ts +36 -6
- package/src/storage/in-memory/index.ts +48 -4
- package/src/storage/index.ts +52 -1
- package/src/storage/ontology/in-memory/materializations.ts +34 -22
- package/src/storage/ontology/index.ts +1 -0
- package/src/storage/ontology/materializations.ts +8 -3
- package/src/storage/ontology/provider.ts +2 -2
- package/src/storage/types.ts +37 -0
- package/src/storage/workflow-runs/in-memory.ts +3 -3
- package/src/storage/workflow-runs/provider.ts +2 -2
- package/src/storage/workflow-runs/types.ts +6 -3
- package/src/testing/agent-execution.ts +40 -28
- package/src/testing/agent-storage-contract.ts +249 -28
- package/src/testing/ai-cost-storage-contract.ts +96 -8
- package/src/testing/ai-limit-storage-contract.ts +1134 -0
- package/src/testing/ai-model-call-groups-contract.ts +353 -0
- package/src/testing/ai-usage-storage-contract.ts +31 -0
- package/src/testing/auth-storage-contract.ts +85 -0
- package/src/testing/execution-storage-contract.ts +2 -2
- package/src/testing/index.ts +10 -0
- package/src/testing/materializer-storage-contract.ts +170 -2
- package/src/testing/queues-contract.ts +36 -1
- package/src/workflows/agent-step-identity.ts +4 -0
- package/src/workflows/builders.ts +95 -9
- package/src/workflows/execution.ts +2 -2
- package/src/workflows/failure.ts +2 -2
- package/src/workflows/index.ts +3 -0
- package/src/workflows/types.ts +23 -11
- package/src/workflows/validation.ts +100 -7
- package/dist/chunk-6gjqgd3d.js.map +0 -11
- package/dist/chunk-84h6qhmp.js.map +0 -46
- package/dist/chunk-a09jx26t.js +0 -55
- package/dist/chunk-a09jx26t.js.map +0 -11
- package/dist/chunk-dm72y8wt.js.map +0 -10
- package/dist/chunk-drjqm1aa.js.map +0 -15
- package/dist/chunk-gadsm794.js.map +0 -11
- package/dist/chunk-h9kxd41f.js.map +0 -11
- package/dist/chunk-nzw7sm3b.js +0 -137
- package/dist/chunk-nzw7sm3b.js.map +0 -10
- package/dist/chunk-t0jjkep3.js.map +0 -10
- package/dist/chunk-t8t39h7v.js.map +0 -10
- package/dist/chunk-tkdscva6.js.map +0 -37
- package/dist/chunk-v0egge8b.js.map +0 -56
- package/dist/chunk-xdf9yswn.js.map +0 -11
- /package/dist/{chunk-zqysyfjt.js.map → chunk-08m3b6w8.js.map} +0 -0
- /package/dist/{chunk-xkthy56g.js.map → chunk-1kamz6j0.js.map} +0 -0
- /package/dist/{chunk-6d5xdj1q.js.map → chunk-3fqt22c4.js.map} +0 -0
- /package/dist/{chunk-z3zp0bj1.js.map → chunk-407j3msh.js.map} +0 -0
- /package/dist/{chunk-rhrbz7d4.js.map → chunk-4a849fr1.js.map} +0 -0
- /package/dist/{chunk-62c7t4jc.js.map → chunk-4nxeacx7.js.map} +0 -0
- /package/dist/{chunk-cy0n5dms.js.map → chunk-5jcdmjam.js.map} +0 -0
- /package/dist/{chunk-819wnjz8.js.map → chunk-64sr682n.js.map} +0 -0
- /package/dist/{chunk-x2yw73hy.js.map → chunk-7ds9620f.js.map} +0 -0
- /package/dist/{chunk-tbv03sx2.js.map → chunk-9aehf39w.js.map} +0 -0
- /package/dist/{chunk-ezake7g1.js.map → chunk-agsvg9ar.js.map} +0 -0
- /package/dist/{chunk-rnshztfq.js.map → chunk-d63tybny.js.map} +0 -0
- /package/dist/{chunk-vybf6pkp.js.map → chunk-dbc80ad7.js.map} +0 -0
- /package/dist/{chunk-4gz41why.js.map → chunk-dqn23610.js.map} +0 -0
- /package/dist/{chunk-zp2v2rv6.js.map → chunk-ha58tjtt.js.map} +0 -0
- /package/dist/{chunk-f6erf2vv.js.map → chunk-hdz94br2.js.map} +0 -0
- /package/dist/{chunk-dsrkgtnh.js.map → chunk-jq43kdvk.js.map} +0 -0
- /package/dist/{chunk-wtmzkcht.js.map → chunk-k34z5rvh.js.map} +0 -0
- /package/dist/{chunk-htq0qh7z.js.map → chunk-ka3a2ft3.js.map} +0 -0
- /package/dist/{chunk-4h947jd8.js.map → chunk-kt81c11h.js.map} +0 -0
- /package/dist/{chunk-f2rt4vkh.js.map → chunk-n2w475r0.js.map} +0 -0
- /package/dist/{chunk-bhxaq2nn.js.map → chunk-qw9gvjv5.js.map} +0 -0
- /package/dist/{chunk-r0rry8dn.js.map → chunk-rp1mvzb4.js.map} +0 -0
- /package/dist/{chunk-ghteq96b.js.map → chunk-s5y30bc9.js.map} +0 -0
- /package/dist/{chunk-a31h57d5.js.map → chunk-tn7xcs2n.js.map} +0 -0
- /package/dist/{chunk-ea73pzk7.js.map → chunk-vjjv9mrb.js.map} +0 -0
- /package/dist/{chunk-8b55ygje.js.map → chunk-w3e09qqk.js.map} +0 -0
- /package/dist/{chunk-ckxfnx7f.js.map → chunk-wjgm6jjt.js.map} +0 -0
- /package/dist/{chunk-3j7573mj.js.map → chunk-x0qhkqje.js.map} +0 -0
- /package/dist/{chunk-dysw7nsm.js.map → chunk-xdpwpkha.js.map} +0 -0
package/src/agents/authority.ts
CHANGED
|
@@ -1,15 +1,32 @@
|
|
|
1
|
-
import { SYSTEM_PRINCIPAL } from "../auth"
|
|
1
|
+
import { principalsEqual, SYSTEM_PRINCIPAL } from "../auth"
|
|
2
2
|
import type { AuthorizationContext } from "../authorization"
|
|
3
3
|
import { resolveAuthorizationContext } from "../authorization"
|
|
4
|
+
import { createSixbError } from "../errors/internal"
|
|
4
5
|
import type { AuthorizablePrincipal, AuthorizationRef } from "../execution"
|
|
5
6
|
import type { SecurityDefinitionCatalog } from "../security"
|
|
6
7
|
import type {
|
|
8
|
+
AccessTokenRecord,
|
|
7
9
|
AuthStorage,
|
|
8
10
|
ServiceAccountGroupMembershipRecord,
|
|
9
11
|
ServiceAccountRecord,
|
|
12
|
+
SessionRecord,
|
|
13
|
+
UserRecord,
|
|
10
14
|
} from "../storage/auth"
|
|
11
15
|
import { AuthStorageError } from "../storage/auth"
|
|
12
|
-
|
|
16
|
+
|
|
17
|
+
export type AgentExecutionAuthorization =
|
|
18
|
+
| { readonly type: "principal"; readonly context: AuthorizationContext }
|
|
19
|
+
| { readonly type: "disabled" }
|
|
20
|
+
|
|
21
|
+
type UserCredentialRef = NonNullable<
|
|
22
|
+
Extract<AuthorizationRef, { readonly type: "principal" }>["credential"]
|
|
23
|
+
>
|
|
24
|
+
|
|
25
|
+
interface CredentialedUserAuthorizationRef {
|
|
26
|
+
readonly type: "principal"
|
|
27
|
+
readonly principal: Extract<AuthorizablePrincipal, { readonly type: "user" }>
|
|
28
|
+
readonly credential: UserCredentialRef
|
|
29
|
+
}
|
|
13
30
|
|
|
14
31
|
export interface AgentExecutionIdentity {
|
|
15
32
|
readonly serviceAccount: ServiceAccountRecord
|
|
@@ -17,44 +34,49 @@ export interface AgentExecutionIdentity {
|
|
|
17
34
|
readonly groupMemberships: readonly ServiceAccountGroupMembershipRecord[]
|
|
18
35
|
}
|
|
19
36
|
|
|
20
|
-
export function agentServiceAccountId(
|
|
21
|
-
return `svc_agent_${
|
|
37
|
+
export function agentServiceAccountId(actorId: string): string {
|
|
38
|
+
return `svc_agent_${actorId}`
|
|
22
39
|
}
|
|
23
40
|
|
|
24
|
-
/** Ensure
|
|
25
|
-
export async function
|
|
41
|
+
/** Ensure a framework-managed Agent actor exists with exactly its declared group memberships. */
|
|
42
|
+
export async function ensureManagedAgentExecutionIdentity(input: {
|
|
26
43
|
readonly auth: AuthStorage | undefined
|
|
27
44
|
readonly projectId: string
|
|
28
|
-
readonly
|
|
45
|
+
readonly actorId: string
|
|
46
|
+
readonly name: string
|
|
47
|
+
readonly description: string
|
|
48
|
+
readonly groupIds: readonly string[]
|
|
29
49
|
}): Promise<AgentExecutionIdentity> {
|
|
30
50
|
const auth = requireAuthStorage(input.auth)
|
|
31
|
-
const id = agentServiceAccountId(input.
|
|
32
|
-
const name = input.agent.name
|
|
33
|
-
const description = `Managed service account for agent '${input.agent.id}'.`
|
|
51
|
+
const id = agentServiceAccountId(input.actorId)
|
|
34
52
|
const now = new Date()
|
|
35
53
|
const loaded = await loadOrCreateAgentServiceAccount(auth, {
|
|
36
54
|
id,
|
|
37
55
|
projectId: input.projectId,
|
|
38
|
-
name,
|
|
39
|
-
description,
|
|
56
|
+
name: input.name,
|
|
57
|
+
description: input.description,
|
|
40
58
|
updatedAt: now,
|
|
41
59
|
})
|
|
42
|
-
|
|
60
|
+
assertFrameworkManagedAgentServiceAccount(input.actorId, loaded)
|
|
61
|
+
assertActiveAgentServiceAccount(input.actorId, loaded)
|
|
43
62
|
const serviceAccount = await updateAgentServiceAccountMetadata(auth, {
|
|
44
63
|
existing: loaded,
|
|
45
|
-
name,
|
|
46
|
-
description,
|
|
64
|
+
name: input.name,
|
|
65
|
+
description: input.description,
|
|
47
66
|
updatedAt: now,
|
|
48
67
|
})
|
|
49
|
-
assertActiveAgentServiceAccount(input.
|
|
68
|
+
assertActiveAgentServiceAccount(input.actorId, serviceAccount)
|
|
50
69
|
|
|
51
|
-
const groupMemberships =
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
70
|
+
const groupMemberships = requireDefinitionOwnedGroupMemberships(
|
|
71
|
+
input.actorId,
|
|
72
|
+
await auth.serviceAccountGroupMemberships.reconcileForServiceAccount({
|
|
73
|
+
projectId: input.projectId,
|
|
74
|
+
serviceAccountId: id,
|
|
75
|
+
groupIds: input.groupIds,
|
|
76
|
+
source: "agent",
|
|
77
|
+
updatedAt: now,
|
|
78
|
+
})
|
|
79
|
+
)
|
|
58
80
|
|
|
59
81
|
return {
|
|
60
82
|
serviceAccount,
|
|
@@ -105,31 +127,64 @@ async function loadOrCreateAgentServiceAccount(
|
|
|
105
127
|
}
|
|
106
128
|
|
|
107
129
|
function assertActiveAgentServiceAccount(
|
|
108
|
-
|
|
130
|
+
actorId: string,
|
|
109
131
|
serviceAccount: ServiceAccountRecord
|
|
110
132
|
): void {
|
|
111
133
|
if (serviceAccount.status === "suspended") {
|
|
112
134
|
throw new Error(
|
|
113
|
-
`[Sixb] Agent '${
|
|
135
|
+
`[Sixb] Agent '${actorId}' service account '${serviceAccount.id}' is suspended.`
|
|
136
|
+
)
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function assertFrameworkManagedAgentServiceAccount(
|
|
141
|
+
actorId: string,
|
|
142
|
+
serviceAccount: ServiceAccountRecord
|
|
143
|
+
): void {
|
|
144
|
+
if (
|
|
145
|
+
serviceAccount.createdByPrincipal === undefined ||
|
|
146
|
+
!principalsEqual(serviceAccount.createdByPrincipal, SYSTEM_PRINCIPAL)
|
|
147
|
+
) {
|
|
148
|
+
throw createSixbError(
|
|
149
|
+
"agent.execution_failed",
|
|
150
|
+
`[Sixb] Agent '${actorId}' cannot use service account '${serviceAccount.id}' because it is not managed by Sixb.`,
|
|
151
|
+
{ details: { actorId, serviceAccountId: serviceAccount.id } }
|
|
114
152
|
)
|
|
115
153
|
}
|
|
116
154
|
}
|
|
117
155
|
|
|
156
|
+
function requireDefinitionOwnedGroupMemberships(
|
|
157
|
+
actorId: string,
|
|
158
|
+
memberships: readonly ServiceAccountGroupMembershipRecord[]
|
|
159
|
+
): readonly ServiceAccountGroupMembershipRecord[] {
|
|
160
|
+
const externalGroupIds = memberships
|
|
161
|
+
.filter((membership) => membership.source !== "agent")
|
|
162
|
+
.map((membership) => membership.groupId)
|
|
163
|
+
if (externalGroupIds.length > 0) {
|
|
164
|
+
throw createSixbError(
|
|
165
|
+
"agent.execution_failed",
|
|
166
|
+
`[Sixb] Agent '${actorId}' service account has group memberships not managed by its definition: ${externalGroupIds.join(", ")}.`,
|
|
167
|
+
{ details: { actorId, externalGroupIds } }
|
|
168
|
+
)
|
|
169
|
+
}
|
|
170
|
+
return memberships
|
|
171
|
+
}
|
|
172
|
+
|
|
118
173
|
/** Resolve current grants for the service account referenced by a durable Agent execution. */
|
|
119
174
|
export async function resolveAgentExecutionAuthorization(input: {
|
|
120
175
|
readonly auth: AuthStorage | undefined
|
|
121
176
|
readonly projectId: string
|
|
122
|
-
readonly
|
|
177
|
+
readonly actorId: string
|
|
123
178
|
readonly authorizationRef: AuthorizationRef
|
|
124
179
|
readonly security: SecurityDefinitionCatalog
|
|
125
180
|
}): Promise<{ readonly identity: AgentExecutionIdentity; readonly context: AuthorizationContext }> {
|
|
126
181
|
const auth = requireAuthStorage(input.auth)
|
|
127
|
-
const expectedId = agentServiceAccountId(input.
|
|
182
|
+
const expectedId = agentServiceAccountId(input.actorId)
|
|
128
183
|
const principal =
|
|
129
184
|
input.authorizationRef.type === "principal" ? input.authorizationRef.principal : null
|
|
130
185
|
if (principal?.type !== "serviceAccount" || principal.id !== expectedId) {
|
|
131
186
|
throw new Error(
|
|
132
|
-
`[Sixb] Agent '${input.
|
|
187
|
+
`[Sixb] Agent '${input.actorId}' execution authority must reference service account '${expectedId}'.`
|
|
133
188
|
)
|
|
134
189
|
}
|
|
135
190
|
|
|
@@ -140,11 +195,15 @@ export async function resolveAgentExecutionAuthorization(input: {
|
|
|
140
195
|
if (!serviceAccount || serviceAccount.status !== "active") {
|
|
141
196
|
throw new Error(`[Sixb] Agent service account '${principal.id}' is not active.`)
|
|
142
197
|
}
|
|
198
|
+
assertFrameworkManagedAgentServiceAccount(input.actorId, serviceAccount)
|
|
143
199
|
|
|
144
|
-
const groupMemberships =
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
200
|
+
const groupMemberships = requireDefinitionOwnedGroupMemberships(
|
|
201
|
+
input.actorId,
|
|
202
|
+
await auth.serviceAccountGroupMemberships.listForServiceAccount({
|
|
203
|
+
projectId: input.projectId,
|
|
204
|
+
serviceAccountId: principal.id,
|
|
205
|
+
})
|
|
206
|
+
)
|
|
148
207
|
const identity: AgentExecutionIdentity = {
|
|
149
208
|
serviceAccount,
|
|
150
209
|
principal: { type: "serviceAccount", id: principal.id },
|
|
@@ -160,6 +219,129 @@ export async function resolveAgentExecutionAuthorization(input: {
|
|
|
160
219
|
}
|
|
161
220
|
}
|
|
162
221
|
|
|
222
|
+
/** Revalidate the durable user authority inherited by a conversational or child Agent. */
|
|
223
|
+
export async function resolveInheritedAgentExecutionAuthorization(input: {
|
|
224
|
+
readonly auth: AuthStorage | undefined
|
|
225
|
+
readonly projectId: string
|
|
226
|
+
readonly authorizationRef: AuthorizationRef
|
|
227
|
+
readonly security: SecurityDefinitionCatalog
|
|
228
|
+
readonly now?: Date
|
|
229
|
+
}): Promise<AgentExecutionAuthorization> {
|
|
230
|
+
if (input.authorizationRef.type === "disabled") return { type: "disabled" }
|
|
231
|
+
|
|
232
|
+
const ref = requireCredentialedUserAuthority(input.authorizationRef)
|
|
233
|
+
const auth = requireAuthStorage(input.auth)
|
|
234
|
+
const now = input.now ?? new Date()
|
|
235
|
+
const user = await requireActiveUser(auth, input.projectId, ref.principal.id)
|
|
236
|
+
const memberships = await auth.groupMemberships.listForUser({
|
|
237
|
+
projectId: input.projectId,
|
|
238
|
+
userId: user.id,
|
|
239
|
+
})
|
|
240
|
+
const credential = await revalidateUserCredential({
|
|
241
|
+
auth,
|
|
242
|
+
projectId: input.projectId,
|
|
243
|
+
userId: user.id,
|
|
244
|
+
credential: ref.credential,
|
|
245
|
+
currentGroupIds: memberships.map((membership) => membership.groupId),
|
|
246
|
+
now,
|
|
247
|
+
})
|
|
248
|
+
|
|
249
|
+
return {
|
|
250
|
+
type: "principal",
|
|
251
|
+
context: resolveAuthorizationContext({
|
|
252
|
+
principal: ref.principal,
|
|
253
|
+
groupIds: credential.groupIds,
|
|
254
|
+
roles: input.security.listResolvedRoles(),
|
|
255
|
+
...(credential.sessionId === undefined ? {} : { sessionId: credential.sessionId }),
|
|
256
|
+
}),
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
function requireCredentialedUserAuthority(ref: AuthorizationRef): CredentialedUserAuthorizationRef {
|
|
261
|
+
if (ref.type !== "principal" || ref.principal.type !== "user" || ref.credential === undefined) {
|
|
262
|
+
throw invalidInheritedAuthority("the durable reference is not a credentialed user")
|
|
263
|
+
}
|
|
264
|
+
return {
|
|
265
|
+
type: "principal",
|
|
266
|
+
principal: { type: "user", id: ref.principal.id },
|
|
267
|
+
credential: { type: ref.credential.type, id: ref.credential.id },
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
async function requireActiveUser(
|
|
272
|
+
auth: AuthStorage,
|
|
273
|
+
projectId: string,
|
|
274
|
+
userId: string
|
|
275
|
+
): Promise<UserRecord> {
|
|
276
|
+
const user = await auth.users.getById({ projectId, id: userId })
|
|
277
|
+
if (!user || user.status !== "active") {
|
|
278
|
+
throw invalidInheritedAuthority(`user '${userId}' is not active`)
|
|
279
|
+
}
|
|
280
|
+
return user
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
async function revalidateUserCredential(input: {
|
|
284
|
+
readonly auth: AuthStorage
|
|
285
|
+
readonly projectId: string
|
|
286
|
+
readonly userId: string
|
|
287
|
+
readonly credential: UserCredentialRef
|
|
288
|
+
readonly currentGroupIds: readonly string[]
|
|
289
|
+
readonly now: Date
|
|
290
|
+
}): Promise<{ readonly groupIds: readonly string[]; readonly sessionId?: string }> {
|
|
291
|
+
if (input.credential.type === "session") {
|
|
292
|
+
const session = await input.auth.sessions.getById({
|
|
293
|
+
projectId: input.projectId,
|
|
294
|
+
id: input.credential.id,
|
|
295
|
+
})
|
|
296
|
+
if (!isUsableUserSession(session, input.userId, input.now)) {
|
|
297
|
+
throw invalidInheritedAuthority("the inherited session is no longer valid")
|
|
298
|
+
}
|
|
299
|
+
return { groupIds: input.currentGroupIds, sessionId: session.id }
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
const accessToken = await input.auth.accessTokens.getById({
|
|
303
|
+
projectId: input.projectId,
|
|
304
|
+
id: input.credential.id,
|
|
305
|
+
})
|
|
306
|
+
if (!isUsableUserAccessToken(accessToken, input.userId, input.now)) {
|
|
307
|
+
throw invalidInheritedAuthority("the inherited access token is no longer valid")
|
|
308
|
+
}
|
|
309
|
+
if (accessToken.groupIds === undefined) return { groupIds: input.currentGroupIds }
|
|
310
|
+
|
|
311
|
+
const allowedGroupIds = new Set(accessToken.groupIds)
|
|
312
|
+
return {
|
|
313
|
+
groupIds: input.currentGroupIds.filter((groupId) => allowedGroupIds.has(groupId)),
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
function isUsableUserSession(
|
|
318
|
+
session: SessionRecord | null,
|
|
319
|
+
userId: string,
|
|
320
|
+
now: Date
|
|
321
|
+
): session is SessionRecord {
|
|
322
|
+
if (!session || session.userId !== userId || session.revokedAt !== undefined) return false
|
|
323
|
+
if (session.expiresAt.getTime() <= now.getTime()) return false
|
|
324
|
+
return (
|
|
325
|
+
session.absoluteExpiresAt === undefined || session.absoluteExpiresAt.getTime() > now.getTime()
|
|
326
|
+
)
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
function isUsableUserAccessToken(
|
|
330
|
+
token: AccessTokenRecord | null,
|
|
331
|
+
userId: string,
|
|
332
|
+
now: Date
|
|
333
|
+
): token is AccessTokenRecord {
|
|
334
|
+
if (!token || token.subjectType !== "user" || token.subjectId !== userId) return false
|
|
335
|
+
return token.revokedAt === undefined && token.expiresAt.getTime() > now.getTime()
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
function invalidInheritedAuthority(reason: string): Error {
|
|
339
|
+
return createSixbError(
|
|
340
|
+
"agent.execution_failed",
|
|
341
|
+
`[Sixb] The Agent execution cannot restore its inherited authority: ${reason}.`
|
|
342
|
+
)
|
|
343
|
+
}
|
|
344
|
+
|
|
163
345
|
function requireAuthStorage(auth: AuthStorage | undefined): AuthStorage {
|
|
164
346
|
if (!auth) {
|
|
165
347
|
throw new Error("[Sixb] Agent executions require auth storage.")
|
package/src/agents/builders.ts
CHANGED
|
@@ -1,32 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createAgentToolDefinition, toolsFromDefinitions } from "./tool-definition"
|
|
1
|
+
import { createAgentToolDefinition } from "./tool-definition"
|
|
3
2
|
import type {
|
|
4
|
-
AgentDefinition,
|
|
5
3
|
AgentToolDefinition,
|
|
6
4
|
AgentToolDescriptionBuilder,
|
|
7
5
|
AgentToolHandler,
|
|
8
6
|
AgentToolInputBuilder,
|
|
9
7
|
AgentToolInputSchema,
|
|
10
8
|
AgentToolRunBuilder,
|
|
11
|
-
DefineAgentConfig,
|
|
12
9
|
InferAgentToolInputSchema,
|
|
13
10
|
} from "./types"
|
|
14
11
|
import {
|
|
15
|
-
assertNonEmpty,
|
|
16
12
|
assertValidAgentToolDescription,
|
|
17
13
|
assertValidAgentToolInput,
|
|
18
14
|
assertValidAgentToolName,
|
|
19
|
-
assertValidProviderOptions,
|
|
20
|
-
assertValidReasoningLevel,
|
|
21
|
-
groupIdsFromDefinitions,
|
|
22
|
-
resolveAgentLoopConfig,
|
|
23
15
|
} from "./validation"
|
|
24
16
|
|
|
25
17
|
/**
|
|
26
|
-
* Define a reusable tool
|
|
18
|
+
* Define a reusable tool registered through `createSixb({ tools })`.
|
|
27
19
|
*
|
|
28
20
|
* The returned definition is inert. The agent worker supplies its run-scoped
|
|
29
|
-
* context and executes the handler only when a
|
|
21
|
+
* context and executes the handler only when a run calls the tool.
|
|
30
22
|
*/
|
|
31
23
|
export function defineAgentTool<const TName extends string>(
|
|
32
24
|
name: TName
|
|
@@ -55,42 +47,3 @@ export function defineAgentTool<const TName extends string>(
|
|
|
55
47
|
},
|
|
56
48
|
}
|
|
57
49
|
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Define an agent: a conversational, looping actor auto-discovered from `agents/`.
|
|
61
|
-
*
|
|
62
|
-
* The returned definition is declarative and can be exported from a project-level
|
|
63
|
-
* `agents/` module. The runtime loads and registers it (`sixb.agents`); the agent
|
|
64
|
-
* worker executes it as a running, streaming agent.
|
|
65
|
-
*/
|
|
66
|
-
export function defineAgent<const TId extends string>(
|
|
67
|
-
id: TId,
|
|
68
|
-
config: DefineAgentConfig
|
|
69
|
-
): AgentDefinition<TId> {
|
|
70
|
-
assertNonEmpty(id, "id")
|
|
71
|
-
assertNonEmpty(config.name, "name")
|
|
72
|
-
assertNonEmpty(config.instructions, "instructions")
|
|
73
|
-
|
|
74
|
-
if (config.model === undefined || config.model === null) {
|
|
75
|
-
throw new AgentDefinitionError("[Sixb] Agent model is required.")
|
|
76
|
-
}
|
|
77
|
-
assertValidReasoningLevel(config.reasoning)
|
|
78
|
-
assertValidProviderOptions(config.providerOptions)
|
|
79
|
-
const loop = resolveAgentLoopConfig(config.loop)
|
|
80
|
-
const groupIds = groupIdsFromDefinitions(id, config.groups)
|
|
81
|
-
const tools = toolsFromDefinitions(id, config.tools)
|
|
82
|
-
|
|
83
|
-
return Object.freeze({
|
|
84
|
-
kind: "agent",
|
|
85
|
-
id,
|
|
86
|
-
name: config.name,
|
|
87
|
-
model: config.model,
|
|
88
|
-
...(config.reasoning !== undefined ? { reasoning: config.reasoning } : {}),
|
|
89
|
-
...(config.providerOptions !== undefined ? { providerOptions: config.providerOptions } : {}),
|
|
90
|
-
instructions: config.instructions,
|
|
91
|
-
groupIds,
|
|
92
|
-
tools,
|
|
93
|
-
...(config.description !== undefined ? { description: config.description } : {}),
|
|
94
|
-
...(loop !== undefined ? { loop } : {}),
|
|
95
|
-
})
|
|
96
|
-
}
|
|
@@ -147,6 +147,9 @@ function estimateMessageTokens(
|
|
|
147
147
|
case "context":
|
|
148
148
|
tokens += textTokens(stableJsonStringify(part.context))
|
|
149
149
|
break
|
|
150
|
+
case "provider-state":
|
|
151
|
+
tokens += textTokens(stableJsonStringify(part.data))
|
|
152
|
+
break
|
|
150
153
|
case "tool-call":
|
|
151
154
|
tokens +=
|
|
152
155
|
TOOL_OVERHEAD_TOKENS +
|
|
@@ -193,6 +196,7 @@ function serializeSummaryPart(
|
|
|
193
196
|
case "text":
|
|
194
197
|
return [`${indent}<text>${escapeXml(part.text)}</text>`]
|
|
195
198
|
case "reasoning":
|
|
199
|
+
case "provider-state":
|
|
196
200
|
case "step-start":
|
|
197
201
|
return []
|
|
198
202
|
case "context":
|
package/src/agents/dispatch.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AgentQueueJob, Queue } from "../queues"
|
|
1
|
+
import type { AgentQueueJob, Queue, SubagentQueueJob } from "../queues"
|
|
2
2
|
import type { AgentStorage } from "../storage/agents"
|
|
3
3
|
|
|
4
4
|
export interface DispatchQueuedAgentRunsInput {
|
|
@@ -31,6 +31,10 @@ export function agentRunQueueJobId(runId: string): string {
|
|
|
31
31
|
return `agt_job_${runId}`
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
export function subagentRunQueueJobId(runId: string): string {
|
|
35
|
+
return `agt_child_job_${runId}`
|
|
36
|
+
}
|
|
37
|
+
|
|
34
38
|
/** Stable queue identity shared by workflow dispatch and agent reconciliation. */
|
|
35
39
|
export function workflowAgentNodeQueueJobId(nodeRunId: string): string {
|
|
36
40
|
return `wfa_job_${nodeRunId}`
|
|
@@ -55,13 +59,14 @@ export async function dispatchQueuedAgentRuns(
|
|
|
55
59
|
: (
|
|
56
60
|
await input.storage.runs.list({
|
|
57
61
|
projectId: input.projectId,
|
|
62
|
+
kinds: ["conversation"],
|
|
58
63
|
statuses: ["queued"],
|
|
59
64
|
order: "asc",
|
|
60
65
|
limit,
|
|
61
66
|
})
|
|
62
67
|
).runs
|
|
63
68
|
|
|
64
|
-
const queued = runs.filter((run) => run.status === "queued")
|
|
69
|
+
const queued = runs.filter((run) => run.kind === "conversation" && run.status === "queued")
|
|
65
70
|
if (queued.length === 0) {
|
|
66
71
|
return { scanned: 0, dispatched: [], failures: [] }
|
|
67
72
|
}
|
|
@@ -93,6 +98,58 @@ export async function dispatchQueuedAgentRuns(
|
|
|
93
98
|
}
|
|
94
99
|
}
|
|
95
100
|
|
|
101
|
+
export async function dispatchQueuedSubagentRuns(input: {
|
|
102
|
+
readonly projectId: string
|
|
103
|
+
readonly storage: AgentStorage
|
|
104
|
+
readonly queue: Queue<SubagentQueueJob>
|
|
105
|
+
readonly runIds?: readonly string[]
|
|
106
|
+
readonly limit?: number
|
|
107
|
+
}): Promise<DispatchQueuedAgentRunsResult> {
|
|
108
|
+
const limit = normalizeLimit(input.limit)
|
|
109
|
+
const runs = input.runIds
|
|
110
|
+
? await input.storage.runs.getByIds({
|
|
111
|
+
projectId: input.projectId,
|
|
112
|
+
ids: [...new Set(input.runIds)].slice(0, limit),
|
|
113
|
+
})
|
|
114
|
+
: (
|
|
115
|
+
await input.storage.runs.list({
|
|
116
|
+
projectId: input.projectId,
|
|
117
|
+
kinds: ["subagent"],
|
|
118
|
+
statuses: ["queued"],
|
|
119
|
+
order: "asc",
|
|
120
|
+
limit,
|
|
121
|
+
})
|
|
122
|
+
).runs
|
|
123
|
+
const queued = runs.filter((run) => run.kind === "subagent" && run.status === "queued")
|
|
124
|
+
if (queued.length === 0) return { scanned: 0, dispatched: [], failures: [] }
|
|
125
|
+
|
|
126
|
+
try {
|
|
127
|
+
const jobs = await input.queue.enqueue({
|
|
128
|
+
projectId: input.projectId,
|
|
129
|
+
jobs: queued.map((run) => ({
|
|
130
|
+
id: subagentRunQueueJobId(run.id),
|
|
131
|
+
type: "agent.subagent-run.requested" as const,
|
|
132
|
+
payload: { runId: run.id },
|
|
133
|
+
})),
|
|
134
|
+
})
|
|
135
|
+
const jobsById = new Set(jobs.map((job) => job.id))
|
|
136
|
+
const dispatched = queued.map((run) => {
|
|
137
|
+
const jobId = subagentRunQueueJobId(run.id)
|
|
138
|
+
if (!jobsById.has(jobId)) {
|
|
139
|
+
throw new Error(`[Sixb] Subagent queue did not return job '${jobId}'.`)
|
|
140
|
+
}
|
|
141
|
+
return { runId: run.id, jobId }
|
|
142
|
+
})
|
|
143
|
+
return { scanned: queued.length, dispatched, failures: [] }
|
|
144
|
+
} catch (error) {
|
|
145
|
+
return {
|
|
146
|
+
scanned: queued.length,
|
|
147
|
+
dispatched: [],
|
|
148
|
+
failures: queued.map((run) => ({ runId: run.id, error })),
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
96
153
|
function normalizeLimit(value: number | undefined): number {
|
|
97
154
|
if (value === undefined) return 100
|
|
98
155
|
if (!Number.isFinite(value) || value < 1) {
|
package/src/agents/errors.ts
CHANGED
|
@@ -7,7 +7,7 @@ export class AgentDefinitionError extends Error {
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* Raised by the message adapters. `
|
|
10
|
+
* Raised by the message adapters. `fromUiMessage` is **total**: rather than silently dropping a part it
|
|
11
11
|
* cannot model, it throws this — which both prevents data loss and pinpoints exactly when the
|
|
12
12
|
* {@link AgentMessage} part union must be extended. It also fires on transient/streaming parts that
|
|
13
13
|
* must never be persisted, and on out-of-contract (non-JSON) payloads.
|
|
@@ -39,12 +39,15 @@ export class AgentToolResultValidationError extends Error {
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
export type AgentRequestErrorCode =
|
|
42
|
+
| "agent_selector_removed"
|
|
42
43
|
| "agent_not_found"
|
|
44
|
+
| "model_not_found"
|
|
45
|
+
| "invalid_model_selection"
|
|
43
46
|
| "run_not_found"
|
|
44
47
|
| "run_not_retryable"
|
|
45
48
|
| "thread_not_found"
|
|
46
|
-
| "thread_agent_mismatch"
|
|
47
49
|
| "active_run_exists"
|
|
50
|
+
| "authority_not_inheritable"
|
|
48
51
|
| "invalid_context"
|
|
49
52
|
| "storage_unavailable"
|
|
50
53
|
|