feat(shared): define harness protocols

This commit is contained in:
Wenxin Duan
2026-09-07 15:23:12 +08:00
parent 98baf9aee7
commit e87c68f3ad
9 changed files with 380 additions and 1 deletions
+33
View File
@@ -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>;