feat(shared): define harness protocols
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
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>;
|
||||
Reference in New Issue
Block a user