@sixb/core 0.1.6 → 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/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.js +7 -7
- 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-1g8negke.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-dy311asx.js → chunk-2b5qtban.js} +12 -12
- package/dist/{chunk-dy311asx.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-md8k0r54.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-t624af60.js → chunk-6ed5bwnd.js} +646 -67
- package/dist/{chunk-t624af60.js.map → chunk-6ed5bwnd.js.map} +10 -9
- 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-nkbfrt0c.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-0hc5j867.js → chunk-d2ndstdf.js} +8 -6
- package/dist/{chunk-0hc5j867.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-5sxb1168.js → chunk-e4rvtvpw.js} +13 -11
- package/dist/{chunk-5sxb1168.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-nva1xkjz.js → chunk-h0knpbz5.js} +468 -1236
- package/dist/chunk-h0knpbz5.js.map +38 -0
- package/dist/{chunk-tg5mee00.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-znagycq7.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-n4spznws.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-5gynx4xn.js → chunk-qv38twt8.js} +50 -69
- package/dist/{chunk-5gynx4xn.js.map → chunk-qv38twt8.js.map} +8 -8
- package/dist/{chunk-bhxaq2nn.js → chunk-qw9gvjv5.js} +1 -1
- package/dist/{chunk-8gv5z0zm.js → chunk-rp1mvzb4.js} +6 -6
- package/dist/{chunk-1e8m6yn3.js → chunk-rre42skh.js} +182 -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-e42bc6m3.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-a44d5zgd.js → chunk-y35ma3mj.js} +11 -16
- package/dist/{chunk-a44d5zgd.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 +7 -4
- 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/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 +3637 -1962
- package/dist/testing/index.js.map +14 -12
- 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/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/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 +51 -1
- 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/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-1e8m6yn3.js.map +0 -37
- package/dist/chunk-1g8negke.js.map +0 -11
- package/dist/chunk-6gjqgd3d.js.map +0 -11
- package/dist/chunk-dm72y8wt.js.map +0 -10
- package/dist/chunk-drjqm1aa.js.map +0 -15
- package/dist/chunk-fe5ev6mr.js +0 -55
- package/dist/chunk-fe5ev6mr.js.map +0 -11
- package/dist/chunk-h9kxd41f.js.map +0 -11
- package/dist/chunk-hceck7dq.js +0 -137
- package/dist/chunk-hceck7dq.js.map +0 -10
- package/dist/chunk-n4spznws.js.map +0 -11
- package/dist/chunk-nva1xkjz.js.map +0 -46
- package/dist/chunk-t0jjkep3.js.map +0 -10
- package/dist/chunk-t8t39h7v.js.map +0 -10
- /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-md8k0r54.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-72q2y8hn.js.map → chunk-8tsf6dmc.js.map} +0 -0
- /package/dist/{chunk-nkbfrt0c.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-tg5mee00.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-znagycq7.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-8gv5z0zm.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-e42bc6m3.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
|
@@ -3,23 +3,23 @@ import {
|
|
|
3
3
|
createPrimitiveExecutionRecord,
|
|
4
4
|
ensureExecutionRecord,
|
|
5
5
|
executionRecordInputFromRuntime
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-hdz94br2.js";
|
|
7
7
|
import {
|
|
8
8
|
PIPELINE_RUN_FAILURE_CODES
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-6ed5bwnd.js";
|
|
10
10
|
import {
|
|
11
11
|
PipelineRunError
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-5jcdmjam.js";
|
|
13
13
|
import {
|
|
14
14
|
reportRunFailure
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-jq43kdvk.js";
|
|
16
16
|
import {
|
|
17
17
|
assertAuthorized
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-37wk412q.js";
|
|
19
19
|
import {
|
|
20
20
|
createSixbError,
|
|
21
21
|
toSixbFailure
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-2xns679x.js";
|
|
23
23
|
|
|
24
24
|
// src/pipelines/errors.ts
|
|
25
25
|
class PipelineError extends Error {
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
grantKindOf,
|
|
18
18
|
resolveAuthorizationContext,
|
|
19
19
|
resolveRoleGrants
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-37wk412q.js";
|
|
21
21
|
|
|
22
22
|
// src/auth/access-tokens.ts
|
|
23
23
|
import { createHash, randomBytes, randomUUID } from "crypto";
|
|
@@ -326,11 +326,17 @@ function assertGrantDefinition(value, field, createError = (message) => new Secu
|
|
|
326
326
|
if (value.capability === "run" && value.target !== "workflow" && value.target !== "sync" && value.target !== "pipeline" && value.target !== "agent") {
|
|
327
327
|
throw createError(`[Sixb] ${field} run grant target must be 'workflow', 'sync', 'pipeline', or 'agent'.`);
|
|
328
328
|
}
|
|
329
|
-
if (value.capability === "observe" && value.target !== "logs") {
|
|
330
|
-
throw createError(`[Sixb] ${field} observe grant target must be 'logs'.`);
|
|
329
|
+
if (value.capability === "observe" && value.target !== "logs" && value.target !== "aiUsage") {
|
|
330
|
+
throw createError(`[Sixb] ${field} observe grant target must be 'logs' or 'aiUsage'.`);
|
|
331
331
|
}
|
|
332
|
-
if (value.capability === "manage" && value.target !==
|
|
333
|
-
throw createError(`[Sixb] ${field} manage grant must
|
|
332
|
+
if (value.capability === "manage" && value.target !== "connector" && value.target !== "aiUsage") {
|
|
333
|
+
throw createError(`[Sixb] ${field} manage grant target must be 'connector' or 'aiUsage'.`);
|
|
334
|
+
}
|
|
335
|
+
if (value.capability === "run" && value.target === "agent") {
|
|
336
|
+
if (value.selection !== undefined) {
|
|
337
|
+
throw createError(`[Sixb] ${field} agent run grant must not declare a selection.`);
|
|
338
|
+
}
|
|
339
|
+
return;
|
|
334
340
|
}
|
|
335
341
|
assertSelection(value.selection, field, createError);
|
|
336
342
|
}
|
|
@@ -441,6 +447,13 @@ function validateSecurityDefinitionsAtStartup(input) {
|
|
|
441
447
|
};
|
|
442
448
|
}
|
|
443
449
|
function assertGrantReferences(roleId, grant, registered) {
|
|
450
|
+
if (grant.capability === "run" && grant.target === "agent") {
|
|
451
|
+
const spec2 = GRANT_KINDS[grantKindOf(grant)];
|
|
452
|
+
if (!registered.agentAvailable) {
|
|
453
|
+
throw new SecurityValidationError(`[Sixb] Role '${roleId}' grants ${grant.capability} on the project Agent, but it is unavailable. ${spec2.fix}`);
|
|
454
|
+
}
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
444
457
|
const spec = GRANT_KINDS[grantKindOf(grant)];
|
|
445
458
|
const universe = registered[spec.universeKey];
|
|
446
459
|
if (!universe) {
|
|
@@ -530,7 +543,6 @@ var BREADTH_TARGETS = [
|
|
|
530
543
|
"workflow",
|
|
531
544
|
"sync",
|
|
532
545
|
"pipeline",
|
|
533
|
-
"agent",
|
|
534
546
|
"application",
|
|
535
547
|
"connector"
|
|
536
548
|
];
|
|
@@ -565,18 +577,16 @@ var every = {
|
|
|
565
577
|
workflow: () => all("workflow"),
|
|
566
578
|
sync: () => all("sync"),
|
|
567
579
|
pipeline: () => all("pipeline"),
|
|
568
|
-
agent: () => all("agent"),
|
|
569
580
|
application: () => all("application"),
|
|
570
581
|
connector: () => all("connector")
|
|
571
582
|
};
|
|
572
583
|
// src/security/grants.ts
|
|
573
584
|
var VIEW_TARGETS = ["object", "dataset"];
|
|
574
|
-
var RUN_TARGETS = ["workflow", "sync", "pipeline"
|
|
585
|
+
var RUN_TARGETS = ["workflow", "sync", "pipeline"];
|
|
575
586
|
var TARGET_BY_DEFINITION_KIND = {
|
|
576
587
|
dataset: "dataset",
|
|
577
588
|
sync: "sync",
|
|
578
589
|
pipeline: "pipeline",
|
|
579
|
-
agent: "agent",
|
|
580
590
|
workflow: "workflow",
|
|
581
591
|
application: "application",
|
|
582
592
|
connector: "connector"
|
|
@@ -655,10 +665,23 @@ function apply(input) {
|
|
|
655
665
|
};
|
|
656
666
|
}
|
|
657
667
|
function run(input) {
|
|
668
|
+
if (isAgentReference(input)) {
|
|
669
|
+
return { kind: "grant", capability: "run", target: "agent" };
|
|
670
|
+
}
|
|
658
671
|
const { target, selection } = resolveGrant(input, "can.run", RUN_TARGETS);
|
|
659
672
|
return { kind: "grant", capability: "run", target, selection };
|
|
660
673
|
}
|
|
661
|
-
function
|
|
674
|
+
function isAgentReference(input) {
|
|
675
|
+
return typeof input === "object" && input !== null && !Array.isArray(input) && !isBreadthSelector(input) && "kind" in input && input.kind === "agent";
|
|
676
|
+
}
|
|
677
|
+
function isAgentUsageReference(input) {
|
|
678
|
+
return typeof input === "object" && input !== null && !Array.isArray(input) && !isBreadthSelector(input) && "kind" in input && input.kind === "aiUsage";
|
|
679
|
+
}
|
|
680
|
+
function observe(input) {
|
|
681
|
+
if (input !== "logs" && !isAgentUsageReference(input)) {
|
|
682
|
+
throw new SecurityValidationError('[Sixb] can.observe accepts "logs" or agent.usage.');
|
|
683
|
+
}
|
|
684
|
+
const target = input === "logs" ? "logs" : "aiUsage";
|
|
662
685
|
return {
|
|
663
686
|
kind: "grant",
|
|
664
687
|
capability: "observe",
|
|
@@ -667,9 +690,18 @@ function observe(target) {
|
|
|
667
690
|
};
|
|
668
691
|
}
|
|
669
692
|
function manage(input) {
|
|
693
|
+
if (isAgentUsageReference(input)) {
|
|
694
|
+
return {
|
|
695
|
+
kind: "grant",
|
|
696
|
+
capability: "manage",
|
|
697
|
+
target: "aiUsage",
|
|
698
|
+
selection: { all: false, ids: ["aiUsage"] }
|
|
699
|
+
};
|
|
700
|
+
}
|
|
670
701
|
return {
|
|
671
702
|
kind: "grant",
|
|
672
703
|
capability: "manage",
|
|
704
|
+
target: "connector",
|
|
673
705
|
selection: resolveGrant(input, "can.manage", ["connector"]).selection
|
|
674
706
|
};
|
|
675
707
|
}
|
|
@@ -701,9 +733,10 @@ class SecurityRegistry {
|
|
|
701
733
|
workflowIds: input.workflowIds,
|
|
702
734
|
syncIds: input.syncIds,
|
|
703
735
|
pipelineIds: input.pipelineIds,
|
|
704
|
-
|
|
736
|
+
agentAvailable: input.agentAvailable,
|
|
705
737
|
connectorIds: input.connectorIds,
|
|
706
|
-
observableIds: new Set(["logs"])
|
|
738
|
+
observableIds: new Set(["logs", "aiUsage"]),
|
|
739
|
+
manageableIds: new Set(["aiUsage"])
|
|
707
740
|
});
|
|
708
741
|
const universe = {
|
|
709
742
|
applicationIds: input.applicationIds ?? APPLICATION_IDS,
|
|
@@ -713,9 +746,9 @@ class SecurityRegistry {
|
|
|
713
746
|
workflowIds: input.workflowIds ?? new Set,
|
|
714
747
|
syncIds: input.syncIds ?? new Set,
|
|
715
748
|
pipelineIds: input.pipelineIds ?? new Set,
|
|
716
|
-
agentIds: input.agentIds ?? new Set,
|
|
717
749
|
connectorIds: input.connectorIds ?? new Set,
|
|
718
|
-
observableIds: new Set(["logs"]),
|
|
750
|
+
observableIds: new Set(["logs", "aiUsage"]),
|
|
751
|
+
manageableIds: new Set(["aiUsage"]),
|
|
719
752
|
getSubTypes: input.getSubTypes ?? (() => [])
|
|
720
753
|
};
|
|
721
754
|
this.groupsById = definitions.groupsById;
|
|
@@ -770,7 +803,8 @@ function createAuthStorageState() {
|
|
|
770
803
|
invitations: new Map,
|
|
771
804
|
groupMemberships: new Map,
|
|
772
805
|
magicLinks: new Map,
|
|
773
|
-
oidcAuthorizationAttempts: new Map
|
|
806
|
+
oidcAuthorizationAttempts: new Map,
|
|
807
|
+
deviceAuthorizations: new Map
|
|
774
808
|
};
|
|
775
809
|
}
|
|
776
810
|
function scopedKey(...parts) {
|
|
@@ -791,6 +825,9 @@ function serviceAccountGroupMembershipKey(projectId, serviceAccountId, groupId)
|
|
|
791
825
|
function sessionKey(projectId, id) {
|
|
792
826
|
return scopedKey(projectId, id);
|
|
793
827
|
}
|
|
828
|
+
function deviceAuthorizationKey(projectId, id) {
|
|
829
|
+
return scopedKey(projectId, id);
|
|
830
|
+
}
|
|
794
831
|
function accessTokenKey(projectId, id) {
|
|
795
832
|
return scopedKey(projectId, id);
|
|
796
833
|
}
|
|
@@ -1175,6 +1212,100 @@ class InMemoryAuthAccessTokenStore {
|
|
|
1175
1212
|
}
|
|
1176
1213
|
}
|
|
1177
1214
|
|
|
1215
|
+
// src/storage/auth/types.ts
|
|
1216
|
+
var MAX_PENDING_DEVICE_AUTHORIZATIONS = 100;
|
|
1217
|
+
|
|
1218
|
+
// src/storage/auth/in-memory/device-authorizations.ts
|
|
1219
|
+
class InMemoryAuthDeviceAuthorizationStore {
|
|
1220
|
+
state;
|
|
1221
|
+
constructor(state) {
|
|
1222
|
+
this.state = state;
|
|
1223
|
+
}
|
|
1224
|
+
async create(input) {
|
|
1225
|
+
const id = assertNonEmpty2(input.id, "Device authorization id");
|
|
1226
|
+
const projectId = assertNonEmpty2(input.projectId, "Project id");
|
|
1227
|
+
for (const [key2, authorization] of this.state.deviceAuthorizations) {
|
|
1228
|
+
if (authorization.projectId === projectId && authorization.expiresAt <= input.createdAt) {
|
|
1229
|
+
this.state.deviceAuthorizations.delete(key2);
|
|
1230
|
+
}
|
|
1231
|
+
}
|
|
1232
|
+
const pending = [...this.state.deviceAuthorizations.values()].filter((authorization) => authorization.projectId === projectId && authorization.status === "pending").length;
|
|
1233
|
+
if (pending >= MAX_PENDING_DEVICE_AUTHORIZATIONS) {
|
|
1234
|
+
throw new AuthStorageError("device_authorization_limit_exceeded", `[Sixb] Project '${projectId}' has too many pending device authorizations.`);
|
|
1235
|
+
}
|
|
1236
|
+
const key = deviceAuthorizationKey(projectId, id);
|
|
1237
|
+
if (this.state.deviceAuthorizations.has(key)) {
|
|
1238
|
+
throw duplicateAuthorization(id, projectId);
|
|
1239
|
+
}
|
|
1240
|
+
const record = {
|
|
1241
|
+
id,
|
|
1242
|
+
projectId,
|
|
1243
|
+
deviceCodeHash: assertNonEmpty2(input.deviceCodeHash, "Device code hash"),
|
|
1244
|
+
userCode: assertNonEmpty2(input.userCode, "User code"),
|
|
1245
|
+
clientName: assertNonEmpty2(input.clientName, "Client name"),
|
|
1246
|
+
tokenName: assertNonEmpty2(input.tokenName, "Token name"),
|
|
1247
|
+
tokenExpiresAt: new Date(input.tokenExpiresAt),
|
|
1248
|
+
status: "pending",
|
|
1249
|
+
createdAt: new Date(input.createdAt),
|
|
1250
|
+
expiresAt: new Date(input.expiresAt)
|
|
1251
|
+
};
|
|
1252
|
+
this.state.deviceAuthorizations.set(key, cloneRecord(record));
|
|
1253
|
+
return cloneRecord(record);
|
|
1254
|
+
}
|
|
1255
|
+
async getById(params) {
|
|
1256
|
+
const record = this.state.deviceAuthorizations.get(deviceAuthorizationKey(params.projectId, params.id));
|
|
1257
|
+
return record ? cloneRecord(record) : null;
|
|
1258
|
+
}
|
|
1259
|
+
async getByUserCode(params) {
|
|
1260
|
+
for (const record of this.state.deviceAuthorizations.values()) {
|
|
1261
|
+
if (record.projectId === params.projectId && record.userCode === params.userCode) {
|
|
1262
|
+
return cloneRecord(record);
|
|
1263
|
+
}
|
|
1264
|
+
}
|
|
1265
|
+
return null;
|
|
1266
|
+
}
|
|
1267
|
+
async approve(params) {
|
|
1268
|
+
const record = this.requirePending(params.projectId, params.id, params.approvedAt);
|
|
1269
|
+
const user = this.state.users.get(userKey(params.projectId, params.userId));
|
|
1270
|
+
const session = this.state.sessions.get(sessionKey(params.projectId, params.sessionId));
|
|
1271
|
+
if (!user || user.status !== "active" || !session || session.userId !== user.id || !isActiveSession(session, params.approvedAt)) {
|
|
1272
|
+
throw new AuthStorageError("invalid_device_authorization", "[Sixb] Device authorization requires an active user session.");
|
|
1273
|
+
}
|
|
1274
|
+
const next = {
|
|
1275
|
+
...record,
|
|
1276
|
+
status: "approved",
|
|
1277
|
+
approvedUserId: assertNonEmpty2(params.userId, "Approved user id"),
|
|
1278
|
+
approvedSessionId: assertNonEmpty2(params.sessionId, "Approved session id"),
|
|
1279
|
+
approvedAt: new Date(params.approvedAt)
|
|
1280
|
+
};
|
|
1281
|
+
this.state.deviceAuthorizations.set(deviceAuthorizationKey(params.projectId, params.id), next);
|
|
1282
|
+
return cloneRecord(next);
|
|
1283
|
+
}
|
|
1284
|
+
async deny(params) {
|
|
1285
|
+
const record = this.requirePending(params.projectId, params.id, params.deniedAt);
|
|
1286
|
+
const next = {
|
|
1287
|
+
...record,
|
|
1288
|
+
status: "denied",
|
|
1289
|
+
deniedAt: new Date(params.deniedAt)
|
|
1290
|
+
};
|
|
1291
|
+
this.state.deviceAuthorizations.set(deviceAuthorizationKey(params.projectId, params.id), next);
|
|
1292
|
+
return cloneRecord(next);
|
|
1293
|
+
}
|
|
1294
|
+
requirePending(projectId, id, now) {
|
|
1295
|
+
const record = this.state.deviceAuthorizations.get(deviceAuthorizationKey(projectId, id));
|
|
1296
|
+
if (!record) {
|
|
1297
|
+
throw new AuthStorageError("missing_device_authorization", `[Sixb] Device authorization '${id}' not found for project '${projectId}'.`);
|
|
1298
|
+
}
|
|
1299
|
+
if (record.status !== "pending" || record.expiresAt <= now) {
|
|
1300
|
+
throw new AuthStorageError("invalid_device_authorization", `[Sixb] Device authorization '${id}' is no longer pending for project '${projectId}'.`);
|
|
1301
|
+
}
|
|
1302
|
+
return record;
|
|
1303
|
+
}
|
|
1304
|
+
}
|
|
1305
|
+
function duplicateAuthorization(id, projectId) {
|
|
1306
|
+
return new AuthStorageError("duplicate_device_authorization", `[Sixb] Device authorization '${id}' already exists for project '${projectId}'.`);
|
|
1307
|
+
}
|
|
1308
|
+
|
|
1178
1309
|
// src/storage/auth/in-memory/group-memberships.ts
|
|
1179
1310
|
class InMemoryAuthGroupMembershipStore {
|
|
1180
1311
|
state;
|
|
@@ -1707,6 +1838,7 @@ class InMemoryAuthStorage {
|
|
|
1707
1838
|
groupMemberships = new InMemoryAuthGroupMembershipStore(this.state);
|
|
1708
1839
|
magicLinks = new InMemoryAuthMagicLinkStore(this.state);
|
|
1709
1840
|
oidcAuthorizationAttempts = new InMemoryAuthOidcAuthorizationAttemptStore(this.state);
|
|
1841
|
+
deviceAuthorizations = new InMemoryAuthDeviceAuthorizationStore(this.state);
|
|
1710
1842
|
snapshot() {
|
|
1711
1843
|
return {
|
|
1712
1844
|
users: structuredClone(this.state.users),
|
|
@@ -1718,7 +1850,8 @@ class InMemoryAuthStorage {
|
|
|
1718
1850
|
invitations: structuredClone(this.state.invitations),
|
|
1719
1851
|
groupMemberships: structuredClone(this.state.groupMemberships),
|
|
1720
1852
|
magicLinks: structuredClone(this.state.magicLinks),
|
|
1721
|
-
oidcAuthorizationAttempts: structuredClone(this.state.oidcAuthorizationAttempts)
|
|
1853
|
+
oidcAuthorizationAttempts: structuredClone(this.state.oidcAuthorizationAttempts),
|
|
1854
|
+
deviceAuthorizations: structuredClone(this.state.deviceAuthorizations)
|
|
1722
1855
|
};
|
|
1723
1856
|
}
|
|
1724
1857
|
restore(snapshot) {
|
|
@@ -1732,6 +1865,37 @@ class InMemoryAuthStorage {
|
|
|
1732
1865
|
restoreMap(this.state.groupMemberships, snapshot.groupMemberships);
|
|
1733
1866
|
restoreMap(this.state.magicLinks, snapshot.magicLinks);
|
|
1734
1867
|
restoreMap(this.state.oidcAuthorizationAttempts, snapshot.oidcAuthorizationAttempts);
|
|
1868
|
+
restoreMap(this.state.deviceAuthorizations, snapshot.deviceAuthorizations);
|
|
1869
|
+
}
|
|
1870
|
+
async completeDeviceAuthorization(input) {
|
|
1871
|
+
const key = deviceAuthorizationKey(input.projectId, input.id);
|
|
1872
|
+
const authorization = this.state.deviceAuthorizations.get(key);
|
|
1873
|
+
if (!authorization) {
|
|
1874
|
+
throw new AuthStorageError("missing_device_authorization", `[Sixb] Device authorization '${input.id}' not found for project '${input.projectId}'.`);
|
|
1875
|
+
}
|
|
1876
|
+
if (authorization.deviceCodeHash !== input.deviceCodeHash) {
|
|
1877
|
+
throw new AuthStorageError("invalid_device_authorization", "[Sixb] Invalid device authorization.");
|
|
1878
|
+
}
|
|
1879
|
+
if (authorization.status === "pending") {
|
|
1880
|
+
throw new AuthStorageError("pending_device_authorization", "[Sixb] Device authorization is pending.");
|
|
1881
|
+
}
|
|
1882
|
+
if (authorization.status === "denied") {
|
|
1883
|
+
throw new AuthStorageError("device_authorization_denied", "[Sixb] Device authorization was denied.");
|
|
1884
|
+
}
|
|
1885
|
+
if (authorization.status !== "approved" || !authorization.approvedUserId || !authorization.approvedSessionId || authorization.expiresAt <= input.completedAt) {
|
|
1886
|
+
throw new AuthStorageError("invalid_device_authorization", "[Sixb] Device authorization is invalid.");
|
|
1887
|
+
}
|
|
1888
|
+
if (input.accessToken.projectId !== input.projectId || input.accessToken.subjectType !== "user" || input.accessToken.subjectId !== authorization.approvedUserId || input.accessToken.createdBySessionId !== authorization.approvedSessionId) {
|
|
1889
|
+
throw new AuthStorageError("invalid_device_authorization", "[Sixb] Device access token is invalid.");
|
|
1890
|
+
}
|
|
1891
|
+
const accessToken = createAccessTokenRecord(this.state, input.accessToken);
|
|
1892
|
+
const consumed = {
|
|
1893
|
+
...authorization,
|
|
1894
|
+
status: "consumed",
|
|
1895
|
+
consumedAt: new Date(input.completedAt)
|
|
1896
|
+
};
|
|
1897
|
+
this.state.deviceAuthorizations.set(key, cloneRecord(consumed));
|
|
1898
|
+
return { authorization: cloneRecord(consumed), accessToken: cloneRecord(accessToken) };
|
|
1735
1899
|
}
|
|
1736
1900
|
async completeMagicLinkSignIn(input) {
|
|
1737
1901
|
const projectId = assertNonEmpty2(input.projectId, "Project id");
|
|
@@ -3036,6 +3200,6 @@ var SYSTEM_PRINCIPAL = { type: "system", id: "system" };
|
|
|
3036
3200
|
function principalsEqual(left, right) {
|
|
3037
3201
|
return left.type === right.type && left.id === right.id;
|
|
3038
3202
|
}
|
|
3039
|
-
export { PERSONAL_ACCESS_TOKEN_PREFIX, SERVICE_ACCOUNT_ACCESS_TOKEN_PREFIX, generateAccessTokenSecret, hashAccessTokenSecret, formatAccessTokenValue, parseAccessTokenValue, getBearerAccessTokenValue, createAccessTokenCredential, CSRF_HEADER_NAME, generateCsrfToken, isCsrfExemptMethod, verifyDoubleSubmitCsrf, applications, SecurityValidationError, isGroupDefinition, isMembershipPolicyDefinition, isRoleDefinition, defineGroup, defineRole, defineMembershipPolicy, every, can, SecurityRegistry, AuthStorageError, paginate, InMemoryAuthStorage, generateSessionSecret, hashSessionSecret, formatSessionCookieValue, parseSessionCookieValue, createSessionCredential, AuthRuntime, SYSTEM_PRINCIPAL, principalsEqual };
|
|
3203
|
+
export { PERSONAL_ACCESS_TOKEN_PREFIX, SERVICE_ACCOUNT_ACCESS_TOKEN_PREFIX, generateAccessTokenSecret, hashAccessTokenSecret, formatAccessTokenValue, parseAccessTokenValue, getBearerAccessTokenValue, createAccessTokenCredential, CSRF_HEADER_NAME, generateCsrfToken, isCsrfExemptMethod, verifyDoubleSubmitCsrf, applications, SecurityValidationError, isGroupDefinition, isMembershipPolicyDefinition, isRoleDefinition, defineGroup, defineRole, defineMembershipPolicy, every, can, SecurityRegistry, AuthStorageError, MAX_PENDING_DEVICE_AUTHORIZATIONS, paginate, InMemoryAuthStorage, generateSessionSecret, hashSessionSecret, formatSessionCookieValue, parseSessionCookieValue, createSessionCredential, AuthRuntime, SYSTEM_PRINCIPAL, principalsEqual };
|
|
3040
3204
|
|
|
3041
|
-
//# debugId=
|
|
3205
|
+
//# debugId=D187F2B23E70181D64756E2164756E21
|