arc402-cli 0.9.19 → 0.10.0
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 +41 -2
- package/dist/abis.d.ts +1 -0
- package/dist/abis.d.ts.map +1 -1
- package/dist/abis.js +45 -14
- package/dist/abis.js.map +1 -1
- package/dist/bundler.d.ts +1 -1
- package/dist/bundler.d.ts.map +1 -1
- package/dist/bundler.js +61 -27
- package/dist/bundler.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +9 -5
- package/dist/client.js.map +1 -1
- package/dist/coinbase-smart-wallet.js +4 -1
- package/dist/coinbase-smart-wallet.js.map +1 -1
- package/dist/commands/accept.js +28 -25
- package/dist/commands/accept.js.map +1 -1
- package/dist/commands/agent-handshake.js +18 -15
- package/dist/commands/agent-handshake.js.map +1 -1
- package/dist/commands/agent.js +104 -98
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/agreements.js +98 -62
- package/dist/commands/agreements.js.map +1 -1
- package/dist/commands/arbitrator.js +81 -45
- package/dist/commands/arbitrator.js.map +1 -1
- package/dist/commands/arena-handshake.d.ts.map +1 -1
- package/dist/commands/arena-handshake.js +35 -53
- package/dist/commands/arena-handshake.js.map +1 -1
- package/dist/commands/arena.js +18 -12
- package/dist/commands/arena.js.map +1 -1
- package/dist/commands/backup.js +36 -30
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/cancel.js +18 -15
- package/dist/commands/cancel.js.map +1 -1
- package/dist/commands/channel.js +81 -45
- package/dist/commands/channel.js.map +1 -1
- package/dist/commands/coldstart.js +34 -31
- package/dist/commands/coldstart.js.map +1 -1
- package/dist/commands/compute.d.ts +14 -0
- package/dist/commands/compute.d.ts.map +1 -0
- package/dist/commands/compute.js +466 -0
- package/dist/commands/compute.js.map +1 -0
- package/dist/commands/config.js +30 -24
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/contract-interaction.js +15 -12
- package/dist/commands/contract-interaction.js.map +1 -1
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +135 -98
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/deliver.js +76 -37
- package/dist/commands/deliver.js.map +1 -1
- package/dist/commands/discover.js +27 -24
- package/dist/commands/discover.js.map +1 -1
- package/dist/commands/dispute.js +110 -104
- package/dist/commands/dispute.js.map +1 -1
- package/dist/commands/doctor.js +55 -16
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/endpoint.js +95 -56
- package/dist/commands/endpoint.js.map +1 -1
- package/dist/commands/feed.js +18 -11
- package/dist/commands/feed.js.map +1 -1
- package/dist/commands/hire.js +40 -37
- package/dist/commands/hire.js.map +1 -1
- package/dist/commands/migrate.js +33 -30
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/negotiate.d.ts.map +1 -1
- package/dist/commands/negotiate.js +36 -34
- package/dist/commands/negotiate.js.map +1 -1
- package/dist/commands/openshell.js +104 -68
- package/dist/commands/openshell.js.map +1 -1
- package/dist/commands/owner.js +20 -17
- package/dist/commands/owner.js.map +1 -1
- package/dist/commands/policy.js +43 -41
- package/dist/commands/policy.js.map +1 -1
- package/dist/commands/relay.d.ts.map +1 -1
- package/dist/commands/relay.js +51 -18
- package/dist/commands/relay.js.map +1 -1
- package/dist/commands/remediate.js +23 -20
- package/dist/commands/remediate.js.map +1 -1
- package/dist/commands/reputation.js +27 -25
- package/dist/commands/reputation.js.map +1 -1
- package/dist/commands/setup.js +104 -65
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/trust.js +20 -17
- package/dist/commands/trust.js.map +1 -1
- package/dist/commands/verify.js +21 -18
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/wallet.d.ts.map +1 -1
- package/dist/commands/wallet.js +645 -679
- package/dist/commands/wallet.js.map +1 -1
- package/dist/commands/watch.js +36 -33
- package/dist/commands/watch.js.map +1 -1
- package/dist/commands/watchtower.js +73 -37
- package/dist/commands/watchtower.js.map +1 -1
- package/dist/commands/workroom.d.ts.map +1 -1
- package/dist/commands/workroom.js +282 -143
- package/dist/commands/workroom.js.map +1 -1
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +71 -22
- package/dist/config.js.map +1 -1
- package/dist/daemon/compute-metering.d.ts +61 -0
- package/dist/daemon/compute-metering.d.ts.map +1 -0
- package/dist/daemon/compute-metering.js +299 -0
- package/dist/daemon/compute-metering.js.map +1 -0
- package/dist/daemon/compute-session.d.ts +100 -0
- package/dist/daemon/compute-session.d.ts.map +1 -0
- package/dist/daemon/compute-session.js +231 -0
- package/dist/daemon/compute-session.js.map +1 -0
- package/dist/daemon/config.d.ts +19 -1
- package/dist/daemon/config.d.ts.map +1 -1
- package/dist/daemon/config.js +90 -16
- package/dist/daemon/config.js.map +1 -1
- package/dist/daemon/credentials.d.ts +24 -0
- package/dist/daemon/credentials.d.ts.map +1 -0
- package/dist/daemon/credentials.js +80 -0
- package/dist/daemon/credentials.js.map +1 -0
- package/dist/daemon/delivery-client.d.ts +35 -0
- package/dist/daemon/delivery-client.d.ts.map +1 -0
- package/dist/daemon/delivery-client.js +231 -0
- package/dist/daemon/delivery-client.js.map +1 -0
- package/dist/daemon/file-delivery.d.ts +98 -0
- package/dist/daemon/file-delivery.d.ts.map +1 -0
- package/dist/daemon/file-delivery.js +461 -0
- package/dist/daemon/file-delivery.js.map +1 -0
- package/dist/daemon/hire-listener.d.ts +3 -3
- package/dist/daemon/hire-listener.d.ts.map +1 -1
- package/dist/daemon/hire-listener.js +47 -13
- package/dist/daemon/hire-listener.js.map +1 -1
- package/dist/daemon/index.d.ts +2 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +526 -53
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/job-lifecycle.d.ts +1 -1
- package/dist/daemon/job-lifecycle.d.ts.map +1 -1
- package/dist/daemon/job-lifecycle.js +51 -11
- package/dist/daemon/job-lifecycle.js.map +1 -1
- package/dist/daemon/notify.d.ts +1 -1
- package/dist/daemon/notify.d.ts.map +1 -1
- package/dist/daemon/notify.js +53 -19
- package/dist/daemon/notify.js.map +1 -1
- package/dist/daemon/token-metering.js +47 -8
- package/dist/daemon/token-metering.js.map +1 -1
- package/dist/daemon/userops.d.ts +2 -2
- package/dist/daemon/userops.d.ts.map +1 -1
- package/dist/daemon/userops.js +27 -23
- package/dist/daemon/userops.js.map +1 -1
- package/dist/daemon/wallet-monitor.d.ts +1 -1
- package/dist/daemon/wallet-monitor.d.ts.map +1 -1
- package/dist/daemon/wallet-monitor.js +12 -8
- package/dist/daemon/wallet-monitor.js.map +1 -1
- package/dist/daemon/worker-executor.d.ts +71 -0
- package/dist/daemon/worker-executor.d.ts.map +1 -0
- package/dist/daemon/worker-executor.js +382 -0
- package/dist/daemon/worker-executor.js.map +1 -0
- package/dist/drain-v4.js +64 -26
- package/dist/drain-v4.js.map +1 -1
- package/dist/endpoint-config.js +63 -20
- package/dist/endpoint-config.js.map +1 -1
- package/dist/endpoint-notify.d.ts.map +1 -1
- package/dist/endpoint-notify.js +49 -15
- package/dist/endpoint-notify.js.map +1 -1
- package/dist/index.js +50 -18
- package/dist/index.js.map +1 -1
- package/dist/openshell-runtime.d.ts.map +1 -1
- package/dist/openshell-runtime.js +82 -38
- package/dist/openshell-runtime.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +85 -78
- package/dist/program.js.map +1 -1
- package/dist/repl.js +31 -25
- package/dist/repl.js.map +1 -1
- package/dist/signing.js +6 -3
- package/dist/signing.js.map +1 -1
- package/dist/telegram-notify.js +40 -3
- package/dist/telegram-notify.js.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +56 -89
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/Footer.js +7 -4
- package/dist/tui/Footer.js.map +1 -1
- package/dist/tui/Header.d.ts +1 -1
- package/dist/tui/Header.d.ts.map +1 -1
- package/dist/tui/Header.js +14 -9
- package/dist/tui/Header.js.map +1 -1
- package/dist/tui/InputLine.d.ts +2 -1
- package/dist/tui/InputLine.d.ts.map +1 -1
- package/dist/tui/InputLine.js +47 -97
- package/dist/tui/InputLine.js.map +1 -1
- package/dist/tui/Viewport.d.ts +1 -2
- package/dist/tui/Viewport.d.ts.map +1 -1
- package/dist/tui/Viewport.js +26 -6
- package/dist/tui/Viewport.js.map +1 -1
- package/dist/tui/WalletConnectPairing.js +19 -16
- package/dist/tui/WalletConnectPairing.js.map +1 -1
- package/dist/tui/components/Button.js +9 -6
- package/dist/tui/components/Button.js.map +1 -1
- package/dist/tui/components/CeremonyView.js +8 -5
- package/dist/tui/components/CeremonyView.js.map +1 -1
- package/dist/tui/components/CompletionDropdown.js +9 -6
- package/dist/tui/components/CompletionDropdown.js.map +1 -1
- package/dist/tui/components/ConfirmPrompt.js +8 -5
- package/dist/tui/components/ConfirmPrompt.js.map +1 -1
- package/dist/tui/components/CustomTextInput.js +14 -11
- package/dist/tui/components/CustomTextInput.js.map +1 -1
- package/dist/tui/components/InteractiveTable.js +12 -9
- package/dist/tui/components/InteractiveTable.js.map +1 -1
- package/dist/tui/components/StepSpinner.js +13 -10
- package/dist/tui/components/StepSpinner.js.map +1 -1
- package/dist/tui/components/Toast.js +12 -8
- package/dist/tui/components/Toast.js.map +1 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +21 -28
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/useChat.js +19 -13
- package/dist/tui/useChat.js.map +1 -1
- package/dist/tui/useCommand.d.ts +2 -3
- package/dist/tui/useCommand.d.ts.map +1 -1
- package/dist/tui/useCommand.js +24 -100
- package/dist/tui/useCommand.js.map +1 -1
- package/dist/tui/useNotifications.js +8 -5
- package/dist/tui/useNotifications.js.map +1 -1
- package/dist/tui/useScroll.d.ts.map +1 -1
- package/dist/tui/useScroll.js +12 -15
- package/dist/tui/useScroll.js.map +1 -1
- package/dist/ui/banner.d.ts +0 -12
- package/dist/ui/banner.d.ts.map +1 -1
- package/dist/ui/banner.js +19 -35
- package/dist/ui/banner.js.map +1 -1
- package/dist/ui/colors.js +19 -13
- package/dist/ui/colors.js.map +1 -1
- package/dist/ui/format.js +14 -6
- package/dist/ui/format.js.map +1 -1
- package/dist/ui/qr-render.js +11 -4
- package/dist/ui/qr-render.js.map +1 -1
- package/dist/ui/rpc-fallback.js +11 -6
- package/dist/ui/rpc-fallback.js.map +1 -1
- package/dist/ui/spinner.js +12 -6
- package/dist/ui/spinner.js.map +1 -1
- package/dist/ui/tree.js +6 -3
- package/dist/ui/tree.js.map +1 -1
- package/dist/utils/format.js +41 -27
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/hash.js +42 -4
- package/dist/utils/hash.js.map +1 -1
- package/dist/utils/time.js +6 -2
- package/dist/utils/time.js.map +1 -1
- package/dist/wallet-router.d.ts +1 -1
- package/dist/wallet-router.d.ts.map +1 -1
- package/dist/wallet-router.js +19 -12
- package/dist/wallet-router.js.map +1 -1
- package/dist/walletconnect-session.d.ts +1 -1
- package/dist/walletconnect-session.d.ts.map +1 -1
- package/dist/walletconnect-session.js +11 -6
- package/dist/walletconnect-session.js.map +1 -1
- package/dist/walletconnect.d.ts +5 -6
- package/dist/walletconnect.d.ts.map +1 -1
- package/dist/walletconnect.js +35 -32
- package/dist/walletconnect.js.map +1 -1
- package/package.json +11 -10
- package/INK6-UX-SPEC.md +0 -446
- package/MIGRATION-SPEC.md +0 -108
- package/TUI-SPEC.md +0 -214
- package/scripts/authorize-machine-key.ts +0 -43
- package/scripts/drain-wallet.ts +0 -149
- package/scripts/execute-spend-only.ts +0 -81
- package/scripts/register-agent-userop.ts +0 -186
- package/src/abis.ts +0 -187
- package/src/bundler.ts +0 -235
- package/src/client.ts +0 -36
- package/src/coinbase-smart-wallet.ts +0 -51
- package/src/commands/accept.ts +0 -64
- package/src/commands/agent-handshake.ts +0 -72
- package/src/commands/agent.ts +0 -691
- package/src/commands/agreements.ts +0 -350
- package/src/commands/arbitrator.ts +0 -180
- package/src/commands/arena-handshake.ts +0 -274
- package/src/commands/arena.ts +0 -122
- package/src/commands/backup.ts +0 -117
- package/src/commands/cancel.ts +0 -35
- package/src/commands/channel.ts +0 -218
- package/src/commands/coldstart.ts +0 -165
- package/src/commands/config.ts +0 -68
- package/src/commands/contract-interaction.ts +0 -166
- package/src/commands/daemon.ts +0 -1054
- package/src/commands/deliver.ts +0 -148
- package/src/commands/discover.ts +0 -350
- package/src/commands/dispute.ts +0 -375
- package/src/commands/doctor.ts +0 -172
- package/src/commands/endpoint.ts +0 -620
- package/src/commands/feed.ts +0 -229
- package/src/commands/hire.ts +0 -245
- package/src/commands/migrate.ts +0 -177
- package/src/commands/negotiate.ts +0 -272
- package/src/commands/openshell.ts +0 -1055
- package/src/commands/owner.ts +0 -35
- package/src/commands/policy.ts +0 -263
- package/src/commands/relay.ts +0 -277
- package/src/commands/remediate.ts +0 -24
- package/src/commands/reputation.ts +0 -79
- package/src/commands/setup.ts +0 -343
- package/src/commands/trust.ts +0 -27
- package/src/commands/verify.ts +0 -91
- package/src/commands/wallet.ts +0 -3548
- package/src/commands/watch.ts +0 -220
- package/src/commands/watchtower.ts +0 -248
- package/src/commands/workroom.ts +0 -963
- package/src/config.ts +0 -220
- package/src/daemon/config.ts +0 -344
- package/src/daemon/hire-listener.ts +0 -226
- package/src/daemon/index.ts +0 -1089
- package/src/daemon/job-lifecycle.ts +0 -215
- package/src/daemon/notify.ts +0 -297
- package/src/daemon/token-metering.ts +0 -183
- package/src/daemon/userops.ts +0 -119
- package/src/daemon/wallet-monitor.ts +0 -90
- package/src/drain-v4.ts +0 -159
- package/src/endpoint-config.ts +0 -83
- package/src/endpoint-notify.ts +0 -134
- package/src/index.ts +0 -74
- package/src/openshell-runtime.ts +0 -281
- package/src/program.ts +0 -88
- package/src/repl.ts +0 -178
- package/src/signing.ts +0 -28
- package/src/telegram-notify.ts +0 -88
- package/src/tui/App.tsx +0 -263
- package/src/tui/Footer.tsx +0 -18
- package/src/tui/Header.tsx +0 -45
- package/src/tui/InputLine.tsx +0 -243
- package/src/tui/Viewport.tsx +0 -51
- package/src/tui/WalletConnectPairing.tsx +0 -114
- package/src/tui/components/Button.tsx +0 -38
- package/src/tui/components/CeremonyView.tsx +0 -39
- package/src/tui/components/CompletionDropdown.tsx +0 -56
- package/src/tui/components/ConfirmPrompt.tsx +0 -36
- package/src/tui/components/CustomTextInput.tsx +0 -132
- package/src/tui/components/InteractiveTable.tsx +0 -106
- package/src/tui/components/StepSpinner.tsx +0 -84
- package/src/tui/components/Toast.tsx +0 -59
- package/src/tui/index.tsx +0 -90
- package/src/tui/useChat.ts +0 -103
- package/src/tui/useCommand.ts +0 -238
- package/src/tui/useNotifications.ts +0 -28
- package/src/tui/useScroll.ts +0 -69
- package/src/ui/banner.ts +0 -78
- package/src/ui/colors.ts +0 -30
- package/src/ui/format.ts +0 -78
- package/src/ui/qr-render.ts +0 -92
- package/src/ui/rpc-fallback.ts +0 -59
- package/src/ui/spinner.ts +0 -56
- package/src/ui/tree.ts +0 -16
- package/src/utils/format.ts +0 -48
- package/src/utils/hash.ts +0 -5
- package/src/utils/time.ts +0 -15
- package/src/wallet-router.ts +0 -178
- package/src/walletconnect-session.ts +0 -27
- package/src/walletconnect.ts +0 -309
- package/test/time.test.js +0 -11
- package/tsconfig.json +0 -33
package/README.md
CHANGED
|
@@ -99,7 +99,21 @@ arc402 accept 42
|
|
|
99
99
|
arc402 deliver 42 --output ./my-deliverable.json
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
-
|
|
102
|
+
`deliver` uploads the file to the delivery layer, computes the keccak256 hash, and commits it on-chain in one step. Files are **private by default** — only the hash is public. The hirer downloads using a party signature.
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Upload multiple files before committing the hash
|
|
106
|
+
arc402 deliver 42 --output ./report.pdf --output ./appendix.csv
|
|
107
|
+
|
|
108
|
+
# Download delivered files (as hirer)
|
|
109
|
+
arc402 download 42 --file report.pdf --out ./downloads/
|
|
110
|
+
arc402 download 42 --all --out ./downloads/
|
|
111
|
+
|
|
112
|
+
# Verify delivery integrity against the on-chain hash
|
|
113
|
+
arc402 verify 42
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
> Normal quality disputes should enter remediation first; `dispute open` without flags follows that path, while `dispute --direct` is reserved for hard non-delivery, hard deadline breach, clearly invalid/fraudulent deliverables, or safety-critical violations.
|
|
103
117
|
>
|
|
104
118
|
> The current contract now includes an explicit onchain arbitration path plus human escalation backstop. Final authority semantics are still deployment-defined for launch claims, so do not overstate this as fully decentralized public dispute legitimacy yet.
|
|
105
119
|
|
|
@@ -141,6 +155,22 @@ arc402 deliver 42 --output ./my-deliverable.json
|
|
|
141
155
|
| `arc402 cancel <id>` | Cancel a proposed agreement (refunds escrow) |
|
|
142
156
|
| `arc402 trust <address>` | Look up current trust score and tier |
|
|
143
157
|
| `arc402 wallet status` | Show address, ETH/USDC balance, trust score |
|
|
158
|
+
| `arc402 download <id> --file <name> --out <dir>` | Download a delivered file (hirer or provider) |
|
|
159
|
+
| `arc402 download <id> --all --out <dir>` | Download all delivered files |
|
|
160
|
+
| `arc402 verify <id>` | Verify delivery hashes match the on-chain commitment |
|
|
161
|
+
| `arc402 workroom worker init` | Initialise the worker identity inside the workroom |
|
|
162
|
+
| `arc402 workroom worker set-soul <file>` | Replace the worker's SOUL.md |
|
|
163
|
+
| `arc402 workroom worker set-skills <dir>` | Mount a skills directory into the worker |
|
|
164
|
+
| `arc402 workroom worker set-knowledge <dir>` | Mount a knowledge/corpus directory |
|
|
165
|
+
| `arc402 workroom worker memory` | View accumulated learnings from completed jobs |
|
|
166
|
+
| `arc402 daemon credentials init` | Generate the credentials.toml template for non-OpenClaw setups |
|
|
167
|
+
| `arc402 compute offer` | Show GPU provider config and enable instructions |
|
|
168
|
+
| `arc402 compute discover` | Find GPU compute providers in AgentRegistry |
|
|
169
|
+
| `arc402 compute hire <provider>` | Propose a compute session on-chain (locks deposit) |
|
|
170
|
+
| `arc402 compute status [session-id]` | Check session metrics (local daemon or by ID) |
|
|
171
|
+
| `arc402 compute end <session-id>` | End a session and settle on-chain |
|
|
172
|
+
| `arc402 compute withdraw` | Withdraw settled funds from ComputeAgreement |
|
|
173
|
+
| `arc402 compute sessions` | List all compute sessions on this node |
|
|
144
174
|
|
|
145
175
|
---
|
|
146
176
|
|
|
@@ -196,7 +226,16 @@ arc402 agreement 7
|
|
|
196
226
|
| base-sepolia | `0xf2aE072BB8575c23B0efbF44bDc8188aA900cA7a` | `0x0461b2b7A1E50866962CB07326000A94009c58Ff` | `0xbbb1DA355D810E9baEF1a7D072B2132E4755976B` |
|
|
197
227
|
| base-mainnet | `0x22366D6dabb03062Bc0a5E893EfDff15D8E329b1` | `0xD5c2851B00090c92Ba7F4723FB548bb30C9B6865` | `0xC98B402CAB9156da68A87a69E3B4bf167A3CCcF6` |
|
|
198
228
|
|
|
199
|
-
|
|
229
|
+
Compute + Subscription contracts (Base Mainnet, chain 8453):
|
|
230
|
+
|
|
231
|
+
| Contract | Address |
|
|
232
|
+
|---|---|
|
|
233
|
+
| ComputeAgreement | `0x0e06afE90aAD3e0D91e217C46d98F049C2528AF7` |
|
|
234
|
+
| SubscriptionAgreement | `0xe1b6D3d0890E09582166EB450a78F6bff038CE5A` |
|
|
235
|
+
|
|
236
|
+
These are set as defaults in the CLI — no manual config required. Override with `arc402 config set computeAgreementAddress <addr>` or `arc402 config set subscriptionAgreementAddress <addr>` if needed.
|
|
237
|
+
|
|
238
|
+
> Launch note: `AgentRegistry` is the discovery directory. `ARC402RegistryV3` (`0x6EafeD4FA103D2De04DDee157e35A8e8df91B6A6`) is the current protocol registry. `ARC402RegistryV2` remains active for existing wallets.
|
|
200
239
|
|
|
201
240
|
USDC addresses:
|
|
202
241
|
- Base Sepolia: `0x036CbD53842c5426634e7929541eC2318f3dCF7e`
|
package/dist/abis.d.ts
CHANGED
|
@@ -15,5 +15,6 @@ export declare const ARC402_WALLET_GUARDIAN_ABI: readonly ["function setGuardian
|
|
|
15
15
|
export declare const ARC402_WALLET_REGISTRY_ABI: readonly ["function proposeRegistryUpdate(address newRegistry) external", "function executeRegistryUpdate() external", "function cancelRegistryUpdate() external", "function pendingRegistry() external view returns (address)", "function registryUpdateUnlockAt() external view returns (uint256)", "function registry() external view returns (address)"];
|
|
16
16
|
export declare const ARC402_WALLET_OWNER_ABI: readonly ["function setAuthorizedInterceptor(address interceptor) external", "function setVelocityLimit(uint256 limit) external", "function updatePolicy(bytes32 newPolicyId) external", "function authorizedInterceptor() external view returns (address)", "function velocityLimit() external view returns (uint256)", "function velocityWindowStart() external view returns (uint256)", "function cumulativeSpend() external view returns (uint256)", "function activePolicyId() external view returns (bytes32)"];
|
|
17
17
|
export declare const ARC402_WALLET_MACHINE_KEY_ABI: readonly ["function authorizeMachineKey(address key) external", "function revokeMachineKey(address key) external", "function authorizedMachineKeys(address key) external view returns (bool)"];
|
|
18
|
+
export declare const COMPUTE_AGREEMENT_ABI: readonly ["function proposeSession(bytes32 sessionId, address provider, uint256 ratePerHour, uint256 maxHours, bytes32 gpuSpecHash, address token) external payable", "function acceptSession(bytes32 sessionId) external", "function startSession(bytes32 sessionId) external", "function submitUsageReport(bytes32 sessionId, uint256 periodStart, uint256 periodEnd, uint256 computeMinutes, uint256 avgUtilization, bytes providerSignature, bytes32 metricsHash) external", "function endSession(bytes32 sessionId) external", "function disputeSession(bytes32 sessionId) external", "function cancelSession(bytes32 sessionId) external", "function resolveDispute(bytes32 sessionId, uint256 providerAmount, uint256 clientAmount) external", "function claimDisputeTimeout(bytes32 sessionId) external", "function withdraw(address token) external", "function getSession(bytes32 sessionId) external view returns (tuple(address client, address provider, address token, uint256 ratePerHour, uint256 maxHours, uint256 depositAmount, uint256 startedAt, uint256 endedAt, uint256 consumedMinutes, uint256 proposedAt, uint256 disputedAt, bytes32 gpuSpecHash, uint8 status))", "function calculateCost(bytes32 sessionId) external view returns (uint256)", "function getUsageReports(bytes32 sessionId) external view returns (tuple(uint256 periodStart, uint256 periodEnd, uint256 computeMinutes, uint256 avgUtilization, bytes providerSignature, bytes32 metricsHash)[])", "function pendingWithdrawals(address user, address token) external view returns (uint256)", "event SessionProposed(bytes32 indexed sessionId, address indexed client, address indexed provider, uint256 ratePerHour, uint256 maxHours, address token)", "event SessionAccepted(bytes32 indexed sessionId)", "event SessionStarted(bytes32 indexed sessionId, uint256 startedAt)", "event UsageReported(bytes32 indexed sessionId, uint256 computeMinutes, uint256 periodEnd)", "event SessionCompleted(bytes32 indexed sessionId, uint256 totalMinutes, uint256 totalPaid, uint256 refunded)", "event SessionDisputed(bytes32 indexed sessionId, address disputant)", "event SessionCancelled(bytes32 indexed sessionId)", "event DisputeResolved(bytes32 indexed sessionId, uint256 providerAmount, uint256 clientAmount)", "event Withdrawn(address indexed recipient, address indexed token, uint256 amount)"];
|
|
18
19
|
export declare const ARC402_WALLET_PASSKEY_ABI: readonly ["function setPasskey(bytes32 pubKeyX, bytes32 pubKeyY) external", "function clearPasskey() external", "function emergencyOwnerOverride(bytes32 newPubKeyX, bytes32 newPubKeyY) external", "function emergencyOwnerOverride() external", "function ownerAuth() external view returns (uint8 signerType, bytes32 pubKeyX, bytes32 pubKeyY)", "event PasskeySet(bytes32 indexed pubKeyX, bytes32 pubKeyY)"];
|
|
19
20
|
//# sourceMappingURL=abis.d.ts.map
|
package/dist/abis.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abis.d.ts","sourceRoot":"","sources":["../src/abis.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,kBAAkB,+pCAkBrB,CAAC;AAEX,eAAO,MAAM,qBAAqB,2zJA4CxB,CAAC;AAEX,eAAO,MAAM,kBAAkB,mWAOrB,CAAC;AAEX,eAAO,MAAM,SAAS,4VAMZ,CAAC;AAEX,eAAO,MAAM,kBAAkB,2SAKrB,CAAC;AAEX,eAAO,MAAM,wBAAwB,2XAO3B,CAAC;AAGX,eAAO,MAAM,4BAA4B,wRAQ/B,CAAC;AAEX,eAAO,MAAM,yBAAyB,yMAE5B,CAAC;AAGX,eAAO,MAAM,0BAA0B,snBAO7B,CAAC;AAEX,eAAO,MAAM,0BAA0B,0pBAoB7B,CAAC;AAEX,eAAO,MAAM,0BAA0B,8VAO7B,CAAC;AAEX,eAAO,MAAM,uBAAuB,ufAW1B,CAAC;AAEX,eAAO,MAAM,6BAA6B,gMAIhC,CAAC;AAEX,eAAO,MAAM,yBAAyB,oZAO5B,CAAC"}
|
|
1
|
+
{"version":3,"file":"abis.d.ts","sourceRoot":"","sources":["../src/abis.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,kBAAkB,+pCAkBrB,CAAC;AAEX,eAAO,MAAM,qBAAqB,2zJA4CxB,CAAC;AAEX,eAAO,MAAM,kBAAkB,mWAOrB,CAAC;AAEX,eAAO,MAAM,SAAS,4VAMZ,CAAC;AAEX,eAAO,MAAM,kBAAkB,2SAKrB,CAAC;AAEX,eAAO,MAAM,wBAAwB,2XAO3B,CAAC;AAGX,eAAO,MAAM,4BAA4B,wRAQ/B,CAAC;AAEX,eAAO,MAAM,yBAAyB,yMAE5B,CAAC;AAGX,eAAO,MAAM,0BAA0B,snBAO7B,CAAC;AAEX,eAAO,MAAM,0BAA0B,0pBAoB7B,CAAC;AAEX,eAAO,MAAM,0BAA0B,8VAO7B,CAAC;AAEX,eAAO,MAAM,uBAAuB,ufAW1B,CAAC;AAEX,eAAO,MAAM,6BAA6B,gMAIhC,CAAC;AAEX,eAAO,MAAM,qBAAqB,mxEA2BxB,CAAC;AAEX,eAAO,MAAM,yBAAyB,oZAO5B,CAAC"}
|
package/dist/abis.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* ABIs extracted from the ARC-402 contract sources.
|
|
3
4
|
* Source: /products/arc-402/reference/contracts/
|
|
4
5
|
*/
|
|
5
|
-
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ARC402_WALLET_PASSKEY_ABI = exports.COMPUTE_AGREEMENT_ABI = exports.ARC402_WALLET_MACHINE_KEY_ABI = exports.ARC402_WALLET_OWNER_ABI = exports.ARC402_WALLET_REGISTRY_ABI = exports.ARC402_WALLET_GUARDIAN_ABI = exports.ARC402_WALLET_PROTOCOL_ABI = exports.ARC402_WALLET_EXECUTE_ABI = exports.POLICY_ENGINE_GOVERNANCE_ABI = exports.POLICY_ENGINE_LIMITS_ABI = exports.WALLET_FACTORY_ABI = exports.ERC20_ABI = exports.TRUST_REGISTRY_ABI = exports.SERVICE_AGREEMENT_ABI = exports.AGENT_REGISTRY_ABI = void 0;
|
|
8
|
+
exports.AGENT_REGISTRY_ABI = [
|
|
6
9
|
// Registration
|
|
7
10
|
"function register(string name, string[] capabilities, string serviceType, string endpoint, string metadataURI) external",
|
|
8
11
|
"function update(string name, string[] capabilities, string serviceType, string endpoint, string metadataURI) external",
|
|
@@ -21,7 +24,7 @@ export const AGENT_REGISTRY_ABI = [
|
|
|
21
24
|
"event AgentUpdated(address indexed wallet, string name, string serviceType)",
|
|
22
25
|
"event AgentDeactivated(address indexed wallet)",
|
|
23
26
|
];
|
|
24
|
-
|
|
27
|
+
exports.SERVICE_AGREEMENT_ABI = [
|
|
25
28
|
"function propose(address provider, string serviceType, string description, uint256 price, address token, uint256 deadline, bytes32 deliverablesHash) external payable returns (uint256 agreementId)",
|
|
26
29
|
"function accept(uint256 agreementId) external",
|
|
27
30
|
"function fulfill(uint256 agreementId, bytes32 actualDeliverablesHash) external",
|
|
@@ -66,7 +69,7 @@ export const SERVICE_AGREEMENT_ABI = [
|
|
|
66
69
|
"event AgreementDisputed(uint256 indexed id, address indexed initiator, string reason)",
|
|
67
70
|
"event AgreementCancelled(uint256 indexed id, address indexed client)",
|
|
68
71
|
];
|
|
69
|
-
|
|
72
|
+
exports.TRUST_REGISTRY_ABI = [
|
|
70
73
|
"function getScore(address wallet) external view returns (uint256)",
|
|
71
74
|
"function getTrustLevel(address wallet) external view returns (string)",
|
|
72
75
|
"function initWallet(address wallet) external",
|
|
@@ -74,20 +77,20 @@ export const TRUST_REGISTRY_ABI = [
|
|
|
74
77
|
"function recordAnomaly(address wallet) external",
|
|
75
78
|
"function owner() external view returns (address)",
|
|
76
79
|
];
|
|
77
|
-
|
|
80
|
+
exports.ERC20_ABI = [
|
|
78
81
|
"function approve(address spender, uint256 amount) external returns (bool)",
|
|
79
82
|
"function allowance(address owner, address spender) external view returns (uint256)",
|
|
80
83
|
"function balanceOf(address owner) external view returns (uint256)",
|
|
81
84
|
"function decimals() external view returns (uint8)",
|
|
82
85
|
"function symbol() external view returns (string)",
|
|
83
86
|
];
|
|
84
|
-
|
|
87
|
+
exports.WALLET_FACTORY_ABI = [
|
|
85
88
|
"function createWallet(address _entryPoint) external returns (address)",
|
|
86
89
|
"function getWallets(address owner) external view returns (address[] memory)",
|
|
87
90
|
"function totalWallets() external view returns (uint256)",
|
|
88
91
|
"event WalletCreated(address indexed owner, address indexed walletAddress)",
|
|
89
92
|
];
|
|
90
|
-
|
|
93
|
+
exports.POLICY_ENGINE_LIMITS_ABI = [
|
|
91
94
|
// Auto-getters from public mappings (actual on-chain function names)
|
|
92
95
|
"function categoryLimits(address wallet, string category) external view returns (uint256)",
|
|
93
96
|
"function dailyCategoryLimit(address wallet, string category) external view returns (uint256)",
|
|
@@ -96,7 +99,7 @@ export const POLICY_ENGINE_LIMITS_ABI = [
|
|
|
96
99
|
"function setDailyLimitFor(address wallet, string category, uint256 limit) external",
|
|
97
100
|
];
|
|
98
101
|
// PolicyEngine governance functions — for onboarding ceremony
|
|
99
|
-
|
|
102
|
+
exports.POLICY_ENGINE_GOVERNANCE_ABI = [
|
|
100
103
|
// registerWallet requires msg.sender == wallet — route through wallet's executeContractCall
|
|
101
104
|
"function registerWallet(address wallet, address owner) external",
|
|
102
105
|
// enableDefiAccess: onlyWalletOwnerOrWallet — owner can call directly on PolicyEngine
|
|
@@ -105,11 +108,11 @@ export const POLICY_ENGINE_GOVERNANCE_ABI = [
|
|
|
105
108
|
"function walletOwners(address wallet) external view returns (address)",
|
|
106
109
|
"function defiAccessEnabled(address wallet) external view returns (bool)",
|
|
107
110
|
];
|
|
108
|
-
|
|
111
|
+
exports.ARC402_WALLET_EXECUTE_ABI = [
|
|
109
112
|
"function executeContractCall((address target, bytes data, uint256 value, uint256 minReturnValue, uint256 maxApprovalAmount, address approvalToken) params) external returns (bytes memory)",
|
|
110
113
|
];
|
|
111
114
|
// Direct protocol functions — all onlyOwnerOrMachineKey, never route through executeContractCall
|
|
112
|
-
|
|
115
|
+
exports.ARC402_WALLET_PROTOCOL_ABI = [
|
|
113
116
|
"function openContext(bytes32 contextId, string calldata taskType) external",
|
|
114
117
|
"function closeContext() external",
|
|
115
118
|
"function contextOpen() external view returns (bool)",
|
|
@@ -117,7 +120,7 @@ export const ARC402_WALLET_PROTOCOL_ABI = [
|
|
|
117
120
|
"function executeSpend(address payable recipient, uint256 amount, string calldata category, bytes32 attestationId) external",
|
|
118
121
|
"function executeTokenSpend(address recipient, uint256 amount, address token, string calldata category, bytes32 attestationId) external",
|
|
119
122
|
];
|
|
120
|
-
|
|
123
|
+
exports.ARC402_WALLET_GUARDIAN_ABI = [
|
|
121
124
|
// Guardian management (owner only)
|
|
122
125
|
"function setGuardian(address _guardian) external",
|
|
123
126
|
// Guardian freeze functions (guardian key only)
|
|
@@ -138,7 +141,7 @@ export const ARC402_WALLET_GUARDIAN_ABI = [
|
|
|
138
141
|
"event WalletUnfrozen(address indexed by, uint256 timestamp)",
|
|
139
142
|
"event GuardianUpdated(address indexed newGuardian)",
|
|
140
143
|
];
|
|
141
|
-
|
|
144
|
+
exports.ARC402_WALLET_REGISTRY_ABI = [
|
|
142
145
|
"function proposeRegistryUpdate(address newRegistry) external",
|
|
143
146
|
"function executeRegistryUpdate() external",
|
|
144
147
|
"function cancelRegistryUpdate() external",
|
|
@@ -146,7 +149,7 @@ export const ARC402_WALLET_REGISTRY_ABI = [
|
|
|
146
149
|
"function registryUpdateUnlockAt() external view returns (uint256)",
|
|
147
150
|
"function registry() external view returns (address)",
|
|
148
151
|
];
|
|
149
|
-
|
|
152
|
+
exports.ARC402_WALLET_OWNER_ABI = [
|
|
150
153
|
// Owner-only setters
|
|
151
154
|
"function setAuthorizedInterceptor(address interceptor) external",
|
|
152
155
|
"function setVelocityLimit(uint256 limit) external",
|
|
@@ -158,12 +161,40 @@ export const ARC402_WALLET_OWNER_ABI = [
|
|
|
158
161
|
"function cumulativeSpend() external view returns (uint256)",
|
|
159
162
|
"function activePolicyId() external view returns (bytes32)",
|
|
160
163
|
];
|
|
161
|
-
|
|
164
|
+
exports.ARC402_WALLET_MACHINE_KEY_ABI = [
|
|
162
165
|
"function authorizeMachineKey(address key) external",
|
|
163
166
|
"function revokeMachineKey(address key) external",
|
|
164
167
|
"function authorizedMachineKeys(address key) external view returns (bool)",
|
|
165
168
|
];
|
|
166
|
-
|
|
169
|
+
exports.COMPUTE_AGREEMENT_ABI = [
|
|
170
|
+
// Write methods
|
|
171
|
+
"function proposeSession(bytes32 sessionId, address provider, uint256 ratePerHour, uint256 maxHours, bytes32 gpuSpecHash, address token) external payable",
|
|
172
|
+
"function acceptSession(bytes32 sessionId) external",
|
|
173
|
+
"function startSession(bytes32 sessionId) external",
|
|
174
|
+
"function submitUsageReport(bytes32 sessionId, uint256 periodStart, uint256 periodEnd, uint256 computeMinutes, uint256 avgUtilization, bytes providerSignature, bytes32 metricsHash) external",
|
|
175
|
+
"function endSession(bytes32 sessionId) external",
|
|
176
|
+
"function disputeSession(bytes32 sessionId) external",
|
|
177
|
+
"function cancelSession(bytes32 sessionId) external",
|
|
178
|
+
"function resolveDispute(bytes32 sessionId, uint256 providerAmount, uint256 clientAmount) external",
|
|
179
|
+
"function claimDisputeTimeout(bytes32 sessionId) external",
|
|
180
|
+
"function withdraw(address token) external",
|
|
181
|
+
// Read methods
|
|
182
|
+
"function getSession(bytes32 sessionId) external view returns (tuple(address client, address provider, address token, uint256 ratePerHour, uint256 maxHours, uint256 depositAmount, uint256 startedAt, uint256 endedAt, uint256 consumedMinutes, uint256 proposedAt, uint256 disputedAt, bytes32 gpuSpecHash, uint8 status))",
|
|
183
|
+
"function calculateCost(bytes32 sessionId) external view returns (uint256)",
|
|
184
|
+
"function getUsageReports(bytes32 sessionId) external view returns (tuple(uint256 periodStart, uint256 periodEnd, uint256 computeMinutes, uint256 avgUtilization, bytes providerSignature, bytes32 metricsHash)[])",
|
|
185
|
+
"function pendingWithdrawals(address user, address token) external view returns (uint256)",
|
|
186
|
+
// Events
|
|
187
|
+
"event SessionProposed(bytes32 indexed sessionId, address indexed client, address indexed provider, uint256 ratePerHour, uint256 maxHours, address token)",
|
|
188
|
+
"event SessionAccepted(bytes32 indexed sessionId)",
|
|
189
|
+
"event SessionStarted(bytes32 indexed sessionId, uint256 startedAt)",
|
|
190
|
+
"event UsageReported(bytes32 indexed sessionId, uint256 computeMinutes, uint256 periodEnd)",
|
|
191
|
+
"event SessionCompleted(bytes32 indexed sessionId, uint256 totalMinutes, uint256 totalPaid, uint256 refunded)",
|
|
192
|
+
"event SessionDisputed(bytes32 indexed sessionId, address disputant)",
|
|
193
|
+
"event SessionCancelled(bytes32 indexed sessionId)",
|
|
194
|
+
"event DisputeResolved(bytes32 indexed sessionId, uint256 providerAmount, uint256 clientAmount)",
|
|
195
|
+
"event Withdrawn(address indexed recipient, address indexed token, uint256 amount)",
|
|
196
|
+
];
|
|
197
|
+
exports.ARC402_WALLET_PASSKEY_ABI = [
|
|
167
198
|
"function setPasskey(bytes32 pubKeyX, bytes32 pubKeyY) external",
|
|
168
199
|
"function clearPasskey() external",
|
|
169
200
|
"function emergencyOwnerOverride(bytes32 newPubKeyX, bytes32 newPubKeyY) external",
|
package/dist/abis.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abis.js","sourceRoot":"","sources":["../src/abis.ts"],"names":[],"mappings":"AAAA;;;GAGG
|
|
1
|
+
{"version":3,"file":"abis.js","sourceRoot":"","sources":["../src/abis.ts"],"names":[],"mappings":"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"}
|
package/dist/bundler.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Arc402Config } from "./config
|
|
1
|
+
import type { Arc402Config } from "./config";
|
|
2
2
|
export declare const DEFAULT_ENTRY_POINT = "0x0000000071727De22E5E9d8BAf0edAc6f37da032";
|
|
3
3
|
export declare const DEFAULT_BUNDLER_URL = "https://api.pimlico.io/v2/base/rpc";
|
|
4
4
|
export type UserOperation = {
|
package/dist/bundler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundler.d.ts","sourceRoot":"","sources":["../src/bundler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"bundler.d.ts","sourceRoot":"","sources":["../src/bundler.ts"],"names":[],"mappings":"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"}
|
package/dist/bundler.js
CHANGED
|
@@ -1,11 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.PaymasterClient = exports.BundlerClient = exports.DEFAULT_BUNDLER_URL = exports.DEFAULT_ENTRY_POINT = void 0;
|
|
37
|
+
exports.buildUserOp = buildUserOp;
|
|
38
|
+
exports.buildSponsoredUserOp = buildSponsoredUserOp;
|
|
39
|
+
const ethers_1 = require("ethers");
|
|
40
|
+
const crypto_1 = require("crypto");
|
|
41
|
+
exports.DEFAULT_ENTRY_POINT = "0x0000000071727De22E5E9d8BAf0edAc6f37da032";
|
|
42
|
+
exports.DEFAULT_BUNDLER_URL = "https://api.pimlico.io/v2/base/rpc";
|
|
43
|
+
class BundlerClient {
|
|
9
44
|
constructor(bundlerUrl, entryPointAddress, chainId) {
|
|
10
45
|
this.bundlerUrl = bundlerUrl;
|
|
11
46
|
this.entryPointAddress = entryPointAddress;
|
|
@@ -50,11 +85,9 @@ export class BundlerClient {
|
|
|
50
85
|
return estimate;
|
|
51
86
|
}
|
|
52
87
|
}
|
|
88
|
+
exports.BundlerClient = BundlerClient;
|
|
53
89
|
// ─── PaymasterClient ──────────────────────────────────────────────────────────
|
|
54
|
-
|
|
55
|
-
paymasterUrl;
|
|
56
|
-
cdpKeyName;
|
|
57
|
-
cdpPrivateKey;
|
|
90
|
+
class PaymasterClient {
|
|
58
91
|
constructor(paymasterUrl, cdpKeyName, cdpPrivateKey) {
|
|
59
92
|
this.paymasterUrl = paymasterUrl;
|
|
60
93
|
this.cdpKeyName = cdpKeyName;
|
|
@@ -63,12 +96,12 @@ export class PaymasterClient {
|
|
|
63
96
|
async buildJwt() {
|
|
64
97
|
if (!this.cdpKeyName || !this.cdpPrivateKey)
|
|
65
98
|
return null;
|
|
66
|
-
const { SignJWT, importPKCS8 } = await
|
|
99
|
+
const { SignJWT, importPKCS8 } = await Promise.resolve().then(() => __importStar(require("jose")));
|
|
67
100
|
// Convert SEC1 base64 DER or SEC1 PEM → PKCS8 PEM using Node's crypto module
|
|
68
101
|
let pkcs8Pem;
|
|
69
102
|
if (this.cdpPrivateKey.includes("-----BEGIN")) {
|
|
70
103
|
if (this.cdpPrivateKey.includes("EC PRIVATE KEY")) {
|
|
71
|
-
const key = createPrivateKey({ key: this.cdpPrivateKey, format: "pem", type: "sec1" });
|
|
104
|
+
const key = (0, crypto_1.createPrivateKey)({ key: this.cdpPrivateKey, format: "pem", type: "sec1" });
|
|
72
105
|
pkcs8Pem = key.export({ format: "pem", type: "pkcs8" });
|
|
73
106
|
}
|
|
74
107
|
else {
|
|
@@ -77,7 +110,7 @@ export class PaymasterClient {
|
|
|
77
110
|
}
|
|
78
111
|
else {
|
|
79
112
|
const der = Buffer.from(this.cdpPrivateKey, "base64");
|
|
80
|
-
const key = createPrivateKey({ key: der, format: "der", type: "sec1" });
|
|
113
|
+
const key = (0, crypto_1.createPrivateKey)({ key: der, format: "der", type: "sec1" });
|
|
81
114
|
pkcs8Pem = key.export({ format: "pem", type: "pkcs8" });
|
|
82
115
|
}
|
|
83
116
|
const privateKey = await importPKCS8(pkcs8Pem, "ES256");
|
|
@@ -122,26 +155,27 @@ export class PaymasterClient {
|
|
|
122
155
|
};
|
|
123
156
|
}
|
|
124
157
|
}
|
|
158
|
+
exports.PaymasterClient = PaymasterClient;
|
|
125
159
|
// ─── buildUserOp / buildSponsoredUserOp ───────────────────────────────────────
|
|
126
|
-
|
|
127
|
-
const provider = new ethers.JsonRpcProvider(config.rpcUrl);
|
|
160
|
+
async function buildUserOp(callData, sender, nonce, config) {
|
|
161
|
+
const provider = new ethers_1.ethers.JsonRpcProvider(config.rpcUrl);
|
|
128
162
|
const feeData = await provider.getFeeData();
|
|
129
|
-
const maxFeePerGas = feeData.maxFeePerGas ?? BigInt(
|
|
130
|
-
const maxPriorityFeePerGas = feeData.maxPriorityFeePerGas ?? BigInt(
|
|
163
|
+
const maxFeePerGas = feeData.maxFeePerGas ?? BigInt(1000000000);
|
|
164
|
+
const maxPriorityFeePerGas = feeData.maxPriorityFeePerGas ?? BigInt(100000000);
|
|
131
165
|
return {
|
|
132
166
|
sender,
|
|
133
|
-
nonce: ethers.toBeHex(nonce),
|
|
167
|
+
nonce: ethers_1.ethers.toBeHex(nonce),
|
|
134
168
|
callData,
|
|
135
|
-
callGasLimit: ethers.toBeHex(
|
|
136
|
-
verificationGasLimit: ethers.toBeHex(
|
|
137
|
-
preVerificationGas: ethers.toBeHex(
|
|
138
|
-
maxFeePerGas: ethers.toBeHex(maxFeePerGas),
|
|
139
|
-
maxPriorityFeePerGas: ethers.toBeHex(maxPriorityFeePerGas),
|
|
169
|
+
callGasLimit: ethers_1.ethers.toBeHex(300000),
|
|
170
|
+
verificationGasLimit: ethers_1.ethers.toBeHex(150000),
|
|
171
|
+
preVerificationGas: ethers_1.ethers.toBeHex(50000),
|
|
172
|
+
maxFeePerGas: ethers_1.ethers.toBeHex(maxFeePerGas),
|
|
173
|
+
maxPriorityFeePerGas: ethers_1.ethers.toBeHex(maxPriorityFeePerGas),
|
|
140
174
|
signature: "0x",
|
|
141
175
|
};
|
|
142
176
|
}
|
|
143
|
-
|
|
177
|
+
async function buildSponsoredUserOp(callData, sender, nonce, config, paymasterClient) {
|
|
144
178
|
const userOp = await buildUserOp(callData, sender, nonce, config);
|
|
145
|
-
return paymasterClient.sponsorUserOperation(userOp, DEFAULT_ENTRY_POINT);
|
|
179
|
+
return paymasterClient.sponsorUserOperation(userOp, exports.DEFAULT_ENTRY_POINT);
|
|
146
180
|
}
|
|
147
181
|
//# sourceMappingURL=bundler.js.map
|
package/dist/bundler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundler.js","sourceRoot":"","sources":["../src/bundler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bundler.js","sourceRoot":"","sources":["../src/bundler.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAY3E;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAUvF"}
|
package/dist/client.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getClient = getClient;
|
|
4
|
+
exports.requireSigner = requireSigner;
|
|
5
|
+
const ethers_1 = require("ethers");
|
|
6
|
+
async function getClient(config) {
|
|
7
|
+
const provider = new ethers_1.ethers.JsonRpcProvider(config.rpcUrl);
|
|
4
8
|
if (config.privateKey) {
|
|
5
|
-
const signer = new ethers.Wallet(config.privateKey, provider);
|
|
9
|
+
const signer = new ethers_1.ethers.Wallet(config.privateKey, provider);
|
|
6
10
|
const address = await signer.getAddress();
|
|
7
11
|
return { provider, signer, address };
|
|
8
12
|
}
|
|
@@ -10,7 +14,7 @@ export async function getClient(config) {
|
|
|
10
14
|
const address = config.walletContractAddress ?? null;
|
|
11
15
|
return { provider, signer: null, address };
|
|
12
16
|
}
|
|
13
|
-
|
|
17
|
+
async function requireSigner(config) {
|
|
14
18
|
const { provider, signer } = await getClient(config);
|
|
15
19
|
if (!signer) {
|
|
16
20
|
console.error("No private key configured. Run `arc402 config init` and provide a private key.");
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;AASA,8BAYC;AAED,sCAYC;AAnCD,mCAAgC;AASzB,KAAK,UAAU,SAAS,CAAC,MAAoB;IAClD,MAAM,QAAQ,GAAG,IAAI,eAAM,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE3D,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACvC,CAAC;IAED,sEAAsE;IACtE,MAAM,OAAO,GAAG,MAAM,CAAC,qBAAqB,IAAI,IAAI,CAAC;IACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC7C,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,MAAoB;IAEpB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CACX,gFAAgF,CACjF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACvC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* coinbase-smart-wallet.ts
|
|
3
4
|
*
|
|
@@ -17,7 +18,9 @@
|
|
|
17
18
|
* - The interface matches requestPhoneWalletSignature() so the caller in
|
|
18
19
|
* wallet.ts requires zero changes once a real implementation lands.
|
|
19
20
|
*/
|
|
20
|
-
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.requestCoinbaseSmartWalletSignature = requestCoinbaseSmartWalletSignature;
|
|
23
|
+
async function requestCoinbaseSmartWalletSignature(chainId, buildTx, prompt) {
|
|
21
24
|
console.log(`\n${prompt}`);
|
|
22
25
|
console.log("─────────────────────────────────────────────────────────");
|
|
23
26
|
console.log("Connect your Base Smart Wallet:\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coinbase-smart-wallet.js","sourceRoot":"","sources":["../src/coinbase-smart-wallet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG
|
|
1
|
+
{"version":3,"file":"coinbase-smart-wallet.js","sourceRoot":"","sources":["../src/coinbase-smart-wallet.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;AAKH,kFA2BC;AA3BM,KAAK,UAAU,mCAAmC,CACvD,OAAe,EACf,OAA0E,EAC1E,MAAc;IAEd,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CACT,kFAAkF,CACnF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,mEAAmE;QACjE,iEAAiE;QACjE,wEAAwE,CAC3E,CAAC;IACF,OAAO,CAAC,GAAG,CACT,8DAA8D,CAC/D,CAAC;IACF,OAAO,CAAC,GAAG,CACT,yFAAyF;QACvF,6BAA6B,CAChC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEhB,iFAAiF;IACjF,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACrC,CAAC"}
|
package/dist/commands/accept.js
CHANGED
|
@@ -1,35 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerAcceptCommand = registerAcceptCommand;
|
|
4
|
+
const sdk_1 = require("@arc402/sdk");
|
|
5
|
+
const ethers_1 = require("ethers");
|
|
6
|
+
const config_1 = require("../config");
|
|
7
|
+
const client_1 = require("../client");
|
|
8
|
+
const wallet_router_1 = require("../wallet-router");
|
|
9
|
+
const abis_1 = require("../abis");
|
|
10
|
+
const endpoint_notify_1 = require("../endpoint-notify");
|
|
11
|
+
const colors_1 = require("../ui/colors");
|
|
12
|
+
const spinner_1 = require("../ui/spinner");
|
|
13
|
+
function registerAcceptCommand(program) {
|
|
11
14
|
program.command("accept <id>").description("Provider accepts a proposed agreement").action(async (id) => {
|
|
12
|
-
const config = loadConfig();
|
|
15
|
+
const config = (0, config_1.loadConfig)();
|
|
13
16
|
if (!config.serviceAgreementAddress)
|
|
14
17
|
throw new Error("serviceAgreementAddress missing in config");
|
|
15
|
-
const { signer, address: signerAddress } = await requireSigner(config);
|
|
16
|
-
printSenderInfo(config);
|
|
18
|
+
const { signer, address: signerAddress } = await (0, client_1.requireSigner)(config);
|
|
19
|
+
(0, wallet_router_1.printSenderInfo)(config);
|
|
17
20
|
// Read agreement to get client address for endpoint notification
|
|
18
21
|
let clientAddress = "";
|
|
19
22
|
try {
|
|
20
|
-
const prefProvider = new ethers.JsonRpcProvider(config.rpcUrl);
|
|
21
|
-
const saContract = new ethers.Contract(config.serviceAgreementAddress, ["function getAgreement(uint256 id) external view returns (tuple(uint256 id, address client, address provider, string serviceType, string description, uint256 price, address token, uint256 deadline, bytes32 deliverablesHash, uint8 status, uint256 createdAt, uint256 resolvedAt, uint256 verifyWindowEnd, bytes32 committedHash))"], prefProvider);
|
|
23
|
+
const prefProvider = new ethers_1.ethers.JsonRpcProvider(config.rpcUrl);
|
|
24
|
+
const saContract = new ethers_1.ethers.Contract(config.serviceAgreementAddress, ["function getAgreement(uint256 id) external view returns (tuple(uint256 id, address client, address provider, string serviceType, string description, uint256 price, address token, uint256 deadline, bytes32 deliverablesHash, uint8 status, uint256 createdAt, uint256 resolvedAt, uint256 verifyWindowEnd, bytes32 committedHash))"], prefProvider);
|
|
22
25
|
const ag = await saContract.getAgreement(BigInt(id));
|
|
23
26
|
clientAddress = String(ag.client ?? "");
|
|
24
27
|
}
|
|
25
28
|
catch { /* non-fatal */ }
|
|
26
|
-
const spinner = startSpinner("Submitting transaction...");
|
|
29
|
+
const spinner = (0, spinner_1.startSpinner)("Submitting transaction...");
|
|
27
30
|
try {
|
|
28
31
|
if (config.walletContractAddress) {
|
|
29
|
-
await executeContractWriteViaWallet(config.walletContractAddress, signer, config.serviceAgreementAddress, SERVICE_AGREEMENT_ABI, "accept", [BigInt(id)]);
|
|
32
|
+
await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, config.serviceAgreementAddress, abis_1.SERVICE_AGREEMENT_ABI, "accept", [BigInt(id)]);
|
|
30
33
|
}
|
|
31
34
|
else {
|
|
32
|
-
const client = new ServiceAgreementClient(config.serviceAgreementAddress, signer);
|
|
35
|
+
const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, signer);
|
|
33
36
|
await client.accept(BigInt(id));
|
|
34
37
|
}
|
|
35
38
|
spinner.succeed();
|
|
@@ -38,19 +41,19 @@ export function registerAcceptCommand(program) {
|
|
|
38
41
|
spinner.fail();
|
|
39
42
|
throw err;
|
|
40
43
|
}
|
|
41
|
-
console.log(' ' + c.success + c.white(` Accepted — agreement #${id}`));
|
|
44
|
+
console.log(' ' + colors_1.c.success + colors_1.c.white(` Accepted — agreement #${id}`));
|
|
42
45
|
// Notify client's HTTP endpoint (non-blocking)
|
|
43
46
|
if (clientAddress) {
|
|
44
47
|
try {
|
|
45
|
-
const notifyProvider = new ethers.JsonRpcProvider(config.rpcUrl);
|
|
46
|
-
const registryAddress = config.agentRegistryV2Address ?? config.agentRegistryAddress ?? DEFAULT_REGISTRY_ADDRESS;
|
|
47
|
-
const endpoint = await resolveAgentEndpoint(clientAddress, notifyProvider, registryAddress);
|
|
48
|
+
const notifyProvider = new ethers_1.ethers.JsonRpcProvider(config.rpcUrl);
|
|
49
|
+
const registryAddress = config.agentRegistryV2Address ?? config.agentRegistryAddress ?? endpoint_notify_1.DEFAULT_REGISTRY_ADDRESS;
|
|
50
|
+
const endpoint = await (0, endpoint_notify_1.resolveAgentEndpoint)(clientAddress, notifyProvider, registryAddress);
|
|
48
51
|
const payload = { agreementId: id, from: signerAddress };
|
|
49
|
-
await notifyAgent(endpoint, "/hire/accepted", payload);
|
|
50
|
-
await notifyAgent(endpoint, "/delivery/accepted", payload);
|
|
52
|
+
await (0, endpoint_notify_1.notifyAgent)(endpoint, "/hire/accepted", payload);
|
|
53
|
+
await (0, endpoint_notify_1.notifyAgent)(endpoint, "/delivery/accepted", payload);
|
|
51
54
|
}
|
|
52
55
|
catch (err) {
|
|
53
|
-
console.warn(' ' + c.warning + c.white(` Could not notify client endpoint: ${err instanceof Error ? err.message : String(err)}`));
|
|
56
|
+
console.warn(' ' + colors_1.c.warning + colors_1.c.white(` Could not notify client endpoint: ${err instanceof Error ? err.message : String(err)}`));
|
|
54
57
|
}
|
|
55
58
|
}
|
|
56
59
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accept.js","sourceRoot":"","sources":["../../src/commands/accept.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"accept.js","sourceRoot":"","sources":["../../src/commands/accept.ts"],"names":[],"mappings":"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"}
|