Task 2: Preset-driven subagent tool
- Replace chain mode with preset-driven single and parallel modes - Schema: require per-task preset; remove top-level required model - Tool: resolve presets via discoverSubagentPresets(), normalize models, resolve effective model per run, pass preset meta - Update tests and remove chain test
This commit is contained in:
@@ -11,39 +11,30 @@ function createTaskModelSchema(availableModels: readonly string[]) {
|
||||
|
||||
export function createTaskItemSchema(availableModels: readonly string[]) {
|
||||
return Type.Object({
|
||||
preset: Type.String({ description: "Subagent preset name to use for this task" }),
|
||||
task: Type.String({ description: "Task to delegate to the child agent" }),
|
||||
model: createTaskModelSchema(availableModels),
|
||||
cwd: Type.Optional(Type.String({ description: "Optional working directory override" })),
|
||||
});
|
||||
}
|
||||
|
||||
export function createChainItemSchema(availableModels: readonly string[]) {
|
||||
return Type.Object({
|
||||
task: Type.String({ description: "Task with optional {previous} placeholder" }),
|
||||
model: createTaskModelSchema(availableModels),
|
||||
cwd: Type.Optional(Type.String({ description: "Optional working directory override" })),
|
||||
});
|
||||
}
|
||||
|
||||
export const TaskItemSchema = createTaskItemSchema([]);
|
||||
export const ChainItemSchema = createChainItemSchema([]);
|
||||
|
||||
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" })),
|
||||
model: StringEnum(availableModels, {
|
||||
description: "Required top-level child model. Must be one of the currently available models.",
|
||||
}),
|
||||
// Parallel mode: provide tasks array where each item names its own preset
|
||||
tasks: Type.Optional(Type.Array(createTaskItemSchema(availableModels), { description: "Parallel tasks" })),
|
||||
chain: Type.Optional(Type.Array(createChainItemSchema(availableModels), { description: "Sequential tasks" })),
|
||||
cwd: Type.Optional(Type.String({ description: "Single-mode working directory override" })),
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
export const SubagentParamsSchema = createSubagentParamsSchema([]);
|
||||
|
||||
export type TaskItem = Static<typeof TaskItemSchema>;
|
||||
export type ChainItem = Static<typeof ChainItemSchema>;
|
||||
export type SubagentParams = Static<typeof SubagentParamsSchema>;
|
||||
|
||||
export interface SubagentRunResult {
|
||||
@@ -66,6 +57,6 @@ export interface SubagentRunResult {
|
||||
}
|
||||
|
||||
export interface SubagentToolDetails {
|
||||
mode: "single" | "parallel" | "chain";
|
||||
mode: "single" | "parallel";
|
||||
results: SubagentRunResult[];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user