Files
agent/packages/shared/src/model-config.ts
T

34 lines
1.1 KiB
TypeScript

import { z } from "zod";
export const ModelApiSchema = z.enum([
"openai-responses",
"openai-completions",
"anthropic-messages",
]);
export const ModelConnectionInputSchema = z.object({
providerId: z.string().trim().min(1).max(80).regex(/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/),
api: ModelApiSchema,
baseUrl: z.url().max(2048).optional(),
apiKey: z.string().min(1).max(8192).optional(),
modelId: z.string().trim().min(1).max(200),
displayName: z.string().trim().min(1).max(200).optional(),
supportsImages: z.boolean(),
contextWindow: z.int().positive().max(10_000_000).optional(),
maxTokens: z.int().positive().max(1_000_000).optional(),
}).strict();
export type ModelApi = z.infer<typeof ModelApiSchema>;
export type ModelConnectionInput = z.infer<typeof ModelConnectionInputSchema>;
export const RedactedModelConnectionSchema = ModelConnectionInputSchema
.omit({ apiKey: true })
.extend({
configured: z.boolean(),
source: z.enum(["session", "environment", "missing"]),
keyHint: z.string().max(12).optional(),
})
.strict();
export type RedactedModelConnection = z.infer<typeof RedactedModelConnectionSchema>;