{"version":3,"sources":["../src/agent/transport/p2p.ts","../src/agent/transport/a2a.ts"],"names":[],"mappings":"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","file":"chunk-HTXMYTEU.mjs","sourcesContent":["/**\n * P2P Transport\n *\n * Peer-to-peer messaging for distributed agent communication.\n * Builds on existing edgework gateway connector.\n */\n\nexport interface P2PMessage {\n  id: string;\n  from: string;\n  to: string;\n  type: 'request' | 'response' | 'broadcast' | 'heartbeat';\n  payload: unknown;\n  timestamp: number;\n  ttl?: number;\n}\n\nexport interface P2PPeer {\n  id: string;\n  endpoint: string;\n  lastSeen: number;\n  capabilities: string[];\n  latencyMs?: number;\n}\n\nexport interface P2PConfig {\n  /** This peer's ID */\n  peerId?: string;\n  /** Discovery method */\n  discovery?: 'gateway' | 'mdns' | 'manual';\n  /** Gateway URL for peer discovery */\n  gatewayUrl?: string;\n  /** Heartbeat interval in ms */\n  heartbeatIntervalMs?: number;\n  /** Peer timeout in ms */\n  peerTimeoutMs?: number;\n}\n\n/**\n * P2P mesh network for agent communication.\n */\nexport class P2PMesh {\n  private peerId: string;\n  private peers: Map<string, P2PPeer> = new Map();\n  private messageHandlers: Map<\n    string,\n    (message: P2PMessage) => void | Promise<void>\n  > = new Map();\n  private config: P2PConfig;\n\n  constructor(config?: P2PConfig) {\n    this.config = config ?? {};\n    this.peerId = config?.peerId ?? crypto.randomUUID();\n  }\n\n  /**\n   * Get this peer's ID.\n   */\n  getId(): string {\n    return this.peerId;\n  }\n\n  /**\n   * Add a known peer.\n   */\n  addPeer(peer: P2PPeer): void {\n    this.peers.set(peer.id, peer);\n  }\n\n  /**\n   * Remove a peer.\n   */\n  removePeer(peerId: string): void {\n    this.peers.delete(peerId);\n  }\n\n  /**\n   * Get all known peers.\n   */\n  getPeers(): P2PPeer[] {\n    return [...this.peers.values()];\n  }\n\n  /**\n   * Send a message to a specific peer.\n   */\n  async send(to: string, payload: unknown): Promise<P2PMessage> {\n    const peer = this.peers.get(to);\n    if (!peer) {\n      throw new Error(`Unknown peer: ${to}`);\n    }\n\n    const message: P2PMessage = {\n      id: crypto.randomUUID(),\n      from: this.peerId,\n      to,\n      type: 'request',\n      payload,\n      timestamp: Date.now(),\n    };\n\n    const startTime = Date.now();\n\n    const response = await fetch(`${peer.endpoint}/p2p/message`, {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json' },\n      body: JSON.stringify(message),\n    });\n\n    // Update latency\n    peer.latencyMs = Date.now() - startTime;\n    peer.lastSeen = Date.now();\n\n    if (!response.ok) {\n      throw new Error(`Failed to send message to ${to}: ${response.status}`);\n    }\n\n    return (await response.json()) as P2PMessage;\n  }\n\n  /**\n   * Broadcast a message to all known peers.\n   */\n  async broadcast(payload: unknown): Promise<P2PMessage[]> {\n    const results = await Promise.allSettled(\n      [...this.peers.keys()].map((peerId) => this.send(peerId, payload))\n    );\n\n    return results\n      .filter(\n        (r): r is PromiseFulfilledResult<P2PMessage> => r.status === 'fulfilled'\n      )\n      .map((r) => r.value);\n  }\n\n  /**\n   * Register a message handler.\n   */\n  onMessage(\n    type: string,\n    handler: (message: P2PMessage) => void | Promise<void>\n  ): void {\n    this.messageHandlers.set(type, handler);\n  }\n\n  /**\n   * Handle an incoming message.\n   */\n  async handleMessage(message: P2PMessage): Promise<P2PMessage | null> {\n    const handler = this.messageHandlers.get(message.type);\n    if (handler) {\n      await handler(message);\n    }\n\n    // Auto-update peer info\n    if (!this.peers.has(message.from)) {\n      this.peers.set(message.from, {\n        id: message.from,\n        endpoint: '', // Would be resolved by discovery\n        lastSeen: Date.now(),\n        capabilities: [],\n      });\n    } else {\n      const peer = this.peers.get(message.from)!;\n      peer.lastSeen = Date.now();\n    }\n\n    return null;\n  }\n\n  /**\n   * Discover peers via gateway.\n   */\n  async discover(): Promise<P2PPeer[]> {\n    if (this.config.discovery !== 'gateway' || !this.config.gatewayUrl) {\n      return [];\n    }\n\n    try {\n      const response = await fetch(\n        `${this.config.gatewayUrl}/peers?exclude=${this.peerId}`\n      );\n      if (!response.ok) return [];\n      const peers = (await response.json()) as P2PPeer[];\n      for (const peer of peers) {\n        this.addPeer(peer);\n      }\n      return peers;\n    } catch {\n      return [];\n    }\n  }\n}\n","/**\n * A2A Protocol\n *\n * Agent-to-Agent protocol for cross-framework interoperability.\n * Google ADK A2A pattern — allows agents from different frameworks to communicate.\n */\n\nexport interface A2AAgentCard {\n  /** Agent name */\n  name: string;\n  /** Agent description */\n  description: string;\n  /** Supported capabilities */\n  capabilities: string[];\n  /** Agent endpoint URL */\n  endpoint: string;\n  /** Protocol version */\n  version: string;\n  /** Supported input/output formats */\n  formats: string[];\n}\n\nexport interface A2AMessage {\n  /** Message ID */\n  id: string;\n  /** Sender agent card */\n  from: A2AAgentCard;\n  /** Task to perform */\n  task: string;\n  /** Input data */\n  input: unknown;\n  /** Expected output format */\n  outputFormat?: string;\n  /** Timeout in ms */\n  timeoutMs?: number;\n  /** Metadata */\n  metadata?: Record<string, unknown>;\n}\n\nexport interface A2AResponse {\n  /** Original message ID */\n  messageId: string;\n  /** Response status */\n  status: 'success' | 'error' | 'partial';\n  /** Output data */\n  output: unknown;\n  /** Error message if status is error */\n  error?: string;\n  /** Processing time in ms */\n  processingMs: number;\n  /** Metadata */\n  metadata?: Record<string, unknown>;\n}\n\n/**\n * A2A Client — sends tasks to remote agents.\n */\nexport class A2AClient {\n  private agentCard: A2AAgentCard;\n\n  constructor(agentCard: A2AAgentCard) {\n    this.agentCard = agentCard;\n  }\n\n  /**\n   * Discover remote agents at an endpoint.\n   */\n  async discover(endpointUrl: string): Promise<A2AAgentCard[]> {\n    try {\n      const response = await fetch(`${endpointUrl}/.well-known/a2a`);\n      if (!response.ok) return [];\n      return (await response.json()) as A2AAgentCard[];\n    } catch {\n      return [];\n    }\n  }\n\n  /**\n   * Send a task to a remote agent.\n   */\n  async sendTask(\n    target: A2AAgentCard,\n    task: string,\n    input: unknown,\n    options?: { timeoutMs?: number; outputFormat?: string }\n  ): Promise<A2AResponse> {\n    const message: A2AMessage = {\n      id: crypto.randomUUID(),\n      from: this.agentCard,\n      task,\n      input,\n      outputFormat: options?.outputFormat,\n      timeoutMs: options?.timeoutMs,\n    };\n\n    const controller = new AbortController();\n    const timeout = options?.timeoutMs\n      ? setTimeout(() => controller.abort(), options.timeoutMs)\n      : undefined;\n\n    try {\n      const response = await fetch(`${target.endpoint}/a2a/task`, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify(message),\n        signal: controller.signal,\n      });\n\n      if (timeout) clearTimeout(timeout);\n\n      if (!response.ok) {\n        return {\n          messageId: message.id,\n          status: 'error',\n          output: null,\n          error: `Remote agent returned ${response.status}`,\n          processingMs: 0,\n        };\n      }\n\n      return (await response.json()) as A2AResponse;\n    } catch (err) {\n      if (timeout) clearTimeout(timeout);\n      return {\n        messageId: message.id,\n        status: 'error',\n        output: null,\n        error: err instanceof Error ? err.message : String(err),\n        processingMs: 0,\n      };\n    }\n  }\n}\n\n/**\n * A2A Server — receives tasks from remote agents.\n */\nexport class A2AServer {\n  private agentCard: A2AAgentCard;\n  private handler: (\n    message: A2AMessage\n  ) => Promise<{ output: unknown; metadata?: Record<string, unknown> }>;\n\n  constructor(agentCard: A2AAgentCard, handler: A2AServer['handler']) {\n    this.agentCard = agentCard;\n    this.handler = handler;\n  }\n\n  /**\n   * Get the agent card for discovery.\n   */\n  getAgentCard(): A2AAgentCard {\n    return this.agentCard;\n  }\n\n  /**\n   * Handle an incoming A2A task.\n   */\n  async handleTask(message: A2AMessage): Promise<A2AResponse> {\n    const startTime = Date.now();\n\n    try {\n      const result = await this.handler(message);\n      return {\n        messageId: message.id,\n        status: 'success',\n        output: result.output,\n        processingMs: Date.now() - startTime,\n        metadata: result.metadata,\n      };\n    } catch (err) {\n      return {\n        messageId: message.id,\n        status: 'error',\n        output: null,\n        error: err instanceof Error ? err.message : String(err),\n        processingMs: Date.now() - startTime,\n      };\n    }\n  }\n}\n"]}