"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ListSubAgentsHandler = void 0;
const common_1 = require("@nestjs/common");
const sub_agents_service_1 = require("../../sub-agents/sub-agents.service");
let ListSubAgentsHandler = class ListSubAgentsHandler {
    constructor(subAgentsService) {
        this.subAgentsService = subAgentsService;
        this.toolName = 'list_sub_agents';
    }
    getMetadata() {
        return {
            name: this.toolName,
            description: 'List all available sub-agents with their details',
            arguments: [],
        };
    }
    getDefinition() {
        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, _context) {
        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,
                },
            };
        }
    }
};
exports.ListSubAgentsHandler = ListSubAgentsHandler;
exports.ListSubAgentsHandler = ListSubAgentsHandler = __decorate([
    (0, common_1.Injectable)(),
    __metadata("design:paramtypes", [sub_agents_service_1.SubAgentsService])
], ListSubAgentsHandler);
//# sourceMappingURL=list-sub-agents.handler.js.map