suzi-cli 0.1.7 → 0.1.9
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/README.md +1 -1
- package/dist/commands/create.d.ts +2 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +10 -8
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/debug.d.ts +3 -0
- package/dist/commands/debug.d.ts.map +1 -0
- package/dist/commands/debug.js +332 -0
- package/dist/commands/debug.js.map +1 -0
- package/dist/commands/init.js +1 -1
- package/dist/commands/install-hooks.d.ts.map +1 -1
- package/dist/commands/install-hooks.js +11 -0
- package/dist/commands/install-hooks.js.map +1 -1
- package/dist/commands/list-actions.d.ts +3 -0
- package/dist/commands/list-actions.d.ts.map +1 -0
- package/dist/commands/{list-tools.js → list-actions.js} +28 -80
- package/dist/commands/list-actions.js.map +1 -0
- package/dist/commands/list-triggers.d.ts.map +1 -1
- package/dist/commands/list-triggers.js +24 -1
- package/dist/commands/list-triggers.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +108 -58
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/portfolio.d.ts.map +1 -1
- package/dist/commands/portfolio.js +39 -1
- package/dist/commands/portfolio.js.map +1 -1
- package/dist/commands/prompt-suggestions.js +6 -6
- package/dist/commands/prompt-suggestions.js.map +1 -1
- package/dist/commands/run.d.ts +3 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +316 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +139 -59
- package/dist/commands/skills.js.map +1 -1
- package/dist/index.js +11 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/actions-cache.d.ts +15 -0
- package/dist/lib/actions-cache.d.ts.map +1 -0
- package/dist/lib/actions-cache.js +79 -0
- package/dist/lib/actions-cache.js.map +1 -0
- package/dist/lib/skills-cache.d.ts +23 -0
- package/dist/lib/skills-cache.d.ts.map +1 -0
- package/dist/lib/skills-cache.js +97 -0
- package/dist/lib/skills-cache.js.map +1 -0
- package/dist/lib/skills.d.ts +12 -0
- package/dist/lib/skills.d.ts.map +1 -1
- package/dist/lib/skills.js +46 -0
- package/dist/lib/skills.js.map +1 -1
- package/dist/lib/suzi-guide.d.ts +1 -1
- package/dist/lib/suzi-guide.d.ts.map +1 -1
- package/dist/lib/suzi-guide.js +174 -51
- package/dist/lib/suzi-guide.js.map +1 -1
- package/package.json +1 -1
- package/dist/commands/list-tools.d.ts +0 -3
- package/dist/commands/list-tools.d.ts.map +0 -1
- package/dist/commands/list-tools.js.map +0 -1
package/dist/commands/skills.js
CHANGED
|
@@ -6,33 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.registerSkillsCommand = registerSkillsCommand;
|
|
7
7
|
const chalk_1 = __importDefault(require("chalk"));
|
|
8
8
|
const ui_1 = require("../utils/ui");
|
|
9
|
-
const
|
|
9
|
+
const skills_cache_1 = require("../lib/skills-cache");
|
|
10
10
|
const skills_1 = require("../lib/skills");
|
|
11
11
|
// ─────────────────────────────────────────────────────────────
|
|
12
|
-
// Skill: suzi-guide
|
|
13
|
-
// ─────────────────────────────────────────────────────────────
|
|
14
|
-
const SUZI_GUIDE_SKILL = suzi_guide_1.SUZI_GUIDE_CONTENT;
|
|
15
|
-
// ─────────────────────────────────────────────────────────────
|
|
16
|
-
// Registry
|
|
17
|
-
// ─────────────────────────────────────────────────────────────
|
|
18
|
-
const SKILLS = [
|
|
19
|
-
{
|
|
20
|
-
name: 'suzi-guide',
|
|
21
|
-
filename: 'suzi-guide.md',
|
|
22
|
-
description: 'Comprehensive guide for Suzi CLI commands, agent creation, protocols & actions',
|
|
23
|
-
sections: [
|
|
24
|
-
{ title: 'CLI-First Data Fetching', description: 'Always use suzi CLI for live data — protocols, balances, agents, etc.' },
|
|
25
|
-
{ title: 'Installing the Suzi CLI', description: 'pnpm add suzi, first-time setup, requirements' },
|
|
26
|
-
{ title: 'CLI Commands Reference', description: 'All suzi commands: login, wallet, portfolio, agents, deploy, tools, etc.' },
|
|
27
|
-
{ title: 'Creating Agents', description: 'Quick start, file structure, minimal agent, full template with all sections' },
|
|
28
|
-
{ title: 'Trigger Types', description: 'Manual, cron, and event triggers with schedule syntax' },
|
|
29
|
-
{ title: 'Common Workflows', description: 'Deploy+activate, update, monitor, typical dev loop' },
|
|
30
|
-
{ title: 'Tips & Best Practices', description: 'Logging, state management, kill switches, testing patterns' },
|
|
31
|
-
],
|
|
32
|
-
content: SUZI_GUIDE_SKILL,
|
|
33
|
-
},
|
|
34
|
-
];
|
|
35
|
-
// ─────────────────────────────────────────────────────────────
|
|
36
12
|
// Command
|
|
37
13
|
// ─────────────────────────────────────────────────────────────
|
|
38
14
|
function registerSkillsCommand(program) {
|
|
@@ -40,54 +16,94 @@ function registerSkillsCommand(program) {
|
|
|
40
16
|
.command('skills')
|
|
41
17
|
.description('Manage Claude Code and Codex skills for Suzi');
|
|
42
18
|
// suzi skills — list available skills
|
|
43
|
-
skills.action(() => {
|
|
19
|
+
skills.action(async () => {
|
|
20
|
+
if (!(0, ui_1.requireAuth)())
|
|
21
|
+
return;
|
|
22
|
+
let skillList;
|
|
23
|
+
try {
|
|
24
|
+
skillList = await (0, skills_cache_1.getSkills)();
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
// Fall back to cached data if available
|
|
28
|
+
const cached = (0, skills_cache_1.getCachedSkills)();
|
|
29
|
+
if (cached) {
|
|
30
|
+
skillList = cached;
|
|
31
|
+
(0, ui_1.info)('Using cached skill list (could not reach server).');
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
(0, ui_1.error)(`Failed to fetch skills: ${err.message}`);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
44
38
|
(0, ui_1.header)('Available Skills');
|
|
45
39
|
console.log();
|
|
46
|
-
for (const skill of
|
|
40
|
+
for (const skill of skillList) {
|
|
47
41
|
console.log(` ${ui_1.colors.primary('▸')} ${chalk_1.default.bold(skill.name)}`);
|
|
48
42
|
console.log(` ${ui_1.colors.muted(skill.description)}`);
|
|
43
|
+
console.log(` ${ui_1.colors.muted('Files:')} ${skill.files.map((f) => f.path).join(', ')}`);
|
|
49
44
|
console.log(` ${ui_1.colors.muted('Install:')} ${chalk_1.default.cyan(`suzi skills add ${skill.name}`)}`);
|
|
50
45
|
console.log();
|
|
51
46
|
}
|
|
52
47
|
(0, ui_1.divider)();
|
|
53
|
-
(0, ui_1.info)(`${
|
|
48
|
+
(0, ui_1.info)(`${skillList.length} skill(s) available.`);
|
|
49
|
+
const age = (0, skills_cache_1.cacheAge)();
|
|
50
|
+
if (age) {
|
|
51
|
+
(0, ui_1.info)(`Cached ${age}.`);
|
|
52
|
+
}
|
|
54
53
|
(0, ui_1.info)('Use `suzi skills add <name>` to install, or `suzi skills add --all` for all.');
|
|
55
54
|
});
|
|
56
55
|
// suzi skills show <name>
|
|
57
56
|
skills
|
|
58
57
|
.command('show <name>')
|
|
59
58
|
.description('Show skill details and contents')
|
|
60
|
-
.option('--full', 'Print the full
|
|
61
|
-
.action((name, opts) => {
|
|
62
|
-
|
|
59
|
+
.option('--full', 'Print the full file contents')
|
|
60
|
+
.action(async (name, opts) => {
|
|
61
|
+
if (!(0, ui_1.requireAuth)())
|
|
62
|
+
return;
|
|
63
|
+
let skillList;
|
|
64
|
+
try {
|
|
65
|
+
skillList = await (0, skills_cache_1.getSkills)();
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
const cached = (0, skills_cache_1.getCachedSkills)();
|
|
69
|
+
if (cached) {
|
|
70
|
+
skillList = cached;
|
|
71
|
+
(0, ui_1.info)('Using cached skill list (could not reach server).');
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
(0, ui_1.error)(`Failed to fetch skills: ${err.message}`);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const skill = skillList.find((s) => s.name === name);
|
|
63
79
|
if (!skill) {
|
|
64
80
|
(0, ui_1.error)(`Skill "${name}" not found.`);
|
|
65
|
-
(0, ui_1.info)(`Available: ${
|
|
81
|
+
(0, ui_1.info)(`Available: ${skillList.map((s) => s.name).join(', ')}`);
|
|
66
82
|
return;
|
|
67
83
|
}
|
|
68
84
|
(0, ui_1.header)(skill.name);
|
|
69
85
|
console.log();
|
|
70
|
-
(0, ui_1.label)('Claude Path', `~/.claude/skills/${skill.name}/SKILL.md`);
|
|
71
|
-
(0, ui_1.label)('Codex Path', `~/.codex/skills/${skill.name}/SKILL.md`);
|
|
72
86
|
(0, ui_1.label)('Description', skill.description);
|
|
73
|
-
(0, ui_1.label)('
|
|
87
|
+
(0, ui_1.label)('Files', String(skill.files.length));
|
|
74
88
|
console.log();
|
|
75
|
-
|
|
76
|
-
console.log(chalk_1.default.bold(' Sections:'));
|
|
89
|
+
console.log(chalk_1.default.bold(' Files:'));
|
|
77
90
|
console.log();
|
|
78
|
-
for (
|
|
79
|
-
const
|
|
80
|
-
console.log(` ${ui_1.colors.primary(
|
|
81
|
-
console.log(` ${ui_1.colors.muted(s.description)}`);
|
|
91
|
+
for (const file of skill.files) {
|
|
92
|
+
const lines = file.content.split('\n').length;
|
|
93
|
+
console.log(` ${ui_1.colors.primary('▸')} ${chalk_1.default.bold(file.path)} ${ui_1.colors.muted(`(${lines} lines)`)}`);
|
|
82
94
|
}
|
|
83
95
|
console.log();
|
|
84
96
|
(0, ui_1.divider)();
|
|
85
97
|
if (opts.full) {
|
|
86
|
-
|
|
87
|
-
|
|
98
|
+
for (const file of skill.files) {
|
|
99
|
+
console.log();
|
|
100
|
+
console.log(chalk_1.default.bold(`── ${file.path} ──`));
|
|
101
|
+
console.log();
|
|
102
|
+
console.log(file.content);
|
|
103
|
+
}
|
|
88
104
|
}
|
|
89
105
|
else {
|
|
90
|
-
(0, ui_1.info)(
|
|
106
|
+
(0, ui_1.info)('Use --full to print the entire skill content.');
|
|
91
107
|
(0, ui_1.info)(`Use \`suzi skills add ${name}\` to install it.`);
|
|
92
108
|
}
|
|
93
109
|
});
|
|
@@ -98,7 +114,9 @@ function registerSkillsCommand(program) {
|
|
|
98
114
|
.option('--all', 'Install all available skills')
|
|
99
115
|
.option('--client <client>', 'Target client: claude | codex | both (default: both)', 'both')
|
|
100
116
|
.option('--dir <path>', 'Custom output directory (overrides --client)')
|
|
101
|
-
.action((name, opts) => {
|
|
117
|
+
.action(async (name, opts) => {
|
|
118
|
+
if (!(0, ui_1.requireAuth)())
|
|
119
|
+
return;
|
|
102
120
|
let targets = [];
|
|
103
121
|
try {
|
|
104
122
|
targets = (0, skills_1.resolveSkillTargets)(opts);
|
|
@@ -107,38 +125,55 @@ function registerSkillsCommand(program) {
|
|
|
107
125
|
(0, ui_1.error)(err.message);
|
|
108
126
|
return;
|
|
109
127
|
}
|
|
128
|
+
let skillList;
|
|
129
|
+
try {
|
|
130
|
+
skillList = await (0, skills_cache_1.getSkills)();
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
const cached = (0, skills_cache_1.getCachedSkills)();
|
|
134
|
+
if (cached) {
|
|
135
|
+
skillList = cached;
|
|
136
|
+
(0, ui_1.info)('Using cached skill list (could not reach server).');
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
(0, ui_1.error)(`Failed to fetch skills: ${err.message}`);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
110
143
|
// Determine which skills to install
|
|
111
144
|
let toInstall;
|
|
112
145
|
if (opts?.all) {
|
|
113
|
-
toInstall =
|
|
146
|
+
toInstall = skillList;
|
|
114
147
|
}
|
|
115
148
|
else if (name) {
|
|
116
|
-
const skill =
|
|
149
|
+
const skill = skillList.find((s) => s.name === name);
|
|
117
150
|
if (!skill) {
|
|
118
151
|
(0, ui_1.error)(`Skill "${name}" not found.`);
|
|
119
|
-
(0, ui_1.info)(`Available: ${
|
|
152
|
+
(0, ui_1.info)(`Available: ${skillList.map((s) => s.name).join(', ')}`);
|
|
120
153
|
return;
|
|
121
154
|
}
|
|
122
155
|
toInstall = [skill];
|
|
123
156
|
}
|
|
124
157
|
else {
|
|
125
158
|
(0, ui_1.error)('Specify a skill name or use --all.');
|
|
126
|
-
(0, ui_1.info)(`Available: ${
|
|
159
|
+
(0, ui_1.info)(`Available: ${skillList.map((s) => s.name).join(', ')}`);
|
|
127
160
|
return;
|
|
128
161
|
}
|
|
129
162
|
for (const target of targets) {
|
|
130
163
|
for (const skill of toInstall) {
|
|
131
|
-
const result = (0, skills_1.
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
164
|
+
const result = (0, skills_1.installMultiFileSkill)(target, skill.name, skill.files, 'upsert');
|
|
165
|
+
for (const file of result.files) {
|
|
166
|
+
const displayPath = (0, skills_1.toDisplayPath)(file.filePath);
|
|
167
|
+
if (file.state === 'installed') {
|
|
168
|
+
(0, ui_1.success)(`Installed ${chalk_1.default.bold(skill.name)}/${file.path} for ${target.label} → ${displayPath}`);
|
|
169
|
+
}
|
|
170
|
+
else if (file.state === 'updated') {
|
|
171
|
+
(0, ui_1.success)(`Updated ${chalk_1.default.bold(skill.name)}/${file.path} for ${target.label} → ${displayPath}`);
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
(0, ui_1.info)(`No changes for ${chalk_1.default.bold(skill.name)}/${file.path} in ${target.label} → ${displayPath}`);
|
|
175
|
+
}
|
|
140
176
|
}
|
|
141
|
-
(0, ui_1.info)(`No changes for ${chalk_1.default.bold(skill.name)} in ${target.label} → ${displayPath}`);
|
|
142
177
|
}
|
|
143
178
|
}
|
|
144
179
|
console.log();
|
|
@@ -146,5 +181,50 @@ function registerSkillsCommand(program) {
|
|
|
146
181
|
const labels = targets.map((t) => t.label).join(' + ');
|
|
147
182
|
(0, ui_1.info)(`Skills are now available to ${labels}.`);
|
|
148
183
|
});
|
|
184
|
+
// suzi skills sync
|
|
185
|
+
skills
|
|
186
|
+
.command('sync')
|
|
187
|
+
.description('Force-refresh skills from server and install all')
|
|
188
|
+
.option('--quiet', 'Suppress all output')
|
|
189
|
+
.action(async (opts) => {
|
|
190
|
+
if (!(0, ui_1.requireAuth)())
|
|
191
|
+
return;
|
|
192
|
+
const log = opts.quiet ? (_msg) => { } : ui_1.info;
|
|
193
|
+
const logSuccess = opts.quiet ? (_msg) => { } : ui_1.success;
|
|
194
|
+
const logError = opts.quiet ? (_msg) => { } : ui_1.error;
|
|
195
|
+
let skillList;
|
|
196
|
+
try {
|
|
197
|
+
skillList = await (0, skills_cache_1.getSkills)(true);
|
|
198
|
+
}
|
|
199
|
+
catch (err) {
|
|
200
|
+
logError(`Failed to fetch skills: ${err.message}`);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const targets = (0, skills_1.resolveSkillTargets)({ client: 'both' });
|
|
204
|
+
let totalInstalled = 0;
|
|
205
|
+
let totalUpdated = 0;
|
|
206
|
+
for (const target of targets) {
|
|
207
|
+
for (const skill of skillList) {
|
|
208
|
+
const result = (0, skills_1.installMultiFileSkill)(target, skill.name, skill.files, 'upsert');
|
|
209
|
+
for (const file of result.files) {
|
|
210
|
+
if (file.state === 'installed')
|
|
211
|
+
totalInstalled++;
|
|
212
|
+
if (file.state === 'updated')
|
|
213
|
+
totalUpdated++;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (totalInstalled > 0 || totalUpdated > 0) {
|
|
218
|
+
const parts = [];
|
|
219
|
+
if (totalInstalled > 0)
|
|
220
|
+
parts.push(`${totalInstalled} installed`);
|
|
221
|
+
if (totalUpdated > 0)
|
|
222
|
+
parts.push(`${totalUpdated} updated`);
|
|
223
|
+
logSuccess(`Skills synced: ${parts.join(', ')} (${skillList.length} skill(s) from server).`);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
log(`Skills up to date (${skillList.length} skill(s) from server).`);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
149
229
|
}
|
|
150
230
|
//# sourceMappingURL=skills.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,7 @@ const pkg = require('../package.json');
|
|
|
12
12
|
const login_1 = require("./commands/login");
|
|
13
13
|
const portfolio_1 = require("./commands/portfolio");
|
|
14
14
|
const preferences_1 = require("./commands/preferences");
|
|
15
|
-
const
|
|
15
|
+
const list_actions_1 = require("./commands/list-actions");
|
|
16
16
|
const agents_1 = require("./commands/agents");
|
|
17
17
|
const deploy_1 = require("./commands/deploy");
|
|
18
18
|
const import_1 = require("./commands/import");
|
|
@@ -30,6 +30,8 @@ const list_triggers_1 = require("./commands/list-triggers");
|
|
|
30
30
|
const memory_1 = require("./commands/memory");
|
|
31
31
|
const init_1 = require("./commands/init");
|
|
32
32
|
const install_hooks_1 = require("./commands/install-hooks");
|
|
33
|
+
const debug_1 = require("./commands/debug");
|
|
34
|
+
const run_1 = require("./commands/run");
|
|
33
35
|
const ui_1 = require("./utils/ui");
|
|
34
36
|
const config_1 = require("./lib/config");
|
|
35
37
|
const history_1 = require("./lib/history");
|
|
@@ -38,7 +40,7 @@ const program = new commander_1.Command();
|
|
|
38
40
|
program
|
|
39
41
|
.name('suzi')
|
|
40
42
|
.description('Suzi CLI — Autonomous agent platform for blockchain protocols')
|
|
41
|
-
.version(
|
|
43
|
+
.version(pkg.version)
|
|
42
44
|
.addHelpText('beforeAll', (0, ui_1.logo)())
|
|
43
45
|
.addHelpText('after', () => {
|
|
44
46
|
const config = (0, config_1.getConfig)();
|
|
@@ -60,7 +62,7 @@ program
|
|
|
60
62
|
(0, login_1.registerLoginCommand)(program); // login, logout, whoami
|
|
61
63
|
(0, portfolio_1.registerPortfolioCommand)(program); // portfolio
|
|
62
64
|
(0, preferences_1.registerPreferencesCommand)(program); // preferences, preferences set-username, preferences telegram
|
|
63
|
-
(0,
|
|
65
|
+
(0, list_actions_1.registerListActionsCommand)(program); // list-actions / actions
|
|
64
66
|
(0, agents_1.registerAgentsCommand)(program); // agents, agents view, agents activate, agents deactivate, agents execute, agents logs, agents delete
|
|
65
67
|
(0, deploy_1.registerDeployCommand)(program); // deploy
|
|
66
68
|
(0, import_1.registerImportCommand)(program); // import
|
|
@@ -69,7 +71,7 @@ program
|
|
|
69
71
|
(0, transactions_1.registerTransactionsCommand)(program); // transactions / txns, tx-confirm
|
|
70
72
|
(0, prompt_suggestions_1.registerPromptSuggestions)(program); // suggest / help-me
|
|
71
73
|
(0, skills_1.registerSkillsCommand)(program); // skills, skills add
|
|
72
|
-
(0, create_1.registerCreateCommand)(program); //
|
|
74
|
+
(0, create_1.registerCreateCommand)(program); // start
|
|
73
75
|
(0, accounts_1.registerAccountsCommand)(program); // accounts, accounts show, accounts fund, accounts switch, accounts create, accounts rename, accounts delete
|
|
74
76
|
(0, feedback_1.registerFeedbackCommand)(program); // feedback
|
|
75
77
|
(0, env_1.registerEnvCommand)(program); // env, env set, env list, env remove
|
|
@@ -78,6 +80,8 @@ program
|
|
|
78
80
|
(0, memory_1.registerMemoryCommand)(program); // memory, memory learnings, memory log, memory context, memory clear, memory edit, memory export
|
|
79
81
|
(0, init_1.registerInitCommand)(program); // init (generate SUZI.md)
|
|
80
82
|
(0, install_hooks_1.registerInstallHooksCommand)(program); // install-hooks (Claude Code hooks)
|
|
83
|
+
(0, debug_1.registerDebugCommand)(program); // debug, debug logs, debug aggregate, debug db-logs, debug executions, debug runs
|
|
84
|
+
(0, run_1.registerRunCommand)(program); // run <action> [--key value ...]
|
|
81
85
|
// Default action: show quick status + suggestions
|
|
82
86
|
program.action(() => {
|
|
83
87
|
console.log((0, ui_1.logo)());
|
|
@@ -107,12 +111,13 @@ program.action(() => {
|
|
|
107
111
|
if (!loggedIn) {
|
|
108
112
|
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi login')} ${ui_1.colors.muted('Sign in with Google')}`);
|
|
109
113
|
}
|
|
110
|
-
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi
|
|
114
|
+
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi start')} ${ui_1.colors.muted('Create an agent with Claude Code or Codex')}`);
|
|
111
115
|
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi portfolio')} ${ui_1.colors.muted('View balances and positions')}`);
|
|
112
116
|
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi accounts')} ${ui_1.colors.muted('Manage accounts and funding')}`);
|
|
113
117
|
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi agents')} ${ui_1.colors.muted('List your agents')}`);
|
|
114
118
|
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi deploy')} ${ui_1.colors.muted('Deploy an agent')}`);
|
|
115
|
-
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi
|
|
119
|
+
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi run')} ${ui_1.colors.muted('Execute an action directly')}`);
|
|
120
|
+
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi list-actions')} ${ui_1.colors.muted('Browse available actions')}`);
|
|
116
121
|
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi list-triggers')} ${ui_1.colors.muted('Browse available triggers')}`);
|
|
117
122
|
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi suggest')} ${ui_1.colors.muted('Get command suggestions')}`);
|
|
118
123
|
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi feedback')} ${ui_1.colors.muted('Send feedback to the team')}`);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,sEAA6C;AAE7C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AACvC,IAAA,yBAAc,EAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAEjC,4CAAwD;AACxD,oDAAgE;AAChE,wDAAoE;AACpE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface ActionDescription {
|
|
2
|
+
name: string;
|
|
3
|
+
protocol: string;
|
|
4
|
+
description: string;
|
|
5
|
+
requires?: {
|
|
6
|
+
wallet?: Array<'svm' | 'evm'>;
|
|
7
|
+
};
|
|
8
|
+
parameters: Record<string, unknown>;
|
|
9
|
+
response?: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
export declare function getActions(forceRefresh?: boolean): Promise<ActionDescription[]>;
|
|
12
|
+
export declare function cacheAge(): string | null;
|
|
13
|
+
export declare function getActionByName(name: string, forceRefresh?: boolean): Promise<ActionDescription | undefined>;
|
|
14
|
+
export declare function getSchemaProperties(action: ActionDescription): string[];
|
|
15
|
+
//# sourceMappingURL=actions-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions-cache.d.ts","sourceRoot":"","sources":["../../src/lib/actions-cache.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAA;KAAE,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AA0CD,wBAAsB,UAAU,CAAC,YAAY,UAAQ,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAWnF;AAED,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAOxC;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,YAAY,UAAQ,GACnB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAGxC;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAIvE"}
|
|
@@ -0,0 +1,79 @@
|
|
|
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.getActions = getActions;
|
|
7
|
+
exports.cacheAge = cacheAge;
|
|
8
|
+
exports.getActionByName = getActionByName;
|
|
9
|
+
exports.getSchemaProperties = getSchemaProperties;
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const os_1 = __importDefault(require("os"));
|
|
13
|
+
const api_1 = require("./api");
|
|
14
|
+
const CACHE_DIR = path_1.default.join(os_1.default.homedir(), '.suzi');
|
|
15
|
+
const CACHE_PATH = path_1.default.join(CACHE_DIR, 'actions-cache.json');
|
|
16
|
+
const CACHE_TTL = 60 * 60 * 1000; // 1 hour
|
|
17
|
+
function readCache() {
|
|
18
|
+
try {
|
|
19
|
+
if (fs_1.default.existsSync(CACHE_PATH)) {
|
|
20
|
+
const raw = fs_1.default.readFileSync(CACHE_PATH, 'utf-8');
|
|
21
|
+
return JSON.parse(raw);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// Corrupted cache — ignore
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
function writeCache(data) {
|
|
30
|
+
try {
|
|
31
|
+
if (!fs_1.default.existsSync(CACHE_DIR)) {
|
|
32
|
+
fs_1.default.mkdirSync(CACHE_DIR, { recursive: true });
|
|
33
|
+
}
|
|
34
|
+
fs_1.default.writeFileSync(CACHE_PATH, JSON.stringify(data, null, 2));
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// Best-effort caching — don't fail the command if disk write fails
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async function fetchActions() {
|
|
41
|
+
const res = await (0, api_1.get)('/api/actions');
|
|
42
|
+
if (!res.ok || !res.data?.ok) {
|
|
43
|
+
throw new Error(res.data?.error ?? `API returned status ${res.status}`);
|
|
44
|
+
}
|
|
45
|
+
return res.data.actions ?? [];
|
|
46
|
+
}
|
|
47
|
+
async function getActions(forceRefresh = false) {
|
|
48
|
+
if (!forceRefresh) {
|
|
49
|
+
const cache = readCache();
|
|
50
|
+
if (cache && Date.now() - cache.fetchedAt < CACHE_TTL) {
|
|
51
|
+
return cache.actions;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const actions = await fetchActions();
|
|
55
|
+
writeCache({ fetchedAt: Date.now(), actions });
|
|
56
|
+
return actions;
|
|
57
|
+
}
|
|
58
|
+
function cacheAge() {
|
|
59
|
+
const cache = readCache();
|
|
60
|
+
if (!cache)
|
|
61
|
+
return null;
|
|
62
|
+
const mins = Math.floor((Date.now() - cache.fetchedAt) / 60000);
|
|
63
|
+
if (mins < 1)
|
|
64
|
+
return 'just now';
|
|
65
|
+
if (mins < 60)
|
|
66
|
+
return `${mins}m ago`;
|
|
67
|
+
return `${Math.floor(mins / 60)}h ${mins % 60}m ago`;
|
|
68
|
+
}
|
|
69
|
+
async function getActionByName(name, forceRefresh = false) {
|
|
70
|
+
const actions = await getActions(forceRefresh);
|
|
71
|
+
return actions.find((a) => a.name === name);
|
|
72
|
+
}
|
|
73
|
+
function getSchemaProperties(action) {
|
|
74
|
+
const params = action.parameters;
|
|
75
|
+
if (!params?.properties)
|
|
76
|
+
return [];
|
|
77
|
+
return Object.keys(params.properties);
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=actions-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions-cache.js","sourceRoot":"","sources":["../../src/lib/actions-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface CachedSkill {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
files: Array<{
|
|
5
|
+
path: string;
|
|
6
|
+
content: string;
|
|
7
|
+
}>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Fetch skills from the API, using a local cache with 1hr TTL.
|
|
11
|
+
* Pass forceRefresh=true to bypass the cache.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getSkills(forceRefresh?: boolean): Promise<CachedSkill[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Return cached skills without making a network call.
|
|
16
|
+
* Returns null if no cache exists or the cache is corrupted.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getCachedSkills(): CachedSkill[] | null;
|
|
19
|
+
/**
|
|
20
|
+
* Return a human-readable string describing how old the cache is, or null if no cache.
|
|
21
|
+
*/
|
|
22
|
+
export declare function cacheAge(): string | null;
|
|
23
|
+
//# sourceMappingURL=skills-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-cache.d.ts","sourceRoot":"","sources":["../../src/lib/skills-cache.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAwDD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,YAAY,UAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAW5E;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,WAAW,EAAE,GAAG,IAAI,CAItD;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAOxC"}
|