@sequence0/blockclaw 2.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 (190) hide show
  1. package/README.md +97 -0
  2. package/dist/agent/binary.d.ts +15 -0
  3. package/dist/agent/binary.d.ts.map +1 -0
  4. package/dist/agent/binary.js +172 -0
  5. package/dist/agent/binary.js.map +1 -0
  6. package/dist/agent/chains.d.ts +26 -0
  7. package/dist/agent/chains.d.ts.map +1 -0
  8. package/dist/agent/chains.js +123 -0
  9. package/dist/agent/chains.js.map +1 -0
  10. package/dist/agent/client.d.ts +484 -0
  11. package/dist/agent/client.d.ts.map +1 -0
  12. package/dist/agent/client.js +448 -0
  13. package/dist/agent/client.js.map +1 -0
  14. package/dist/agent/config.d.ts +75 -0
  15. package/dist/agent/config.d.ts.map +1 -0
  16. package/dist/agent/config.js +133 -0
  17. package/dist/agent/config.js.map +1 -0
  18. package/dist/agent/process.d.ts +36 -0
  19. package/dist/agent/process.d.ts.map +1 -0
  20. package/dist/agent/process.js +208 -0
  21. package/dist/agent/process.js.map +1 -0
  22. package/dist/agent/wallet.d.ts +43 -0
  23. package/dist/agent/wallet.d.ts.map +1 -0
  24. package/dist/agent/wallet.js +146 -0
  25. package/dist/agent/wallet.js.map +1 -0
  26. package/dist/ai/brain.d.ts +21 -0
  27. package/dist/ai/brain.d.ts.map +1 -0
  28. package/dist/ai/brain.js +117 -0
  29. package/dist/ai/brain.js.map +1 -0
  30. package/dist/ai/prompts.d.ts +15 -0
  31. package/dist/ai/prompts.d.ts.map +1 -0
  32. package/dist/ai/prompts.js +67 -0
  33. package/dist/ai/prompts.js.map +1 -0
  34. package/dist/ai/rules.d.ts +19 -0
  35. package/dist/ai/rules.d.ts.map +1 -0
  36. package/dist/ai/rules.js +143 -0
  37. package/dist/ai/rules.js.map +1 -0
  38. package/dist/core/detector.d.ts +16 -0
  39. package/dist/core/detector.d.ts.map +1 -0
  40. package/dist/core/detector.js +90 -0
  41. package/dist/core/detector.js.map +1 -0
  42. package/dist/core/healer.d.ts +62 -0
  43. package/dist/core/healer.d.ts.map +1 -0
  44. package/dist/core/healer.js +355 -0
  45. package/dist/core/healer.js.map +1 -0
  46. package/dist/core/heartbeat.d.ts +67 -0
  47. package/dist/core/heartbeat.d.ts.map +1 -0
  48. package/dist/core/heartbeat.js +426 -0
  49. package/dist/core/heartbeat.js.map +1 -0
  50. package/dist/core/memory.d.ts +57 -0
  51. package/dist/core/memory.d.ts.map +1 -0
  52. package/dist/core/memory.js +149 -0
  53. package/dist/core/memory.js.map +1 -0
  54. package/dist/core/updater.d.ts +16 -0
  55. package/dist/core/updater.d.ts.map +1 -0
  56. package/dist/core/updater.js +107 -0
  57. package/dist/core/updater.js.map +1 -0
  58. package/dist/index.d.ts +3 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +97 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/interface/commands/ask.d.ts +3 -0
  63. package/dist/interface/commands/ask.d.ts.map +1 -0
  64. package/dist/interface/commands/ask.js +39 -0
  65. package/dist/interface/commands/ask.js.map +1 -0
  66. package/dist/interface/commands/backup.d.ts +3 -0
  67. package/dist/interface/commands/backup.d.ts.map +1 -0
  68. package/dist/interface/commands/backup.js +576 -0
  69. package/dist/interface/commands/backup.js.map +1 -0
  70. package/dist/interface/commands/config.d.ts +3 -0
  71. package/dist/interface/commands/config.d.ts.map +1 -0
  72. package/dist/interface/commands/config.js +107 -0
  73. package/dist/interface/commands/config.js.map +1 -0
  74. package/dist/interface/commands/daemon.d.ts +3 -0
  75. package/dist/interface/commands/daemon.d.ts.map +1 -0
  76. package/dist/interface/commands/daemon.js +162 -0
  77. package/dist/interface/commands/daemon.js.map +1 -0
  78. package/dist/interface/commands/doctor.d.ts +3 -0
  79. package/dist/interface/commands/doctor.d.ts.map +1 -0
  80. package/dist/interface/commands/doctor.js +143 -0
  81. package/dist/interface/commands/doctor.js.map +1 -0
  82. package/dist/interface/commands/earnings.d.ts +3 -0
  83. package/dist/interface/commands/earnings.d.ts.map +1 -0
  84. package/dist/interface/commands/earnings.js +165 -0
  85. package/dist/interface/commands/earnings.js.map +1 -0
  86. package/dist/interface/commands/health.d.ts +3 -0
  87. package/dist/interface/commands/health.d.ts.map +1 -0
  88. package/dist/interface/commands/health.js +48 -0
  89. package/dist/interface/commands/health.js.map +1 -0
  90. package/dist/interface/commands/history.d.ts +3 -0
  91. package/dist/interface/commands/history.d.ts.map +1 -0
  92. package/dist/interface/commands/history.js +113 -0
  93. package/dist/interface/commands/history.js.map +1 -0
  94. package/dist/interface/commands/info.d.ts +3 -0
  95. package/dist/interface/commands/info.d.ts.map +1 -0
  96. package/dist/interface/commands/info.js +82 -0
  97. package/dist/interface/commands/info.js.map +1 -0
  98. package/dist/interface/commands/logs.d.ts +3 -0
  99. package/dist/interface/commands/logs.d.ts.map +1 -0
  100. package/dist/interface/commands/logs.js +98 -0
  101. package/dist/interface/commands/logs.js.map +1 -0
  102. package/dist/interface/commands/menu.d.ts +4 -0
  103. package/dist/interface/commands/menu.d.ts.map +1 -0
  104. package/dist/interface/commands/menu.js +156 -0
  105. package/dist/interface/commands/menu.js.map +1 -0
  106. package/dist/interface/commands/receive.d.ts +3 -0
  107. package/dist/interface/commands/receive.d.ts.map +1 -0
  108. package/dist/interface/commands/receive.js +81 -0
  109. package/dist/interface/commands/receive.js.map +1 -0
  110. package/dist/interface/commands/register.d.ts +3 -0
  111. package/dist/interface/commands/register.d.ts.map +1 -0
  112. package/dist/interface/commands/register.js +231 -0
  113. package/dist/interface/commands/register.js.map +1 -0
  114. package/dist/interface/commands/restart.d.ts +3 -0
  115. package/dist/interface/commands/restart.d.ts.map +1 -0
  116. package/dist/interface/commands/restart.js +154 -0
  117. package/dist/interface/commands/restart.js.map +1 -0
  118. package/dist/interface/commands/send.d.ts +3 -0
  119. package/dist/interface/commands/send.d.ts.map +1 -0
  120. package/dist/interface/commands/send.js +108 -0
  121. package/dist/interface/commands/send.js.map +1 -0
  122. package/dist/interface/commands/service.d.ts +3 -0
  123. package/dist/interface/commands/service.d.ts.map +1 -0
  124. package/dist/interface/commands/service.js +474 -0
  125. package/dist/interface/commands/service.js.map +1 -0
  126. package/dist/interface/commands/setup.d.ts +5 -0
  127. package/dist/interface/commands/setup.d.ts.map +1 -0
  128. package/dist/interface/commands/setup.js +410 -0
  129. package/dist/interface/commands/setup.js.map +1 -0
  130. package/dist/interface/commands/start.d.ts +3 -0
  131. package/dist/interface/commands/start.d.ts.map +1 -0
  132. package/dist/interface/commands/start.js +171 -0
  133. package/dist/interface/commands/start.js.map +1 -0
  134. package/dist/interface/commands/status.d.ts +3 -0
  135. package/dist/interface/commands/status.d.ts.map +1 -0
  136. package/dist/interface/commands/status.js +77 -0
  137. package/dist/interface/commands/status.js.map +1 -0
  138. package/dist/interface/commands/stop.d.ts +3 -0
  139. package/dist/interface/commands/stop.d.ts.map +1 -0
  140. package/dist/interface/commands/stop.js +62 -0
  141. package/dist/interface/commands/stop.js.map +1 -0
  142. package/dist/interface/commands/update.d.ts +3 -0
  143. package/dist/interface/commands/update.d.ts.map +1 -0
  144. package/dist/interface/commands/update.js +53 -0
  145. package/dist/interface/commands/update.js.map +1 -0
  146. package/dist/interface/commands/wallet.d.ts +3 -0
  147. package/dist/interface/commands/wallet.d.ts.map +1 -0
  148. package/dist/interface/commands/wallet.js +446 -0
  149. package/dist/interface/commands/wallet.js.map +1 -0
  150. package/dist/interface/commands/webhook.d.ts +3 -0
  151. package/dist/interface/commands/webhook.d.ts.map +1 -0
  152. package/dist/interface/commands/webhook.js +99 -0
  153. package/dist/interface/commands/webhook.js.map +1 -0
  154. package/dist/interface/commands/withdraw.d.ts +3 -0
  155. package/dist/interface/commands/withdraw.d.ts.map +1 -0
  156. package/dist/interface/commands/withdraw.js +261 -0
  157. package/dist/interface/commands/withdraw.js.map +1 -0
  158. package/dist/interface/interactive.d.ts +43 -0
  159. package/dist/interface/interactive.d.ts.map +1 -0
  160. package/dist/interface/interactive.js +276 -0
  161. package/dist/interface/interactive.js.map +1 -0
  162. package/dist/interface/logo.d.ts +2 -0
  163. package/dist/interface/logo.d.ts.map +1 -0
  164. package/dist/interface/logo.js +21 -0
  165. package/dist/interface/logo.js.map +1 -0
  166. package/dist/interface/webhooks.d.ts +19 -0
  167. package/dist/interface/webhooks.d.ts.map +1 -0
  168. package/dist/interface/webhooks.js +172 -0
  169. package/dist/interface/webhooks.js.map +1 -0
  170. package/dist/utils/format.d.ts +19 -0
  171. package/dist/utils/format.d.ts.map +1 -0
  172. package/dist/utils/format.js +107 -0
  173. package/dist/utils/format.js.map +1 -0
  174. package/dist/utils/logger.d.ts +20 -0
  175. package/dist/utils/logger.d.ts.map +1 -0
  176. package/dist/utils/logger.js +47 -0
  177. package/dist/utils/logger.js.map +1 -0
  178. package/dist/utils/paths.d.ts +35 -0
  179. package/dist/utils/paths.d.ts.map +1 -0
  180. package/dist/utils/paths.js +45 -0
  181. package/dist/utils/paths.js.map +1 -0
  182. package/dist/utils/platform.d.ts +26 -0
  183. package/dist/utils/platform.d.ts.map +1 -0
  184. package/dist/utils/platform.js +72 -0
  185. package/dist/utils/platform.js.map +1 -0
  186. package/dist/version.d.ts +3 -0
  187. package/dist/version.d.ts.map +1 -0
  188. package/dist/version.js +3 -0
  189. package/dist/version.js.map +1 -0
  190. package/package.json +67 -0
package/README.md ADDED
@@ -0,0 +1,97 @@
1
+ # BlockClaw
2
+
3
+ AI-powered node runner CLI for the **Sequence0** threshold signing network.
4
+
5
+ Run a node, earn passive income across 81 chains. Zero custody. Zero complexity.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install -g @sequence0/blockclaw
11
+ ```
12
+
13
+ Or via curl:
14
+
15
+ ```bash
16
+ curl -fsSL https://install.sequence0.network | sh
17
+ ```
18
+
19
+ ## Quick Start
20
+
21
+ ```bash
22
+ blockclaw
23
+ ```
24
+
25
+ First time? BlockClaw automatically launches the setup wizard:
26
+
27
+ - Downloads the agent binary
28
+ - Checks system requirements
29
+ - Configures your node
30
+ - Connects to peers
31
+ - Gets you running in minutes
32
+
33
+ ## Commands
34
+
35
+ | Command | Description |
36
+ |---------|-------------|
37
+ | `blockclaw setup` | First-time setup wizard |
38
+ | `blockclaw start` | Start the agent node |
39
+ | `blockclaw stop` | Stop the agent |
40
+ | `blockclaw status` | Health overview |
41
+ | `blockclaw register` | Register on-chain (earn fees) |
42
+ | `blockclaw earnings` | View signing revenue |
43
+ | `blockclaw wallet create` | Create a threshold wallet |
44
+ | `blockclaw send` | Sign and send a transaction |
45
+ | `blockclaw doctor` | Run diagnostics |
46
+ | `blockclaw ask "question"` | Ask AI about your node |
47
+
48
+ Every command works with **zero flags** — just type the command and follow the prompts.
49
+
50
+ Power users can skip prompts with flags:
51
+
52
+ ```bash
53
+ blockclaw start --network mainnet --daemon
54
+ blockclaw wallet create --id my-wallet --curve secp256k1
55
+ blockclaw send --wallet my-wallet --chain ethereum --to 0x... --amount 0.1
56
+ ```
57
+
58
+ ## How It Works
59
+
60
+ BlockClaw is a standalone CLI that downloads and manages the Sequence0 agent binary internally.
61
+ You do not need to install `@sequence0/agent` separately — BlockClaw handles everything.
62
+
63
+ 1. **Install** — `curl -fsSL https://install.sequence0.network | sh` or `npm install -g @sequence0/blockclaw`
64
+ 2. **Setup** — `blockclaw` (auto-detects first run, downloads the agent binary)
65
+ 3. **Register** — `blockclaw register` (0.1 ETH, free for first 1000)
66
+ 4. **Earn** — Your node participates in threshold signing across 81 chains
67
+ 5. **Check** — `blockclaw earnings` to see revenue
68
+
69
+ BlockClaw communicates with the agent process via IPC (Unix domain socket at `~/.sequence0/agent.sock`), not REST API.
70
+
71
+ ## Self-Healing
72
+
73
+ BlockClaw monitors your node 24/7:
74
+
75
+ - Heartbeat monitoring (detects crashes in ~120s)
76
+ - Automatic restart with exponential backoff
77
+ - Port conflict detection and resolution
78
+ - Disk/memory usage alerts
79
+ - Webhook notifications (Discord, Slack, Telegram)
80
+
81
+ ## Requirements
82
+
83
+ - Node.js 18+
84
+ - 2+ CPU cores
85
+ - 2GB RAM
86
+ - 1GB disk space
87
+
88
+ ## Links
89
+
90
+ - Website: https://sequence0.network
91
+ - Docs: https://sequence0.network/docs
92
+ - Explorer: https://explorer.sequence0.network
93
+ - GitHub: https://github.com/sequence0network/sequence0
94
+
95
+ ## License
96
+
97
+ MIT
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Resolution order for finding the agent binary:
3
+ * 1. PATH (already installed globally)
4
+ * 2. ~/.sequence0/bin/ (curl installer or BlockClaw-managed download)
5
+ * 3. npm platform package (internal — BlockClaw manages this automatically)
6
+ * 4. Download from install.sequence0.network
7
+ */
8
+ export declare function resolveBinary(): Promise<string>;
9
+ /** Download the binary from the install server */
10
+ export declare function downloadBinary(version?: string): Promise<string>;
11
+ /** Verify binary SHA256 against the install server */
12
+ export declare function verifyBinary(binPath: string, version?: string): Promise<boolean>;
13
+ /** Get the version of a binary */
14
+ export declare function getBinaryVersion(binPath: string): Promise<string | null>;
15
+ //# sourceMappingURL=binary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../src/agent/binary.ts"],"names":[],"mappings":"AAeA;;;;;;GAMG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CA4BrD;AAED,kDAAkD;AAClD,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA8CtE;AAED,sDAAsD;AACtD,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAuCtF;AAED,kCAAkC;AAClC,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQ9E"}
@@ -0,0 +1,172 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { execFile } from "node:child_process";
4
+ import { promisify } from "node:util";
5
+ import { createHash } from "node:crypto";
6
+ import { pipeline } from "node:stream/promises";
7
+ import { createWriteStream } from "node:fs";
8
+ import { BIN_DIR, INSTALL_URL, ensureDir } from "../utils/paths.js";
9
+ import { getBinaryFilename, getPlatformPackage } from "../utils/platform.js";
10
+ import { logger } from "../utils/logger.js";
11
+ const execFileAsync = promisify(execFile);
12
+ const BINARY_NAME = "sequence0-agent";
13
+ /**
14
+ * Resolution order for finding the agent binary:
15
+ * 1. PATH (already installed globally)
16
+ * 2. ~/.sequence0/bin/ (curl installer or BlockClaw-managed download)
17
+ * 3. npm platform package (internal — BlockClaw manages this automatically)
18
+ * 4. Download from install.sequence0.network
19
+ */
20
+ export async function resolveBinary() {
21
+ // 1. Check PATH
22
+ const pathBin = await findInPath();
23
+ if (pathBin) {
24
+ logger.debug(`Found binary in PATH: ${pathBin}`);
25
+ return pathBin;
26
+ }
27
+ // 2. Check ~/.sequence0/bin/
28
+ const localBin = path.join(BIN_DIR, BINARY_NAME);
29
+ if (fs.existsSync(localBin) && isExecutable(localBin)) {
30
+ logger.debug(`Found binary at: ${localBin}`);
31
+ return localBin;
32
+ }
33
+ // 3. Check npm platform package
34
+ const npmBin = findNpmBinary();
35
+ if (npmBin) {
36
+ logger.debug(`Found binary via npm package: ${npmBin}`);
37
+ return npmBin;
38
+ }
39
+ // 4. Not found — needs download
40
+ throw new Error(`Sequence0 agent binary not found.\n` +
41
+ ` Run 'blockclaw setup' to download and configure the agent binary.\n` +
42
+ ` Or: curl -fsSL https://install.sequence0.network | sh`);
43
+ }
44
+ /** Download the binary from the install server */
45
+ export async function downloadBinary(version) {
46
+ const ver = version ?? "latest";
47
+ const filename = getBinaryFilename();
48
+ const url = `${INSTALL_URL}/releases/${ver}/${filename}`;
49
+ ensureDir(BIN_DIR);
50
+ const destPath = path.join(BIN_DIR, BINARY_NAME);
51
+ const tempPath = `${destPath}.tmp`;
52
+ logger.info(`Downloading agent binary...`);
53
+ logger.debug(`URL: ${url}`);
54
+ const controller = new AbortController();
55
+ const timeout = setTimeout(() => controller.abort(), 5 * 60 * 1000); // 5 minutes
56
+ let response;
57
+ try {
58
+ response = await fetch(url, { signal: controller.signal });
59
+ }
60
+ catch (err) {
61
+ clearTimeout(timeout);
62
+ if (err instanceof Error && err.name === "AbortError") {
63
+ throw new Error("Download timed out after 5 minutes");
64
+ }
65
+ throw err;
66
+ }
67
+ clearTimeout(timeout);
68
+ if (!response.ok) {
69
+ throw new Error(`Download failed: ${response.status} ${response.statusText}`);
70
+ }
71
+ if (!response.body) {
72
+ throw new Error("Download failed: empty response body");
73
+ }
74
+ // Stream to temp file
75
+ const fileStream = createWriteStream(tempPath);
76
+ // Node 18+ ReadableStream from fetch is compatible with pipeline
77
+ await pipeline(response.body, fileStream);
78
+ // Move temp to final
79
+ fs.renameSync(tempPath, destPath);
80
+ fs.chmodSync(destPath, 0o755);
81
+ logger.success(`Binary installed at ${destPath}`);
82
+ return destPath;
83
+ }
84
+ /** Verify binary SHA256 against the install server */
85
+ export async function verifyBinary(binPath, version) {
86
+ const ver = version ?? "latest";
87
+ const filename = getBinaryFilename();
88
+ const checksumUrl = `${INSTALL_URL}/releases/${ver}/${filename}.sha256`;
89
+ try {
90
+ const response = await fetch(checksumUrl);
91
+ if (!response.ok) {
92
+ logger.warn(`No checksum found for this binary version. ` +
93
+ `The binary could not be verified. Proceed with caution.`);
94
+ return false;
95
+ }
96
+ const expectedHash = (await response.text()).trim().split(/\s+/)[0];
97
+ if (!expectedHash || expectedHash.length !== 64) {
98
+ logger.warn("Invalid checksum format received from server.");
99
+ return false;
100
+ }
101
+ const actualHash = await hashFile(binPath);
102
+ if (actualHash !== expectedHash) {
103
+ logger.error(`SHA256 mismatch! Expected: ${expectedHash}, Got: ${actualHash}`);
104
+ logger.error("The downloaded binary may be corrupted or tampered with.");
105
+ logger.error("Delete it and try again: rm ~/.sequence0/bin/sequence0-agent");
106
+ return false;
107
+ }
108
+ logger.debug(`SHA256 verified: ${actualHash}`);
109
+ return true;
110
+ }
111
+ catch (err) {
112
+ logger.warn(`Could not verify binary checksum: ${err instanceof Error ? err.message : String(err)}. ` +
113
+ `The binary has not been verified.`);
114
+ return false;
115
+ }
116
+ }
117
+ /** Get the version of a binary */
118
+ export async function getBinaryVersion(binPath) {
119
+ try {
120
+ const { stdout } = await execFileAsync(binPath, ["--version"], { timeout: 5000 });
121
+ const match = stdout.trim().match(/v?(\d+\.\d+\.\d+)/);
122
+ return match ? match[1] : null;
123
+ }
124
+ catch {
125
+ return null;
126
+ }
127
+ }
128
+ /** Find binary in PATH */
129
+ async function findInPath() {
130
+ const cmd = process.platform === "win32" ? "where" : "which";
131
+ try {
132
+ const { stdout } = await execFileAsync(cmd, [BINARY_NAME], { timeout: 3000 });
133
+ const binPath = stdout.trim().split("\n")[0];
134
+ if (binPath && fs.existsSync(binPath))
135
+ return binPath;
136
+ }
137
+ catch {
138
+ // Not in PATH
139
+ }
140
+ return null;
141
+ }
142
+ /** Find binary via npm platform package */
143
+ function findNpmBinary() {
144
+ const pkg = getPlatformPackage();
145
+ try {
146
+ return require.resolve(`${pkg}/bin/${BINARY_NAME}`);
147
+ }
148
+ catch {
149
+ return null;
150
+ }
151
+ }
152
+ /** Check if a file is executable */
153
+ function isExecutable(filePath) {
154
+ try {
155
+ fs.accessSync(filePath, fs.constants.X_OK);
156
+ return true;
157
+ }
158
+ catch {
159
+ return false;
160
+ }
161
+ }
162
+ /** Compute SHA256 hash of a file */
163
+ async function hashFile(filePath) {
164
+ return new Promise((resolve, reject) => {
165
+ const hash = createHash("sha256");
166
+ const stream = fs.createReadStream(filePath);
167
+ stream.on("data", (d) => hash.update(d));
168
+ stream.on("end", () => resolve(hash.digest("hex")));
169
+ stream.on("error", reject);
170
+ });
171
+ }
172
+ //# sourceMappingURL=binary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/agent/binary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Chain definitions and helpers.
3
+ *
4
+ * Maps curves to supported chains and provides chain metadata
5
+ * for display, explorer links, and selection prompts.
6
+ */
7
+ export interface ChainInfo {
8
+ id: string;
9
+ name: string;
10
+ symbol: string;
11
+ curve: "secp256k1" | "ed25519";
12
+ explorerTx?: string;
13
+ rpcUrl?: string;
14
+ }
15
+ export declare const CHAINS: ChainInfo[];
16
+ /** Get chains compatible with a curve type */
17
+ export declare function getChainsForCurve(curve: string): ChainInfo[];
18
+ /** Get chain info by id */
19
+ export declare function getChain(id: string): ChainInfo | undefined;
20
+ /** Get explorer URL for a transaction */
21
+ export declare function getExplorerUrl(chainId: string, txHash: string): string | undefined;
22
+ /** Get the native symbol for a chain */
23
+ export declare function getSymbol(chainId: string): string;
24
+ /** Get all chain names for a given curve (for display) */
25
+ export declare function getChainNames(curve: string): string[];
26
+ //# sourceMappingURL=chains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../src/agent/chains.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD,eAAO,MAAM,MAAM,EAAE,SAAS,EAuF7B,CAAC;AAMF,8CAA8C;AAC9C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,CAE5D;AAED,2BAA2B;AAC3B,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAE1D;AAED,yCAAyC;AACzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIlF;AAED,wCAAwC;AACxC,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAErD"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Chain definitions and helpers.
3
+ *
4
+ * Maps curves to supported chains and provides chain metadata
5
+ * for display, explorer links, and selection prompts.
6
+ */
7
+ // ---------------------------------------------------------------------------
8
+ // Chain registry
9
+ // ---------------------------------------------------------------------------
10
+ export const CHAINS = [
11
+ // EVM Layer 1s
12
+ { id: "ethereum", name: "Ethereum", symbol: "ETH", curve: "secp256k1", explorerTx: "https://etherscan.io/tx/" },
13
+ { id: "polygon", name: "Polygon", symbol: "MATIC", curve: "secp256k1", explorerTx: "https://polygonscan.com/tx/" },
14
+ { id: "bsc", name: "BNB Smart Chain", symbol: "BNB", curve: "secp256k1", explorerTx: "https://bscscan.com/tx/" },
15
+ { id: "avalanche", name: "Avalanche", symbol: "AVAX", curve: "secp256k1", explorerTx: "https://snowtrace.io/tx/" },
16
+ { id: "arbitrum", name: "Arbitrum", symbol: "ETH", curve: "secp256k1", explorerTx: "https://arbiscan.io/tx/" },
17
+ { id: "optimism", name: "Optimism", symbol: "ETH", curve: "secp256k1", explorerTx: "https://optimistic.etherscan.io/tx/" },
18
+ { id: "base", name: "Base", symbol: "ETH", curve: "secp256k1", explorerTx: "https://basescan.org/tx/" },
19
+ { id: "fantom", name: "Fantom", symbol: "FTM", curve: "secp256k1", explorerTx: "https://ftmscan.com/tx/" },
20
+ { id: "cronos", name: "Cronos", symbol: "CRO", curve: "secp256k1", explorerTx: "https://cronoscan.com/tx/" },
21
+ { id: "gnosis", name: "Gnosis", symbol: "xDAI", curve: "secp256k1", explorerTx: "https://gnosisscan.io/tx/" },
22
+ { id: "celo", name: "Celo", symbol: "CELO", curve: "secp256k1", explorerTx: "https://celoscan.io/tx/" },
23
+ { id: "moonbeam", name: "Moonbeam", symbol: "GLMR", curve: "secp256k1", explorerTx: "https://moonbeam.moonscan.io/tx/" },
24
+ { id: "moonriver", name: "Moonriver", symbol: "MOVR", curve: "secp256k1", explorerTx: "https://moonriver.moonscan.io/tx/" },
25
+ { id: "harmony", name: "Harmony", symbol: "ONE", curve: "secp256k1" },
26
+ { id: "aurora", name: "Aurora", symbol: "ETH", curve: "secp256k1", explorerTx: "https://explorer.aurora.dev/tx/" },
27
+ { id: "metis", name: "Metis", symbol: "METIS", curve: "secp256k1", explorerTx: "https://andromeda-explorer.metis.io/tx/" },
28
+ { id: "kava", name: "Kava", symbol: "KAVA", curve: "secp256k1" },
29
+ { id: "klaytn", name: "Klaytn", symbol: "KLAY", curve: "secp256k1", explorerTx: "https://scope.klaytn.com/tx/" },
30
+ { id: "mantle", name: "Mantle", symbol: "MNT", curve: "secp256k1", explorerTx: "https://explorer.mantle.xyz/tx/" },
31
+ { id: "linea", name: "Linea", symbol: "ETH", curve: "secp256k1", explorerTx: "https://lineascan.build/tx/" },
32
+ { id: "scroll", name: "Scroll", symbol: "ETH", curve: "secp256k1", explorerTx: "https://scrollscan.com/tx/" },
33
+ { id: "zksync", name: "zkSync Era", symbol: "ETH", curve: "secp256k1", explorerTx: "https://explorer.zksync.io/tx/" },
34
+ { id: "polygon-zkevm", name: "Polygon zkEVM", symbol: "ETH", curve: "secp256k1", explorerTx: "https://zkevm.polygonscan.com/tx/" },
35
+ { id: "blast", name: "Blast", symbol: "ETH", curve: "secp256k1", explorerTx: "https://blastscan.io/tx/" },
36
+ { id: "mode", name: "Mode", symbol: "ETH", curve: "secp256k1" },
37
+ { id: "manta", name: "Manta Pacific", symbol: "ETH", curve: "secp256k1" },
38
+ { id: "sei", name: "Sei", symbol: "SEI", curve: "secp256k1" },
39
+ { id: "taiko", name: "Taiko", symbol: "ETH", curve: "secp256k1" },
40
+ { id: "bob", name: "BOB", symbol: "ETH", curve: "secp256k1" },
41
+ { id: "worldchain", name: "World Chain", symbol: "ETH", curve: "secp256k1" },
42
+ { id: "ethereum-classic", name: "Ethereum Classic", symbol: "ETC", curve: "secp256k1", explorerTx: "https://etc.blockscout.com/tx/" },
43
+ { id: "canto", name: "Canto", symbol: "CANTO", curve: "secp256k1", explorerTx: "https://tuber.build/tx/" },
44
+ { id: "filecoin", name: "Filecoin (FEVM)", symbol: "FIL", curve: "secp256k1", explorerTx: "https://filfox.info/en/tx/" },
45
+ { id: "flare", name: "Flare", symbol: "FLR", curve: "secp256k1", explorerTx: "https://flare-explorer.flare.network/tx/" },
46
+ { id: "iotex", name: "IoTeX", symbol: "IOTX", curve: "secp256k1", explorerTx: "https://iotexscan.io/tx/" },
47
+ { id: "conflux", name: "Conflux (eSpace)", symbol: "CFX", curve: "secp256k1", explorerTx: "https://evm.confluxscan.io/tx/" },
48
+ { id: "oasis-emerald", name: "Oasis Emerald", symbol: "ROSE", curve: "secp256k1", explorerTx: "https://explorer.oasis.io/mainnet/emerald/tx/" },
49
+ { id: "oasis-sapphire", name: "Oasis Sapphire", symbol: "ROSE", curve: "secp256k1", explorerTx: "https://explorer.oasis.io/mainnet/sapphire/tx/" },
50
+ { id: "boba", name: "Boba Network", symbol: "ETH", curve: "secp256k1", explorerTx: "https://bobascan.com/tx/" },
51
+ { id: "astar", name: "Astar (EVM)", symbol: "ASTR", curve: "secp256k1", explorerTx: "https://astar.blockscout.com/tx/" },
52
+ { id: "evmos", name: "Evmos", symbol: "EVMOS", curve: "secp256k1", explorerTx: "https://www.mintscan.io/evmos/tx/" },
53
+ { id: "zilliqa", name: "Zilliqa (EVM)", symbol: "ZIL", curve: "secp256k1", explorerTx: "https://evmx.zilliqa.com/tx/" },
54
+ { id: "wanchain", name: "Wanchain", symbol: "WAN", curve: "secp256k1", explorerTx: "https://www.wanscan.org/tx/" },
55
+ { id: "theta", name: "Theta", symbol: "THETA", curve: "secp256k1", explorerTx: "https://explorer.thetatoken.org/tx/" },
56
+ { id: "rootstock", name: "Rootstock (RSK)", symbol: "RBTC", curve: "secp256k1", explorerTx: "https://explorer.rsk.co/tx/" },
57
+ { id: "heco", name: "Heco", symbol: "HT", curve: "secp256k1", explorerTx: "https://www.hecoinfo.com/tx/" },
58
+ { id: "okc", name: "OKX Chain (OKC)", symbol: "OKT", curve: "secp256k1", explorerTx: "https://www.oklink.com/oktc/tx/" },
59
+ { id: "neon", name: "Neon EVM", symbol: "NEON", curve: "secp256k1", explorerTx: "https://neonscan.org/tx/" },
60
+ { id: "core", name: "Core DAO", symbol: "CORE", curve: "secp256k1", explorerTx: "https://scan.coredao.org/tx/" },
61
+ { id: "pulsechain", name: "PulseChain", symbol: "PLS", curve: "secp256k1", explorerTx: "https://scan.pulsechain.com/tx/" },
62
+ { id: "opbnb", name: "opBNB", symbol: "BNB", curve: "secp256k1", explorerTx: "https://opbnb.bscscan.com/tx/" },
63
+ { id: "zora", name: "Zora", symbol: "ETH", curve: "secp256k1", explorerTx: "https://explorer.zora.energy/tx/" },
64
+ { id: "velas", name: "Velas (EVM)", symbol: "VLX", curve: "secp256k1", explorerTx: "https://evmexplorer.velas.com/tx/" },
65
+ // Non-EVM secp256k1
66
+ { id: "bitcoin", name: "Bitcoin (Taproot)", symbol: "BTC", curve: "secp256k1", explorerTx: "https://mempool.space/tx/" },
67
+ { id: "dogecoin", name: "Dogecoin", symbol: "DOGE", curve: "secp256k1", explorerTx: "https://dogechain.info/tx/" },
68
+ { id: "litecoin", name: "Litecoin", symbol: "LTC", curve: "secp256k1", explorerTx: "https://litecoinspace.org/tx/" },
69
+ { id: "cosmos", name: "Cosmos Hub", symbol: "ATOM", curve: "secp256k1", explorerTx: "https://www.mintscan.io/cosmos/tx/" },
70
+ { id: "tron", name: "TRON", symbol: "TRX", curve: "secp256k1", explorerTx: "https://tronscan.org/#/transaction/" },
71
+ { id: "ripple", name: "Ripple (XRP)", symbol: "XRP", curve: "secp256k1", explorerTx: "https://xrpscan.com/tx/" },
72
+ { id: "stacks", name: "Stacks", symbol: "STX", curve: "secp256k1", explorerTx: "https://explorer.hiro.so/txid/" },
73
+ { id: "nervos", name: "Nervos (CKB)", symbol: "CKB", curve: "secp256k1", explorerTx: "https://explorer.nervos.org/transaction/" },
74
+ { id: "secret", name: "Secret Network", symbol: "SCRT", curve: "secp256k1", explorerTx: "https://www.mintscan.io/secret/tx/" },
75
+ { id: "flow", name: "Flow", symbol: "FLOW", curve: "secp256k1", explorerTx: "https://www.flowdiver.io/tx/" },
76
+ // ed25519 chains
77
+ { id: "solana", name: "Solana", symbol: "SOL", curve: "ed25519", explorerTx: "https://solscan.io/tx/" },
78
+ { id: "sui", name: "Sui", symbol: "SUI", curve: "ed25519", explorerTx: "https://suiscan.xyz/mainnet/tx/" },
79
+ { id: "aptos", name: "Aptos", symbol: "APT", curve: "ed25519", explorerTx: "https://explorer.aptoslabs.com/txn/" },
80
+ { id: "stellar", name: "Stellar", symbol: "XLM", curve: "ed25519", explorerTx: "https://stellarchain.io/tx/" },
81
+ { id: "ton", name: "TON", symbol: "TON", curve: "ed25519", explorerTx: "https://tonscan.org/tx/" },
82
+ { id: "near", name: "Near", symbol: "NEAR", curve: "ed25519", explorerTx: "https://nearblocks.io/txns/" },
83
+ { id: "cardano", name: "Cardano", symbol: "ADA", curve: "ed25519", explorerTx: "https://cardanoscan.io/transaction/" },
84
+ { id: "polkadot", name: "Polkadot", symbol: "DOT", curve: "ed25519", explorerTx: "https://polkadot.subscan.io/extrinsic/" },
85
+ { id: "algorand", name: "Algorand", symbol: "ALGO", curve: "ed25519", explorerTx: "https://algoexplorer.io/tx/" },
86
+ { id: "tezos", name: "Tezos", symbol: "XTZ", curve: "ed25519", explorerTx: "https://tzstats.com/" },
87
+ { id: "multiversx", name: "MultiversX", symbol: "EGLD", curve: "ed25519", explorerTx: "https://explorer.multiversx.com/transactions/" },
88
+ { id: "hedera", name: "Hedera", symbol: "HBAR", curve: "ed25519", explorerTx: "https://hashscan.io/mainnet/transaction/" },
89
+ { id: "casper", name: "Casper", symbol: "CSPR", curve: "ed25519", explorerTx: "https://cspr.live/deploy/" },
90
+ { id: "radix", name: "Radix", symbol: "XRD", curve: "ed25519", explorerTx: "https://dashboard.radixdlt.com/transaction/" },
91
+ { id: "iota", name: "IOTA", symbol: "IOTA", curve: "ed25519", explorerTx: "https://explorer.iota.org/mainnet/transaction/" },
92
+ { id: "icp", name: "Internet Computer", symbol: "ICP", curve: "ed25519", explorerTx: "https://dashboard.internetcomputer.org/transaction/" },
93
+ { id: "kadena", name: "Kadena", symbol: "KDA", curve: "ed25519", explorerTx: "https://explorer.chainweb.com/mainnet/tx/" },
94
+ { id: "kusama", name: "Kusama", symbol: "KSM", curve: "ed25519", explorerTx: "https://kusama.subscan.io/extrinsic/" },
95
+ ];
96
+ // ---------------------------------------------------------------------------
97
+ // Helpers
98
+ // ---------------------------------------------------------------------------
99
+ /** Get chains compatible with a curve type */
100
+ export function getChainsForCurve(curve) {
101
+ return CHAINS.filter((c) => c.curve === curve);
102
+ }
103
+ /** Get chain info by id */
104
+ export function getChain(id) {
105
+ return CHAINS.find((c) => c.id === id);
106
+ }
107
+ /** Get explorer URL for a transaction */
108
+ export function getExplorerUrl(chainId, txHash) {
109
+ const chain = getChain(chainId);
110
+ if (!chain?.explorerTx)
111
+ return undefined;
112
+ return `${chain.explorerTx}${txHash}`;
113
+ }
114
+ /** Get the native symbol for a chain */
115
+ export function getSymbol(chainId) {
116
+ const chain = getChain(chainId);
117
+ return chain?.symbol ?? chainId.toUpperCase();
118
+ }
119
+ /** Get all chain names for a given curve (for display) */
120
+ export function getChainNames(curve) {
121
+ return getChainsForCurve(curve).map((c) => c.name);
122
+ }
123
+ //# sourceMappingURL=chains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chains.js","sourceRoot":"","sources":["../../src/agent/chains.ts"],"names":[],"mappings":"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"}