a2acalling 0.5.4 → 0.5.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/README.md +1 -1
- package/docs/protocol.md +9 -6
- package/package.json +1 -1
- package/scripts/install-openclaw.js +9 -9
package/README.md
CHANGED
|
@@ -74,7 +74,7 @@ node scripts/install-openclaw.js setup
|
|
|
74
74
|
|
|
75
75
|
Setup behavior:
|
|
76
76
|
- Runtime auto-detects OpenClaw when available and falls back to generic mode if unavailable.
|
|
77
|
-
- If OpenClaw gateway is detected, dashboard is exposed on gateway at `/a2a` (proxied to A2A backend).
|
|
77
|
+
- If OpenClaw gateway is detected, dashboard is exposed on gateway at `/a2a` and A2A API at `/api/a2a/*` (proxied to A2A backend).
|
|
78
78
|
- If OpenClaw is not detected, setup bootstraps standalone config + bridge templates and serves dashboard at `/dashboard`.
|
|
79
79
|
- If no public hostname is configured, setup defaults to secure Cloudflare Quick Tunnel for internet-facing invites.
|
|
80
80
|
- Setup prints the exact dashboard URL at the end.
|
package/docs/protocol.md
CHANGED
|
@@ -259,13 +259,16 @@ Owner can reply to inject into the conversation.
|
|
|
259
259
|
|
|
260
260
|
## OpenClaw Integration
|
|
261
261
|
|
|
262
|
-
### Gateway
|
|
262
|
+
### Gateway Proxy (Recommended)
|
|
263
263
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
264
|
+
Run A2A Calling as its own server (separate process), and let the OpenClaw gateway proxy to it:
|
|
265
|
+
|
|
266
|
+
- A2A backend (separate): `a2a server --port 3001`
|
|
267
|
+
- OpenClaw gateway path(s):
|
|
268
|
+
- `/a2a` proxies to the A2A dashboard UI (`/dashboard`)
|
|
269
|
+
- `/api/a2a/*` proxies to the A2A backend API
|
|
270
|
+
|
|
271
|
+
This keeps the A2A server decoupled from OpenClaw's gateway runtime while still allowing the gateway to be the single public entry point.
|
|
269
272
|
|
|
270
273
|
### Agent Context
|
|
271
274
|
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Supports automatic setup:
|
|
6
6
|
* - If OpenClaw gateway is detected, install a gateway HTTP proxy plugin
|
|
7
|
-
* so dashboard
|
|
7
|
+
* so dashboard and A2A API are accessible at /a2a and /api/a2a on gateway.
|
|
8
8
|
* - If gateway is not detected, dashboard runs on standalone A2A server.
|
|
9
9
|
* - If OpenClaw is not installed, bootstrap standalone runtime templates.
|
|
10
10
|
* - If no public hostname is configured, default to secure Quick Tunnel
|
|
@@ -287,8 +287,8 @@ echo "a2a notify: $payload" >&2
|
|
|
287
287
|
|
|
288
288
|
const DASHBOARD_PLUGIN_MANIFEST = {
|
|
289
289
|
id: DASHBOARD_PLUGIN_ID,
|
|
290
|
-
name: 'A2A
|
|
291
|
-
description: 'Proxy A2A dashboard routes through OpenClaw gateway',
|
|
290
|
+
name: 'A2A Gateway Proxy',
|
|
291
|
+
description: 'Proxy A2A API + dashboard routes through OpenClaw gateway (backend runs separately)',
|
|
292
292
|
version: '1.0.0',
|
|
293
293
|
configSchema: {
|
|
294
294
|
type: 'object',
|
|
@@ -309,7 +309,7 @@ import https from "node:https";
|
|
|
309
309
|
|
|
310
310
|
const PLUGIN_ID = "a2a-dashboard-proxy";
|
|
311
311
|
const UI_PREFIX = "/a2a";
|
|
312
|
-
const API_PREFIX = "/api/a2a
|
|
312
|
+
const API_PREFIX = "/api/a2a";
|
|
313
313
|
|
|
314
314
|
function sendJson(res: ServerResponse, status: number, body: unknown) {
|
|
315
315
|
res.statusCode = status;
|
|
@@ -364,8 +364,8 @@ function rewriteUiPath(pathname: string): string {
|
|
|
364
364
|
|
|
365
365
|
const plugin = {
|
|
366
366
|
id: PLUGIN_ID,
|
|
367
|
-
name: "A2A
|
|
368
|
-
description: "Proxy A2A dashboard routes through OpenClaw gateway",
|
|
367
|
+
name: "A2A Gateway Proxy",
|
|
368
|
+
description: "Proxy A2A API + dashboard routes through OpenClaw gateway (backend runs separately)",
|
|
369
369
|
configSchema: {
|
|
370
370
|
type: "object" as const,
|
|
371
371
|
additionalProperties: false,
|
|
@@ -426,8 +426,8 @@ const plugin = {
|
|
|
426
426
|
if (isApi) {
|
|
427
427
|
sendJson(res, 502, {
|
|
428
428
|
success: false,
|
|
429
|
-
error: "
|
|
430
|
-
message: \`Could not reach A2A
|
|
429
|
+
error: "a2a_backend_unreachable",
|
|
430
|
+
message: \`Could not reach A2A backend at \${backend}: \${err.message}\`
|
|
431
431
|
});
|
|
432
432
|
return;
|
|
433
433
|
}
|
|
@@ -663,7 +663,7 @@ Mode: ${dashboardMode === 'gateway' ? green('gateway') : yellow('standalone')}
|
|
|
663
663
|
Dashboard URL: ${green(dashboardUrl)}
|
|
664
664
|
|
|
665
665
|
${dashboardMode === 'gateway'
|
|
666
|
-
? `Gateway
|
|
666
|
+
? `Gateway paths /a2a and /api/a2a/* are now proxied to ${backendUrl}.`
|
|
667
667
|
: 'No gateway detected. Dashboard is served directly from the A2A server.'}
|
|
668
668
|
|
|
669
669
|
${bold('━━━ Runtime Setup ━━━')}
|