Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | 7x 7x 7x 16x 16x 1x 3x 7x 7x 5x 7x 5x 7x 2x | import { Injectable } from '@nestjs/common';
import { ActionHandler } from './action-handler.interface';
import {
ActionExecutionResult,
PlanExecutionContext,
} from '../llm-orchestration.interfaces';
import { SubAgentsService } from '../../sub-agents/sub-agents.service';
@Injectable()
export class ListSubAgentsHandler implements ActionHandler {
readonly toolName = 'list_sub_agents';
constructor(private readonly subAgentsService: SubAgentsService) {}
getMetadata() {
return {
name: this.toolName,
description: 'List all available sub-agents with their details',
arguments: [],
};
}
getDefinition(): string {
return `## list_sub_agents
List all available sub-agents with their configuration details.
### Parameters:
No parameters required.
### Returns:
List of sub-agents including:
- name
- description
- enabled_tools
- system_prompt_id
- context_template_id
- model_id
### Example:
\`\`\`typescript
tool: list_sub_agents
args: {}
\`\`\``;
}
async execute(
_args: Record<string, any>,
_context: PlanExecutionContext,
): Promise<ActionExecutionResult> {
try {
const subAgents = await this.subAgentsService.findActive();
const summary = subAgents
.map(
(agent) =>
`- **${agent.name}**: ${agent.description || 'No description'}`,
)
.join('\n');
return {
status: 'SUCCESS',
summary: `Found ${subAgents.length} available sub-agent(s):\n\n${summary}`,
execution_log: {
output: JSON.stringify(
subAgents.map((a) => ({
name: a.name,
description: a.description,
enabled_tools: a.enabled_tools,
})),
null,
2,
),
},
persisted_args: {},
};
} catch (error) {
return {
status: 'FAILURE',
summary: 'Failed to list sub-agents',
error_message: error.message,
execution_log: {
output: '',
error_message: error.message,
},
};
}
}
}
|