@123456btc/123456btc-cli 1.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 (75) hide show
  1. package/README.md +93 -0
  2. package/bin/123456btc-cli +2 -0
  3. package/dist/api/auth.d.ts +27 -0
  4. package/dist/api/auth.d.ts.map +1 -0
  5. package/dist/api/auth.js +29 -0
  6. package/dist/api/auth.js.map +1 -0
  7. package/dist/api/client.d.ts +13 -0
  8. package/dist/api/client.d.ts.map +1 -0
  9. package/dist/api/client.js +106 -0
  10. package/dist/api/client.js.map +1 -0
  11. package/dist/api/client.test.d.ts +2 -0
  12. package/dist/api/client.test.d.ts.map +1 -0
  13. package/dist/api/client.test.js +27 -0
  14. package/dist/api/client.test.js.map +1 -0
  15. package/dist/api/gas.d.ts +29 -0
  16. package/dist/api/gas.d.ts.map +1 -0
  17. package/dist/api/gas.js +35 -0
  18. package/dist/api/gas.js.map +1 -0
  19. package/dist/api/strategy.d.ts +40 -0
  20. package/dist/api/strategy.d.ts.map +1 -0
  21. package/dist/api/strategy.js +47 -0
  22. package/dist/api/strategy.js.map +1 -0
  23. package/dist/cli.d.ts +3 -0
  24. package/dist/cli.d.ts.map +1 -0
  25. package/dist/cli.js +36 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/commands/auth.d.ts +3 -0
  28. package/dist/commands/auth.d.ts.map +1 -0
  29. package/dist/commands/auth.js +115 -0
  30. package/dist/commands/auth.js.map +1 -0
  31. package/dist/commands/gas.d.ts +3 -0
  32. package/dist/commands/gas.d.ts.map +1 -0
  33. package/dist/commands/gas.js +104 -0
  34. package/dist/commands/gas.js.map +1 -0
  35. package/dist/commands/install.d.ts +3 -0
  36. package/dist/commands/install.d.ts.map +1 -0
  37. package/dist/commands/install.js +151 -0
  38. package/dist/commands/install.js.map +1 -0
  39. package/dist/commands/strategy.d.ts +3 -0
  40. package/dist/commands/strategy.d.ts.map +1 -0
  41. package/dist/commands/strategy.js +124 -0
  42. package/dist/commands/strategy.js.map +1 -0
  43. package/dist/config.d.ts +8 -0
  44. package/dist/config.d.ts.map +1 -0
  45. package/dist/config.js +68 -0
  46. package/dist/config.js.map +1 -0
  47. package/dist/index.d.ts +16 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +26 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/providers/executor.d.ts +36 -0
  52. package/dist/providers/executor.d.ts.map +1 -0
  53. package/dist/providers/executor.js +90 -0
  54. package/dist/providers/executor.js.map +1 -0
  55. package/dist/providers/solana.d.ts +34 -0
  56. package/dist/providers/solana.d.ts.map +1 -0
  57. package/dist/providers/solana.js +69 -0
  58. package/dist/providers/solana.js.map +1 -0
  59. package/dist/providers/verification.d.ts +22 -0
  60. package/dist/providers/verification.d.ts.map +1 -0
  61. package/dist/providers/verification.js +54 -0
  62. package/dist/providers/verification.js.map +1 -0
  63. package/dist/types/api.d.ts +94 -0
  64. package/dist/types/api.d.ts.map +1 -0
  65. package/dist/types/api.js +6 -0
  66. package/dist/types/api.js.map +1 -0
  67. package/dist/types/gas.d.ts +27 -0
  68. package/dist/types/gas.d.ts.map +1 -0
  69. package/dist/types/gas.js +6 -0
  70. package/dist/types/gas.js.map +1 -0
  71. package/dist/types/strategy.d.ts +30 -0
  72. package/dist/types/strategy.d.ts.map +1 -0
  73. package/dist/types/strategy.js +6 -0
  74. package/dist/types/strategy.js.map +1 -0
  75. package/package.json +74 -0
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.createAuthCommand = createAuthCommand;
40
+ const commander_1 = require("commander");
41
+ const inquirer_1 = __importDefault(require("inquirer"));
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const CREDENTIALS_FILE = path.join(process.env.HOME || process.env.USERPROFILE || '.', '.123456btc-cli', 'credentials.json');
45
+ function createAuthCommand(program) {
46
+ const authCmd = new commander_1.Command('auth');
47
+ // Login command
48
+ authCmd
49
+ .command('login')
50
+ .description('Authenticate with 123456btc API')
51
+ .option('-k, --key <api_key>', 'API key (sk_live_... or sk_test_...)')
52
+ .option('-e, --env <environment>', 'Environment: live or test', 'live')
53
+ .action(async (options) => {
54
+ let apiKey = options.key;
55
+ if (!apiKey) {
56
+ const answers = await inquirer_1.default.prompt([
57
+ {
58
+ type: 'input',
59
+ name: 'apiKey',
60
+ message: 'Enter your API key:',
61
+ },
62
+ ]);
63
+ apiKey = answers.apiKey;
64
+ }
65
+ // Validate API key format
66
+ if (!apiKey.startsWith('sk_live_') && !apiKey.startsWith('sk_test_')) {
67
+ console.error('Invalid API key format. Should start with sk_live_ or sk_test_');
68
+ process.exit(1);
69
+ }
70
+ // Create credentials directory
71
+ const dir = path.dirname(CREDENTIALS_FILE);
72
+ if (!fs.existsSync(dir)) {
73
+ fs.mkdirSync(dir, { recursive: true });
74
+ }
75
+ // Save credentials
76
+ const credentials = {
77
+ apiKey,
78
+ environment: options.env,
79
+ savedAt: new Date().toISOString(),
80
+ };
81
+ fs.writeFileSync(CREDENTIALS_FILE, JSON.stringify(credentials, null, 2));
82
+ console.log('✓ Authentication saved to', CREDENTIALS_FILE);
83
+ console.log(` Environment: ${options.env}`);
84
+ });
85
+ // Status command
86
+ authCmd
87
+ .command('status')
88
+ .description('Show authentication status')
89
+ .action(async () => {
90
+ if (!fs.existsSync(CREDENTIALS_FILE)) {
91
+ console.log('Not authenticated. Run "123456btc-cli auth login" first.');
92
+ return;
93
+ }
94
+ const credentials = JSON.parse(fs.readFileSync(CREDENTIALS_FILE, 'utf-8'));
95
+ console.log('Authentication Status:');
96
+ console.log(` API Key: ${credentials.apiKey.substring(0, 20)}...`);
97
+ console.log(` Environment: ${credentials.environment}`);
98
+ console.log(` Saved: ${credentials.savedAt}`);
99
+ });
100
+ // Logout command
101
+ authCmd
102
+ .command('logout')
103
+ .description('Clear authentication')
104
+ .action(() => {
105
+ if (fs.existsSync(CREDENTIALS_FILE)) {
106
+ fs.unlinkSync(CREDENTIALS_FILE);
107
+ console.log('✓ Authentication cleared');
108
+ }
109
+ else {
110
+ console.log('Not authenticated');
111
+ }
112
+ });
113
+ program.addCommand(authCmd);
114
+ }
115
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createGasCommand(program: Command): void;
3
+ //# sourceMappingURL=gas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../src/commands/gas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,QAuHhD"}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createGasCommand = createGasCommand;
4
+ const commander_1 = require("commander");
5
+ const client_1 = require("../api/client");
6
+ const gas_1 = require("../api/gas");
7
+ const config_1 = require("../config");
8
+ function createGasCommand(program) {
9
+ const gasCmd = new commander_1.Command('gas');
10
+ // Balance
11
+ gasCmd
12
+ .command('balance')
13
+ .description('Show gas balance')
14
+ .action(async () => {
15
+ const credentials = (0, config_1.loadCredentials)();
16
+ const client = new client_1.ApiClient(credentials.baseUrl, credentials.apiKey);
17
+ const gasApi = new gas_1.GasApi(client);
18
+ const response = await gasApi.getBalance();
19
+ if (response.success && response.data) {
20
+ console.log('Gas Balance:');
21
+ console.log(` Available: ${response.data.available} ${response.data.currency}`);
22
+ console.log(` Tier: ${response.data.tier}`);
23
+ console.log(` Tier Limit: ${response.data.tierLimit} ${response.data.currency}/day`);
24
+ }
25
+ else {
26
+ console.error('Error:', response.error?.message);
27
+ }
28
+ });
29
+ // Settle
30
+ gasCmd
31
+ .command('settle <dispatchId>')
32
+ .description('Settle gas fees for a completed strategy')
33
+ .action(async (dispatchId) => {
34
+ const credentials = (0, config_1.loadCredentials)();
35
+ const client = new client_1.ApiClient(credentials.baseUrl, credentials.apiKey);
36
+ const gasApi = new gas_1.GasApi(client);
37
+ const response = await gasApi.settle(dispatchId);
38
+ if (response.success && response.data) {
39
+ console.log('Gas Settlement:');
40
+ console.log(` Dispatch ID: ${response.data.dispatchId}`);
41
+ console.log(` Gas Used: ${response.data.gasUsed}`);
42
+ console.log(` Fee: ${response.data.fee} ${response.data.currency}`);
43
+ console.log(` Status: ${response.data.status}`);
44
+ if (response.data.transactionId) {
45
+ console.log(` Transaction: ${response.data.transactionId}`);
46
+ }
47
+ }
48
+ else {
49
+ console.error('Settlement failed:', response.error?.message);
50
+ }
51
+ });
52
+ // Transactions
53
+ gasCmd
54
+ .command('transactions')
55
+ .description('Show gas transaction history')
56
+ .option('--limit <number>', 'Limit results', '20')
57
+ .action(async (options) => {
58
+ const credentials = (0, config_1.loadCredentials)();
59
+ const client = new client_1.ApiClient(credentials.baseUrl, credentials.apiKey);
60
+ const gasApi = new gas_1.GasApi(client);
61
+ const response = await gasApi.getTransactions({
62
+ limit: parseInt(options.limit),
63
+ });
64
+ if (response.success && response.data) {
65
+ console.log('Gas Transactions:');
66
+ console.log('='.repeat(60));
67
+ response.data.forEach((tx) => {
68
+ console.log(` ${tx.id}`);
69
+ console.log(` Amount: ${tx.amount} ${tx.currency}`);
70
+ console.log(` Status: ${tx.status}`);
71
+ console.log(` Date: ${tx.createdAt}`);
72
+ if (tx.signature) {
73
+ console.log(` Signature: ${tx.signature.substring(0, 40)}...`);
74
+ }
75
+ console.log('');
76
+ });
77
+ }
78
+ else {
79
+ console.error('Error:', response.error?.message);
80
+ }
81
+ });
82
+ // Top up
83
+ gasCmd
84
+ .command('topup <amount>')
85
+ .description('Top up gas balance')
86
+ .option('--currency <type>', 'Currency: SOL or USDC', 'SOL')
87
+ .action(async (amount, options) => {
88
+ const credentials = (0, config_1.loadCredentials)();
89
+ const client = new client_1.ApiClient(credentials.baseUrl, credentials.apiKey);
90
+ const gasApi = new gas_1.GasApi(client);
91
+ const response = await gasApi.topUp(parseFloat(amount), options.currency);
92
+ if (response.success && response.data) {
93
+ console.log('Top Up Initiated:');
94
+ console.log(` Amount: ${amount} ${options.currency}`);
95
+ console.log(` Transaction ID: ${response.data.transactionId}`);
96
+ console.log(` Status: ${response.data.status}`);
97
+ }
98
+ else {
99
+ console.error('Top up failed:', response.error?.message);
100
+ }
101
+ });
102
+ program.addCommand(gasCmd);
103
+ }
104
+ //# sourceMappingURL=gas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gas.js","sourceRoot":"","sources":["../../src/commands/gas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createInstallCommand(program: Command): void;
3
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QAyHpD"}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.createInstallCommand = createInstallCommand;
40
+ const commander_1 = require("commander");
41
+ const inquirer_1 = __importDefault(require("inquirer"));
42
+ const axios_1 = __importDefault(require("axios"));
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const PACKAGES_DIR = path.join(process.env.HOME || process.env.USERPROFILE || '.', '.123456btc-cli', 'packages');
46
+ function createInstallCommand(program) {
47
+ const installCmd = new commander_1.Command('install');
48
+ // Install OpenClaw package
49
+ installCmd
50
+ .command('package <url>')
51
+ .description('Install an OpenClaw-compatible package')
52
+ .option('--name <name>', 'Package name')
53
+ .option('--force', 'Force reinstall')
54
+ .action(async (url, options) => {
55
+ // Download package info
56
+ console.log('Fetching package info from:', url);
57
+ let packageInfo;
58
+ try {
59
+ const response = await axios_1.default.get(`${url}/package.json`);
60
+ packageInfo = response.data;
61
+ }
62
+ catch (error) {
63
+ const err = error;
64
+ console.error('Failed to fetch package info:', err.message);
65
+ return;
66
+ }
67
+ // Check if already installed
68
+ const packageDir = path.join(PACKAGES_DIR, packageInfo.name || 'package');
69
+ if (fs.existsSync(packageDir) && !options.force) {
70
+ console.log('Package already installed. Use --force to reinstall.');
71
+ return;
72
+ }
73
+ // Confirm installation
74
+ console.log('\nPackage Info:');
75
+ console.log(` Name: ${packageInfo.name}`);
76
+ console.log(` Version: ${packageInfo.version}`);
77
+ console.log(` Entry Point: ${packageInfo.entryPoint}`);
78
+ console.log(` AI Compatible: ${packageInfo.aiCompatible}`);
79
+ console.log(` LLM Compatible: ${packageInfo.llmCompatible}`);
80
+ if (packageInfo.dependencies?.length) {
81
+ console.log(` Dependencies: ${packageInfo.dependencies.join(', ')}`);
82
+ }
83
+ const answers = await inquirer_1.default.prompt([
84
+ {
85
+ type: 'confirm',
86
+ name: 'confirm',
87
+ message: 'Install this package?',
88
+ default: true,
89
+ },
90
+ ]);
91
+ if (!answers.confirm) {
92
+ console.log('Cancelled');
93
+ return;
94
+ }
95
+ // Create packages directory
96
+ if (!fs.existsSync(PACKAGES_DIR)) {
97
+ fs.mkdirSync(PACKAGES_DIR, { recursive: true });
98
+ }
99
+ // Download package
100
+ console.log('\nDownloading package...');
101
+ try {
102
+ const packageUrl = `${url}/package.tar.gz`;
103
+ const response = await axios_1.default.get(packageUrl, {
104
+ responseType: 'arraybuffer',
105
+ });
106
+ // Save package (simplified - in reality would extract)
107
+ const packagePath = path.join(PACKAGES_DIR, packageInfo.name || 'package');
108
+ fs.mkdirSync(packagePath, { recursive: true });
109
+ const manifest = {
110
+ name: packageInfo.name,
111
+ version: packageInfo.version,
112
+ entryPoint: packageInfo.entryPoint,
113
+ installedAt: new Date().toISOString(),
114
+ };
115
+ fs.writeFileSync(path.join(packagePath, 'manifest.json'), JSON.stringify(manifest, null, 2));
116
+ console.log('✓ Package installed to:', packagePath);
117
+ }
118
+ catch (error) {
119
+ const err = error;
120
+ console.error('Download failed:', err.message);
121
+ }
122
+ });
123
+ // List installed packages
124
+ installCmd
125
+ .command('list')
126
+ .description('List installed packages')
127
+ .action(() => {
128
+ if (!fs.existsSync(PACKAGES_DIR)) {
129
+ console.log('No packages installed');
130
+ return;
131
+ }
132
+ const packages = fs.readdirSync(PACKAGES_DIR);
133
+ if (packages.length === 0) {
134
+ console.log('No packages installed');
135
+ return;
136
+ }
137
+ console.log('Installed Packages:');
138
+ console.log('='.repeat(60));
139
+ packages.forEach((pkg) => {
140
+ const manifestPath = path.join(PACKAGES_DIR, pkg, 'manifest.json');
141
+ if (fs.existsSync(manifestPath)) {
142
+ const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
143
+ console.log(` ${manifest.name} v${manifest.version}`);
144
+ console.log(` Entry: ${manifest.entryPoint}`);
145
+ console.log(` Installed: ${manifest.installedAt}`);
146
+ }
147
+ });
148
+ });
149
+ program.addCommand(installCmd);
150
+ }
151
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createStrategyCommand(program: Command): void;
3
+ //# sourceMappingURL=strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../src/commands/strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAyIrD"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createStrategyCommand = createStrategyCommand;
4
+ const commander_1 = require("commander");
5
+ const client_1 = require("../api/client");
6
+ const strategy_1 = require("../api/strategy");
7
+ const config_1 = require("../config");
8
+ function createStrategyCommand(program) {
9
+ const strategyCmd = new commander_1.Command('strategy');
10
+ // List strategies
11
+ strategyCmd
12
+ .command('list')
13
+ .description('List available strategies')
14
+ .option('--tier <tier>', 'Filter by tier')
15
+ .option('--limit <number>', 'Limit results', '10')
16
+ .action(async (options) => {
17
+ const credentials = (0, config_1.loadCredentials)();
18
+ const client = new client_1.ApiClient(credentials.baseUrl, credentials.apiKey);
19
+ const strategyApi = new strategy_1.StrategyApi(client);
20
+ const response = await strategyApi.list({
21
+ tier: options.tier,
22
+ limit: parseInt(options.limit),
23
+ });
24
+ if (response.success && response.data) {
25
+ console.log('Available Strategies:');
26
+ console.log('='.repeat(60));
27
+ response.data.forEach((strategy) => {
28
+ console.log(` ${strategy.id}`);
29
+ console.log(` Name: ${strategy.name}`);
30
+ console.log(` Version: ${strategy.version}`);
31
+ console.log(` Tier: ${strategy.requiredTier || 'any'}`);
32
+ console.log(` Gas Estimate: ${strategy.gasEstimate || 'N/A'}`);
33
+ console.log('');
34
+ });
35
+ }
36
+ else {
37
+ console.error('Error:', response.error?.message);
38
+ }
39
+ });
40
+ // Dispatch strategy
41
+ strategyCmd
42
+ .command('dispatch <strategyId>')
43
+ .description('Dispatch a strategy for local execution')
44
+ .option('--param <key=value>', 'Strategy parameter (can be used multiple times)', (value, acc) => {
45
+ const [key, val] = value.split('=');
46
+ return { ...acc, [key]: val };
47
+ }, {})
48
+ .action(async (strategyId, options) => {
49
+ const credentials = (0, config_1.loadCredentials)();
50
+ const client = new client_1.ApiClient(credentials.baseUrl, credentials.apiKey);
51
+ const strategyApi = new strategy_1.StrategyApi(client);
52
+ // Get strategy details first
53
+ const details = await strategyApi.get(strategyId);
54
+ if (!details.success) {
55
+ console.error('Strategy not found:', details.error?.message);
56
+ return;
57
+ }
58
+ // Dispatch
59
+ const response = await strategyApi.dispatch({
60
+ strategyId,
61
+ params: options.param,
62
+ });
63
+ if (response.success && response.data) {
64
+ console.log('✓ Strategy dispatched:');
65
+ console.log(` Dispatch ID: ${response.data.dispatchId}`);
66
+ console.log(` Status: ${response.data.status}`);
67
+ if (response.data.estimatedDuration) {
68
+ console.log(` Estimated Duration: ${response.data.estimatedDuration}s`);
69
+ }
70
+ }
71
+ else {
72
+ console.error('Dispatch failed:', response.error?.message);
73
+ }
74
+ });
75
+ // Status
76
+ strategyCmd
77
+ .command('status <dispatchId>')
78
+ .description('Check strategy execution status')
79
+ .action(async (dispatchId) => {
80
+ const credentials = (0, config_1.loadCredentials)();
81
+ const client = new client_1.ApiClient(credentials.baseUrl, credentials.apiKey);
82
+ const strategyApi = new strategy_1.StrategyApi(client);
83
+ const response = await strategyApi.getStatus(dispatchId);
84
+ if (response.success && response.data) {
85
+ console.log('Strategy Status:');
86
+ console.log(` Dispatch ID: ${response.data.dispatchId}`);
87
+ console.log(` Status: ${response.data.status}`);
88
+ console.log(` Progress: ${response.data.progress || 0}%`);
89
+ console.log(` Gas Used: ${response.data.gasUsed || 0}`);
90
+ console.log(` Updated: ${response.data.updatedAt}`);
91
+ }
92
+ else {
93
+ console.error('Error:', response.error?.message);
94
+ }
95
+ });
96
+ // History
97
+ strategyCmd
98
+ .command('history')
99
+ .description('Show strategy execution history')
100
+ .option('--limit <number>', 'Limit results', '10')
101
+ .action(async (options) => {
102
+ const credentials = (0, config_1.loadCredentials)();
103
+ const client = new client_1.ApiClient(credentials.baseUrl, credentials.apiKey);
104
+ const strategyApi = new strategy_1.StrategyApi(client);
105
+ const response = await strategyApi.getHistory({
106
+ limit: parseInt(options.limit),
107
+ });
108
+ if (response.success && response.data) {
109
+ console.log('Execution History:');
110
+ console.log('='.repeat(60));
111
+ response.data.forEach((status) => {
112
+ console.log(` ${status.dispatchId}: ${status.status}`);
113
+ console.log(` Updated: ${status.updatedAt}`);
114
+ console.log(` Gas Used: ${status.gasUsed || 0}`);
115
+ console.log('');
116
+ });
117
+ }
118
+ else {
119
+ console.error('Error:', response.error?.message);
120
+ }
121
+ });
122
+ program.addCommand(strategyCmd);
123
+ }
124
+ //# sourceMappingURL=strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../src/commands/strategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface Credentials {
2
+ apiKey: string;
3
+ baseUrl: string;
4
+ env: 'live' | 'test';
5
+ }
6
+ export declare function loadCredentials(): Credentials;
7
+ export declare function getSolanaRpcUrl(): string;
8
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACtB;AAED,wBAAgB,eAAe,IAAI,WAAW,CAiB7C;AAED,wBAAgB,eAAe,IAAI,MAAM,CASxC"}
package/dist/config.js ADDED
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadCredentials = loadCredentials;
37
+ exports.getSolanaRpcUrl = getSolanaRpcUrl;
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const dotenv_1 = require("dotenv");
41
+ // Load env file
42
+ (0, dotenv_1.config)();
43
+ const CREDENTIALS_FILE = path.join(process.env.HOME || process.env.USERPROFILE || '.', '.123456btc-cli', 'credentials.json');
44
+ function loadCredentials() {
45
+ // Check env file first
46
+ if (process.env.API_KEY) {
47
+ return {
48
+ apiKey: process.env.API_KEY,
49
+ baseUrl: process.env.API_BASE_URL || 'https://api.123456btc.com',
50
+ env: process.env.API_ENV || 'live',
51
+ };
52
+ }
53
+ // Check credentials file
54
+ if (fs.existsSync(CREDENTIALS_FILE)) {
55
+ const content = fs.readFileSync(CREDENTIALS_FILE, 'utf-8');
56
+ return JSON.parse(content);
57
+ }
58
+ throw new Error('No credentials found. Run "123456btc-cli auth login"');
59
+ }
60
+ function getSolanaRpcUrl() {
61
+ const cluster = process.env.SOLANA_CLUSTER || 'mainnet-beta';
62
+ const baseUrl = process.env.SOLANA_RPC_URL || 'https://api.mainnet-beta.solana.com';
63
+ if (cluster === 'devnet') {
64
+ return process.env.SOLANA_DEVNET_URL || 'https://api.devnet.solana.com';
65
+ }
66
+ return baseUrl;
67
+ }
68
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,0CAiBC;AAED,0CASC;AA/CD,uCAAyB;AACzB,2CAA6B;AAC7B,mCAAgD;AAEhD,gBAAgB;AAChB,IAAA,eAAY,GAAE,CAAC;AAEf,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAChC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,EAClD,gBAAgB,EAChB,kBAAkB,CACnB,CAAC;AAQF,SAAgB,eAAe;IAC7B,uBAAuB;IACvB,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACxB,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO;YAC3B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,2BAA2B;YAChE,GAAG,EAAG,OAAO,CAAC,GAAG,CAAC,OAA2B,IAAI,MAAM;SACxD,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;IAC5C,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAC1E,CAAC;AAED,SAAgB,eAAe;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,cAAc,CAAC;IAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,qCAAqC,CAAC;IAEpF,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,+BAA+B,CAAC;IAC1E,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}