suzi-cli 0.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/dist/commands/agents.d.ts +3 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +274 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/deploy.d.ts +3 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +149 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/import.d.ts +3 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +70 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/list-tools.d.ts +3 -0
- package/dist/commands/list-tools.d.ts.map +1 -0
- package/dist/commands/list-tools.js +163 -0
- package/dist/commands/list-tools.js.map +1 -0
- package/dist/commands/login.d.ts +13 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +311 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/portfolio.d.ts +3 -0
- package/dist/commands/portfolio.d.ts.map +1 -0
- package/dist/commands/portfolio.js +170 -0
- package/dist/commands/portfolio.js.map +1 -0
- package/dist/commands/preferences.d.ts +3 -0
- package/dist/commands/preferences.d.ts.map +1 -0
- package/dist/commands/preferences.js +121 -0
- package/dist/commands/preferences.js.map +1 -0
- package/dist/commands/prompt-suggestions.d.ts +3 -0
- package/dist/commands/prompt-suggestions.d.ts.map +1 -0
- package/dist/commands/prompt-suggestions.js +148 -0
- package/dist/commands/prompt-suggestions.js.map +1 -0
- package/dist/commands/skills.d.ts +3 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +571 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/subagents.d.ts +3 -0
- package/dist/commands/subagents.d.ts.map +1 -0
- package/dist/commands/subagents.js +194 -0
- package/dist/commands/subagents.js.map +1 -0
- package/dist/commands/transactions.d.ts +3 -0
- package/dist/commands/transactions.d.ts.map +1 -0
- package/dist/commands/transactions.js +153 -0
- package/dist/commands/transactions.js.map +1 -0
- package/dist/commands/wallet.d.ts +3 -0
- package/dist/commands/wallet.d.ts.map +1 -0
- package/dist/commands/wallet.js +183 -0
- package/dist/commands/wallet.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +95 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +12 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +82 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/config.d.ts +42 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +85 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/utils/ui.d.ts +26 -0
- package/dist/utils/ui.d.ts.map +1 -0
- package/dist/utils/ui.js +111 -0
- package/dist/utils/ui.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,170 @@
|
|
|
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.registerPortfolioCommand = registerPortfolioCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const ora_1 = __importDefault(require("ora"));
|
|
9
|
+
const cli_table3_1 = __importDefault(require("cli-table3"));
|
|
10
|
+
const config_1 = require("../lib/config");
|
|
11
|
+
const api_1 = require("../lib/api");
|
|
12
|
+
const ui_1 = require("../utils/ui");
|
|
13
|
+
function registerPortfolioCommand(program) {
|
|
14
|
+
program
|
|
15
|
+
.command('portfolio')
|
|
16
|
+
.description('View your portfolio — SOL + top assets on spot')
|
|
17
|
+
.option('--all', 'Show all positions including Hyperliquid perps')
|
|
18
|
+
.action(async (opts) => {
|
|
19
|
+
if (!(0, ui_1.requireAuth)())
|
|
20
|
+
return;
|
|
21
|
+
const account = (0, config_1.getActiveAccount)();
|
|
22
|
+
if (!account) {
|
|
23
|
+
(0, ui_1.error)('No active account.');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const spinner = (0, ora_1.default)('Loading portfolio...').start();
|
|
27
|
+
const assets = [];
|
|
28
|
+
try {
|
|
29
|
+
// 1. SOL native balance
|
|
30
|
+
if (account.svmWalletAddress) {
|
|
31
|
+
const solResp = await (0, api_1.post)('/api/actions/execute', {
|
|
32
|
+
name: 'solana.get_native_balance',
|
|
33
|
+
params: { address: account.svmWalletAddress },
|
|
34
|
+
});
|
|
35
|
+
if (solResp.ok && solResp.data?.result) {
|
|
36
|
+
assets.push({
|
|
37
|
+
symbol: 'SOL',
|
|
38
|
+
balance: solResp.data.result.balance.toFixed(4),
|
|
39
|
+
chain: 'Solana',
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
// 2. USDC on Solana
|
|
43
|
+
const usdcResp = await (0, api_1.post)('/api/actions/execute', {
|
|
44
|
+
name: 'solana.get_token_balance',
|
|
45
|
+
params: { address: account.svmWalletAddress, token: 'USDC' },
|
|
46
|
+
});
|
|
47
|
+
if (usdcResp.ok && usdcResp.data?.result && usdcResp.data.result.balance > 0) {
|
|
48
|
+
assets.push({
|
|
49
|
+
symbol: 'USDC',
|
|
50
|
+
balance: usdcResp.data.result.balance.toFixed(2),
|
|
51
|
+
chain: 'Solana',
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
// 3. USDT on Solana
|
|
55
|
+
const usdtResp = await (0, api_1.post)('/api/actions/execute', {
|
|
56
|
+
name: 'solana.get_token_balance',
|
|
57
|
+
params: { address: account.svmWalletAddress, token: 'USDT' },
|
|
58
|
+
});
|
|
59
|
+
if (usdtResp.ok && usdtResp.data?.result && usdtResp.data.result.balance > 0) {
|
|
60
|
+
assets.push({
|
|
61
|
+
symbol: 'USDT',
|
|
62
|
+
balance: usdtResp.data.result.balance.toFixed(2),
|
|
63
|
+
chain: 'Solana',
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
// 4. GOLD token
|
|
67
|
+
const goldResp = await (0, api_1.post)('/api/actions/execute', {
|
|
68
|
+
name: 'solana.get_token_balance',
|
|
69
|
+
params: { address: account.svmWalletAddress, token: 'GOLD' },
|
|
70
|
+
});
|
|
71
|
+
if (goldResp.ok && goldResp.data?.result && goldResp.data.result.balance > 0) {
|
|
72
|
+
assets.push({
|
|
73
|
+
symbol: 'GOLD',
|
|
74
|
+
balance: goldResp.data.result.balance.toFixed(2),
|
|
75
|
+
chain: 'Solana',
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// 5. Hyperliquid spot balances
|
|
80
|
+
if (account.evmWalletAddress) {
|
|
81
|
+
const hlBalResp = await (0, api_1.get)('/api/portfolio/summary');
|
|
82
|
+
if (hlBalResp.ok && hlBalResp.data && hlBalResp.data.totalEquity > 0) {
|
|
83
|
+
assets.push({
|
|
84
|
+
symbol: 'USDC',
|
|
85
|
+
balance: hlBalResp.data.availableBalance.toFixed(2),
|
|
86
|
+
chain: 'Hyperliquid',
|
|
87
|
+
value: (0, ui_1.formatUsd)(hlBalResp.data.totalEquity),
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
spinner.stop();
|
|
92
|
+
(0, ui_1.header)('Portfolio');
|
|
93
|
+
console.log();
|
|
94
|
+
if (assets.length === 0) {
|
|
95
|
+
(0, ui_1.info)('No assets found. Fund your wallet with `suzi wallet fund`.');
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
// Show SOL + top 3 assets table
|
|
99
|
+
const table = new cli_table3_1.default({
|
|
100
|
+
head: [
|
|
101
|
+
chalk_1.default.gray('Asset'),
|
|
102
|
+
chalk_1.default.gray('Balance'),
|
|
103
|
+
chalk_1.default.gray('Chain'),
|
|
104
|
+
],
|
|
105
|
+
style: { head: [], border: ['gray'] },
|
|
106
|
+
colWidths: [12, 18, 16],
|
|
107
|
+
});
|
|
108
|
+
// SOL first, then top 3 by balance
|
|
109
|
+
const solAsset = assets.find((a) => a.symbol === 'SOL' && a.chain === 'Solana');
|
|
110
|
+
const otherAssets = assets.filter((a) => !(a.symbol === 'SOL' && a.chain === 'Solana'));
|
|
111
|
+
// Sort others by numeric balance descending
|
|
112
|
+
otherAssets.sort((a, b) => parseFloat(b.balance) - parseFloat(a.balance));
|
|
113
|
+
const display = [];
|
|
114
|
+
if (solAsset)
|
|
115
|
+
display.push(solAsset);
|
|
116
|
+
display.push(...otherAssets.slice(0, 3));
|
|
117
|
+
for (const asset of display) {
|
|
118
|
+
const symbolColor = asset.symbol === 'SOL'
|
|
119
|
+
? ui_1.colors.sol
|
|
120
|
+
: asset.symbol === 'USDC' || asset.symbol === 'USDT'
|
|
121
|
+
? chalk_1.default.green
|
|
122
|
+
: asset.symbol === 'GOLD'
|
|
123
|
+
? chalk_1.default.yellow
|
|
124
|
+
: chalk_1.default.white;
|
|
125
|
+
table.push([
|
|
126
|
+
symbolColor(asset.symbol),
|
|
127
|
+
chalk_1.default.bold(asset.balance),
|
|
128
|
+
ui_1.colors.muted(`(${asset.chain})`),
|
|
129
|
+
]);
|
|
130
|
+
}
|
|
131
|
+
console.log(table.toString());
|
|
132
|
+
if (otherAssets.length > 3) {
|
|
133
|
+
(0, ui_1.info)(` +${otherAssets.length - 3} more assets. Use --all to see everything.`);
|
|
134
|
+
}
|
|
135
|
+
// Show Hyperliquid positions if --all
|
|
136
|
+
if (opts.all && account.evmWalletAddress) {
|
|
137
|
+
console.log();
|
|
138
|
+
console.log(ui_1.colors.evm.bold(' Hyperliquid Positions'));
|
|
139
|
+
const posResp = await (0, api_1.get)('/api/portfolio/hl/positions');
|
|
140
|
+
if (posResp.ok && posResp.data?.positions?.length > 0) {
|
|
141
|
+
const posTable = new cli_table3_1.default({
|
|
142
|
+
head: [chalk_1.default.gray('Market'), chalk_1.default.gray('Side'), chalk_1.default.gray('Size'), chalk_1.default.gray('PnL')],
|
|
143
|
+
style: { head: [], border: ['gray'] },
|
|
144
|
+
});
|
|
145
|
+
for (const pos of posResp.data.positions) {
|
|
146
|
+
const p = pos.position || pos;
|
|
147
|
+
const pnl = parseFloat(p.unrealizedPnl || '0');
|
|
148
|
+
posTable.push([
|
|
149
|
+
p.coin || p.asset || 'N/A',
|
|
150
|
+
p.szi && parseFloat(p.szi) > 0 ? chalk_1.default.green('LONG') : chalk_1.default.red('SHORT'),
|
|
151
|
+
Math.abs(parseFloat(p.szi || '0')).toFixed(4),
|
|
152
|
+
pnl >= 0 ? chalk_1.default.green(`+$${pnl.toFixed(2)}`) : chalk_1.default.red(`-$${Math.abs(pnl).toFixed(2)}`),
|
|
153
|
+
]);
|
|
154
|
+
}
|
|
155
|
+
console.log(posTable.toString());
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
(0, ui_1.info)(' No open positions.');
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
catch (err) {
|
|
163
|
+
spinner.stop();
|
|
164
|
+
(0, ui_1.error)(`Failed to load portfolio: ${err.message}`);
|
|
165
|
+
}
|
|
166
|
+
console.log();
|
|
167
|
+
(0, ui_1.divider)();
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=portfolio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../src/commands/portfolio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../src/commands/preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0HjE"}
|
|
@@ -0,0 +1,121 @@
|
|
|
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.registerPreferencesCommand = registerPreferencesCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const ora_1 = __importDefault(require("ora"));
|
|
9
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
10
|
+
const open_1 = __importDefault(require("open"));
|
|
11
|
+
const config_1 = require("../lib/config");
|
|
12
|
+
const api_1 = require("../lib/api");
|
|
13
|
+
const ui_1 = require("../utils/ui");
|
|
14
|
+
function registerPreferencesCommand(program) {
|
|
15
|
+
const prefs = program
|
|
16
|
+
.command('preferences')
|
|
17
|
+
.alias('prefs')
|
|
18
|
+
.description('View and manage your preferences');
|
|
19
|
+
// suzi preferences -- show current preferences
|
|
20
|
+
prefs
|
|
21
|
+
.action(async () => {
|
|
22
|
+
if (!(0, ui_1.requireAuth)())
|
|
23
|
+
return;
|
|
24
|
+
const spinner = (0, ora_1.default)('Loading preferences...').start();
|
|
25
|
+
const config = (0, config_1.getConfig)();
|
|
26
|
+
const meResp = await (0, api_1.get)('/api/user/me');
|
|
27
|
+
spinner.stop();
|
|
28
|
+
(0, ui_1.header)('Preferences');
|
|
29
|
+
console.log();
|
|
30
|
+
(0, ui_1.label)('Username', config.preferences?.username || ui_1.colors.muted('Not set'));
|
|
31
|
+
(0, ui_1.label)('Email', meResp.ok ? (meResp.data.email || 'N/A') : 'N/A');
|
|
32
|
+
(0, ui_1.label)('API URL', config.apiUrl);
|
|
33
|
+
console.log();
|
|
34
|
+
console.log(ui_1.colors.muted(' Integrations:'));
|
|
35
|
+
if (meResp.ok && meResp.data.telegramChatId) {
|
|
36
|
+
(0, ui_1.label)(' Telegram', ui_1.colors.success('Connected'));
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
(0, ui_1.label)(' Telegram', ui_1.colors.muted('Not connected') + ' — run `suzi preferences telegram`');
|
|
40
|
+
}
|
|
41
|
+
console.log();
|
|
42
|
+
(0, ui_1.divider)();
|
|
43
|
+
(0, ui_1.info)('Use `suzi preferences set-username` to set your display name.');
|
|
44
|
+
(0, ui_1.info)('Use `suzi preferences telegram` to connect Telegram.');
|
|
45
|
+
});
|
|
46
|
+
// suzi preferences set-username
|
|
47
|
+
prefs
|
|
48
|
+
.command('set-username')
|
|
49
|
+
.description('Set your display username')
|
|
50
|
+
.argument('[name]', 'Username to set')
|
|
51
|
+
.action(async (name) => {
|
|
52
|
+
if (!(0, ui_1.requireAuth)())
|
|
53
|
+
return;
|
|
54
|
+
let username = name;
|
|
55
|
+
if (!username) {
|
|
56
|
+
const answers = await inquirer_1.default.prompt([
|
|
57
|
+
{
|
|
58
|
+
type: 'input',
|
|
59
|
+
name: 'username',
|
|
60
|
+
message: 'Enter your username:',
|
|
61
|
+
validate: (input) => {
|
|
62
|
+
if (!input.trim())
|
|
63
|
+
return 'Username cannot be empty';
|
|
64
|
+
if (input.length > 32)
|
|
65
|
+
return 'Username must be 32 characters or less';
|
|
66
|
+
return true;
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
]);
|
|
70
|
+
username = answers.username;
|
|
71
|
+
}
|
|
72
|
+
(0, config_1.setPreference)('username', username);
|
|
73
|
+
(0, ui_1.success)(`Username set to ${chalk_1.default.bold(username)}`);
|
|
74
|
+
});
|
|
75
|
+
// suzi preferences telegram
|
|
76
|
+
prefs
|
|
77
|
+
.command('telegram')
|
|
78
|
+
.description('Connect your Telegram account')
|
|
79
|
+
.action(async () => {
|
|
80
|
+
if (!(0, ui_1.requireAuth)())
|
|
81
|
+
return;
|
|
82
|
+
const spinner = (0, ora_1.default)('Generating Telegram connection link...').start();
|
|
83
|
+
const resp = await (0, api_1.get)('/api/user/connect-tg');
|
|
84
|
+
if (!resp.ok) {
|
|
85
|
+
spinner.fail();
|
|
86
|
+
(0, ui_1.error)(`Failed to generate link: ${resp.data?.error || 'Unknown error'}`);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
spinner.stop();
|
|
90
|
+
const { url } = resp.data;
|
|
91
|
+
(0, ui_1.header)('Connect Telegram');
|
|
92
|
+
console.log();
|
|
93
|
+
(0, ui_1.info)('Open this link to connect your Telegram account:');
|
|
94
|
+
console.log();
|
|
95
|
+
console.log(` ${chalk_1.default.underline.blue(url)}`);
|
|
96
|
+
console.log();
|
|
97
|
+
const answers = await inquirer_1.default.prompt([
|
|
98
|
+
{
|
|
99
|
+
type: 'confirm',
|
|
100
|
+
name: 'openBrowser',
|
|
101
|
+
message: 'Open in browser?',
|
|
102
|
+
default: true,
|
|
103
|
+
},
|
|
104
|
+
]);
|
|
105
|
+
if (answers.openBrowser) {
|
|
106
|
+
await (0, open_1.default)(url);
|
|
107
|
+
(0, ui_1.success)('Opened in browser. Complete the connection in Telegram.');
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
// suzi preferences api-url
|
|
111
|
+
prefs
|
|
112
|
+
.command('api-url')
|
|
113
|
+
.description('Set the API server URL')
|
|
114
|
+
.argument('<url>', 'API base URL')
|
|
115
|
+
.action((url) => {
|
|
116
|
+
const { setApiUrl } = require('../lib/config');
|
|
117
|
+
setApiUrl(url);
|
|
118
|
+
(0, ui_1.success)(`API URL set to ${chalk_1.default.bold(url)}`);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=preferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preferences.js","sourceRoot":"","sources":["../../src/commands/preferences.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-suggestions.d.ts","sourceRoot":"","sources":["../../src/commands/prompt-suggestions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0GpC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuDhE"}
|
|
@@ -0,0 +1,148 @@
|
|
|
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.registerPromptSuggestions = registerPromptSuggestions;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
9
|
+
const ui_1 = require("../utils/ui");
|
|
10
|
+
const SUGGESTIONS = [
|
|
11
|
+
// Getting Started
|
|
12
|
+
{
|
|
13
|
+
label: 'Sign in',
|
|
14
|
+
command: 'suzi login',
|
|
15
|
+
description: 'Authenticate with Google via OAuth2.0',
|
|
16
|
+
category: 'getting-started',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
label: 'View wallet',
|
|
20
|
+
command: 'suzi wallet',
|
|
21
|
+
description: 'See your multichain wallet addresses',
|
|
22
|
+
category: 'getting-started',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
label: 'Fund wallet',
|
|
26
|
+
command: 'suzi wallet fund',
|
|
27
|
+
description: 'Get deposit addresses to fund your wallet',
|
|
28
|
+
category: 'getting-started',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
label: 'Check balance',
|
|
32
|
+
command: 'suzi wallet balance',
|
|
33
|
+
description: 'View SOL, USDC, and other token balances',
|
|
34
|
+
category: 'getting-started',
|
|
35
|
+
},
|
|
36
|
+
// Portfolio
|
|
37
|
+
{
|
|
38
|
+
label: 'Portfolio overview',
|
|
39
|
+
command: 'suzi portfolio',
|
|
40
|
+
description: 'View SOL + top 3 assets across chains',
|
|
41
|
+
category: 'portfolio',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
label: 'All positions',
|
|
45
|
+
command: 'suzi portfolio --all',
|
|
46
|
+
description: 'Full portfolio including Hyperliquid perps',
|
|
47
|
+
category: 'portfolio',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
label: 'Recent transactions',
|
|
51
|
+
command: 'suzi transactions',
|
|
52
|
+
description: 'View recent trades and transfers',
|
|
53
|
+
category: 'portfolio',
|
|
54
|
+
},
|
|
55
|
+
// Agents
|
|
56
|
+
{
|
|
57
|
+
label: 'List agents',
|
|
58
|
+
command: 'suzi agents',
|
|
59
|
+
description: 'View all your deployed agents',
|
|
60
|
+
category: 'agents',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
label: 'Deploy agent',
|
|
64
|
+
command: 'suzi deploy ./agent.ts',
|
|
65
|
+
description: 'Deploy a new agent from a TypeScript file',
|
|
66
|
+
category: 'agents',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
label: 'Import shared agent',
|
|
70
|
+
command: 'suzi import <slug>',
|
|
71
|
+
description: 'Clone an agent from a share link',
|
|
72
|
+
category: 'agents',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
label: 'Init agent template',
|
|
76
|
+
command: 'suzi subagents init',
|
|
77
|
+
description: 'Create agent.md and agent.ts templates',
|
|
78
|
+
category: 'agents',
|
|
79
|
+
},
|
|
80
|
+
// Tools
|
|
81
|
+
{
|
|
82
|
+
label: 'Available tools',
|
|
83
|
+
command: 'suzi list-tools',
|
|
84
|
+
description: 'See all protocols and actions available',
|
|
85
|
+
category: 'trading',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
label: 'Polymarket tools',
|
|
89
|
+
command: 'suzi list-tools --protocol polymarket',
|
|
90
|
+
description: 'View Polymarket-specific actions',
|
|
91
|
+
category: 'trading',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
label: 'Hyperliquid tools',
|
|
95
|
+
command: 'suzi list-tools --protocol hyperliquid',
|
|
96
|
+
description: 'View Hyperliquid-specific actions',
|
|
97
|
+
category: 'trading',
|
|
98
|
+
},
|
|
99
|
+
];
|
|
100
|
+
function registerPromptSuggestions(program) {
|
|
101
|
+
program
|
|
102
|
+
.command('suggest')
|
|
103
|
+
.alias('help-me')
|
|
104
|
+
.description('Get suggested commands based on what you want to do')
|
|
105
|
+
.action(async () => {
|
|
106
|
+
(0, ui_1.header)('What would you like to do?');
|
|
107
|
+
console.log();
|
|
108
|
+
const categories = [
|
|
109
|
+
{ name: 'Getting Started', key: 'getting-started' },
|
|
110
|
+
{ name: 'Portfolio & Balances', key: 'portfolio' },
|
|
111
|
+
{ name: 'Agents & Deployment', key: 'agents' },
|
|
112
|
+
{ name: 'Trading & Tools', key: 'trading' },
|
|
113
|
+
];
|
|
114
|
+
const answers = await inquirer_1.default.prompt([
|
|
115
|
+
{
|
|
116
|
+
type: 'list',
|
|
117
|
+
name: 'category',
|
|
118
|
+
message: 'Pick a category:',
|
|
119
|
+
choices: categories.map((c) => ({ name: c.name, value: c.key })),
|
|
120
|
+
},
|
|
121
|
+
]);
|
|
122
|
+
const filtered = SUGGESTIONS.filter((s) => s.category === answers.category);
|
|
123
|
+
console.log();
|
|
124
|
+
for (const suggestion of filtered) {
|
|
125
|
+
console.log(` ${ui_1.colors.primary('▸')} ${chalk_1.default.bold(suggestion.label)}`);
|
|
126
|
+
console.log(` ${ui_1.colors.muted(suggestion.description)}`);
|
|
127
|
+
console.log(` ${chalk_1.default.cyan('$')} ${chalk_1.default.white(suggestion.command)}`);
|
|
128
|
+
console.log();
|
|
129
|
+
}
|
|
130
|
+
(0, ui_1.divider)();
|
|
131
|
+
const runAnswer = await inquirer_1.default.prompt([
|
|
132
|
+
{
|
|
133
|
+
type: 'list',
|
|
134
|
+
name: 'command',
|
|
135
|
+
message: 'Run a command?',
|
|
136
|
+
choices: [
|
|
137
|
+
...filtered.map((s) => ({ name: `${s.label} (${s.command})`, value: s.command })),
|
|
138
|
+
{ name: 'None — return to terminal', value: null },
|
|
139
|
+
],
|
|
140
|
+
},
|
|
141
|
+
]);
|
|
142
|
+
if (runAnswer.command) {
|
|
143
|
+
console.log();
|
|
144
|
+
(0, ui_1.info)(`Run: ${chalk_1.default.cyan(runAnswer.command)}`);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=prompt-suggestions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-suggestions.js","sourceRoot":"","sources":["../../src/commands/prompt-suggestions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsdpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6H5D"}
|