58 lines
1.8 KiB
TypeScript
58 lines
1.8 KiB
TypeScript
import { z } from "zod"
|
|
import { McpNameSchema } from "../mcp/types"
|
|
|
|
const PermissionValue = z.enum(["ask", "allow", "deny"])
|
|
|
|
const BashPermission = z.union([
|
|
PermissionValue,
|
|
z.record(z.string(), PermissionValue),
|
|
])
|
|
|
|
const AgentPermissionSchema = z.object({
|
|
edit: PermissionValue.optional(),
|
|
bash: BashPermission.optional(),
|
|
webfetch: PermissionValue.optional(),
|
|
doom_loop: PermissionValue.optional(),
|
|
external_directory: PermissionValue.optional(),
|
|
})
|
|
|
|
export const AgentNameSchema = z.enum([
|
|
"oracle",
|
|
"librarian",
|
|
"explore",
|
|
"frontend-ui-ux-engineer",
|
|
"document-writer",
|
|
])
|
|
|
|
export const AgentOverrideConfigSchema = z.object({
|
|
model: z.string().optional(),
|
|
temperature: z.number().min(0).max(2).optional(),
|
|
top_p: z.number().min(0).max(1).optional(),
|
|
prompt: z.string().optional(),
|
|
tools: z.record(z.string(), z.boolean()).optional(),
|
|
disable: z.boolean().optional(),
|
|
description: z.string().optional(),
|
|
mode: z.enum(["subagent", "primary", "all"]).optional(),
|
|
color: z
|
|
.string()
|
|
.regex(/^#[0-9A-Fa-f]{6}$/)
|
|
.optional(),
|
|
permission: AgentPermissionSchema.optional(),
|
|
})
|
|
|
|
export const AgentOverridesSchema = z.record(AgentNameSchema, AgentOverrideConfigSchema)
|
|
|
|
export const OhMyOpenCodeConfigSchema = z.object({
|
|
$schema: z.string().optional(),
|
|
disabled_mcps: z.array(McpNameSchema).optional(),
|
|
disabled_agents: z.array(AgentNameSchema).optional(),
|
|
agents: AgentOverridesSchema.optional(),
|
|
})
|
|
|
|
export type OhMyOpenCodeConfig = z.infer<typeof OhMyOpenCodeConfigSchema>
|
|
export type AgentOverrideConfig = z.infer<typeof AgentOverrideConfigSchema>
|
|
export type AgentOverrides = z.infer<typeof AgentOverridesSchema>
|
|
export type AgentName = z.infer<typeof AgentNameSchema>
|
|
|
|
export { McpNameSchema, type McpName } from "../mcp/types"
|