export interface A2APart { text?: string; mimeType?: string; uri?: string; data?: unknown; } export interface A2AMessage { role: "user" | "agent"; parts: A2APart[]; contextId?: string; taskId?: string; metadata?: Record; } export interface A2ATaskStatus { state: "submitted" | "working" | "completed" | "failed" | "canceled" | "rejected" | "input-required"; timestamp: string; message?: A2AMessage; } export interface A2AArtifact { id: string; mimeType?: string; parts: A2APart[]; } export interface A2ATask { id: string; contextId: string; status: A2ATaskStatus; messages?: A2AMessage[]; artifacts?: A2AArtifact[]; } export interface A2AAgentCard { name: string; description: string; url: string; version: string; documentationUrl?: string; provider?: { name: string; url?: string; }; capabilities?: { streaming: boolean; pushNotifications: boolean; }; skills: Array<{ id: string; name: string; description: string; }>; extensions?: Array<{ uri: string; description: string; required: boolean; params?: Record; }>; } export interface JsonRpcRequest

{ jsonrpc: "2.0"; id: string | number; method: string; params: P; } export interface JsonRpcSuccess { jsonrpc: "2.0"; id: string | number; result: R; } export interface JsonRpcError { jsonrpc: "2.0"; id: string | number | null; error: { code: number; message: string; data?: unknown; }; } export type JsonRpcResponse = JsonRpcSuccess | JsonRpcError; export interface SendMessageParams { message: A2AMessage; configuration?: { acceptedOutputModes?: string[]; returnImmediately?: boolean; }; metadata?: Record; } export interface GetTaskParams { taskId: string; } export interface A2aAdapter { mapParams?: (msg: { text: string; contextId?: string; metadata?: Record; }) => Record; }