@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
@@ -0,0 +1,16 @@
1
+ export interface UpdateInfo {
2
+ currentVersion: string | null;
3
+ latestVersion: string | null;
4
+ updateAvailable: boolean;
5
+ blockclawVersion: string;
6
+ }
7
+ /** Check if an update is available for the agent binary */
8
+ export declare function checkForUpdate(): Promise<UpdateInfo>;
9
+ /** Apply an update to the agent binary */
10
+ export declare function applyUpdate(version?: string): Promise<boolean>;
11
+ /** Check for BlockClaw CLI updates */
12
+ export declare function checkBlockclawUpdate(): Promise<{
13
+ latest: string | null;
14
+ updateAvailable: boolean;
15
+ }>;
16
+ //# sourceMappingURL=updater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../../src/core/updater.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,2DAA2D;AAC3D,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC,CA2C1D;AAED,0CAA0C;AAC1C,wBAAsB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA4BpE;AAED,sCAAsC;AACtC,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAAC,CAczG"}
@@ -0,0 +1,107 @@
1
+ import { execFile } from "node:child_process";
2
+ import { promisify } from "node:util";
3
+ import { getBinaryVersion, downloadBinary, verifyBinary, resolveBinary } from "../agent/binary.js";
4
+ import { stopAgent } from "../agent/process.js";
5
+ import { readBlockclawConfig } from "../agent/config.js";
6
+ import { VERSION } from "../version.js";
7
+ import { logger } from "../utils/logger.js";
8
+ const execFileAsync = promisify(execFile);
9
+ /** Check if an update is available for the agent binary */
10
+ export async function checkForUpdate() {
11
+ const info = {
12
+ currentVersion: null,
13
+ latestVersion: null,
14
+ updateAvailable: false,
15
+ blockclawVersion: VERSION,
16
+ };
17
+ // Get current binary version
18
+ try {
19
+ const binPath = await resolveBinary();
20
+ info.currentVersion = await getBinaryVersion(binPath);
21
+ }
22
+ catch {
23
+ // Binary not installed
24
+ }
25
+ // Check install server for latest version
26
+ try {
27
+ const response = await fetch("https://install.sequence0.network/releases/latest/version.txt", {
28
+ signal: AbortSignal.timeout(10000),
29
+ });
30
+ if (response.ok) {
31
+ const text = await response.text();
32
+ info.latestVersion = text.trim().replace(/^v/, "");
33
+ }
34
+ }
35
+ catch {
36
+ // Can't reach install server — fall back to npm registry
37
+ try {
38
+ const { stdout } = await execFileAsync("npm", ["view", "@sequence0/agent", "version"], {
39
+ timeout: 10000,
40
+ encoding: "utf8",
41
+ });
42
+ info.latestVersion = stdout.trim();
43
+ }
44
+ catch {
45
+ // Can't reach npm registry either
46
+ }
47
+ }
48
+ if (info.currentVersion && info.latestVersion) {
49
+ info.updateAvailable = compareVersions(info.latestVersion, info.currentVersion) > 0;
50
+ }
51
+ return info;
52
+ }
53
+ /** Apply an update to the agent binary */
54
+ export async function applyUpdate(version) {
55
+ const config = readBlockclawConfig();
56
+ const apiPort = config.api_port ?? 8080;
57
+ logger.info("Stopping agent for update...");
58
+ await stopAgent(apiPort);
59
+ // Wait for process to fully exit
60
+ await new Promise((r) => setTimeout(r, 2000));
61
+ logger.info("Downloading new binary...");
62
+ try {
63
+ const binPath = await downloadBinary(version);
64
+ const verified = await verifyBinary(binPath, version);
65
+ if (!verified) {
66
+ logger.error("Binary verification failed! Update aborted.");
67
+ return false;
68
+ }
69
+ const newVersion = await getBinaryVersion(binPath);
70
+ logger.success(`Updated to v${newVersion ?? "unknown"}`);
71
+ logger.info("Restart the agent with 'blockclaw start'");
72
+ return true;
73
+ }
74
+ catch (err) {
75
+ logger.error(`Update failed: ${err.message}`);
76
+ return false;
77
+ }
78
+ }
79
+ /** Check for BlockClaw CLI updates */
80
+ export async function checkBlockclawUpdate() {
81
+ try {
82
+ const { stdout } = await execFileAsync("npm", ["view", "@sequence0/blockclaw", "version"], {
83
+ timeout: 10000,
84
+ encoding: "utf8",
85
+ });
86
+ const latest = stdout.trim();
87
+ return {
88
+ latest,
89
+ updateAvailable: compareVersions(latest, VERSION) > 0,
90
+ };
91
+ }
92
+ catch {
93
+ return { latest: null, updateAvailable: false };
94
+ }
95
+ }
96
+ /** Compare two semver strings. Returns >0 if a > b, <0 if a < b, 0 if equal */
97
+ function compareVersions(a, b) {
98
+ const pa = a.replace(/^v/, "").split(".").map(Number);
99
+ const pb = b.replace(/^v/, "").split(".").map(Number);
100
+ for (let i = 0; i < 3; i++) {
101
+ const diff = (pa[i] ?? 0) - (pb[i] ?? 0);
102
+ if (diff !== 0)
103
+ return diff;
104
+ }
105
+ return 0;
106
+ }
107
+ //# sourceMappingURL=updater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updater.js","sourceRoot":"","sources":["../../src/core/updater.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,97 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from "commander";
3
+ import pc from "picocolors";
4
+ import { VERSION } from "./version.js";
5
+ const program = new Command();
6
+ program
7
+ .name("blockclaw")
8
+ .description(`${pc.bold(pc.cyan("BlockClaw"))} — Run a Sequence0 node and earn passive income\n\n` +
9
+ ` Manage your node with guided prompts, self-healing monitoring, and AI assistance.\n` +
10
+ ` Supports 81 blockchains via threshold signing.`)
11
+ .version(VERSION, "-V, --version");
12
+ // ── Phase 1: Core Agent Management ──
13
+ async function registerCommands() {
14
+ // ── Phase 0: Setup ──
15
+ const { register: registerSetup } = await import("./interface/commands/setup.js");
16
+ registerSetup(program);
17
+ // ── Phase 1: Core Agent Management ──
18
+ const { register: registerStart } = await import("./interface/commands/start.js");
19
+ const { register: registerStop } = await import("./interface/commands/stop.js");
20
+ const { register: registerRestart } = await import("./interface/commands/restart.js");
21
+ const { register: registerStatus } = await import("./interface/commands/status.js");
22
+ const { register: registerLogs } = await import("./interface/commands/logs.js");
23
+ const { register: registerWallet } = await import("./interface/commands/wallet.js");
24
+ const { register: registerConfig } = await import("./interface/commands/config.js");
25
+ const { register: registerInfo } = await import("./interface/commands/info.js");
26
+ registerStart(program);
27
+ registerStop(program);
28
+ registerRestart(program);
29
+ registerStatus(program);
30
+ registerLogs(program);
31
+ registerWallet(program);
32
+ registerConfig(program);
33
+ registerInfo(program);
34
+ // ── Phase 2: Monitoring & Self-Healing ──
35
+ const { register: registerDaemon } = await import("./interface/commands/daemon.js");
36
+ const { register: registerDoctor } = await import("./interface/commands/doctor.js");
37
+ const { register: registerHealth } = await import("./interface/commands/health.js");
38
+ const { register: registerUpdate } = await import("./interface/commands/update.js");
39
+ registerDaemon(program);
40
+ registerDoctor(program);
41
+ registerHealth(program);
42
+ registerUpdate(program);
43
+ // ── Phase 3: AI & Alerting ──
44
+ const { register: registerAsk } = await import("./interface/commands/ask.js");
45
+ const { register: registerWebhook } = await import("./interface/commands/webhook.js");
46
+ registerAsk(program);
47
+ registerWebhook(program);
48
+ // ── Phase 4: Wallet Operations ──
49
+ const { register: registerSend } = await import("./interface/commands/send.js");
50
+ const { register: registerReceive } = await import("./interface/commands/receive.js");
51
+ const { register: registerHistory } = await import("./interface/commands/history.js");
52
+ registerSend(program);
53
+ registerReceive(program);
54
+ registerHistory(program);
55
+ // ── Phase 5: Network & Earnings ──
56
+ const { register: registerRegister } = await import("./interface/commands/register.js");
57
+ const { register: registerEarnings } = await import("./interface/commands/earnings.js");
58
+ const { register: registerWithdraw } = await import("./interface/commands/withdraw.js");
59
+ registerRegister(program);
60
+ registerEarnings(program);
61
+ registerWithdraw(program);
62
+ // ── Backup & Restore ──
63
+ const { register: registerBackup } = await import("./interface/commands/backup.js");
64
+ registerBackup(program);
65
+ // ── Phase 6: Service Management ──
66
+ const { register: registerService } = await import("./interface/commands/service.js");
67
+ registerService(program);
68
+ }
69
+ async function main() {
70
+ // Node.js version guard — must be >= 18
71
+ const nodeMajor = parseInt(process.versions.node.split(".")[0], 10);
72
+ if (nodeMajor < 18) {
73
+ console.error(`BlockClaw requires Node.js 18 or later. You have Node.js ${process.versions.node}. Please upgrade at https://nodejs.org`);
74
+ process.exit(1);
75
+ }
76
+ await registerCommands();
77
+ // If no subcommand provided...
78
+ if (process.argv.length <= 2) {
79
+ // First run? Launch setup wizard automatically
80
+ const { isFirstRun } = await import("./interface/commands/setup.js");
81
+ if (isFirstRun()) {
82
+ process.argv = ["node", "blockclaw", "setup"];
83
+ await program.parseAsync(process.argv);
84
+ return;
85
+ }
86
+ // Otherwise show interactive menu
87
+ const { showMenu } = await import("./interface/commands/menu.js");
88
+ await showMenu(program);
89
+ return;
90
+ }
91
+ program.parse(process.argv);
92
+ }
93
+ main().catch((err) => {
94
+ console.error(pc.red(`Fatal: ${err.message}`));
95
+ process.exit(1);
96
+ });
97
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function register(program: Command): void;
3
+ //# sourceMappingURL=ask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../../src/interface/commands/ask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiC/C"}
@@ -0,0 +1,39 @@
1
+ import pc from "picocolors";
2
+ import { AgentClient } from "../../agent/client.js";
3
+ import { readBlockclawConfig } from "../../agent/config.js";
4
+ import { Brain } from "../../ai/brain.js";
5
+ import { Memory } from "../../core/memory.js";
6
+ import { logger } from "../../utils/logger.js";
7
+ export function register(program) {
8
+ program
9
+ .command("ask")
10
+ .description("Ask BlockClaw a question about your node")
11
+ .argument("<question...>", "Your question in natural language")
12
+ .action(async (words) => {
13
+ try {
14
+ const question = words.join(" ");
15
+ const config = readBlockclawConfig();
16
+ const client = new AgentClient(`http://localhost:${config.api_port ?? 8080}`);
17
+ const memory = new Memory();
18
+ const brain = new Brain(client, memory);
19
+ const provider = brain.getProvider();
20
+ if (provider !== "rules") {
21
+ logger.debug(`Using AI provider: ${provider}`);
22
+ }
23
+ const response = await brain.ask(question);
24
+ console.log();
25
+ console.log(` ${pc.cyan(pc.bold("BlockClaw"))} ${pc.dim(`(${provider})`)}`);
26
+ console.log();
27
+ // Indent each line of the response
28
+ for (const line of response.split("\n")) {
29
+ console.log(` ${line}`);
30
+ }
31
+ console.log();
32
+ }
33
+ catch (err) {
34
+ logger.error(`Failed: ${err.message}`);
35
+ process.exit(1);
36
+ }
37
+ });
38
+ }
39
+ //# sourceMappingURL=ask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../src/interface/commands/ask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,UAAU,QAAQ,CAAC,OAAgB;IACvC,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,0CAA0C,CAAC;SACvD,QAAQ,CAAC,eAAe,EAAE,mCAAmC,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,KAAe,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,oBAAoB,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;YAC9E,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAExC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACzB,MAAM,CAAC,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE3C,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,mCAAmC;YACnC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC3B,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,WAAY,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function register(program: Command): void;
3
+ //# sourceMappingURL=backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../../src/interface/commands/backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6qBpC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiC/C"}