| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- export * as Model from "./model"
- import { Schema } from "effect"
- import { optional } from "./schema"
- import { Provider } from "./provider"
- import { statics } from "./schema"
- export const ID = Schema.String.pipe(Schema.brand("ModelV2.ID"))
- export type ID = typeof ID.Type
- export const VariantID = Schema.String.pipe(Schema.brand("VariantID"))
- export type VariantID = typeof VariantID.Type
- export const Ref = Schema.Struct({
- id: ID,
- providerID: Provider.ID,
- variant: VariantID.pipe(optional),
- }).annotate({ identifier: "Model.Ref" })
- export interface Ref extends Schema.Schema.Type<typeof Ref> {}
- export const Family = Schema.String.pipe(Schema.brand("Family"))
- export type Family = typeof Family.Type
- export interface Capabilities extends Schema.Schema.Type<typeof Capabilities> {}
- export const Capabilities = Schema.Struct({
- tools: Schema.Boolean,
- input: Schema.Array(Schema.String),
- output: Schema.Array(Schema.String),
- }).annotate({ identifier: "Model.Capabilities" })
- export interface Cost extends Schema.Schema.Type<typeof Cost> {}
- export const Cost = Schema.Struct({
- tier: Schema.Struct({
- type: Schema.Literal("context"),
- size: Schema.Int,
- }).pipe(optional),
- input: Schema.Finite,
- output: Schema.Finite,
- cache: Schema.Struct({
- read: Schema.Finite,
- write: Schema.Finite,
- }),
- }).annotate({ identifier: "Model.Cost" })
- export const Api = Schema.Union([
- Schema.Struct({
- id: ID,
- ...Provider.AISDK.fields,
- }),
- Schema.Struct({
- id: ID,
- ...Provider.Native.fields,
- }),
- ])
- .pipe(Schema.toTaggedUnion("type"))
- .annotate({ identifier: "Model.Api" })
- export type Api = typeof Api.Type
- export interface Info extends Schema.Schema.Type<typeof Info> {}
- export const Info = Schema.Struct({
- id: ID,
- providerID: Provider.ID,
- family: Family.pipe(optional),
- name: Schema.String,
- api: Api,
- capabilities: Capabilities,
- request: Schema.Struct({
- ...Provider.Request.fields,
- variant: Schema.String.pipe(optional),
- }),
- variants: Schema.Struct({
- id: VariantID,
- ...Provider.Request.fields,
- }).pipe(Schema.Array),
- time: Schema.Struct({
- released: Schema.Finite,
- }),
- cost: Schema.Array(Cost),
- status: Schema.Literals(["alpha", "beta", "deprecated", "active"]),
- enabled: Schema.Boolean,
- limit: Schema.Struct({
- context: Schema.Int,
- input: Schema.Int.pipe(optional),
- output: Schema.Int,
- }),
- })
- .annotate({ identifier: "ModelV2.Info" })
- .pipe(
- statics((schema) => ({
- empty: (providerID: Provider.ID, modelID: ID) =>
- schema.make({
- id: modelID,
- providerID,
- name: modelID,
- api: { id: modelID, type: "native", settings: {} },
- capabilities: { tools: false, input: [], output: [] },
- request: { headers: {}, body: {} },
- variants: [],
- time: { released: 0 },
- cost: [],
- status: "active",
- enabled: true,
- limit: { context: 0, output: 0 },
- }),
- })),
- )
|