@perkos/perkos-a2a 0.8.11 → 0.8.13

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.
@@ -15,11 +15,25 @@
15
15
  "port": {
16
16
  "type": "number",
17
17
  "default": 5050,
18
- "description": "Port for the A2A HTTP server (5050 default; macOS uses 5000 for AirPlay)"
18
+ "description": "Port for this agent's A2A HTTP server. Use a unique host/container port per agent when multiple agents run on one VPS."
19
+ },
20
+ "bindHost": {
21
+ "type": "string",
22
+ "default": "0.0.0.0",
23
+ "description": "Interface to bind. Use 0.0.0.0 inside Docker, or 127.0.0.1 when fronted by a local tunnel/reverse proxy."
24
+ },
25
+ "publicUrl": {
26
+ "type": "string",
27
+ "description": "Externally reachable base URL to advertise in the Agent Card, e.g. DNS/tunnel/LAN URL. The plugin appends /a2a/jsonrpc."
19
28
  },
20
29
  "mode": {
21
30
  "type": "string",
22
- "enum": ["full", "client-only", "relay", "auto"],
31
+ "enum": [
32
+ "full",
33
+ "client-only",
34
+ "relay",
35
+ "auto"
36
+ ],
23
37
  "default": "auto",
24
38
  "description": "Server mode: full (listen + send), client-only (send only), relay (run as hub), auto (detect)"
25
39
  },
@@ -28,17 +42,30 @@
28
42
  "items": {
29
43
  "type": "object",
30
44
  "properties": {
31
- "id": { "type": "string" },
32
- "name": { "type": "string" },
33
- "description": { "type": "string" },
34
- "tags": { "type": "array", "items": { "type": "string" } }
45
+ "id": {
46
+ "type": "string"
47
+ },
48
+ "name": {
49
+ "type": "string"
50
+ },
51
+ "description": {
52
+ "type": "string"
53
+ },
54
+ "tags": {
55
+ "type": "array",
56
+ "items": {
57
+ "type": "string"
58
+ }
59
+ }
35
60
  }
36
61
  },
37
62
  "description": "Skills this agent exposes via A2A"
38
63
  },
39
64
  "peers": {
40
65
  "type": "object",
41
- "additionalProperties": { "type": "string" },
66
+ "additionalProperties": {
67
+ "type": "string"
68
+ },
42
69
  "description": "Map of peer agent names to their A2A URLs"
43
70
  },
44
71
  "relay": {
@@ -65,17 +92,62 @@
65
92
  },
66
93
  "hubApiKeys": {
67
94
  "type": "array",
68
- "items": { "type": "string" },
69
- "description": "Valid API keys when running as relay hub"
95
+ "items": {
96
+ "type": "string"
97
+ },
98
+ "description": "Legacy shared API keys when running as relay hub"
99
+ },
100
+ "registeredAgents": {
101
+ "type": "object",
102
+ "additionalProperties": {
103
+ "type": "string"
104
+ },
105
+ "description": "Approved relay registry: agent name -> registration API key. Prefer this over shared hubApiKeys."
70
106
  }
71
107
  },
72
108
  "description": "Relay hub configuration for NAT traversal"
73
109
  },
74
110
  "peerAuth": {
75
111
  "type": "object",
76
- "additionalProperties": { "type": "string" },
112
+ "additionalProperties": {
113
+ "type": "string"
114
+ },
77
115
  "description": "Map of peer agent names to their API keys for outbound requests"
78
116
  },
117
+ "runtime": {
118
+ "type": "object",
119
+ "additionalProperties": false,
120
+ "properties": {
121
+ "kind": {
122
+ "type": "string",
123
+ "enum": [
124
+ "openclaw",
125
+ "hermes",
126
+ "none"
127
+ ],
128
+ "default": "openclaw",
129
+ "description": "Where inbound A2A tasks are delivered for execution"
130
+ },
131
+ "sessionKey": {
132
+ "type": "string",
133
+ "description": "Target session key. OpenClaw default: agent:main. Hermes default: main"
134
+ },
135
+ "hermesUrl": {
136
+ "type": "string",
137
+ "description": "Hermes Workspace base URL, e.g. http://127.0.0.1:3000"
138
+ },
139
+ "hermesToken": {
140
+ "type": "string",
141
+ "description": "Optional Hermes workspace session token, sent as claude-auth cookie"
142
+ },
143
+ "hermesEndpoint": {
144
+ "type": "string",
145
+ "default": "/api/session-send",
146
+ "description": "Hermes Workspace send endpoint"
147
+ }
148
+ },
149
+ "description": "Runtime delivery target for inbound A2A tasks"
150
+ },
79
151
  "auth": {
80
152
  "type": "object",
81
153
  "additionalProperties": false,
@@ -87,7 +159,9 @@
87
159
  },
88
160
  "apiKeys": {
89
161
  "type": "array",
90
- "items": { "type": "string" },
162
+ "items": {
163
+ "type": "string"
164
+ },
91
165
  "description": "Valid API keys for incoming requests"
92
166
  }
93
167
  },
@@ -96,11 +170,40 @@
96
170
  }
97
171
  },
98
172
  "uiHints": {
99
- "agentName": { "label": "Agent Name", "placeholder": "mimir" },
100
- "port": { "label": "A2A Server Port" },
101
- "mode": { "label": "Server Mode" },
102
- "peers": { "label": "Peer Agents (name -> URL)" },
103
- "relay": { "label": "Relay Hub (NAT Traversal)" },
104
- "auth": { "label": "Authentication" }
173
+ "agentName": {
174
+ "label": "Agent Name",
175
+ "placeholder": "mimir"
176
+ },
177
+ "port": {
178
+ "label": "A2A Server Port"
179
+ },
180
+ "bindHost": {
181
+ "label": "Bind Host"
182
+ },
183
+ "publicUrl": {
184
+ "label": "Public / Tunnel URL"
185
+ },
186
+ "mode": {
187
+ "label": "Server Mode"
188
+ },
189
+ "peers": {
190
+ "label": "Peer Agents (name -> URL)"
191
+ },
192
+ "relay": {
193
+ "label": "Relay Hub (NAT Traversal)"
194
+ },
195
+ "auth": {
196
+ "label": "Authentication"
197
+ }
198
+ },
199
+ "contracts": {
200
+ "tools": [
201
+ "perkos_a2a_send",
202
+ "perkos_a2a_discover",
203
+ "perkos_a2a_status"
204
+ ]
205
+ },
206
+ "activation": {
207
+ "onStartup": true
105
208
  }
106
209
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perkos/perkos-a2a",
3
- "version": "0.8.11",
3
+ "version": "0.8.13",
4
4
  "description": "A2A Protocol communication plugin for OpenClaw — Agent-to-Agent protocol implementation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -12,7 +12,8 @@
12
12
  "openclaw.plugin.json"
13
13
  ],
14
14
  "bin": {
15
- "a2a-relay": "./bin/relay.ts"
15
+ "a2a-relay": "./bin/relay.ts",
16
+ "perkos-a2a-agent": "./dist/agent.js"
16
17
  },
17
18
  "scripts": {
18
19
  "build": "tsc && node scripts/bundle.mjs",
@@ -45,23 +46,26 @@
45
46
  "url": "https://github.com/PerkOS-xyz/PerkOS-A2A"
46
47
  },
47
48
  "dependencies": {
48
- "@perkos/perkos-a2a": "^0.6.0",
49
- "express": "^4.21.0",
50
- "ws": "^8.18.0"
49
+ "express": "^4.22.2",
50
+ "ws": "^8.20.1"
51
51
  },
52
52
  "devDependencies": {
53
- "@sinclair/typebox": "^0.34.0",
53
+ "@sinclair/typebox": "^0.34.49",
54
54
  "@types/express": "^5.0.0",
55
- "@types/node": "^22.0.0",
55
+ "@types/node": "^22.19.19",
56
56
  "@types/ws": "^8.5.0",
57
57
  "esbuild": "^0.28.0",
58
- "typescript": "^5.7.0",
59
- "esbuild": "^0.25.3"
58
+ "typescript": "^5.7.0"
60
59
  },
61
60
  "peerDependencies": {
62
61
  "openclaw": ">=2026.3.0"
63
62
  },
64
63
  "publishConfig": {
65
64
  "access": "public"
65
+ },
66
+ "peerDependenciesMeta": {
67
+ "openclaw": {
68
+ "optional": true
69
+ }
66
70
  }
67
71
  }