@perkos/perkos-a2a 0.4.0 → 0.5.0

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/server.js CHANGED
@@ -1,11 +1,14 @@
1
1
  /**
2
2
  * A2A Protocol Server
3
- * Express-based JSON-RPC 2.0 server with Agent Card discovery
4
- * Supports full, client-only, and auto modes for NAT-friendly operation
3
+ * Express-based JSON-RPC 2.0 server with Agent Card discovery.
4
+ * Supports full, client-only, relay, and auto modes.
5
+ * Integrates with the relay hub for NAT traversal when configured.
5
6
  */
6
7
  import express from "express";
7
8
  import { randomUUID } from "crypto";
8
9
  import { homedir, networkInterfaces } from "os";
10
+ import { RelayClient } from "./relay-client.js";
11
+ import { RelayHub } from "./relay.js";
9
12
  /** Detect if the host is behind NAT by comparing public IP to local interfaces */
10
13
  export async function detectNetworking() {
11
14
  const localIps = [];
@@ -55,6 +58,9 @@ export class A2AServer {
55
58
  config;
56
59
  logger;
57
60
  clientOnly = false;
61
+ relayClient = null;
62
+ relayHub = null;
63
+ messageInjector = null;
58
64
  constructor(config, logger) {
59
65
  this.config = config;
60
66
  this.logger = logger || { info: console.log, error: console.error };
@@ -73,10 +79,34 @@ export class A2AServer {
73
79
  };
74
80
  this.setupRoutes();
75
81
  }
82
+ /** Set the message injector for delivering tasks into the agent session */
83
+ setMessageInjector(injector) {
84
+ this.messageInjector = injector;
85
+ }
76
86
  isClientOnly() {
77
87
  return this.clientOnly;
78
88
  }
89
+ isRelayConnected() {
90
+ return this.relayClient?.isConnected() || false;
91
+ }
92
+ authMiddleware() {
93
+ return (req, res, next) => {
94
+ if (!this.config.auth?.requireApiKey) {
95
+ next();
96
+ return;
97
+ }
98
+ const apiKey = req.headers["x-api-key"] ||
99
+ req.headers["authorization"]?.replace(/^Bearer\s+/i, "") ||
100
+ req.query["apiKey"];
101
+ if (!apiKey || !this.config.auth.apiKeys.includes(apiKey)) {
102
+ res.status(401).json({ error: "Unauthorized: invalid or missing API key" });
103
+ return;
104
+ }
105
+ next();
106
+ };
107
+ }
79
108
  setupRoutes() {
109
+ // Public endpoints (no auth required)
80
110
  this.app.get("/.well-known/agent-card.json", (_req, res) => {
81
111
  res.json(this.agentCard);
82
112
  });
@@ -85,12 +115,15 @@ export class A2AServer {
85
115
  ok: true,
86
116
  agent: this.config.agentName,
87
117
  protocol: "a2a",
88
- version: "0.4.0",
118
+ version: "0.5.0",
89
119
  peers: Object.keys(this.config.peers),
90
120
  taskCount: this.tasks.size,
121
+ relayConnected: this.isRelayConnected(),
91
122
  });
92
123
  });
93
- this.app.post("/a2a/jsonrpc", async (req, res) => {
124
+ // Protected endpoints
125
+ const auth = this.authMiddleware();
126
+ this.app.post("/a2a/jsonrpc", auth, async (req, res) => {
94
127
  const { method, params, id } = req.body;
95
128
  try {
96
129
  let result;
@@ -121,22 +154,11 @@ export class A2AServer {
121
154
  res.json(this.error(id, -32603, msg));
122
155
  }
123
156
  });
124
- this.app.get("/a2a/peers", async (_req, res) => {
125
- const results = {};
126
- for (const [name, url] of Object.entries(this.config.peers)) {
127
- try {
128
- const r = await fetch(`${url}/.well-known/agent-card.json`, {
129
- signal: AbortSignal.timeout(3000),
130
- });
131
- results[name] = { status: "online", card: await r.json() };
132
- }
133
- catch {
134
- results[name] = { status: "offline" };
135
- }
136
- }
157
+ this.app.get("/a2a/peers", auth, async (_req, res) => {
158
+ const results = await this.discoverPeers();
137
159
  res.json(results);
138
160
  });
139
- this.app.post("/a2a/send", async (req, res) => {
161
+ this.app.post("/a2a/send", auth, async (req, res) => {
140
162
  const { target, message } = req.body;
141
163
  try {
142
164
  const result = await this.sendTask(target, message);
@@ -176,31 +198,47 @@ export class A2AServer {
176
198
  .map((p) => p.text)
177
199
  .join("\n");
178
200
  try {
179
- const fs = await import("fs");
180
- const taskDir = this.config.workspacePath
181
- || `${process.env.HOME || homedir()}/.openclaw/workspace/memory`;
182
- if (!fs.existsSync(taskDir)) {
183
- fs.mkdirSync(taskDir, { recursive: true });
201
+ // Attempt session injection first
202
+ if (this.messageInjector) {
203
+ this.messageInjector(textParts, {
204
+ source: "a2a",
205
+ fromAgent: task.metadata?.fromAgent,
206
+ taskId: task.id,
207
+ });
208
+ task.artifacts.push({
209
+ kind: "artifact",
210
+ artifactId: randomUUID(),
211
+ parts: [{ kind: "text", text: "Task injected into agent session" }],
212
+ });
213
+ }
214
+ else {
215
+ // Fallback: write to file
216
+ const fs = await import("fs");
217
+ const taskDir = this.config.workspacePath
218
+ || `${process.env.HOME || homedir()}/.openclaw/workspace/memory`;
219
+ if (!fs.existsSync(taskDir)) {
220
+ fs.mkdirSync(taskDir, { recursive: true });
221
+ }
222
+ const taskFile = `${taskDir}/a2a-task-${task.id}.md`;
223
+ const content = [
224
+ "# A2A Task",
225
+ "",
226
+ `**From:** ${task.metadata?.fromAgent}`,
227
+ `**Task ID:** ${task.id}`,
228
+ `**Time:** ${new Date().toISOString()}`,
229
+ "",
230
+ "## Message",
231
+ "",
232
+ textParts,
233
+ "",
234
+ ].join("\n");
235
+ fs.writeFileSync(taskFile, content);
236
+ task.artifacts.push({
237
+ kind: "artifact",
238
+ artifactId: randomUUID(),
239
+ parts: [{ kind: "text", text: `Task queued: ${taskFile}` }],
240
+ });
184
241
  }
185
- const taskFile = `${taskDir}/a2a-task-${task.id}.md`;
186
- const content = [
187
- "# A2A Task",
188
- "",
189
- `**From:** ${task.metadata?.fromAgent}`,
190
- `**Task ID:** ${task.id}`,
191
- `**Time:** ${new Date().toISOString()}`,
192
- "",
193
- "## Message",
194
- "",
195
- textParts,
196
- "",
197
- ].join("\n");
198
- fs.writeFileSync(taskFile, content);
199
- task.artifacts.push({
200
- kind: "artifact",
201
- artifactId: randomUUID(),
202
- parts: [{ kind: "text", text: `Task queued: ${taskFile}` }],
203
- });
204
242
  task.status = {
205
243
  state: "completed",
206
244
  timestamp: new Date().toISOString(),
@@ -241,11 +279,35 @@ export class A2AServer {
241
279
  task.status = { state: "canceled", timestamp: new Date().toISOString() };
242
280
  return this.success(rpcId, task);
243
281
  }
244
- /** Send a task to a peer agent via A2A protocol */
282
+ /** Send a task to a peer agent via A2A protocol (direct HTTP or relay) */
245
283
  async sendTask(targetAgent, messageText) {
246
284
  const targetUrl = this.config.peers[targetAgent];
247
- if (!targetUrl) {
248
- throw new Error(`Unknown peer: ${targetAgent}. Known peers: ${Object.keys(this.config.peers).join(", ")}`);
285
+ // Try direct HTTP first if peer URL is configured
286
+ if (targetUrl) {
287
+ try {
288
+ return await this.sendTaskDirect(targetAgent, targetUrl, messageText);
289
+ }
290
+ catch (err) {
291
+ // If relay is available, fall through to relay
292
+ if (!this.relayClient?.isConnected()) {
293
+ throw err;
294
+ }
295
+ this.logger.info(`[perkos-a2a] Direct send to ${targetAgent} failed, falling back to relay`);
296
+ }
297
+ }
298
+ // Try relay
299
+ if (this.relayClient?.isConnected()) {
300
+ return this.sendTaskViaRelay(targetAgent, messageText);
301
+ }
302
+ throw new Error(`Cannot reach ${targetAgent}: no direct URL configured and relay not connected. ` +
303
+ `Known peers: ${Object.keys(this.config.peers).join(", ")}`);
304
+ }
305
+ async sendTaskDirect(targetAgent, targetUrl, messageText) {
306
+ const headers = { "Content-Type": "application/json" };
307
+ // Include auth token if peer has one configured
308
+ const peerAuth = this.config.peerAuth?.[targetAgent];
309
+ if (peerAuth) {
310
+ headers["x-api-key"] = peerAuth;
249
311
  }
250
312
  const payload = {
251
313
  jsonrpc: "2.0",
@@ -263,14 +325,33 @@ export class A2AServer {
263
325
  };
264
326
  const response = await fetch(`${targetUrl}/a2a/jsonrpc`, {
265
327
  method: "POST",
266
- headers: { "Content-Type": "application/json" },
328
+ headers,
267
329
  body: JSON.stringify(payload),
268
330
  });
269
331
  return (await response.json());
270
332
  }
271
- /** Discover all peer agents */
333
+ async sendTaskViaRelay(targetAgent, messageText) {
334
+ const rpcId = randomUUID();
335
+ const result = await this.relayClient.sendTask(targetAgent, {
336
+ jsonrpc: "2.0",
337
+ method: "message/send",
338
+ id: rpcId,
339
+ params: {
340
+ message: {
341
+ kind: "message",
342
+ messageId: randomUUID(),
343
+ role: "user",
344
+ parts: [{ kind: "text", text: messageText }],
345
+ metadata: { fromAgent: this.config.agentName },
346
+ },
347
+ },
348
+ });
349
+ return result.payload || this.success(rpcId, result.payload);
350
+ }
351
+ /** Discover all peer agents (direct + relay) */
272
352
  async discoverPeers() {
273
353
  const results = {};
354
+ // Direct peer discovery
274
355
  for (const [name, url] of Object.entries(this.config.peers)) {
275
356
  try {
276
357
  const r = await fetch(`${url}/.well-known/agent-card.json`, {
@@ -282,6 +363,27 @@ export class A2AServer {
282
363
  results[name] = { status: "offline" };
283
364
  }
284
365
  }
366
+ // Relay discovery (merge, relay overrides offline status from direct)
367
+ if (this.relayClient?.isConnected()) {
368
+ try {
369
+ const relayAgents = await this.relayClient.discover();
370
+ for (const agent of relayAgents) {
371
+ if (agent.name === this.config.agentName)
372
+ continue;
373
+ const existing = results[agent.name];
374
+ if (!existing || existing.status === "offline") {
375
+ results[agent.name] = {
376
+ status: "online",
377
+ card: agent.card,
378
+ };
379
+ }
380
+ }
381
+ }
382
+ catch (err) {
383
+ const msg = err instanceof Error ? err.message : String(err);
384
+ this.logger.error(`[perkos-a2a] Relay discovery failed: ${msg}`);
385
+ }
386
+ }
285
387
  return results;
286
388
  }
287
389
  success(id, result) {
@@ -290,23 +392,78 @@ export class A2AServer {
290
392
  error(id, code, message) {
291
393
  return { jsonrpc: "2.0", id, error: { code, message } };
292
394
  }
395
+ /** Handle an inbound task received via the relay */
396
+ handleRelayTask(msg) {
397
+ const payload = msg.payload;
398
+ const params = payload.params || payload;
399
+ const rpcId = payload.id || msg.id;
400
+ this.handleSendMessage(params, rpcId).then((response) => {
401
+ this.relayClient?.sendTaskResponse(msg, response);
402
+ }).catch((err) => {
403
+ const errMsg = err instanceof Error ? err.message : String(err);
404
+ this.logger.error(`[perkos-a2a] Failed to process relay task: ${errMsg}`);
405
+ this.relayClient?.sendTaskResponse(msg, this.error(rpcId, -32603, errMsg));
406
+ });
407
+ }
408
+ startRelayClient() {
409
+ const relay = this.config.relay;
410
+ if (!relay?.enabled || !relay?.url)
411
+ return;
412
+ this.relayClient = new RelayClient({
413
+ agentName: this.config.agentName,
414
+ relay,
415
+ card: this.agentCard,
416
+ onTask: (msg) => this.handleRelayTask(msg),
417
+ logger: this.logger,
418
+ });
419
+ this.relayClient.start();
420
+ this.logger.info(`[perkos-a2a] Relay client started, connecting to ${relay.url}`);
421
+ }
422
+ startRelayHub() {
423
+ const relayConfig = this.config.relay;
424
+ this.relayHub = new RelayHub({
425
+ port: this.config.port,
426
+ apiKeys: this.config.auth?.apiKeys || [],
427
+ maxQueuePerAgent: 200,
428
+ rateLimitPerMinute: 60,
429
+ heartbeatIntervalMs: 30_000,
430
+ heartbeatTimeoutMs: 90_000,
431
+ }, this.logger);
432
+ this.relayHub.start();
433
+ }
293
434
  async start() {
294
435
  const mode = this.config.mode || "auto";
436
+ if (mode === "relay") {
437
+ this.clientOnly = true;
438
+ this.startRelayHub();
439
+ return;
440
+ }
295
441
  if (mode === "client-only") {
296
442
  this.clientOnly = true;
297
- this.logger.info("[perkos-a2a] Running in client-only mode. To enable bidirectional A2A, set up Tailscale or a tunnel.");
443
+ this.startRelayClient();
444
+ if (!this.config.relay?.enabled) {
445
+ this.logger.info("[perkos-a2a] Running in client-only mode. Configure relay for NAT traversal or set up Tailscale/tunnel.");
446
+ }
298
447
  return;
299
448
  }
300
449
  if (mode === "full") {
301
450
  this.tryListen(this.config.port);
451
+ this.startRelayClient();
302
452
  return;
303
453
  }
304
454
  // auto mode: detect networking, decide
305
455
  try {
306
456
  const net = await detectNetworking();
307
457
  if (net.isBehindNat && !net.hasTailscale) {
308
- this.logger.info("[perkos-a2a] Running in client-only mode (behind NAT). To enable bidirectional A2A, set up Tailscale or a tunnel.");
309
- this.clientOnly = true;
458
+ if (this.config.relay?.enabled) {
459
+ this.logger.info("[perkos-a2a] Behind NAT, using relay for bidirectional communication");
460
+ this.clientOnly = true;
461
+ this.startRelayClient();
462
+ }
463
+ else {
464
+ this.logger.info("[perkos-a2a] Running in client-only mode (behind NAT). Configure relay or Tailscale for bidirectional A2A.");
465
+ this.clientOnly = true;
466
+ }
310
467
  return;
311
468
  }
312
469
  if (net.isBehindNat && net.hasTailscale && net.tailscaleIp) {
@@ -317,6 +474,7 @@ export class A2AServer {
317
474
  // detection failed, try to start anyway
318
475
  }
319
476
  this.tryListen(this.config.port);
477
+ this.startRelayClient();
320
478
  }
321
479
  tryListen(port, attempt = 1) {
322
480
  const maxAttempts = 3;
@@ -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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"}
package/dist/types.d.ts CHANGED
@@ -69,11 +69,48 @@ export interface JsonRpcResponse {
69
69
  export interface PeerConfig {
70
70
  [agentName: string]: string;
71
71
  }
72
+ export interface RelayConfig {
73
+ /** WebSocket URL of the relay hub (e.g. wss://relay.perkos.xyz) */
74
+ url: string;
75
+ /** API key for authenticating with the relay hub */
76
+ apiKey: string;
77
+ /** Whether relay connectivity is enabled */
78
+ enabled: boolean;
79
+ }
80
+ export interface AuthConfig {
81
+ /** Require API key for inbound HTTP requests */
82
+ requireApiKey: boolean;
83
+ /** Accepted API keys for inbound HTTP requests */
84
+ apiKeys: string[];
85
+ }
72
86
  export interface A2APluginConfig {
73
87
  agentName: string;
74
88
  port: number;
75
89
  skills: AgentSkill[];
76
90
  peers: PeerConfig;
77
- mode?: "full" | "client-only" | "auto";
91
+ mode?: "full" | "client-only" | "relay" | "auto";
92
+ relay?: RelayConfig;
93
+ auth?: AuthConfig;
94
+ }
95
+ /** Wire protocol for relay WebSocket messages */
96
+ export type RelayMessageType = "register" | "register_ack" | "task" | "task_response" | "discover" | "discover_response" | "heartbeat" | "heartbeat_ack" | "error";
97
+ export interface RelayMessage {
98
+ type: RelayMessageType;
99
+ /** Sender agent name */
100
+ from?: string;
101
+ /** Target agent name (for routed messages) */
102
+ to?: string;
103
+ /** Unique message identifier */
104
+ id: string;
105
+ /** Message payload */
106
+ payload: Record<string, unknown>;
107
+ /** ISO timestamp */
108
+ timestamp: string;
109
+ }
110
+ export interface RelayAgentEntry {
111
+ name: string;
112
+ connectedAt: string;
113
+ lastHeartbeat: string;
114
+ card?: AgentCard;
78
115
  }
79
116
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAElC,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,YAAY,EAAE;QAAE,iBAAiB,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7C,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;CACxC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.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.4.0",
4
+ "version": "0.5.0",
5
5
  "description": "Agent-to-Agent (A2A) protocol communication for OpenClaw agents",
6
6
  "author": "PerkOS",
7
7
  "configSchema": {
@@ -19,9 +19,9 @@
19
19
  },
20
20
  "mode": {
21
21
  "type": "string",
22
- "enum": ["full", "client-only", "auto"],
22
+ "enum": ["full", "client-only", "relay", "auto"],
23
23
  "default": "auto",
24
- "description": "Server mode: full (listen + send), client-only (send only), auto (detect)"
24
+ "description": "Server mode: full (listen + send), client-only (send only), relay (run as hub), auto (detect)"
25
25
  },
26
26
  "skills": {
27
27
  "type": "array",
@@ -40,6 +40,53 @@
40
40
  "type": "object",
41
41
  "additionalProperties": { "type": "string" },
42
42
  "description": "Map of peer agent names to their A2A URLs"
43
+ },
44
+ "relay": {
45
+ "type": "object",
46
+ "additionalProperties": false,
47
+ "properties": {
48
+ "enabled": {
49
+ "type": "boolean",
50
+ "default": false,
51
+ "description": "Enable relay hub connection for NAT traversal"
52
+ },
53
+ "url": {
54
+ "type": "string",
55
+ "description": "WebSocket URL of the relay hub (e.g. wss://relay.perkos.xyz)"
56
+ },
57
+ "apiKey": {
58
+ "type": "string",
59
+ "description": "API key for authenticating with the relay hub"
60
+ },
61
+ "hubPort": {
62
+ "type": "number",
63
+ "default": 8787,
64
+ "description": "Port when running as relay hub (mode: relay)"
65
+ },
66
+ "hubApiKeys": {
67
+ "type": "array",
68
+ "items": { "type": "string" },
69
+ "description": "Valid API keys when running as relay hub"
70
+ }
71
+ },
72
+ "description": "Relay hub configuration for NAT traversal"
73
+ },
74
+ "auth": {
75
+ "type": "object",
76
+ "additionalProperties": false,
77
+ "properties": {
78
+ "requireApiKey": {
79
+ "type": "boolean",
80
+ "default": false,
81
+ "description": "Require API key for incoming HTTP A2A requests"
82
+ },
83
+ "apiKeys": {
84
+ "type": "array",
85
+ "items": { "type": "string" },
86
+ "description": "Valid API keys for incoming requests"
87
+ }
88
+ },
89
+ "description": "Authentication configuration for A2A endpoints"
43
90
  }
44
91
  }
45
92
  },
@@ -47,6 +94,8 @@
47
94
  "agentName": { "label": "Agent Name", "placeholder": "mimir" },
48
95
  "port": { "label": "A2A Server Port" },
49
96
  "mode": { "label": "Server Mode" },
50
- "peers": { "label": "Peer Agents (name -> URL)" }
97
+ "peers": { "label": "Peer Agents (name -> URL)" },
98
+ "relay": { "label": "Relay Hub (NAT Traversal)" },
99
+ "auth": { "label": "Authentication" }
51
100
  }
52
101
  }
package/package.json CHANGED
@@ -1,15 +1,19 @@
1
1
  {
2
2
  "name": "@perkos/perkos-a2a",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "A2A Protocol communication plugin for OpenClaw \u2014 Agent-to-Agent protocol implementation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "files": [
9
9
  "dist",
10
+ "bin",
10
11
  "skills",
11
12
  "openclaw.plugin.json"
12
13
  ],
14
+ "bin": {
15
+ "a2a-relay": "./bin/relay.ts"
16
+ },
13
17
  "scripts": {
14
18
  "build": "tsc",
15
19
  "dev": "tsc --watch",
@@ -41,13 +45,15 @@
41
45
  "url": "https://github.com/PerkOS-xyz/PerkOS-A2A"
42
46
  },
43
47
  "dependencies": {
44
- "express": "^4.21.0"
48
+ "express": "^4.21.0",
49
+ "ws": "^8.18.0"
45
50
  },
46
51
  "devDependencies": {
47
52
  "@sinclair/typebox": "^0.34.0",
48
53
  "typescript": "^5.7.0",
49
54
  "@types/express": "^5.0.0",
50
- "@types/node": "^22.0.0"
55
+ "@types/node": "^22.0.0",
56
+ "@types/ws": "^8.5.0"
51
57
  },
52
58
  "peerDependencies": {
53
59
  "openclaw": ">=2026.3.0"