model.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { Types } from "effect"
  2. import { Model } from "@kirincode-ai/schema/model"
  3. import { ProviderV2 } from "./provider"
  4. export const ID = Model.ID
  5. export type ID = typeof ID.Type
  6. export const VariantID = Model.VariantID
  7. export type VariantID = typeof VariantID.Type
  8. // Grouping of models, eg claude opus, claude sonnet
  9. export const Family = Model.Family
  10. export type Family = Model.Family
  11. export const Capabilities = Model.Capabilities
  12. export type Capabilities = Model.Capabilities
  13. export const Cost = Model.Cost
  14. export const Ref = Model.Ref
  15. export type Ref = typeof Ref.Type
  16. export const Api = Model.Api
  17. export type Api = Model.Api
  18. export const Info = Model.Info
  19. export type Info = Model.Info
  20. export type MutableInfo = Omit<Types.DeepMutable<Info>, "api"> & {
  21. api: ProviderV2.MutableApi<Api>
  22. }
  23. export function parse(input: string): { providerID: ProviderV2.ID; modelID: ID } {
  24. const [providerID, ...modelID] = input.split("/")
  25. return {
  26. providerID: ProviderV2.ID.make(providerID),
  27. modelID: ID.make(modelID.join("/")),
  28. }
  29. }
  30. export * as ModelV2 from "./model"