@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.
- package/README.md +127 -1
- package/bin/agent.ts +173 -0
- package/bin/relay.ts +20 -2
- package/dist/agent.d.ts +14 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +181 -0
- package/dist/agent.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +356 -121
- package/dist/index.js.map +4 -4
- package/dist/relay-client.js +1 -1
- package/dist/relay-client.js.map +1 -1
- package/dist/relay.d.ts +3 -1
- package/dist/relay.d.ts.map +1 -1
- package/dist/relay.js +14 -1
- package/dist/relay.js.map +1 -1
- package/dist/runtime-reply.d.ts +13 -0
- package/dist/runtime-reply.d.ts.map +1 -0
- package/dist/runtime-reply.js +114 -0
- package/dist/runtime-reply.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +66 -8
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +31 -0
- package/dist/types.d.ts.map +1 -1
- package/openclaw.plugin.json +120 -17
- package/package.json +13 -9
package/openclaw.plugin.json
CHANGED
|
@@ -15,11 +15,25 @@
|
|
|
15
15
|
"port": {
|
|
16
16
|
"type": "number",
|
|
17
17
|
"default": 5050,
|
|
18
|
-
"description": "Port for
|
|
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": [
|
|
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": {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"
|
|
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": {
|
|
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": {
|
|
69
|
-
|
|
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": {
|
|
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": {
|
|
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": {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
"
|
|
104
|
-
|
|
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.
|
|
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
|
-
"
|
|
49
|
-
"
|
|
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.
|
|
53
|
+
"@sinclair/typebox": "^0.34.49",
|
|
54
54
|
"@types/express": "^5.0.0",
|
|
55
|
-
"@types/node": "^22.
|
|
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
|
}
|