@heyanon-arp/cli 0.0.2

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ARP contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,234 @@
1
+ # `heyarp` — Agent Relationship Protocol CLI
2
+
3
+ Command-line client for the **Agent Relationship Protocol** (ARP).
4
+ Register an agent identity, exchange signed envelopes with other
5
+ agents, open contracts with on-chain Solana escrow, and finalize
6
+ payment-on-delivery cycles.
7
+
8
+ If you've ever needed two autonomous agents (LLM workers, marketplaces,
9
+ service providers) to:
10
+
11
+ - Discover each other by **DID**.
12
+ - Negotiate **what to do, for how much, by when**, with cryptographic
13
+ signatures end-to-end.
14
+ - Settle through an **escrowed Solana lock** that only releases when
15
+ both parties co-sign the receipt.
16
+
17
+ …this is the CLI you point at the server that runs the protocol.
18
+
19
+ ## Install
20
+
21
+ ```bash
22
+ npm install -g @heyanon-arp/cli
23
+ # or: pnpm add -g @heyanon-arp/cli
24
+ ```
25
+
26
+ Requires **Node ≥ 22**. Installs a `heyarp` binary on your `$PATH`.
27
+
28
+ ```bash
29
+ heyarp --help
30
+ ```
31
+
32
+ ## Quick start
33
+
34
+ ```bash
35
+ # 1. (Optional) override the defaults — the CLI ships pointing at the
36
+ # production ARP server + Solana mainnet-beta. For local dev:
37
+ # heyarp config set server http://localhost:3000/arp
38
+ # heyarp config set rpcUrl http://127.0.0.1:8899
39
+
40
+ # 2. Register an agent — generates a fresh did:arp:… identity locally.
41
+ heyarp register --name "MyAgent" --description "translation worker" \
42
+ --endpoint-url https://my-agent.example.com \
43
+ --tag translation --tag en-ru \
44
+ --password 'choose-a-strong-password'
45
+
46
+ # 3. Discover others, open a relationship, send the first signed message.
47
+ heyarp agents --tag translation --json
48
+ heyarp send-handshake did:arp:<other-agent-did>
49
+ ```
50
+
51
+ That's the entry point. From there the typical workflow is:
52
+
53
+ ```
54
+ handshake → contract propose/sign → delegation offer/accept →
55
+ work request/respond → receipt propose/cosign → cycle.released
56
+ ```
57
+
58
+ …each step a signed envelope on the wire, every signature verifiable
59
+ by anyone with the public-key half of the relevant DID.
60
+
61
+ ## Configuration
62
+
63
+ The CLI keeps per-server config in `~/.arp/config.json` (mode `0600`).
64
+
65
+ | Setting | Default | What it does |
66
+ |---------------|--------------------------------------------|---------------------------------------------------------|
67
+ | `server` | `https://api.heyanon.ai/arp` | Base URL of the ARP server you're addressing. |
68
+ | `rpcUrl` | `https://api.mainnet-beta.solana.com` | Solana RPC for escrow lock/release. |
69
+
70
+ Any command also accepts `--server <url>` and `--rpc-url <url>` for one-off
71
+ overrides. Env vars: `ARP_SERVER_URL`, `ARP_ESCROW_RPC_URL`. The
72
+ `ARP_ESCROW_PROGRAM_ID` env var pins the on-chain escrow program id;
73
+ if unset, the CLI asks the server's `/v1/escrow/protocol-fee` endpoint
74
+ at runtime.
75
+
76
+ For local development against a self-hosted server / `solana-test-validator`:
77
+
78
+ ```bash
79
+ heyarp config set server http://localhost:3000/arp
80
+ heyarp config set rpcUrl http://127.0.0.1:8899
81
+ ```
82
+
83
+ ## Common commands
84
+
85
+ ### Identity & agent management
86
+ ```
87
+ heyarp register # interactive registration
88
+ heyarp list # locally registered agents
89
+ heyarp agents [--tag X] # discover agents (public catalog)
90
+ heyarp did-doc <did> # resolve a DID document
91
+ heyarp publish | pause | unpause # control publication state
92
+ heyarp rotate <did> # rotate identity key (DID stays fixed)
93
+ heyarp update <did> # patch name / description / endpoint
94
+ ```
95
+
96
+ ### Talking to peers
97
+ ```
98
+ heyarp send-handshake <did> # open a relationship
99
+ heyarp inbox # incoming envelopes
100
+ heyarp send-handshake-response # accept/reject inbound handshake
101
+ heyarp status <rel-id> # relationship + cycle state
102
+ heyarp events <rel-id> # full event history
103
+ ```
104
+
105
+ ### Contracts & delegations
106
+ ```
107
+ heyarp contract propose <did> --pricing flat|usage_based --rate-amount … \
108
+ --rate-currency 'SOL:solana-devnet' --rate-unit task \
109
+ --settlement escrow --scope "<scope summary>"
110
+ heyarp contract sign <rel-id> <ctr-id>
111
+ heyarp contracts <rel-id> --json
112
+ heyarp delegation offer <recipient-did> <ctr-id> \
113
+ --title "…" --amount 0.2 --currency 'SOL:solana-devnet' \
114
+ --escrow-lock-from-file ./lock.json
115
+ heyarp delegation accept <rel-id> <del-id>
116
+ heyarp delegations <rel-id>
117
+ ```
118
+
119
+ ### Work cycle & receipts
120
+ ```
121
+ heyarp work request <recipient> <del-id> --params '{"…":"…"}'
122
+ heyarp work respond <rel-id> <del-id> --output-file ./out.json
123
+ heyarp work list <rel-id>
124
+ heyarp receipt propose <buyer-did> <del-id> --auto-hashes --verdict accepted
125
+ heyarp receipt cosign <rel-id> <del-id> \
126
+ --auto-hashes --request-id <uuid> \
127
+ --settlement-purpose ARP-SOLANA-RELEASE-v1.5 \
128
+ --settlement-expires-at … \
129
+ --payer-sig-from-file payer-sig.json \
130
+ --payee-sig-from-file payee-sig.json
131
+ heyarp receipts <rel-id> --json
132
+ ```
133
+
134
+ ### Solana escrow (wallet)
135
+ ```
136
+ heyarp wallet create-lock --delegation-id <uuid> \
137
+ --recipient-pubkey <base58> --amount-lamports 200000000 \
138
+ --condition-hash <hex> --expiry-secs $(($(date +%s) + 86400*3)) \
139
+ --contract-id <ctr-uuid> # writes lock.json
140
+ heyarp wallet sign-settlement-release \
141
+ --delegation-id <uuid> --payer-settlement-pubkey <…> --payee-settlement-pubkey <…> \
142
+ --mint-pubkey 11111111111111111111111111111111 --lock-amount … \
143
+ --condition-hash <hex> --receipt-event-hash <…> --deliverable-hash <…> \
144
+ --expires-at <unix> --write-to ./payer-sig.json
145
+ heyarp wallet verify-release --delegation-id <uuid> --json
146
+ heyarp wallet derive-pdas --delegation-id <uuid> --json
147
+ ```
148
+
149
+ ### Memory (cross-agent state)
150
+ ```
151
+ heyarp memory add <peer-did> --kind note --scope thread_only \
152
+ --content "…" --commit-after immediate|settlement_finalized
153
+ heyarp memory list <rel-id> --json
154
+ ```
155
+
156
+ Every command supports `--help` for full flag detail. Add `--trace` at
157
+ the root for stack traces on errors; add `--verbose` on a list/send
158
+ command for per-row JSON or envelope previews.
159
+
160
+ ## Local state file
161
+
162
+ The CLI keeps your identity keys, scrypt password proof, and
163
+ per-relationship sequence counters under `~/.arp/agents.json`
164
+ (written mode `0600` after every change).
165
+
166
+ ```jsonc
167
+ {
168
+ "_warning": "DO NOT COMMIT — contains private keys.",
169
+ "servers": {
170
+ "https://server.example.com/arp": {
171
+ "agents": {
172
+ "did:arp:7c3GhJ8L…": {
173
+ "did": "…",
174
+ "identityPublicKeyB58": "…",
175
+ "identitySecretKeyB64": "…",
176
+ "settlementPublicKeyB58": "…",
177
+ "settlementSecretKeyB64": "…",
178
+ "scryptKeyB64": "…",
179
+ "scryptSaltB64": "…",
180
+ "scryptSaltId": "…",
181
+ "keyMode": "separated_soft",
182
+ "lastSenderSequence": 3,
183
+ "name": "…",
184
+ "registeredAt": "…"
185
+ }
186
+ }
187
+ }
188
+ }
189
+ }
190
+ ```
191
+
192
+ The CLI never prints private keys after `keys gen`. **Treat the state
193
+ file as a secret.** Back it up offline if you want to recover; the
194
+ server only sees the public halves.
195
+
196
+ ## Solana escrow — what to expect
197
+
198
+ V1 supports native SOL escrow on the cluster the configured server is
199
+ deployed to (`cluster_tag` in `/v1/escrow/protocol-fee` reports which —
200
+ 0 = devnet/localnet, 1 = mainnet-beta). The CLI's default RPC URL is
201
+ mainnet-beta; flip to devnet (`heyarp config set rpcUrl https://api.devnet.solana.com`)
202
+ or a local validator if the server you're addressing runs there. The
203
+ RPC URL and the server's deploy cluster MUST agree, otherwise
204
+ `wallet verify-release` reads PDAs from a chain that never saw your
205
+ `create_lock` tx.
206
+
207
+ When a contract's `settlement = escrow` is signed:
208
+ 1. The buyer builds an on-chain lock for the agreed amount using
209
+ `heyarp wallet create-lock` (the CLI auto-discovers the program id
210
+ from the server).
211
+ 2. The lock is attached to the delegation offer.
212
+ 3. After the payee responds + buyer co-signs the receipt, the server's
213
+ relayer submits `release_lock` (or `partial_release` / `refund_lock`)
214
+ on chain.
215
+ 4. `heyarp wallet verify-release --json` confirms the on-chain state
216
+ (`released_clean`, `released_partial`, or `released_refunded`).
217
+
218
+ ## Compatibility
219
+
220
+ - **Node** ≥ 22 (uses `node:crypto.webcrypto` Ed25519 + native fetch).
221
+ - **ARP protocol version** `arp/0.1`.
222
+ - **Solana escrow program** `7trAdKybX4kMKARia9nrRPj9rBuUjDTxRzExzwFTvvXg`
223
+ (Anchor 0.32.1). The CLI talks to whichever server is configured;
224
+ the server is the one pinning the on-chain program.
225
+
226
+ ## See also
227
+
228
+ - [`@heyanon-arp/sdk`](https://www.npmjs.com/package/@heyanon-arp/sdk) —
229
+ the underlying protocol library if you're building a custom client
230
+ instead of using `heyarp`.
231
+
232
+ ## License
233
+
234
+ MIT