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
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ /**
3
+ * ComputeSessionManager — session lifecycle management for ARC-402 compute rental.
4
+ *
5
+ * Owns the in-memory + persisted state for all compute sessions handled by
6
+ * this provider node. Coordinates with ComputeMetering for GPU tracking.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.ComputeSessionManager = void 0;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const config_1 = require("./config");
46
+ // ─── Persistence ──────────────────────────────────────────────────────────────
47
+ const SESSIONS_DIR = path.join(config_1.DAEMON_DIR, "compute");
48
+ function sessionsFile() {
49
+ return path.join(SESSIONS_DIR, "sessions.json");
50
+ }
51
+ function persistSessions(sessions) {
52
+ fs.mkdirSync(SESSIONS_DIR, { recursive: true, mode: 0o700 });
53
+ const obj = Object.fromEntries(sessions.entries());
54
+ fs.writeFileSync(sessionsFile(), JSON.stringify(obj, null, 2), { mode: 0o600 });
55
+ }
56
+ function loadSessions() {
57
+ const file = sessionsFile();
58
+ if (!fs.existsSync(file))
59
+ return new Map();
60
+ try {
61
+ const raw = fs.readFileSync(file, "utf-8");
62
+ const obj = JSON.parse(raw);
63
+ return new Map(Object.entries(obj));
64
+ }
65
+ catch {
66
+ return new Map();
67
+ }
68
+ }
69
+ // ─── Manager class ────────────────────────────────────────────────────────────
70
+ class ComputeSessionManager {
71
+ constructor(metering) {
72
+ this.sessions = loadSessions();
73
+ this.metering = metering ?? null;
74
+ }
75
+ /**
76
+ * Record an incoming compute proposal (from a client).
77
+ * Validates it doesn't conflict with capacity limits.
78
+ */
79
+ handleProposal(proposal) {
80
+ if (this.sessions.has(proposal.sessionId)) {
81
+ return { ok: false, error: "session_already_exists" };
82
+ }
83
+ const state = {
84
+ proposal,
85
+ status: "proposed",
86
+ startedAt: null,
87
+ endedAt: null,
88
+ accessEndpoint: null,
89
+ consumedMinutes: 0,
90
+ usageReports: [],
91
+ updatedAt: Math.floor(Date.now() / 1000),
92
+ };
93
+ this.sessions.set(proposal.sessionId, state);
94
+ persistSessions(this.sessions);
95
+ return { ok: true };
96
+ }
97
+ /**
98
+ * Provider accepts the proposal. On-chain call should follow.
99
+ */
100
+ acceptSession(sessionId) {
101
+ const s = this.sessions.get(sessionId);
102
+ if (!s)
103
+ return { ok: false, error: "session_not_found" };
104
+ if (s.status !== "proposed")
105
+ return { ok: false, error: `wrong_status:${s.status}` };
106
+ s.status = "accepted";
107
+ s.updatedAt = Math.floor(Date.now() / 1000);
108
+ persistSessions(this.sessions);
109
+ return { ok: true };
110
+ }
111
+ /**
112
+ * Provider marks the session as active. Starts GPU metering.
113
+ * @param accessEndpoint Optional SSH / API endpoint to surface to client.
114
+ */
115
+ startSession(sessionId, accessEndpoint) {
116
+ const s = this.sessions.get(sessionId);
117
+ if (!s)
118
+ return { ok: false, error: "session_not_found" };
119
+ if (s.status !== "accepted")
120
+ return { ok: false, error: `wrong_status:${s.status}` };
121
+ const now = Math.floor(Date.now() / 1000);
122
+ s.status = "active";
123
+ s.startedAt = now;
124
+ s.accessEndpoint = accessEndpoint ?? null;
125
+ s.updatedAt = now;
126
+ persistSessions(this.sessions);
127
+ if (this.metering) {
128
+ this.metering.startMetering(sessionId);
129
+ }
130
+ return { ok: true };
131
+ }
132
+ /**
133
+ * Either party ends the session. Stops metering, calculates settlement.
134
+ */
135
+ async endSession(sessionId) {
136
+ const s = this.sessions.get(sessionId);
137
+ if (!s)
138
+ return { ok: false, error: "session_not_found" };
139
+ if (s.status !== "active")
140
+ return { ok: false, error: `wrong_status:${s.status}` };
141
+ // Stop metering — generates final usage report
142
+ if (this.metering) {
143
+ const finalReport = await this.metering.stopMetering(sessionId);
144
+ if (finalReport) {
145
+ s.usageReports.push(finalReport);
146
+ s.consumedMinutes += finalReport.computeMinutes;
147
+ }
148
+ // Absorb any other reports generated during the session
149
+ const allReports = this.metering.getUsageReports(sessionId);
150
+ for (const r of allReports) {
151
+ if (!s.usageReports.find(x => x.periodStart === r.periodStart)) {
152
+ s.usageReports.push(r);
153
+ }
154
+ }
155
+ }
156
+ const now = Math.floor(Date.now() / 1000);
157
+ s.status = "completed";
158
+ s.endedAt = now;
159
+ s.updatedAt = now;
160
+ persistSessions(this.sessions);
161
+ // Settlement math: (consumedMinutes * ratePerHour) / 60
162
+ const deposit = BigInt(s.proposal.depositAmount);
163
+ const rate = BigInt(s.proposal.ratePerHourWei);
164
+ const costWei = BigInt(s.consumedMinutes) * rate / 60n;
165
+ const clamped = costWei > deposit ? deposit : costWei;
166
+ const refundWei = deposit - clamped;
167
+ const result = {
168
+ sessionId,
169
+ consumedMinutes: s.consumedMinutes,
170
+ costWei: clamped,
171
+ depositWei: deposit,
172
+ refundWei,
173
+ reports: s.usageReports,
174
+ };
175
+ return { ok: true, result };
176
+ }
177
+ /**
178
+ * Client disputes the session — freezes it pending arbitration.
179
+ */
180
+ disputeSession(sessionId) {
181
+ const s = this.sessions.get(sessionId);
182
+ if (!s)
183
+ return { ok: false, error: "session_not_found" };
184
+ if (s.status !== "active")
185
+ return { ok: false, error: `wrong_status:${s.status}` };
186
+ s.status = "disputed";
187
+ s.updatedAt = Math.floor(Date.now() / 1000);
188
+ persistSessions(this.sessions);
189
+ return { ok: true };
190
+ }
191
+ /**
192
+ * Append a usage report (from daemon's periodic reporting loop).
193
+ */
194
+ appendUsageReport(sessionId, report) {
195
+ const s = this.sessions.get(sessionId);
196
+ if (!s)
197
+ return { ok: false, error: "session_not_found" };
198
+ if (s.status !== "active")
199
+ return { ok: false, error: `wrong_status:${s.status}` };
200
+ s.usageReports.push(report);
201
+ s.consumedMinutes += report.computeMinutes;
202
+ s.updatedAt = Math.floor(Date.now() / 1000);
203
+ persistSessions(this.sessions);
204
+ return { ok: true };
205
+ }
206
+ /**
207
+ * Get a single session by ID.
208
+ */
209
+ getSession(sessionId) {
210
+ return this.sessions.get(sessionId) ?? null;
211
+ }
212
+ /**
213
+ * List all sessions.
214
+ */
215
+ listSessions() {
216
+ return Array.from(this.sessions.values());
217
+ }
218
+ /**
219
+ * Count sessions in a given status.
220
+ */
221
+ countByStatus(status) {
222
+ let n = 0;
223
+ for (const s of this.sessions.values()) {
224
+ if (s.status === status)
225
+ n++;
226
+ }
227
+ return n;
228
+ }
229
+ }
230
+ exports.ComputeSessionManager = ComputeSessionManager;
231
+ //# sourceMappingURL=compute-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute-session.js","sourceRoot":"","sources":["../../src/daemon/compute-session.ts"],"names":[],"mappings":"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"}
@@ -57,6 +57,20 @@ export interface DaemonConfig {
57
57
  notify_on_channel_challenge: boolean;
58
58
  notify_on_low_balance: boolean;
59
59
  low_balance_threshold_eth: string;
60
+ discord: {
61
+ webhook_url: string;
62
+ };
63
+ webhook: {
64
+ url: string;
65
+ headers: Record<string, string>;
66
+ };
67
+ email: {
68
+ smtp_host: string;
69
+ smtp_port: number;
70
+ smtp_user: string;
71
+ smtp_pass: string;
72
+ to: string;
73
+ };
60
74
  };
61
75
  work: {
62
76
  handler: "exec" | "http" | "noop";
@@ -64,11 +78,29 @@ export interface DaemonConfig {
64
78
  http_url: string;
65
79
  http_auth_token: string;
66
80
  };
81
+ compute: {
82
+ enabled: boolean;
83
+ gpu_spec: string;
84
+ rate_per_hour_wei: string;
85
+ max_concurrent_sessions: number;
86
+ metering_interval_seconds: number;
87
+ report_interval_minutes: number;
88
+ auto_accept_compute: boolean;
89
+ min_session_hours: number;
90
+ max_session_hours: number;
91
+ compute_agreement_address: string;
92
+ };
93
+ delivery: {
94
+ max_file_size_mb: number;
95
+ max_job_size_mb: number;
96
+ auto_download: boolean;
97
+ serve_files: boolean;
98
+ };
67
99
  }
68
100
  export declare function loadDaemonConfig(configPath?: string): DaemonConfig;
69
101
  export declare function loadMachineKey(config: DaemonConfig): {
70
102
  privateKey: string;
71
103
  address: string;
72
104
  };
73
- export declare const TEMPLATE_DAEMON_TOML = "# ~/.arc402/daemon.toml\n# ARC-402 Daemon Configuration\n# Generated by: arc402 daemon init\n#\n# SECURITY: Never put private keys here. Use environment variables.\n\n[wallet]\ncontract_address = \"\" # ARC402Wallet contract address (required)\nowner_address = \"\" # Owner EOA address \u2014 for display and verification only\nmachine_key = \"env:ARC402_MACHINE_KEY\" # Machine key loaded from environment. NEVER hardcode here.\n\n[network]\nrpc_url = \"https://mainnet.base.org\" # Public Base RPC (default)\nchain_id = 8453 # Base mainnet. Use 84532 for Base Sepolia.\nentry_point = \"0x0000000071727De22E5E9d8BAf0edAc6f37da032\" # ERC-4337 EntryPoint v0.7\n\n[bundler]\nmode = \"external\" # external | arc402 | self\nendpoint = \"\" # Required when mode = external. Pimlico, Alchemy, etc.\nearn_fees = false # self mode only: bundle for other network agents\neth_float = \"0.01\" # Minimum ETH to maintain in bundler EOA for gas fronting\nsweep_threshold = \"0.005\" # Sweep fees to wallet when bundler EOA exceeds this (ETH)\nsweep_to = \"\" # Sweep destination. Defaults to wallet.contract_address.\nrpc_url = \"\" # self mode: private RPC. Defaults to network.rpc_url if empty.\n\n[relay]\nenabled = true\nlisten_port = 4402 # Port for incoming relay messages\nendpoint = \"\" # Your public URL \u2014 run: arc402 setup endpoint\n # Example: https://gigabrain.arc402.xyz\nmax_concurrent_agreements = 10 # Refuse new hire requests when this many are in-flight\npoll_interval_seconds = 2 # How often to poll relay for incoming messages\nrelay_url = \"\" # The relay to poll. Defaults to agent metadata relay if empty.\n\n[watchtower]\nenabled = true\npoll_interval_seconds = 60 # How often to poll chain for stale-close events\nchallenge_confirmation_blocks = 2 # Wait N block confirmations before accepting close as final\nexternal_watchtower_url = \"\" # Register open channels here as backup (Tier 2 watchtower)\nupdate_interval_states = 10 # Forward state to external watchtower every N state changes\n\n[policy]\nauto_accept = false # If true: auto-accept all hire requests within policy bounds\nmax_price_eth = \"0.1\" # Refuse any hire priced above this (ETH)\nallowed_capabilities = [] # Empty list = accept any capability. Non-empty = whitelist.\nrequire_min_trust_score = 50 # Refuse hirers whose wallet trust score is below this (0\u2013100)\nmin_hire_lead_time_seconds = 300 # Refuse hires with delivery deadline < this many seconds away\n\n[notifications]\ntelegram_bot_token = \"env:TELEGRAM_BOT_TOKEN\" # Load from env, not hardcoded\ntelegram_chat_id = \"env:TELEGRAM_CHAT_ID\" # Load from env, not hardcoded\nnotify_on_hire_request = true # Notify when a hire request arrives (pending approval)\nnotify_on_hire_accepted = true # Notify when daemon accepts a hire\nnotify_on_hire_rejected = true # Notify when daemon rejects a hire\nnotify_on_delivery = true # Notify when work is delivered and fulfill() submitted\nnotify_on_dispute = true # Notify when a dispute is raised (by either party)\nnotify_on_channel_challenge = true # Notify when watchtower submits a channel challenge\nnotify_on_low_balance = false # Disabled by default \u2014 enable if you want balance alerts\nlow_balance_threshold_eth = \"0.005\" # Balance alert threshold\n\n[work]\nhandler = \"noop\" # exec | http | noop\nexec_command = \"\" # called with agreementId and spec as args (exec mode)\nhttp_url = \"\" # POST {agreementId, specHash, deadline} as JSON (http mode)\nhttp_auth_token = \"env:WORKER_AUTH_TOKEN\"\n";
105
+ export declare const TEMPLATE_DAEMON_TOML = "# ~/.arc402/daemon.toml\n# ARC-402 Daemon Configuration\n# Generated by: arc402 daemon init\n#\n# SECURITY: Never put private keys here. Use environment variables.\n\n[wallet]\ncontract_address = \"\" # ARC402Wallet contract address (required)\nowner_address = \"\" # Owner EOA address \u2014 for display and verification only\nmachine_key = \"env:ARC402_MACHINE_KEY\" # Machine key loaded from environment. NEVER hardcode here.\n\n[network]\nrpc_url = \"https://mainnet.base.org\" # Public Base RPC (default)\nchain_id = 8453 # Base mainnet. Use 84532 for Base Sepolia.\nentry_point = \"0x0000000071727De22E5E9d8BAf0edAc6f37da032\" # ERC-4337 EntryPoint v0.7\n\n[bundler]\nmode = \"external\" # external | arc402 | self\nendpoint = \"\" # Required when mode = external. Pimlico, Alchemy, etc.\nearn_fees = false # self mode only: bundle for other network agents\neth_float = \"0.01\" # Minimum ETH to maintain in bundler EOA for gas fronting\nsweep_threshold = \"0.005\" # Sweep fees to wallet when bundler EOA exceeds this (ETH)\nsweep_to = \"\" # Sweep destination. Defaults to wallet.contract_address.\nrpc_url = \"\" # self mode: private RPC. Defaults to network.rpc_url if empty.\n\n[relay]\nenabled = true\nlisten_port = 4402 # Port for incoming relay messages\nendpoint = \"\" # Your public URL \u2014 run: arc402 setup endpoint\n # Example: https://gigabrain.arc402.xyz\nmax_concurrent_agreements = 10 # Refuse new hire requests when this many are in-flight\npoll_interval_seconds = 2 # How often to poll relay for incoming messages\nrelay_url = \"\" # The relay to poll. Defaults to agent metadata relay if empty.\n\n[watchtower]\nenabled = true\npoll_interval_seconds = 60 # How often to poll chain for stale-close events\nchallenge_confirmation_blocks = 2 # Wait N block confirmations before accepting close as final\nexternal_watchtower_url = \"\" # Register open channels here as backup (Tier 2 watchtower)\nupdate_interval_states = 10 # Forward state to external watchtower every N state changes\n\n[policy]\nauto_accept = false # If true: auto-accept all hire requests within policy bounds\nmax_price_eth = \"0.1\" # Refuse any hire priced above this (ETH)\nallowed_capabilities = [] # Empty list = accept any capability. Non-empty = whitelist.\nrequire_min_trust_score = 50 # Refuse hirers whose wallet trust score is below this (0\u2013100)\nmin_hire_lead_time_seconds = 300 # Refuse hires with delivery deadline < this many seconds away\n\n[notifications]\ntelegram_bot_token = \"env:TELEGRAM_BOT_TOKEN\" # Load from env, not hardcoded\ntelegram_chat_id = \"env:TELEGRAM_CHAT_ID\" # Load from env, not hardcoded\nnotify_on_hire_request = true # Notify when a hire request arrives (pending approval)\nnotify_on_hire_accepted = true # Notify when daemon accepts a hire\nnotify_on_hire_rejected = true # Notify when daemon rejects a hire\nnotify_on_delivery = true # Notify when work is delivered and fulfill() submitted\nnotify_on_dispute = true # Notify when a dispute is raised (by either party)\nnotify_on_channel_challenge = true # Notify when watchtower submits a channel challenge\nnotify_on_low_balance = false # Disabled by default \u2014 enable if you want balance alerts\nlow_balance_threshold_eth = \"0.005\" # Balance alert threshold\n\n[notifications.discord]\nwebhook_url = \"\" # Discord channel webhook URL (leave empty to disable)\n\n[notifications.webhook]\nurl = \"\" # POST JSON {title, body, timestamp} to this URL (leave empty to disable)\n# headers = { Authorization = \"Bearer ...\" } # Optional headers\n\n[notifications.email]\nsmtp_host = \"\" # SMTP server hostname (leave empty to disable)\nsmtp_port = 587\nsmtp_user = \"\" # SMTP login / from address\nsmtp_pass = \"env:SMTP_PASS\" # Load from env, not hardcoded\nto = \"\" # Recipient address\n\n[work]\nhandler = \"noop\" # exec | http | noop\nexec_command = \"\" # called with agreementId and spec as args (exec mode)\nhttp_url = \"\" # POST {agreementId, specHash, deadline} as JSON (http mode)\nhttp_auth_token = \"env:WORKER_AUTH_TOKEN\"\n\n[compute]\nenabled = false # Enable GPU compute rental\ngpu_spec = \"\" # GPU model identifier (e.g. nvidia-h100-80gb)\nrate_per_hour_wei = \"0\" # Wei per GPU-hour (0 = disabled)\nmax_concurrent_sessions = 1 # Usually 1 (one GPU per session)\nmetering_interval_seconds = 30 # nvidia-smi poll interval\nreport_interval_minutes = 15 # Usage report generation interval\nauto_accept_compute = false # Auto-accept compute proposals\nmin_session_hours = 1 # Minimum session duration\nmax_session_hours = 24 # Maximum session duration\n\n[delivery]\nmax_file_size_mb = 100 # Maximum size for a single uploaded file (MB)\nmax_job_size_mb = 500 # Maximum total size for all files in a job (MB)\nauto_download = true # Auto-download and verify files on delivery notification\nserve_files = true # Serve file endpoints (/job/:id/files, /job/:id/manifest)\n";
74
106
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/daemon/config.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,UAAU,QAAqC,CAAC;AAC7D,eAAO,MAAM,WAAW,QAAuC,CAAC;AAChE,eAAO,MAAM,UAAU,QAAsC,CAAC;AAC9D,eAAO,MAAM,UAAU,QAAsC,CAAC;AAC9D,eAAO,MAAM,SAAS,QAAqC,CAAC;AAC5D,eAAO,MAAM,WAAW,QAAuC,CAAC;AAEhE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE;QACN,gBAAgB,EAAE,MAAM,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,EAAE;QACP,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;QACrC,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,yBAAyB,EAAE,MAAM,CAAC;QAClC,qBAAqB,EAAE,MAAM,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,6BAA6B,EAAE,MAAM,CAAC;QACtC,uBAAuB,EAAE,MAAM,CAAC;QAChC,sBAAsB,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,MAAM,EAAE;QACN,WAAW,EAAE,OAAO,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,oBAAoB,EAAE,MAAM,EAAE,CAAC;QAC/B,uBAAuB,EAAE,MAAM,CAAC;QAChC,0BAA0B,EAAE,MAAM,CAAC;KACpC,CAAC;IACF,aAAa,EAAE;QACb,kBAAkB,EAAE,MAAM,CAAC;QAC3B,gBAAgB,EAAE,MAAM,CAAC;QACzB,sBAAsB,EAAE,OAAO,CAAC;QAChC,uBAAuB,EAAE,OAAO,CAAC;QACjC,uBAAuB,EAAE,OAAO,CAAC;QACjC,kBAAkB,EAAE,OAAO,CAAC;QAC5B,iBAAiB,EAAE,OAAO,CAAC;QAC3B,2BAA2B,EAAE,OAAO,CAAC;QACrC,qBAAqB,EAAE,OAAO,CAAC;QAC/B,yBAAyB,EAAE,MAAM,CAAC;KACnC,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;QAClC,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAwGD,wBAAgB,gBAAgB,CAAC,UAAU,SAAc,GAAG,YAAY,CAqCvE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAoB5F;AAED,eAAO,MAAM,oBAAoB,uzHAiEhC,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/daemon/config.ts"],"names":[],"mappings":"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"}
@@ -87,7 +87,12 @@ function withDefaults(raw) {
87
87
  const wt = raw.watchtower ?? {};
88
88
  const p = raw.policy ?? {};
89
89
  const notif = raw.notifications ?? {};
90
+ const notifDiscord = notif.discord ?? {};
91
+ const notifWebhook = notif.webhook ?? {};
92
+ const notifEmail = notif.email ?? {};
90
93
  const work = raw.work ?? {};
94
+ const compute = raw.compute ?? {};
95
+ const delivery = raw.delivery ?? {};
91
96
  return {
92
97
  wallet: {
93
98
  contract_address: str(w.contract_address),
@@ -141,6 +146,18 @@ function withDefaults(raw) {
141
146
  notify_on_channel_challenge: bool(notif.notify_on_channel_challenge, true),
142
147
  notify_on_low_balance: bool(notif.notify_on_low_balance, true),
143
148
  low_balance_threshold_eth: str(notif.low_balance_threshold_eth, "0.005"),
149
+ discord: { webhook_url: str(notifDiscord.webhook_url) },
150
+ webhook: {
151
+ url: str(notifWebhook.url),
152
+ headers: notifWebhook.headers ?? {},
153
+ },
154
+ email: {
155
+ smtp_host: str(notifEmail.smtp_host),
156
+ smtp_port: num(notifEmail.smtp_port, 587),
157
+ smtp_user: str(notifEmail.smtp_user),
158
+ smtp_pass: str(notifEmail.smtp_pass, "env:SMTP_PASS"),
159
+ to: str(notifEmail.to),
160
+ },
144
161
  },
145
162
  work: {
146
163
  handler: (str(work.handler, "noop")),
@@ -148,6 +165,24 @@ function withDefaults(raw) {
148
165
  http_url: str(work.http_url),
149
166
  http_auth_token: str(work.http_auth_token),
150
167
  },
168
+ compute: {
169
+ enabled: bool(compute.enabled, false),
170
+ gpu_spec: str(compute.gpu_spec),
171
+ rate_per_hour_wei: str(compute.rate_per_hour_wei, "0"),
172
+ max_concurrent_sessions: num(compute.max_concurrent_sessions, 1),
173
+ metering_interval_seconds: num(compute.metering_interval_seconds, 30),
174
+ report_interval_minutes: num(compute.report_interval_minutes, 15),
175
+ auto_accept_compute: bool(compute.auto_accept_compute, false),
176
+ min_session_hours: num(compute.min_session_hours, 1),
177
+ max_session_hours: num(compute.max_session_hours, 24),
178
+ compute_agreement_address: str(compute.compute_agreement_address),
179
+ },
180
+ delivery: {
181
+ max_file_size_mb: num(delivery.max_file_size_mb, 100),
182
+ max_job_size_mb: num(delivery.max_job_size_mb, 500),
183
+ auto_download: bool(delivery.auto_download, true),
184
+ serve_files: bool(delivery.serve_files, true),
185
+ },
151
186
  };
152
187
  }
153
188
  function loadDaemonConfig(configPath = exports.DAEMON_TOML) {
@@ -180,6 +215,9 @@ function loadDaemonConfig(configPath = exports.DAEMON_TOML) {
180
215
  // Resolve optional env: values silently (missing = disabled feature)
181
216
  config.notifications.telegram_bot_token = tryResolveEnvValue(config.notifications.telegram_bot_token);
182
217
  config.notifications.telegram_chat_id = tryResolveEnvValue(config.notifications.telegram_chat_id);
218
+ config.notifications.discord.webhook_url = tryResolveEnvValue(config.notifications.discord.webhook_url);
219
+ config.notifications.webhook.url = tryResolveEnvValue(config.notifications.webhook.url);
220
+ config.notifications.email.smtp_pass = tryResolveEnvValue(config.notifications.email.smtp_pass);
183
221
  config.work.http_auth_token = tryResolveEnvValue(config.work.http_auth_token);
184
222
  return config;
185
223
  }
@@ -262,10 +300,41 @@ notify_on_channel_challenge = true # Notify when watchtower submits a channel c
262
300
  notify_on_low_balance = false # Disabled by default — enable if you want balance alerts
263
301
  low_balance_threshold_eth = "0.005" # Balance alert threshold
264
302
 
303
+ [notifications.discord]
304
+ webhook_url = "" # Discord channel webhook URL (leave empty to disable)
305
+
306
+ [notifications.webhook]
307
+ url = "" # POST JSON {title, body, timestamp} to this URL (leave empty to disable)
308
+ # headers = { Authorization = "Bearer ..." } # Optional headers
309
+
310
+ [notifications.email]
311
+ smtp_host = "" # SMTP server hostname (leave empty to disable)
312
+ smtp_port = 587
313
+ smtp_user = "" # SMTP login / from address
314
+ smtp_pass = "env:SMTP_PASS" # Load from env, not hardcoded
315
+ to = "" # Recipient address
316
+
265
317
  [work]
266
318
  handler = "noop" # exec | http | noop
267
319
  exec_command = "" # called with agreementId and spec as args (exec mode)
268
320
  http_url = "" # POST {agreementId, specHash, deadline} as JSON (http mode)
269
321
  http_auth_token = "env:WORKER_AUTH_TOKEN"
322
+
323
+ [compute]
324
+ enabled = false # Enable GPU compute rental
325
+ gpu_spec = "" # GPU model identifier (e.g. nvidia-h100-80gb)
326
+ rate_per_hour_wei = "0" # Wei per GPU-hour (0 = disabled)
327
+ max_concurrent_sessions = 1 # Usually 1 (one GPU per session)
328
+ metering_interval_seconds = 30 # nvidia-smi poll interval
329
+ report_interval_minutes = 15 # Usage report generation interval
330
+ auto_accept_compute = false # Auto-accept compute proposals
331
+ min_session_hours = 1 # Minimum session duration
332
+ max_session_hours = 24 # Maximum session duration
333
+
334
+ [delivery]
335
+ max_file_size_mb = 100 # Maximum size for a single uploaded file (MB)
336
+ max_job_size_mb = 500 # Maximum total size for all files in a job (MB)
337
+ auto_download = true # Auto-download and verify files on delivery notification
338
+ serve_files = true # Serve file endpoints (/job/:id/files, /job/:id/manifest)
270
339
  `;
271
340
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/daemon/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/daemon/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6OA,4CAwCC;AAED,wCAoBC;AA3SD;;;;GAIG;AACH,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,yCAA+C;AAElC,QAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAChD,QAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAU,EAAE,aAAa,CAAC,CAAC;AACnD,QAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAU,EAAE,YAAY,CAAC,CAAC;AACjD,QAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAU,EAAE,YAAY,CAAC,CAAC;AACjD,QAAA,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAU,EAAE,WAAW,CAAC,CAAC;AAC/C,QAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAU,EAAE,aAAa,CAAC,CAAC;AAqFhE,SAAS,eAAe,CAAC,KAAa,EAAE,KAAa;IACnD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,6BAA6B,KAAK,GAAG,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,GAAG,CAAC,CAAU,EAAE,GAAG,GAAG,EAAE;IAC/B,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACzC,CAAC;AACD,SAAS,GAAG,CAAC,CAAU,EAAE,GAAW;IAClC,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACzC,CAAC;AACD,SAAS,IAAI,CAAC,CAAU,EAAE,GAAY;IACpC,OAAO,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1C,CAAC;AACD,SAAS,MAAM,CAAC,CAAU;IACxB,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAc,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,YAAY,CAAC,GAA4B;IAChD,MAAM,CAAC,GAAI,GAAG,CAAC,MAAkC,IAAI,EAAE,CAAC;IACxD,MAAM,CAAC,GAAI,GAAG,CAAC,OAAmC,IAAI,EAAE,CAAC;IACzD,MAAM,CAAC,GAAI,GAAG,CAAC,OAAmC,IAAI,EAAE,CAAC;IACzD,MAAM,CAAC,GAAI,GAAG,CAAC,KAAiC,IAAI,EAAE,CAAC;IACvD,MAAM,EAAE,GAAI,GAAG,CAAC,UAAsC,IAAI,EAAE,CAAC;IAC7D,MAAM,CAAC,GAAI,GAAG,CAAC,MAAkC,IAAI,EAAE,CAAC;IACxD,MAAM,KAAK,GAAI,GAAG,CAAC,aAAyC,IAAI,EAAE,CAAC;IACnE,MAAM,YAAY,GAAI,KAAK,CAAC,OAAmC,IAAI,EAAE,CAAC;IACtE,MAAM,YAAY,GAAI,KAAK,CAAC,OAAmC,IAAI,EAAE,CAAC;IACtE,MAAM,UAAU,GAAI,KAAK,CAAC,KAAiC,IAAI,EAAE,CAAC;IAClE,MAAM,IAAI,GAAQ,GAAG,CAAC,IAAoC,IAAI,EAAE,CAAC;IACjE,MAAM,OAAO,GAAK,GAAG,CAAC,OAAoC,IAAI,EAAE,CAAC;IACjE,MAAM,QAAQ,GAAI,GAAG,CAAC,QAAoC,IAAI,EAAE,CAAC;IAEjE,OAAO;QACL,MAAM,EAAE;YACN,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC;YACzC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC;YACnC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,wBAAwB,CAAC;SAC1D;QACD,OAAO,EAAE;YACP,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,0BAA0B,CAAC;YACnD,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC;YAC/B,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,4CAA4C,CAAC;SAC9E;QACD,OAAO,EAAE;YACP,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAmC;YACjE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;YACzB,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC;YACnC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC;YACnC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,OAAO,CAAC;YAChD,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;YACzB,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;SACxB;QACD,KAAK,EAAE;YACL,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC;YAC9B,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC;YACrC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;YACzB,yBAAyB,EAAE,GAAG,CAAC,CAAC,CAAC,yBAAyB,EAAE,EAAE,CAAC;YAC/D,qBAAqB,EAAE,GAAG,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC;YACtD,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;SAC5B;QACD,UAAU,EAAE;YACV,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;YAC/B,qBAAqB,EAAE,GAAG,CAAC,EAAE,CAAC,qBAAqB,EAAE,EAAE,CAAC;YACxD,6BAA6B,EAAE,GAAG,CAAC,EAAE,CAAC,6BAA6B,EAAE,CAAC,CAAC;YACvE,uBAAuB,EAAE,GAAG,CAAC,EAAE,CAAC,uBAAuB,CAAC;YACxD,sBAAsB,EAAE,GAAG,CAAC,EAAE,CAAC,sBAAsB,EAAE,EAAE,CAAC;SAC3D;QACD,MAAM,EAAE;YACN,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC;YACvC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC;YAC1C,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC;YACpD,uBAAuB,EAAE,GAAG,CAAC,CAAC,CAAC,uBAAuB,EAAE,EAAE,CAAC;YAC3D,0BAA0B,EAAE,GAAG,CAAC,CAAC,CAAC,0BAA0B,EAAE,GAAG,CAAC;SACnE;QACD,aAAa,EAAE;YACb,kBAAkB,EAAE,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;YAC3E,gBAAgB,EAAE,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;YACrE,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,IAAI,CAAC;YAChE,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC;YAClE,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC;YAClE,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC;YACxD,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC;YACtD,2BAA2B,EAAE,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE,IAAI,CAAC;YAC1E,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC;YAC9D,yBAAyB,EAAE,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,OAAO,CAAC;YACxE,OAAO,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;YACvD,OAAO,EAAE;gBACP,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC;gBAC1B,OAAO,EAAG,YAAY,CAAC,OAAkC,IAAI,EAAE;aAChE;YACD,KAAK,EAAE;gBACL,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;gBACpC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC;gBACzC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;gBACpC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,eAAe,CAAC;gBACrD,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;aACvB;SACF;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAA6B;YAChE,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;YACpC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5B,eAAe,EAAE,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;SAC3C;QACD,OAAO,EAAE;YACP,OAAO,EAAqB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;YACxD,QAAQ,EAAoB,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;YACjD,iBAAiB,EAAW,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC;YAC/D,uBAAuB,EAAK,GAAG,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAC;YACnE,yBAAyB,EAAG,GAAG,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;YACtE,uBAAuB,EAAK,GAAG,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;YACpE,mBAAmB,EAAS,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC;YACpE,iBAAiB,EAAW,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAC7D,iBAAiB,EAAW,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAC9D,yBAAyB,EAAG,GAAG,CAAC,OAAO,CAAC,yBAAyB,CAAC;SACnE;QACD,QAAQ,EAAE;YACR,gBAAgB,EAAE,GAAG,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC;YACrD,eAAe,EAAG,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC;YACpD,aAAa,EAAK,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC;YACpD,WAAW,EAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;SACnD;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,UAAU,GAAG,mBAAW;IACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,2BAA2B,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,IAAA,iBAAS,EAAC,GAAG,CAA4B,CAAC;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAEpC,kBAAkB;IAClB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,qDAAqD;IACrD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IAED,qEAAqE;IACrE,MAAM,CAAC,aAAa,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACtG,MAAM,CAAC,aAAa,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAClG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACxG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxF,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAChG,MAAM,CAAC,IAAI,CAAC,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAE9E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,cAAc,CAAC,MAAoB;IACjD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;QAC7D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,oBAAoB,CAAC;IAEzB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,oDAAoD,UAAU,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAA4B,CAAC;IAChE,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACxC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACjC,CAAC;AAEY,QAAA,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgGnC,CAAC"}
@@ -0,0 +1,24 @@
1
+ interface ProviderConfig {
2
+ enabled: boolean;
3
+ auth: string;
4
+ env?: string;
5
+ oauth_token_path?: string;
6
+ hosts: string[];
7
+ service_account_path?: string;
8
+ }
9
+ interface CredentialsConfig {
10
+ providers: Record<string, ProviderConfig>;
11
+ }
12
+ export declare const CREDENTIALS_PATH: string;
13
+ export declare function loadCredentials(): Promise<CredentialsConfig | null>;
14
+ export declare function getEnabledProviders(): Promise<Array<{
15
+ name: string;
16
+ env?: string;
17
+ hosts: string[];
18
+ auth: string;
19
+ hasKey: boolean;
20
+ }>>;
21
+ export declare function getDockerEnvFlags(): Promise<string[]>;
22
+ export declare function getProviderHosts(): Promise<string[]>;
23
+ export {};
24
+ //# sourceMappingURL=credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/daemon/credentials.ts"],"names":[],"mappings":"AAIA,UAAU,cAAc;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC3C;AAED,eAAO,MAAM,gBAAgB,QAAmE,CAAC;AAEjG,wBAAsB,eAAe,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAKzE;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,KAAK,CAAC;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC,CAAC,CAaF;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAS3D;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAG1D"}
@@ -0,0 +1,80 @@
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.CREDENTIALS_PATH = void 0;
37
+ exports.loadCredentials = loadCredentials;
38
+ exports.getEnabledProviders = getEnabledProviders;
39
+ exports.getDockerEnvFlags = getDockerEnvFlags;
40
+ exports.getProviderHosts = getProviderHosts;
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const os = __importStar(require("os"));
44
+ exports.CREDENTIALS_PATH = path.join(os.homedir(), ".arc402", "worker", "credentials.toml");
45
+ async function loadCredentials() {
46
+ if (!fs.existsSync(exports.CREDENTIALS_PATH))
47
+ return null;
48
+ const { parse } = await Promise.resolve().then(() => __importStar(require("smol-toml")));
49
+ const raw = fs.readFileSync(exports.CREDENTIALS_PATH, "utf-8");
50
+ return parse(raw);
51
+ }
52
+ async function getEnabledProviders() {
53
+ const creds = await loadCredentials();
54
+ if (!creds?.providers)
55
+ return [];
56
+ return Object.entries(creds.providers)
57
+ .filter(([_name, p]) => p.enabled)
58
+ .map(([name, p]) => ({
59
+ name,
60
+ env: p.env,
61
+ hosts: p.hosts || [],
62
+ auth: p.auth || "api_key",
63
+ hasKey: p.env ? !!process.env[p.env] : false,
64
+ }));
65
+ }
66
+ async function getDockerEnvFlags() {
67
+ const providers = await getEnabledProviders();
68
+ const flags = [];
69
+ for (const p of providers) {
70
+ if (p.env && process.env[p.env]) {
71
+ flags.push("-e", `${p.env}=${process.env[p.env]}`);
72
+ }
73
+ }
74
+ return flags;
75
+ }
76
+ async function getProviderHosts() {
77
+ const providers = await getEnabledProviders();
78
+ return providers.flatMap(p => p.hosts);
79
+ }
80
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/daemon/credentials.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,0CAKC;AAED,kDAmBC;AAED,8CASC;AAED,4CAGC;AA7DD,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAeZ,QAAA,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAE1F,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,wBAAgB,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,MAAM,EAAE,KAAK,EAAE,GAAG,wDAAa,WAAW,GAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,wBAAgB,EAAE,OAAO,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,GAAG,CAAiC,CAAC;AACpD,CAAC;AAEM,KAAK,UAAU,mBAAmB;IAOvC,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;IACtC,IAAI,CAAC,KAAK,EAAE,SAAS;QAAE,OAAO,EAAE,CAAC;IAEjC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;SACnC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnB,IAAI;QACJ,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;QACpB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,SAAS;QACzB,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK;KAC7C,CAAC,CAAC,CAAC;AACR,CAAC;AAEM,KAAK,UAAU,iBAAiB;IACrC,MAAM,SAAS,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAEM,KAAK,UAAU,gBAAgB;IACpC,MAAM,SAAS,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC9C,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,35 @@
1
+ export interface VerificationResult {
2
+ ok: boolean;
3
+ agreementId: string;
4
+ rootHashMatch: boolean;
5
+ fileResults: Array<{
6
+ name: string;
7
+ hashMatch: boolean;
8
+ expected: string;
9
+ actual: string;
10
+ }>;
11
+ error?: string;
12
+ }
13
+ export declare class DeliveryClient {
14
+ private readonly autoDownload;
15
+ log: (entry: Record<string, unknown>) => void;
16
+ constructor(opts?: {
17
+ autoDownload?: boolean;
18
+ });
19
+ /**
20
+ * Handle an incoming delivery notification.
21
+ * If auto_download is true, downloads and verifies the files.
22
+ * Returns a VerificationResult.
23
+ */
24
+ handleDeliveryNotification(params: {
25
+ agreementId: string;
26
+ deliverableHash: string;
27
+ filesUrl?: string;
28
+ }): Promise<VerificationResult | null>;
29
+ private deriveManifestUrl;
30
+ private downloadAndVerify;
31
+ private computeRootHash;
32
+ private fetchJson;
33
+ private fetchBytes;
34
+ }
35
+ //# sourceMappingURL=delivery-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-client.d.ts","sourceRoot":"","sources":["../../src/daemon/delivery-client.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAY;gBAE7C,IAAI,GAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAO;IAIjD;;;;OAIG;IACG,0BAA0B,CAAC,MAAM,EAAE;QACvC,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IA8EtC,OAAO,CAAC,iBAAiB;YAiBX,iBAAiB;IAuB/B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,SAAS;IA6BjB,OAAO,CAAC,UAAU;CAiCnB"}