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
@@ -0,0 +1,281 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerTunnelCommands = registerTunnelCommands;
7
+ const ethers_1 = require("ethers");
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const os_1 = __importDefault(require("os"));
11
+ const child_process_1 = require("child_process");
12
+ const config_1 = require("../config");
13
+ const spinner_1 = require("../ui/spinner");
14
+ const colors_1 = require("../ui/colors");
15
+ const API_BASE = "https://api.arc402.xyz";
16
+ const ARC402_DIR = path_1.default.join(os_1.default.homedir(), ".arc402");
17
+ const TUNNEL_TOKEN_PATH = path_1.default.join(ARC402_DIR, "tunnel-token");
18
+ const TUNNEL_ID_PATH = path_1.default.join(ARC402_DIR, "tunnel-id");
19
+ const TUNNEL_PID_PATH = path_1.default.join(ARC402_DIR, "tunnel.pid");
20
+ function registerTunnelCommands(program) {
21
+ const tunnel = program
22
+ .command("tunnel")
23
+ .description("Manage Cloudflare Tunnel for your agent endpoint");
24
+ // ── arc402 tunnel setup ──────────────────────────────────────────────
25
+ tunnel
26
+ .command("setup")
27
+ .description("Provision a Cloudflare Tunnel for your agent's subdomain")
28
+ .requiredOption("--subdomain <name>", "Subdomain to provision (e.g. megabrain)")
29
+ .action(async (opts) => {
30
+ const config = (0, config_1.loadConfig)();
31
+ const subdomain = opts.subdomain.toLowerCase();
32
+ if (!config.privateKey) {
33
+ console.error(colors_1.c.red("✗ No private key found in ~/.arc402/config.json"));
34
+ console.error(" Run 'arc402 config set privateKey <key>' or set up your wallet first.");
35
+ process.exit(1);
36
+ }
37
+ const wallet = new ethers_1.ethers.Wallet(config.privateKey);
38
+ const walletAddress = config.walletContractAddress || wallet.address;
39
+ console.log(colors_1.c.dim(`Agent wallet: ${walletAddress}`));
40
+ console.log(colors_1.c.dim(`Subdomain: ${subdomain}.arc402.xyz`));
41
+ console.log();
42
+ // Step 1: Check availability
43
+ const checkSpinner = (0, spinner_1.startSpinner)("Checking subdomain availability…");
44
+ let checkRes;
45
+ try {
46
+ checkRes = await fetch(`${API_BASE}/check/${subdomain}`);
47
+ }
48
+ catch {
49
+ checkSpinner.fail("Failed to reach api.arc402.xyz");
50
+ process.exit(1);
51
+ }
52
+ const checkData = await checkRes.json();
53
+ if (!checkData.available) {
54
+ if (fs_1.default.existsSync(TUNNEL_TOKEN_PATH)) {
55
+ checkSpinner.succeed(`${subdomain}.arc402.xyz already registered (you have a token)`);
56
+ console.log(colors_1.c.dim(" Use 'arc402 tunnel start' to connect."));
57
+ return;
58
+ }
59
+ checkSpinner.fail(`${subdomain}.arc402.xyz is already taken`);
60
+ process.exit(1);
61
+ }
62
+ checkSpinner.succeed(`${subdomain}.arc402.xyz is available`);
63
+ // Step 2: Sign the provision request
64
+ const signSpinner = (0, spinner_1.startSpinner)("Signing provision request…");
65
+ const timestamp = Math.floor(Date.now() / 1000);
66
+ const message = `arc402-provision:${subdomain}:${timestamp}`;
67
+ const signature = await wallet.signMessage(message);
68
+ signSpinner.succeed("Request signed");
69
+ // Step 3: Call the provisioner API
70
+ const provSpinner = (0, spinner_1.startSpinner)("Provisioning tunnel…");
71
+ let provRes;
72
+ try {
73
+ provRes = await fetch(`${API_BASE}/tunnel/provision`, {
74
+ method: "POST",
75
+ headers: { "Content-Type": "application/json" },
76
+ body: JSON.stringify({ subdomain, walletAddress, signature, timestamp }),
77
+ });
78
+ }
79
+ catch {
80
+ provSpinner.fail("Failed to reach provisioner API");
81
+ process.exit(1);
82
+ }
83
+ const provData = await provRes.json();
84
+ if (!provData.success || !provData.token) {
85
+ provSpinner.fail(`Provisioning failed: ${provData.error || "unknown error"}`);
86
+ process.exit(1);
87
+ }
88
+ provSpinner.succeed(`Tunnel created: ${provData.tunnelId}`);
89
+ // Step 4: Save tunnel token + ID
90
+ fs_1.default.mkdirSync(ARC402_DIR, { recursive: true });
91
+ fs_1.default.writeFileSync(TUNNEL_TOKEN_PATH, provData.token, { mode: 0o600 });
92
+ fs_1.default.writeFileSync(TUNNEL_ID_PATH, provData.tunnelId, { mode: 0o600 });
93
+ console.log(colors_1.c.green("✓ Tunnel token saved to ~/.arc402/tunnel-token"));
94
+ // Step 5: Check if cloudflared is installed
95
+ let hasCloudflared = false;
96
+ try {
97
+ (0, child_process_1.execSync)("which cloudflared", { stdio: "pipe" });
98
+ hasCloudflared = true;
99
+ console.log(colors_1.c.green("✓ cloudflared found"));
100
+ }
101
+ catch {
102
+ console.log(colors_1.c.yellow("⚠ cloudflared not found — install it to connect:"));
103
+ const platform = os_1.default.platform();
104
+ if (platform === "darwin") {
105
+ console.log(colors_1.c.dim(" brew install cloudflare/cloudflare/cloudflared"));
106
+ }
107
+ else if (platform === "linux") {
108
+ console.log(colors_1.c.dim(" curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb"));
109
+ console.log(colors_1.c.dim(" sudo dpkg -i cloudflared.deb"));
110
+ }
111
+ else {
112
+ console.log(colors_1.c.dim(" https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/"));
113
+ }
114
+ }
115
+ // Step 6: Update endpoint in config
116
+ const fqdn = `https://${subdomain}.arc402.xyz`;
117
+ (0, config_1.saveConfig)({ ...config, endpoint: fqdn });
118
+ console.log(colors_1.c.green(`✓ Endpoint set to ${fqdn}`));
119
+ console.log();
120
+ if (hasCloudflared) {
121
+ console.log(colors_1.c.white("Tunnel provisioned! Start it with:"));
122
+ console.log(colors_1.c.white(" arc402 tunnel start"));
123
+ }
124
+ else {
125
+ console.log(colors_1.c.white("Tunnel provisioned! Install cloudflared, then:"));
126
+ console.log(colors_1.c.white(" arc402 tunnel start"));
127
+ }
128
+ });
129
+ // ── arc402 tunnel start ──────────────────────────────────────────────
130
+ tunnel
131
+ .command("start")
132
+ .description("Start the Cloudflare Tunnel (runs cloudflared in background)")
133
+ .option("--foreground", "Run in foreground instead of background")
134
+ .action(async (opts) => {
135
+ if (!fs_1.default.existsSync(TUNNEL_TOKEN_PATH)) {
136
+ console.error(colors_1.c.red("✗ No tunnel token found. Run 'arc402 tunnel setup' first."));
137
+ process.exit(1);
138
+ }
139
+ const token = fs_1.default.readFileSync(TUNNEL_TOKEN_PATH, "utf-8").trim();
140
+ try {
141
+ (0, child_process_1.execSync)("which cloudflared", { stdio: "pipe" });
142
+ }
143
+ catch {
144
+ console.error(colors_1.c.red("✗ cloudflared not installed. Install it and try again."));
145
+ process.exit(1);
146
+ }
147
+ if (opts.foreground) {
148
+ console.log(colors_1.c.dim("Starting tunnel in foreground (Ctrl+C to stop)…"));
149
+ const child = (0, child_process_1.spawn)("cloudflared", ["tunnel", "run", "--token", token], {
150
+ stdio: "inherit",
151
+ });
152
+ child.on("exit", (code) => process.exit(code ?? 0));
153
+ }
154
+ else {
155
+ console.log(colors_1.c.dim("Starting tunnel in background…"));
156
+ const child = (0, child_process_1.spawn)("cloudflared", ["tunnel", "run", "--token", token], {
157
+ detached: true,
158
+ stdio: "ignore",
159
+ });
160
+ child.unref();
161
+ fs_1.default.writeFileSync(TUNNEL_PID_PATH, String(child.pid));
162
+ // Wait and verify
163
+ await new Promise((r) => setTimeout(r, 3000));
164
+ try {
165
+ process.kill(child.pid, 0);
166
+ console.log(colors_1.c.green(`✓ Tunnel running (PID ${child.pid})`));
167
+ }
168
+ catch {
169
+ console.error(colors_1.c.red("✗ Tunnel process died — run with --foreground to see logs"));
170
+ process.exit(1);
171
+ }
172
+ }
173
+ });
174
+ // ── arc402 tunnel stop ───────────────────────────────────────────────
175
+ tunnel
176
+ .command("stop")
177
+ .description("Stop the running Cloudflare Tunnel")
178
+ .action(async () => {
179
+ if (fs_1.default.existsSync(TUNNEL_PID_PATH)) {
180
+ const pid = parseInt(fs_1.default.readFileSync(TUNNEL_PID_PATH, "utf-8").trim(), 10);
181
+ try {
182
+ process.kill(pid, "SIGTERM");
183
+ fs_1.default.unlinkSync(TUNNEL_PID_PATH);
184
+ console.log(colors_1.c.green(`✓ Tunnel stopped (PID ${pid})`));
185
+ return;
186
+ }
187
+ catch {
188
+ fs_1.default.unlinkSync(TUNNEL_PID_PATH);
189
+ }
190
+ }
191
+ // Fallback: kill any cloudflared tunnel run process
192
+ try {
193
+ (0, child_process_1.execSync)("pkill -f 'cloudflared tunnel run'", { stdio: "pipe" });
194
+ console.log(colors_1.c.green("✓ Tunnel stopped"));
195
+ }
196
+ catch {
197
+ console.log(colors_1.c.yellow("⚠ No tunnel process found"));
198
+ }
199
+ });
200
+ // ── arc402 tunnel status ─────────────────────────────────────────────
201
+ tunnel
202
+ .command("status")
203
+ .description("Check tunnel connection status")
204
+ .action(async () => {
205
+ const config = (0, config_1.loadConfig)();
206
+ const endpoint = config.endpoint || "";
207
+ const match = endpoint.match(/^https:\/\/([^.]+)\.arc402\.xyz/);
208
+ if (!match) {
209
+ console.log(colors_1.c.yellow("⚠ No arc402.xyz subdomain configured"));
210
+ console.log(colors_1.c.dim(" Run 'arc402 tunnel setup --subdomain <name>' first"));
211
+ return;
212
+ }
213
+ const subdomain = match[1];
214
+ const statusSpinner = (0, spinner_1.startSpinner)(`Checking ${subdomain}.arc402.xyz…`);
215
+ try {
216
+ const res = await fetch(`${API_BASE}/tunnel/status/${subdomain}`);
217
+ const data = await res.json();
218
+ if (data.connected) {
219
+ statusSpinner.succeed(`${data.subdomain} — connected`);
220
+ }
221
+ else if (data.exists) {
222
+ statusSpinner.succeed(`${data.subdomain} — DNS exists, tunnel not connected`);
223
+ console.log(colors_1.c.dim(" Run 'arc402 tunnel start' to connect"));
224
+ }
225
+ else {
226
+ statusSpinner.fail(`${subdomain}.arc402.xyz — not provisioned`);
227
+ }
228
+ }
229
+ catch {
230
+ statusSpinner.fail("Failed to reach api.arc402.xyz");
231
+ }
232
+ });
233
+ // ── arc402 tunnel teardown ───────────────────────────────────────────
234
+ tunnel
235
+ .command("teardown")
236
+ .description("Delete your tunnel and DNS record")
237
+ .action(async () => {
238
+ const config = (0, config_1.loadConfig)();
239
+ if (!config.privateKey) {
240
+ console.error(colors_1.c.red("✗ No private key found"));
241
+ process.exit(1);
242
+ }
243
+ const endpoint = config.endpoint || "";
244
+ const match = endpoint.match(/^https:\/\/([^.]+)\.arc402\.xyz/);
245
+ if (!match) {
246
+ console.error(colors_1.c.red("✗ No arc402.xyz subdomain in config"));
247
+ process.exit(1);
248
+ }
249
+ const subdomain = match[1];
250
+ const wallet = new ethers_1.ethers.Wallet(config.privateKey);
251
+ const walletAddress = config.walletContractAddress || wallet.address;
252
+ const timestamp = Math.floor(Date.now() / 1000);
253
+ const message = `arc402-provision:${subdomain}:${timestamp}`;
254
+ const signature = await wallet.signMessage(message);
255
+ const teardownSpinner = (0, spinner_1.startSpinner)("Deprovisioning tunnel…");
256
+ try {
257
+ const res = await fetch(`${API_BASE}/tunnel/deprovision`, {
258
+ method: "DELETE",
259
+ headers: { "Content-Type": "application/json" },
260
+ body: JSON.stringify({ subdomain, walletAddress, signature, timestamp }),
261
+ });
262
+ const data = await res.json();
263
+ if (data.success) {
264
+ [TUNNEL_TOKEN_PATH, TUNNEL_ID_PATH, TUNNEL_PID_PATH].forEach((f) => {
265
+ try {
266
+ fs_1.default.unlinkSync(f);
267
+ }
268
+ catch { /* ignore */ }
269
+ });
270
+ teardownSpinner.succeed(`${subdomain}.arc402.xyz deprovisioned`);
271
+ }
272
+ else {
273
+ teardownSpinner.fail(data.error || "Unknown error");
274
+ }
275
+ }
276
+ catch {
277
+ teardownSpinner.fail("Failed to reach provisioner API");
278
+ }
279
+ });
280
+ }
281
+ //# sourceMappingURL=tunnel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../src/commands/tunnel.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgdpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+vF7D"}
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8kBpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAw2F7D"}