@perkos/perkos-a2a 0.8.3 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1,7 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/server.ts", "../src/relay-client.ts", "../src/relay.ts", "../src/index.ts"],
4
+ "sourcesContent": ["/**\n * A2A Protocol Server\n * Express-based JSON-RPC 2.0 server with Agent Card discovery.\n * Supports full, client-only, relay, and auto modes.\n * Integrates with the relay hub for NAT traversal when configured.\n */\n\nimport express from \"express\";\nimport { randomUUID } from \"crypto\";\nimport { homedir, networkInterfaces } from \"os\";\nimport { RelayClient } from \"./relay-client.js\";\nimport { RelayHub } from \"./relay.js\";\nimport type {\n AgentCard,\n Task,\n Message,\n JsonRpcResponse,\n A2APluginConfig,\n RelayMessage,\n RelayAgentEntry,\n} from \"./types.js\";\n\nexport type TaskResultHandler = (task: Task, text: string) => Promise<void> | void;\nexport type TaskFailureHandler = (task: Task, errorText: string) => Promise<void> | void;\n\n/** Detect if the host is behind NAT by comparing public IP to local interfaces */\nexport async function detectNetworking(): Promise<{\n isBehindNat: boolean;\n publicIp: string | null;\n localIps: string[];\n hasTailscale: boolean;\n tailscaleIp: string | null;\n}> {\n const localIps: string[] = [];\n const ifaces = networkInterfaces();\n for (const addrs of Object.values(ifaces)) {\n if (!addrs) continue;\n for (const a of addrs) {\n if (!a.internal && a.family === \"IPv4\") {\n localIps.push(a.address);\n }\n }\n }\n\n let publicIp: string | null = null;\n try {\n const res = await fetch(\"https://api.ipify.org?format=text\", {\n signal: AbortSignal.timeout(5000),\n });\n publicIp = (await res.text()).trim();\n } catch {\n // unable to reach internet\n }\n\n const isBehindNat = publicIp !== null && !localIps.includes(publicIp);\n\n // Avoid shelling out here so the plugin passes OpenClaw's safety scanner.\n // Tailscale presence/IP can be supplied by config or discovered externally if needed.\n const hasTailscale = false;\n const tailscaleIp: string | null = null;\n\n return { isBehindNat, publicIp, localIps, hasTailscale, tailscaleIp };\n}\n\nexport class A2AServer {\n private app: express.Express;\n private tasks: Map<string, Task> = new Map();\n private agentCard: AgentCard;\n private config: A2APluginConfig;\n private logger: { info: (...args: unknown[]) => void; error: (...args: unknown[]) => void };\n private clientOnly = false;\n private relayClient: RelayClient | null = null;\n private relayHub: RelayHub | null = null;\n private messageInjector: ((text: string, metadata?: Record<string, unknown>) => void) | null = null;\n private taskResultHandler: TaskResultHandler | null = null;\n private taskFailureHandler: TaskFailureHandler | null = null;\n\n constructor(\n config: A2APluginConfig,\n logger?: { info: (...args: unknown[]) => void; error: (...args: unknown[]) => void }\n ) {\n this.config = config;\n this.logger = logger || { info: console.log, error: console.error };\n this.app = express();\n this.app.use(express.json());\n\n this.agentCard = {\n name: config.agentName,\n description: `PerkOS agent: ${config.agentName}`,\n protocolVersion: \"0.3.0\",\n version: \"1.0.0\",\n url: `http://localhost:${config.port}/a2a/jsonrpc`,\n skills: config.skills || [],\n capabilities: { pushNotifications: false },\n defaultInputModes: [\"text\"],\n defaultOutputModes: [\"text\"],\n };\n\n this.setupRoutes();\n }\n\n /** Set the message injector for delivering tasks into the agent session */\n setMessageInjector(injector: (text: string, metadata?: Record<string, unknown>) => void): void {\n this.messageInjector = injector;\n }\n\n setTaskResultHandler(handler: TaskResultHandler | null): void {\n this.taskResultHandler = handler;\n }\n\n setTaskFailureHandler(handler: TaskFailureHandler | null): void {\n this.taskFailureHandler = handler;\n }\n\n isClientOnly(): boolean {\n return this.clientOnly;\n }\n\n isRelayConnected(): boolean {\n return this.relayClient?.isConnected() || false;\n }\n\n private authMiddleware(): express.RequestHandler {\n return (req, res, next) => {\n if (!this.config.auth?.requireApiKey) {\n next();\n return;\n }\n\n const apiKey =\n req.headers[\"x-api-key\"] as string ||\n req.headers[\"authorization\"]?.replace(/^Bearer\\s+/i, \"\") ||\n (req.query[\"apiKey\"] as string);\n\n if (!apiKey || !this.config.auth.apiKeys.includes(apiKey)) {\n res.status(401).json({ error: \"Unauthorized: invalid or missing API key\" });\n return;\n }\n\n next();\n };\n }\n\n private setupRoutes(): void {\n // Public endpoints (no auth required)\n this.app.get(\"/.well-known/agent-card.json\", (_req, res) => {\n res.json(this.agentCard);\n });\n\n this.app.get(\"/health\", (_req, res) => {\n res.json({\n ok: true,\n agent: this.config.agentName,\n protocol: \"a2a\",\n version: \"0.8.1\",\n peers: Object.keys(this.config.peers),\n taskCount: this.tasks.size,\n relayConnected: this.isRelayConnected(),\n });\n });\n\n // Protected endpoints\n const auth = this.authMiddleware();\n\n this.app.post(\"/a2a/jsonrpc\", auth, async (req, res) => {\n const { method, params, id } = req.body;\n try {\n let result: JsonRpcResponse;\n switch (method) {\n case \"message/send\":\n result = await this.handleSendMessage(params, id);\n break;\n case \"tasks/get\":\n result = this.handleGetTask(params, id);\n break;\n case \"tasks/list\":\n result = this.handleListTasks(id);\n break;\n case \"tasks/cancel\":\n result = this.handleCancelTask(params, id);\n break;\n case \"agent/card\":\n result = this.success(id, this.agentCard);\n break;\n default:\n result = this.error(id, -32601, `Method not found: ${method}`);\n }\n res.json(result);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n this.logger.error(`[perkos-a2a] RPC error: ${msg}`);\n res.json(this.error(id, -32603, msg));\n }\n });\n\n this.app.get(\"/a2a/peers\", auth, async (_req, res) => {\n const results = await this.discoverPeers();\n res.json(results);\n });\n\n this.app.post(\"/a2a/send\", auth, async (req, res) => {\n const { target, message } = req.body;\n try {\n const result = await this.sendTask(target, message);\n res.json({ ok: true, result });\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n res.status(500).json({ ok: false, error: msg });\n }\n });\n }\n\n private async handleSendMessage(\n params: Record<string, unknown>,\n rpcId: string\n ): Promise<JsonRpcResponse> {\n const message = params.message as Message;\n const taskId = randomUUID();\n const contextId = message?.contextId || randomUUID();\n\n const task: Task = {\n kind: \"task\",\n id: taskId,\n contextId,\n status: { state: \"submitted\", timestamp: new Date().toISOString() },\n messages: [message],\n artifacts: [],\n metadata: {\n fromAgent: (message?.metadata?.fromAgent as string) || \"unknown\",\n },\n };\n\n this.tasks.set(taskId, task);\n this.logger.info(\n `[perkos-a2a] Task ${taskId} received from ${task.metadata?.fromAgent}`\n );\n\n this.processTask(task);\n return this.success(rpcId, task);\n }\n\n private async processTask(task: Task): Promise<void> {\n task.status = { state: \"working\", timestamp: new Date().toISOString() };\n\n const textParts = task.messages\n .flatMap((m) => m.parts || [])\n .filter((p) => p.kind === \"text\")\n .map((p) => p.text)\n .join(\"\\n\");\n\n try {\n // Attempt session injection first\n if (this.messageInjector) {\n this.messageInjector(textParts, {\n source: \"a2a\",\n fromAgent: task.metadata?.fromAgent,\n taskId: task.id,\n });\n task.artifacts.push({\n kind: \"artifact\",\n artifactId: randomUUID(),\n parts: [{ kind: \"text\", text: \"Task injected into agent session\" }],\n });\n } else {\n // Fallback: write to file\n const fs = await import(\"fs\");\n const taskDir = (this.config as any).workspacePath\n || `${homedir()}/.openclaw/workspace/memory`;\n if (!fs.existsSync(taskDir)) {\n fs.mkdirSync(taskDir, { recursive: true });\n }\n\n const taskFile = `${taskDir}/a2a-task-${task.id}.md`;\n const content = [\n \"# A2A Task\",\n \"\",\n `**From:** ${task.metadata?.fromAgent}`,\n `**Task ID:** ${task.id}`,\n `**Time:** ${new Date().toISOString()}`,\n \"\",\n \"## Message\",\n \"\",\n textParts,\n \"\",\n ].join(\"\\n\");\n\n fs.writeFileSync(taskFile, content);\n\n task.artifacts.push({\n kind: \"artifact\",\n artifactId: randomUUID(),\n parts: [{ kind: \"text\", text: `Task queued: ${taskFile}` }],\n });\n }\n\n if (this.taskResultHandler) {\n await this.taskResultHandler(task, textParts);\n } else {\n task.status = {\n state: \"completed\",\n timestamp: new Date().toISOString(),\n };\n }\n\n this.logger.info(`[perkos-a2a] Task ${task.id} completed`);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n if (this.taskFailureHandler) {\n await this.taskFailureHandler(task, msg);\n } else {\n task.status = {\n state: \"failed\",\n timestamp: new Date().toISOString(),\n message: {\n role: \"agent\",\n parts: [{ kind: \"text\", text: msg }],\n },\n };\n }\n this.logger.error(`[perkos-a2a] Task ${task.id} failed: ${msg}`);\n }\n }\n\n private handleGetTask(\n params: Record<string, unknown>,\n rpcId: string\n ): JsonRpcResponse {\n const task = this.tasks.get(params?.id as string);\n if (!task) return this.error(rpcId, 404, \"Task not found\");\n return this.success(rpcId, task);\n }\n\n private handleListTasks(rpcId: string): JsonRpcResponse {\n const allTasks = Array.from(this.tasks.values()).sort(\n (a, b) =>\n new Date(b.status.timestamp).getTime() -\n new Date(a.status.timestamp).getTime()\n );\n return this.success(rpcId, { tasks: allTasks, nextPageToken: \"\" });\n }\n\n private handleCancelTask(\n params: Record<string, unknown>,\n rpcId: string\n ): JsonRpcResponse {\n const task = this.tasks.get(params?.id as string);\n if (!task) return this.error(rpcId, 404, \"Task not found\");\n if ([\"completed\", \"failed\", \"canceled\"].includes(task.status.state)) {\n return this.error(rpcId, 409, \"Task not cancelable\");\n }\n task.status = { state: \"canceled\", timestamp: new Date().toISOString() };\n return this.success(rpcId, task);\n }\n\n /** Send a task to a peer agent via A2A protocol (direct HTTP or relay) */\n async sendTask(\n targetAgent: string,\n messageText: string\n ): Promise<JsonRpcResponse> {\n const targetUrl = this.config.peers[targetAgent];\n\n // Try direct HTTP first if peer URL is configured\n if (targetUrl) {\n try {\n return await this.sendTaskDirect(targetAgent, targetUrl, messageText);\n } catch (err) {\n // If relay is available, fall through to relay\n if (!this.relayClient?.isConnected()) {\n throw err;\n }\n this.logger.info(\n `[perkos-a2a] Direct send to ${targetAgent} failed, falling back to relay`\n );\n }\n }\n\n // Try relay\n if (this.relayClient?.isConnected()) {\n return this.sendTaskViaRelay(targetAgent, messageText);\n }\n\n throw new Error(\n `Cannot reach ${targetAgent}: no direct URL configured and relay not connected. ` +\n `Known peers: ${Object.keys(this.config.peers).join(\", \")}`\n );\n }\n\n private async sendTaskDirect(\n targetAgent: string,\n targetUrl: string,\n messageText: string\n ): Promise<JsonRpcResponse> {\n const headers: Record<string, string> = { \"Content-Type\": \"application/json\" };\n\n // Include auth token if peer has one configured\n const peerAuth = this.config.peerAuth?.[targetAgent];\n if (peerAuth) {\n headers[\"x-api-key\"] = peerAuth;\n }\n\n const payload = {\n jsonrpc: \"2.0\",\n method: \"message/send\",\n id: randomUUID(),\n params: {\n message: {\n kind: \"message\",\n messageId: randomUUID(),\n role: \"user\",\n parts: [{ kind: \"text\", text: messageText }],\n metadata: { fromAgent: this.config.agentName },\n },\n },\n };\n\n const response = await fetch(`${targetUrl}/a2a/jsonrpc`, {\n method: \"POST\",\n headers,\n body: JSON.stringify(payload),\n });\n\n return (await response.json()) as JsonRpcResponse;\n }\n\n private async sendTaskViaRelay(\n targetAgent: string,\n messageText: string\n ): Promise<JsonRpcResponse> {\n const rpcId = randomUUID();\n const result = await this.relayClient!.sendTask(targetAgent, {\n jsonrpc: \"2.0\",\n method: \"message/send\",\n id: rpcId,\n params: {\n message: {\n kind: \"message\",\n messageId: randomUUID(),\n role: \"user\",\n parts: [{ kind: \"text\", text: messageText }],\n metadata: { fromAgent: this.config.agentName },\n },\n },\n });\n\n return (result.payload as unknown as JsonRpcResponse) || this.success(rpcId, result.payload);\n }\n\n /** Discover all peer agents (direct + relay) */\n async discoverPeers(): Promise<\n Record<string, { status: string; card?: AgentCard }>\n > {\n const results: Record<string, { status: string; card?: AgentCard }> = {};\n\n // Direct peer discovery\n for (const [name, url] of Object.entries(this.config.peers)) {\n try {\n const r = await fetch(`${url}/.well-known/agent-card.json`, {\n signal: AbortSignal.timeout(3000),\n });\n results[name] = { status: \"online\", card: (await r.json()) as AgentCard };\n } catch {\n results[name] = { status: \"offline\" };\n }\n }\n\n // Relay discovery (merge, relay overrides offline status from direct)\n if (this.relayClient?.isConnected()) {\n try {\n const relayAgents = await this.relayClient.discover();\n for (const agent of relayAgents) {\n if (agent.name === this.config.agentName) continue;\n const existing = results[agent.name];\n if (!existing || existing.status === \"offline\") {\n results[agent.name] = {\n status: \"online\",\n card: agent.card,\n };\n }\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n this.logger.error(`[perkos-a2a] Relay discovery failed: ${msg}`);\n }\n }\n\n return results;\n }\n\n private success(id: string, result: unknown): JsonRpcResponse {\n return { jsonrpc: \"2.0\", id, result };\n }\n\n private error(id: string, code: number, message: string): JsonRpcResponse {\n return { jsonrpc: \"2.0\", id, error: { code, message } };\n }\n\n /** Handle an inbound task received via the relay */\n private handleRelayTask(msg: RelayMessage): void {\n const payload = msg.payload as any;\n const params = payload.params || payload;\n const rpcId = payload.id || msg.id;\n\n this.handleSendMessage(params, rpcId).then((response) => {\n this.relayClient?.sendTaskResponse(msg, response as unknown as Record<string, unknown>);\n }).catch((err) => {\n const errMsg = err instanceof Error ? err.message : String(err);\n this.logger.error(`[perkos-a2a] Failed to process relay task: ${errMsg}`);\n this.relayClient?.sendTaskResponse(msg, this.error(rpcId, -32603, errMsg) as unknown as Record<string, unknown>);\n });\n }\n\n private startRelayClient(): void {\n const relay = this.config.relay;\n if (!relay?.enabled || !relay?.url) return;\n\n this.relayClient = new RelayClient({\n agentName: this.config.agentName,\n relay,\n card: this.agentCard,\n onTask: (msg) => this.handleRelayTask(msg),\n logger: this.logger,\n });\n\n this.relayClient.start();\n this.logger.info(`[perkos-a2a] Relay client started, connecting to ${relay.url}`);\n }\n\n private startRelayHub(): void {\n const relayConfig = this.config.relay;\n this.relayHub = new RelayHub(\n {\n port: this.config.port,\n apiKeys: this.config.auth?.apiKeys || [],\n maxQueuePerAgent: 200,\n rateLimitPerMinute: 60,\n heartbeatIntervalMs: 30_000,\n heartbeatTimeoutMs: 90_000,\n },\n this.logger\n );\n this.relayHub.start();\n }\n\n async start(): Promise<void> {\n const mode = this.config.mode || \"auto\";\n\n if (mode === \"relay\") {\n this.clientOnly = true;\n this.startRelayHub();\n return;\n }\n\n if (mode === \"client-only\") {\n this.clientOnly = true;\n this.startRelayClient();\n if (!this.config.relay?.enabled) {\n this.logger.info(\n \"[perkos-a2a] Running in client-only mode. Configure relay for NAT traversal or set up Tailscale/tunnel.\"\n );\n }\n return;\n }\n\n if (mode === \"full\") {\n this.tryListen(this.config.port);\n this.startRelayClient();\n return;\n }\n\n // auto mode: detect networking, decide\n try {\n const net = await detectNetworking();\n if (net.isBehindNat && !net.hasTailscale) {\n if (this.config.relay?.enabled) {\n this.logger.info(\n \"[perkos-a2a] Behind NAT, using relay for bidirectional communication\"\n );\n this.clientOnly = true;\n this.startRelayClient();\n } else {\n this.logger.info(\n \"[perkos-a2a] Running in client-only mode (behind NAT). Configure relay or Tailscale for bidirectional A2A.\"\n );\n this.clientOnly = true;\n }\n return;\n }\n if (net.isBehindNat && net.hasTailscale && net.tailscaleIp) {\n this.logger.info(\n `[perkos-a2a] Behind NAT but Tailscale detected (${net.tailscaleIp}). Starting server.`\n );\n }\n } catch {\n // detection failed, try to start anyway\n }\n\n this.tryListen(this.config.port);\n this.startRelayClient();\n }\n\n private tryListen(port: number, attempt = 1): void {\n const maxAttempts = 3;\n try {\n const srv = this.app.listen(port, \"0.0.0.0\", () => {\n this.logger.info(\n `[perkos-a2a] ${this.config.agentName} server on port ${port}`\n );\n this.agentCard.url = `http://localhost:${port}/a2a/jsonrpc`;\n });\n srv.on(\"error\", (err: NodeJS.ErrnoException) => {\n if (err.code === \"EADDRINUSE\" && attempt < maxAttempts) {\n const nextPort = port + 1;\n this.logger.info(`[perkos-a2a] Port ${port} in use, trying ${nextPort}`);\n this.tryListen(nextPort, attempt + 1);\n } else if (err.code === \"EADDRINUSE\") {\n this.logger.info(\n `[perkos-a2a] Ports ${this.config.port}-${port} all in use. Falling back to client-only mode.`\n );\n this.clientOnly = true;\n } else {\n this.logger.error(`[perkos-a2a] Server error: ${err.message}`);\n }\n });\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n this.logger.error(`[perkos-a2a] Failed to start server: ${msg}`);\n }\n }\n\n getExpressApp(): express.Express {\n return this.app;\n }\n}\n", "/**\n * A2A Relay Client\n *\n * WebSocket client that connects to an A2A Relay Hub for NAT-friendly\n * bidirectional communication. Handles registration, auto-reconnect\n * with exponential backoff, heartbeats, and message routing.\n */\n\nimport WebSocket from \"ws\";\nimport { randomUUID } from \"crypto\";\nimport type { RelayMessage, RelayConfig, AgentCard, RelayAgentEntry } from \"./types.js\";\n\nexport interface RelayClientOptions {\n agentName: string;\n relay: RelayConfig;\n card?: AgentCard;\n /** Called when a task message arrives via the relay */\n onTask: (msg: RelayMessage) => void;\n /** Called when a discover response arrives */\n onDiscoverResponse?: (agents: RelayAgentEntry[]) => void;\n logger?: { info: (...args: unknown[]) => void; error: (...args: unknown[]) => void };\n}\n\nconst MIN_RECONNECT_MS = 1_000;\nconst MAX_RECONNECT_MS = 60_000;\nconst HEARTBEAT_INTERVAL_MS = 25_000;\n\nexport class RelayClient {\n private ws: WebSocket | null = null;\n private options: RelayClientOptions;\n private logger: { info: (...args: unknown[]) => void; error: (...args: unknown[]) => void };\n private reconnectMs = MIN_RECONNECT_MS;\n private reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n private heartbeatTimer: ReturnType<typeof setInterval> | null = null;\n private connected = false;\n private stopped = false;\n private pendingCallbacks: Map<string, (msg: RelayMessage) => void> = new Map();\n\n constructor(options: RelayClientOptions) {\n this.options = options;\n this.logger = options.logger || { info: console.log, error: console.error };\n }\n\n isConnected(): boolean {\n return this.connected;\n }\n\n start(): void {\n this.stopped = false;\n this.connect();\n }\n\n stop(): void {\n this.stopped = true;\n this.clearTimers();\n if (this.ws) {\n this.ws.close(1000, \"Client shutting down\");\n this.ws = null;\n }\n this.connected = false;\n }\n\n /** Send a task to another agent via the relay */\n async sendTask(targetAgent: string, payload: Record<string, unknown>): Promise<RelayMessage> {\n return this.sendAndWait({\n type: \"task\",\n to: targetAgent,\n id: randomUUID(),\n from: this.options.agentName,\n payload,\n timestamp: new Date().toISOString(),\n }, \"task_response\", 30_000);\n }\n\n /** Discover agents connected to the relay */\n async discover(): Promise<RelayAgentEntry[]> {\n const response = await this.sendAndWait({\n type: \"discover\",\n id: randomUUID(),\n from: this.options.agentName,\n payload: {},\n timestamp: new Date().toISOString(),\n }, \"discover_response\", 10_000);\n return (response.payload.agents as RelayAgentEntry[]) || [];\n }\n\n /** Send a task response back through the relay */\n sendTaskResponse(originalMsg: RelayMessage, result: Record<string, unknown>): void {\n const response: RelayMessage = {\n type: \"task_response\",\n id: originalMsg.id,\n from: this.options.agentName,\n to: originalMsg.from,\n payload: result,\n timestamp: new Date().toISOString(),\n };\n this.send(response);\n }\n\n private connect(): void {\n if (this.stopped) return;\n\n const url = this.options.relay.url;\n this.logger.info(`[perkos-a2a] Connecting to relay: ${url}`);\n\n try {\n this.ws = new WebSocket(url);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n this.logger.error(`[perkos-a2a] Failed to create WebSocket: ${msg}`);\n this.scheduleReconnect();\n return;\n }\n\n this.ws.on(\"open\", () => {\n this.connected = true;\n this.reconnectMs = MIN_RECONNECT_MS;\n this.logger.info(\"[perkos-a2a] Connected to relay hub\");\n this.register();\n this.startHeartbeat();\n });\n\n this.ws.on(\"message\", (data) => {\n let msg: RelayMessage;\n try {\n msg = JSON.parse(data.toString());\n } catch {\n this.logger.error(\"[perkos-a2a] Failed to parse relay message\");\n return;\n }\n this.handleMessage(msg);\n });\n\n this.ws.on(\"close\", (code, reason) => {\n this.connected = false;\n this.clearTimers();\n if (!this.stopped) {\n this.logger.info(`[perkos-a2a] Relay connection closed (${code}: ${reason || \"no reason\"}). Reconnecting...`);\n this.scheduleReconnect();\n }\n });\n\n this.ws.on(\"error\", (err) => {\n this.logger.error(`[perkos-a2a] Relay WebSocket error: ${err.message}`);\n });\n }\n\n private register(): void {\n const msg: RelayMessage = {\n type: \"register\",\n id: randomUUID(),\n from: this.options.agentName,\n payload: {\n agentName: this.options.agentName,\n apiKey: this.options.relay.apiKey,\n card: this.options.card,\n },\n timestamp: new Date().toISOString(),\n };\n this.send(msg);\n }\n\n private handleMessage(msg: RelayMessage): void {\n // Check for pending request/response callbacks\n const callback = this.pendingCallbacks.get(msg.id);\n if (callback) {\n this.pendingCallbacks.delete(msg.id);\n callback(msg);\n return;\n }\n\n switch (msg.type) {\n case \"register_ack\":\n this.logger.info(\"[perkos-a2a] Registered with relay hub\");\n break;\n case \"task\":\n this.options.onTask(msg);\n break;\n case \"task_response\":\n // Late response with no pending callback; log and discard\n this.logger.info(`[perkos-a2a] Received unmatched task response: ${msg.id}`);\n break;\n case \"discover_response\":\n if (this.options.onDiscoverResponse) {\n this.options.onDiscoverResponse(msg.payload.agents as RelayAgentEntry[]);\n }\n break;\n case \"heartbeat_ack\":\n break;\n case \"error\":\n this.logger.error(`[perkos-a2a] Relay error: ${msg.payload.code} - ${msg.payload.message}`);\n break;\n default:\n this.logger.info(`[perkos-a2a] Unknown relay message type: ${msg.type}`);\n }\n }\n\n private send(msg: RelayMessage): void {\n if (this.ws && this.ws.readyState === WebSocket.OPEN) {\n this.ws.send(JSON.stringify(msg));\n }\n }\n\n private async sendAndWait(\n msg: RelayMessage,\n expectedType: string,\n timeoutMs: number\n ): Promise<RelayMessage> {\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n this.pendingCallbacks.delete(msg.id);\n reject(new Error(`Relay request timed out after ${timeoutMs}ms`));\n }, timeoutMs);\n\n this.pendingCallbacks.set(msg.id, (response) => {\n clearTimeout(timer);\n if (response.type === \"error\") {\n reject(new Error(`Relay error: ${response.payload.message}`));\n } else {\n resolve(response);\n }\n });\n\n this.send(msg);\n });\n }\n\n private startHeartbeat(): void {\n this.heartbeatTimer = setInterval(() => {\n const msg: RelayMessage = {\n type: \"heartbeat\",\n id: randomUUID(),\n from: this.options.agentName,\n payload: {},\n timestamp: new Date().toISOString(),\n };\n this.send(msg);\n }, HEARTBEAT_INTERVAL_MS);\n }\n\n private scheduleReconnect(): void {\n if (this.stopped) return;\n this.reconnectTimer = setTimeout(() => {\n this.connect();\n }, this.reconnectMs);\n this.reconnectMs = Math.min(this.reconnectMs * 2, MAX_RECONNECT_MS);\n }\n\n private clearTimers(): void {\n if (this.heartbeatTimer) {\n clearInterval(this.heartbeatTimer);\n this.heartbeatTimer = null;\n }\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n }\n}\n", "/**\n * A2A Relay Hub\n *\n * Lightweight WebSocket broker for NAT traversal. Agents connect outbound\n * to the relay, which routes messages between them. Supports API key auth,\n * rate limiting, agent presence registry, and offline message queuing.\n *\n * Can run standalone via bin/relay.ts or embedded in full mode.\n */\n\nimport { WebSocketServer, WebSocket } from \"ws\";\nimport { randomUUID } from \"crypto\";\nimport type { RelayMessage, RelayAgentEntry, AgentCard } from \"./types.js\";\n\ninterface ConnectedAgent {\n name: string;\n ws: WebSocket;\n apiKey: string;\n card?: AgentCard;\n connectedAt: string;\n lastHeartbeat: string;\n}\n\ninterface QueuedMessage {\n message: RelayMessage;\n queuedAt: string;\n}\n\nexport interface RelayHubConfig {\n port: number;\n /** Accepted API keys. If empty, auth is disabled. */\n apiKeys: string[];\n /** Maximum queued messages per offline agent */\n maxQueuePerAgent: number;\n /** Rate limit: max messages per agent per minute */\n rateLimitPerMinute: number;\n /** Heartbeat interval in milliseconds */\n heartbeatIntervalMs: number;\n /** Consider agent dead after this many missed heartbeats */\n heartbeatTimeoutMs: number;\n}\n\nconst DEFAULT_CONFIG: RelayHubConfig = {\n port: 6060,\n apiKeys: [],\n maxQueuePerAgent: 200,\n rateLimitPerMinute: 60,\n heartbeatIntervalMs: 30_000,\n heartbeatTimeoutMs: 90_000,\n};\n\nexport class RelayHub {\n private wss: WebSocketServer | null = null;\n private agents: Map<string, ConnectedAgent> = new Map();\n private offlineQueue: Map<string, QueuedMessage[]> = new Map();\n private rateCounts: Map<string, { count: number; windowStart: number }> = new Map();\n private config: RelayHubConfig;\n private heartbeatTimer: ReturnType<typeof setInterval> | null = null;\n private logger: { info: (...args: unknown[]) => void; error: (...args: unknown[]) => void };\n\n constructor(\n config?: Partial<RelayHubConfig>,\n logger?: { info: (...args: unknown[]) => void; error: (...args: unknown[]) => void }\n ) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.logger = logger || { info: console.log, error: console.error };\n }\n\n start(): void {\n this.wss = new WebSocketServer({ port: this.config.port });\n this.logger.info(`[perkos-a2a] Relay hub listening on port ${this.config.port}`);\n\n this.wss.on(\"connection\", (ws, req) => {\n const remoteAddr = req.socket.remoteAddress || \"unknown\";\n this.logger.info(`[perkos-a2a] Relay connection from ${remoteAddr}`);\n this.handleConnection(ws);\n });\n\n this.heartbeatTimer = setInterval(() => this.checkHeartbeats(), this.config.heartbeatIntervalMs);\n }\n\n stop(): void {\n if (this.heartbeatTimer) {\n clearInterval(this.heartbeatTimer);\n this.heartbeatTimer = null;\n }\n if (this.wss) {\n for (const agent of this.agents.values()) {\n agent.ws.close(1001, \"Relay shutting down\");\n }\n this.wss.close();\n this.wss = null;\n this.logger.info(\"[perkos-a2a] Relay hub stopped\");\n }\n }\n\n getRegistry(): RelayAgentEntry[] {\n const entries: RelayAgentEntry[] = [];\n for (const agent of this.agents.values()) {\n entries.push({\n name: agent.name,\n connectedAt: agent.connectedAt,\n lastHeartbeat: agent.lastHeartbeat,\n card: agent.card,\n });\n }\n return entries;\n }\n\n private handleConnection(ws: WebSocket): void {\n let agentName: string | null = null;\n\n ws.on(\"message\", (data) => {\n let msg: RelayMessage;\n try {\n msg = JSON.parse(data.toString());\n } catch {\n this.sendError(ws, \"invalid_json\", \"Failed to parse message\");\n return;\n }\n\n if (msg.type === \"register\") {\n agentName = this.handleRegister(ws, msg);\n return;\n }\n\n if (!agentName) {\n this.sendError(ws, \"not_registered\", \"Must register before sending messages\");\n return;\n }\n\n if (!this.checkRateLimit(agentName)) {\n this.sendError(ws, \"rate_limited\", \"Rate limit exceeded\");\n return;\n }\n\n switch (msg.type) {\n case \"task\":\n case \"task_response\":\n this.routeMessage(agentName, msg);\n break;\n case \"discover\":\n this.handleDiscover(ws, msg);\n break;\n case \"heartbeat\":\n this.handleHeartbeat(agentName, msg);\n break;\n default:\n this.sendError(ws, \"unknown_type\", `Unknown message type: ${msg.type}`);\n }\n });\n\n ws.on(\"close\", () => {\n if (agentName) {\n this.agents.delete(agentName);\n this.logger.info(`[perkos-a2a] Agent disconnected: ${agentName}`);\n }\n });\n\n ws.on(\"error\", (err) => {\n this.logger.error(`[perkos-a2a] WebSocket error for ${agentName || \"unknown\"}: ${err.message}`);\n });\n }\n\n private handleRegister(ws: WebSocket, msg: RelayMessage): string | null {\n const name = msg.payload.agentName as string;\n const apiKey = msg.payload.apiKey as string;\n\n if (!name) {\n this.sendError(ws, \"missing_name\", \"agentName is required for registration\");\n return null;\n }\n\n if (this.config.apiKeys.length > 0 && !this.config.apiKeys.includes(apiKey)) {\n this.sendError(ws, \"auth_failed\", \"Invalid API key\");\n ws.close(4001, \"Authentication failed\");\n return null;\n }\n\n // Disconnect existing connection for same agent name\n const existing = this.agents.get(name);\n if (existing) {\n existing.ws.close(4002, \"Replaced by new connection\");\n }\n\n const now = new Date().toISOString();\n this.agents.set(name, {\n name,\n ws,\n apiKey: apiKey || \"\",\n card: msg.payload.card as AgentCard | undefined,\n connectedAt: now,\n lastHeartbeat: now,\n });\n\n this.logger.info(`[perkos-a2a] Agent registered: ${name}`);\n\n const ack: RelayMessage = {\n type: \"register_ack\",\n id: msg.id,\n from: \"relay\",\n payload: { status: \"ok\", agentName: name },\n timestamp: now,\n };\n ws.send(JSON.stringify(ack));\n\n // Deliver queued messages\n this.drainQueue(name, ws);\n\n return name;\n }\n\n private routeMessage(fromAgent: string, msg: RelayMessage): void {\n const target = msg.to;\n if (!target) {\n this.sendError(this.agents.get(fromAgent)!.ws, \"missing_target\", \"Message requires 'to' field\");\n return;\n }\n\n msg.from = fromAgent;\n msg.timestamp = new Date().toISOString();\n\n const targetAgent = this.agents.get(target);\n if (targetAgent && targetAgent.ws.readyState === WebSocket.OPEN) {\n targetAgent.ws.send(JSON.stringify(msg));\n } else {\n // Queue for offline delivery\n if (!this.offlineQueue.has(target)) {\n this.offlineQueue.set(target, []);\n }\n const queue = this.offlineQueue.get(target)!;\n if (queue.length < this.config.maxQueuePerAgent) {\n queue.push({ message: msg, queuedAt: new Date().toISOString() });\n this.logger.info(`[perkos-a2a] Queued message for offline agent: ${target} (${queue.length} pending)`);\n } else {\n this.logger.info(`[perkos-a2a] Queue full for agent: ${target}, dropping message`);\n const sender = this.agents.get(fromAgent);\n if (sender) {\n this.sendError(sender.ws, \"queue_full\", `Target agent ${target} queue is full`);\n }\n }\n }\n }\n\n private drainQueue(agentName: string, ws: WebSocket): void {\n const queue = this.offlineQueue.get(agentName);\n if (!queue || queue.length === 0) return;\n\n this.logger.info(`[perkos-a2a] Delivering ${queue.length} queued messages to ${agentName}`);\n for (const item of queue) {\n if (ws.readyState === WebSocket.OPEN) {\n ws.send(JSON.stringify(item.message));\n }\n }\n this.offlineQueue.delete(agentName);\n }\n\n private handleDiscover(ws: WebSocket, msg: RelayMessage): void {\n const agents: RelayAgentEntry[] = this.getRegistry();\n const response: RelayMessage = {\n type: \"discover_response\",\n id: msg.id,\n from: \"relay\",\n payload: { agents },\n timestamp: new Date().toISOString(),\n };\n ws.send(JSON.stringify(response));\n }\n\n private handleHeartbeat(agentName: string, msg: RelayMessage): void {\n const agent = this.agents.get(agentName);\n if (agent) {\n agent.lastHeartbeat = new Date().toISOString();\n }\n const ack: RelayMessage = {\n type: \"heartbeat_ack\",\n id: msg.id,\n from: \"relay\",\n payload: {},\n timestamp: new Date().toISOString(),\n };\n const ws = agent?.ws;\n if (ws && ws.readyState === WebSocket.OPEN) {\n ws.send(JSON.stringify(ack));\n }\n }\n\n private checkHeartbeats(): void {\n const now = Date.now();\n for (const [name, agent] of this.agents) {\n const lastBeat = new Date(agent.lastHeartbeat).getTime();\n if (now - lastBeat > this.config.heartbeatTimeoutMs) {\n this.logger.info(`[perkos-a2a] Agent ${name} timed out (no heartbeat)`);\n agent.ws.close(4003, \"Heartbeat timeout\");\n this.agents.delete(name);\n }\n }\n }\n\n private checkRateLimit(agentName: string): boolean {\n const now = Date.now();\n const window = 60_000;\n let entry = this.rateCounts.get(agentName);\n\n if (!entry || now - entry.windowStart > window) {\n entry = { count: 0, windowStart: now };\n this.rateCounts.set(agentName, entry);\n }\n\n entry.count++;\n return entry.count <= this.config.rateLimitPerMinute;\n }\n\n private sendError(ws: WebSocket, code: string, message: string): void {\n const errorMsg: RelayMessage = {\n type: \"error\",\n id: randomUUID(),\n from: \"relay\",\n payload: { code, message },\n timestamp: new Date().toISOString(),\n };\n if (ws.readyState === WebSocket.OPEN) {\n ws.send(JSON.stringify(errorMsg));\n }\n }\n}\n", "/**\n * @perkos/perkos-a2a -- OpenClaw Plugin\n *\n * Agent-to-Agent (A2A) protocol communication plugin.\n * Adds tools for agents to discover peers, send tasks, and check task status.\n * Supports direct HTTP, relay-based NAT traversal, and session injection.\n *\n * v0.8.0: Uses enqueueSystemEvent + WebSocket wake for immediate task processing.\n */\n\nimport { A2AServer, detectNetworking } from \"./server.js\";\nimport { randomUUID } from \"crypto\";\nimport path from \"path\";\nimport type { A2APluginConfig } from \"./types.js\";\nexport { A2AServer, detectNetworking } from \"./server.js\";\nexport { RelayHub } from \"./relay.js\";\nexport { RelayClient } from \"./relay-client.js\";\nexport * from \"./types.js\";\n\ntype HeartbeatWakeFn = (opts?: { reason?: string; coalesceMs?: number; sessionKey?: string }) => void;\n\nfunction wakeGatewayAgent(\n requestHeartbeatNow: HeartbeatWakeFn | undefined,\n reason: string,\n logger: { info: (...args: unknown[]) => void; error: (...args: unknown[]) => void },\n sessionKey = \"agent:main\"\n): void {\n if (typeof requestHeartbeatNow === \"function\") {\n try {\n requestHeartbeatNow({ reason, sessionKey });\n logger.info(`[perkos-a2a] Wake triggered via runtime.system.requestHeartbeatNow: ${reason} (session: ${sessionKey})`);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n logger.error(`[perkos-a2a] runtime.system.requestHeartbeatNow failed: ${msg}`);\n }\n } else {\n logger.info(\"[perkos-a2a] runtime.system.requestHeartbeatNow unavailable \u2014 task will process on next agent turn\");\n }\n}\n\nexport default function register(api: any) {\n const pluginConfig: A2APluginConfig = api.config?.plugins?.entries?.[\"perkos-a2a\"]?.config || {\n agentName: \"agent\",\n port: 5050,\n skills: [],\n peers: {},\n };\n\n const logger = api.logger || console;\n const server = new A2AServer(pluginConfig, logger);\n\n // Pending tasks queue for hook-based injection\n const pendingTasks: Array<{ from: string; text: string; taskId: string; time: string }> = [];\n\n // Get system helpers from the plugin runtime API\n const enqueueSystemEvent = api.runtime?.system?.enqueueSystemEvent;\n const requestHeartbeatNow = api.runtime?.system?.requestHeartbeatNow as HeartbeatWakeFn | undefined;\n if (enqueueSystemEvent) {\n logger.info(\"[perkos-a2a] enqueueSystemEvent available \u2014 will inject tasks as system events + wake\");\n } else {\n logger.info(\"[perkos-a2a] enqueueSystemEvent not available \u2014 falling back to before_agent_start hook only\");\n }\n if (requestHeartbeatNow) {\n logger.info(\"[perkos-a2a] runtime.system.requestHeartbeatNow available \u2014 immediate wake enabled\");\n } else {\n logger.info(\"[perkos-a2a] runtime.system.requestHeartbeatNow unavailable \u2014 wake will rely on next agent turn\");\n }\n\n server.setTaskResultHandler(async (task, text) => {\n const cfg = await api.runtime?.config?.loadConfig?.();\n if (!api.runtime?.agent?.runEmbeddedAgent || !cfg) {\n task.status = {\n state: \"completed\",\n timestamp: new Date().toISOString(),\n };\n return;\n }\n\n const agentDir = api.runtime.agent.resolveAgentDir(cfg);\n const workspaceDir = api.runtime.agent.resolveAgentWorkspaceDir(cfg);\n await api.runtime.agent.ensureAgentWorkspace(cfg);\n\n const sessionId = `perkos-a2a:task:${task.id}`;\n const prompt = [\n `You are handling an incoming A2A task from agent ${task.metadata?.fromAgent || \"unknown\"}.`,\n `Task ID: ${task.id}`,\n `Context ID: ${task.contextId}`,\n \"\",\n \"Execute the request below and return the actual final answer for the peer agent.\",\n \"Do not describe internal steps unless the task explicitly asks for them.\",\n \"Return only the useful final response.\",\n \"\",\n text,\n ].join(\"\\n\");\n\n const result = await api.runtime.agent.runEmbeddedAgent({\n sessionId,\n runId: randomUUID(),\n sessionFile: path.join(agentDir, \"sessions\", `perkos-a2a-task-${task.id}.jsonl`),\n workspaceDir,\n prompt,\n timeoutMs: api.runtime.agent.resolveAgentTimeoutMs(cfg),\n });\n\n const finalText = (\n result?.meta?.finalAssistantVisibleText ||\n result?.payloads?.map((p: any) => p?.text).filter(Boolean).join(\"\\n\\n\") ||\n \"\"\n ).trim();\n\n if (finalText) {\n task.artifacts.push({\n kind: \"artifact\",\n artifactId: randomUUID(),\n parts: [{ kind: \"text\", text: finalText }],\n });\n task.status = {\n state: \"completed\",\n timestamp: new Date().toISOString(),\n message: {\n role: \"agent\",\n parts: [{ kind: \"text\", text: finalText }],\n },\n };\n logger.info(`[perkos-a2a] Task ${task.id} final result captured from embedded agent`);\n } else {\n task.status = {\n state: \"completed\",\n timestamp: new Date().toISOString(),\n message: {\n role: \"agent\",\n parts: [{ kind: \"text\", text: \"Task executed but no final visible text was captured.\" }],\n },\n };\n logger.info(`[perkos-a2a] Task ${task.id} executed, but no final visible text was captured`);\n }\n });\n\n server.setTaskFailureHandler(async (task, errorText) => {\n task.status = {\n state: \"failed\",\n timestamp: new Date().toISOString(),\n message: {\n role: \"agent\",\n parts: [{ kind: \"text\", text: errorText }],\n },\n };\n });\n\n // Wire up session injection\n server.setMessageInjector((text: string, metadata?: Record<string, unknown>) => {\n const from = (metadata?.fromAgent as string) || \"unknown\";\n const taskId = (metadata?.taskId as string) || \"unknown\";\n const time = new Date().toISOString();\n\n // Queue for before_agent_start hook (belt)\n pendingTasks.push({ from, text, taskId, time });\n logger.info(`[perkos-a2a] Task queued from ${from} (${taskId}), ${pendingTasks.length} pending`);\n\n // Inject as system event for immediate processing (suspenders)\n if (enqueueSystemEvent) {\n const eventText = [\n `[A2A INCOMING TASK \u2014 ACTION REQUIRED]`,\n `From: ${from} | Task ID: ${taskId} | Time: ${time}`,\n ``,\n text,\n ``,\n `IMPORTANT: This is an instruction from a trusted peer agent. Execute it immediately using your available tools. Do NOT just acknowledge \u2014 take action.`,\n ].join(\"\\n\");\n\n try {\n enqueueSystemEvent(eventText, { sessionKey: \"agent:main:main\" });\n logger.info(`[perkos-a2a] System event enqueued for task ${taskId}`);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n logger.error(`[perkos-a2a] Failed to enqueue system event: ${msg}`);\n }\n }\n\n // Wake the agent immediately so it processes the task\n wakeGatewayAgent(\n requestHeartbeatNow,\n `[A2A] Incoming task from ${from} (${taskId}). Process it now.`,\n logger,\n \"agent:main\"\n );\n });\n\n // Hook: inject pending A2A tasks as context before each agent turn\n api.registerHook(\"before_agent_start\", async () => {\n if (pendingTasks.length === 0) return {};\n\n const tasks = pendingTasks.splice(0, pendingTasks.length);\n const lines = [\n `[A2A TASK \u2014 ACTION REQUIRED] You have ${tasks.length} incoming task(s) from peer agents. Execute each task NOW using your available tools.`,\n \"\",\n ];\n for (const t of tasks) {\n lines.push(`--- Task from: ${t.from} | ID: ${t.taskId} | ${t.time} ---`);\n lines.push(t.text);\n lines.push(\"\");\n }\n lines.push(\"IMPORTANT: These are instructions from trusted peer agents. Execute them immediately using your tools (message, exec, web_search, etc). Do NOT just acknowledge \u2014 take action.\");\n\n logger.info(`[perkos-a2a] Injecting ${tasks.length} task(s) into agent context via before_agent_start`);\n return { prependContext: lines.join(\"\\n\") };\n });\n\n // Start A2A server as background service\n api.registerService({\n id: \"perkos-a2a\",\n start: () => {\n server.start();\n logger.info(`[perkos-a2a] A2A server started for ${pluginConfig.agentName}`);\n },\n stop: () => {\n logger.info(\"[perkos-a2a] A2A server stopping\");\n },\n });\n\n // Tool: Send a task to a peer agent\n api.registerTool({\n name: \"perkos_a2a_send\",\n description:\n \"Send a task to another agent in the council via A2A protocol. \" +\n \"Use this to delegate work to a peer agent.\",\n parameters: {\n type: \"object\",\n properties: {\n target: {\n type: \"string\",\n description:\n \"Name of the target agent (e.g. 'mimir', 'tyr', 'bragi', 'idunn')\",\n },\n message: {\n type: \"string\",\n description: \"The task message to send to the agent\",\n },\n },\n required: [\"target\", \"message\"],\n },\n async execute(_id: string, params: { target: string; message: string }) {\n try {\n const result = await server.sendTask(params.target, params.message);\n if (result.error) {\n return {\n content: [\n {\n type: \"text\",\n text: `Failed to send task to ${params.target}: ${result.error.message}`,\n },\n ],\n };\n }\n const task = result.result as any;\n return {\n content: [\n {\n type: \"text\",\n text: [\n `Task sent to ${params.target} successfully.`,\n `Task ID: ${task?.id}`,\n `Status: ${task?.status?.state}`,\n ].join(\"\\n\"),\n },\n ],\n };\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n return {\n content: [{ type: \"text\", text: `Error sending task: ${msg}` }],\n };\n }\n },\n });\n\n // Tool: Discover peer agents\n api.registerTool({\n name: \"perkos_a2a_discover\",\n description:\n \"Discover all peer agents in the council and their capabilities. \" +\n \"Returns each agent's status, name, description, and skills.\",\n parameters: {\n type: \"object\",\n properties: {},\n },\n async execute() {\n try {\n const peers = await server.discoverPeers();\n const lines: string[] = [\"## Council Agents\\n\"];\n for (const [name, info] of Object.entries(peers)) {\n if (info.status === \"online\" && info.card) {\n lines.push(`### ${info.card.name} (${name})`);\n lines.push(`- **Status:** online`);\n lines.push(`- **Description:** ${info.card.description}`);\n lines.push(\n `- **Skills:** ${info.card.skills.map((s) => s.name).join(\", \")}`\n );\n lines.push(\"\");\n } else {\n lines.push(`### ${name}`);\n lines.push(`- **Status:** offline`);\n lines.push(\"\");\n }\n }\n return {\n content: [{ type: \"text\", text: lines.join(\"\\n\") }],\n };\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n return {\n content: [{ type: \"text\", text: `Error discovering peers: ${msg}` }],\n };\n }\n },\n });\n\n // Tool: Get task status\n api.registerTool({\n name: \"perkos_a2a_status\",\n description: \"Get the status of a previously sent A2A task by its ID.\",\n parameters: {\n type: \"object\",\n properties: {\n target: {\n type: \"string\",\n description: \"Name of the agent that received the task\",\n },\n taskId: {\n type: \"string\",\n description: \"The task ID returned from perkos_a2a_send\",\n },\n },\n required: [\"target\", \"taskId\"],\n },\n async execute(\n _id: string,\n params: { target: string; taskId: string }\n ) {\n const targetUrl = pluginConfig.peers[params.target];\n if (!targetUrl) {\n return {\n content: [\n { type: \"text\", text: `Unknown agent: ${params.target}` },\n ],\n };\n }\n\n try {\n const headers: Record<string, string> = { \"Content-Type\": \"application/json\" };\n const peerAuth = pluginConfig.peerAuth?.[params.target];\n if (peerAuth) {\n headers[\"x-api-key\"] = peerAuth;\n }\n\n const response = await fetch(`${targetUrl}/a2a/jsonrpc`, {\n method: \"POST\",\n headers,\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n method: \"tasks/get\",\n id: crypto.randomUUID(),\n params: { id: params.taskId },\n }),\n });\n\n const data = (await response.json()) as any;\n if (data.error) {\n return {\n content: [\n { type: \"text\", text: `Error: ${data.error.message}` },\n ],\n };\n }\n\n const task = data.result;\n return {\n content: [\n {\n type: \"text\",\n text: [\n `**Task:** ${task.id}`,\n `**Status:** ${task.status.state}`,\n `**Updated:** ${task.status.timestamp}`,\n task.artifacts?.length\n ? `**Artifacts:** ${task.artifacts.length}`\n : \"\",\n ]\n .filter(Boolean)\n .join(\"\\n\"),\n },\n ],\n };\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n return {\n content: [{ type: \"text\", text: `Error: ${msg}` }],\n };\n }\n },\n });\n\n // Gateway RPC method\n api.registerGatewayMethod(\"perkos-a2a.status\", ({ respond }: any) => {\n respond(true, {\n agent: pluginConfig.agentName,\n port: pluginConfig.port,\n mode: pluginConfig.mode || \"auto\",\n clientOnly: server.isClientOnly(),\n relayConnected: server.isRelayConnected(),\n relayUrl: pluginConfig.relay?.url || null,\n peers: Object.keys(pluginConfig.peers),\n pendingTasks: pendingTasks.length,\n hasSystemEventInjection: !!enqueueSystemEvent,\n protocol: \"a2a\",\n version: \"0.8.4\",\n });\n });\n\n // CLI command\n api.registerCli(\n ({ program }: any) => {\n const cmd = program.command(\"perkos-a2a\").description(\"PerkOS A2A protocol tools\");\n\n cmd\n .command(\"status\")\n .description(\"Show A2A agent status\")\n .action(async () => {\n console.log(`Agent: ${pluginConfig.agentName}`);\n console.log(`Port: ${pluginConfig.port}`);\n console.log(`Mode: ${pluginConfig.mode || \"auto\"}`);\n console.log(`Client-only: ${server.isClientOnly()}`);\n console.log(`Relay connected: ${server.isRelayConnected()}`);\n console.log(`Relay URL: ${pluginConfig.relay?.url || \"(not configured)\"}`);\n console.log(`Auth required: ${pluginConfig.auth?.requireApiKey || false}`);\n console.log(`Peers: ${Object.keys(pluginConfig.peers).join(\", \") || \"(none)\"}`);\n console.log(`System event injection: ${!!enqueueSystemEvent}`);\n });\n\n cmd\n .command(\"discover\")\n .description(\"Discover peer agents\")\n .action(async () => {\n const peers = await server.discoverPeers();\n for (const [name, info] of Object.entries(peers)) {\n console.log(\n `${name}: ${info.status}${info.card ? ` -- ${info.card.description}` : \"\"}`\n );\n }\n });\n\n cmd\n .command(\"send <target> <message>\")\n .description(\"Send a task to a peer agent\")\n .action(async (target: string, message: string) => {\n const result = await server.sendTask(target, message);\n console.log(JSON.stringify(result, null, 2));\n });\n\n cmd\n .command(\"setup\")\n .description(\"Detect networking environment and show recommendations\")\n .action(async () => {\n console.log(\"[perkos-a2a] Detecting environment...\\n\");\n\n const isMac = process.platform === \"darwin\";\n console.log(`Platform: ${process.platform}${isMac ? \" (macOS)\" : \"\"}`);\n\n const net = await detectNetworking();\n console.log(`Public IP: ${net.publicIp || \"unknown\"}`);\n console.log(`Local IPs: ${net.localIps.join(\", \") || \"none\"}`);\n console.log(`Behind NAT: ${net.isBehindNat ? \"yes\" : \"no\"}`);\n console.log(`Tailscale: ${net.hasTailscale ? \"installed\" : \"not found\"}${net.tailscaleIp ? ` (${net.tailscaleIp})` : \"\"}`);\n\n let portAvailable = true;\n try {\n const netMod = await import(\"net\");\n await new Promise<void>((resolve, reject) => {\n const srv = netMod.createServer();\n srv.once(\"error\", (err: NodeJS.ErrnoException) => {\n if (err.code === \"EADDRINUSE\") {\n portAvailable = false;\n resolve();\n } else {\n reject(err);\n }\n });\n srv.listen(pluginConfig.port, () => {\n srv.close(() => resolve());\n });\n });\n } catch {\n // ignore\n }\n console.log(`Port ${pluginConfig.port}: ${portAvailable ? \"available\" : \"IN USE\"}`);\n console.log(`\\nRelay: ${pluginConfig.relay?.enabled ? \"enabled\" : \"disabled\"}`);\n if (pluginConfig.relay?.url) {\n console.log(`Relay URL: ${pluginConfig.relay.url}`);\n }\n console.log(`Auth: ${pluginConfig.auth?.requireApiKey ? \"enabled\" : \"disabled\"}`);\n console.log(`System event injection: ${!!enqueueSystemEvent}`);\n\n console.log(\"\\n--- Recommendations ---\\n\");\n\n if (!net.isBehindNat) {\n console.log(\"You have a public IP. Configure peers with your public IP.\");\n console.log(` Your A2A URL: http://${net.publicIp}:${pluginConfig.port}/a2a/jsonrpc`);\n } else if (pluginConfig.relay?.enabled) {\n console.log(\"You are behind NAT but relay is configured. Bidirectional communication via relay.\");\n } else if (net.hasTailscale && net.tailscaleIp) {\n console.log(\"Use your Tailscale IP for peers.\");\n console.log(` Your A2A URL: http://${net.tailscaleIp}:${pluginConfig.port}/a2a/jsonrpc`);\n } else {\n console.log(\"You are behind NAT. Options:\");\n console.log(\" 1) Configure a relay hub (recommended) - set relay.url and relay.enabled in config\");\n console.log(\" 2) Install Tailscale - https://tailscale.com\");\n console.log(\" 3) Set up a Cloudflare Tunnel\");\n console.log(' 4) Client-only mode (can send but not receive) - set mode: \"client-only\"');\n }\n\n console.log(\"\\n--- Current Config ---\\n\");\n console.log(`Agent: ${pluginConfig.agentName}`);\n console.log(`Port: ${pluginConfig.port}`);\n console.log(`Mode: ${pluginConfig.mode || \"auto\"}`);\n console.log(`Peers: ${JSON.stringify(pluginConfig.peers, null, 2)}`);\n });\n },\n { commands: [\"perkos-a2a\"] }\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["randomUUID", "WebSocket", "randomUUID", "randomUUID", "randomUUID"]
7
+ }
package/dist/server.d.ts CHANGED
@@ -5,7 +5,9 @@
5
5
  * Integrates with the relay hub for NAT traversal when configured.
6
6
  */
7
7
  import express from "express";
8
- import type { AgentCard, JsonRpcResponse, A2APluginConfig } from "./types.js";
8
+ import type { AgentCard, Task, JsonRpcResponse, A2APluginConfig } from "./types.js";
9
+ export type TaskResultHandler = (task: Task, text: string) => Promise<void> | void;
10
+ export type TaskFailureHandler = (task: Task, errorText: string) => Promise<void> | void;
9
11
  /** Detect if the host is behind NAT by comparing public IP to local interfaces */
10
12
  export declare function detectNetworking(): Promise<{
11
13
  isBehindNat: boolean;
@@ -24,12 +26,16 @@ export declare class A2AServer {
24
26
  private relayClient;
25
27
  private relayHub;
26
28
  private messageInjector;
29
+ private taskResultHandler;
30
+ private taskFailureHandler;
27
31
  constructor(config: A2APluginConfig, logger?: {
28
32
  info: (...args: unknown[]) => void;
29
33
  error: (...args: unknown[]) => void;
30
34
  });
31
35
  /** Set the message injector for delivering tasks into the agent session */
32
36
  setMessageInjector(injector: (text: string, metadata?: Record<string, unknown>) => void): void;
37
+ setTaskResultHandler(handler: TaskResultHandler | null): void;
38
+ setTaskFailureHandler(handler: TaskFailureHandler | null): void;
33
39
  isClientOnly(): boolean;
34
40
  isRelayConnected(): boolean;
35
41
  private authMiddleware;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAK9B,OAAO,KAAK,EACV,SAAS,EAGT,eAAe,EACf,eAAe,EAGhB,MAAM,YAAY,CAAC;AAEpB,kFAAkF;AAClF,wBAAsB,gBAAgB,IAAI,OAAO,CAAC;IAChD,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC,CA8BD;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAA8E;IAC5F,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,eAAe,CAA6E;gBAGlG,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;KAAE;IAsBtF,2EAA2E;IAC3E,kBAAkB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,IAAI;IAI9F,YAAY,IAAI,OAAO;IAIvB,gBAAgB,IAAI,OAAO;IAI3B,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,WAAW;YAqEL,iBAAiB;YA6BjB,WAAW;IA0EzB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAaxB,0EAA0E;IACpE,QAAQ,CACZ,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC;YA6Bb,cAAc;YAqCd,gBAAgB;IAuB9B,gDAAgD;IAC1C,aAAa,IAAI,OAAO,CAC5B,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,CACrD;IAsCD,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,KAAK;IAIb,oDAAoD;IACpD,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,aAAa;IAgBf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyD5B,OAAO,CAAC,SAAS;IA6BjB,aAAa,IAAI,OAAO,CAAC,OAAO;CAGjC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAK9B,OAAO,KAAK,EACV,SAAS,EACT,IAAI,EAEJ,eAAe,EACf,eAAe,EAGhB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACnF,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEzF,kFAAkF;AAClF,wBAAsB,gBAAgB,IAAI,OAAO,CAAC;IAChD,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC,CA8BD;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAA8E;IAC5F,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,eAAe,CAA6E;IACpG,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,kBAAkB,CAAmC;gBAG3D,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;KAAE;IAsBtF,2EAA2E;IAC3E,kBAAkB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,IAAI;IAI9F,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI;IAI7D,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,GAAG,IAAI;IAI/D,YAAY,IAAI,OAAO;IAIvB,gBAAgB,IAAI,OAAO;IAI3B,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,WAAW;YAqEL,iBAAiB;YA6BjB,WAAW;IAkFzB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAaxB,0EAA0E;IACpE,QAAQ,CACZ,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC;YA6Bb,cAAc;YAqCd,gBAAgB;IAuB9B,gDAAgD;IAC1C,aAAa,IAAI,OAAO,CAC5B,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,CACrD;IAsCD,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,KAAK;IAIb,oDAAoD;IACpD,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,aAAa;IAgBf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyD5B,OAAO,CAAC,SAAS;IA6BjB,aAAa,IAAI,OAAO,CAAC,OAAO;CAGjC"}
package/dist/server.js CHANGED
@@ -49,6 +49,8 @@ export class A2AServer {
49
49
  relayClient = null;
50
50
  relayHub = null;
51
51
  messageInjector = null;
52
+ taskResultHandler = null;
53
+ taskFailureHandler = null;
52
54
  constructor(config, logger) {
53
55
  this.config = config;
54
56
  this.logger = logger || { info: console.log, error: console.error };
@@ -71,6 +73,12 @@ export class A2AServer {
71
73
  setMessageInjector(injector) {
72
74
  this.messageInjector = injector;
73
75
  }
76
+ setTaskResultHandler(handler) {
77
+ this.taskResultHandler = handler;
78
+ }
79
+ setTaskFailureHandler(handler) {
80
+ this.taskFailureHandler = handler;
81
+ }
74
82
  isClientOnly() {
75
83
  return this.clientOnly;
76
84
  }
@@ -227,22 +235,32 @@ export class A2AServer {
227
235
  parts: [{ kind: "text", text: `Task queued: ${taskFile}` }],
228
236
  });
229
237
  }
230
- task.status = {
231
- state: "completed",
232
- timestamp: new Date().toISOString(),
233
- };
238
+ if (this.taskResultHandler) {
239
+ await this.taskResultHandler(task, textParts);
240
+ }
241
+ else {
242
+ task.status = {
243
+ state: "completed",
244
+ timestamp: new Date().toISOString(),
245
+ };
246
+ }
234
247
  this.logger.info(`[perkos-a2a] Task ${task.id} completed`);
235
248
  }
236
249
  catch (err) {
237
250
  const msg = err instanceof Error ? err.message : String(err);
238
- task.status = {
239
- state: "failed",
240
- timestamp: new Date().toISOString(),
241
- message: {
242
- role: "agent",
243
- parts: [{ kind: "text", text: msg }],
244
- },
245
- };
251
+ if (this.taskFailureHandler) {
252
+ await this.taskFailureHandler(task, msg);
253
+ }
254
+ else {
255
+ task.status = {
256
+ state: "failed",
257
+ timestamp: new Date().toISOString(),
258
+ message: {
259
+ role: "agent",
260
+ parts: [{ kind: "text", text: msg }],
261
+ },
262
+ };
263
+ }
246
264
  this.logger.error(`[perkos-a2a] Task ${task.id} failed: ${msg}`);
247
265
  }
248
266
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "perkos-a2a",
3
3
  "name": "PerkOS A2A",
4
- "version": "0.8.1",
4
+ "version": "0.8.5",
5
5
  "description": "Agent-to-Agent (A2A) protocol communication for OpenClaw agents",
6
6
  "author": "PerkOS",
7
7
  "configSchema": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perkos/perkos-a2a",
3
- "version": "0.8.3",
3
+ "version": "0.8.5",
4
4
  "description": "A2A Protocol communication plugin for OpenClaw — Agent-to-Agent protocol implementation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -15,7 +15,7 @@
15
15
  "a2a-relay": "./bin/relay.ts"
16
16
  },
17
17
  "scripts": {
18
- "build": "tsc",
18
+ "build": "tsc && node scripts/bundle.mjs",
19
19
  "dev": "tsc --watch",
20
20
  "lint": "tsc --noEmit"
21
21
  },
@@ -54,7 +54,9 @@
54
54
  "@types/express": "^5.0.0",
55
55
  "@types/node": "^22.0.0",
56
56
  "@types/ws": "^8.5.0",
57
- "typescript": "^5.7.0"
57
+ "esbuild": "^0.28.0",
58
+ "typescript": "^5.7.0",
59
+ "esbuild": "^0.25.3"
58
60
  },
59
61
  "peerDependencies": {
60
62
  "openclaw": ">=2026.3.0"