// ============================================================ // ARCADIA SUITE - PROTOCOLOS DE INTEROPERABILIDADE AGÊNTICA // ============================================================ // ==================== MCP (Model Context Protocol) ==================== export interface McpTool { name: string; description: string; parameters: { type: 'object'; properties: Record; required: string[]; }; } export interface McpToolParameter { type: string; description: string; enum?: string[]; } export interface McpToolExecuteRequest { arguments: Record; } export interface McpToolExecuteResponse { success: boolean; result?: any; error?: string; executionTime?: number; } export interface McpToolsListResponse { tools: McpTool[]; serverInfo: { name: string; version: string; description: string; }; } // ==================== A2A (Agent to Agent Protocol) ==================== export type TaskState = | 'pending' | 'working' | 'input-required' | 'completed' | 'failed' | 'canceled'; export interface A2ATask { id: string; state: TaskState; message: A2AMessage; artifacts?: A2AArtifact[]; history?: A2AMessage[]; createdAt: string; updatedAt: string; metadata?: Record; } export interface A2AMessage { role: 'user' | 'agent'; parts: A2APart[]; metadata?: Record; } export interface A2APart { type: 'text' | 'file' | 'data'; text?: string; file?: { name: string; mimeType: string; data: string; // base64 }; data?: Record; } export interface A2AArtifact { id: string; name: string; type: string; data: any; createdAt: string; } export interface A2AAgentCard { name: string; description: string; version: string; url: string; capabilities: A2ACapability[]; skills: A2ASkill[]; authentication?: { type: 'none' | 'api_key' | 'oauth2'; instructions?: string; }; contact?: { email?: string; website?: string; }; } export interface A2ACapability { name: string; description: string; } export interface A2ASkill { id: string; name: string; description: string; inputSchema?: Record; outputSchema?: Record; } export interface A2ASendMessageRequest { message: A2AMessage; taskId?: string; // Se fornecido, continua uma conversa existente metadata?: Record; } export interface A2ASendMessageResponse { task: A2ATask; } export interface A2AGetTaskResponse { task: A2ATask; } export interface A2AListTasksResponse { tasks: A2ATask[]; total: number; page: number; pageSize: number; } // ==================== Eventos SSE para A2A ==================== export interface A2ATaskEvent { type: 'state_change' | 'message' | 'artifact' | 'progress'; taskId: string; data: any; timestamp: string; } // ==================== Utilitários ==================== export function generateTaskId(): string { return `task_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`; } export function generateArtifactId(): string { return `artifact_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`; }