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.
Files changed (65) hide show
  1. package/dist/commands/agents.d.ts +3 -0
  2. package/dist/commands/agents.d.ts.map +1 -0
  3. package/dist/commands/agents.js +274 -0
  4. package/dist/commands/agents.js.map +1 -0
  5. package/dist/commands/deploy.d.ts +3 -0
  6. package/dist/commands/deploy.d.ts.map +1 -0
  7. package/dist/commands/deploy.js +149 -0
  8. package/dist/commands/deploy.js.map +1 -0
  9. package/dist/commands/import.d.ts +3 -0
  10. package/dist/commands/import.d.ts.map +1 -0
  11. package/dist/commands/import.js +70 -0
  12. package/dist/commands/import.js.map +1 -0
  13. package/dist/commands/list-tools.d.ts +3 -0
  14. package/dist/commands/list-tools.d.ts.map +1 -0
  15. package/dist/commands/list-tools.js +163 -0
  16. package/dist/commands/list-tools.js.map +1 -0
  17. package/dist/commands/login.d.ts +13 -0
  18. package/dist/commands/login.d.ts.map +1 -0
  19. package/dist/commands/login.js +311 -0
  20. package/dist/commands/login.js.map +1 -0
  21. package/dist/commands/portfolio.d.ts +3 -0
  22. package/dist/commands/portfolio.d.ts.map +1 -0
  23. package/dist/commands/portfolio.js +170 -0
  24. package/dist/commands/portfolio.js.map +1 -0
  25. package/dist/commands/preferences.d.ts +3 -0
  26. package/dist/commands/preferences.d.ts.map +1 -0
  27. package/dist/commands/preferences.js +121 -0
  28. package/dist/commands/preferences.js.map +1 -0
  29. package/dist/commands/prompt-suggestions.d.ts +3 -0
  30. package/dist/commands/prompt-suggestions.d.ts.map +1 -0
  31. package/dist/commands/prompt-suggestions.js +148 -0
  32. package/dist/commands/prompt-suggestions.js.map +1 -0
  33. package/dist/commands/skills.d.ts +3 -0
  34. package/dist/commands/skills.d.ts.map +1 -0
  35. package/dist/commands/skills.js +571 -0
  36. package/dist/commands/skills.js.map +1 -0
  37. package/dist/commands/subagents.d.ts +3 -0
  38. package/dist/commands/subagents.d.ts.map +1 -0
  39. package/dist/commands/subagents.js +194 -0
  40. package/dist/commands/subagents.js.map +1 -0
  41. package/dist/commands/transactions.d.ts +3 -0
  42. package/dist/commands/transactions.d.ts.map +1 -0
  43. package/dist/commands/transactions.js +153 -0
  44. package/dist/commands/transactions.js.map +1 -0
  45. package/dist/commands/wallet.d.ts +3 -0
  46. package/dist/commands/wallet.d.ts.map +1 -0
  47. package/dist/commands/wallet.js +183 -0
  48. package/dist/commands/wallet.js.map +1 -0
  49. package/dist/index.d.ts +3 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +95 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/lib/api.d.ts +12 -0
  54. package/dist/lib/api.d.ts.map +1 -0
  55. package/dist/lib/api.js +82 -0
  56. package/dist/lib/api.js.map +1 -0
  57. package/dist/lib/config.d.ts +42 -0
  58. package/dist/lib/config.d.ts.map +1 -0
  59. package/dist/lib/config.js +85 -0
  60. package/dist/lib/config.js.map +1 -0
  61. package/dist/utils/ui.d.ts +26 -0
  62. package/dist/utils/ui.d.ts.map +1 -0
  63. package/dist/utils/ui.js +111 -0
  64. package/dist/utils/ui.js.map +1 -0
  65. 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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerPreferencesCommand(program: Command): void;
3
+ //# sourceMappingURL=preferences.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerPromptSuggestions(program: Command): void;
3
+ //# sourceMappingURL=prompt-suggestions.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerSkillsCommand(program: Command): void;
3
+ //# sourceMappingURL=skills.d.ts.map
@@ -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"}