clawkr-cli 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.
- package/.env.example +39 -0
- package/README.md +219 -0
- package/dist/commands/claim.js +112 -0
- package/dist/commands/claim.js.map +1 -0
- package/dist/commands/config.js +46 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/launch.js +328 -0
- package/dist/commands/launch.js.map +1 -0
- package/dist/commands/register.js +107 -0
- package/dist/commands/register.js.map +1 -0
- package/dist/commands/status.js +155 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/verify.js +172 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/index.js +78 -0
- package/dist/index.js.map +1 -0
- package/dist/templates/token-landing.html +436 -0
- package/dist/utils/abis.js +242 -0
- package/dist/utils/abis.js.map +1 -0
- package/dist/utils/basescan.js +252 -0
- package/dist/utils/basescan.js.map +1 -0
- package/dist/utils/config.js +103 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/contract-sources.js +817 -0
- package/dist/utils/contract-sources.js.map +1 -0
- package/dist/utils/wallet.js +116 -0
- package/dist/utils/wallet.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,328 @@
|
|
|
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.launchCommand = launchCommand;
|
|
7
|
+
const viem_1 = require("viem");
|
|
8
|
+
const accounts_1 = require("viem/accounts");
|
|
9
|
+
const chains_1 = require("viem/chains");
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const ora_1 = __importDefault(require("ora"));
|
|
12
|
+
const axios_1 = __importDefault(require("axios"));
|
|
13
|
+
const config_1 = require("../utils/config");
|
|
14
|
+
const abis_1 = require("../utils/abis");
|
|
15
|
+
async function launchCommand(options) {
|
|
16
|
+
const config = (0, config_1.loadConfig)();
|
|
17
|
+
const privateKey = (0, config_1.getPrivateKey)();
|
|
18
|
+
// JSON output object
|
|
19
|
+
const output = {
|
|
20
|
+
success: false,
|
|
21
|
+
command: 'launch',
|
|
22
|
+
params: {
|
|
23
|
+
name: options.name,
|
|
24
|
+
symbol: options.symbol,
|
|
25
|
+
description: options.description || null,
|
|
26
|
+
website: options.website || null,
|
|
27
|
+
x: options.x || null,
|
|
28
|
+
image: options.image || null,
|
|
29
|
+
tokenUri: options.tokenUri || null,
|
|
30
|
+
marketCap: options.marketCap,
|
|
31
|
+
fairLaunchDuration: options.fairLaunchDuration || '300',
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
// Validate private key
|
|
35
|
+
if (!privateKey) {
|
|
36
|
+
output.error = 'Private key not found. Set PRIVATE_KEY environment variable.';
|
|
37
|
+
if (options.json) {
|
|
38
|
+
console.log(JSON.stringify(output, null, 2));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
console.error(chalk_1.default.red('Error: Private key not found. Set PRIVATE_KEY environment variable.'));
|
|
42
|
+
}
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
// Create clients
|
|
46
|
+
const account = (0, accounts_1.privateKeyToAccount)(privateKey);
|
|
47
|
+
const publicClient = (0, viem_1.createPublicClient)({
|
|
48
|
+
chain: chains_1.base,
|
|
49
|
+
transport: (0, viem_1.http)(config.rpcUrl),
|
|
50
|
+
});
|
|
51
|
+
const walletClient = (0, viem_1.createWalletClient)({
|
|
52
|
+
account,
|
|
53
|
+
chain: chains_1.base,
|
|
54
|
+
transport: (0, viem_1.http)(config.rpcUrl),
|
|
55
|
+
});
|
|
56
|
+
const spinner = options.json ? null : (0, ora_1.default)('Preparing launch...').start();
|
|
57
|
+
try {
|
|
58
|
+
// Check if agent is registered via API (not blockchain)
|
|
59
|
+
if (spinner)
|
|
60
|
+
spinner.text = 'Checking agent registration...';
|
|
61
|
+
const apiBaseUrl = process.env.API_BASE_URL || 'https://clawkr.com/api';
|
|
62
|
+
try {
|
|
63
|
+
const agentResponse = await axios_1.default.get(`${apiBaseUrl}/agents/${account.address}`, { timeout: 10000 });
|
|
64
|
+
if (!agentResponse.data.success || agentResponse.data.data.status !== 'ACTIVE') {
|
|
65
|
+
output.error = `Agent ${account.address} is not registered or not active.`;
|
|
66
|
+
if (spinner)
|
|
67
|
+
spinner.fail(output.error);
|
|
68
|
+
if (options.json) {
|
|
69
|
+
console.log(JSON.stringify(output, null, 2));
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.error(chalk_1.default.red('\nError: ' + output.error));
|
|
73
|
+
console.error(chalk_1.default.yellow('\nPlease register first with:'));
|
|
74
|
+
console.error(chalk_1.default.white(' clawkr register --json'));
|
|
75
|
+
}
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
if (error.response?.status === 404) {
|
|
81
|
+
output.error = `Agent ${account.address} is not registered.`;
|
|
82
|
+
if (spinner)
|
|
83
|
+
spinner.fail(output.error);
|
|
84
|
+
if (options.json) {
|
|
85
|
+
console.log(JSON.stringify(output, null, 2));
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
console.error(chalk_1.default.red('\nError: ' + output.error));
|
|
89
|
+
console.error(chalk_1.default.yellow('\nPlease register first with:'));
|
|
90
|
+
console.error(chalk_1.default.white(' clawkr register --json'));
|
|
91
|
+
}
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
// If other error, throw to outer catch
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
// Check if launches are paused
|
|
98
|
+
const paused = await publicClient.readContract({
|
|
99
|
+
address: config.contracts.clawkrHook,
|
|
100
|
+
abi: abis_1.CLAWKR_HOOK_ABI,
|
|
101
|
+
functionName: 'paused',
|
|
102
|
+
});
|
|
103
|
+
if (paused) {
|
|
104
|
+
output.error = 'Token launches are currently paused.';
|
|
105
|
+
if (spinner)
|
|
106
|
+
spinner.fail(output.error);
|
|
107
|
+
if (options.json)
|
|
108
|
+
console.log(JSON.stringify(output, null, 2));
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
// Agents must provide tokenUri directly (agents upload images themselves)
|
|
112
|
+
const tokenUri = options.tokenUri || '';
|
|
113
|
+
// Parse market cap in ETH (default: 1 ETH)
|
|
114
|
+
const marketCapEth = (0, viem_1.parseEther)(options.marketCap || '1');
|
|
115
|
+
const fairLaunchDuration = BigInt(options.fairLaunchDuration || '300'); // 5 minutes default
|
|
116
|
+
const fairLaunchSupply = BigInt('10000000000000000000000000000'); // 10e27 (10 billion tokens for fair launch)
|
|
117
|
+
// Prepare launch params (order must match contract struct)
|
|
118
|
+
const launchParams = {
|
|
119
|
+
name: options.name,
|
|
120
|
+
symbol: options.symbol,
|
|
121
|
+
tokenUri,
|
|
122
|
+
marketCapEth,
|
|
123
|
+
fairLaunchDuration,
|
|
124
|
+
fairLaunchSupply,
|
|
125
|
+
};
|
|
126
|
+
// Step 1: Simulate to get return values (token address, poolId)
|
|
127
|
+
if (spinner)
|
|
128
|
+
spinner.text = 'Simulating transaction...';
|
|
129
|
+
const { request, result } = await publicClient.simulateContract({
|
|
130
|
+
address: config.contracts.clawkrHook,
|
|
131
|
+
abi: abis_1.CLAWKR_HOOK_ABI,
|
|
132
|
+
functionName: 'launch',
|
|
133
|
+
args: [launchParams],
|
|
134
|
+
account,
|
|
135
|
+
});
|
|
136
|
+
// Extract return values from simulation
|
|
137
|
+
// Contract returns: (address token, PoolId poolId)
|
|
138
|
+
const [tokenAddress, poolId] = result;
|
|
139
|
+
if (options.dryRun) {
|
|
140
|
+
output.success = true;
|
|
141
|
+
output.dryRun = true;
|
|
142
|
+
output.message = 'Simulation successful. Transaction would succeed.';
|
|
143
|
+
output.result = {
|
|
144
|
+
tokenAddress,
|
|
145
|
+
poolId,
|
|
146
|
+
estimatedGas: request.gas?.toString(),
|
|
147
|
+
urls: {
|
|
148
|
+
token: `https://basescan.org/token/${tokenAddress}`,
|
|
149
|
+
uniswap: `https://app.uniswap.org/explore/tokens/base/${tokenAddress}`,
|
|
150
|
+
dextools: `https://www.dextools.io/app/base/pair-explorer/${poolId}`,
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
if (spinner)
|
|
154
|
+
spinner.succeed('Dry run successful!');
|
|
155
|
+
if (options.json) {
|
|
156
|
+
console.log(JSON.stringify(output, null, 2));
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
console.log(chalk_1.default.green('\nDry run successful!'));
|
|
160
|
+
console.log(chalk_1.default.gray('Transaction would succeed if executed.'));
|
|
161
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
162
|
+
console.log(chalk_1.default.white('Token Address: ') + chalk_1.default.cyan(tokenAddress));
|
|
163
|
+
console.log(chalk_1.default.white('Pool ID: ') + chalk_1.default.gray(poolId));
|
|
164
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
165
|
+
console.log(chalk_1.default.bold('Preview Links:'));
|
|
166
|
+
console.log(chalk_1.default.gray(' Token: ') + chalk_1.default.cyan(`https://basescan.org/token/${tokenAddress}`));
|
|
167
|
+
console.log(chalk_1.default.gray(' Dextools: ') + chalk_1.default.cyan(`https://www.dextools.io/app/base/pair-explorer/${poolId}`));
|
|
168
|
+
}
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
// Step 2: Execute the launch using the simulated request
|
|
172
|
+
if (spinner)
|
|
173
|
+
spinner.text = 'Launching token...';
|
|
174
|
+
const hash = await walletClient.writeContract(request);
|
|
175
|
+
if (spinner)
|
|
176
|
+
spinner.text = 'Waiting for confirmation...';
|
|
177
|
+
const receipt = await publicClient.waitForTransactionReceipt({ hash });
|
|
178
|
+
// Step 3: Verify contract via Clawkr API (server-side verification)
|
|
179
|
+
let verificationAttempted = false;
|
|
180
|
+
if (!options.dryRun) {
|
|
181
|
+
verificationAttempted = true;
|
|
182
|
+
if (spinner)
|
|
183
|
+
spinner.text = 'Verifying contract on BaseScan (via Clawkr API)...';
|
|
184
|
+
try {
|
|
185
|
+
// Call Clawkr API for verification
|
|
186
|
+
const verificationResponse = await axios_1.default.post('https://clawkr.com/api/verify-contract', {
|
|
187
|
+
contractAddress: tokenAddress,
|
|
188
|
+
agentAddress: account.address,
|
|
189
|
+
hookAddress: config.contracts.clawkrHook,
|
|
190
|
+
}, {
|
|
191
|
+
timeout: 35000, // 35 second timeout (30s for verification + 5s buffer)
|
|
192
|
+
});
|
|
193
|
+
const verificationResult = verificationResponse.data;
|
|
194
|
+
// Add verification result to output
|
|
195
|
+
output.verification = {
|
|
196
|
+
attempted: true,
|
|
197
|
+
success: verificationResult.success,
|
|
198
|
+
status: verificationResult.status,
|
|
199
|
+
guid: verificationResult.guid,
|
|
200
|
+
result: verificationResult.result,
|
|
201
|
+
error: verificationResult.error,
|
|
202
|
+
};
|
|
203
|
+
if (verificationResult.success) {
|
|
204
|
+
if (spinner)
|
|
205
|
+
spinner.text = 'Contract verified successfully!';
|
|
206
|
+
}
|
|
207
|
+
else if (verificationResult.status === 'pending') {
|
|
208
|
+
// Timeout - verification still processing
|
|
209
|
+
if (spinner)
|
|
210
|
+
spinner.text = 'Verification timeout - still processing on BaseScan';
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
// Failed
|
|
214
|
+
if (spinner)
|
|
215
|
+
spinner.text = 'Verification failed';
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
catch (verificationError) {
|
|
219
|
+
// Graceful failure - don't fail the whole launch
|
|
220
|
+
output.verification = {
|
|
221
|
+
attempted: true,
|
|
222
|
+
success: false,
|
|
223
|
+
status: 'failed',
|
|
224
|
+
error: verificationError.message || 'API call failed',
|
|
225
|
+
};
|
|
226
|
+
if (spinner)
|
|
227
|
+
spinner.text = 'Verification failed (contract deployed successfully)';
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
// Dry run - skip verification
|
|
232
|
+
output.verification = {
|
|
233
|
+
attempted: false,
|
|
234
|
+
reason: 'Skipped in dry-run mode',
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
// Build success output with all required fields
|
|
238
|
+
output.success = true;
|
|
239
|
+
output.result = {
|
|
240
|
+
tokenAddress,
|
|
241
|
+
poolId,
|
|
242
|
+
transactionHash: hash,
|
|
243
|
+
blockNumber: receipt.blockNumber.toString(),
|
|
244
|
+
gasUsed: receipt.gasUsed.toString(),
|
|
245
|
+
status: receipt.status === 'success' ? 'confirmed' : 'failed',
|
|
246
|
+
urls: {
|
|
247
|
+
token: `https://basescan.org/token/${tokenAddress}`,
|
|
248
|
+
transaction: `https://basescan.org/tx/${hash}`,
|
|
249
|
+
uniswap: `https://app.uniswap.org/explore/tokens/base/${tokenAddress}`,
|
|
250
|
+
dextools: `https://www.dextools.io/app/base/pair-explorer/${poolId}`,
|
|
251
|
+
},
|
|
252
|
+
};
|
|
253
|
+
if (spinner)
|
|
254
|
+
spinner.succeed('Token launched successfully!');
|
|
255
|
+
if (options.json) {
|
|
256
|
+
console.log(JSON.stringify(output, null, 2));
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
console.log('\n' + chalk_1.default.green.bold('Token Launched Successfully!'));
|
|
260
|
+
console.log(chalk_1.default.gray('═'.repeat(50)));
|
|
261
|
+
console.log(chalk_1.default.white('Name: ') + options.name);
|
|
262
|
+
console.log(chalk_1.default.white('Symbol: ') + options.symbol);
|
|
263
|
+
if (options.description) {
|
|
264
|
+
console.log(chalk_1.default.white('Description: ') + options.description);
|
|
265
|
+
}
|
|
266
|
+
if (options.website) {
|
|
267
|
+
console.log(chalk_1.default.white('Website: ') + chalk_1.default.cyan(options.website));
|
|
268
|
+
}
|
|
269
|
+
if (options.x) {
|
|
270
|
+
console.log(chalk_1.default.white('X (Twitter): ') + chalk_1.default.cyan(options.x));
|
|
271
|
+
}
|
|
272
|
+
console.log(chalk_1.default.white('Market Cap: ') + (0, viem_1.formatEther)(marketCapEth) + ' ETH');
|
|
273
|
+
console.log(chalk_1.default.white('Fair Launch: ') + fairLaunchDuration.toString() + ' seconds');
|
|
274
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
275
|
+
console.log(chalk_1.default.white('Token Address: ') + chalk_1.default.cyan(tokenAddress));
|
|
276
|
+
console.log(chalk_1.default.white('Pool ID: ') + chalk_1.default.gray(poolId));
|
|
277
|
+
if (tokenUri) {
|
|
278
|
+
console.log(chalk_1.default.white('Token URI: ') + chalk_1.default.cyan(tokenUri));
|
|
279
|
+
}
|
|
280
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
281
|
+
console.log(chalk_1.default.white('Transaction: ') + chalk_1.default.cyan(hash));
|
|
282
|
+
console.log(chalk_1.default.white('Block: ') + receipt.blockNumber.toString());
|
|
283
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
284
|
+
// Display verification status
|
|
285
|
+
if (output.verification?.attempted) {
|
|
286
|
+
if (output.verification.success) {
|
|
287
|
+
console.log(chalk_1.default.white('Verification: ') + chalk_1.default.green('✓ Verified'));
|
|
288
|
+
}
|
|
289
|
+
else if (output.verification.status === 'pending') {
|
|
290
|
+
console.log(chalk_1.default.white('Verification: ') + chalk_1.default.yellow('⏳ Timeout (still processing)'));
|
|
291
|
+
console.log(chalk_1.default.gray(' Run: ') + chalk_1.default.cyan(`clawkr verify ${tokenAddress}`));
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
console.log(chalk_1.default.white('Verification: ') + chalk_1.default.red('✗ Failed'));
|
|
295
|
+
if (output.verification.error) {
|
|
296
|
+
console.log(chalk_1.default.gray(' Error: ') + chalk_1.default.red(output.verification.error));
|
|
297
|
+
}
|
|
298
|
+
console.log(chalk_1.default.gray(' Retry: ') + chalk_1.default.cyan(`clawkr verify ${tokenAddress}`));
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
console.log(chalk_1.default.white('Verification: ') + chalk_1.default.gray('Skipped'));
|
|
303
|
+
if (output.verification?.reason) {
|
|
304
|
+
console.log(chalk_1.default.gray(' ') + output.verification.reason);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
console.log(chalk_1.default.gray('═'.repeat(50)));
|
|
308
|
+
console.log(chalk_1.default.bold('\nUseful Links:'));
|
|
309
|
+
console.log(chalk_1.default.gray(' Token: ') + chalk_1.default.cyan(`https://basescan.org/token/${tokenAddress}`));
|
|
310
|
+
console.log(chalk_1.default.gray(' Uniswap: ') + chalk_1.default.cyan(`https://app.uniswap.org/explore/tokens/base/${tokenAddress}`));
|
|
311
|
+
console.log(chalk_1.default.gray(' Dextools: ') + chalk_1.default.cyan(`https://www.dextools.io/app/base/pair-explorer/${poolId}`));
|
|
312
|
+
console.log(chalk_1.default.gray(' Tx: ') + chalk_1.default.cyan(`https://basescan.org/tx/${hash}`));
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
catch (error) {
|
|
316
|
+
output.error = error.message || 'Unknown error occurred';
|
|
317
|
+
if (spinner)
|
|
318
|
+
spinner.fail('Launch failed');
|
|
319
|
+
if (options.json) {
|
|
320
|
+
console.log(JSON.stringify(output, null, 2));
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
console.error(chalk_1.default.red('\nError: ' + output.error));
|
|
324
|
+
}
|
|
325
|
+
process.exit(1);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=launch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/commands/launch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
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.registerCommand = registerCommand;
|
|
7
|
+
const accounts_1 = require("viem/accounts");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const ora_1 = __importDefault(require("ora"));
|
|
10
|
+
const axios_1 = __importDefault(require("axios"));
|
|
11
|
+
const wallet_1 = require("../utils/wallet");
|
|
12
|
+
async function registerCommand(options) {
|
|
13
|
+
// Always create a new wallet when registering
|
|
14
|
+
const wallet = (0, wallet_1.createWallet)();
|
|
15
|
+
const privateKey = wallet.privateKey;
|
|
16
|
+
const output = {
|
|
17
|
+
success: false,
|
|
18
|
+
command: 'register',
|
|
19
|
+
params: {
|
|
20
|
+
name: options.name || '',
|
|
21
|
+
description: options.description || ''
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
// Show wallet creation info to user (not in JSON mode)
|
|
25
|
+
if (!options.json) {
|
|
26
|
+
console.log(chalk_1.default.yellow.bold('\n🔑 New Wallet Created!'));
|
|
27
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
28
|
+
console.log(chalk_1.default.white('Address: ') + chalk_1.default.cyan(wallet.address));
|
|
29
|
+
console.log(chalk_1.default.white('Stored at: ') + chalk_1.default.gray((0, wallet_1.getWalletFilePath)()));
|
|
30
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
31
|
+
console.log(chalk_1.default.yellow('⚠️ IMPORTANT: Back up your wallet file!'));
|
|
32
|
+
console.log(chalk_1.default.yellow('💰 Fund this wallet with Base ETH for gas fees'));
|
|
33
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
34
|
+
console.log('');
|
|
35
|
+
}
|
|
36
|
+
const account = (0, accounts_1.privateKeyToAccount)(privateKey);
|
|
37
|
+
const spinner = options.json ? null : (0, ora_1.default)('Registering agent via API...').start();
|
|
38
|
+
try {
|
|
39
|
+
// Get API base URL from environment or use default
|
|
40
|
+
const apiBaseUrl = process.env.API_BASE_URL || 'https://clawkr.com/api';
|
|
41
|
+
// Register via API (FREE - no blockchain transaction)
|
|
42
|
+
const response = await axios_1.default.post(`${apiBaseUrl}/agents/register`, {
|
|
43
|
+
address: account.address,
|
|
44
|
+
name: options.name || null,
|
|
45
|
+
description: options.description || null
|
|
46
|
+
}, {
|
|
47
|
+
timeout: 10000,
|
|
48
|
+
headers: { 'Content-Type': 'application/json' }
|
|
49
|
+
});
|
|
50
|
+
if (response.data.success) {
|
|
51
|
+
output.success = true;
|
|
52
|
+
output.result = {
|
|
53
|
+
agent_address: response.data.agent.address,
|
|
54
|
+
name: response.data.agent.name,
|
|
55
|
+
description: response.data.agent.description,
|
|
56
|
+
status: response.data.agent.status,
|
|
57
|
+
registered_at: response.data.agent.registered_at
|
|
58
|
+
};
|
|
59
|
+
if (spinner)
|
|
60
|
+
spinner.succeed('Agent registered successfully!');
|
|
61
|
+
if (options.json) {
|
|
62
|
+
console.log(JSON.stringify(output, null, 2));
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
console.log('\n' + chalk_1.default.green.bold('✅ Agent Registered Successfully! (FREE - No Gas Fees)'));
|
|
66
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
67
|
+
console.log(chalk_1.default.white('Agent Address: ') + chalk_1.default.cyan(account.address));
|
|
68
|
+
console.log(chalk_1.default.white('Status: ') + chalk_1.default.green('ACTIVE'));
|
|
69
|
+
if (options.name) {
|
|
70
|
+
console.log(chalk_1.default.white('Name: ') + options.name);
|
|
71
|
+
}
|
|
72
|
+
if (options.description) {
|
|
73
|
+
console.log(chalk_1.default.white('Description: ') + options.description);
|
|
74
|
+
}
|
|
75
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
76
|
+
console.log('\n' + chalk_1.default.yellow('You can now launch tokens with:'));
|
|
77
|
+
console.log(chalk_1.default.white(' clawkr launch --name "Token Name" --symbol "TKN" --image ./logo.png'));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
throw new Error(response.data.error || 'Registration failed');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
const errorMessage = error.response?.data?.error || error.message || 'Registration failed';
|
|
86
|
+
output.error = errorMessage;
|
|
87
|
+
if (spinner)
|
|
88
|
+
spinner.fail('Registration failed');
|
|
89
|
+
if (options.json) {
|
|
90
|
+
console.log(JSON.stringify(output, null, 2));
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
console.error(chalk_1.default.red('\n❌ Error: ' + errorMessage));
|
|
94
|
+
// Helpful error messages
|
|
95
|
+
if (errorMessage.includes('already registered')) {
|
|
96
|
+
console.log(chalk_1.default.yellow('\n✓ Your agent is already registered!'));
|
|
97
|
+
console.log(chalk_1.default.gray(' You can proceed to launch tokens.'));
|
|
98
|
+
}
|
|
99
|
+
else if (errorMessage.includes('ECONNREFUSED') || errorMessage.includes('connect')) {
|
|
100
|
+
console.error(chalk_1.default.gray('\n Could not connect to Clawkr API at: ' + (process.env.API_BASE_URL || 'https://clawkr.com/api')));
|
|
101
|
+
console.error(chalk_1.default.gray(' Please check your internet connection or API_BASE_URL environment variable.'));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/commands/register.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
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.statusCommand = statusCommand;
|
|
7
|
+
const viem_1 = require("viem");
|
|
8
|
+
const chains_1 = require("viem/chains");
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
const ora_1 = __importDefault(require("ora"));
|
|
11
|
+
const config_1 = require("../utils/config");
|
|
12
|
+
const abis_1 = require("../utils/abis");
|
|
13
|
+
async function statusCommand(options) {
|
|
14
|
+
const config = (0, config_1.loadConfig)();
|
|
15
|
+
const output = {
|
|
16
|
+
success: false,
|
|
17
|
+
command: 'status',
|
|
18
|
+
token: options.token,
|
|
19
|
+
};
|
|
20
|
+
const publicClient = (0, viem_1.createPublicClient)({
|
|
21
|
+
chain: chains_1.base,
|
|
22
|
+
transport: (0, viem_1.http)(config.rpcUrl),
|
|
23
|
+
});
|
|
24
|
+
const spinner = options.json ? null : (0, ora_1.default)('Fetching token status...').start();
|
|
25
|
+
try {
|
|
26
|
+
// Get token details first
|
|
27
|
+
if (spinner)
|
|
28
|
+
spinner.text = 'Fetching token details...';
|
|
29
|
+
const [name, symbol, decimals, totalSupply, agent] = await Promise.all([
|
|
30
|
+
publicClient.readContract({
|
|
31
|
+
address: options.token,
|
|
32
|
+
abi: abis_1.ERC20_ABI,
|
|
33
|
+
functionName: 'name',
|
|
34
|
+
}),
|
|
35
|
+
publicClient.readContract({
|
|
36
|
+
address: options.token,
|
|
37
|
+
abi: abis_1.ERC20_ABI,
|
|
38
|
+
functionName: 'symbol',
|
|
39
|
+
}),
|
|
40
|
+
publicClient.readContract({
|
|
41
|
+
address: options.token,
|
|
42
|
+
abi: abis_1.ERC20_ABI,
|
|
43
|
+
functionName: 'decimals',
|
|
44
|
+
}),
|
|
45
|
+
publicClient.readContract({
|
|
46
|
+
address: options.token,
|
|
47
|
+
abi: abis_1.ERC20_ABI,
|
|
48
|
+
functionName: 'totalSupply',
|
|
49
|
+
}),
|
|
50
|
+
publicClient.readContract({
|
|
51
|
+
address: options.token,
|
|
52
|
+
abi: abis_1.ERC20_ABI,
|
|
53
|
+
functionName: 'agent',
|
|
54
|
+
}).catch(() => null), // May not be a Clawkr token
|
|
55
|
+
]);
|
|
56
|
+
if (!agent) {
|
|
57
|
+
output.error = 'Token not found or not launched through Clawkr.';
|
|
58
|
+
if (spinner)
|
|
59
|
+
spinner.fail(output.error);
|
|
60
|
+
if (options.json)
|
|
61
|
+
console.log(JSON.stringify(output, null, 2));
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
// Get claimable fees for the agent (both ETH and token)
|
|
65
|
+
if (spinner)
|
|
66
|
+
spinner.text = 'Fetching fee balances...';
|
|
67
|
+
const WETH = '0x4200000000000000000000000000000000000006';
|
|
68
|
+
const [agentEthFees, agentTokenFees] = await Promise.all([
|
|
69
|
+
publicClient.readContract({
|
|
70
|
+
address: config.contracts.clawkrHook,
|
|
71
|
+
abi: abis_1.CLAWKR_HOOK_ABI,
|
|
72
|
+
functionName: 'agentFees',
|
|
73
|
+
args: [agent, WETH],
|
|
74
|
+
}),
|
|
75
|
+
publicClient.readContract({
|
|
76
|
+
address: config.contracts.clawkrHook,
|
|
77
|
+
abi: abis_1.CLAWKR_HOOK_ABI,
|
|
78
|
+
functionName: 'agentFees',
|
|
79
|
+
args: [agent, options.token],
|
|
80
|
+
}),
|
|
81
|
+
]);
|
|
82
|
+
// Get total launches from hook
|
|
83
|
+
const totalLaunches = await publicClient.readContract({
|
|
84
|
+
address: config.contracts.clawkrHook,
|
|
85
|
+
abi: abis_1.CLAWKR_HOOK_ABI,
|
|
86
|
+
functionName: 'totalLaunches',
|
|
87
|
+
});
|
|
88
|
+
output.success = true;
|
|
89
|
+
output.data = {
|
|
90
|
+
token: {
|
|
91
|
+
address: options.token,
|
|
92
|
+
name,
|
|
93
|
+
symbol,
|
|
94
|
+
decimals: Number(decimals),
|
|
95
|
+
totalSupply: totalSupply.toString(),
|
|
96
|
+
},
|
|
97
|
+
launch: {
|
|
98
|
+
agent: agent,
|
|
99
|
+
hookAddress: config.contracts.clawkrHook,
|
|
100
|
+
totalLaunches: totalLaunches.toString(),
|
|
101
|
+
},
|
|
102
|
+
fees: {
|
|
103
|
+
agentClaimableEth: agentEthFees.toString(),
|
|
104
|
+
agentClaimableToken: agentTokenFees.toString(),
|
|
105
|
+
},
|
|
106
|
+
feeSplit: {
|
|
107
|
+
agent: 90,
|
|
108
|
+
protocol: 10,
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
if (spinner)
|
|
112
|
+
spinner.succeed('Status fetched successfully!');
|
|
113
|
+
if (options.json) {
|
|
114
|
+
console.log(JSON.stringify(output, null, 2));
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
console.log('\n' + chalk_1.default.bold.cyan('Token Status'));
|
|
118
|
+
console.log(chalk_1.default.gray('═'.repeat(60)));
|
|
119
|
+
console.log(chalk_1.default.bold('\nToken Info'));
|
|
120
|
+
console.log(chalk_1.default.gray('─'.repeat(60)));
|
|
121
|
+
console.log(chalk_1.default.white('Name: ') + name);
|
|
122
|
+
console.log(chalk_1.default.white('Symbol: ') + symbol);
|
|
123
|
+
console.log(chalk_1.default.white('Address: ') + chalk_1.default.cyan(options.token));
|
|
124
|
+
console.log(chalk_1.default.white('Total Supply: ') + (0, viem_1.formatUnits)(totalSupply, Number(decimals)));
|
|
125
|
+
console.log(chalk_1.default.bold('\nLaunch Info'));
|
|
126
|
+
console.log(chalk_1.default.gray('─'.repeat(60)));
|
|
127
|
+
console.log(chalk_1.default.white('Agent: ') + chalk_1.default.cyan(agent));
|
|
128
|
+
console.log(chalk_1.default.white('Hook: ') + chalk_1.default.cyan(config.contracts.clawkrHook));
|
|
129
|
+
console.log(chalk_1.default.white('Total Launches: ') + totalLaunches.toString());
|
|
130
|
+
console.log(chalk_1.default.bold('\nFee Status (Claimable)'));
|
|
131
|
+
console.log(chalk_1.default.gray('─'.repeat(60)));
|
|
132
|
+
console.log(chalk_1.default.white('ETH Fees: ') + (0, viem_1.formatUnits)(agentEthFees, 18) + ' ETH');
|
|
133
|
+
console.log(chalk_1.default.white('Token Fees: ') + (0, viem_1.formatUnits)(agentTokenFees, Number(decimals)) + ' ' + symbol);
|
|
134
|
+
console.log(chalk_1.default.bold('\nFee Split'));
|
|
135
|
+
console.log(chalk_1.default.gray('─'.repeat(60)));
|
|
136
|
+
console.log(chalk_1.default.white('Agent: ') + chalk_1.default.green('90%'));
|
|
137
|
+
console.log(chalk_1.default.white('Protocol: ') + chalk_1.default.blue('10%'));
|
|
138
|
+
console.log(chalk_1.default.gray('\n═'.repeat(60)));
|
|
139
|
+
console.log(chalk_1.default.gray(`View on BaseScan: https://basescan.org/address/${options.token}`));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
output.error = error.message || 'Unknown error occurred';
|
|
144
|
+
if (spinner)
|
|
145
|
+
spinner.fail('Failed to fetch status');
|
|
146
|
+
if (options.json) {
|
|
147
|
+
console.log(JSON.stringify(output, null, 2));
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
console.error(chalk_1.default.red('\nError: ' + output.error));
|
|
151
|
+
}
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|