mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 15:10:52 +00:00
feat: add model catalog shared types
This commit is contained in:
13
src/model-catalog/refs.ts
Normal file
13
src/model-catalog/refs.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
import { normalizeLowercaseStringOrEmpty } from "../shared/string-coerce.js";
|
||||||
|
|
||||||
|
export function normalizeModelCatalogProviderId(provider: string): string {
|
||||||
|
return normalizeLowercaseStringOrEmpty(provider);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function buildModelCatalogRef(provider: string, modelId: string): string {
|
||||||
|
return `${normalizeModelCatalogProviderId(provider)}/${modelId}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function buildModelCatalogMergeKey(provider: string, modelId: string): string {
|
||||||
|
return `${normalizeModelCatalogProviderId(provider)}::${normalizeLowercaseStringOrEmpty(modelId)}`;
|
||||||
|
}
|
||||||
97
src/model-catalog/types.ts
Normal file
97
src/model-catalog/types.ts
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
import type { ModelApi, ModelCompatConfig } from "../config/types.models.js";
|
||||||
|
|
||||||
|
export type ModelCatalogInput = "text" | "image" | "document";
|
||||||
|
export type ModelCatalogDiscovery = "static" | "refreshable" | "runtime";
|
||||||
|
export type ModelCatalogStatus = "available" | "preview" | "deprecated" | "disabled";
|
||||||
|
export type ModelCatalogSource =
|
||||||
|
| "manifest"
|
||||||
|
| "provider-index"
|
||||||
|
| "cache"
|
||||||
|
| "config"
|
||||||
|
| "runtime-refresh";
|
||||||
|
|
||||||
|
export type ModelCatalogTieredCost = {
|
||||||
|
input: number;
|
||||||
|
output: number;
|
||||||
|
cacheRead: number;
|
||||||
|
cacheWrite: number;
|
||||||
|
range: [number, number] | [number];
|
||||||
|
};
|
||||||
|
|
||||||
|
export type ModelCatalogCost = {
|
||||||
|
input?: number;
|
||||||
|
output?: number;
|
||||||
|
cacheRead?: number;
|
||||||
|
cacheWrite?: number;
|
||||||
|
tieredPricing?: ModelCatalogTieredCost[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export type ModelCatalogModel = {
|
||||||
|
id: string;
|
||||||
|
name?: string;
|
||||||
|
api?: ModelApi;
|
||||||
|
baseUrl?: string;
|
||||||
|
headers?: Record<string, string>;
|
||||||
|
input?: ModelCatalogInput[];
|
||||||
|
reasoning?: boolean;
|
||||||
|
contextWindow?: number;
|
||||||
|
contextTokens?: number;
|
||||||
|
maxTokens?: number;
|
||||||
|
cost?: ModelCatalogCost;
|
||||||
|
compat?: ModelCompatConfig;
|
||||||
|
status?: ModelCatalogStatus;
|
||||||
|
statusReason?: string;
|
||||||
|
replaces?: string[];
|
||||||
|
replacedBy?: string;
|
||||||
|
tags?: string[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export type ModelCatalogProvider = {
|
||||||
|
baseUrl?: string;
|
||||||
|
api?: ModelApi;
|
||||||
|
headers?: Record<string, string>;
|
||||||
|
models: ModelCatalogModel[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export type ModelCatalogAlias = {
|
||||||
|
provider: string;
|
||||||
|
api?: ModelApi;
|
||||||
|
baseUrl?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type ModelCatalogSuppression = {
|
||||||
|
provider: string;
|
||||||
|
model: string;
|
||||||
|
reason?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type ModelCatalog = {
|
||||||
|
providers?: Record<string, ModelCatalogProvider>;
|
||||||
|
aliases?: Record<string, ModelCatalogAlias>;
|
||||||
|
suppressions?: ModelCatalogSuppression[];
|
||||||
|
discovery?: Record<string, ModelCatalogDiscovery>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type NormalizedModelCatalogRow = {
|
||||||
|
provider: string;
|
||||||
|
id: string;
|
||||||
|
ref: string;
|
||||||
|
mergeKey: string;
|
||||||
|
name: string;
|
||||||
|
source: ModelCatalogSource;
|
||||||
|
input: ModelCatalogInput[];
|
||||||
|
reasoning: boolean;
|
||||||
|
status: ModelCatalogStatus;
|
||||||
|
api?: ModelApi;
|
||||||
|
baseUrl?: string;
|
||||||
|
headers?: Record<string, string>;
|
||||||
|
contextWindow?: number;
|
||||||
|
contextTokens?: number;
|
||||||
|
maxTokens?: number;
|
||||||
|
cost?: ModelCatalogCost;
|
||||||
|
compat?: ModelCompatConfig;
|
||||||
|
statusReason?: string;
|
||||||
|
replaces?: string[];
|
||||||
|
replacedBy?: string;
|
||||||
|
tags?: string[];
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user