76 lines
1.9 KiB
TypeScript
76 lines
1.9 KiB
TypeScript
import type { SecretInput } from "./types.secrets.js";
|
|
|
|
export const MODEL_APIS = [
|
|
"openai-completions",
|
|
"openai-responses",
|
|
"openai-codex-responses",
|
|
"anthropic-messages",
|
|
"google-generative-ai",
|
|
"github-copilot",
|
|
"bedrock-converse-stream",
|
|
"ollama",
|
|
] as const;
|
|
|
|
export type ModelApi = (typeof MODEL_APIS)[number];
|
|
|
|
export type ModelCompatConfig = {
|
|
supportsStore?: boolean;
|
|
supportsDeveloperRole?: boolean;
|
|
supportsReasoningEffort?: boolean;
|
|
supportsUsageInStreaming?: boolean;
|
|
supportsTools?: boolean;
|
|
supportsStrictMode?: boolean;
|
|
maxTokensField?: "max_completion_tokens" | "max_tokens";
|
|
thinkingFormat?: "openai" | "zai" | "qwen";
|
|
requiresToolResultName?: boolean;
|
|
requiresAssistantAfterToolResult?: boolean;
|
|
requiresThinkingAsText?: boolean;
|
|
requiresMistralToolIds?: boolean;
|
|
};
|
|
|
|
export type ModelProviderAuthMode = "api-key" | "aws-sdk" | "oauth" | "token";
|
|
|
|
export type ModelDefinitionConfig = {
|
|
id: string;
|
|
name: string;
|
|
api?: ModelApi;
|
|
reasoning: boolean;
|
|
input: Array<"text" | "image">;
|
|
cost: {
|
|
input: number;
|
|
output: number;
|
|
cacheRead: number;
|
|
cacheWrite: number;
|
|
};
|
|
contextWindow: number;
|
|
maxTokens: number;
|
|
headers?: Record<string, string>;
|
|
compat?: ModelCompatConfig;
|
|
};
|
|
|
|
export type ModelProviderConfig = {
|
|
baseUrl: string;
|
|
apiKey?: SecretInput;
|
|
auth?: ModelProviderAuthMode;
|
|
api?: ModelApi;
|
|
injectNumCtxForOpenAICompat?: boolean;
|
|
headers?: Record<string, SecretInput>;
|
|
authHeader?: boolean;
|
|
models: ModelDefinitionConfig[];
|
|
};
|
|
|
|
export type BedrockDiscoveryConfig = {
|
|
enabled?: boolean;
|
|
region?: string;
|
|
providerFilter?: string[];
|
|
refreshInterval?: number;
|
|
defaultContextWindow?: number;
|
|
defaultMaxTokens?: number;
|
|
};
|
|
|
|
export type ModelsConfig = {
|
|
mode?: "merge" | "replace";
|
|
providers?: Record<string, ModelProviderConfig>;
|
|
bedrockDiscovery?: BedrockDiscoveryConfig;
|
|
};
|