schema: export union for single/parallel modes; require single preset/task; expose single-model; update tests
This commit is contained in:
@@ -21,15 +21,20 @@ export function createTaskItemSchema(availableModels: readonly string[]) {
|
||||
export const TaskItemSchema = createTaskItemSchema([]);
|
||||
|
||||
export function createSubagentParamsSchema(availableModels: readonly string[]) {
|
||||
return Type.Object({
|
||||
// Single mode: provide preset + task
|
||||
preset: Type.Optional(Type.String({ description: "Subagent preset name to use in single mode" })),
|
||||
task: Type.Optional(Type.String({ description: "Single-mode delegated task" })),
|
||||
// Parallel mode: provide tasks array where each item names its own preset
|
||||
tasks: Type.Optional(Type.Array(createTaskItemSchema(availableModels), { description: "Parallel tasks" })),
|
||||
// Single-mode schema: requires preset + task, exposes optional top-level model
|
||||
const SingleMode = Type.Object({
|
||||
preset: Type.String({ description: "Subagent preset name to use in single mode" }),
|
||||
task: Type.String({ description: "Single-mode delegated task" }),
|
||||
model: createTaskModelSchema(availableModels),
|
||||
cwd: Type.Optional(Type.String({ description: "Single-mode working directory override" })),
|
||||
|
||||
});
|
||||
|
||||
// Parallel-mode schema: requires tasks array where each item contains its own preset and task
|
||||
const ParallelMode = Type.Object({
|
||||
tasks: Type.Array(createTaskItemSchema(availableModels), { description: "Parallel tasks" }),
|
||||
});
|
||||
|
||||
return Type.Union([SingleMode, ParallelMode], { description: "Either single-mode (preset+task) or parallel-mode (tasks array)" });
|
||||
}
|
||||
|
||||
export const SubagentParamsSchema = createSubagentParamsSchema([]);
|
||||
|
||||
Reference in New Issue
Block a user