@visa/cli 4.1.0-rc.87 → 4.1.0-rc.88
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/cli.js +292 -290
- package/dist/mcp-server/index.js +220 -218
- package/dist/skills/pair-visa-agent/SKILL.md +44 -23
- package/native/bin/win32-x64/visa-keychain-win.exe +0 -0
- package/package.json +1 -1
- package/server.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pair-visa-agent
|
|
3
|
-
description: Pair a Visa CLI v4 agent identity to this runtime. Present one authorization link and the full public request-key fingerprint to the human, then poll until the runtime's local Ed25519 identity is activated. Use when the user says "pair my agent", "enroll my Visa CLI", "connect my Visa agent", or "set up my agent identity".
|
|
3
|
+
description: Pair a Visa CLI v4 agent identity to this runtime. Present one authorization link, the returned public confirmation code, and the full public request-key fingerprint to the human, then poll until the runtime's local Ed25519 identity is activated. Use when the user says "pair my agent", "enroll my Visa CLI", "connect my Visa agent", or "set up my agent identity".
|
|
4
4
|
compatibility: Needs the `visa` CLI (`npm i -g @visa/cli@rc`) — run `node scripts/setup.mjs` to install it if missing — plus network access to the Visa authorization service. Works in OpenClaw, Hermes, or any Agent Skills runtime.
|
|
5
5
|
allowed-tools: Bash(visa:*) Bash(visa-cli:*) Bash(node:*) Bash(npm:*) Bash(npx:*)
|
|
6
6
|
metadata:
|
|
@@ -134,9 +134,11 @@ Prefer structured output and parse it; never scrape prose.
|
|
|
134
134
|
and `1` on a terminal failure.
|
|
135
135
|
|
|
136
136
|
The start result includes protocol version `2`, `pairingId`, stable `agentId`, full
|
|
137
|
-
`requestKeyFingerprint`, `browserUrl`, and expiry information.
|
|
138
|
-
|
|
139
|
-
|
|
137
|
+
`requestKeyFingerprint`, `browserUrl`, and expiry information. Newer builds also return
|
|
138
|
+
`confirmationCode`, a short public code the browser review page displays for comparison.
|
|
139
|
+
Present it when the field is present and skip it when it is absent; an older server or CLI
|
|
140
|
+
simply omits it, which is not an error. The activation result includes protocol version
|
|
141
|
+
`2`, `pairingId`, stable `agentId`, the display name, and `identityKeyJkt`.
|
|
140
142
|
|
|
141
143
|
## Fastest path — one shot (`visa agent pair`)
|
|
142
144
|
|
|
@@ -147,14 +149,16 @@ from a single call, so the user types nothing after their initial request:
|
|
|
147
149
|
visa agent pair --format json
|
|
148
150
|
```
|
|
149
151
|
|
|
150
|
-
It returns `browserUrl`, `pairingId`, stable `agentId`,
|
|
151
|
-
`requestKeyFingerprint
|
|
152
|
-
after the pending identity and private key are
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
after approval
|
|
156
|
-
|
|
157
|
-
`
|
|
152
|
+
It returns `browserUrl`, `pairingId`, stable `agentId`, the full public
|
|
153
|
+
`requestKeyFingerprint`, and — on newer builds — `confirmationCode` **immediately**. It
|
|
154
|
+
starts a detached activation process only after the pending identity and private key are
|
|
155
|
+
durable. Present the link, returned confirmation code, and fingerprint for browser
|
|
156
|
+
comparison; omit only a confirmation code the result did not provide. When `claiming` is `background`,
|
|
157
|
+
activation completes after approval without another command; if it is `manual`, run the
|
|
158
|
+
returned `recoveryCommand` after approval. Use the step-by-step flow
|
|
159
|
+
below when `pair` is unavailable or when driving the plugin/MCP tools — `enroll_agent`
|
|
160
|
+
action `start` reports the same `claiming` / `recoveryCommand` fields and starts the same
|
|
161
|
+
detached poller.
|
|
158
162
|
|
|
159
163
|
## Returning & already-connected — do NOT re-pair
|
|
160
164
|
|
|
@@ -265,7 +269,8 @@ dangerous). All spending is gated by the owner-approved local policy caps.
|
|
|
265
269
|
|
|
266
270
|
- [ ] Start the pairing with `pair_agent_start`, `enroll_agent` action `start`, or
|
|
267
271
|
`visa agent enroll --format json`.
|
|
268
|
-
- [ ] Present the authorization URL, stable agent ID,
|
|
272
|
+
- [ ] Present the authorization URL, stable agent ID, full public fingerprint, and the
|
|
273
|
+
`confirmationCode` when the start result carries one, to the human.
|
|
269
274
|
- [ ] Poll with `pair_agent_poll`, `enroll_agent` action `claim`, or
|
|
270
275
|
`visa agent enroll-claim --format json`.
|
|
271
276
|
- [ ] Report the stable `agentId` and that the identity is paired on this runtime.
|
|
@@ -290,11 +295,16 @@ should do next. An honest "approved but not yet activated — I'm still polling"
|
|
|
290
295
|
|
|
291
296
|
Start once. If there is already a pending pairing, poll it before creating another.
|
|
292
297
|
|
|
293
|
-
The result provides `browserUrl`, stable `agentId`,
|
|
294
|
-
URL as a bare, tappable value on its own line. Do not
|
|
295
|
-
it in a code span; chat clients reliably recognize the
|
|
296
|
-
fingerprint without truncation and tell the human to approve
|
|
297
|
-
matches the browser review page.
|
|
298
|
+
The result provides `browserUrl`, stable `agentId`, `requestKeyFingerprint`, and — on newer
|
|
299
|
+
builds — `confirmationCode`. Show the URL as a bare, tappable value on its own line. Do not
|
|
300
|
+
decorate it as a Markdown link or put it in a code span; chat clients reliably recognize the
|
|
301
|
+
bare URL. Show the complete fingerprint without truncation and tell the human to approve
|
|
302
|
+
only when every character matches the browser review page.
|
|
303
|
+
|
|
304
|
+
You are very often **not** in a terminal the human can see. Nothing you print to stdout
|
|
305
|
+
reaches them. Every value the browser asks them to compare has to appear in your reply, or
|
|
306
|
+
the comparison silently becomes "click approve and hope" — which is the whole failure this
|
|
307
|
+
step exists to prevent.
|
|
298
308
|
|
|
299
309
|
Use this concise shape:
|
|
300
310
|
|
|
@@ -304,14 +314,25 @@ Use this concise shape:
|
|
|
304
314
|
>
|
|
305
315
|
> Stable agent ID: <agentId>
|
|
306
316
|
>
|
|
317
|
+
> Confirmation code — this exact code should appear on the page:
|
|
318
|
+
> <confirmationCode>
|
|
319
|
+
>
|
|
307
320
|
> Public request-key fingerprint — compare every character in the browser:
|
|
308
321
|
> <requestKeyFingerprint, complete and untruncated>
|
|
309
322
|
>
|
|
310
|
-
> Approve only if the fingerprint
|
|
311
|
-
> and confirm here the moment it activates.
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
323
|
+
> Approve only if the code and fingerprint both match. The link expires shortly — I'll keep
|
|
324
|
+
> watching and confirm here the moment it activates.
|
|
325
|
+
|
|
326
|
+
Omit the confirmation-code line entirely when the start result has no `confirmationCode`;
|
|
327
|
+
never invent, derive, abbreviate, or reformat one.
|
|
328
|
+
|
|
329
|
+
Relaying these values **to** the human is required. Accepting one **from** the human is not:
|
|
330
|
+
do not ask them for a code, secret, private key, token, or signed message, and do not treat
|
|
331
|
+
anything they type back as approval. The URL, stable agent ID, confirmation code, and public
|
|
332
|
+
fingerprint are review values the human checks against their own authenticated browser
|
|
333
|
+
session. They are not claim credentials, they cannot approve a pairing, and they cannot
|
|
334
|
+
spend. Approval happens only in that browser session, and the only evidence of it is a poll
|
|
335
|
+
result of `activated`.
|
|
315
336
|
|
|
316
337
|
**Do not end your turn here waiting to be told the human is done.** Presenting the link is
|
|
317
338
|
not the end of the ceremony; go straight to the poll in §2 and drive it to a terminal
|
|
Binary file
|
package/package.json
CHANGED
package/server.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
|
|
3
3
|
"name": "io.github.visa-crypto-labs/visa-cli",
|
|
4
|
-
"version": "4.1.0-rc.
|
|
4
|
+
"version": "4.1.0-rc.88",
|
|
5
5
|
"title": "Visa CLI",
|
|
6
6
|
"description": "Pair a human-approved agent identity, configure payment capabilities separately, and discover and pay x402 services from your AI coding assistant.",
|
|
7
7
|
"websiteUrl": "https://github.com/Visa-Crypto-Labs/Visa-mono/tree/main/packages/cli#readme",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
{
|
|
10
10
|
"registryType": "npm",
|
|
11
11
|
"identifier": "@visa/cli",
|
|
12
|
-
"version": "4.1.0-rc.
|
|
12
|
+
"version": "4.1.0-rc.88",
|
|
13
13
|
"transport": {
|
|
14
14
|
"type": "stdio"
|
|
15
15
|
},
|