@echoclaw/echo-0g 1.0.1 → 1.2.1

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 (118) hide show
  1. package/README.md +31 -1143
  2. package/dist/0g-compute/helpers.d.ts +18 -0
  3. package/dist/0g-compute/helpers.d.ts.map +1 -0
  4. package/dist/0g-compute/helpers.js +53 -0
  5. package/dist/0g-compute/helpers.js.map +1 -0
  6. package/dist/bot/daemon.d.ts +0 -1
  7. package/dist/bot/daemon.d.ts.map +1 -1
  8. package/dist/bot/daemon.js +1 -39
  9. package/dist/bot/daemon.js.map +1 -1
  10. package/dist/bot/state.d.ts +0 -2
  11. package/dist/bot/state.d.ts.map +1 -1
  12. package/dist/bot/state.js +0 -12
  13. package/dist/bot/state.js.map +1 -1
  14. package/dist/bot/types.d.ts +0 -4
  15. package/dist/bot/types.d.ts.map +1 -1
  16. package/dist/bot/types.js +0 -4
  17. package/dist/bot/types.js.map +1 -1
  18. package/dist/cli.d.ts.map +1 -1
  19. package/dist/cli.js +2 -0
  20. package/dist/cli.js.map +1 -1
  21. package/dist/commands/0g-compute.d.ts.map +1 -1
  22. package/dist/commands/0g-compute.js +2 -41
  23. package/dist/commands/0g-compute.js.map +1 -1
  24. package/dist/commands/echobook.d.ts +5 -3
  25. package/dist/commands/echobook.d.ts.map +1 -1
  26. package/dist/commands/echobook.js +348 -13
  27. package/dist/commands/echobook.js.map +1 -1
  28. package/dist/commands/marketmaker.d.ts.map +1 -1
  29. package/dist/commands/marketmaker.js +0 -5
  30. package/dist/commands/marketmaker.js.map +1 -1
  31. package/dist/commands/onboard/index.d.ts +3 -0
  32. package/dist/commands/onboard/index.d.ts.map +1 -0
  33. package/dist/commands/onboard/index.js +178 -0
  34. package/dist/commands/onboard/index.js.map +1 -0
  35. package/dist/commands/onboard/steps/compute.d.ts +3 -0
  36. package/dist/commands/onboard/steps/compute.d.ts.map +1 -0
  37. package/dist/commands/onboard/steps/compute.js +242 -0
  38. package/dist/commands/onboard/steps/compute.js.map +1 -0
  39. package/dist/commands/onboard/steps/config.d.ts +3 -0
  40. package/dist/commands/onboard/steps/config.d.ts.map +1 -0
  41. package/dist/commands/onboard/steps/config.js +30 -0
  42. package/dist/commands/onboard/steps/config.js.map +1 -0
  43. package/dist/commands/onboard/steps/monitor.d.ts +3 -0
  44. package/dist/commands/onboard/steps/monitor.d.ts.map +1 -0
  45. package/dist/commands/onboard/steps/monitor.js +134 -0
  46. package/dist/commands/onboard/steps/monitor.js.map +1 -0
  47. package/dist/commands/onboard/steps/openclaw.d.ts +3 -0
  48. package/dist/commands/onboard/steps/openclaw.d.ts.map +1 -0
  49. package/dist/commands/onboard/steps/openclaw.js +35 -0
  50. package/dist/commands/onboard/steps/openclaw.js.map +1 -0
  51. package/dist/commands/onboard/steps/password.d.ts +3 -0
  52. package/dist/commands/onboard/steps/password.d.ts.map +1 -0
  53. package/dist/commands/onboard/steps/password.js +71 -0
  54. package/dist/commands/onboard/steps/password.js.map +1 -0
  55. package/dist/commands/onboard/steps/wallet.d.ts +3 -0
  56. package/dist/commands/onboard/steps/wallet.d.ts.map +1 -0
  57. package/dist/commands/onboard/steps/wallet.js +113 -0
  58. package/dist/commands/onboard/steps/wallet.js.map +1 -0
  59. package/dist/commands/onboard/steps/webhooks.d.ts +3 -0
  60. package/dist/commands/onboard/steps/webhooks.d.ts.map +1 -0
  61. package/dist/commands/onboard/steps/webhooks.js +100 -0
  62. package/dist/commands/onboard/steps/webhooks.js.map +1 -0
  63. package/dist/commands/onboard/types.d.ts +26 -0
  64. package/dist/commands/onboard/types.d.ts.map +1 -0
  65. package/dist/commands/onboard/types.js +2 -0
  66. package/dist/commands/onboard/types.js.map +1 -0
  67. package/dist/commands/setup.d.ts.map +1 -1
  68. package/dist/commands/setup.js +12 -64
  69. package/dist/commands/setup.js.map +1 -1
  70. package/dist/commands/wallet.d.ts.map +1 -1
  71. package/dist/commands/wallet.js +20 -53
  72. package/dist/commands/wallet.js.map +1 -1
  73. package/dist/echobook/follows.d.ts +11 -2
  74. package/dist/echobook/follows.d.ts.map +1 -1
  75. package/dist/echobook/follows.js +21 -5
  76. package/dist/echobook/follows.js.map +1 -1
  77. package/dist/echobook/notifications.d.ts +6 -0
  78. package/dist/echobook/notifications.d.ts.map +1 -1
  79. package/dist/echobook/notifications.js +11 -0
  80. package/dist/echobook/notifications.js.map +1 -1
  81. package/dist/echobook/posts.d.ts +19 -1
  82. package/dist/echobook/posts.d.ts.map +1 -1
  83. package/dist/echobook/posts.js +36 -4
  84. package/dist/echobook/posts.js.map +1 -1
  85. package/dist/echobook/profile.d.ts +11 -0
  86. package/dist/echobook/profile.d.ts.map +1 -1
  87. package/dist/echobook/profile.js +9 -0
  88. package/dist/echobook/profile.js.map +1 -1
  89. package/dist/echobook/reposts.d.ts +13 -0
  90. package/dist/echobook/reposts.d.ts.map +1 -0
  91. package/dist/echobook/reposts.js +16 -0
  92. package/dist/echobook/reposts.js.map +1 -0
  93. package/dist/echobook/submolts.d.ts +10 -0
  94. package/dist/echobook/submolts.d.ts.map +1 -1
  95. package/dist/echobook/submolts.js +13 -0
  96. package/dist/echobook/submolts.js.map +1 -1
  97. package/dist/errors.d.ts +4 -0
  98. package/dist/errors.d.ts.map +1 -1
  99. package/dist/errors.js +6 -0
  100. package/dist/errors.js.map +1 -1
  101. package/dist/guardrails/wallet-mutation.d.ts +11 -0
  102. package/dist/guardrails/wallet-mutation.d.ts.map +1 -0
  103. package/dist/guardrails/wallet-mutation.js +21 -0
  104. package/dist/guardrails/wallet-mutation.js.map +1 -0
  105. package/dist/setup/openclaw-link.d.ts +19 -0
  106. package/dist/setup/openclaw-link.d.ts.map +1 -0
  107. package/dist/setup/openclaw-link.js +111 -0
  108. package/dist/setup/openclaw-link.js.map +1 -0
  109. package/dist/wallet/create.d.ts +15 -0
  110. package/dist/wallet/create.d.ts.map +1 -0
  111. package/dist/wallet/create.js +30 -0
  112. package/dist/wallet/create.js.map +1 -0
  113. package/dist/wallet/import.d.ts +15 -0
  114. package/dist/wallet/import.d.ts.map +1 -0
  115. package/dist/wallet/import.js +31 -0
  116. package/dist/wallet/import.js.map +1 -0
  117. package/package.json +1 -1
  118. package/skills/echo0g/SKILL.md +97 -13
@@ -0,0 +1,242 @@
1
+ import inquirer from "inquirer";
2
+ import { parseUnits } from "viem";
3
+ import { getAuthenticatedBroker } from "../../../0g-compute/broker-factory.js";
4
+ import { withSuppressedConsole } from "../../../0g-compute/bridge.js";
5
+ import { normalizeSubAccount } from "../../../0g-compute/account.js";
6
+ import { calculateProviderPricing, formatPricePerMTokens } from "../../../0g-compute/pricing.js";
7
+ import { redactToken } from "../../../0g-compute/helpers.js";
8
+ import { patchOpenclawConfig } from "../../../openclaw/config.js";
9
+ import { spinner, colors, infoBox } from "../../../utils/ui.js";
10
+ import { writeStderr } from "../../../utils/output.js";
11
+ import logger from "../../../utils/logger.js";
12
+ // ── Detect ──────────────────────────────────────────────────────────
13
+ function detect(state) {
14
+ // We can't easily detect full 0G compute readiness without on-chain calls.
15
+ // Use a simple heuristic: if wallet isn't ready, compute can't be either.
16
+ if (!state.walletAddress) {
17
+ return { configured: false, summary: "Wallet required first" };
18
+ }
19
+ if (state.computeReady) {
20
+ return { configured: true, summary: "0G Compute configured" };
21
+ }
22
+ return { configured: false, summary: "0G Compute not configured" };
23
+ }
24
+ // ── Run ─────────────────────────────────────────────────────────────
25
+ async function run(state) {
26
+ if (!state.walletAddress) {
27
+ return { action: "failed", message: "Wallet must be configured first." };
28
+ }
29
+ // ── 6a. Connect to 0G network ────────────────────────────────────
30
+ const connectSpin = spinner("Connecting to 0G network...");
31
+ connectSpin.start();
32
+ let broker;
33
+ try {
34
+ broker = await getAuthenticatedBroker();
35
+ connectSpin.succeed("Connected to 0G network");
36
+ }
37
+ catch (err) {
38
+ connectSpin.fail("Failed to connect to 0G network");
39
+ const msg = err instanceof Error ? err.message : String(err);
40
+ return { action: "failed", message: `Broker init failed: ${msg}` };
41
+ }
42
+ // ── 6b. Fetch models + select (BEFORE deposit) ───────────────────
43
+ const modelsSpin = spinner("Fetching available chat models...");
44
+ modelsSpin.start();
45
+ let chatServices;
46
+ try {
47
+ const allServices = await withSuppressedConsole(() => broker.inference.listServiceWithDetail());
48
+ chatServices = allServices.filter((s) => s.serviceType === "chatbot");
49
+ modelsSpin.succeed(`Found ${chatServices.length} chat model(s)`);
50
+ }
51
+ catch (err) {
52
+ modelsSpin.fail("Failed to fetch models");
53
+ const msg = err instanceof Error ? err.message : String(err);
54
+ return { action: "failed", message: `Failed to list services: ${msg}` };
55
+ }
56
+ if (chatServices.length === 0) {
57
+ return { action: "failed", message: "No chat models available on the 0G network." };
58
+ }
59
+ writeStderr("");
60
+ writeStderr(colors.bold(" Available chat models:"));
61
+ writeStderr("");
62
+ const choices = chatServices.map((svc, i) => {
63
+ const inputPriceStr = formatPricePerMTokens(svc.inputPrice);
64
+ const outputPriceStr = formatPricePerMTokens(svc.outputPrice);
65
+ const providerShort = svc.provider.slice(0, 10) + "...";
66
+ return {
67
+ name: `${svc.model} (${inputPriceStr} / ${outputPriceStr} 0G per M tokens) [${providerShort}]`,
68
+ value: i,
69
+ };
70
+ });
71
+ const { modelIndex } = await inquirer.prompt([{
72
+ type: "list",
73
+ name: "modelIndex",
74
+ message: "Select a chat model:",
75
+ choices,
76
+ }]);
77
+ const selectedService = chatServices[modelIndex];
78
+ const selectedProvider = selectedService.provider;
79
+ const pricing = calculateProviderPricing(selectedService.inputPrice, selectedService.outputPrice);
80
+ infoBox("Selected Model", [
81
+ `Model: ${colors.bold(selectedService.model)}`,
82
+ `Provider: ${colors.address(selectedProvider)}`,
83
+ `Price: ${formatPricePerMTokens(selectedService.inputPrice)} / ${formatPricePerMTokens(selectedService.outputPrice)} 0G per M tokens`,
84
+ `Recommended min locked: ${colors.value(pricing.recommendedMinLockedOg.toFixed(3) + " 0G")}`,
85
+ ].join("\n"));
86
+ // ── 6c. Ledger — smart deposit based on selection ─────────────────
87
+ const recommendedDeposit = Math.max(pricing.recommendedMinLockedOg + 2, 10);
88
+ let hasLedger = false;
89
+ try {
90
+ await withSuppressedConsole(() => broker.ledger.getLedger());
91
+ hasLedger = true;
92
+ writeStderr(` ${colors.success("✓")} Ledger exists`);
93
+ }
94
+ catch {
95
+ writeStderr(` ${colors.warn("○")} No ledger found`);
96
+ }
97
+ if (!hasLedger) {
98
+ writeStderr("");
99
+ writeStderr(` Deposit needed for ${colors.bold(selectedService.model)}:`);
100
+ writeStderr(` Min locked: ${colors.value(pricing.recommendedMinLockedOg.toFixed(1) + " 0G")} ${colors.muted("(from provider pricing)")}`);
101
+ writeStderr(` Buffer: ${colors.value("+2.0 0G")}`);
102
+ writeStderr(` Total: ${colors.value(recommendedDeposit.toFixed(1) + " 0G")}`);
103
+ writeStderr("");
104
+ const { depositAmount } = await inquirer.prompt([{
105
+ type: "input",
106
+ name: "depositAmount",
107
+ message: "Amount to deposit (0G):",
108
+ default: recommendedDeposit.toFixed(1),
109
+ validate: (input) => {
110
+ const n = Number(input);
111
+ if (!Number.isFinite(n) || n <= 0)
112
+ return "Must be a positive number";
113
+ if (n < pricing.recommendedMinLockedOg)
114
+ return `Minimum ${pricing.recommendedMinLockedOg.toFixed(1)} 0G required for ${selectedService.model}`;
115
+ return true;
116
+ },
117
+ }]);
118
+ const depositNum = Number(depositAmount);
119
+ const depositSpin = spinner(`Depositing ${depositNum.toFixed(1)} 0G to ledger...`);
120
+ depositSpin.start();
121
+ try {
122
+ await withSuppressedConsole(() => broker.ledger.addLedger(depositNum));
123
+ depositSpin.succeed(`Deposited ${depositNum.toFixed(1)} 0G to ledger`);
124
+ hasLedger = true;
125
+ }
126
+ catch (err) {
127
+ depositSpin.fail("Deposit failed");
128
+ const msg = err instanceof Error ? err.message : String(err);
129
+ return { action: "failed", message: `Ledger deposit failed: ${msg}` };
130
+ }
131
+ }
132
+ // ── 6d. Fund provider sub-account ────────────────────────────────
133
+ let currentLocked = 0;
134
+ try {
135
+ const account = await withSuppressedConsole(() => broker.inference.getAccount(selectedProvider));
136
+ const normalized = normalizeSubAccount(account);
137
+ currentLocked = normalized.lockedOg;
138
+ writeStderr(` Current locked balance: ${colors.value(currentLocked.toFixed(4) + " 0G")}`);
139
+ }
140
+ catch {
141
+ writeStderr(colors.muted(" No existing sub-account for this provider"));
142
+ }
143
+ if (currentLocked < pricing.recommendedMinLockedOg) {
144
+ const fundAmount = Math.max(0.5, pricing.recommendedMinLockedOg - currentLocked + 1);
145
+ const fundStr = fundAmount.toFixed(1);
146
+ const { confirmFund } = await inquirer.prompt([{
147
+ type: "confirm",
148
+ name: "confirmFund",
149
+ message: `Fund ${fundStr} 0G to provider sub-account? (need ${pricing.recommendedMinLockedOg.toFixed(1)} 0G min)`,
150
+ default: true,
151
+ }]);
152
+ if (confirmFund) {
153
+ const amountWei = parseUnits(fundStr, 18);
154
+ const fundSpin = spinner(`Funding provider sub-account with ${fundStr} 0G...`);
155
+ fundSpin.start();
156
+ try {
157
+ await withSuppressedConsole(() => broker.ledger.transferFund(selectedProvider, "inference", amountWei));
158
+ fundSpin.succeed(`Funded ${fundStr} 0G to provider sub-account`);
159
+ }
160
+ catch (err) {
161
+ fundSpin.fail("Fund transfer failed");
162
+ const msg = err instanceof Error ? err.message : String(err);
163
+ return { action: "failed", message: `Fund transfer failed: ${msg}` };
164
+ }
165
+ }
166
+ }
167
+ else {
168
+ writeStderr(colors.success(` Balance OK (${currentLocked.toFixed(4)} 0G >= ${pricing.recommendedMinLockedOg.toFixed(3)} 0G min)`));
169
+ }
170
+ // ── 6e. Acknowledge provider signer (auto) ────────────────────────
171
+ const ackSpin = spinner("Acknowledging provider signer...");
172
+ ackSpin.start();
173
+ try {
174
+ await withSuppressedConsole(() => broker.inference.acknowledgeProviderSigner(selectedProvider));
175
+ ackSpin.succeed("Provider signer acknowledged");
176
+ }
177
+ catch {
178
+ ackSpin.succeed("Provider signer already acknowledged");
179
+ }
180
+ // ── 6f. Create API key (token ID 0, auto) ─────────────────────────
181
+ const apiKeySpin = spinner("Creating API key on-chain...");
182
+ apiKeySpin.start();
183
+ let apiKeyInfo;
184
+ try {
185
+ apiKeyInfo = await withSuppressedConsole(() => broker.inference.requestProcessor.createApiKey(selectedProvider, {
186
+ tokenId: 0,
187
+ expiresIn: 0,
188
+ }));
189
+ apiKeySpin.succeed("API key created");
190
+ }
191
+ catch (err) {
192
+ apiKeySpin.fail("API key creation failed");
193
+ const msg = err instanceof Error ? err.message : String(err);
194
+ return { action: "failed", message: `API key creation failed: ${msg}` };
195
+ }
196
+ // ── 6g. Patch OpenClaw config (auto — set default) ────────────────
197
+ let metadata;
198
+ try {
199
+ metadata = await withSuppressedConsole(() => broker.inference.getServiceMetadata(selectedProvider));
200
+ }
201
+ catch (err) {
202
+ const msg = err instanceof Error ? err.message : String(err);
203
+ return { action: "failed", message: `Failed to get provider metadata: ${msg}` };
204
+ }
205
+ const providerConfig = {
206
+ baseUrl: metadata.endpoint,
207
+ apiKey: apiKeyInfo.rawToken,
208
+ api: "openai-completions",
209
+ models: [{
210
+ id: metadata.model,
211
+ name: `${metadata.model} (0G Compute)`,
212
+ contextWindow: 128000,
213
+ maxTokens: 8192,
214
+ }],
215
+ };
216
+ patchOpenclawConfig("models.providers.zg", providerConfig, { force: true });
217
+ patchOpenclawConfig("models.mode", "merge", { force: false });
218
+ patchOpenclawConfig("agents.defaults.model", {
219
+ primary: `zg/${metadata.model}`,
220
+ }, { force: true });
221
+ writeStderr(colors.success(" ✓ OpenClaw config patched"));
222
+ writeStderr(colors.muted(` Default model: zg/${metadata.model}`));
223
+ // ── Done ──────────────────────────────────────────────────────────
224
+ state.computeReady = true;
225
+ state.selectedProvider = selectedProvider;
226
+ logger.info(`[Onboard] 0G Compute configured: provider=${selectedProvider}, model=${metadata.model}`);
227
+ return {
228
+ action: "configured",
229
+ message: [
230
+ `Provider: ${selectedProvider.slice(0, 10)}...`,
231
+ `Model: ${metadata.model}`,
232
+ `API key: ${redactToken(apiKeyInfo.rawToken)}`,
233
+ ].join(" | "),
234
+ };
235
+ }
236
+ export const computeStep = {
237
+ name: "0G Compute",
238
+ description: "Sets up decentralized AI inference. Instead of paying OpenAI/Anthropic, your agent runs through 0G Network — powered and paid with 0G tokens.",
239
+ detect,
240
+ run,
241
+ };
242
+ //# sourceMappingURL=compute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute.js","sourceRoot":"","sources":["../../../../src/commands/onboard/steps/compute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { OnboardStep } from "../types.js";
2
+ export declare const configStep: OnboardStep;
3
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/commands/onboard/steps/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,WAAW,EAA0B,MAAM,aAAa,CAAC;AAyBrF,eAAO,MAAM,UAAU,EAAE,WAKxB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { configExists, getDefaultConfig, loadConfig, saveConfig } from "../../../config/store.js";
2
+ import { CONFIG_FILE } from "../../../config/paths.js";
3
+ function detect(state) {
4
+ const exists = configExists();
5
+ if (exists) {
6
+ const cfg = loadConfig();
7
+ state.configInitialized = true;
8
+ return {
9
+ configured: true,
10
+ summary: `Config at ${CONFIG_FILE} (chain: ${cfg.chain.chainId})`,
11
+ };
12
+ }
13
+ return { configured: false, summary: "No config file found" };
14
+ }
15
+ async function run(state) {
16
+ const cfg = getDefaultConfig();
17
+ saveConfig(cfg);
18
+ state.configInitialized = true;
19
+ return {
20
+ action: "configured",
21
+ message: `Config initialized (0G Mainnet, chain ${cfg.chain.chainId})`,
22
+ };
23
+ }
24
+ export const configStep = {
25
+ name: "Configuration",
26
+ description: "Creates your local settings file — stores your preferred RPC endpoint and network config. Like .env for your crypto wallet.",
27
+ detect,
28
+ run,
29
+ };
30
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/commands/onboard/steps/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,SAAS,MAAM,CAAC,KAAmB;IACjC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QACzB,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC/B,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,aAAa,WAAW,YAAY,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG;SAClE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,KAAmB;IACpC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,UAAU,CAAC,GAAG,CAAC,CAAC;IAChB,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC/B,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,yCAAyC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG;KACvE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,6HAA6H;IAC1I,MAAM;IACN,GAAG;CACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { OnboardStep } from "../types.js";
2
+ export declare const monitorStep: OnboardStep;
3
+ //# sourceMappingURL=monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor.d.ts","sourceRoot":"","sources":["../../../../src/commands/onboard/steps/monitor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAgB,WAAW,EAA0B,MAAM,aAAa,CAAC;AAsIrF,eAAO,MAAM,WAAW,EAAE,WAKzB,CAAC"}
@@ -0,0 +1,134 @@
1
+ import { existsSync, readFileSync, openSync, mkdirSync, closeSync } from "node:fs";
2
+ import { fileURLToPath } from "node:url";
3
+ import { spawn } from "node:child_process";
4
+ import inquirer from "inquirer";
5
+ import { ZG_COMPUTE_DIR, ZG_MONITOR_PID_FILE, ZG_MONITOR_LOG_FILE } from "../../../0g-compute/constants.js";
6
+ import { writeStderr } from "../../../utils/output.js";
7
+ import { colors } from "../../../utils/ui.js";
8
+ function detect(state) {
9
+ if (!existsSync(ZG_MONITOR_PID_FILE)) {
10
+ return { configured: false, summary: "Balance monitor not running" };
11
+ }
12
+ try {
13
+ const pid = parseInt(readFileSync(ZG_MONITOR_PID_FILE, "utf-8").trim(), 10);
14
+ process.kill(pid, 0); // Check if alive
15
+ state.monitorRunning = true;
16
+ return { configured: true, summary: `Monitor running (PID ${pid})` };
17
+ }
18
+ catch {
19
+ return { configured: false, summary: "Monitor not running (stale PID file)" };
20
+ }
21
+ }
22
+ async function run(state) {
23
+ if (!state.selectedProvider) {
24
+ return { action: "failed", message: "No provider selected. Complete the 0G Compute step first." };
25
+ }
26
+ if (!state.webhooksConfigured) {
27
+ writeStderr(colors.warn(" ⚠ Notifications not configured — monitor will check balance but cannot send alerts."));
28
+ writeStderr(colors.muted(" To enable alerts, go back and set up Notifications."));
29
+ writeStderr("");
30
+ }
31
+ const { startMonitor } = await inquirer.prompt([{
32
+ type: "confirm",
33
+ name: "startMonitor",
34
+ message: "Start balance monitor daemon?",
35
+ default: true,
36
+ }]);
37
+ if (!startMonitor) {
38
+ return { action: "skipped", message: "Monitor not started" };
39
+ }
40
+ const { mode } = await inquirer.prompt([{
41
+ type: "list",
42
+ name: "mode",
43
+ message: "Monitor mode:",
44
+ choices: [
45
+ { name: "Recommended (auto-calculates threshold from provider pricing)", value: "recommended" },
46
+ { name: "Fixed threshold", value: "fixed" },
47
+ ],
48
+ }]);
49
+ let threshold;
50
+ let buffer = "0";
51
+ if (mode === "fixed") {
52
+ const { thresholdInput } = await inquirer.prompt([{
53
+ type: "input",
54
+ name: "thresholdInput",
55
+ message: "Alert threshold (in 0G):",
56
+ default: "1.0",
57
+ validate: (input) => {
58
+ const n = Number(input);
59
+ return (Number.isFinite(n) && n > 0) || "Must be a positive number";
60
+ },
61
+ }]);
62
+ threshold = thresholdInput;
63
+ }
64
+ else {
65
+ const { bufferInput } = await inquirer.prompt([{
66
+ type: "input",
67
+ name: "bufferInput",
68
+ message: "Extra buffer above recommended min (in 0G):",
69
+ default: "0",
70
+ validate: (input) => {
71
+ const n = Number(input);
72
+ return (Number.isFinite(n) && n >= 0) || "Must be >= 0";
73
+ },
74
+ }]);
75
+ buffer = bufferInput;
76
+ }
77
+ const { interval } = await inquirer.prompt([{
78
+ type: "input",
79
+ name: "interval",
80
+ message: "Check interval (seconds):",
81
+ default: "300",
82
+ validate: (input) => {
83
+ const n = Number(input);
84
+ return (Number.isInteger(n) && n >= 60) || "Must be an integer >= 60";
85
+ },
86
+ }]);
87
+ // Ensure log directory
88
+ if (!existsSync(ZG_COMPUTE_DIR)) {
89
+ mkdirSync(ZG_COMPUTE_DIR, { recursive: true });
90
+ }
91
+ // Build daemon args
92
+ const childArgs = [
93
+ "0g-compute", "monitor", "start",
94
+ "--providers", state.selectedProvider,
95
+ "--mode", mode,
96
+ "--interval", interval,
97
+ "--buffer", buffer,
98
+ ];
99
+ if (threshold != null) {
100
+ childArgs.push("--threshold", threshold);
101
+ }
102
+ const cliPath = fileURLToPath(new URL("../../../cli.js", import.meta.url));
103
+ const logFd = openSync(ZG_MONITOR_LOG_FILE, "a");
104
+ try {
105
+ const child = spawn(process.execPath, [cliPath, ...childArgs], {
106
+ detached: true,
107
+ stdio: ["ignore", logFd, logFd],
108
+ });
109
+ child.unref();
110
+ closeSync(logFd);
111
+ state.monitorRunning = true;
112
+ writeStderr(colors.muted(` PID: ${child.pid}`));
113
+ writeStderr(colors.muted(` Log: ${ZG_MONITOR_LOG_FILE}`));
114
+ return {
115
+ action: "configured",
116
+ message: `Monitor daemon started (PID ${child.pid})`,
117
+ };
118
+ }
119
+ catch (err) {
120
+ try {
121
+ closeSync(logFd);
122
+ }
123
+ catch { /* ignore */ }
124
+ const msg = err instanceof Error ? err.message : String(err);
125
+ return { action: "failed", message: `Failed to start monitor: ${msg}` };
126
+ }
127
+ }
128
+ export const monitorStep = {
129
+ name: "Balance Monitor",
130
+ description: "Starts a background watchdog that checks your AI compute balance. It alerts you before your credits run out so your agent never goes offline.",
131
+ detect,
132
+ run,
133
+ };
134
+ //# sourceMappingURL=monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../../../src/commands/onboard/steps/monitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { OnboardStep } from "../types.js";
2
+ export declare const openclawStep: OnboardStep;
3
+ //# sourceMappingURL=openclaw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../../../src/commands/onboard/steps/openclaw.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAgB,WAAW,EAA0B,MAAM,aAAa,CAAC;AA6BrF,eAAO,MAAM,YAAY,EAAE,WAK1B,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { homedir } from "node:os";
4
+ import { linkOpenclawSkill } from "../../../setup/openclaw-link.js";
5
+ import { writeStderr } from "../../../utils/output.js";
6
+ import { colors } from "../../../utils/ui.js";
7
+ const SKILL_NAME = "echo0g";
8
+ function detect(state) {
9
+ const target = join(homedir(), ".openclaw", "skills", SKILL_NAME);
10
+ if (existsSync(target)) {
11
+ state.openclawLinked = true;
12
+ return { configured: true, summary: `Skill linked at ${target}` };
13
+ }
14
+ return { configured: false, summary: "OpenClaw skill not linked" };
15
+ }
16
+ async function run(state) {
17
+ const result = linkOpenclawSkill(SKILL_NAME, { force: true });
18
+ state.openclawLinked = true;
19
+ writeStderr(colors.muted(` Source: ${result.source}`));
20
+ writeStderr(colors.muted(` Target: ${result.target} (${result.linkType})`));
21
+ if (result.workspaceLinked) {
22
+ writeStderr(colors.muted(` Workspace: ${result.workspaceTarget}`));
23
+ }
24
+ return {
25
+ action: "configured",
26
+ message: `OpenClaw skill linked (${result.linkType})`,
27
+ };
28
+ }
29
+ export const openclawStep = {
30
+ name: "OpenClaw Skill",
31
+ description: "Links EchoClaw into your AI agent platform. After this, your AI assistant can trade, check balances, and manage your wallet through chat.",
32
+ detect,
33
+ run,
34
+ };
35
+ //# sourceMappingURL=openclaw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../../../../src/commands/onboard/steps/openclaw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,MAAM,UAAU,GAAG,QAAQ,CAAC;AAE5B,SAAS,MAAM,CAAC,KAAmB;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAClE,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;QAC5B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,MAAM,EAAE,EAAE,CAAC;IACpE,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;AACrE,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,KAAmB;IACpC,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;IAE5B,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACxD,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC7E,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,0BAA0B,MAAM,CAAC,QAAQ,GAAG;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAgB;IACvC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,2IAA2I;IACxJ,MAAM;IACN,GAAG;CACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { OnboardStep } from "../types.js";
2
+ export declare const passwordStep: OnboardStep;
3
+ //# sourceMappingURL=password.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../../../src/commands/onboard/steps/password.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAgB,WAAW,EAA0B,MAAM,aAAa,CAAC;AA0ErF,eAAO,MAAM,YAAY,EAAE,WAK1B,CAAC"}
@@ -0,0 +1,71 @@
1
+ import inquirer from "inquirer";
2
+ import { getKeystorePassword } from "../../../utils/env.js";
3
+ import { loadOpenclawConfig, patchOpenclawSkillEnv } from "../../../openclaw/config.js";
4
+ import { writeStderr } from "../../../utils/output.js";
5
+ import { colors } from "../../../utils/ui.js";
6
+ const SKILL_KEY = "echo0g";
7
+ const MIN_PASSWORD_LENGTH = 8;
8
+ function detect(state) {
9
+ // 1. Check process.env (set by shell or previous step)
10
+ const pw = getKeystorePassword();
11
+ if (pw) {
12
+ state.passwordSet = true;
13
+ return { configured: true, summary: "ECHO_KEYSTORE_PASSWORD is set" };
14
+ }
15
+ // 2. Fallback: check if password is stored in openclaw.json
16
+ const config = loadOpenclawConfig();
17
+ const storedPw = config?.skills?.entries?.[SKILL_KEY]?.env?.ECHO_KEYSTORE_PASSWORD;
18
+ if (typeof storedPw === "string" && storedPw.length > 0) {
19
+ // Load into process.env so wallet/compute steps can use it
20
+ process.env.ECHO_KEYSTORE_PASSWORD = storedPw;
21
+ state.passwordSet = true;
22
+ return { configured: true, summary: "Password found in OpenClaw config" };
23
+ }
24
+ return { configured: false, summary: "Keystore password not configured" };
25
+ }
26
+ async function run(state) {
27
+ const { password } = await inquirer.prompt([{
28
+ type: "password",
29
+ name: "password",
30
+ message: "Choose a keystore password (min 8 chars):",
31
+ mask: "*",
32
+ validate: (input) => input.length >= MIN_PASSWORD_LENGTH || `Password must be at least ${MIN_PASSWORD_LENGTH} characters`,
33
+ }]);
34
+ const { confirm } = await inquirer.prompt([{
35
+ type: "password",
36
+ name: "confirm",
37
+ message: "Confirm password:",
38
+ mask: "*",
39
+ validate: (input) => input === password || "Passwords do not match",
40
+ }]);
41
+ // Save to OpenClaw skill env
42
+ const envMap = {
43
+ ECHO_KEYSTORE_PASSWORD: password,
44
+ };
45
+ // Ask about auto-update
46
+ const { autoUpdate } = await inquirer.prompt([{
47
+ type: "confirm",
48
+ name: "autoUpdate",
49
+ message: "Enable auto-update checks?",
50
+ default: true,
51
+ }]);
52
+ if (autoUpdate) {
53
+ envMap.ECHO_AUTO_UPDATE = "1";
54
+ }
55
+ const patchResult = patchOpenclawSkillEnv(SKILL_KEY, envMap, { force: true });
56
+ writeStderr(colors.muted(` OpenClaw config: ${patchResult.path} (${patchResult.status})`));
57
+ // Set in current process so wallet step can use it
58
+ process.env.ECHO_KEYSTORE_PASSWORD = password;
59
+ state.passwordSet = true;
60
+ return {
61
+ action: "configured",
62
+ message: "Keystore password saved to OpenClaw skill env",
63
+ };
64
+ }
65
+ export const passwordStep = {
66
+ name: "Keystore Password",
67
+ description: "Sets a master password that encrypts your private key on disk. Without it, nobody can sign transactions — even if they access your server.",
68
+ detect,
69
+ run,
70
+ };
71
+ //# sourceMappingURL=password.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password.js","sourceRoot":"","sources":["../../../../src/commands/onboard/steps/password.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { OnboardStep } from "../types.js";
2
+ export declare const walletStep: OnboardStep;
3
+ //# sourceMappingURL=wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../../src/commands/onboard/steps/wallet.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAgB,WAAW,EAA0B,MAAM,aAAa,CAAC;AAiHrF,eAAO,MAAM,UAAU,EAAE,WAKxB,CAAC"}