@sixb/core 0.1.6 → 0.1.8
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/delegated-admission.d.ts +24 -0
- package/dist/actions/delegated-admission.d.ts.map +1 -0
- package/dist/actions/descriptor.d.ts +29 -0
- package/dist/actions/descriptor.d.ts.map +1 -0
- package/dist/actions/execution.d.ts +5 -5
- package/dist/actions/execution.d.ts.map +1 -1
- package/dist/actions/index.js +50 -40
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/request.d.ts.map +1 -1
- package/dist/actions/run-authorization.d.ts +20 -0
- package/dist/actions/run-authorization.d.ts.map +1 -0
- package/dist/actions/run-dispatch.d.ts +3 -1
- package/dist/actions/run-dispatch.d.ts.map +1 -1
- package/dist/actions/worker.js +5 -5
- package/dist/actions/worker.js.map +1 -1
- package/dist/agents/adapters.d.ts +6 -166
- 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-resolution.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 +1 -10
- 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/identity.d.ts +3 -0
- package/dist/agents/identity.d.ts.map +1 -0
- package/dist/agents/ids.d.ts +4 -0
- package/dist/agents/ids.d.ts.map +1 -1
- package/dist/agents/index.d.ts +15 -11
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +90 -78
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/message.d.ts +19 -13
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/model-loop.d.ts +58 -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 -1
- 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 +3 -13
- 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 +12 -9
- package/dist/auth/index.js.map +1 -1
- package/dist/authorization/decision.d.ts +14 -3
- package/dist/authorization/decision.d.ts.map +1 -1
- package/dist/authorization/grant-kinds.d.ts +25 -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 +12 -7
- 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 +6 -6
- package/dist/bootstrap/discovery.d.ts.map +1 -1
- package/dist/bootstrap/index.js +62 -51
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
- package/dist/broker/index.js +2 -2
- package/dist/{chunk-zqysyfjt.js → chunk-08m3b6w8.js} +1 -1
- package/dist/chunk-19jp6g9d.js +131 -0
- package/dist/chunk-19jp6g9d.js.map +11 -0
- package/dist/{chunk-3j7573mj.js → chunk-2dw777qw.js} +50 -5
- package/dist/{chunk-3j7573mj.js.map → chunk-2dw777qw.js.map} +4 -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-359jm1jw.js +147 -0
- package/dist/chunk-359jm1jw.js.map +10 -0
- package/dist/{chunk-dy311asx.js → chunk-3xep5cjx.js} +58 -23
- package/dist/chunk-3xep5cjx.js.map +15 -0
- package/dist/{chunk-n4spznws.js → chunk-3z1qec12.js} +83 -12
- package/dist/chunk-3z1qec12.js.map +12 -0
- package/dist/{chunk-z3zp0bj1.js → chunk-407j3msh.js} +1 -1
- package/dist/{chunk-rhrbz7d4.js → chunk-4a849fr1.js} +1 -1
- package/dist/{chunk-cy0n5dms.js → chunk-4jjp5k14.js} +1 -1
- package/dist/chunk-4qfkag59.js +1568 -0
- package/dist/chunk-4qfkag59.js.map +20 -0
- package/dist/{chunk-1e8m6yn3.js → chunk-4sm0aznx.js} +685 -86
- package/dist/chunk-4sm0aznx.js.map +43 -0
- package/dist/chunk-4yqmp43v.js +159 -0
- package/dist/chunk-4yqmp43v.js.map +11 -0
- package/dist/{chunk-rdeagz6b.js → chunk-5e3pq99w.js} +3 -7
- package/dist/{chunk-rdeagz6b.js.map → chunk-5e3pq99w.js.map} +3 -3
- package/dist/{chunk-ezake7g1.js → chunk-5ntny1qx.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-qewtks41.js → chunk-9nbmsvn5.js} +123 -20
- package/dist/chunk-9nbmsvn5.js.map +11 -0
- package/dist/{chunk-5sxb1168.js → chunk-aa2pen2v.js} +256 -82
- package/dist/chunk-aa2pen2v.js.map +34 -0
- package/dist/{chunk-819wnjz8.js → chunk-ajnan18g.js} +13 -10
- package/dist/chunk-ajnan18g.js.map +12 -0
- package/dist/chunk-c15dr03f.js +43 -0
- package/dist/chunk-c15dr03f.js.map +10 -0
- 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-nkbfrt0c.js → chunk-f26bck4t.js} +7 -7
- package/dist/{chunk-x2yw73hy.js → chunk-fvt9rjsa.js} +23 -7
- package/dist/chunk-fvt9rjsa.js.map +10 -0
- package/dist/{chunk-znagycq7.js → chunk-gbejpkex.js} +5 -5
- package/dist/{chunk-znagycq7.js.map → chunk-gbejpkex.js.map} +1 -1
- package/dist/{chunk-e42bc6m3.js → chunk-gzasd5b6.js} +5 -5
- package/dist/{chunk-e42bc6m3.js.map → chunk-gzasd5b6.js.map} +3 -3
- package/dist/{chunk-rnshztfq.js → chunk-h0k55pc7.js} +6 -6
- package/dist/{chunk-rnshztfq.js.map → chunk-h0k55pc7.js.map} +1 -1
- package/dist/chunk-h5vqbfmd.js +1537 -0
- package/dist/chunk-h5vqbfmd.js.map +19 -0
- package/dist/chunk-j1sbhm7p.js +45 -0
- package/dist/chunk-j1sbhm7p.js.map +10 -0
- 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-f6erf2vv.js → chunk-k522z7v6.js} +10 -5
- package/dist/chunk-k522z7v6.js.map +10 -0
- package/dist/{chunk-htq0qh7z.js → chunk-ka3a2ft3.js} +2 -2
- package/dist/{chunk-ckxfnx7f.js → chunk-mth82m8t.js} +129 -95
- package/dist/chunk-mth82m8t.js.map +14 -0
- package/dist/{chunk-5gynx4xn.js → chunk-mwsxn98e.js} +79 -77
- package/dist/{chunk-5gynx4xn.js.map → chunk-mwsxn98e.js.map} +8 -8
- package/dist/{chunk-f2rt4vkh.js → chunk-n2w475r0.js} +3 -3
- package/dist/chunk-n4khvw9n.js +111 -0
- package/dist/chunk-n4khvw9n.js.map +11 -0
- package/dist/{chunk-t8t39h7v.js → chunk-n6jxh8sw.js} +10 -2
- package/dist/chunk-n6jxh8sw.js.map +10 -0
- package/dist/chunk-nn0tekr1.js +284 -0
- package/dist/chunk-nn0tekr1.js.map +12 -0
- package/dist/chunk-nx7k8tpr.js +436 -0
- package/dist/chunk-nx7k8tpr.js.map +12 -0
- package/dist/{chunk-drjqm1aa.js → chunk-p03r0h5s.js} +310 -28
- package/dist/chunk-p03r0h5s.js.map +16 -0
- package/dist/{chunk-1g8negke.js → chunk-p1rzczbt.js} +93 -8
- package/dist/chunk-p1rzczbt.js.map +12 -0
- package/dist/{chunk-f83ka50g.js → chunk-p1x242ad.js} +652 -77
- package/dist/chunk-p1x242ad.js.map +25 -0
- package/dist/chunk-p2vqaxkc.js +528 -0
- package/dist/chunk-p2vqaxkc.js.map +15 -0
- package/dist/{chunk-a31h57d5.js → chunk-pc7ys28c.js} +70 -7
- package/dist/chunk-pc7ys28c.js.map +14 -0
- package/dist/{chunk-md8k0r54.js → chunk-q0k9nc5a.js} +281 -89
- package/dist/chunk-q0k9nc5a.js.map +14 -0
- package/dist/{chunk-bhxaq2nn.js → chunk-qw9gvjv5.js} +1 -1
- package/dist/chunk-r8jrnexe.js +403 -0
- package/dist/chunk-r8jrnexe.js.map +10 -0
- package/dist/{chunk-h9kxd41f.js → chunk-rafagrwr.js} +48 -7
- package/dist/chunk-rafagrwr.js.map +11 -0
- package/dist/{chunk-dysw7nsm.js → chunk-rv2hkwwa.js} +2 -2
- package/dist/{chunk-ghteq96b.js → chunk-s5y30bc9.js} +2 -2
- package/dist/{chunk-t624af60.js → chunk-sbzzr4kx.js} +1848 -757
- package/dist/chunk-sbzzr4kx.js.map +63 -0
- 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-0hc5j867.js → chunk-v1xppd0y.js} +17 -13
- package/dist/{chunk-0hc5j867.js.map → chunk-v1xppd0y.js.map} +2 -2
- package/dist/chunk-v4en4jc2.js +252 -0
- package/dist/chunk-v4en4jc2.js.map +10 -0
- package/dist/{chunk-xkthy56g.js → chunk-w1tvjszy.js} +1 -1
- package/dist/{chunk-8b55ygje.js → chunk-w3e09qqk.js} +1 -1
- package/dist/{chunk-8gv5z0zm.js → chunk-w9tg6yyb.js} +13 -8
- package/dist/{chunk-8gv5z0zm.js.map → chunk-w9tg6yyb.js.map} +3 -3
- package/dist/{chunk-62c7t4jc.js → chunk-wdage1eb.js} +1 -1
- package/dist/{chunk-tg5mee00.js → chunk-wtf06et8.js} +11 -7
- package/dist/{chunk-tg5mee00.js.map → chunk-wtf06et8.js.map} +3 -3
- package/dist/{chunk-nva1xkjz.js → chunk-xajtptbw.js} +1237 -1434
- package/dist/chunk-xajtptbw.js.map +40 -0
- package/dist/{chunk-xc7hq65b.js → chunk-yp8ee62z.js} +49 -2
- package/dist/chunk-yp8ee62z.js.map +11 -0
- package/dist/chunk-z4ccwbkz.js +139 -0
- package/dist/chunk-z4ccwbkz.js.map +10 -0
- package/dist/datasets/builders.d.ts +11 -2
- package/dist/datasets/builders.d.ts.map +1 -1
- package/dist/datasets/changes.d.ts +14 -4
- package/dist/datasets/changes.d.ts.map +1 -1
- package/dist/datasets/execution.d.ts +15 -1
- package/dist/datasets/execution.d.ts.map +1 -1
- package/dist/datasets/index.d.ts +1 -0
- package/dist/datasets/index.d.ts.map +1 -1
- package/dist/datasets/sequence.d.ts +7 -0
- package/dist/datasets/sequence.d.ts.map +1 -0
- package/dist/datasets/types.d.ts +1 -0
- package/dist/datasets/types.d.ts.map +1 -1
- package/dist/datasets/validation.d.ts.map +1 -1
- package/dist/datasets/write.d.ts +37 -0
- package/dist/datasets/write.d.ts.map +1 -0
- package/dist/datasets/write.js +17 -0
- package/dist/datasets/write.js.map +9 -0
- 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/execution.d.ts.map +1 -1
- package/dist/events/index.js +4 -4
- package/dist/events/types/datasets.d.ts +2 -6
- package/dist/events/types/datasets.d.ts.map +1 -1
- package/dist/execution/agent.d.ts +18 -9
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +62 -46
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorization.d.ts +68 -20
- package/dist/execution/authorization.d.ts.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts +69 -0
- package/dist/execution/authorized-object-reader.d.ts.map +1 -0
- package/dist/execution/durable.d.ts.map +1 -1
- package/dist/execution/index.d.ts +1 -1
- package/dist/execution/index.d.ts.map +1 -1
- package/dist/execution/primitive.js +55 -46
- package/dist/execution/primitive.js.map +2 -2
- package/dist/execution/request.d.ts +14 -1
- package/dist/execution/request.d.ts.map +1 -1
- package/dist/execution/request.js +92 -54
- package/dist/execution/request.js.map +3 -3
- package/dist/execution/scopes.d.ts +16 -0
- package/dist/execution/scopes.d.ts.map +1 -1
- package/dist/execution/types.d.ts +10 -1
- package/dist/execution/types.d.ts.map +1 -1
- package/dist/http/api-routes.d.ts +2 -0
- package/dist/http/api-routes.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/index.d.ts +15 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +128 -109
- 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/definition-updates.d.ts.map +1 -1
- package/dist/lake-storage/errors.d.ts +5 -1
- package/dist/lake-storage/errors.d.ts.map +1 -1
- package/dist/lake-storage/in-memory.d.ts +1 -0
- package/dist/lake-storage/in-memory.d.ts.map +1 -1
- package/dist/lake-storage/index.d.ts +6 -1
- package/dist/lake-storage/index.d.ts.map +1 -1
- package/dist/lake-storage/index.js +27 -10
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/lake-storage/merge-validation.d.ts.map +1 -1
- package/dist/lake-storage/merge.d.ts +13 -2
- package/dist/lake-storage/merge.d.ts.map +1 -1
- package/dist/lake-storage/source-ordering.d.ts +19 -0
- package/dist/lake-storage/source-ordering.d.ts.map +1 -0
- package/dist/lake-storage/sql-transforms.d.ts +2 -1
- package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
- package/dist/lake-storage/types.d.ts +10 -5
- package/dist/lake-storage/types.d.ts.map +1 -1
- package/dist/lake-storage/version-inputs.d.ts +4 -0
- package/dist/lake-storage/version-inputs.d.ts.map +1 -0
- 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 +38 -31
- 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/authorized-ontology-view.d.ts +25 -0
- package/dist/objects/authorized-ontology-view.d.ts.map +1 -0
- package/dist/objects/execution.d.ts +1 -1
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +43 -36
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/link/authorization.d.ts +2 -7
- package/dist/objects/link/authorization.d.ts.map +1 -1
- package/dist/objects/query/executor.d.ts +4 -2
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.js +36 -29
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/links.d.ts +22 -1
- package/dist/objects/query/links.d.ts.map +1 -1
- package/dist/objects/query/selected-read-admission.d.ts +27 -0
- package/dist/objects/query/selected-read-admission.d.ts.map +1 -0
- package/dist/objects/query/validate.d.ts +60 -2
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/sdk/object-handle.d.ts.map +1 -1
- package/dist/objects/sdk/object-set.d.ts.map +1 -1
- package/dist/objects/sdk/runtime-query-executor.d.ts +2 -7
- package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
- package/dist/objects/sdk/telemetry-channel.d.ts.map +1 -1
- package/dist/objects/service/list-service.d.ts +2 -3
- package/dist/objects/service/list-service.d.ts.map +1 -1
- package/dist/objects/telemetry/history.d.ts +8 -6
- package/dist/objects/telemetry/history.d.ts.map +1 -1
- package/dist/objects/telemetry/index.d.ts +2 -2
- package/dist/objects/telemetry/index.d.ts.map +1 -1
- package/dist/objects/telemetry/workload.d.ts +11 -0
- package/dist/objects/telemetry/workload.d.ts.map +1 -0
- package/dist/ontology/index.d.ts +2 -1
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +15 -14
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/inference/index.d.ts +2 -1
- package/dist/ontology/inference/index.d.ts.map +1 -1
- package/dist/ontology/internal.d.ts +0 -1
- package/dist/ontology/internal.d.ts.map +1 -1
- package/dist/ontology/internal.js +5 -10
- package/dist/ontology/internal.js.map +3 -3
- package/dist/ontology/json-schema.d.ts +10 -6
- package/dist/ontology/json-schema.d.ts.map +1 -1
- package/dist/ontology/link-path-selection.d.ts +35 -0
- package/dist/ontology/link-path-selection.d.ts.map +1 -0
- package/dist/ontology/refs.d.ts +2 -0
- package/dist/ontology/refs.d.ts.map +1 -1
- package/dist/ontology/tokens.d.ts +2 -1
- package/dist/ontology/tokens.d.ts.map +1 -1
- package/dist/pipelines/execution.d.ts.map +1 -1
- package/dist/pipelines/index.js +41 -36
- package/dist/pipelines/index.js.map +1 -1
- package/dist/pipelines/request.d.ts.map +1 -1
- package/dist/projections/execution.d.ts.map +1 -1
- package/dist/projections/internal.js +39 -32
- package/dist/projections/internal.js.map +1 -1
- package/dist/projections/run-dispatch.d.ts.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/rules/execution.d.ts.map +1 -1
- package/dist/runtime/create.d.ts +7 -4
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/definitions.d.ts +4 -2
- package/dist/runtime/definitions.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +5 -2
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +1 -0
- package/dist/runtime/internal.d.ts.map +1 -1
- package/dist/runtime/resolve-definitions.d.ts +4 -2
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/sixb.d.ts +8 -2
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +3 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/schedules/execution.d.ts +2 -1
- package/dist/schedules/execution.d.ts.map +1 -1
- package/dist/security/every.d.ts +4 -4
- package/dist/security/every.d.ts.map +1 -1
- package/dist/security/grants.d.ts +12 -6
- 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 +2 -1
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +19 -5
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts +6 -2
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/shares/access-plan.d.ts +22 -0
- package/dist/shares/access-plan.d.ts.map +1 -0
- package/dist/shares/builders.d.ts +14 -0
- package/dist/shares/builders.d.ts.map +1 -0
- package/dist/shares/compiler.d.ts +14 -0
- package/dist/shares/compiler.d.ts.map +1 -0
- package/dist/shares/errors.d.ts +4 -0
- package/dist/shares/errors.d.ts.map +1 -0
- package/dist/shares/execution.d.ts +57 -0
- package/dist/shares/execution.d.ts.map +1 -0
- package/dist/shares/index.d.ts +10 -0
- package/dist/shares/index.d.ts.map +1 -0
- package/dist/shares/internal.d.ts +3 -0
- package/dist/shares/internal.d.ts.map +1 -0
- package/dist/shares/internal.js +239 -0
- package/dist/shares/internal.js.map +10 -0
- package/dist/shares/intersection.d.ts +9 -0
- package/dist/shares/intersection.d.ts.map +1 -0
- package/dist/shares/session-protocol.d.ts +41 -0
- package/dist/shares/session-protocol.d.ts.map +1 -0
- package/dist/shares/types.d.ts +51 -0
- package/dist/shares/types.d.ts.map +1 -0
- package/dist/shares/validation.d.ts +11 -0
- package/dist/shares/validation.d.ts.map +1 -0
- 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/in-memory.d.ts +3 -0
- package/dist/storage/executions/in-memory.d.ts.map +1 -1
- package/dist/storage/executions/provider.d.ts +4 -1
- package/dist/storage/executions/provider.d.ts.map +1 -1
- package/dist/storage/executions/provider.js +23 -3
- package/dist/storage/executions/provider.js.map +3 -3
- package/dist/storage/executions/run-link.d.ts +14 -2
- package/dist/storage/executions/run-link.d.ts.map +1 -1
- package/dist/storage/executions/validation.d.ts +6 -0
- package/dist/storage/executions/validation.d.ts.map +1 -1
- package/dist/storage/in-memory/index.d.ts +12 -0
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +15 -6
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +78 -36
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/objects/execution-limits.d.ts +25 -0
- package/dist/storage/objects/execution-limits.d.ts.map +1 -0
- package/dist/storage/objects/guard.d.ts +16 -0
- package/dist/storage/objects/guard.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/index.d.ts +3 -0
- package/dist/storage/objects/in-memory/index.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/keys.d.ts +10 -0
- package/dist/storage/objects/in-memory/keys.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/query.d.ts +31 -0
- package/dist/storage/objects/in-memory/query.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/read-scope.d.ts +18 -0
- package/dist/storage/objects/in-memory/read-scope.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/read-source.d.ts +10 -0
- package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/selected-reader.d.ts +9 -0
- package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -0
- package/dist/storage/objects/{in-memory.d.ts → in-memory/storage.d.ts} +13 -10
- package/dist/storage/objects/in-memory/storage.d.ts.map +1 -0
- package/dist/storage/objects/index.d.ts +4 -1
- package/dist/storage/objects/index.d.ts.map +1 -1
- package/dist/storage/objects/keys.d.ts +1 -1
- package/dist/storage/objects/keys.d.ts.map +1 -1
- package/dist/storage/objects/read-scope.d.ts +25 -0
- package/dist/storage/objects/read-scope.d.ts.map +1 -0
- package/dist/storage/objects/types.d.ts +114 -22
- package/dist/storage/objects/types.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +3 -3
- package/dist/storage/operation-scope.d.ts +3 -0
- package/dist/storage/operation-scope.d.ts.map +1 -1
- package/dist/storage/operation-scope.js +4 -2
- package/dist/storage/operation-scope.js.map +1 -1
- package/dist/storage/pipeline-runs/provider.js +2 -2
- package/dist/storage/projection-runs/provider.js +4 -4
- package/dist/storage/share-grants/errors.d.ts +8 -0
- package/dist/storage/share-grants/errors.d.ts.map +1 -0
- package/dist/storage/share-grants/in-memory.d.ts +11 -0
- package/dist/storage/share-grants/in-memory.d.ts.map +1 -0
- package/dist/storage/share-grants/index.d.ts +5 -0
- package/dist/storage/share-grants/index.d.ts.map +1 -0
- package/dist/storage/share-grants/provider.d.ts +4 -0
- package/dist/storage/share-grants/provider.d.ts.map +1 -0
- package/dist/storage/share-grants/provider.js +24 -0
- package/dist/storage/share-grants/provider.js.map +9 -0
- package/dist/storage/share-grants/record.d.ts +11 -0
- package/dist/storage/share-grants/record.d.ts.map +1 -0
- package/dist/storage/share-grants/types.d.ts +97 -0
- package/dist/storage/share-grants/types.d.ts.map +1 -0
- package/dist/storage/share-sessions/errors.d.ts +8 -0
- package/dist/storage/share-sessions/errors.d.ts.map +1 -0
- package/dist/storage/share-sessions/in-memory.d.ts +14 -0
- package/dist/storage/share-sessions/in-memory.d.ts.map +1 -0
- package/dist/storage/share-sessions/index.d.ts +5 -0
- package/dist/storage/share-sessions/index.d.ts.map +1 -0
- package/dist/storage/share-sessions/provider.d.ts +3 -0
- package/dist/storage/share-sessions/provider.d.ts.map +1 -0
- package/dist/storage/share-sessions/provider.js +20 -0
- package/dist/storage/share-sessions/provider.js.map +9 -0
- package/dist/storage/share-sessions/record.d.ts +8 -0
- package/dist/storage/share-sessions/record.d.ts.map +1 -0
- package/dist/storage/share-sessions/types.d.ts +50 -0
- package/dist/storage/share-sessions/types.d.ts.map +1 -0
- package/dist/storage/sync-runs/provider.js +2 -2
- package/dist/storage/transaction.d.ts +2 -1
- package/dist/storage/transaction.d.ts.map +1 -1
- package/dist/storage/types.d.ts +13 -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 +14 -12
- 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/execution.d.ts.map +1 -1
- package/dist/syncs/index.js +41 -36
- package/dist/syncs/index.js.map +1 -1
- package/dist/syncs/request.d.ts.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/dataset-sequence-contract.d.ts +4 -0
- package/dist/testing/dataset-sequence-contract.d.ts.map +1 -0
- package/dist/testing/effective-storage-contract.d.ts.map +1 -1
- package/dist/testing/execution-storage-contract.d.ts +4 -0
- package/dist/testing/execution-storage-contract.d.ts.map +1 -1
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +5392 -2070
- package/dist/testing/index.js.map +21 -15
- package/dist/testing/lake-merge-storage-contract.d.ts +1 -0
- package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
- package/dist/testing/lake-storage-contract.d.ts.map +1 -1
- package/dist/testing/object-read-scope-contract.d.ts +22 -0
- package/dist/testing/object-read-scope-contract.d.ts.map +1 -0
- package/dist/testing/queues-contract.d.ts.map +1 -1
- package/dist/testing/share-grant-storage-contract.d.ts +10 -0
- package/dist/testing/share-grant-storage-contract.d.ts.map +1 -0
- package/dist/testing/share-session-storage-contract.d.ts +9 -0
- package/dist/testing/share-session-storage-contract.d.ts.map +1 -0
- package/dist/webhooks/internal.js +36 -29
- 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 +63 -48
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/request.d.ts.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 +43 -4
- package/src/actions/delegated-admission.ts +72 -0
- package/src/actions/descriptor.ts +58 -0
- package/src/actions/execution.ts +99 -24
- package/src/actions/request.ts +136 -19
- package/src/actions/run-authorization.ts +53 -0
- package/src/actions/run-dispatch.ts +8 -1
- package/src/agents/adapters.ts +60 -456
- package/src/agents/authority.ts +215 -34
- package/src/agents/builders.ts +3 -50
- package/src/agents/context-compaction.ts +4 -0
- package/src/agents/context-resolution.ts +1 -4
- package/src/agents/dispatch.ts +59 -2
- package/src/agents/errors.ts +4 -11
- package/src/agents/execution.ts +65 -56
- package/src/agents/identity.ts +4 -0
- package/src/agents/ids.ts +16 -1
- package/src/agents/index.ts +23 -30
- package/src/agents/message.ts +20 -12
- package/src/agents/model-loop.ts +1071 -0
- package/src/agents/reference.ts +7 -0
- package/src/agents/request.ts +157 -77
- 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 +9 -5
- package/src/agents/types.ts +39 -81
- package/src/agents/validation.ts +11 -216
- package/src/ai-usage/execution.ts +189 -0
- package/src/ai-usage/index.ts +15 -0
- package/src/authorization/decision.ts +54 -22
- package/src/authorization/grant-kinds.ts +72 -15
- package/src/authorization/index.ts +2 -0
- package/src/authorization/resolve.ts +12 -5
- package/src/authorization/types.ts +7 -5
- package/src/bootstrap/discovery.ts +3 -3
- package/src/bootstrap/ontology-type-manifest.ts +12 -6
- package/src/datasets/builders.ts +23 -2
- package/src/datasets/changes.ts +16 -4
- package/src/datasets/execution.ts +76 -5
- package/src/datasets/index.ts +1 -0
- package/src/datasets/sequence.ts +77 -0
- package/src/datasets/types.ts +1 -0
- package/src/datasets/validation.ts +26 -0
- package/src/datasets/write.ts +240 -0
- package/src/error-reporting/types.ts +4 -2
- package/src/errors/catalog.ts +8 -0
- package/src/events/execution.ts +57 -7
- package/src/events/types/datasets.ts +2 -6
- package/src/execution/agent.ts +129 -25
- package/src/execution/authorization.ts +493 -83
- package/src/execution/authorized-object-reader.ts +695 -0
- package/src/execution/durable.ts +10 -2
- package/src/execution/index.ts +1 -0
- package/src/execution/request.ts +67 -14
- package/src/execution/scopes.ts +36 -6
- package/src/execution/types.ts +9 -1
- package/src/http/api-routes.ts +108 -0
- package/src/index.ts +72 -22
- package/src/json.ts +9 -0
- package/src/lake-storage/definition-updates.ts +9 -0
- package/src/lake-storage/errors.ts +6 -1
- package/src/lake-storage/in-memory.ts +53 -17
- package/src/lake-storage/index.ts +10 -1
- package/src/lake-storage/merge-validation.ts +12 -2
- package/src/lake-storage/merge.ts +40 -2
- package/src/lake-storage/source-ordering.ts +95 -0
- package/src/lake-storage/sql-transforms.ts +2 -1
- package/src/lake-storage/types.ts +10 -5
- package/src/lake-storage/version-inputs.ts +14 -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/objects/authorized-ontology-view.ts +512 -0
- package/src/objects/execution.ts +98 -143
- package/src/objects/link/authorization.ts +3 -2
- package/src/objects/query/executor.ts +45 -34
- package/src/objects/query/links.ts +84 -25
- package/src/objects/query/selected-read-admission.ts +310 -0
- package/src/objects/query/validate.ts +353 -36
- package/src/objects/sdk/object-handle.ts +2 -8
- package/src/objects/sdk/object-set.ts +10 -11
- package/src/objects/sdk/runtime-query-executor.ts +8 -28
- package/src/objects/sdk/telemetry-channel.ts +11 -7
- package/src/objects/service/list-service.ts +15 -29
- package/src/objects/telemetry/history.ts +297 -17
- package/src/objects/telemetry/index.ts +2 -2
- package/src/objects/telemetry/workload.ts +79 -0
- package/src/ontology/index.ts +7 -1
- package/src/ontology/inference/index.ts +4 -1
- package/src/ontology/internal.ts +0 -1
- package/src/ontology/json-schema.ts +13 -12
- package/src/ontology/link-path-selection.ts +193 -0
- package/src/ontology/refs.ts +19 -0
- package/src/ontology/tokens.ts +15 -8
- package/src/pipelines/execution.ts +30 -7
- package/src/pipelines/request.ts +5 -0
- package/src/projections/execution.ts +72 -11
- package/src/projections/run-dispatch.ts +6 -12
- package/src/queues/in-memory.ts +5 -0
- package/src/queues/index.ts +11 -0
- package/src/queues/types.ts +20 -3
- package/src/rules/execution.ts +20 -8
- package/src/runtime/create.ts +11 -5
- package/src/runtime/definitions.ts +4 -2
- package/src/runtime/host.ts +28 -8
- package/src/runtime/internal.ts +1 -0
- package/src/runtime/resolve-definitions.ts +22 -36
- package/src/runtime/sixb.ts +29 -10
- package/src/runtime/types.ts +3 -0
- package/src/schedules/execution.ts +24 -2
- package/src/security/every.ts +4 -4
- package/src/security/grants.ts +100 -14
- package/src/security/index.ts +3 -0
- package/src/security/registry.ts +9 -5
- package/src/security/types.ts +23 -4
- package/src/security/validation.ts +33 -9
- package/src/shares/access-plan.ts +225 -0
- package/src/shares/builders.ts +381 -0
- package/src/shares/compiler.ts +359 -0
- package/src/shares/errors.ts +3 -0
- package/src/shares/execution.ts +394 -0
- package/src/shares/index.ts +28 -0
- package/src/shares/internal.ts +9 -0
- package/src/shares/intersection.ts +178 -0
- package/src/shares/session-protocol.ts +258 -0
- package/src/shares/types.ts +76 -0
- package/src/shares/validation.ts +40 -0
- 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/in-memory.ts +9 -1
- package/src/storage/executions/provider.ts +30 -1
- package/src/storage/executions/run-link.ts +45 -6
- package/src/storage/executions/validation.ts +82 -7
- package/src/storage/in-memory/index.ts +69 -6
- package/src/storage/index.ts +102 -1
- package/src/storage/objects/execution-limits.ts +283 -0
- package/src/storage/objects/guard.ts +55 -0
- package/src/storage/objects/in-memory/index.ts +2 -0
- package/src/storage/objects/in-memory/keys.ts +46 -0
- package/src/storage/objects/in-memory/query.ts +754 -0
- package/src/storage/objects/in-memory/read-scope.ts +211 -0
- package/src/storage/objects/in-memory/read-source.ts +10 -0
- package/src/storage/objects/in-memory/selected-reader.ts +252 -0
- package/src/storage/objects/in-memory/storage.ts +589 -0
- package/src/storage/objects/index.ts +21 -0
- package/src/storage/objects/keys.ts +1 -1
- package/src/storage/objects/read-scope.ts +672 -0
- package/src/storage/objects/types.ts +123 -19
- package/src/storage/operation-scope.ts +16 -0
- package/src/storage/share-grants/errors.ts +14 -0
- package/src/storage/share-grants/in-memory.ts +107 -0
- package/src/storage/share-grants/index.ts +14 -0
- package/src/storage/share-grants/provider.ts +11 -0
- package/src/storage/share-grants/record.ts +347 -0
- package/src/storage/share-grants/types.ts +112 -0
- package/src/storage/share-sessions/errors.ts +14 -0
- package/src/storage/share-sessions/in-memory.ts +105 -0
- package/src/storage/share-sessions/index.ts +11 -0
- package/src/storage/share-sessions/provider.ts +9 -0
- package/src/storage/share-sessions/record.ts +176 -0
- package/src/storage/share-sessions/types.ts +57 -0
- package/src/storage/transaction.ts +14 -2
- package/src/storage/types.ts +64 -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/syncs/execution.ts +25 -5
- package/src/syncs/request.ts +5 -0
- 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/dataset-sequence-contract.ts +373 -0
- package/src/testing/effective-storage-contract.ts +34 -0
- package/src/testing/execution-storage-contract.ts +81 -2
- package/src/testing/index.ts +26 -0
- package/src/testing/lake-merge-storage-contract.ts +3 -0
- package/src/testing/lake-storage-contract.ts +58 -0
- package/src/testing/object-read-scope-contract.ts +939 -0
- package/src/testing/queues-contract.ts +36 -1
- package/src/testing/share-grant-storage-contract.ts +325 -0
- package/src/testing/share-session-storage-contract.ts +235 -0
- package/src/workflows/agent-step-identity.ts +4 -0
- package/src/workflows/builders.ts +95 -9
- package/src/workflows/execution.ts +55 -16
- package/src/workflows/failure.ts +2 -2
- package/src/workflows/index.ts +3 -0
- package/src/workflows/request.ts +5 -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-4gz41why.js +0 -72
- package/dist/chunk-4gz41why.js.map +0 -11
- package/dist/chunk-5sxb1168.js.map +0 -34
- package/dist/chunk-6gjqgd3d.js.map +0 -11
- package/dist/chunk-819wnjz8.js.map +0 -12
- package/dist/chunk-a31h57d5.js.map +0 -13
- package/dist/chunk-a44d5zgd.js +0 -556
- package/dist/chunk-a44d5zgd.js.map +0 -16
- package/dist/chunk-ckxfnx7f.js.map +0 -13
- package/dist/chunk-dm72y8wt.js.map +0 -10
- package/dist/chunk-drjqm1aa.js.map +0 -15
- package/dist/chunk-dy311asx.js.map +0 -14
- package/dist/chunk-f6erf2vv.js.map +0 -10
- package/dist/chunk-f83ka50g.js.map +0 -23
- 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-md8k0r54.js.map +0 -14
- package/dist/chunk-n4spznws.js.map +0 -11
- package/dist/chunk-nva1xkjz.js.map +0 -46
- package/dist/chunk-qewtks41.js.map +0 -11
- package/dist/chunk-t0jjkep3.js.map +0 -10
- package/dist/chunk-t624af60.js.map +0 -56
- package/dist/chunk-t8t39h7v.js.map +0 -10
- package/dist/chunk-t9xghkva.js +0 -28
- package/dist/chunk-t9xghkva.js.map +0 -10
- package/dist/chunk-x2yw73hy.js.map +0 -10
- package/dist/chunk-xc7hq65b.js.map +0 -10
- package/dist/storage/objects/in-memory.d.ts.map +0 -1
- package/src/storage/objects/in-memory.ts +0 -1241
- /package/dist/{chunk-zqysyfjt.js.map → chunk-08m3b6w8.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-cy0n5dms.js.map → chunk-4jjp5k14.js.map} +0 -0
- /package/dist/{chunk-ezake7g1.js.map → chunk-5ntny1qx.js.map} +0 -0
- /package/dist/{chunk-72q2y8hn.js.map → chunk-8tsf6dmc.js.map} +0 -0
- /package/dist/{chunk-vybf6pkp.js.map → chunk-dbc80ad7.js.map} +0 -0
- /package/dist/{chunk-nkbfrt0c.js.map → chunk-f26bck4t.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-f2rt4vkh.js.map → chunk-n2w475r0.js.map} +0 -0
- /package/dist/{chunk-bhxaq2nn.js.map → chunk-qw9gvjv5.js.map} +0 -0
- /package/dist/{chunk-dysw7nsm.js.map → chunk-rv2hkwwa.js.map} +0 -0
- /package/dist/{chunk-ghteq96b.js.map → chunk-s5y30bc9.js.map} +0 -0
- /package/dist/{chunk-xkthy56g.js.map → chunk-w1tvjszy.js.map} +0 -0
- /package/dist/{chunk-8b55ygje.js.map → chunk-w3e09qqk.js.map} +0 -0
- /package/dist/{chunk-62c7t4jc.js.map → chunk-wdage1eb.js.map} +0 -0
|
@@ -0,0 +1,528 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import {
|
|
3
|
+
MODEL_REASONING_EFFORTS
|
|
4
|
+
} from "./chunk-trxxmgnf.js";
|
|
5
|
+
// src/runtime/errors.ts
|
|
6
|
+
class RuntimeError extends Error {
|
|
7
|
+
name = "RuntimeError";
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// src/models/definitions.ts
|
|
11
|
+
function defineLanguageModel(definition) {
|
|
12
|
+
if (definition.kind !== "language") {
|
|
13
|
+
throw new TypeError("[Sixb] Language model definitions must use kind 'language'.");
|
|
14
|
+
}
|
|
15
|
+
assertModelId(definition.providerId, "providerId");
|
|
16
|
+
assertModelId(definition.modelId, "modelId");
|
|
17
|
+
assertOptionalString(definition.name, "name");
|
|
18
|
+
assertOptionalString(definition.description, "description");
|
|
19
|
+
assertOptionalString(definition.family, "family");
|
|
20
|
+
assertOptionalString(definition.releaseDate, "releaseDate");
|
|
21
|
+
assertOptionalString(definition.knowledgeCutoff, "knowledgeCutoff");
|
|
22
|
+
const tags = freezeStrings(definition.tags, "tags");
|
|
23
|
+
const capabilities = defineModelCapabilities(definition.capabilities);
|
|
24
|
+
assertOptionalPositiveInteger(definition.contextWindow, "contextWindow");
|
|
25
|
+
assertOptionalPositiveInteger(definition.maxInputTokens, "maxInputTokens");
|
|
26
|
+
assertOptionalPositiveInteger(definition.maxOutputTokens, "maxOutputTokens");
|
|
27
|
+
return Object.freeze({
|
|
28
|
+
kind: "language",
|
|
29
|
+
providerId: definition.providerId,
|
|
30
|
+
modelId: definition.modelId,
|
|
31
|
+
...definition.name === undefined ? {} : { name: definition.name },
|
|
32
|
+
...definition.description === undefined ? {} : { description: definition.description },
|
|
33
|
+
...definition.family === undefined ? {} : { family: definition.family },
|
|
34
|
+
...tags === undefined ? {} : { tags },
|
|
35
|
+
...definition.releaseDate === undefined ? {} : { releaseDate: definition.releaseDate },
|
|
36
|
+
...definition.knowledgeCutoff === undefined ? {} : { knowledgeCutoff: definition.knowledgeCutoff },
|
|
37
|
+
...definition.contextWindow === undefined ? {} : { contextWindow: definition.contextWindow },
|
|
38
|
+
...definition.maxInputTokens === undefined ? {} : { maxInputTokens: definition.maxInputTokens },
|
|
39
|
+
...definition.maxOutputTokens === undefined ? {} : { maxOutputTokens: definition.maxOutputTokens },
|
|
40
|
+
capabilities
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function defineModelCapabilities(capabilities) {
|
|
44
|
+
assertRecord(capabilities, "capabilities");
|
|
45
|
+
const inputMediaTypes = capabilities.inputMediaTypes === "any" ? "any" : freezeStrings(capabilities.inputMediaTypes, "capabilities.inputMediaTypes");
|
|
46
|
+
for (const [field, value] of Object.entries(capabilities)) {
|
|
47
|
+
if (field === "inputMediaTypes" || field === "reasoning")
|
|
48
|
+
continue;
|
|
49
|
+
if (value !== undefined && typeof value !== "boolean") {
|
|
50
|
+
throw new TypeError(`[Sixb] Model capability '${field}' must be boolean.`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const reasoning = freezeReasoningCapabilities(capabilities.reasoning);
|
|
54
|
+
const flags = {};
|
|
55
|
+
for (const key of [
|
|
56
|
+
"localTools",
|
|
57
|
+
"parallelToolCalls",
|
|
58
|
+
"nativeStructuredOutput",
|
|
59
|
+
"providerExecutedTools"
|
|
60
|
+
]) {
|
|
61
|
+
const value = capabilities[key];
|
|
62
|
+
if (typeof value === "boolean")
|
|
63
|
+
flags[key] = value;
|
|
64
|
+
}
|
|
65
|
+
return Object.freeze({
|
|
66
|
+
...inputMediaTypes === undefined ? {} : { inputMediaTypes },
|
|
67
|
+
...reasoning === undefined ? {} : { reasoning },
|
|
68
|
+
...flags
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
function freezeReasoningCapabilities(reasoning) {
|
|
72
|
+
if (reasoning === undefined || reasoning === false)
|
|
73
|
+
return reasoning;
|
|
74
|
+
assertRecord(reasoning, "reasoning");
|
|
75
|
+
if (reasoning.canDisable !== undefined && typeof reasoning.canDisable !== "boolean") {
|
|
76
|
+
throw new TypeError("[Sixb] Model reasoning capability 'canDisable' must be boolean.");
|
|
77
|
+
}
|
|
78
|
+
const efforts = freezeReasoningEfforts(reasoning.efforts);
|
|
79
|
+
const budgetTokens = freezeReasoningBudgetCapabilities(reasoning.budgetTokens);
|
|
80
|
+
return Object.freeze({
|
|
81
|
+
...reasoning.canDisable === undefined ? {} : { canDisable: reasoning.canDisable },
|
|
82
|
+
...efforts === undefined ? {} : { efforts },
|
|
83
|
+
...budgetTokens === undefined ? {} : { budgetTokens }
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
function freezeReasoningEfforts(efforts) {
|
|
87
|
+
if (efforts === undefined)
|
|
88
|
+
return;
|
|
89
|
+
if (!Array.isArray(efforts)) {
|
|
90
|
+
throw new TypeError("[Sixb] Model reasoning capability 'efforts' must be an array.");
|
|
91
|
+
}
|
|
92
|
+
const seen = new Set;
|
|
93
|
+
return Object.freeze(efforts.map((value) => {
|
|
94
|
+
const effort = MODEL_REASONING_EFFORTS.find((allowed) => allowed === value);
|
|
95
|
+
if (effort === undefined) {
|
|
96
|
+
throw new TypeError(`[Sixb] Model reasoning effort '${String(value)}' is invalid.`);
|
|
97
|
+
}
|
|
98
|
+
if (seen.has(effort)) {
|
|
99
|
+
throw new TypeError(`[Sixb] Model reasoning effort '${effort}' is duplicated.`);
|
|
100
|
+
}
|
|
101
|
+
seen.add(effort);
|
|
102
|
+
return effort;
|
|
103
|
+
}));
|
|
104
|
+
}
|
|
105
|
+
function freezeReasoningBudgetCapabilities(budget) {
|
|
106
|
+
if (budget === undefined)
|
|
107
|
+
return;
|
|
108
|
+
assertRecord(budget, "reasoning budgetTokens");
|
|
109
|
+
assertOptionalNonnegativeInteger(budget.min, "capabilities.reasoning.budgetTokens.min");
|
|
110
|
+
assertOptionalNonnegativeInteger(budget.max, "capabilities.reasoning.budgetTokens.max");
|
|
111
|
+
if (budget.min !== undefined && budget.max !== undefined && budget.max < budget.min) {
|
|
112
|
+
throw new TypeError("[Sixb] Model reasoning token budget maximum must not be below its minimum.");
|
|
113
|
+
}
|
|
114
|
+
return Object.freeze({
|
|
115
|
+
...budget.min === undefined ? {} : { min: budget.min },
|
|
116
|
+
...budget.max === undefined ? {} : { max: budget.max }
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
function assertModelId(value, field) {
|
|
120
|
+
if (!value.trim())
|
|
121
|
+
throw new TypeError(`[Sixb] Model ${field} must not be empty.`);
|
|
122
|
+
}
|
|
123
|
+
function assertOptionalPositiveInteger(value, field) {
|
|
124
|
+
if (value !== undefined && (!Number.isSafeInteger(value) || value <= 0)) {
|
|
125
|
+
throw new TypeError(`[Sixb] Model ${field} must be a positive safe integer.`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function assertOptionalNonnegativeInteger(value, field) {
|
|
129
|
+
if (value !== undefined && (typeof value !== "number" || !Number.isSafeInteger(value) || value < 0)) {
|
|
130
|
+
throw new TypeError(`[Sixb] Model ${field} must be a nonnegative safe integer.`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function assertOptionalString(value, field) {
|
|
134
|
+
if (value !== undefined && typeof value !== "string") {
|
|
135
|
+
throw new TypeError(`[Sixb] Model ${field} must be a string.`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function freezeStrings(value, field) {
|
|
139
|
+
if (value === undefined)
|
|
140
|
+
return;
|
|
141
|
+
if (!Array.isArray(value) || value.some((entry) => typeof entry !== "string" || !entry.trim())) {
|
|
142
|
+
throw new TypeError(`[Sixb] Model ${field} must contain nonempty strings.`);
|
|
143
|
+
}
|
|
144
|
+
return Object.freeze([...value]);
|
|
145
|
+
}
|
|
146
|
+
function assertRecord(value, field) {
|
|
147
|
+
if (value === null || typeof value !== "object" || Array.isArray(value))
|
|
148
|
+
throw new TypeError(`[Sixb] Model ${field} must be an object.`);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// src/models/catalog.ts
|
|
152
|
+
function createModelCatalog(input) {
|
|
153
|
+
if (!Array.isArray(input?.language)) {
|
|
154
|
+
throw new RuntimeError("[Sixb] 'models.language' must be an array of Sixb language models.");
|
|
155
|
+
}
|
|
156
|
+
const entries = [];
|
|
157
|
+
const byProvider = new Map;
|
|
158
|
+
for (const [index, model] of input.language.entries()) {
|
|
159
|
+
assertLanguageModel(model, index);
|
|
160
|
+
let byModelId = byProvider.get(model.providerId);
|
|
161
|
+
if (byModelId === undefined) {
|
|
162
|
+
byModelId = new Map;
|
|
163
|
+
byProvider.set(model.providerId, byModelId);
|
|
164
|
+
}
|
|
165
|
+
if (byModelId.has(model.modelId)) {
|
|
166
|
+
throw new RuntimeError(`[Sixb] Duplicate language model '${model.providerId}/${model.modelId}' in 'models'. Each provider and model id pair may be configured once.`);
|
|
167
|
+
}
|
|
168
|
+
const entry = Object.freeze({
|
|
169
|
+
provider: model.providerId,
|
|
170
|
+
modelId: model.modelId,
|
|
171
|
+
model
|
|
172
|
+
});
|
|
173
|
+
byModelId.set(model.modelId, entry);
|
|
174
|
+
entries.push(entry);
|
|
175
|
+
}
|
|
176
|
+
const [defaultEntry] = entries;
|
|
177
|
+
if (defaultEntry === undefined) {
|
|
178
|
+
throw new RuntimeError("[Sixb] 'models.language' needs at least one model. Configure one or omit 'models' from createSixb().");
|
|
179
|
+
}
|
|
180
|
+
const listed = Object.freeze(entries.slice());
|
|
181
|
+
const language = Object.freeze({
|
|
182
|
+
default: defaultEntry,
|
|
183
|
+
list: () => listed,
|
|
184
|
+
getByRef: (ref) => byProvider.get(ref.provider)?.get(ref.modelId) ?? null
|
|
185
|
+
});
|
|
186
|
+
return Object.freeze({ language });
|
|
187
|
+
}
|
|
188
|
+
function assertLanguageModel(model, index) {
|
|
189
|
+
if (typeof model !== "object" && typeof model !== "function" || model === null) {
|
|
190
|
+
throw invalidLanguageModel(index, "expected a Sixb LanguageModel instance");
|
|
191
|
+
}
|
|
192
|
+
const candidate = model;
|
|
193
|
+
assertModelIdentifier(candidate.providerId, "provider", index);
|
|
194
|
+
assertModelIdentifier(candidate.modelId, "modelId", index);
|
|
195
|
+
if (typeof candidate.stream !== "function") {
|
|
196
|
+
throw invalidLanguageModel(index, "expected 'stream' to be a function");
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
const definition = defineLanguageModel(candidate.definition);
|
|
200
|
+
if (definition.providerId !== candidate.providerId || definition.modelId !== candidate.modelId) {
|
|
201
|
+
throw new Error("definition identity does not match the binding");
|
|
202
|
+
}
|
|
203
|
+
} catch (error) {
|
|
204
|
+
throw invalidLanguageModel(index, error instanceof Error ? error.message : "invalid definition");
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function assertModelIdentifier(value, field, index) {
|
|
208
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
209
|
+
throw invalidLanguageModel(index, `expected '${field}' to be a non-empty string`);
|
|
210
|
+
}
|
|
211
|
+
if (value.trim() !== value) {
|
|
212
|
+
throw invalidLanguageModel(index, `expected '${field}' not to have surrounding whitespace`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
function invalidLanguageModel(index, detail) {
|
|
216
|
+
return new RuntimeError(`[Sixb] Invalid language model at 'models.language[${index}]': ${detail}.`);
|
|
217
|
+
}
|
|
218
|
+
// src/models/errors.ts
|
|
219
|
+
class ModelCatalogUnavailableError extends Error {
|
|
220
|
+
name = "ModelCatalogUnavailableError";
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
class ModelProviderError extends Error {
|
|
224
|
+
providerId;
|
|
225
|
+
modelId;
|
|
226
|
+
name = "ModelProviderError";
|
|
227
|
+
constructor(message, providerId, modelId, options) {
|
|
228
|
+
super(message, options);
|
|
229
|
+
this.providerId = providerId;
|
|
230
|
+
this.modelId = modelId;
|
|
231
|
+
this.status = options?.status;
|
|
232
|
+
this.code = options?.code;
|
|
233
|
+
this.requestId = options?.requestId;
|
|
234
|
+
this.retryAfterMs = options?.retryAfterMs;
|
|
235
|
+
this.retryable = options?.retryable ?? false;
|
|
236
|
+
}
|
|
237
|
+
status;
|
|
238
|
+
code;
|
|
239
|
+
requestId;
|
|
240
|
+
retryAfterMs;
|
|
241
|
+
retryable;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
class ModelStreamError extends Error {
|
|
245
|
+
name = "ModelStreamError";
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
class UnsupportedModelFeatureError extends Error {
|
|
249
|
+
name = "UnsupportedModelFeatureError";
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
class StructuredOutputError extends Error {
|
|
253
|
+
name = "StructuredOutputError";
|
|
254
|
+
constructor(message, options) {
|
|
255
|
+
super(message, options);
|
|
256
|
+
this.text = options?.text;
|
|
257
|
+
this.providerId = options?.providerId;
|
|
258
|
+
this.modelId = options?.modelId;
|
|
259
|
+
this.responseId = options?.responseId;
|
|
260
|
+
this.responseModelId = options?.responseModelId;
|
|
261
|
+
this.finishReason = options?.finishReason;
|
|
262
|
+
this.usage = options?.usage;
|
|
263
|
+
this.cost = options?.cost;
|
|
264
|
+
}
|
|
265
|
+
text;
|
|
266
|
+
providerId;
|
|
267
|
+
modelId;
|
|
268
|
+
responseId;
|
|
269
|
+
responseModelId;
|
|
270
|
+
finishReason;
|
|
271
|
+
usage;
|
|
272
|
+
cost;
|
|
273
|
+
}
|
|
274
|
+
// src/models/pricing.ts
|
|
275
|
+
function estimateModelCall(model, input) {
|
|
276
|
+
try {
|
|
277
|
+
return model.costEstimator?.estimate(input) ?? rateModelCall({ usage: input.usage });
|
|
278
|
+
} catch {
|
|
279
|
+
console.warn("[Sixb] Model cost estimation failed; preserving usage and available provider cost.");
|
|
280
|
+
return { status: "unpriceable", reason: "missing-rate-card" };
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
function estimateModelReservation(input) {
|
|
284
|
+
if (!input.rateCard)
|
|
285
|
+
return;
|
|
286
|
+
if (![input.inputTokens, input.outputTokens].every((n) => Number.isSafeInteger(n) && n >= 0)) {
|
|
287
|
+
throw new TypeError("[Sixb] Model reservation token estimates must be nonnegative safe integers.");
|
|
288
|
+
}
|
|
289
|
+
const maxRate = (prices) => {
|
|
290
|
+
const rates = prices.flatMap((price) => price === undefined ? [] : typeof price === "string" ? [price] : [price.default, ...price.tiers.map((tier) => tier.price)]);
|
|
291
|
+
return rates.reduce((max, price) => {
|
|
292
|
+
const rate = decimalDollarsToNanos(price);
|
|
293
|
+
return rate > max ? rate : max;
|
|
294
|
+
}, 0n);
|
|
295
|
+
};
|
|
296
|
+
const card = input.rateCard;
|
|
297
|
+
const inputRate = maxRate([
|
|
298
|
+
card.input,
|
|
299
|
+
card.cacheReadInput,
|
|
300
|
+
card.cacheWriteInput,
|
|
301
|
+
card.cacheWriteInput5m,
|
|
302
|
+
card.cacheWriteInput1h
|
|
303
|
+
]);
|
|
304
|
+
const outputRate = maxRate([card.output]);
|
|
305
|
+
const charge = (tokens, rate) => (BigInt(tokens) * rate + 999999n) / 1000000n;
|
|
306
|
+
return {
|
|
307
|
+
currency: "USD",
|
|
308
|
+
amountNanos: (charge(input.inputTokens, inputRate) + charge(input.outputTokens, outputRate)).toString()
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
function rateModelCall(input) {
|
|
312
|
+
if (input.reported) {
|
|
313
|
+
assertAmountNanos(input.reported.money.amountNanos);
|
|
314
|
+
return {
|
|
315
|
+
status: "reported",
|
|
316
|
+
money: input.reported.money,
|
|
317
|
+
...input.reported.providerId === undefined ? {} : { providerId: input.reported.providerId }
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
if (!input.rateCard)
|
|
321
|
+
return { status: "unpriceable", reason: "missing-rate-card" };
|
|
322
|
+
const { usage, rateCard } = input;
|
|
323
|
+
if (!validUsageCounters(usage)) {
|
|
324
|
+
return { status: "unpriceable", reason: "inconsistent-usage" };
|
|
325
|
+
}
|
|
326
|
+
if (usage.inputTokens === undefined || usage.outputTokens === undefined) {
|
|
327
|
+
return {
|
|
328
|
+
status: "unpriceable",
|
|
329
|
+
reason: "missing-usage",
|
|
330
|
+
missingMeters: [
|
|
331
|
+
...usage.inputTokens === undefined ? ["tokens.input.total"] : [],
|
|
332
|
+
...usage.outputTokens === undefined ? ["tokens.output.total"] : []
|
|
333
|
+
]
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
const partitioned = partitionInputUsage(usage, rateCard);
|
|
337
|
+
if (partitioned.status !== "rated")
|
|
338
|
+
return partitioned;
|
|
339
|
+
const components = [];
|
|
340
|
+
if (!partitioned.partitioned) {
|
|
341
|
+
components.push(component("tokens.input.total", usage.inputTokens, rateCard.input, usage.inputTokens));
|
|
342
|
+
} else {
|
|
343
|
+
components.push(component("tokens.input.uncached", partitioned.uncached, rateCard.input, usage.inputTokens));
|
|
344
|
+
if (partitioned.cacheRead !== undefined) {
|
|
345
|
+
components.push(component("tokens.input.cacheRead", partitioned.cacheRead, rateCard.cacheReadInput, usage.inputTokens));
|
|
346
|
+
}
|
|
347
|
+
if (partitioned.cacheWrite !== undefined) {
|
|
348
|
+
components.push(component("tokens.input.cacheWrite", partitioned.cacheWrite, rateCard.cacheWriteInput, usage.inputTokens));
|
|
349
|
+
}
|
|
350
|
+
if (partitioned.cacheWrite5m !== undefined) {
|
|
351
|
+
components.push(component("tokens.input.cacheWrite5m", partitioned.cacheWrite5m, rateCard.cacheWriteInput5m ?? rateCard.cacheWriteInput, usage.inputTokens));
|
|
352
|
+
}
|
|
353
|
+
if (partitioned.cacheWrite1h !== undefined) {
|
|
354
|
+
components.push(component("tokens.input.cacheWrite1h", partitioned.cacheWrite1h, rateCard.cacheWriteInput1h ?? rateCard.cacheWriteInput, usage.inputTokens));
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
components.push(component("tokens.output.total", usage.outputTokens, rateCard.output, usage.inputTokens));
|
|
358
|
+
const total = components.reduce((sum, entry) => sum + BigInt(entry.chargeAmountNanos), 0n);
|
|
359
|
+
return {
|
|
360
|
+
status: "rated",
|
|
361
|
+
money: { currency: rateCard.currency, amountNanos: total.toString() },
|
|
362
|
+
components
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
function partitionInputUsage(usage, rateCard) {
|
|
366
|
+
const hasSpecificWrites = usage.cacheWrite5mInputTokens !== undefined || usage.cacheWrite1hInputTokens !== undefined;
|
|
367
|
+
const cacheWriteSpecific = (usage.cacheWrite5mInputTokens ?? 0) + (usage.cacheWrite1hInputTokens ?? 0);
|
|
368
|
+
if (hasSpecificWrites && usage.cacheWriteInputTokens !== undefined && usage.cacheWriteInputTokens !== cacheWriteSpecific) {
|
|
369
|
+
return { status: "unpriceable", reason: "inconsistent-usage" };
|
|
370
|
+
}
|
|
371
|
+
const partitioned = usage.uncachedInputTokens !== undefined || usage.cacheReadInputTokens !== undefined || usage.cacheWriteInputTokens !== undefined || hasSpecificWrites || rateCard.cacheReadInput !== undefined || rateCard.cacheWriteInput !== undefined || rateCard.cacheWriteInput5m !== undefined || rateCard.cacheWriteInput1h !== undefined;
|
|
372
|
+
if (!partitioned)
|
|
373
|
+
return { status: "rated", partitioned: false };
|
|
374
|
+
const cacheRead = usage.cacheReadInputTokens ?? 0;
|
|
375
|
+
const totalWrite = usage.cacheWriteInputTokens ?? cacheWriteSpecific;
|
|
376
|
+
if (usage.inputTokens !== undefined && cacheRead + totalWrite > usage.inputTokens) {
|
|
377
|
+
return { status: "unpriceable", reason: "inconsistent-usage" };
|
|
378
|
+
}
|
|
379
|
+
const missing = [];
|
|
380
|
+
if (usage.uncachedInputTokens === undefined)
|
|
381
|
+
missing.push("tokens.input.uncached");
|
|
382
|
+
if (rateCard.cacheReadInput !== undefined && usage.cacheReadInputTokens === undefined) {
|
|
383
|
+
missing.push("tokens.input.cacheRead");
|
|
384
|
+
}
|
|
385
|
+
if (rateCard.cacheWriteInput !== undefined && rateCard.cacheWriteInput5m === undefined && rateCard.cacheWriteInput1h === undefined && usage.cacheWriteInputTokens === undefined) {
|
|
386
|
+
missing.push("tokens.input.cacheWrite");
|
|
387
|
+
}
|
|
388
|
+
if (rateCard.cacheWriteInput5m !== undefined && usage.cacheWrite5mInputTokens === undefined) {
|
|
389
|
+
missing.push("tokens.input.cacheWrite5m");
|
|
390
|
+
}
|
|
391
|
+
if (rateCard.cacheWriteInput1h !== undefined && usage.cacheWrite1hInputTokens === undefined) {
|
|
392
|
+
missing.push("tokens.input.cacheWrite1h");
|
|
393
|
+
}
|
|
394
|
+
if (missing.length > 0) {
|
|
395
|
+
return { status: "unpriceable", reason: "missing-usage", missingMeters: missing };
|
|
396
|
+
}
|
|
397
|
+
if (cacheRead > 0 && rateCard.cacheReadInput === undefined) {
|
|
398
|
+
return {
|
|
399
|
+
status: "unpriceable",
|
|
400
|
+
reason: "missing-rate-card",
|
|
401
|
+
missingMeters: ["tokens.input.cacheRead"]
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
if (!hasSpecificWrites && totalWrite > 0 && rateCard.cacheWriteInput === undefined) {
|
|
405
|
+
return {
|
|
406
|
+
status: "unpriceable",
|
|
407
|
+
reason: "missing-rate-card",
|
|
408
|
+
missingMeters: ["tokens.input.cacheWrite"]
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
if ((usage.cacheWrite5mInputTokens ?? 0) > 0 && rateCard.cacheWriteInput5m === undefined && rateCard.cacheWriteInput === undefined) {
|
|
412
|
+
return {
|
|
413
|
+
status: "unpriceable",
|
|
414
|
+
reason: "missing-rate-card",
|
|
415
|
+
missingMeters: ["tokens.input.cacheWrite5m"]
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
if ((usage.cacheWrite1hInputTokens ?? 0) > 0 && rateCard.cacheWriteInput1h === undefined && rateCard.cacheWriteInput === undefined) {
|
|
419
|
+
return {
|
|
420
|
+
status: "unpriceable",
|
|
421
|
+
reason: "missing-rate-card",
|
|
422
|
+
missingMeters: ["tokens.input.cacheWrite1h"]
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
const uncached = usage.uncachedInputTokens;
|
|
426
|
+
if (uncached + cacheRead + totalWrite !== usage.inputTokens) {
|
|
427
|
+
return { status: "unpriceable", reason: "inconsistent-usage" };
|
|
428
|
+
}
|
|
429
|
+
return {
|
|
430
|
+
status: "rated",
|
|
431
|
+
partitioned: true,
|
|
432
|
+
uncached,
|
|
433
|
+
...rateCard.cacheReadInput === undefined ? {} : { cacheRead },
|
|
434
|
+
...hasSpecificWrites ? {
|
|
435
|
+
cacheWrite5m: usage.cacheWrite5mInputTokens ?? 0,
|
|
436
|
+
cacheWrite1h: usage.cacheWrite1hInputTokens ?? 0
|
|
437
|
+
} : rateCard.cacheWriteInput === undefined ? {} : { cacheWrite: totalWrite }
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
function validUsageCounters(usage) {
|
|
441
|
+
return Object.entries(usage).filter(([key]) => key !== "raw").every(([, value]) => value === undefined || Number.isSafeInteger(value) && value >= 0);
|
|
442
|
+
}
|
|
443
|
+
function component(meter, quantity, price, tierTokens) {
|
|
444
|
+
const rate = decimalDollarsToNanos(resolvePrice(price, tierTokens));
|
|
445
|
+
const charge = (BigInt(quantity) * rate + 500000n) / 1000000n;
|
|
446
|
+
return {
|
|
447
|
+
meter,
|
|
448
|
+
quantity: quantity.toString(),
|
|
449
|
+
rateAmountNanosPerMillion: rate.toString(),
|
|
450
|
+
chargeAmountNanos: charge.toString()
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
function resolvePrice(price, tokens) {
|
|
454
|
+
if (typeof price === "string")
|
|
455
|
+
return price;
|
|
456
|
+
return price.tiers.find((tier) => tokens >= tier.minTokens && (tier.maxTokens === undefined || tokens < tier.maxTokens))?.price ?? price.default;
|
|
457
|
+
}
|
|
458
|
+
function decimalDollarsToNanos(value) {
|
|
459
|
+
const [whole = "0", fraction = ""] = value.split(".");
|
|
460
|
+
const nanos = fraction.slice(0, 9).padEnd(9, "0");
|
|
461
|
+
const roundUp = Number(fraction[9] ?? "0") >= 5;
|
|
462
|
+
return BigInt(whole) * 1000000000n + BigInt(nanos) + (roundUp ? 1n : 0n);
|
|
463
|
+
}
|
|
464
|
+
function assertAmountNanos(value) {
|
|
465
|
+
if (!/^(?:0|[1-9]\d*)$/.test(value)) {
|
|
466
|
+
throw new TypeError("[Sixb] Provider-reported model cost must use nonnegative amountNanos.");
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
// src/models/rate-card.ts
|
|
470
|
+
function defineModelRateCard(rateCard) {
|
|
471
|
+
assertRecord2(rateCard, "rate card");
|
|
472
|
+
if (rateCard.currency !== "USD" || rateCard.unit !== "million-tokens") {
|
|
473
|
+
throw new TypeError("[Sixb] Model rate cards must use USD per million tokens.");
|
|
474
|
+
}
|
|
475
|
+
return Object.freeze({
|
|
476
|
+
currency: "USD",
|
|
477
|
+
unit: "million-tokens",
|
|
478
|
+
input: tokenPrice(rateCard.input),
|
|
479
|
+
output: tokenPrice(rateCard.output),
|
|
480
|
+
...rateCard.cacheReadInput === undefined ? {} : { cacheReadInput: tokenPrice(rateCard.cacheReadInput) },
|
|
481
|
+
...rateCard.cacheWriteInput === undefined ? {} : { cacheWriteInput: tokenPrice(rateCard.cacheWriteInput) },
|
|
482
|
+
...rateCard.cacheWriteInput5m === undefined ? {} : { cacheWriteInput5m: tokenPrice(rateCard.cacheWriteInput5m) },
|
|
483
|
+
...rateCard.cacheWriteInput1h === undefined ? {} : { cacheWriteInput1h: tokenPrice(rateCard.cacheWriteInput1h) }
|
|
484
|
+
});
|
|
485
|
+
}
|
|
486
|
+
function tokenPrice(value) {
|
|
487
|
+
if (typeof value === "string")
|
|
488
|
+
return price(value);
|
|
489
|
+
assertRecord2(value, "token price");
|
|
490
|
+
if (!Array.isArray(value.tiers))
|
|
491
|
+
throw new TypeError("[Sixb] Model price tiers must be an array.");
|
|
492
|
+
let previousMax = 0;
|
|
493
|
+
return Object.freeze({
|
|
494
|
+
default: price(value.default),
|
|
495
|
+
tiers: Object.freeze(value.tiers.map((tier, index) => {
|
|
496
|
+
assertRecord2(tier, "price tier");
|
|
497
|
+
if (typeof tier.minTokens !== "number" || !Number.isSafeInteger(tier.minTokens) || tier.minTokens < 0) {
|
|
498
|
+
throw new TypeError("[Sixb] Model price tier has an invalid minimum.");
|
|
499
|
+
}
|
|
500
|
+
if (index > 0 && tier.minTokens < previousMax) {
|
|
501
|
+
throw new TypeError("[Sixb] Model price tiers must be ordered and nonoverlapping.");
|
|
502
|
+
}
|
|
503
|
+
if (tier.maxTokens !== undefined && (typeof tier.maxTokens !== "number" || !Number.isSafeInteger(tier.maxTokens) || tier.maxTokens <= tier.minTokens)) {
|
|
504
|
+
throw new TypeError("[Sixb] Model price tier has an invalid maximum.");
|
|
505
|
+
}
|
|
506
|
+
previousMax = tier.maxTokens ?? Number.POSITIVE_INFINITY;
|
|
507
|
+
return Object.freeze({
|
|
508
|
+
minTokens: tier.minTokens,
|
|
509
|
+
...tier.maxTokens === undefined ? {} : { maxTokens: tier.maxTokens },
|
|
510
|
+
price: price(tier.price)
|
|
511
|
+
});
|
|
512
|
+
}))
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
function price(value) {
|
|
516
|
+
if (typeof value !== "string" || !/^(?:0|[1-9]\d*)(?:\.\d+)?$/.test(value)) {
|
|
517
|
+
throw new TypeError("[Sixb] Model price must be a nonnegative decimal string.");
|
|
518
|
+
}
|
|
519
|
+
return value;
|
|
520
|
+
}
|
|
521
|
+
function assertRecord2(value, field) {
|
|
522
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
523
|
+
throw new TypeError(`[Sixb] Model ${field} must be an object.`);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
export { RuntimeError, defineLanguageModel, createModelCatalog, ModelCatalogUnavailableError, ModelProviderError, ModelStreamError, UnsupportedModelFeatureError, StructuredOutputError, estimateModelCall, estimateModelReservation, rateModelCall, defineModelRateCard };
|
|
527
|
+
|
|
528
|
+
//# debugId=4BDA24DDCDBA999364756E2164756E21
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/runtime/errors.ts", "../src/models/definitions.ts", "../src/models/catalog.ts", "../src/models/errors.ts", "../src/models/pricing.ts", "../src/models/rate-card.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Thrown for runtime setup, lifecycle, and internal invariant failures\n * that are not validation errors (e.g., duplicate registrations, missing\n * bootstrap resources, failed event appends, module load failures).\n */\nexport class RuntimeError extends Error {\n readonly name = \"RuntimeError\"\n}\n",
|
|
6
|
+
"import {\n MODEL_REASONING_EFFORTS,\n type ModelCapabilities,\n type ModelReasoningBudgetCapabilities,\n type ModelReasoningCapabilities,\n} from \"./language-model\"\n\nexport type ModelKind = \"language\" | \"image\" | \"video\" | \"embedding\"\n\n/** Common catalog identity shared by every present and future model runtime. */\nexport interface ModelDefinition {\n readonly kind: ModelKind\n readonly providerId: string\n readonly modelId: string\n readonly name?: string\n readonly description?: string\n readonly family?: string\n readonly tags?: readonly string[]\n readonly releaseDate?: string\n}\n\n/** Serializable facts about one concrete model offering from one provider. */\nexport interface LanguageModelDefinition extends ModelDefinition {\n readonly kind: \"language\"\n readonly knowledgeCutoff?: string\n readonly contextWindow?: number\n /** Maximum input tokens, distinct from a shared input/output context window. */\n readonly maxInputTokens?: number\n readonly maxOutputTokens?: number\n readonly capabilities: ModelCapabilities\n}\n\nexport function defineLanguageModel(definition: LanguageModelDefinition): LanguageModelDefinition {\n if (definition.kind !== \"language\") {\n throw new TypeError(\"[Sixb] Language model definitions must use kind 'language'.\")\n }\n assertModelId(definition.providerId, \"providerId\")\n assertModelId(definition.modelId, \"modelId\")\n assertOptionalString(definition.name, \"name\")\n assertOptionalString(definition.description, \"description\")\n assertOptionalString(definition.family, \"family\")\n assertOptionalString(definition.releaseDate, \"releaseDate\")\n assertOptionalString(definition.knowledgeCutoff, \"knowledgeCutoff\")\n const tags = freezeStrings(definition.tags, \"tags\")\n const capabilities = defineModelCapabilities(definition.capabilities)\n assertOptionalPositiveInteger(definition.contextWindow, \"contextWindow\")\n assertOptionalPositiveInteger(definition.maxInputTokens, \"maxInputTokens\")\n assertOptionalPositiveInteger(definition.maxOutputTokens, \"maxOutputTokens\")\n return Object.freeze({\n kind: \"language\",\n providerId: definition.providerId,\n modelId: definition.modelId,\n ...(definition.name === undefined ? {} : { name: definition.name }),\n ...(definition.description === undefined ? {} : { description: definition.description }),\n ...(definition.family === undefined ? {} : { family: definition.family }),\n ...(tags === undefined ? {} : { tags }),\n ...(definition.releaseDate === undefined ? {} : { releaseDate: definition.releaseDate }),\n ...(definition.knowledgeCutoff === undefined\n ? {}\n : { knowledgeCutoff: definition.knowledgeCutoff }),\n ...(definition.contextWindow === undefined ? {} : { contextWindow: definition.contextWindow }),\n ...(definition.maxInputTokens === undefined\n ? {}\n : { maxInputTokens: definition.maxInputTokens }),\n ...(definition.maxOutputTokens === undefined\n ? {}\n : { maxOutputTokens: definition.maxOutputTokens }),\n capabilities,\n })\n}\n\nfunction defineModelCapabilities(capabilities: unknown): ModelCapabilities {\n assertRecord(capabilities, \"capabilities\")\n const inputMediaTypes =\n capabilities.inputMediaTypes === \"any\"\n ? \"any\"\n : freezeStrings(capabilities.inputMediaTypes, \"capabilities.inputMediaTypes\")\n for (const [field, value] of Object.entries(capabilities)) {\n if (field === \"inputMediaTypes\" || field === \"reasoning\") continue\n if (value !== undefined && typeof value !== \"boolean\") {\n throw new TypeError(`[Sixb] Model capability '${field}' must be boolean.`)\n }\n }\n const reasoning = freezeReasoningCapabilities(capabilities.reasoning)\n const flags: {\n localTools?: boolean\n parallelToolCalls?: boolean\n nativeStructuredOutput?: boolean\n providerExecutedTools?: boolean\n } = {}\n for (const key of [\n \"localTools\",\n \"parallelToolCalls\",\n \"nativeStructuredOutput\",\n \"providerExecutedTools\",\n ] as const) {\n const value = capabilities[key]\n if (typeof value === \"boolean\") flags[key] = value\n }\n return Object.freeze({\n ...(inputMediaTypes === undefined ? {} : { inputMediaTypes }),\n ...(reasoning === undefined ? {} : { reasoning }),\n ...flags,\n })\n}\n\nfunction freezeReasoningCapabilities(reasoning: unknown): ModelCapabilities[\"reasoning\"] {\n if (reasoning === undefined || reasoning === false) return reasoning\n assertRecord(reasoning, \"reasoning\")\n if (reasoning.canDisable !== undefined && typeof reasoning.canDisable !== \"boolean\") {\n throw new TypeError(\"[Sixb] Model reasoning capability 'canDisable' must be boolean.\")\n }\n const efforts = freezeReasoningEfforts(reasoning.efforts)\n const budgetTokens = freezeReasoningBudgetCapabilities(reasoning.budgetTokens)\n return Object.freeze({\n ...(reasoning.canDisable === undefined ? {} : { canDisable: reasoning.canDisable }),\n ...(efforts === undefined ? {} : { efforts }),\n ...(budgetTokens === undefined ? {} : { budgetTokens }),\n } satisfies ModelReasoningCapabilities)\n}\n\nfunction freezeReasoningEfforts(\n efforts: unknown\n): readonly (typeof MODEL_REASONING_EFFORTS)[number][] | undefined {\n if (efforts === undefined) return undefined\n if (!Array.isArray(efforts)) {\n throw new TypeError(\"[Sixb] Model reasoning capability 'efforts' must be an array.\")\n }\n const seen = new Set<string>()\n return Object.freeze(\n efforts.map((value: unknown) => {\n const effort = MODEL_REASONING_EFFORTS.find((allowed) => allowed === value)\n if (effort === undefined) {\n throw new TypeError(`[Sixb] Model reasoning effort '${String(value)}' is invalid.`)\n }\n if (seen.has(effort)) {\n throw new TypeError(`[Sixb] Model reasoning effort '${effort}' is duplicated.`)\n }\n seen.add(effort)\n return effort\n })\n )\n}\n\nfunction freezeReasoningBudgetCapabilities(\n budget: unknown\n): ModelReasoningBudgetCapabilities | undefined {\n if (budget === undefined) return undefined\n assertRecord(budget, \"reasoning budgetTokens\")\n assertOptionalNonnegativeInteger(budget.min, \"capabilities.reasoning.budgetTokens.min\")\n assertOptionalNonnegativeInteger(budget.max, \"capabilities.reasoning.budgetTokens.max\")\n if (budget.min !== undefined && budget.max !== undefined && budget.max < budget.min) {\n throw new TypeError(\n \"[Sixb] Model reasoning token budget maximum must not be below its minimum.\"\n )\n }\n return Object.freeze({\n ...(budget.min === undefined ? {} : { min: budget.min }),\n ...(budget.max === undefined ? {} : { max: budget.max }),\n })\n}\n\nfunction assertModelId(value: string, field: string): void {\n if (!value.trim()) throw new TypeError(`[Sixb] Model ${field} must not be empty.`)\n}\n\nfunction assertOptionalPositiveInteger(value: number | undefined, field: string): void {\n if (value !== undefined && (!Number.isSafeInteger(value) || value <= 0)) {\n throw new TypeError(`[Sixb] Model ${field} must be a positive safe integer.`)\n }\n}\n\nfunction assertOptionalNonnegativeInteger(\n value: unknown,\n field: string\n): asserts value is number | undefined {\n if (\n value !== undefined &&\n (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 0)\n ) {\n throw new TypeError(`[Sixb] Model ${field} must be a nonnegative safe integer.`)\n }\n}\n\nfunction assertOptionalString(value: string | undefined, field: string): void {\n if (value !== undefined && typeof value !== \"string\") {\n throw new TypeError(`[Sixb] Model ${field} must be a string.`)\n }\n}\n\nfunction freezeStrings(value: unknown, field: string): readonly string[] | undefined {\n if (value === undefined) return undefined\n if (!Array.isArray(value) || value.some((entry) => typeof entry !== \"string\" || !entry.trim())) {\n throw new TypeError(`[Sixb] Model ${field} must contain nonempty strings.`)\n }\n return Object.freeze([...value])\n}\n\nfunction assertRecord(value: unknown, field: string): asserts value is Record<string, unknown> {\n if (value === null || typeof value !== \"object\" || Array.isArray(value))\n throw new TypeError(`[Sixb] Model ${field} must be an object.`)\n}\n",
|
|
7
|
+
"import { RuntimeError } from \"../runtime/errors\"\nimport {\n defineLanguageModel,\n type LanguageModelDefinition,\n type ModelDefinition,\n} from \"./definitions\"\nimport type { LanguageModel } from \"./language-model\"\n\n/** Stable identity of one configured language-model binding. */\nexport interface LanguageModelRef {\n readonly provider: string\n readonly modelId: string\n}\n\n/** The configured language models, with the project default. */\nexport interface LanguageModelCatalog {\n readonly default: LanguageModelEntry\n list(): readonly LanguageModelEntry[]\n getByRef(ref: LanguageModelRef): LanguageModelEntry | null\n}\n\n/**\n * One configured language model.\n *\n * The identity describes the configured binding, not only a vendor model. For example,\n * A gateway binding and a direct provider binding for the same vendor model are distinct because their\n * `provider` values differ.\n */\nexport interface LanguageModelEntry extends LanguageModelRef {\n readonly model: LanguageModel\n}\n\n/** Models a project allows Sixb to use, organized by technical model kind. */\nexport interface ModelCatalog {\n readonly language: LanguageModelCatalog\n}\n\nexport interface ModelCatalogInput {\n /** Ordered; the first entry is the project default. */\n readonly language: readonly LanguageModel[]\n}\n\n/** Build the immutable project model catalog. Rejects invalid, duplicate, and empty catalogs. */\nexport function createModelCatalog(input: ModelCatalogInput): ModelCatalog {\n if (!Array.isArray(input?.language)) {\n throw new RuntimeError(\"[Sixb] 'models.language' must be an array of Sixb language models.\")\n }\n\n const entries: LanguageModelEntry[] = []\n const byProvider = new Map<string, Map<string, LanguageModelEntry>>()\n\n for (const [index, model] of input.language.entries()) {\n assertLanguageModel(model, index)\n\n let byModelId = byProvider.get(model.providerId)\n if (byModelId === undefined) {\n byModelId = new Map()\n byProvider.set(model.providerId, byModelId)\n }\n if (byModelId.has(model.modelId)) {\n throw new RuntimeError(\n `[Sixb] Duplicate language model '${model.providerId}/${model.modelId}' in 'models'. Each provider and model id pair may be configured once.`\n )\n }\n\n const entry = Object.freeze({\n provider: model.providerId,\n modelId: model.modelId,\n model,\n })\n byModelId.set(model.modelId, entry)\n entries.push(entry)\n }\n\n const [defaultEntry] = entries\n if (defaultEntry === undefined) {\n throw new RuntimeError(\n \"[Sixb] 'models.language' needs at least one model. Configure one or omit 'models' from createSixb().\"\n )\n }\n\n const listed = Object.freeze(entries.slice())\n const language: LanguageModelCatalog = Object.freeze({\n default: defaultEntry,\n list: () => listed,\n getByRef: (ref: LanguageModelRef) => byProvider.get(ref.provider)?.get(ref.modelId) ?? null,\n })\n\n return Object.freeze({ language })\n}\n\nfunction assertLanguageModel(model: unknown, index: number): asserts model is LanguageModel {\n if ((typeof model !== \"object\" && typeof model !== \"function\") || model === null) {\n throw invalidLanguageModel(index, \"expected a Sixb LanguageModel instance\")\n }\n\n const candidate = model as Record<string, unknown>\n assertModelIdentifier(candidate.providerId, \"provider\", index)\n assertModelIdentifier(candidate.modelId, \"modelId\", index)\n if (typeof candidate.stream !== \"function\") {\n throw invalidLanguageModel(index, \"expected 'stream' to be a function\")\n }\n try {\n const definition = defineLanguageModel(candidate.definition as LanguageModelDefinition)\n if (\n definition.providerId !== candidate.providerId ||\n definition.modelId !== candidate.modelId\n ) {\n throw new Error(\"definition identity does not match the binding\")\n }\n } catch (error) {\n throw invalidLanguageModel(index, error instanceof Error ? error.message : \"invalid definition\")\n }\n}\n\nfunction assertModelIdentifier(value: unknown, field: \"provider\" | \"modelId\", index: number): void {\n if (typeof value !== \"string\" || value.length === 0) {\n throw invalidLanguageModel(index, `expected '${field}' to be a non-empty string`)\n }\n if (value.trim() !== value) {\n throw invalidLanguageModel(index, `expected '${field}' not to have surrounding whitespace`)\n }\n}\n\nfunction invalidLanguageModel(index: number, detail: string): RuntimeError {\n return new RuntimeError(\n `[Sixb] Invalid language model at 'models.language[${index}]': ${detail}.`\n )\n}\n\n/** Provider-owned metadata lookup, independent from the project's configured bindings. */\nexport interface ModelDefinitionCatalog<TDefinition extends ModelDefinition = ModelDefinition> {\n get(modelId: string): Promise<TDefinition | undefined>\n list(): Promise<readonly TDefinition[]>\n}\n\nexport type LanguageModelDefinitionCatalog = ModelDefinitionCatalog<LanguageModelDefinition>\n",
|
|
8
|
+
"import type { ModelFinishReason, ModelUsage } from \"./events\"\nimport type { ModelCallCost } from \"./pricing\"\n\n/** Catalog transport/access failed; callers may use local metadata without masking invalid definitions. */\nexport class ModelCatalogUnavailableError extends Error {\n readonly name = \"ModelCatalogUnavailableError\"\n}\n\n/** A provider or provider protocol rejected a model request. */\nexport class ModelProviderError extends Error {\n readonly name = \"ModelProviderError\"\n\n constructor(\n message: string,\n readonly providerId: string,\n readonly modelId: string,\n options?: ErrorOptions & {\n readonly status?: number\n readonly code?: string\n readonly requestId?: string\n readonly retryAfterMs?: number\n readonly retryable?: boolean\n }\n ) {\n super(message, options)\n this.status = options?.status\n this.code = options?.code\n this.requestId = options?.requestId\n this.retryAfterMs = options?.retryAfterMs\n this.retryable = options?.retryable ?? false\n }\n\n readonly status?: number\n readonly code?: string\n readonly requestId?: string\n readonly retryAfterMs?: number\n readonly retryable: boolean\n}\n\nexport class ModelStreamError extends Error {\n readonly name = \"ModelStreamError\"\n}\n\nexport class UnsupportedModelFeatureError extends Error {\n readonly name = \"UnsupportedModelFeatureError\"\n}\n\nexport class StructuredOutputError extends Error {\n readonly name = \"StructuredOutputError\"\n\n constructor(\n message: string,\n options?: ErrorOptions & {\n readonly text?: string\n readonly providerId?: string\n readonly modelId?: string\n readonly responseId?: string\n readonly responseModelId?: string\n readonly finishReason?: ModelFinishReason\n readonly usage?: ModelUsage\n readonly cost?: ModelCallCost\n }\n ) {\n super(message, options)\n this.text = options?.text\n this.providerId = options?.providerId\n this.modelId = options?.modelId\n this.responseId = options?.responseId\n this.responseModelId = options?.responseModelId\n this.finishReason = options?.finishReason\n this.usage = options?.usage\n this.cost = options?.cost\n }\n\n readonly text?: string\n readonly providerId?: string\n readonly modelId?: string\n readonly responseId?: string\n readonly responseModelId?: string\n readonly finishReason?: ModelFinishReason\n readonly usage?: ModelUsage\n readonly cost?: ModelCallCost\n}\n",
|
|
9
|
+
"import type { ModelRoute, ModelUsage } from \"./events\"\nimport type { LanguageModel } from \"./language-model\"\nimport type { LanguageModelRateCard, ModelTokenPrice } from \"./rate-card\"\n\n/** Optional local financial enrichment cannot discard a completed, billable call. */\nexport function estimateModelCall(\n model: LanguageModel,\n input: Parameters<ModelCostEstimator[\"estimate\"]>[0]\n): ModelCostEstimate {\n try {\n return model.costEstimator?.estimate(input) ?? rateModelCall({ usage: input.usage })\n } catch {\n console.warn(\n \"[Sixb] Model cost estimation failed; preserving usage and available provider cost.\"\n )\n return { status: \"unpriceable\", reason: \"missing-rate-card\" }\n }\n}\n\nexport interface ModelMoney {\n readonly currency: \"USD\"\n /** Billionths of one currency unit, serialized as an integer string. */\n readonly amountNanos: string\n}\n\nexport interface ModelReportedCost {\n readonly money: ModelMoney\n readonly providerId?: string\n}\n\n/** A local estimate is never a provider-reported charge. No financial API is required to run. */\nexport type ModelCostEstimate = Exclude<ModelCallCost, { status: \"reported\" }>\n\nexport interface ModelCostEstimator {\n /** Conservative token-cost reservation, including cache writes and pricing tiers.\n * Return undefined when routing or non-token charges prevent a safe local estimate. */\n estimateReservation?(input: {\n readonly inputTokens: number\n readonly outputTokens: number\n }): ModelMoney | undefined\n\n estimate(input: {\n readonly usage: ModelUsage\n readonly route?: ModelRoute\n readonly responseModelId?: string\n }): ModelCostEstimate\n}\n\nexport type ModelCostMeter =\n | \"tokens.input.total\"\n | \"tokens.input.uncached\"\n | \"tokens.input.cacheRead\"\n | \"tokens.input.cacheWrite\"\n | \"tokens.input.cacheWrite5m\"\n | \"tokens.input.cacheWrite1h\"\n | \"tokens.output.total\"\n\nexport interface ModelCostComponent {\n readonly meter: ModelCostMeter\n readonly quantity: string\n readonly rateAmountNanosPerMillion: string\n readonly chargeAmountNanos: string\n}\n\nexport type ModelCallCost =\n | { readonly status: \"reported\"; readonly money: ModelMoney; readonly providerId?: string }\n | {\n readonly status: \"rated\"\n readonly money: ModelMoney\n readonly components: readonly ModelCostComponent[]\n }\n | {\n readonly status: \"unpriceable\"\n readonly reason: \"missing-rate-card\" | \"missing-usage\" | \"inconsistent-usage\"\n readonly missingMeters?: readonly ModelCostMeter[]\n }\n\n/** Reserve at the highest configured token rates, before cache usage and the final tier are known. */\nexport function estimateModelReservation(input: {\n readonly inputTokens: number\n readonly outputTokens: number\n readonly rateCard?: LanguageModelRateCard\n}): ModelMoney | undefined {\n if (!input.rateCard) return undefined\n if (![input.inputTokens, input.outputTokens].every((n) => Number.isSafeInteger(n) && n >= 0)) {\n throw new TypeError(\n \"[Sixb] Model reservation token estimates must be nonnegative safe integers.\"\n )\n }\n const maxRate = (prices: readonly (ModelTokenPrice | undefined)[]) => {\n const rates = prices.flatMap((price) =>\n price === undefined\n ? []\n : typeof price === \"string\"\n ? [price]\n : [price.default, ...price.tiers.map((tier) => tier.price)]\n )\n return rates.reduce((max, price) => {\n const rate = decimalDollarsToNanos(price)\n return rate > max ? rate : max\n }, 0n)\n }\n const card = input.rateCard\n const inputRate = maxRate([\n card.input,\n card.cacheReadInput,\n card.cacheWriteInput,\n card.cacheWriteInput5m,\n card.cacheWriteInput1h,\n ])\n const outputRate = maxRate([card.output])\n const charge = (tokens: number, rate: bigint) => (BigInt(tokens) * rate + 999_999n) / 1_000_000n\n return {\n currency: \"USD\",\n amountNanos: (\n charge(input.inputTokens, inputRate) + charge(input.outputTokens, outputRate)\n ).toString(),\n }\n}\n\n/** Prefer the provider's bill over rate-card estimates, then rate complete token meters locally. */\nexport function rateModelCall(input: {\n readonly usage: ModelUsage\n readonly rateCard?: LanguageModelRateCard\n readonly reported?: undefined\n}): ModelCostEstimate\nexport function rateModelCall(input: {\n readonly usage: ModelUsage\n readonly rateCard?: LanguageModelRateCard\n readonly reported?: ModelReportedCost\n}): ModelCallCost\nexport function rateModelCall(input: {\n readonly usage: ModelUsage\n readonly rateCard?: LanguageModelRateCard\n readonly reported?: ModelReportedCost\n}): ModelCallCost {\n if (input.reported) {\n assertAmountNanos(input.reported.money.amountNanos)\n return {\n status: \"reported\",\n money: input.reported.money,\n ...(input.reported.providerId === undefined ? {} : { providerId: input.reported.providerId }),\n }\n }\n if (!input.rateCard) return { status: \"unpriceable\", reason: \"missing-rate-card\" }\n const { usage, rateCard } = input\n if (!validUsageCounters(usage)) {\n return { status: \"unpriceable\", reason: \"inconsistent-usage\" }\n }\n if (usage.inputTokens === undefined || usage.outputTokens === undefined) {\n return {\n status: \"unpriceable\",\n reason: \"missing-usage\",\n missingMeters: [\n ...(usage.inputTokens === undefined ? ([\"tokens.input.total\"] as const) : []),\n ...(usage.outputTokens === undefined ? ([\"tokens.output.total\"] as const) : []),\n ],\n }\n }\n\n const partitioned = partitionInputUsage(usage, rateCard)\n if (partitioned.status !== \"rated\") return partitioned\n\n const components: ModelCostComponent[] = []\n if (!partitioned.partitioned) {\n components.push(\n component(\"tokens.input.total\", usage.inputTokens, rateCard.input, usage.inputTokens)\n )\n } else {\n components.push(\n component(\"tokens.input.uncached\", partitioned.uncached, rateCard.input, usage.inputTokens)\n )\n if (partitioned.cacheRead !== undefined) {\n components.push(\n component(\n \"tokens.input.cacheRead\",\n partitioned.cacheRead,\n rateCard.cacheReadInput!,\n usage.inputTokens\n )\n )\n }\n if (partitioned.cacheWrite !== undefined) {\n components.push(\n component(\n \"tokens.input.cacheWrite\",\n partitioned.cacheWrite,\n rateCard.cacheWriteInput!,\n usage.inputTokens\n )\n )\n }\n if (partitioned.cacheWrite5m !== undefined) {\n components.push(\n component(\n \"tokens.input.cacheWrite5m\",\n partitioned.cacheWrite5m,\n rateCard.cacheWriteInput5m ?? rateCard.cacheWriteInput!,\n usage.inputTokens\n )\n )\n }\n if (partitioned.cacheWrite1h !== undefined) {\n components.push(\n component(\n \"tokens.input.cacheWrite1h\",\n partitioned.cacheWrite1h,\n rateCard.cacheWriteInput1h ?? rateCard.cacheWriteInput!,\n usage.inputTokens\n )\n )\n }\n }\n components.push(\n component(\"tokens.output.total\", usage.outputTokens, rateCard.output, usage.inputTokens)\n )\n const total = components.reduce((sum, entry) => sum + BigInt(entry.chargeAmountNanos), 0n)\n return {\n status: \"rated\",\n money: { currency: rateCard.currency, amountNanos: total.toString() },\n components,\n }\n}\n\ntype PartitionResult =\n | { readonly status: \"rated\"; readonly partitioned: false }\n | {\n readonly status: \"rated\"\n readonly partitioned: true\n readonly uncached: number\n readonly cacheRead?: number\n readonly cacheWrite?: number\n readonly cacheWrite5m?: number\n readonly cacheWrite1h?: number\n }\n | Extract<ModelCallCost, { status: \"unpriceable\" }>\n\nfunction partitionInputUsage(usage: ModelUsage, rateCard: LanguageModelRateCard): PartitionResult {\n const hasSpecificWrites =\n usage.cacheWrite5mInputTokens !== undefined || usage.cacheWrite1hInputTokens !== undefined\n const cacheWriteSpecific =\n (usage.cacheWrite5mInputTokens ?? 0) + (usage.cacheWrite1hInputTokens ?? 0)\n if (\n hasSpecificWrites &&\n usage.cacheWriteInputTokens !== undefined &&\n usage.cacheWriteInputTokens !== cacheWriteSpecific\n ) {\n return { status: \"unpriceable\", reason: \"inconsistent-usage\" }\n }\n\n const partitioned =\n usage.uncachedInputTokens !== undefined ||\n usage.cacheReadInputTokens !== undefined ||\n usage.cacheWriteInputTokens !== undefined ||\n hasSpecificWrites ||\n rateCard.cacheReadInput !== undefined ||\n rateCard.cacheWriteInput !== undefined ||\n rateCard.cacheWriteInput5m !== undefined ||\n rateCard.cacheWriteInput1h !== undefined\n if (!partitioned) return { status: \"rated\", partitioned: false }\n\n const cacheRead = usage.cacheReadInputTokens ?? 0\n const totalWrite = usage.cacheWriteInputTokens ?? cacheWriteSpecific\n if (usage.inputTokens !== undefined && cacheRead + totalWrite > usage.inputTokens) {\n return { status: \"unpriceable\", reason: \"inconsistent-usage\" }\n }\n\n const missing: ModelCostMeter[] = []\n if (usage.uncachedInputTokens === undefined) missing.push(\"tokens.input.uncached\")\n if (rateCard.cacheReadInput !== undefined && usage.cacheReadInputTokens === undefined) {\n missing.push(\"tokens.input.cacheRead\")\n }\n if (\n rateCard.cacheWriteInput !== undefined &&\n rateCard.cacheWriteInput5m === undefined &&\n rateCard.cacheWriteInput1h === undefined &&\n usage.cacheWriteInputTokens === undefined\n ) {\n missing.push(\"tokens.input.cacheWrite\")\n }\n if (rateCard.cacheWriteInput5m !== undefined && usage.cacheWrite5mInputTokens === undefined) {\n missing.push(\"tokens.input.cacheWrite5m\")\n }\n if (rateCard.cacheWriteInput1h !== undefined && usage.cacheWrite1hInputTokens === undefined) {\n missing.push(\"tokens.input.cacheWrite1h\")\n }\n if (missing.length > 0) {\n return { status: \"unpriceable\", reason: \"missing-usage\", missingMeters: missing }\n }\n if (cacheRead > 0 && rateCard.cacheReadInput === undefined) {\n return {\n status: \"unpriceable\",\n reason: \"missing-rate-card\",\n missingMeters: [\"tokens.input.cacheRead\"],\n }\n }\n if (!hasSpecificWrites && totalWrite > 0 && rateCard.cacheWriteInput === undefined) {\n return {\n status: \"unpriceable\",\n reason: \"missing-rate-card\",\n missingMeters: [\"tokens.input.cacheWrite\"],\n }\n }\n if (\n (usage.cacheWrite5mInputTokens ?? 0) > 0 &&\n rateCard.cacheWriteInput5m === undefined &&\n rateCard.cacheWriteInput === undefined\n ) {\n return {\n status: \"unpriceable\",\n reason: \"missing-rate-card\",\n missingMeters: [\"tokens.input.cacheWrite5m\"],\n }\n }\n if (\n (usage.cacheWrite1hInputTokens ?? 0) > 0 &&\n rateCard.cacheWriteInput1h === undefined &&\n rateCard.cacheWriteInput === undefined\n ) {\n return {\n status: \"unpriceable\",\n reason: \"missing-rate-card\",\n missingMeters: [\"tokens.input.cacheWrite1h\"],\n }\n }\n\n const uncached = usage.uncachedInputTokens!\n if (uncached + cacheRead + totalWrite !== usage.inputTokens) {\n return { status: \"unpriceable\", reason: \"inconsistent-usage\" }\n }\n return {\n status: \"rated\",\n partitioned: true,\n uncached,\n ...(rateCard.cacheReadInput === undefined ? {} : { cacheRead }),\n ...(hasSpecificWrites\n ? {\n cacheWrite5m: usage.cacheWrite5mInputTokens ?? 0,\n cacheWrite1h: usage.cacheWrite1hInputTokens ?? 0,\n }\n : rateCard.cacheWriteInput === undefined\n ? {}\n : { cacheWrite: totalWrite }),\n }\n}\n\nfunction validUsageCounters(usage: ModelUsage): boolean {\n return Object.entries(usage)\n .filter(([key]) => key !== \"raw\")\n .every(([, value]) => value === undefined || (Number.isSafeInteger(value) && value >= 0))\n}\n\nfunction component(\n meter: ModelCostMeter,\n quantity: number,\n price: ModelTokenPrice,\n tierTokens: number\n): ModelCostComponent {\n const rate = decimalDollarsToNanos(resolvePrice(price, tierTokens))\n const charge = (BigInt(quantity) * rate + 500_000n) / 1_000_000n\n return {\n meter,\n quantity: quantity.toString(),\n rateAmountNanosPerMillion: rate.toString(),\n chargeAmountNanos: charge.toString(),\n }\n}\n\nfunction resolvePrice(price: ModelTokenPrice, tokens: number): string {\n if (typeof price === \"string\") return price\n return (\n price.tiers.find(\n (tier) =>\n tokens >= tier.minTokens && (tier.maxTokens === undefined || tokens < tier.maxTokens)\n )?.price ?? price.default\n )\n}\n\nfunction decimalDollarsToNanos(value: string): bigint {\n const [whole = \"0\", fraction = \"\"] = value.split(\".\")\n const nanos = fraction.slice(0, 9).padEnd(9, \"0\")\n const roundUp = Number(fraction[9] ?? \"0\") >= 5\n return BigInt(whole) * 1_000_000_000n + BigInt(nanos) + (roundUp ? 1n : 0n)\n}\n\nfunction assertAmountNanos(value: string): void {\n if (!/^(?:0|[1-9]\\d*)$/.test(value)) {\n throw new TypeError(\"[Sixb] Provider-reported model cost must use nonnegative amountNanos.\")\n }\n}\n",
|
|
10
|
+
"/** Decimal USD per million tokens. Strings keep provider prices exact. */\nexport type ModelUnitPrice = string\n\nexport interface ModelPricingTier {\n readonly minTokens: number\n readonly maxTokens?: number\n readonly price: ModelUnitPrice\n}\n\nexport type ModelTokenPrice =\n | ModelUnitPrice\n | { readonly default: ModelUnitPrice; readonly tiers: readonly ModelPricingTier[] }\n\nexport interface LanguageModelRateCard {\n readonly currency: \"USD\"\n readonly unit: \"million-tokens\"\n readonly input: ModelTokenPrice\n readonly output: ModelTokenPrice\n readonly cacheReadInput?: ModelTokenPrice\n readonly cacheWriteInput?: ModelTokenPrice\n readonly cacheWriteInput5m?: ModelTokenPrice\n readonly cacheWriteInput1h?: ModelTokenPrice\n}\n\n/** Validate and snapshot provider-owned pricing independently of operational metadata. */\nexport function defineModelRateCard(rateCard: LanguageModelRateCard): LanguageModelRateCard {\n assertRecord(rateCard, \"rate card\")\n if (rateCard.currency !== \"USD\" || rateCard.unit !== \"million-tokens\") {\n throw new TypeError(\"[Sixb] Model rate cards must use USD per million tokens.\")\n }\n return Object.freeze({\n currency: \"USD\",\n unit: \"million-tokens\",\n input: tokenPrice(rateCard.input),\n output: tokenPrice(rateCard.output),\n ...(rateCard.cacheReadInput === undefined\n ? {}\n : { cacheReadInput: tokenPrice(rateCard.cacheReadInput) }),\n ...(rateCard.cacheWriteInput === undefined\n ? {}\n : { cacheWriteInput: tokenPrice(rateCard.cacheWriteInput) }),\n ...(rateCard.cacheWriteInput5m === undefined\n ? {}\n : { cacheWriteInput5m: tokenPrice(rateCard.cacheWriteInput5m) }),\n ...(rateCard.cacheWriteInput1h === undefined\n ? {}\n : { cacheWriteInput1h: tokenPrice(rateCard.cacheWriteInput1h) }),\n })\n}\n\nfunction tokenPrice(value: ModelTokenPrice): ModelTokenPrice {\n if (typeof value === \"string\") return price(value)\n assertRecord(value, \"token price\")\n if (!Array.isArray(value.tiers)) throw new TypeError(\"[Sixb] Model price tiers must be an array.\")\n let previousMax = 0\n return Object.freeze({\n default: price(value.default),\n tiers: Object.freeze(\n value.tiers.map((tier, index) => {\n assertRecord(tier, \"price tier\")\n if (\n typeof tier.minTokens !== \"number\" ||\n !Number.isSafeInteger(tier.minTokens) ||\n tier.minTokens < 0\n ) {\n throw new TypeError(\"[Sixb] Model price tier has an invalid minimum.\")\n }\n if (index > 0 && tier.minTokens < previousMax) {\n throw new TypeError(\"[Sixb] Model price tiers must be ordered and nonoverlapping.\")\n }\n if (\n tier.maxTokens !== undefined &&\n (typeof tier.maxTokens !== \"number\" ||\n !Number.isSafeInteger(tier.maxTokens) ||\n tier.maxTokens <= tier.minTokens)\n ) {\n throw new TypeError(\"[Sixb] Model price tier has an invalid maximum.\")\n }\n previousMax = tier.maxTokens ?? Number.POSITIVE_INFINITY\n return Object.freeze({\n minTokens: tier.minTokens,\n ...(tier.maxTokens === undefined ? {} : { maxTokens: tier.maxTokens }),\n price: price(tier.price),\n })\n })\n ),\n })\n}\n\nfunction price(value: unknown): string {\n if (typeof value !== \"string\" || !/^(?:0|[1-9]\\d*)(?:\\.\\d+)?$/.test(value)) {\n throw new TypeError(\"[Sixb] Model price must be a nonnegative decimal string.\")\n }\n return value\n}\n\nfunction assertRecord(value: unknown, field: string): asserts value is Record<string, unknown> {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) {\n throw new TypeError(`[Sixb] Model ${field} must be an object.`)\n }\n}\n"
|
|
11
|
+
],
|
|
12
|
+
"mappings": "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",
|
|
13
|
+
"debugId": "4BDA24DDCDBA999364756E2164756E21",
|
|
14
|
+
"names": []
|
|
15
|
+
}
|