arc402-cli 1.0.0-rc.1 → 1.0.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.
Files changed (253) hide show
  1. package/README.md +41 -2
  2. package/dist/abis.d.ts +1 -0
  3. package/dist/abis.d.ts.map +1 -1
  4. package/dist/abis.js +29 -1
  5. package/dist/abis.js.map +1 -1
  6. package/dist/commands/backup.d.ts +3 -0
  7. package/dist/commands/backup.d.ts.map +1 -0
  8. package/dist/commands/backup.js +106 -0
  9. package/dist/commands/backup.js.map +1 -0
  10. package/dist/commands/compute.d.ts +14 -0
  11. package/dist/commands/compute.d.ts.map +1 -0
  12. package/dist/commands/compute.js +466 -0
  13. package/dist/commands/compute.js.map +1 -0
  14. package/dist/commands/config.d.ts.map +1 -1
  15. package/dist/commands/config.js +11 -1
  16. package/dist/commands/config.js.map +1 -1
  17. package/dist/commands/daemon.d.ts.map +1 -1
  18. package/dist/commands/daemon.js +67 -0
  19. package/dist/commands/daemon.js.map +1 -1
  20. package/dist/commands/discover.d.ts.map +1 -1
  21. package/dist/commands/discover.js +60 -15
  22. package/dist/commands/discover.js.map +1 -1
  23. package/dist/commands/doctor.d.ts +3 -0
  24. package/dist/commands/doctor.d.ts.map +1 -0
  25. package/dist/commands/doctor.js +205 -0
  26. package/dist/commands/doctor.js.map +1 -0
  27. package/dist/commands/wallet.d.ts.map +1 -1
  28. package/dist/commands/wallet.js +299 -65
  29. package/dist/commands/wallet.js.map +1 -1
  30. package/dist/commands/watch.d.ts.map +1 -1
  31. package/dist/commands/watch.js +146 -9
  32. package/dist/commands/watch.js.map +1 -1
  33. package/dist/commands/workroom.d.ts.map +1 -1
  34. package/dist/commands/workroom.js +112 -6
  35. package/dist/commands/workroom.js.map +1 -1
  36. package/dist/config.d.ts +12 -0
  37. package/dist/config.d.ts.map +1 -1
  38. package/dist/config.js +41 -4
  39. package/dist/config.js.map +1 -1
  40. package/dist/daemon/compute-metering.d.ts +61 -0
  41. package/dist/daemon/compute-metering.d.ts.map +1 -0
  42. package/dist/daemon/compute-metering.js +299 -0
  43. package/dist/daemon/compute-metering.js.map +1 -0
  44. package/dist/daemon/compute-session.d.ts +100 -0
  45. package/dist/daemon/compute-session.d.ts.map +1 -0
  46. package/dist/daemon/compute-session.js +231 -0
  47. package/dist/daemon/compute-session.js.map +1 -0
  48. package/dist/daemon/config.d.ts +33 -1
  49. package/dist/daemon/config.d.ts.map +1 -1
  50. package/dist/daemon/config.js +69 -0
  51. package/dist/daemon/config.js.map +1 -1
  52. package/dist/daemon/credentials.d.ts +24 -0
  53. package/dist/daemon/credentials.d.ts.map +1 -0
  54. package/dist/daemon/credentials.js +80 -0
  55. package/dist/daemon/credentials.js.map +1 -0
  56. package/dist/daemon/delivery-client.d.ts +35 -0
  57. package/dist/daemon/delivery-client.d.ts.map +1 -0
  58. package/dist/daemon/delivery-client.js +231 -0
  59. package/dist/daemon/delivery-client.js.map +1 -0
  60. package/dist/daemon/file-delivery.d.ts +98 -0
  61. package/dist/daemon/file-delivery.d.ts.map +1 -0
  62. package/dist/daemon/file-delivery.js +461 -0
  63. package/dist/daemon/file-delivery.js.map +1 -0
  64. package/dist/daemon/index.d.ts +1 -0
  65. package/dist/daemon/index.d.ts.map +1 -1
  66. package/dist/daemon/index.js +793 -227
  67. package/dist/daemon/index.js.map +1 -1
  68. package/dist/daemon/notify.d.ts +35 -6
  69. package/dist/daemon/notify.d.ts.map +1 -1
  70. package/dist/daemon/notify.js +176 -48
  71. package/dist/daemon/notify.js.map +1 -1
  72. package/dist/daemon/worker-executor.d.ts +71 -0
  73. package/dist/daemon/worker-executor.d.ts.map +1 -0
  74. package/dist/daemon/worker-executor.js +382 -0
  75. package/dist/daemon/worker-executor.js.map +1 -0
  76. package/dist/drain-v4.js +2 -2
  77. package/dist/drain-v4.js.map +1 -1
  78. package/dist/endpoint-notify.d.ts +9 -1
  79. package/dist/endpoint-notify.d.ts.map +1 -1
  80. package/dist/endpoint-notify.js +116 -3
  81. package/dist/endpoint-notify.js.map +1 -1
  82. package/dist/index.js +81 -1
  83. package/dist/index.js.map +1 -1
  84. package/dist/program.d.ts.map +1 -1
  85. package/dist/program.js +6 -0
  86. package/dist/program.js.map +1 -1
  87. package/dist/repl.d.ts.map +1 -1
  88. package/dist/repl.js +69 -486
  89. package/dist/repl.js.map +1 -1
  90. package/dist/tui/App.d.ts +12 -0
  91. package/dist/tui/App.d.ts.map +1 -0
  92. package/dist/tui/App.js +154 -0
  93. package/dist/tui/App.js.map +1 -0
  94. package/dist/tui/Footer.d.ts +11 -0
  95. package/dist/tui/Footer.d.ts.map +1 -0
  96. package/dist/tui/Footer.js +13 -0
  97. package/dist/tui/Footer.js.map +1 -0
  98. package/dist/tui/Header.d.ts +14 -0
  99. package/dist/tui/Header.d.ts.map +1 -0
  100. package/dist/tui/Header.js +19 -0
  101. package/dist/tui/Header.js.map +1 -0
  102. package/dist/tui/InputLine.d.ts +11 -0
  103. package/dist/tui/InputLine.d.ts.map +1 -0
  104. package/dist/tui/InputLine.js +145 -0
  105. package/dist/tui/InputLine.js.map +1 -0
  106. package/dist/tui/Viewport.d.ts +14 -0
  107. package/dist/tui/Viewport.d.ts.map +1 -0
  108. package/dist/tui/Viewport.js +48 -0
  109. package/dist/tui/Viewport.js.map +1 -0
  110. package/dist/tui/WalletConnectPairing.d.ts +23 -0
  111. package/dist/tui/WalletConnectPairing.d.ts.map +1 -0
  112. package/dist/tui/WalletConnectPairing.js +61 -0
  113. package/dist/tui/WalletConnectPairing.js.map +1 -0
  114. package/dist/tui/components/Button.d.ts +7 -0
  115. package/dist/tui/components/Button.d.ts.map +1 -0
  116. package/dist/tui/components/Button.js +21 -0
  117. package/dist/tui/components/Button.js.map +1 -0
  118. package/dist/tui/components/CeremonyView.d.ts +13 -0
  119. package/dist/tui/components/CeremonyView.d.ts.map +1 -0
  120. package/dist/tui/components/CeremonyView.js +10 -0
  121. package/dist/tui/components/CeremonyView.js.map +1 -0
  122. package/dist/tui/components/CompletionDropdown.d.ts +7 -0
  123. package/dist/tui/components/CompletionDropdown.d.ts.map +1 -0
  124. package/dist/tui/components/CompletionDropdown.js +23 -0
  125. package/dist/tui/components/CompletionDropdown.js.map +1 -0
  126. package/dist/tui/components/ConfirmPrompt.d.ts +9 -0
  127. package/dist/tui/components/ConfirmPrompt.d.ts.map +1 -0
  128. package/dist/tui/components/ConfirmPrompt.js +10 -0
  129. package/dist/tui/components/ConfirmPrompt.js.map +1 -0
  130. package/dist/tui/components/CustomTextInput.d.ts +15 -0
  131. package/dist/tui/components/CustomTextInput.d.ts.map +1 -0
  132. package/dist/tui/components/CustomTextInput.js +99 -0
  133. package/dist/tui/components/CustomTextInput.js.map +1 -0
  134. package/dist/tui/components/InteractiveTable.d.ts +14 -0
  135. package/dist/tui/components/InteractiveTable.d.ts.map +1 -0
  136. package/dist/tui/components/InteractiveTable.js +61 -0
  137. package/dist/tui/components/InteractiveTable.js.map +1 -0
  138. package/dist/tui/components/StepSpinner.d.ts +11 -0
  139. package/dist/tui/components/StepSpinner.d.ts.map +1 -0
  140. package/dist/tui/components/StepSpinner.js +32 -0
  141. package/dist/tui/components/StepSpinner.js.map +1 -0
  142. package/dist/tui/components/Toast.d.ts +18 -0
  143. package/dist/tui/components/Toast.d.ts.map +1 -0
  144. package/dist/tui/components/Toast.js +29 -0
  145. package/dist/tui/components/Toast.js.map +1 -0
  146. package/dist/tui/index.d.ts +2 -0
  147. package/dist/tui/index.d.ts.map +1 -0
  148. package/dist/tui/index.js +55 -0
  149. package/dist/tui/index.js.map +1 -0
  150. package/dist/tui/useChat.d.ts +11 -0
  151. package/dist/tui/useChat.d.ts.map +1 -0
  152. package/dist/tui/useChat.js +91 -0
  153. package/dist/tui/useChat.js.map +1 -0
  154. package/dist/tui/useCommand.d.ts +12 -0
  155. package/dist/tui/useCommand.d.ts.map +1 -0
  156. package/dist/tui/useCommand.js +137 -0
  157. package/dist/tui/useCommand.js.map +1 -0
  158. package/dist/tui/useNotifications.d.ts +9 -0
  159. package/dist/tui/useNotifications.d.ts.map +1 -0
  160. package/dist/tui/useNotifications.js +17 -0
  161. package/dist/tui/useNotifications.js.map +1 -0
  162. package/dist/tui/useScroll.d.ts +17 -0
  163. package/dist/tui/useScroll.d.ts.map +1 -0
  164. package/dist/tui/useScroll.js +46 -0
  165. package/dist/tui/useScroll.js.map +1 -0
  166. package/dist/ui/format.d.ts.map +1 -1
  167. package/dist/ui/format.js +2 -0
  168. package/dist/ui/format.js.map +1 -1
  169. package/dist/ui/qr-render.d.ts +25 -0
  170. package/dist/ui/qr-render.d.ts.map +1 -0
  171. package/dist/ui/qr-render.js +90 -0
  172. package/dist/ui/qr-render.js.map +1 -0
  173. package/dist/ui/rpc-fallback.d.ts +11 -0
  174. package/dist/ui/rpc-fallback.d.ts.map +1 -0
  175. package/dist/ui/rpc-fallback.js +58 -0
  176. package/dist/ui/rpc-fallback.js.map +1 -0
  177. package/dist/walletconnect.d.ts +4 -0
  178. package/dist/walletconnect.d.ts.map +1 -1
  179. package/dist/walletconnect.js.map +1 -1
  180. package/package.json +10 -2
  181. package/scripts/authorize-machine-key.ts +0 -43
  182. package/scripts/drain-wallet.ts +0 -149
  183. package/scripts/execute-spend-only.ts +0 -81
  184. package/scripts/register-agent-userop.ts +0 -186
  185. package/src/abis.ts +0 -187
  186. package/src/bundler.ts +0 -235
  187. package/src/client.ts +0 -36
  188. package/src/coinbase-smart-wallet.ts +0 -51
  189. package/src/commands/accept.ts +0 -64
  190. package/src/commands/agent-handshake.ts +0 -72
  191. package/src/commands/agent.ts +0 -691
  192. package/src/commands/agreements.ts +0 -350
  193. package/src/commands/arbitrator.ts +0 -180
  194. package/src/commands/arena-handshake.ts +0 -257
  195. package/src/commands/arena.ts +0 -122
  196. package/src/commands/cancel.ts +0 -35
  197. package/src/commands/channel.ts +0 -218
  198. package/src/commands/coldstart.ts +0 -165
  199. package/src/commands/config.ts +0 -58
  200. package/src/commands/contract-interaction.ts +0 -166
  201. package/src/commands/daemon.ts +0 -978
  202. package/src/commands/deliver.ts +0 -148
  203. package/src/commands/discover.ts +0 -297
  204. package/src/commands/dispute.ts +0 -375
  205. package/src/commands/endpoint.ts +0 -620
  206. package/src/commands/feed.ts +0 -229
  207. package/src/commands/hire.ts +0 -245
  208. package/src/commands/migrate.ts +0 -177
  209. package/src/commands/negotiate.ts +0 -271
  210. package/src/commands/openshell.ts +0 -1055
  211. package/src/commands/owner.ts +0 -35
  212. package/src/commands/policy.ts +0 -263
  213. package/src/commands/relay.ts +0 -273
  214. package/src/commands/remediate.ts +0 -24
  215. package/src/commands/reputation.ts +0 -79
  216. package/src/commands/setup.ts +0 -343
  217. package/src/commands/trust.ts +0 -27
  218. package/src/commands/verify.ts +0 -91
  219. package/src/commands/wallet.ts +0 -3280
  220. package/src/commands/watch.ts +0 -23
  221. package/src/commands/watchtower.ts +0 -248
  222. package/src/commands/workroom.ts +0 -959
  223. package/src/config.ts +0 -174
  224. package/src/daemon/config.ts +0 -308
  225. package/src/daemon/hire-listener.ts +0 -226
  226. package/src/daemon/index.ts +0 -955
  227. package/src/daemon/job-lifecycle.ts +0 -215
  228. package/src/daemon/notify.ts +0 -157
  229. package/src/daemon/token-metering.ts +0 -183
  230. package/src/daemon/userops.ts +0 -119
  231. package/src/daemon/wallet-monitor.ts +0 -90
  232. package/src/drain-v4.ts +0 -159
  233. package/src/endpoint-config.ts +0 -83
  234. package/src/endpoint-notify.ts +0 -46
  235. package/src/index.ts +0 -26
  236. package/src/openshell-runtime.ts +0 -277
  237. package/src/program.ts +0 -83
  238. package/src/repl.ts +0 -680
  239. package/src/signing.ts +0 -28
  240. package/src/telegram-notify.ts +0 -88
  241. package/src/ui/banner.ts +0 -51
  242. package/src/ui/colors.ts +0 -30
  243. package/src/ui/format.ts +0 -77
  244. package/src/ui/spinner.ts +0 -56
  245. package/src/ui/tree.ts +0 -16
  246. package/src/utils/format.ts +0 -48
  247. package/src/utils/hash.ts +0 -5
  248. package/src/utils/time.ts +0 -15
  249. package/src/wallet-router.ts +0 -178
  250. package/src/walletconnect-session.ts +0 -27
  251. package/src/walletconnect.ts +0 -294
  252. package/test/time.test.js +0 -11
  253. package/tsconfig.json +0 -19
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
- > `deliver` commits the deliverable and starts the review/remediation/dispute path. 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.
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
- > Launch note: `AgentRegistry` is the discovery directory. `ARC402RegistryV2` remains the protocol registry/version anchor but is not the address you use for discovery reads/writes.
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
@@ -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
@@ -4,7 +4,7 @@
4
4
  * Source: /products/arc-402/reference/contracts/
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ARC402_WALLET_PASSKEY_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;
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
8
  exports.AGENT_REGISTRY_ABI = [
9
9
  // Registration
10
10
  "function register(string name, string[] capabilities, string serviceType, string endpoint, string metadataURI) external",
@@ -166,6 +166,34 @@ exports.ARC402_WALLET_MACHINE_KEY_ABI = [
166
166
  "function revokeMachineKey(address key) external",
167
167
  "function authorizedMachineKeys(address key) external view returns (bool)",
168
168
  ];
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
+ ];
169
197
  exports.ARC402_WALLET_PASSKEY_ABI = [
170
198
  "function setPasskey(bytes32 pubKeyX, bytes32 pubKeyY) external",
171
199
  "function clearPasskey() external",
package/dist/abis.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"abis.js","sourceRoot":"","sources":["../src/abis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abis.js","sourceRoot":"","sources":["../src/abis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerBackupCommand(program: Command): void;
3
+ //# sourceMappingURL=backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0F5D"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerBackupCommand = registerBackupCommand;
7
+ const child_process_1 = require("child_process");
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const os_1 = __importDefault(require("os"));
11
+ const colors_1 = require("../ui/colors");
12
+ const ARC402_DIR = path_1.default.join(os_1.default.homedir(), ".arc402");
13
+ // Files/patterns to exclude from backup
14
+ const EXCLUDE_PATTERNS = [
15
+ "daemon.db",
16
+ "daemon.log",
17
+ "daemon.pid",
18
+ "daemon.sock",
19
+ "repl_history",
20
+ ];
21
+ function todayStr() {
22
+ const d = new Date();
23
+ const y = d.getFullYear();
24
+ const m = (d.getMonth() + 1).toString().padStart(2, "0");
25
+ const day = d.getDate().toString().padStart(2, "0");
26
+ return `${y}-${m}-${day}`;
27
+ }
28
+ function registerBackupCommand(program) {
29
+ // ── backup ─────────────────────────────────────────────────────────────────
30
+ program
31
+ .command("backup")
32
+ .description("Backup ~/.arc402/ config, keys, and wallet storage to a tar.gz archive")
33
+ .option("--output <path>", "Output file path (default: arc402-backup-YYYY-MM-DD.tar.gz)")
34
+ .action((opts) => {
35
+ if (!fs_1.default.existsSync(ARC402_DIR)) {
36
+ console.error(` ${colors_1.c.failure} No ~/.arc402/ directory found. Nothing to back up.`);
37
+ process.exit(1);
38
+ }
39
+ const outFile = opts.output ?? `arc402-backup-${todayStr()}.tar.gz`;
40
+ const absOut = path_1.default.isAbsolute(outFile) ? outFile : path_1.default.join(process.cwd(), outFile);
41
+ // Build --exclude flags
42
+ const excludeFlags = EXCLUDE_PATTERNS.map((p) => `--exclude='.arc402/${p}'`).join(" ");
43
+ try {
44
+ (0, child_process_1.execSync)(`tar -czf "${absOut}" ${excludeFlags} -C "${os_1.default.homedir()}" .arc402`, { stdio: "pipe" });
45
+ }
46
+ catch (err) {
47
+ const msg = err instanceof Error ? err.message : String(err);
48
+ console.error(` ${colors_1.c.failure} Backup failed: ${msg}`);
49
+ process.exit(1);
50
+ }
51
+ // Verify the file was created
52
+ if (!fs_1.default.existsSync(absOut)) {
53
+ console.error(` ${colors_1.c.failure} Archive not found after tar completed.`);
54
+ process.exit(1);
55
+ }
56
+ const sizeBytes = fs_1.default.statSync(absOut).size;
57
+ const sizeStr = sizeBytes < 1024
58
+ ? `${sizeBytes} B`
59
+ : sizeBytes < 1024 * 1024
60
+ ? `${(sizeBytes / 1024).toFixed(1)} KB`
61
+ : `${(sizeBytes / (1024 * 1024)).toFixed(2)} MB`;
62
+ console.log(` ${colors_1.c.success} Backup saved to ${colors_1.c.white(path_1.default.basename(absOut))} ${colors_1.c.dim(`(${sizeStr})`)}`);
63
+ });
64
+ // ── restore ────────────────────────────────────────────────────────────────
65
+ program
66
+ .command("restore")
67
+ .description("Restore ~/.arc402/ from a backup archive")
68
+ .argument("<archive>", "Path to arc402-backup-*.tar.gz")
69
+ .action((archive) => {
70
+ const absArchive = path_1.default.isAbsolute(archive) ? archive : path_1.default.join(process.cwd(), archive);
71
+ if (!fs_1.default.existsSync(absArchive)) {
72
+ console.error(` ${colors_1.c.failure} Archive not found: ${absArchive}`);
73
+ process.exit(1);
74
+ }
75
+ // Warn if ~/.arc402/ already exists
76
+ if (fs_1.default.existsSync(ARC402_DIR)) {
77
+ const existing = fs_1.default.readdirSync(ARC402_DIR);
78
+ if (existing.length > 0) {
79
+ console.warn(` ${colors_1.c.warning} Existing ~/.arc402/ has ${existing.length} file(s) — merging (existing files take precedence for conflicts).`);
80
+ }
81
+ }
82
+ try {
83
+ // Extract to home dir — tar archive has .arc402/ as the root entry
84
+ (0, child_process_1.execSync)(`tar -xzf "${absArchive}" -C "${os_1.default.homedir()}"`, { stdio: "pipe" });
85
+ }
86
+ catch (err) {
87
+ const msg = err instanceof Error ? err.message : String(err);
88
+ console.error(` ${colors_1.c.failure} Restore failed: ${msg}`);
89
+ process.exit(1);
90
+ }
91
+ // Verify config.json is present
92
+ const configPath = path_1.default.join(ARC402_DIR, "config.json");
93
+ if (!fs_1.default.existsSync(configPath)) {
94
+ console.error(` ${colors_1.c.failure} config.json not found after restore — archive may be incomplete.`);
95
+ process.exit(1);
96
+ }
97
+ // Fix permissions on restored directory
98
+ try {
99
+ fs_1.default.chmodSync(ARC402_DIR, 0o700);
100
+ fs_1.default.chmodSync(configPath, 0o600);
101
+ }
102
+ catch { /* best-effort */ }
103
+ console.log(` ${colors_1.c.success} Config restored. Run ${colors_1.c.white("arc402 doctor")} to verify.`);
104
+ });
105
+ }
106
+ //# sourceMappingURL=backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * arc402 compute — CLI commands for GPU compute rental.
3
+ *
4
+ * Subcommands:
5
+ * offer Register as a GPU provider (set spec + rate in daemon.toml)
6
+ * discover Find GPU providers (queries relay / registry)
7
+ * hire Propose a compute session to a provider
8
+ * status Check metrics for a running session
9
+ * end End a compute session
10
+ * sessions List all sessions on this node
11
+ */
12
+ import { Command } from "commander";
13
+ export declare function registerComputeCommands(program: Command): void;
14
+ //# sourceMappingURL=compute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute.d.ts","sourceRoot":"","sources":["../../src/commands/compute.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsFpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4Z9D"}