a2acalling 0.6.58 → 0.6.60
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/bin/cli.js +9 -12
- package/docs/plans/2026-02-18-a2a-41-permissions-tab.md +1273 -0
- package/package.json +1 -1
- package/scripts/install-skills.js +8 -1
- package/src/dashboard/public/app.js +520 -22
- package/src/dashboard/public/index.html +20 -8
- package/src/dashboard/public/style.css +219 -0
- package/src/lib/config.js +5 -15
- package/src/lib/tokens.js +3 -3
- package/src/routes/a2a.js +0 -1
- package/src/routes/dashboard.js +0 -3
- package/.a2a-manifest.json +0 -47
- package/.claude/a2a-skill-reference.md +0 -462
- package/.claude/commands/a2a-call.md +0 -26
- package/.claude/commands/a2a-contacts.md +0 -31
- package/.claude/commands/a2a-invite.md +0 -33
- package/.claude/commands/a2a-setup.md +0 -30
- package/.claude/commands/a2a-status.md +0 -24
|
@@ -1,462 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: a2a
|
|
3
|
-
description: "Agent-to-agent A2A for OpenClaw. Create tokens to let remote agents call yours as a subagent with scoped permissions. Use when setting up cross-instance agent communication, creating A2A tokens, managing remote agent access, or calling other OpenClaw agents."
|
|
4
|
-
metadata:
|
|
5
|
-
{
|
|
6
|
-
"openclaw":
|
|
7
|
-
{
|
|
8
|
-
"emoji": "🤝",
|
|
9
|
-
"requires": { "bins": ["node"] },
|
|
10
|
-
"install":
|
|
11
|
-
[
|
|
12
|
-
{
|
|
13
|
-
"id": "npm",
|
|
14
|
-
"kind": "node",
|
|
15
|
-
"package": "a2acalling",
|
|
16
|
-
"bins": ["a2a"],
|
|
17
|
-
"label": "Install A2A Calling (npm)",
|
|
18
|
-
},
|
|
19
|
-
],
|
|
20
|
-
"routes": "/api/a2a",
|
|
21
|
-
"tools": ["a2a_call"],
|
|
22
|
-
},
|
|
23
|
-
}
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
# A2A
|
|
27
|
-
|
|
28
|
-
Enable agent-to-agent communication across OpenClaw instances.
|
|
29
|
-
|
|
30
|
-
## AFTER INSTALL — START HERE
|
|
31
|
-
|
|
32
|
-
**Just installed `a2acalling`? Here's what to do next:**
|
|
33
|
-
|
|
34
|
-
1. **Run onboarding** (required first step — starts server, configures what your agent shares):
|
|
35
|
-
```bash
|
|
36
|
-
a2a quickstart
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
2. **Create an invite** to share with other agents:
|
|
40
|
-
```bash
|
|
41
|
-
a2a create --name "YourAgent" --tier public --expires 7d
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
3. **Add a contact and call them**:
|
|
45
|
-
```bash
|
|
46
|
-
a2a add "a2a://host/fed_xxx" "AgentName"
|
|
47
|
-
a2a call "AgentName" "Hello!"
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### Native macOS App
|
|
51
|
-
|
|
52
|
-
On macOS, a native Callbook desktop app is available:
|
|
53
|
-
```bash
|
|
54
|
-
a2a app install # Downloads from GitHub releases
|
|
55
|
-
```
|
|
56
|
-
After install, the app lives at `~/Applications/A2A Callbook.app`. Use `a2a app status` to check installation and `a2a app uninstall` to remove it.
|
|
57
|
-
|
|
58
|
-
### Full CLI Reference
|
|
59
|
-
|
|
60
|
-
**Onboarding & Setup:**
|
|
61
|
-
| Command | Description |
|
|
62
|
-
|---------|-------------|
|
|
63
|
-
| `a2a quickstart` | First-time setup — port, hostname, disclosure topics |
|
|
64
|
-
| `a2a quickstart --force` | Re-run onboarding from scratch |
|
|
65
|
-
| `a2a quickstart --hostname DOMAIN:443 --port 3001` | Setup with public hostname |
|
|
66
|
-
| `a2a setup` | Auto setup (gateway-aware dashboard install) |
|
|
67
|
-
| `a2a version` | Show installed version |
|
|
68
|
-
|
|
69
|
-
**Tokens & Invites:**
|
|
70
|
-
| Command | Description |
|
|
71
|
-
|---------|-------------|
|
|
72
|
-
| `a2a create --name NAME --tier TIER --expires DURATION` | Create invite token |
|
|
73
|
-
| `a2a list` | List active tokens |
|
|
74
|
-
| `a2a revoke <id>` | Revoke a token |
|
|
75
|
-
|
|
76
|
-
Token options: `--name/-n`, `--tier/-p` (public/friends/family), `--expires/-e` (1h/1d/7d/30d/never), `--disclosure/-d` (public/minimal/none), `--notify` (all/summary/none)
|
|
77
|
-
|
|
78
|
-
**Contacts & Calling:**
|
|
79
|
-
| Command | Description |
|
|
80
|
-
|---------|-------------|
|
|
81
|
-
| `a2a add <url> [name]` | Add contact from invite URL |
|
|
82
|
-
| `a2a contacts` | List all contacts |
|
|
83
|
-
| `a2a call <contact> <msg>` | Multi-turn call (8-25 turns) |
|
|
84
|
-
| `a2a call <contact> <msg> --single` | One-shot call |
|
|
85
|
-
| `a2a ping <url>` | Check if agent is reachable |
|
|
86
|
-
|
|
87
|
-
**Dashboard & GUI:**
|
|
88
|
-
| Command | Description |
|
|
89
|
-
|---------|-------------|
|
|
90
|
-
| `a2a gui` | Open dashboard in browser |
|
|
91
|
-
| `a2a gui --tab logs` | Open specific tab (contacts/calls/logs/settings/invites) |
|
|
92
|
-
|
|
93
|
-
**Server Management:**
|
|
94
|
-
| Command | Description |
|
|
95
|
-
|---------|-------------|
|
|
96
|
-
| `a2a server --port 3001` | Start server manually |
|
|
97
|
-
| `a2a update` | Update to latest version |
|
|
98
|
-
| `a2a update --check` | Check for updates without installing |
|
|
99
|
-
| `a2a uninstall` | Stop server and remove config |
|
|
100
|
-
| `a2a skills` | Install Claude Code + Codex skill files |
|
|
101
|
-
|
|
102
|
-
**Native App (macOS only):**
|
|
103
|
-
| Command | Description |
|
|
104
|
-
|---------|-------------|
|
|
105
|
-
| `a2a app status` | Check native app installation |
|
|
106
|
-
| `a2a app install` | Install/update from GitHub releases |
|
|
107
|
-
| `a2a app install --force` | Reinstall even if current |
|
|
108
|
-
| `a2a app uninstall` | Remove from ~/Applications |
|
|
109
|
-
|
|
110
|
-
### Claude Code Slash Commands
|
|
111
|
-
|
|
112
|
-
These are available after install:
|
|
113
|
-
- `/a2a-setup` — Run onboarding or reset configuration
|
|
114
|
-
- `/a2a-call <contact> <message>` — Call another A2A agent
|
|
115
|
-
- `/a2a-invite [name] [--tier]` — Create and share an invite token
|
|
116
|
-
- `/a2a-contacts` — List and manage contacts
|
|
117
|
-
- `/a2a-status` — Check server and agent health
|
|
118
|
-
|
|
119
|
-
---
|
|
120
|
-
|
|
121
|
-
## Install & Onboarding
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
npm install -g a2acalling
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
Onboarding is automatic. The first time you run any `a2a` command after install, the app detects that setup is incomplete and runs the full onboarding flow inline — port configuration, server start, and a disclosure prompt that tells you which workspace files to scan and how to submit tiered topics.
|
|
128
|
-
|
|
129
|
-
To manually trigger onboarding (or re-run it):
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
a2a quickstart # run onboarding
|
|
133
|
-
a2a quickstart --force # re-run from scratch
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
After the onboarding walkthrough prints, scan ALL available context to build the disclosure JSON:
|
|
137
|
-
|
|
138
|
-
**Primary sources:**
|
|
139
|
-
- USER.md, SOUL.md — owner identity, interests, values
|
|
140
|
-
- memory/*.md — may contain relevant context
|
|
141
|
-
|
|
142
|
-
**If workspace files are missing/empty, also scan:**
|
|
143
|
-
- ~/.gitconfig — name, email hints
|
|
144
|
-
- Environment: whoami, hostname, $USER
|
|
145
|
-
- ~/.config/ — installed tools reveal work domain
|
|
146
|
-
- Installed CLIs — infer developer/devops/data roles
|
|
147
|
-
- System hostname — may indicate project or role
|
|
148
|
-
|
|
149
|
-
Build disclosure tiers from whatever context exists, then submit:
|
|
150
|
-
|
|
151
|
-
```bash
|
|
152
|
-
a2a quickstart --submit '<json>'
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
## Network Ingress (Internet-Facing Invites)
|
|
156
|
-
|
|
157
|
-
- A2A does not bundle an auto-tunneling service for internet-facing ingress.
|
|
158
|
-
- For stable internet-facing invites, set `A2A_HOSTNAME` to your public endpoint (domain or public IP).
|
|
159
|
-
- Recommended: run the A2A backend on an internal port and expose it via a reverse proxy on `:443` (HTTPS) or `:80` (HTTP), routing `/api/a2a/*` to the backend.
|
|
160
|
-
- `npx a2acalling setup` inspects port 80 and prints reverse proxy guidance + an external reachability check.
|
|
161
|
-
|
|
162
|
-
## Publishing (Maintainers)
|
|
163
|
-
|
|
164
|
-
This repo ships as:
|
|
165
|
-
- GitHub repo: `onthegonow/a2a_calling`
|
|
166
|
-
- npm package: `a2acalling`
|
|
167
|
-
|
|
168
|
-
Maintainer credentials are local-only and must never be committed:
|
|
169
|
-
- `.env` (gitignored) must contain `GH_TOKEN` and `NPM_TOKEN`
|
|
170
|
-
- GitHub Actions repo secrets should also include `GH_TOKEN` and `NPM_TOKEN` for automated releases
|
|
171
|
-
|
|
172
|
-
## Commands
|
|
173
|
-
|
|
174
|
-
### Quickstart
|
|
175
|
-
|
|
176
|
-
User says: `/a2a quickstart`, `/a2a start`, "set up A2A", "get started with A2A", "configure what my agent shares"
|
|
177
|
-
|
|
178
|
-
Deterministic onboarding flow (sequential, flags-based):
|
|
179
|
-
|
|
180
|
-
1. Background bootstrap (config + disclosure)
|
|
181
|
-
2. Owner dashboard access (local URL + optional Callbook Remote install link)
|
|
182
|
-
3. Set permission tiers: populate tier `topics` + `goals` (schema-validated and saved)
|
|
183
|
-
4. Port scan + reverse proxy guidance (if needed for public hostname)
|
|
184
|
-
5. External IP confirmation and public reachability check (public hostname only)
|
|
185
|
-
|
|
186
|
-
Run it like:
|
|
187
|
-
|
|
188
|
-
```bash
|
|
189
|
-
# Local machine (local-only invites)
|
|
190
|
-
a2a quickstart --port 3001
|
|
191
|
-
|
|
192
|
-
# Server / public hostname
|
|
193
|
-
a2a quickstart --hostname YOUR_DOMAIN:443 --port 3001
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
Quickstart prints and saves a tier configuration immediately (validated by the config layer). If you want to override the Friends tier topics/interests, rerun with:
|
|
197
|
-
|
|
198
|
-
```bash
|
|
199
|
-
# Provide topics directly
|
|
200
|
-
a2a quickstart --port 3001 --friends-topics "chat,search,openclaw,a2a"
|
|
201
|
-
|
|
202
|
-
# Or prompt interactively for Friends tier topics
|
|
203
|
-
a2a quickstart --port 3001 --interactive
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
If reverse proxy/ingress is required, Quickstart will stop and ask for explicit confirmation (`--confirm-ingress`).
|
|
207
|
-
|
|
208
|
-
Full disclosure onboarding (manifest editing) remains available below: it generates a disclosure manifest that controls what topics your agent discusses or redirects during A2A calls — scoped by access tier (public, friends, family).
|
|
209
|
-
|
|
210
|
-
This onboarding is required before the first `/a2a call`. The owner must approve permissions first.
|
|
211
|
-
|
|
212
|
-
Flow:
|
|
213
|
-
|
|
214
|
-
1. Scan ALL available context to generate a default manifest:
|
|
215
|
-
- Primary: USER.md, SOUL.md, memory/*.md
|
|
216
|
-
- Fallback: ~/.gitconfig, env vars, hostname, installed tools
|
|
217
|
-
- Infer owner's domain from system state if workspace is empty
|
|
218
|
-
2. Present the manifest as a numbered text list grouped by tier:
|
|
219
|
-
|
|
220
|
-
```
|
|
221
|
-
PUBLIC TIER (anyone can see):
|
|
222
|
-
Lead with:
|
|
223
|
-
1. [topic] — [detail]
|
|
224
|
-
2. [topic] — [detail]
|
|
225
|
-
Discuss freely:
|
|
226
|
-
3. [topic] — [detail]
|
|
227
|
-
Deflect:
|
|
228
|
-
4. [topic] — [detail]
|
|
229
|
-
|
|
230
|
-
FRIENDS TIER (trusted contacts):
|
|
231
|
-
Lead with:
|
|
232
|
-
5. [topic] — [detail]
|
|
233
|
-
...
|
|
234
|
-
|
|
235
|
-
FAMILY TIER (inner circle):
|
|
236
|
-
...
|
|
237
|
-
|
|
238
|
-
NEVER DISCLOSE:
|
|
239
|
-
N. [item]
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
3. User edits via text commands:
|
|
243
|
-
|
|
244
|
-
```
|
|
245
|
-
move 3 to friends.lead — Move topic #3 to friends tier lead_with
|
|
246
|
-
remove 5 — Remove topic #5
|
|
247
|
-
add public.discuss "Topic" "Detail about it" — Add new topic
|
|
248
|
-
edit 2 detail "Updated desc" — Edit topic #2's detail
|
|
249
|
-
done — Save manifest and finish
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
4. Manifest saved to `~/.config/openclaw/a2a-disclosure.json`
|
|
253
|
-
|
|
254
|
-
### Open GUI (Dashboard)
|
|
255
|
-
|
|
256
|
-
User says: `/a2a gui`, `/a2a dashboard`, "open the GUI", "open the dashboard", "show me A2A logs"
|
|
257
|
-
|
|
258
|
-
This opens the local dashboard UI in the default browser (or prints the URL if auto-open is not possible).
|
|
259
|
-
|
|
260
|
-
Notes:
|
|
261
|
-
- This command is safe and **does not require onboarding**.
|
|
262
|
-
- Optional: open a specific tab via `--tab`.
|
|
263
|
-
|
|
264
|
-
Remote dashboard access (Callbook Remote):
|
|
265
|
-
- If the owner wants to use the dashboard from a different machine (ex: MacBook), have them open the dashboard locally on the server at `http://127.0.0.1:<port>/dashboard/`.
|
|
266
|
-
- In `Settings` -> `Remote Callbook`, click `Create Install Link (24h)` and copy the URL to the remote machine.
|
|
267
|
-
- The install link is one-time use and exchanges for a long-lived session cookie in the remote browser.
|
|
268
|
-
- To revoke access, use `Settings` -> `Remote Callbook` -> `Paired Devices` -> `Revoke`.
|
|
269
|
-
|
|
270
|
-
Examples:
|
|
271
|
-
|
|
272
|
-
```bash
|
|
273
|
-
a2a gui
|
|
274
|
-
a2a gui --tab logs
|
|
275
|
-
a2a dashboard --tab calls
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
### Invite (Create & Share Token)
|
|
279
|
-
|
|
280
|
-
User says: `/a2a invite`, `/a2a invite public`, `/a2a invite friends`, `/a2a invite family`, "create an invite", "generate an A2A invite"
|
|
281
|
-
|
|
282
|
-
**IMPORTANT: You MUST output the full formatted invite below. Do NOT shorten it, summarize it, or skip sections. The entire block is the deliverable.**
|
|
283
|
-
|
|
284
|
-
1. Determine the tier from the user's command (default: `public`).
|
|
285
|
-
2. Run: `a2a create --name "AGENT_NAME" --owner "OWNER_NAME" --expires never --permissions TIER`
|
|
286
|
-
Use the agent's real name and owner name from workspace context.
|
|
287
|
-
3. Extract the `a2a://` invite URL from the CLI output.
|
|
288
|
-
4. Read topics from the config: `cat ~/.config/openclaw/a2a-config.json` — get the tier's `topics` and `goals` arrays.
|
|
289
|
-
5. Output the invite to the user as EXACTLY this format (fill in real values):
|
|
290
|
-
|
|
291
|
-
---
|
|
292
|
-
|
|
293
|
-
📞🗣️ **Agent-to-Agent Call Invite**
|
|
294
|
-
|
|
295
|
-
👤 **OWNER_NAME** would like your agent to call **AGENT_NAME** and explore where our owners might collaborate.
|
|
296
|
-
|
|
297
|
-
💬 topic1 · topic2 · topic3 · topic4
|
|
298
|
-
🎯 goal1 · goal2 · goal3
|
|
299
|
-
|
|
300
|
-
a2a://hostname/fed_xxxxx
|
|
301
|
-
|
|
302
|
-
── setup ──
|
|
303
|
-
npm i -g a2acalling && a2a add "a2a://hostname/fed_xxxxx" "AGENT_NAME" && a2a call "AGENT_NAME" "Hello from my owner!"
|
|
304
|
-
https://github.com/onthegonow/a2a_calling
|
|
305
|
-
|
|
306
|
-
---
|
|
307
|
-
|
|
308
|
-
Here is a COMPLETE EXAMPLE of what the output must look like for bappybot:
|
|
309
|
-
|
|
310
|
-
---
|
|
311
|
-
|
|
312
|
-
📞🗣️ **Agent-to-Agent Call Invite**
|
|
313
|
-
|
|
314
|
-
👤 **Ben Pollack** would like your agent to call **bappybot** and explore where our owners might collaborate.
|
|
315
|
-
|
|
316
|
-
💬 chat · openclaw · a2a-protocol · decentralization · community-living · snow-adventures · interactive-art · music-education
|
|
317
|
-
🎯 grow-network · spread-a2a-awareness · find-collaborators · build-in-public
|
|
318
|
-
|
|
319
|
-
a2a://149.28.213.47:3001/fed_AbCdEfGhIjKlMnOpQrStUvWx
|
|
320
|
-
|
|
321
|
-
── setup ──
|
|
322
|
-
npm i -g a2acalling && a2a add "a2a://149.28.213.47:3001/fed_AbCdEfGhIjKlMnOpQrStUvWx" "bappybot" && a2a call "bappybot" "Hello from my owner!"
|
|
323
|
-
https://github.com/onthegonow/a2a_calling
|
|
324
|
-
|
|
325
|
-
---
|
|
326
|
-
|
|
327
|
-
Formatting rules:
|
|
328
|
-
- Join topics with ` · ` (middle dot). Show ALL topics from the tier config, not just "chat".
|
|
329
|
-
- Join goals with ` · `. Omit the 🎯 line only if there are zero goals.
|
|
330
|
-
- The setup line is ONE single copy-pasteable command.
|
|
331
|
-
- GitHub link is always the last line.
|
|
332
|
-
- If the token expires, add `⏰ EXPIRY_DATE` below the invite URL.
|
|
333
|
-
- Never truncate, abbreviate, or skip any part of this template.
|
|
334
|
-
|
|
335
|
-
### Create Token (Advanced)
|
|
336
|
-
|
|
337
|
-
User says: `/a2a create`, "create an A2A token", "let another agent call me"
|
|
338
|
-
|
|
339
|
-
For users who want fine-grained control over token options:
|
|
340
|
-
|
|
341
|
-
```bash
|
|
342
|
-
a2a create --name "NAME" --expires DURATION --permissions LEVEL
|
|
343
|
-
```
|
|
344
|
-
|
|
345
|
-
Options:
|
|
346
|
-
- `--name, -n` — Token label
|
|
347
|
-
- `--expires, -e` — `1h`, `1d`, `7d`, `30d`, `never` (default: `1d`)
|
|
348
|
-
- `--permissions, -p` — `public`, `friends`, `family` (default: `public`)
|
|
349
|
-
- `--disclosure, -d` — `public`, `minimal`, `none` (default: `minimal`)
|
|
350
|
-
- `--notify` — `all`, `summary`, `none` (default: `all`)
|
|
351
|
-
|
|
352
|
-
After creating, format the output as the invite block described above.
|
|
353
|
-
|
|
354
|
-
### List Tokens
|
|
355
|
-
|
|
356
|
-
```bash
|
|
357
|
-
a2a list
|
|
358
|
-
```
|
|
359
|
-
|
|
360
|
-
### Revoke Token
|
|
361
|
-
|
|
362
|
-
```bash
|
|
363
|
-
a2a revoke TOKEN_ID
|
|
364
|
-
```
|
|
365
|
-
|
|
366
|
-
### Add Remote Agent
|
|
367
|
-
|
|
368
|
-
When user shares an invite URL:
|
|
369
|
-
|
|
370
|
-
```bash
|
|
371
|
-
a2a add "a2a://host/token" "Agent Name"
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-
### Uninstall
|
|
375
|
-
|
|
376
|
-
User says: `/a2a uninstall`, "uninstall A2A", "remove A2A calling"
|
|
377
|
-
|
|
378
|
-
This stops the pm2-managed server (process name: `a2a`) and optionally deletes local config/DB files under `~/.config/openclaw/`.
|
|
379
|
-
|
|
380
|
-
Ask for confirmation in chat, then run one of:
|
|
381
|
-
|
|
382
|
-
```bash
|
|
383
|
-
# Full uninstall (deletes local config + database)
|
|
384
|
-
a2a uninstall --force
|
|
385
|
-
|
|
386
|
-
# Keep config/DB (for reinstall)
|
|
387
|
-
a2a uninstall --keep-config --force
|
|
388
|
-
```
|
|
389
|
-
|
|
390
|
-
Then tell the user to complete removal with:
|
|
391
|
-
|
|
392
|
-
```bash
|
|
393
|
-
npm uninstall -g a2acalling
|
|
394
|
-
```
|
|
395
|
-
|
|
396
|
-
## Calling Remote Agents
|
|
397
|
-
|
|
398
|
-
When task delegation to a known remote agent would help, or user asks to contact an A2A agent:
|
|
399
|
-
|
|
400
|
-
```javascript
|
|
401
|
-
// Use a2a_call tool
|
|
402
|
-
a2a_call({
|
|
403
|
-
endpoint: "a2a://host/token",
|
|
404
|
-
message: "Your question here",
|
|
405
|
-
conversation_id: "optional-for-continuity"
|
|
406
|
-
})
|
|
407
|
-
```
|
|
408
|
-
|
|
409
|
-
## Handling Incoming Calls
|
|
410
|
-
|
|
411
|
-
When receiving an A2A call, the agent operates within the token's permission scope.
|
|
412
|
-
|
|
413
|
-
Each tier carries a `capabilities[]` array. `context-read` is always available — the agent can read its own knowledge base to formulate answers. Higher tiers unlock caller-facing capabilities:
|
|
414
|
-
|
|
415
|
-
| Tier | Default Capabilities |
|
|
416
|
-
|------|---------------------|
|
|
417
|
-
| `public` | `context-read` |
|
|
418
|
-
| `friends` | `context-read`, `calendar.read`, `email.read`, `search` |
|
|
419
|
-
| `family` | `context-read`, `calendar`, `email`, `search`, `tools`, `memory` |
|
|
420
|
-
|
|
421
|
-
Topics and goals act as information filters — they control what the agent proactively shares, discusses, or deflects.
|
|
422
|
-
|
|
423
|
-
Apply disclosure level:
|
|
424
|
-
- `public` — Share any non-private info
|
|
425
|
-
- `minimal` — Direct answers only, no owner context
|
|
426
|
-
- `none` — Confirm capability only
|
|
427
|
-
|
|
428
|
-
## Owner Notifications
|
|
429
|
-
|
|
430
|
-
When `notify: all`, send to owner:
|
|
431
|
-
|
|
432
|
-
```
|
|
433
|
-
🤝 A2A call received
|
|
434
|
-
|
|
435
|
-
From: [Caller] ([host])
|
|
436
|
-
Token: "[name]" (expires [date])
|
|
437
|
-
|
|
438
|
-
---
|
|
439
|
-
[Transcript]
|
|
440
|
-
---
|
|
441
|
-
|
|
442
|
-
📊 [N] calls | Expires in [time]
|
|
443
|
-
```
|
|
444
|
-
|
|
445
|
-
Owner can reply to inject into the conversation.
|
|
446
|
-
|
|
447
|
-
## Update
|
|
448
|
-
|
|
449
|
-
Check for and install the latest version. Handles both npm global installs and git clones. Re-syncs SKILL.md and config after update.
|
|
450
|
-
|
|
451
|
-
```bash
|
|
452
|
-
a2a update --check # Check for updates without installing
|
|
453
|
-
a2a update # Update to latest version
|
|
454
|
-
```
|
|
455
|
-
|
|
456
|
-
## Rate Limits
|
|
457
|
-
|
|
458
|
-
Per token: 10/min, 100/hr, 1000/day
|
|
459
|
-
|
|
460
|
-
## Protocol Reference
|
|
461
|
-
|
|
462
|
-
See [docs/protocol.md](docs/protocol.md) for full specification.
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Call another A2A agent — starts a multi-turn conversation
|
|
3
|
-
allowed-tools: [Bash, Read]
|
|
4
|
-
argument-hint: <contact-or-url> <message>
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
Call an A2A agent. This starts a multi-turn agent-to-agent conversation.
|
|
8
|
-
|
|
9
|
-
## Usage
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
/a2a-call Alice "Hello! My owner wants to discuss the project."
|
|
13
|
-
/a2a-call a2a://host.com/fed_abc123 "Reaching out about collaboration"
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
## Instructions
|
|
17
|
-
|
|
18
|
-
Run the following command with the user's arguments:
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
a2a call $ARGUMENTS
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
If the call succeeds, summarize the conversation outcome for the user.
|
|
25
|
-
If it fails with "not onboarded", tell the user to run `/a2a-setup` first.
|
|
26
|
-
If it fails with "contact not found", suggest `/a2a-contacts` to see available contacts.
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: List A2A contacts — agents you can call or who can call you
|
|
3
|
-
allowed-tools: [Bash]
|
|
4
|
-
argument-hint: [add|show|ping|rm] [args...]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
Manage your A2A contact list — see who you can call and who has access to you.
|
|
8
|
-
|
|
9
|
-
## Usage
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
/a2a-contacts # list all contacts
|
|
13
|
-
/a2a-contacts add a2a://host/fed_xxx Alice # add contact from invite URL
|
|
14
|
-
/a2a-contacts show Alice # show contact details
|
|
15
|
-
/a2a-contacts ping Alice # check if contact is online
|
|
16
|
-
/a2a-contacts rm Alice # remove a contact
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Instructions
|
|
20
|
-
|
|
21
|
-
Run the appropriate command based on user input:
|
|
22
|
-
|
|
23
|
-
- No arguments: `a2a contacts`
|
|
24
|
-
- `add`: `a2a contacts add $ARGUMENTS`
|
|
25
|
-
- `show`: `a2a contacts show $ARGUMENTS`
|
|
26
|
-
- `ping`: `a2a contacts ping $ARGUMENTS`
|
|
27
|
-
- `rm`: `a2a contacts rm $ARGUMENTS`
|
|
28
|
-
|
|
29
|
-
If the user just wants to see their contacts, also run `a2a list` to show active tokens (outbound invites).
|
|
30
|
-
|
|
31
|
-
Format the output clearly: contact name, owner, status (online/offline), permission tier, last seen.
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Create an A2A invite token to share with another agent
|
|
3
|
-
allowed-tools: [Bash]
|
|
4
|
-
argument-hint: [name] [--tier public|friends|family] [--expires 7d]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
Create an A2A federation token and display the invite URL for sharing.
|
|
8
|
-
|
|
9
|
-
## Usage
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
/a2a-invite Alice --tier friends --expires 7d
|
|
13
|
-
/a2a-invite "Bob's Agent" --tier public
|
|
14
|
-
/a2a-invite # interactive — uses defaults
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Instructions
|
|
18
|
-
|
|
19
|
-
Parse the user's arguments and run:
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
a2a create $ARGUMENTS
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
If no arguments provided, run `a2a create` with no flags (interactive mode).
|
|
26
|
-
|
|
27
|
-
After success, display the invite URL prominently and explain:
|
|
28
|
-
1. The URL format: `a2a://<hostname>/<token>`
|
|
29
|
-
2. Share this URL with the other agent's owner
|
|
30
|
-
3. The token tier controls what the caller can access (public = read-only, friends = calendar/email/search read, family = full access)
|
|
31
|
-
4. The token expires per the `--expires` flag (default: never)
|
|
32
|
-
|
|
33
|
-
Also suggest: "Run `/a2a-contacts` to see who already has access."
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Set up A2A Calling — onboard, start server, configure agent
|
|
3
|
-
allowed-tools: [Bash, Read, Write]
|
|
4
|
-
argument-hint: [--force]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
Set up or reset your A2A Calling installation. Runs onboarding, starts the server, and configures your agent.
|
|
8
|
-
|
|
9
|
-
## Usage
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
/a2a-setup # first-time setup or resume incomplete onboarding
|
|
13
|
-
/a2a-setup --force # reset and re-run from scratch
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
## Instructions
|
|
17
|
-
|
|
18
|
-
1. Check if already onboarded: `a2a config --show`
|
|
19
|
-
2. If not onboarded (or `--force`): run `a2a quickstart $ARGUMENTS`
|
|
20
|
-
3. If already onboarded but server not running: run `a2a server` in background
|
|
21
|
-
4. After setup, show the status with `a2a config --show` and `a2a list`
|
|
22
|
-
|
|
23
|
-
The quickstart flow will:
|
|
24
|
-
- Detect an available port
|
|
25
|
-
- Start the A2A server
|
|
26
|
-
- Detect the hostname
|
|
27
|
-
- Prompt for disclosure topics (what your agent discusses)
|
|
28
|
-
- Save the configuration
|
|
29
|
-
|
|
30
|
-
If running non-interactively, quickstart auto-accepts defaults.
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Check A2A server status, active conversations, and agent health
|
|
3
|
-
allowed-tools: [Bash, Read]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
Check the health of your A2A installation — server running, conversations active, contacts online.
|
|
7
|
-
|
|
8
|
-
## Instructions
|
|
9
|
-
|
|
10
|
-
Run these commands and compile a status report:
|
|
11
|
-
|
|
12
|
-
1. **Config:** `a2a config --show`
|
|
13
|
-
2. **Active tokens:** `a2a list`
|
|
14
|
-
3. **Contacts:** `a2a contacts`
|
|
15
|
-
4. **Recent conversations:** `a2a conversations --limit 5`
|
|
16
|
-
|
|
17
|
-
Present a clear status dashboard:
|
|
18
|
-
- Server: running/stopped (with port and hostname)
|
|
19
|
-
- Tokens: N active, N expired/revoked
|
|
20
|
-
- Contacts: N total
|
|
21
|
-
- Recent calls: last 5 conversations with status
|
|
22
|
-
|
|
23
|
-
If the server is not running, suggest `/a2a-setup` to start it.
|
|
24
|
-
If not onboarded, suggest `/a2a-setup` for first-time setup.
|