Files
stanp-opencode/src/config.ts
T
StanPonomarev f6cae21bfa
CI / verify (pull_request) Successful in 8s
feat: make playwright optional
2026-09-15 10:18:43 +02:00

49 lines
1.5 KiB
TypeScript

import { z } from "zod";
export const workerNames = [
"fast-lo",
"fast-hi",
"good-lo",
"good-hi",
"deep-lo",
"deep-hi",
] as const;
const assignment = z.strictObject({
model: z.string().trim().min(1),
effort: z.enum(["none", "minimal", "low", "medium", "high", "xhigh", "max"]),
});
const common = {
provider: z.string().trim().min(1).default("openai"),
lunaPriority: z.boolean().default(true),
playwright: z.boolean().default(false),
};
export const settings = z.discriminatedUnion("mode", [
z.strictObject({ ...common, mode: z.literal("gpt") }),
z.strictObject({
...common,
mode: z.literal("custom"),
agents: z.strictObject({
"fast-lo": assignment,
"fast-hi": assignment,
"good-lo": assignment,
"good-hi": assignment,
"deep-lo": assignment,
"deep-hi": assignment,
coordinate: assignment,
}),
}),
]);
export const gptAgents = {
"fast-lo": { model: "gpt-5.6-luna", effort: "low" },
"fast-hi": { model: "gpt-5.6-luna", effort: "high" },
"good-lo": { model: "gpt-5.6-sol", effort: "low" },
"good-hi": { model: "gpt-5.6-sol", effort: "high" },
"deep-lo": { model: "gpt-6-astra", effort: "low" },
"deep-hi": { model: "gpt-6-astra", effort: "high" },
coordinate: { model: "gpt-6-astra", effort: "medium" },
} satisfies Record<(typeof workerNames)[number] | "coordinate", z.infer<typeof assignment>>;