arc402-cli 1.0.0-rc.1 → 1.1.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 (257) hide show
  1. package/README.md +43 -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/tunnel.d.ts +3 -0
  28. package/dist/commands/tunnel.d.ts.map +1 -0
  29. package/dist/commands/tunnel.js +281 -0
  30. package/dist/commands/tunnel.js.map +1 -0
  31. package/dist/commands/wallet.d.ts.map +1 -1
  32. package/dist/commands/wallet.js +299 -65
  33. package/dist/commands/wallet.js.map +1 -1
  34. package/dist/commands/watch.d.ts.map +1 -1
  35. package/dist/commands/watch.js +146 -9
  36. package/dist/commands/watch.js.map +1 -1
  37. package/dist/commands/workroom.d.ts.map +1 -1
  38. package/dist/commands/workroom.js +112 -6
  39. package/dist/commands/workroom.js.map +1 -1
  40. package/dist/config.d.ts +13 -0
  41. package/dist/config.d.ts.map +1 -1
  42. package/dist/config.js +41 -4
  43. package/dist/config.js.map +1 -1
  44. package/dist/daemon/compute-metering.d.ts +61 -0
  45. package/dist/daemon/compute-metering.d.ts.map +1 -0
  46. package/dist/daemon/compute-metering.js +299 -0
  47. package/dist/daemon/compute-metering.js.map +1 -0
  48. package/dist/daemon/compute-session.d.ts +100 -0
  49. package/dist/daemon/compute-session.d.ts.map +1 -0
  50. package/dist/daemon/compute-session.js +231 -0
  51. package/dist/daemon/compute-session.js.map +1 -0
  52. package/dist/daemon/config.d.ts +33 -1
  53. package/dist/daemon/config.d.ts.map +1 -1
  54. package/dist/daemon/config.js +69 -0
  55. package/dist/daemon/config.js.map +1 -1
  56. package/dist/daemon/credentials.d.ts +24 -0
  57. package/dist/daemon/credentials.d.ts.map +1 -0
  58. package/dist/daemon/credentials.js +80 -0
  59. package/dist/daemon/credentials.js.map +1 -0
  60. package/dist/daemon/delivery-client.d.ts +35 -0
  61. package/dist/daemon/delivery-client.d.ts.map +1 -0
  62. package/dist/daemon/delivery-client.js +231 -0
  63. package/dist/daemon/delivery-client.js.map +1 -0
  64. package/dist/daemon/file-delivery.d.ts +98 -0
  65. package/dist/daemon/file-delivery.d.ts.map +1 -0
  66. package/dist/daemon/file-delivery.js +461 -0
  67. package/dist/daemon/file-delivery.js.map +1 -0
  68. package/dist/daemon/index.d.ts +1 -0
  69. package/dist/daemon/index.d.ts.map +1 -1
  70. package/dist/daemon/index.js +793 -227
  71. package/dist/daemon/index.js.map +1 -1
  72. package/dist/daemon/notify.d.ts +35 -6
  73. package/dist/daemon/notify.d.ts.map +1 -1
  74. package/dist/daemon/notify.js +176 -48
  75. package/dist/daemon/notify.js.map +1 -1
  76. package/dist/daemon/worker-executor.d.ts +71 -0
  77. package/dist/daemon/worker-executor.d.ts.map +1 -0
  78. package/dist/daemon/worker-executor.js +382 -0
  79. package/dist/daemon/worker-executor.js.map +1 -0
  80. package/dist/drain-v4.js +2 -2
  81. package/dist/drain-v4.js.map +1 -1
  82. package/dist/endpoint-notify.d.ts +9 -1
  83. package/dist/endpoint-notify.d.ts.map +1 -1
  84. package/dist/endpoint-notify.js +116 -3
  85. package/dist/endpoint-notify.js.map +1 -1
  86. package/dist/index.js +81 -1
  87. package/dist/index.js.map +1 -1
  88. package/dist/program.d.ts.map +1 -1
  89. package/dist/program.js +8 -0
  90. package/dist/program.js.map +1 -1
  91. package/dist/repl.d.ts.map +1 -1
  92. package/dist/repl.js +69 -486
  93. package/dist/repl.js.map +1 -1
  94. package/dist/tui/App.d.ts +12 -0
  95. package/dist/tui/App.d.ts.map +1 -0
  96. package/dist/tui/App.js +154 -0
  97. package/dist/tui/App.js.map +1 -0
  98. package/dist/tui/Footer.d.ts +11 -0
  99. package/dist/tui/Footer.d.ts.map +1 -0
  100. package/dist/tui/Footer.js +13 -0
  101. package/dist/tui/Footer.js.map +1 -0
  102. package/dist/tui/Header.d.ts +14 -0
  103. package/dist/tui/Header.d.ts.map +1 -0
  104. package/dist/tui/Header.js +19 -0
  105. package/dist/tui/Header.js.map +1 -0
  106. package/dist/tui/InputLine.d.ts +11 -0
  107. package/dist/tui/InputLine.d.ts.map +1 -0
  108. package/dist/tui/InputLine.js +145 -0
  109. package/dist/tui/InputLine.js.map +1 -0
  110. package/dist/tui/Viewport.d.ts +14 -0
  111. package/dist/tui/Viewport.d.ts.map +1 -0
  112. package/dist/tui/Viewport.js +48 -0
  113. package/dist/tui/Viewport.js.map +1 -0
  114. package/dist/tui/WalletConnectPairing.d.ts +23 -0
  115. package/dist/tui/WalletConnectPairing.d.ts.map +1 -0
  116. package/dist/tui/WalletConnectPairing.js +61 -0
  117. package/dist/tui/WalletConnectPairing.js.map +1 -0
  118. package/dist/tui/components/Button.d.ts +7 -0
  119. package/dist/tui/components/Button.d.ts.map +1 -0
  120. package/dist/tui/components/Button.js +21 -0
  121. package/dist/tui/components/Button.js.map +1 -0
  122. package/dist/tui/components/CeremonyView.d.ts +13 -0
  123. package/dist/tui/components/CeremonyView.d.ts.map +1 -0
  124. package/dist/tui/components/CeremonyView.js +10 -0
  125. package/dist/tui/components/CeremonyView.js.map +1 -0
  126. package/dist/tui/components/CompletionDropdown.d.ts +7 -0
  127. package/dist/tui/components/CompletionDropdown.d.ts.map +1 -0
  128. package/dist/tui/components/CompletionDropdown.js +23 -0
  129. package/dist/tui/components/CompletionDropdown.js.map +1 -0
  130. package/dist/tui/components/ConfirmPrompt.d.ts +9 -0
  131. package/dist/tui/components/ConfirmPrompt.d.ts.map +1 -0
  132. package/dist/tui/components/ConfirmPrompt.js +10 -0
  133. package/dist/tui/components/ConfirmPrompt.js.map +1 -0
  134. package/dist/tui/components/CustomTextInput.d.ts +15 -0
  135. package/dist/tui/components/CustomTextInput.d.ts.map +1 -0
  136. package/dist/tui/components/CustomTextInput.js +99 -0
  137. package/dist/tui/components/CustomTextInput.js.map +1 -0
  138. package/dist/tui/components/InteractiveTable.d.ts +14 -0
  139. package/dist/tui/components/InteractiveTable.d.ts.map +1 -0
  140. package/dist/tui/components/InteractiveTable.js +61 -0
  141. package/dist/tui/components/InteractiveTable.js.map +1 -0
  142. package/dist/tui/components/StepSpinner.d.ts +11 -0
  143. package/dist/tui/components/StepSpinner.d.ts.map +1 -0
  144. package/dist/tui/components/StepSpinner.js +32 -0
  145. package/dist/tui/components/StepSpinner.js.map +1 -0
  146. package/dist/tui/components/Toast.d.ts +18 -0
  147. package/dist/tui/components/Toast.d.ts.map +1 -0
  148. package/dist/tui/components/Toast.js +29 -0
  149. package/dist/tui/components/Toast.js.map +1 -0
  150. package/dist/tui/index.d.ts +2 -0
  151. package/dist/tui/index.d.ts.map +1 -0
  152. package/dist/tui/index.js +55 -0
  153. package/dist/tui/index.js.map +1 -0
  154. package/dist/tui/useChat.d.ts +11 -0
  155. package/dist/tui/useChat.d.ts.map +1 -0
  156. package/dist/tui/useChat.js +91 -0
  157. package/dist/tui/useChat.js.map +1 -0
  158. package/dist/tui/useCommand.d.ts +12 -0
  159. package/dist/tui/useCommand.d.ts.map +1 -0
  160. package/dist/tui/useCommand.js +137 -0
  161. package/dist/tui/useCommand.js.map +1 -0
  162. package/dist/tui/useNotifications.d.ts +9 -0
  163. package/dist/tui/useNotifications.d.ts.map +1 -0
  164. package/dist/tui/useNotifications.js +17 -0
  165. package/dist/tui/useNotifications.js.map +1 -0
  166. package/dist/tui/useScroll.d.ts +17 -0
  167. package/dist/tui/useScroll.d.ts.map +1 -0
  168. package/dist/tui/useScroll.js +46 -0
  169. package/dist/tui/useScroll.js.map +1 -0
  170. package/dist/ui/format.d.ts.map +1 -1
  171. package/dist/ui/format.js +2 -0
  172. package/dist/ui/format.js.map +1 -1
  173. package/dist/ui/qr-render.d.ts +25 -0
  174. package/dist/ui/qr-render.d.ts.map +1 -0
  175. package/dist/ui/qr-render.js +90 -0
  176. package/dist/ui/qr-render.js.map +1 -0
  177. package/dist/ui/rpc-fallback.d.ts +11 -0
  178. package/dist/ui/rpc-fallback.d.ts.map +1 -0
  179. package/dist/ui/rpc-fallback.js +58 -0
  180. package/dist/ui/rpc-fallback.js.map +1 -0
  181. package/dist/walletconnect.d.ts +4 -0
  182. package/dist/walletconnect.d.ts.map +1 -1
  183. package/dist/walletconnect.js.map +1 -1
  184. package/package.json +11 -3
  185. package/scripts/authorize-machine-key.ts +0 -43
  186. package/scripts/drain-wallet.ts +0 -149
  187. package/scripts/execute-spend-only.ts +0 -81
  188. package/scripts/register-agent-userop.ts +0 -186
  189. package/src/abis.ts +0 -187
  190. package/src/bundler.ts +0 -235
  191. package/src/client.ts +0 -36
  192. package/src/coinbase-smart-wallet.ts +0 -51
  193. package/src/commands/accept.ts +0 -64
  194. package/src/commands/agent-handshake.ts +0 -72
  195. package/src/commands/agent.ts +0 -691
  196. package/src/commands/agreements.ts +0 -350
  197. package/src/commands/arbitrator.ts +0 -180
  198. package/src/commands/arena-handshake.ts +0 -257
  199. package/src/commands/arena.ts +0 -122
  200. package/src/commands/cancel.ts +0 -35
  201. package/src/commands/channel.ts +0 -218
  202. package/src/commands/coldstart.ts +0 -165
  203. package/src/commands/config.ts +0 -58
  204. package/src/commands/contract-interaction.ts +0 -166
  205. package/src/commands/daemon.ts +0 -978
  206. package/src/commands/deliver.ts +0 -148
  207. package/src/commands/discover.ts +0 -297
  208. package/src/commands/dispute.ts +0 -375
  209. package/src/commands/endpoint.ts +0 -620
  210. package/src/commands/feed.ts +0 -229
  211. package/src/commands/hire.ts +0 -245
  212. package/src/commands/migrate.ts +0 -177
  213. package/src/commands/negotiate.ts +0 -271
  214. package/src/commands/openshell.ts +0 -1055
  215. package/src/commands/owner.ts +0 -35
  216. package/src/commands/policy.ts +0 -263
  217. package/src/commands/relay.ts +0 -273
  218. package/src/commands/remediate.ts +0 -24
  219. package/src/commands/reputation.ts +0 -79
  220. package/src/commands/setup.ts +0 -343
  221. package/src/commands/trust.ts +0 -27
  222. package/src/commands/verify.ts +0 -91
  223. package/src/commands/wallet.ts +0 -3280
  224. package/src/commands/watch.ts +0 -23
  225. package/src/commands/watchtower.ts +0 -248
  226. package/src/commands/workroom.ts +0 -959
  227. package/src/config.ts +0 -174
  228. package/src/daemon/config.ts +0 -308
  229. package/src/daemon/hire-listener.ts +0 -226
  230. package/src/daemon/index.ts +0 -955
  231. package/src/daemon/job-lifecycle.ts +0 -215
  232. package/src/daemon/notify.ts +0 -157
  233. package/src/daemon/token-metering.ts +0 -183
  234. package/src/daemon/userops.ts +0 -119
  235. package/src/daemon/wallet-monitor.ts +0 -90
  236. package/src/drain-v4.ts +0 -159
  237. package/src/endpoint-config.ts +0 -83
  238. package/src/endpoint-notify.ts +0 -46
  239. package/src/index.ts +0 -26
  240. package/src/openshell-runtime.ts +0 -277
  241. package/src/program.ts +0 -83
  242. package/src/repl.ts +0 -680
  243. package/src/signing.ts +0 -28
  244. package/src/telegram-notify.ts +0 -88
  245. package/src/ui/banner.ts +0 -51
  246. package/src/ui/colors.ts +0 -30
  247. package/src/ui/format.ts +0 -77
  248. package/src/ui/spinner.ts +0 -56
  249. package/src/ui/tree.ts +0 -16
  250. package/src/utils/format.ts +0 -48
  251. package/src/utils/hash.ts +0 -5
  252. package/src/utils/time.ts +0 -15
  253. package/src/wallet-router.ts +0 -178
  254. package/src/walletconnect-session.ts +0 -27
  255. package/src/walletconnect.ts +0 -294
  256. package/test/time.test.js +0 -11
  257. package/tsconfig.json +0 -19
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,cAAc,GAAG,cAAc,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAKD,eAAO,MAAM,aAAa,cAAoB,CAAC;AAE/C,wBAAgB,UAAU,IAAI,YAAY,CA2BzC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAIrD;AAED,eAAO,MAAM,YAAY,eAAmC,CAAC;AAG7D,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAC1D,eAAO,MAAM,gBAAgB,6BAA6B,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAK1D;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CA4D5F,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,QAAQ,YAAY,WAAwD,CAAC;AAE5G,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE5D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.getUsdcAddress = exports.NETWORK_DEFAULTS = exports.ALCHEMY_BASE_RPC = exports.PUBLIC_BASE_RPC = exports.configExists = exports.getConfigPath = void 0;
36
+ exports.getUsdcAddress = exports.NETWORK_DEFAULTS = exports.ALCHEMY_BASE_RPC = exports.PUBLIC_BASE_RPC = exports.configExists = exports.getConfigPath = exports.getWcProjectId = void 0;
37
37
  exports.loadConfig = loadConfig;
38
38
  exports.saveConfig = saveConfig;
39
39
  exports.warnIfPublicRpc = warnIfPublicRpc;
@@ -41,11 +41,28 @@ exports.getSubdomainApi = getSubdomainApi;
41
41
  const fs = __importStar(require("fs"));
42
42
  const path = __importStar(require("path"));
43
43
  const os = __importStar(require("os"));
44
+ const crypto_1 = require("crypto");
44
45
  const CONFIG_DIR = path.join(os.homedir(), ".arc402");
45
46
  const CONFIG_PATH = process.env.ARC402_CONFIG || path.join(CONFIG_DIR, "config.json");
47
+ const DEVICE_ID_PATH = path.join(CONFIG_DIR, "device.id");
48
+ // WalletConnect project ID — get your own at cloud.walletconnect.com
49
+ const DEFAULT_WC_PROJECT_ID = "455e9425343b9156fce1428250c9a54a";
50
+ const getWcProjectId = () => process.env.WC_PROJECT_ID ?? DEFAULT_WC_PROJECT_ID;
51
+ exports.getWcProjectId = getWcProjectId;
46
52
  const getConfigPath = () => CONFIG_PATH;
47
53
  exports.getConfigPath = getConfigPath;
54
+ /** Returns this device's stable UUID, creating it on first call. */
55
+ function getOrCreateDeviceId() {
56
+ if (fs.existsSync(DEVICE_ID_PATH)) {
57
+ return fs.readFileSync(DEVICE_ID_PATH, "utf-8").trim();
58
+ }
59
+ const id = (0, crypto_1.randomUUID)();
60
+ fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });
61
+ fs.writeFileSync(DEVICE_ID_PATH, id, { mode: 0o600 });
62
+ return id;
63
+ }
48
64
  function loadConfig() {
65
+ const thisDeviceId = getOrCreateDeviceId();
49
66
  if (!fs.existsSync(CONFIG_PATH)) {
50
67
  // Auto-create with Base Mainnet defaults — zero friction
51
68
  const defaults = exports.NETWORK_DEFAULTS["base-mainnet"] ?? {};
@@ -53,7 +70,7 @@ function loadConfig() {
53
70
  const autoConfig = {
54
71
  network: "base-mainnet",
55
72
  rpcUrl: defaults.rpcUrl ?? "https://mainnet.base.org",
56
- walletConnectProjectId: "455e9425343b9156fce1428250c9a54a",
73
+ walletConnectProjectId: (0, exports.getWcProjectId)(),
57
74
  ownerAddress: undefined,
58
75
  policyEngineAddress: defaults.policyEngineAddress,
59
76
  trustRegistryAddress: defaults.trustRegistryAddress ?? "",
@@ -66,17 +83,34 @@ function loadConfig() {
66
83
  walletFactoryAddress: defaults.walletFactoryAddress,
67
84
  sessionChannelsAddress: defaults.sessionChannelsAddress,
68
85
  disputeModuleAddress: defaults.disputeModuleAddress,
86
+ computeAgreementAddress: defaults.computeAgreementAddress,
87
+ subscriptionAgreementAddress: defaults.subscriptionAgreementAddress,
88
+ deviceId: thisDeviceId,
69
89
  };
70
90
  saveConfig(autoConfig);
71
91
  console.log(`◈ Config auto-created at ${CONFIG_PATH} (Base Mainnet)`);
92
+ console.log("⚠ Base Mainnet — real funds at risk. Use arc402 config init for testnet.");
72
93
  return autoConfig;
73
94
  }
74
- return JSON.parse(fs.readFileSync(CONFIG_PATH, "utf-8"));
95
+ const config = JSON.parse(fs.readFileSync(CONFIG_PATH, "utf-8"));
96
+ // Multi-device awareness: warn if config was created on a different device
97
+ if (config.deviceId && config.deviceId !== thisDeviceId) {
98
+ console.warn("⚠ This config was created on a different device. Some keys may not work.");
99
+ }
100
+ // Backfill deviceId if missing (older config)
101
+ if (!config.deviceId) {
102
+ config.deviceId = thisDeviceId;
103
+ saveConfig(config);
104
+ }
105
+ return config;
75
106
  }
76
107
  function saveConfig(config) {
77
108
  const configDir = path.dirname(CONFIG_PATH);
78
109
  fs.mkdirSync(configDir, { recursive: true, mode: 0o700 });
79
110
  fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2), { mode: 0o600 });
111
+ if (config.privateKey) {
112
+ console.warn("⚠ Private key stored in plaintext at ~/.arc402/config.json");
113
+ }
80
114
  }
81
115
  const configExists = () => fs.existsSync(CONFIG_PATH);
82
116
  exports.configExists = configExists;
@@ -104,7 +138,8 @@ exports.NETWORK_DEFAULTS = {
104
138
  trustRegistryV2Address: "0xdA1D377991B2E580991B0DD381CdD635dd71aC39", // old v2, kept for reference
105
139
  intentAttestationAddress: "0x7ad8db6C5f394542E8e9658F86C85cC99Cf6D460",
106
140
  settlementCoordinatorAddress: "0xd52d8Be9728976E0D70C89db9F8ACeb5B5e97cA2", // SettlementCoordinatorV2
107
- agentRegistryAddress: "0xcc0D8731ccCf6CFfF4e66F6d68cA86330Ea8B622", // ARC402RegistryV2
141
+ agentRegistryAddress: "0xcc0D8731ccCf6CFfF4e66F6d68cA86330Ea8B622", // ARC402RegistryV2 — kept for backward compat
142
+ arc402RegistryV3Address: "0x6EafeD4FA103D2De04DDee157e35A8e8df91B6A6", // ARC402RegistryV3 — new default
108
143
  agentRegistryV2Address: "0xD5c2851B00090c92Ba7F4723FB548bb30C9B6865", // AgentRegistry
109
144
  walletFactoryAddress: "0xcB52B5d746eEc05e141039E92e3dBefeAe496051", // WalletFactoryV5 — redeployed 2026-03-19 (optimized bytecode, FOUNDRY_PROFILE=deploy)
110
145
  sponsorshipAttestationAddress: "0xD6c2edE89Ea71aE19Db2Be848e172b444Ed38f22",
@@ -123,6 +158,8 @@ exports.NETWORK_DEFAULTS = {
123
158
  vouchingRegistryAddress: "0x94519194Bf17865770faD59eF581feC512Ae99c9",
124
159
  migrationRegistryAddress: "0xb60B62357b90F254f555f03B162a30E22890e3B5",
125
160
  handshakeAddress: "0x4F5A38Bb746d7E5d49d8fd26CA6beD141Ec2DDb3",
161
+ computeAgreementAddress: "0x0e06afE90aAD3e0D91e217C46d98F049C2528AF7",
162
+ subscriptionAgreementAddress: "0xe1b6D3d0890E09582166EB450a78F6bff038CE5A",
126
163
  },
127
164
  "base-sepolia": {
128
165
  rpcUrl: "https://sepolia.base.org",
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * ComputeMetering — GPU utilization tracking for ARC-402 compute sessions.
3
+ *
4
+ * - Polls nvidia-smi every N seconds (configurable; default 30)
5
+ * - Falls back to mock metrics when nvidia-smi is not available (testing)
6
+ * - Aggregates into 15-minute UsageReports signed with the provider key
7
+ * - Persists raw metrics to ~/.arc402/compute/<sessionId>/metrics.jsonl
8
+ * - Persists signed reports to ~/.arc402/compute/<sessionId>/reports/
9
+ */
10
+ import { ethers } from "ethers";
11
+ export interface ComputeMetrics {
12
+ sessionId: string;
13
+ gpuUtilizationPercent: number;
14
+ gpuMemoryUsedMB: number;
15
+ gpuTemperatureC: number;
16
+ activeMinutes: number;
17
+ computeMinutes: number;
18
+ timestamp: number;
19
+ }
20
+ export interface UsageReport {
21
+ sessionId: string;
22
+ periodStart: number;
23
+ periodEnd: number;
24
+ computeMinutes: number;
25
+ avgUtilization: number;
26
+ providerSignature: string;
27
+ metricsHash: string;
28
+ }
29
+ export declare class ComputeMetering {
30
+ private sessions;
31
+ private wallet;
32
+ private chainId;
33
+ private contractAddress;
34
+ private meteringIntervalMs;
35
+ private reportIntervalMs;
36
+ private onchainProvider;
37
+ constructor(providerPrivateKey: string, chainId: number, contractAddress: string, meteringIntervalSeconds?: number, reportIntervalMinutes?: number, onchainProvider?: ethers.JsonRpcProvider);
38
+ /**
39
+ * Start metering a new session.
40
+ * Polls nvidia-smi on the metering interval and aggregates 15-min reports.
41
+ */
42
+ startMetering(sessionId: string): void;
43
+ /**
44
+ * Stop metering and return the final usage report.
45
+ * Generates a final report covering remaining metrics since last report.
46
+ */
47
+ stopMetering(sessionId: string): Promise<UsageReport | null>;
48
+ /**
49
+ * Return the latest metrics snapshot for a running session.
50
+ */
51
+ getCurrentMetrics(sessionId: string): ComputeMetrics | null;
52
+ /**
53
+ * Return all usage reports generated for a session.
54
+ */
55
+ getUsageReports(sessionId: string): UsageReport[];
56
+ private _collectMetric;
57
+ private _generateReport;
58
+ private _submitOnChain;
59
+ private _loadReportsFromDisk;
60
+ }
61
+ //# sourceMappingURL=compute-metering.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute-metering.d.ts","sourceRoot":"","sources":["../../src/daemon/compute-metering.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AA4HD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAgD;IAChE,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,eAAe,CAAqC;gBAG1D,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,uBAAuB,SAAK,EAC5B,qBAAqB,SAAO,EAC5B,eAAe,CAAC,EAAE,MAAM,CAAC,eAAe;IAU1C;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAgCtC;;;OAGG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAclE;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAM3D;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE;IAWjD,OAAO,CAAC,cAAc;YAsCR,eAAe;YAsEf,cAAc;IAgB5B,OAAO,CAAC,oBAAoB;CAe7B"}
@@ -0,0 +1,299 @@
1
+ "use strict";
2
+ /**
3
+ * ComputeMetering — GPU utilization tracking for ARC-402 compute sessions.
4
+ *
5
+ * - Polls nvidia-smi every N seconds (configurable; default 30)
6
+ * - Falls back to mock metrics when nvidia-smi is not available (testing)
7
+ * - Aggregates into 15-minute UsageReports signed with the provider key
8
+ * - Persists raw metrics to ~/.arc402/compute/<sessionId>/metrics.jsonl
9
+ * - Persists signed reports to ~/.arc402/compute/<sessionId>/reports/
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || (function () {
28
+ var ownKeys = function(o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
+ };
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ })();
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.ComputeMetering = void 0;
46
+ const fs = __importStar(require("fs"));
47
+ const path = __importStar(require("path"));
48
+ const child_process_1 = require("child_process");
49
+ const ethers_1 = require("ethers");
50
+ const config_1 = require("./config");
51
+ // ─── Constants ────────────────────────────────────────────────────────────────
52
+ const COMPUTE_DATA_DIR = path.join(config_1.DAEMON_DIR, "compute");
53
+ const GPU_ACTIVE_THRESHOLD = 5; // utilization % above which we count compute-minutes
54
+ // ─── nvidia-smi poll ──────────────────────────────────────────────────────────
55
+ function pollNvidiaSmi() {
56
+ try {
57
+ const output = (0, child_process_1.execSync)("nvidia-smi --query-gpu=utilization.gpu,memory.used,temperature.gpu --format=csv,noheader,nounits", { timeout: 5000, stdio: ["ignore", "pipe", "ignore"] }).toString().trim();
58
+ const parts = output.split(",").map(s => s.trim());
59
+ if (parts.length < 3)
60
+ return null;
61
+ const utilization = parseFloat(parts[0]);
62
+ const memoryMB = parseFloat(parts[1]);
63
+ const temperatureC = parseFloat(parts[2]);
64
+ if (isNaN(utilization) || isNaN(memoryMB) || isNaN(temperatureC))
65
+ return null;
66
+ return { utilization, memoryMB, temperatureC };
67
+ }
68
+ catch {
69
+ return null;
70
+ }
71
+ }
72
+ function mockMetrics() {
73
+ // Deterministic-ish mock that oscillates for test realism
74
+ const t = Date.now() / 1000;
75
+ return {
76
+ utilization: Math.round(50 + 30 * Math.sin(t / 60)),
77
+ memoryMB: Math.round(4000 + 1000 * Math.cos(t / 90)),
78
+ temperatureC: Math.round(65 + 10 * Math.sin(t / 120)),
79
+ };
80
+ }
81
+ // ─── Report signing ───────────────────────────────────────────────────────────
82
+ /**
83
+ * Produce the same digest that ComputeAgreement.sol verifies.
84
+ * CA-IND-1: includes chainId and contractAddress to prevent cross-chain/cross-contract replay.
85
+ * structHash = keccak256(abi.encode(chainId, contractAddress, sessionId, periodStart,
86
+ * periodEnd, computeMinutes, avgUtilization, metricsHash))
87
+ * digest = EIP-191 personal_sign(structHash)
88
+ */
89
+ function buildReportDigest(chainId, contractAddress, sessionId, periodStart, periodEnd, computeMinutes, avgUtilization, metricsHash) {
90
+ const encoded = ethers_1.ethers.AbiCoder.defaultAbiCoder().encode(["uint256", "address", "bytes32", "uint256", "uint256", "uint256", "uint256", "bytes32"], [
91
+ BigInt(chainId),
92
+ contractAddress,
93
+ sessionId,
94
+ BigInt(periodStart),
95
+ BigInt(periodEnd),
96
+ BigInt(computeMinutes),
97
+ BigInt(avgUtilization),
98
+ metricsHash,
99
+ ]);
100
+ const structHash = ethers_1.ethers.keccak256(encoded);
101
+ // EIP-191 prefix — matches "\x19Ethereum Signed Message:\n32" + structHash
102
+ return ethers_1.ethers.hashMessage(ethers_1.ethers.getBytes(structHash));
103
+ }
104
+ async function signReport(wallet, chainId, contractAddress, sessionId, periodStart, periodEnd, computeMinutes, avgUtilization, metricsHash) {
105
+ const encoded = ethers_1.ethers.AbiCoder.defaultAbiCoder().encode(["uint256", "address", "bytes32", "uint256", "uint256", "uint256", "uint256", "bytes32"], [
106
+ BigInt(chainId),
107
+ contractAddress,
108
+ sessionId,
109
+ BigInt(periodStart),
110
+ BigInt(periodEnd),
111
+ BigInt(computeMinutes),
112
+ BigInt(avgUtilization),
113
+ metricsHash,
114
+ ]);
115
+ const structHash = ethers_1.ethers.keccak256(encoded);
116
+ return wallet.signMessage(ethers_1.ethers.getBytes(structHash));
117
+ }
118
+ // ─── Main class ───────────────────────────────────────────────────────────────
119
+ const SUBMIT_USAGE_REPORT_ABI = [
120
+ "function submitUsageReport(bytes32 sessionId, uint256 periodStart, uint256 periodEnd, uint256 computeMinutes, uint256 avgUtilization, bytes providerSignature, bytes32 metricsHash) external",
121
+ ];
122
+ class ComputeMetering {
123
+ constructor(providerPrivateKey, chainId, contractAddress, meteringIntervalSeconds = 30, reportIntervalMinutes = 15, onchainProvider) {
124
+ this.sessions = new Map();
125
+ this.wallet = new ethers_1.ethers.Wallet(providerPrivateKey);
126
+ this.chainId = chainId;
127
+ this.contractAddress = contractAddress;
128
+ this.meteringIntervalMs = meteringIntervalSeconds * 1000;
129
+ this.reportIntervalMs = reportIntervalMinutes * 60 * 1000;
130
+ this.onchainProvider = onchainProvider;
131
+ }
132
+ /**
133
+ * Start metering a new session.
134
+ * Polls nvidia-smi on the metering interval and aggregates 15-min reports.
135
+ */
136
+ startMetering(sessionId) {
137
+ if (this.sessions.has(sessionId))
138
+ return;
139
+ const sessionDir = path.join(COMPUTE_DATA_DIR, sessionId);
140
+ const reportsDir = path.join(sessionDir, "reports");
141
+ fs.mkdirSync(reportsDir, { recursive: true, mode: 0o700 });
142
+ const state = {
143
+ sessionId,
144
+ startTime: Date.now(),
145
+ lastReportTime: Date.now(),
146
+ rawMetrics: [],
147
+ allReports: [],
148
+ metricsFilePath: path.join(sessionDir, "metrics.jsonl"),
149
+ reportsDir,
150
+ intervalHandle: null,
151
+ reportIntervalHandle: null,
152
+ };
153
+ // Metering poll
154
+ state.intervalHandle = setInterval(() => {
155
+ this._collectMetric(state);
156
+ }, this.meteringIntervalMs);
157
+ // Report generation
158
+ state.reportIntervalHandle = setInterval(() => {
159
+ void this._generateReport(state);
160
+ }, this.reportIntervalMs);
161
+ this.sessions.set(sessionId, state);
162
+ }
163
+ /**
164
+ * Stop metering and return the final usage report.
165
+ * Generates a final report covering remaining metrics since last report.
166
+ */
167
+ async stopMetering(sessionId) {
168
+ const state = this.sessions.get(sessionId);
169
+ if (!state)
170
+ return null;
171
+ clearInterval(state.intervalHandle);
172
+ clearInterval(state.reportIntervalHandle);
173
+ // Final report from remaining buffered metrics
174
+ const finalReport = await this._generateReport(state);
175
+ this.sessions.delete(sessionId);
176
+ return finalReport;
177
+ }
178
+ /**
179
+ * Return the latest metrics snapshot for a running session.
180
+ */
181
+ getCurrentMetrics(sessionId) {
182
+ const state = this.sessions.get(sessionId);
183
+ if (!state || state.rawMetrics.length === 0)
184
+ return null;
185
+ return state.rawMetrics[state.rawMetrics.length - 1];
186
+ }
187
+ /**
188
+ * Return all usage reports generated for a session.
189
+ */
190
+ getUsageReports(sessionId) {
191
+ const state = this.sessions.get(sessionId);
192
+ if (!state) {
193
+ // Try to load persisted reports from disk
194
+ return this._loadReportsFromDisk(sessionId);
195
+ }
196
+ return [...state.allReports];
197
+ }
198
+ // ─── Private ────────────────────────────────────────────────────────────────
199
+ _collectMetric(state) {
200
+ const gpu = pollNvidiaSmi() ?? mockMetrics();
201
+ const now = Date.now();
202
+ const wallMs = now - state.startTime;
203
+ const wallMins = wallMs / 60000;
204
+ // Compute-minutes: count wall-clock intervals where utilization exceeded threshold
205
+ const active = gpu.utilization > GPU_ACTIVE_THRESHOLD;
206
+ const addComputeMins = active ? this.meteringIntervalMs / 60000 : 0;
207
+ // Accumulate into the current period buffer
208
+ const prevComputeMins = state.rawMetrics.length > 0
209
+ ? state.rawMetrics[state.rawMetrics.length - 1].computeMinutes
210
+ : 0;
211
+ const metric = {
212
+ sessionId: state.sessionId,
213
+ gpuUtilizationPercent: gpu.utilization,
214
+ gpuMemoryUsedMB: gpu.memoryMB,
215
+ gpuTemperatureC: gpu.temperatureC,
216
+ activeMinutes: wallMins,
217
+ computeMinutes: prevComputeMins + addComputeMins,
218
+ timestamp: now,
219
+ };
220
+ state.rawMetrics.push(metric);
221
+ // Persist to JSONL
222
+ try {
223
+ fs.appendFileSync(state.metricsFilePath, JSON.stringify(metric) + "\n", { mode: 0o600 });
224
+ }
225
+ catch { /* non-fatal — disk full etc */ }
226
+ }
227
+ async _generateReport(state) {
228
+ if (state.rawMetrics.length === 0)
229
+ return null;
230
+ const periodStart = state.lastReportTime;
231
+ const periodEnd = Date.now();
232
+ // Metrics accumulated in this period
233
+ const periodMetrics = state.rawMetrics.filter(m => m.timestamp >= periodStart);
234
+ if (periodMetrics.length === 0)
235
+ return null;
236
+ const computeMinutes = periodMetrics.reduce((acc, m) => {
237
+ // Each poll interval contributes proportionally
238
+ const active = m.gpuUtilizationPercent > GPU_ACTIVE_THRESHOLD;
239
+ return acc + (active ? this.meteringIntervalMs / 60000 : 0);
240
+ }, 0);
241
+ const avgUtilization = Math.round(periodMetrics.reduce((acc, m) => acc + m.gpuUtilizationPercent, 0) / periodMetrics.length);
242
+ // Hash raw metrics for dispute evidence
243
+ const metricsJson = JSON.stringify(periodMetrics);
244
+ const metricsHash = ethers_1.ethers.keccak256(ethers_1.ethers.toUtf8Bytes(metricsJson));
245
+ const roundedMinutes = Math.round(computeMinutes);
246
+ const sig = await signReport(this.wallet, this.chainId, this.contractAddress, state.sessionId, Math.floor(periodStart / 1000), Math.floor(periodEnd / 1000), roundedMinutes, avgUtilization, metricsHash);
247
+ const report = {
248
+ sessionId: state.sessionId,
249
+ periodStart: Math.floor(periodStart / 1000),
250
+ periodEnd: Math.floor(periodEnd / 1000),
251
+ computeMinutes: roundedMinutes,
252
+ avgUtilization,
253
+ providerSignature: sig,
254
+ metricsHash,
255
+ };
256
+ state.allReports.push(report);
257
+ state.lastReportTime = periodEnd;
258
+ // Clear the processed period's metrics from the buffer
259
+ state.rawMetrics = state.rawMetrics.filter(m => m.timestamp >= periodEnd);
260
+ // Persist report to disk
261
+ const reportFile = path.join(state.reportsDir, `report_${report.periodStart}.json`);
262
+ try {
263
+ fs.writeFileSync(reportFile, JSON.stringify(report, null, 2), { mode: 0o600 });
264
+ }
265
+ catch { /* non-fatal */ }
266
+ // Submit on-chain if provider is configured
267
+ if (this.onchainProvider && this.contractAddress) {
268
+ void this._submitOnChain(report).catch(() => { });
269
+ }
270
+ return report;
271
+ }
272
+ async _submitOnChain(report) {
273
+ if (!this.onchainProvider)
274
+ return;
275
+ const signer = this.wallet.connect(this.onchainProvider);
276
+ const contract = new ethers_1.ethers.Contract(this.contractAddress, SUBMIT_USAGE_REPORT_ABI, signer);
277
+ const tx = await contract.submitUsageReport(report.sessionId, BigInt(report.periodStart), BigInt(report.periodEnd), BigInt(report.computeMinutes), BigInt(report.avgUtilization), report.providerSignature, report.metricsHash);
278
+ await tx.wait();
279
+ }
280
+ _loadReportsFromDisk(sessionId) {
281
+ const reportsDir = path.join(COMPUTE_DATA_DIR, sessionId, "reports");
282
+ if (!fs.existsSync(reportsDir))
283
+ return [];
284
+ try {
285
+ const files = fs.readdirSync(reportsDir)
286
+ .filter(f => f.endsWith(".json"))
287
+ .sort();
288
+ return files.map(f => {
289
+ const raw = fs.readFileSync(path.join(reportsDir, f), "utf-8");
290
+ return JSON.parse(raw);
291
+ });
292
+ }
293
+ catch {
294
+ return [];
295
+ }
296
+ }
297
+ }
298
+ exports.ComputeMetering = ComputeMetering;
299
+ //# sourceMappingURL=compute-metering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute-metering.js","sourceRoot":"","sources":["../../src/daemon/compute-metering.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * ComputeSessionManager — session lifecycle management for ARC-402 compute rental.
3
+ *
4
+ * Owns the in-memory + persisted state for all compute sessions handled by
5
+ * this provider node. Coordinates with ComputeMetering for GPU tracking.
6
+ */
7
+ import { ComputeMetering, UsageReport } from "./compute-metering";
8
+ export type ComputeSessionStatus = "proposed" | "accepted" | "active" | "completed" | "disputed";
9
+ export interface ComputeProposal {
10
+ sessionId: string;
11
+ clientAddress: string;
12
+ providerAddress: string;
13
+ ratePerHourWei: string;
14
+ maxHours: number;
15
+ gpuSpecHash: string;
16
+ workloadDescription: string;
17
+ depositAmount: string;
18
+ proposedAt: number;
19
+ }
20
+ export interface ComputeSessionState {
21
+ proposal: ComputeProposal;
22
+ status: ComputeSessionStatus;
23
+ startedAt: number | null;
24
+ endedAt: number | null;
25
+ accessEndpoint: string | null;
26
+ consumedMinutes: number;
27
+ usageReports: UsageReport[];
28
+ updatedAt: number;
29
+ }
30
+ export interface SettlementResult {
31
+ sessionId: string;
32
+ consumedMinutes: number;
33
+ costWei: bigint;
34
+ depositWei: bigint;
35
+ refundWei: bigint;
36
+ reports: UsageReport[];
37
+ }
38
+ export declare class ComputeSessionManager {
39
+ sessions: Map<string, ComputeSessionState>;
40
+ private metering;
41
+ constructor(metering?: ComputeMetering);
42
+ /**
43
+ * Record an incoming compute proposal (from a client).
44
+ * Validates it doesn't conflict with capacity limits.
45
+ */
46
+ handleProposal(proposal: ComputeProposal): {
47
+ ok: boolean;
48
+ error?: string;
49
+ };
50
+ /**
51
+ * Provider accepts the proposal. On-chain call should follow.
52
+ */
53
+ acceptSession(sessionId: string): {
54
+ ok: boolean;
55
+ error?: string;
56
+ };
57
+ /**
58
+ * Provider marks the session as active. Starts GPU metering.
59
+ * @param accessEndpoint Optional SSH / API endpoint to surface to client.
60
+ */
61
+ startSession(sessionId: string, accessEndpoint?: string): {
62
+ ok: boolean;
63
+ error?: string;
64
+ };
65
+ /**
66
+ * Either party ends the session. Stops metering, calculates settlement.
67
+ */
68
+ endSession(sessionId: string): Promise<{
69
+ ok: boolean;
70
+ error?: string;
71
+ result?: SettlementResult;
72
+ }>;
73
+ /**
74
+ * Client disputes the session — freezes it pending arbitration.
75
+ */
76
+ disputeSession(sessionId: string): {
77
+ ok: boolean;
78
+ error?: string;
79
+ };
80
+ /**
81
+ * Append a usage report (from daemon's periodic reporting loop).
82
+ */
83
+ appendUsageReport(sessionId: string, report: UsageReport): {
84
+ ok: boolean;
85
+ error?: string;
86
+ };
87
+ /**
88
+ * Get a single session by ID.
89
+ */
90
+ getSession(sessionId: string): ComputeSessionState | null;
91
+ /**
92
+ * List all sessions.
93
+ */
94
+ listSessions(): ComputeSessionState[];
95
+ /**
96
+ * Count sessions in a given status.
97
+ */
98
+ countByStatus(status: ComputeSessionStatus): number;
99
+ }
100
+ //# sourceMappingURL=compute-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute-session.d.ts","sourceRoot":"","sources":["../../src/daemon/compute-session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIlE,MAAM,MAAM,oBAAoB,GAC5B,UAAU,GACV,UAAU,GACV,QAAQ,GACR,WAAW,GACX,UAAU,CAAC;AAEf,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAY,MAAM,CAAC;IAC5B,aAAa,EAAQ,MAAM,CAAC;IAC5B,eAAe,EAAM,MAAM,CAAC;IAC5B,cAAc,EAAO,MAAM,CAAC;IAC5B,QAAQ,EAAa,MAAM,CAAC;IAC5B,WAAW,EAAU,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAQ,MAAM,CAAC;IAC5B,UAAU,EAAW,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAS,eAAe,CAAC;IACjC,MAAM,EAAW,oBAAoB,CAAC;IACtC,SAAS,EAAQ,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAU,MAAM,GAAG,IAAI,CAAC;IAC/B,cAAc,EAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAK,WAAW,EAAE,CAAC;IAC/B,SAAS,EAAQ,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAQ,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAU,MAAM,CAAC;IACxB,UAAU,EAAO,MAAM,CAAC;IACxB,SAAS,EAAQ,MAAM,CAAC;IACxB,OAAO,EAAU,WAAW,EAAE,CAAC;CAChC;AA8BD,qBAAa,qBAAqB;IACzB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAClD,OAAO,CAAC,QAAQ,CAAyB;gBAE7B,QAAQ,CAAC,EAAE,eAAe;IAKtC;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAqB1E;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAWjE;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAoBzF;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;KAAE,CAAC;IA8CxG;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAWlE;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAY1F;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAIzD;;OAEG;IACH,YAAY,IAAI,mBAAmB,EAAE;IAIrC;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM;CAOpD"}