suzi-cli 0.1.5 → 0.1.7
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/CLAUDE.md +2 -2
- package/README.md +267 -1
- package/dist/commands/accounts.d.ts.map +1 -1
- package/dist/commands/accounts.js +59 -0
- package/dist/commands/accounts.js.map +1 -1
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +10 -3
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +147 -40
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +27 -2
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +139 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/install-hooks.d.ts +16 -0
- package/dist/commands/install-hooks.d.ts.map +1 -0
- package/dist/commands/install-hooks.js +381 -0
- package/dist/commands/install-hooks.js.map +1 -0
- package/dist/commands/list-triggers.d.ts +3 -0
- package/dist/commands/list-triggers.d.ts.map +1 -0
- package/dist/commands/list-triggers.js +153 -0
- package/dist/commands/list-triggers.js.map +1 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +78 -0
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/memory.d.ts +3 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +196 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/portfolio.d.ts.map +1 -1
- package/dist/commands/portfolio.js +5 -8
- package/dist/commands/portfolio.js.map +1 -1
- package/dist/commands/prompt-suggestions.d.ts.map +1 -1
- package/dist/commands/prompt-suggestions.js +8 -14
- package/dist/commands/prompt-suggestions.js.map +1 -1
- package/dist/commands/share.d.ts.map +1 -1
- package/dist/commands/share.js +2 -0
- package/dist/commands/share.js.map +1 -1
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +30 -31
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/validate.d.ts +3 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +165 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/index.js +40 -10
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +4 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +13 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/memory.d.ts +45 -0
- package/dist/lib/memory.d.ts.map +1 -0
- package/dist/lib/memory.js +247 -0
- package/dist/lib/memory.js.map +1 -0
- package/dist/lib/skills.d.ts +20 -0
- package/dist/lib/skills.d.ts.map +1 -0
- package/dist/lib/skills.js +73 -0
- package/dist/lib/skills.js.map +1 -0
- 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 +154 -37
- package/dist/lib/suzi-guide.js.map +1 -1
- package/dist/utils/ui.d.ts +3 -1
- package/dist/utils/ui.d.ts.map +1 -1
- package/dist/utils/ui.js +4 -1
- package/dist/utils/ui.js.map +1 -1
- package/package.json +1 -1
- package/dist/commands/wallet.d.ts +0 -3
- package/dist/commands/wallet.d.ts.map +0 -1
- package/dist/commands/wallet.js +0 -191
- package/dist/commands/wallet.js.map +0 -1
package/dist/commands/create.js
CHANGED
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.registerCreateCommand = registerCreateCommand;
|
|
7
|
+
const commander_1 = require("commander");
|
|
7
8
|
const child_process_1 = require("child_process");
|
|
8
9
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
10
|
const fs_1 = __importDefault(require("fs"));
|
|
@@ -11,6 +12,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
11
12
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
12
13
|
const ui_1 = require("../utils/ui");
|
|
13
14
|
const suzi_guide_1 = require("../lib/suzi-guide");
|
|
15
|
+
const config_1 = require("../lib/config");
|
|
14
16
|
const AGENT_TS_TEMPLATE = `export default defineAgent({
|
|
15
17
|
meta: {
|
|
16
18
|
name: 'My Agent',
|
|
@@ -39,7 +41,7 @@ function buildSuziSystemPrompt() {
|
|
|
39
41
|
return `<suzi-agent-creator>
|
|
40
42
|
You are helping the user create a Suzi autonomous agent. You have full knowledge of the Suzi platform, its CLI, and the agent DSL. Your job is to help the user write an agent.ts file that implements their desired strategy or automation.
|
|
41
43
|
|
|
42
|
-
The working directory contains an agent.ts template file.
|
|
44
|
+
The working directory contains an agent.ts template file and an AGENTS.md instruction file. Follow AGENTS.md while helping the user modify agent.ts.
|
|
43
45
|
|
|
44
46
|
<suzi-guide>
|
|
45
47
|
${suzi_guide_1.SUZI_GUIDE_CONTENT}
|
|
@@ -65,9 +67,59 @@ After the agent.ts file is ready, instruct the user to:
|
|
|
65
67
|
</workflow>
|
|
66
68
|
</suzi-agent-creator>`;
|
|
67
69
|
}
|
|
68
|
-
function
|
|
70
|
+
function buildCodexInitialPrompt() {
|
|
71
|
+
return [
|
|
72
|
+
'You are helping the user create a Suzi autonomous agent in this directory.',
|
|
73
|
+
'Always follow AGENTS.md in this project.',
|
|
74
|
+
'Use the Suzi skill context (`$suzi-guide`) for Suzi-specific CLI and agent DSL guidance.',
|
|
75
|
+
'Update `agent.ts` based on the user\'s strategy and keep it self-contained with no imports.',
|
|
76
|
+
].join(' ');
|
|
77
|
+
}
|
|
78
|
+
const AGENTS_MD_TEMPLATE = `# AGENTS.md
|
|
79
|
+
|
|
80
|
+
This directory contains a Suzi agent project.
|
|
81
|
+
|
|
82
|
+
When assisting in this directory:
|
|
83
|
+
- Prefer using Suzi skill context (\`$suzi-guide\`) for platform-specific behavior.
|
|
84
|
+
- Keep agent code in \`agent.ts\` self-contained.
|
|
85
|
+
- Agent files must default-export \`defineAgent({...})\`.
|
|
86
|
+
- Do not add imports in \`agent.ts\` (runtime globals are provided).
|
|
87
|
+
- Ensure at least one trigger exists before finishing.
|
|
88
|
+
- Use \`ctx.actions.suzi.log()\` for debugging logs.
|
|
89
|
+
|
|
90
|
+
Useful commands:
|
|
91
|
+
- \`suzi list-tools --verbose\` to discover protocols/actions
|
|
92
|
+
- \`suzi deploy ./agent.ts\` to deploy
|
|
93
|
+
- \`suzi agents activate <id>\` to activate
|
|
94
|
+
- \`suzi agents execute <id>\` to test
|
|
95
|
+
- \`suzi agents logs <id>\` to inspect logs
|
|
96
|
+
`;
|
|
97
|
+
const AI_PROVIDERS = {
|
|
98
|
+
claude: {
|
|
99
|
+
command: 'claude',
|
|
100
|
+
displayName: 'Claude Code',
|
|
101
|
+
docsUrl: 'https://docs.anthropic.com/en/docs/claude-code',
|
|
102
|
+
installCommand: 'npm install -g @anthropic-ai/claude-code',
|
|
103
|
+
buildArgs: () => ['--append-system-prompt', buildSuziSystemPrompt()],
|
|
104
|
+
},
|
|
105
|
+
codex: {
|
|
106
|
+
command: 'codex',
|
|
107
|
+
displayName: 'Codex',
|
|
108
|
+
docsUrl: 'https://developers.openai.com/codex/cli',
|
|
109
|
+
installCommand: 'npm install -g @openai/codex',
|
|
110
|
+
buildArgs: () => [buildCodexInitialPrompt()],
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
function parseAiProvider(input) {
|
|
114
|
+
const normalized = input.trim().toLowerCase();
|
|
115
|
+
if (normalized === 'claude' || normalized === 'codex') {
|
|
116
|
+
return normalized;
|
|
117
|
+
}
|
|
118
|
+
throw new commander_1.InvalidOptionArgumentError('AI provider must be one of: claude, codex');
|
|
119
|
+
}
|
|
120
|
+
function isCommandAvailable(command) {
|
|
69
121
|
try {
|
|
70
|
-
const cmd = process.platform === 'win32' ?
|
|
122
|
+
const cmd = process.platform === 'win32' ? `where ${command}` : `which ${command}`;
|
|
71
123
|
(0, child_process_1.execSync)(cmd, { stdio: 'ignore' });
|
|
72
124
|
return true;
|
|
73
125
|
}
|
|
@@ -75,12 +127,54 @@ function isClaudeAvailable() {
|
|
|
75
127
|
return false;
|
|
76
128
|
}
|
|
77
129
|
}
|
|
130
|
+
function getInstallHelpLines() {
|
|
131
|
+
return (Object.values(AI_PROVIDERS)).map((provider) => ` ${ui_1.colors.primary('$')} ${chalk_1.default.white(provider.installCommand)} ${ui_1.colors.muted(`(${provider.displayName})`)}`);
|
|
132
|
+
}
|
|
133
|
+
function ensureAgentsFile(workingDir) {
|
|
134
|
+
const agentsPath = path_1.default.join(workingDir, 'AGENTS.md');
|
|
135
|
+
if (!fs_1.default.existsSync(agentsPath)) {
|
|
136
|
+
fs_1.default.writeFileSync(agentsPath, AGENTS_MD_TEMPLATE);
|
|
137
|
+
(0, ui_1.success)(`Created AGENTS.md at ${path_1.default.relative(process.cwd(), agentsPath)}`);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
(0, ui_1.info)(`Using existing AGENTS.md at ${path_1.default.relative(process.cwd(), agentsPath)}`);
|
|
141
|
+
}
|
|
142
|
+
return agentsPath;
|
|
143
|
+
}
|
|
144
|
+
function resolveProvider(explicitProvider) {
|
|
145
|
+
if (explicitProvider)
|
|
146
|
+
return AI_PROVIDERS[explicitProvider];
|
|
147
|
+
const configured = (0, config_1.getDefaultAi)();
|
|
148
|
+
if (configured)
|
|
149
|
+
return AI_PROVIDERS[configured];
|
|
150
|
+
return AI_PROVIDERS.claude;
|
|
151
|
+
}
|
|
78
152
|
function registerCreateCommand(program) {
|
|
79
|
-
program
|
|
80
|
-
.command('create
|
|
81
|
-
.description('Create an agent with AI assistance (
|
|
153
|
+
const create = program
|
|
154
|
+
.command('create')
|
|
155
|
+
.description('Create an agent with AI assistance (Claude Code or Codex)');
|
|
156
|
+
create
|
|
157
|
+
.argument('[dir]')
|
|
82
158
|
.option('--no-scaffold', 'Skip agent.ts template creation')
|
|
159
|
+
.option('--ai <provider>', 'AI provider to use (claude|codex)', parseAiProvider)
|
|
160
|
+
.option('--set-default <provider>', 'Set default AI provider (claude|codex)', parseAiProvider)
|
|
161
|
+
.addHelpText('after', [
|
|
162
|
+
'',
|
|
163
|
+
'Examples:',
|
|
164
|
+
` ${ui_1.colors.primary('$')} suzi create`,
|
|
165
|
+
` ${ui_1.colors.primary('$')} suzi create --ai codex`,
|
|
166
|
+
` ${ui_1.colors.primary('$')} suzi create --set-default claude`,
|
|
167
|
+
'',
|
|
168
|
+
].join('\n'))
|
|
83
169
|
.action(async (dir, opts) => {
|
|
170
|
+
// --set-default: just persist the default provider and exit
|
|
171
|
+
if (opts?.setDefault) {
|
|
172
|
+
(0, config_1.setDefaultAi)(opts.setDefault);
|
|
173
|
+
const provider = AI_PROVIDERS[opts.setDefault];
|
|
174
|
+
(0, ui_1.success)(`Default AI set to ${chalk_1.default.bold(provider.displayName)}.`);
|
|
175
|
+
(0, ui_1.info)('This applies to `suzi create` when --ai is not provided.');
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
84
178
|
let agentName;
|
|
85
179
|
if (dir) {
|
|
86
180
|
agentName = dir;
|
|
@@ -108,21 +202,25 @@ function registerCreateCommand(program) {
|
|
|
108
202
|
}
|
|
109
203
|
const workingDir = path_1.default.resolve(process.cwd(), agentName);
|
|
110
204
|
const shouldScaffold = opts?.scaffold !== false;
|
|
111
|
-
|
|
112
|
-
|
|
205
|
+
const provider = resolveProvider(opts?.ai);
|
|
206
|
+
// Check that selected CLI is available
|
|
207
|
+
if (!isCommandAvailable(provider.command)) {
|
|
113
208
|
console.log();
|
|
114
|
-
(0, ui_1.error)(
|
|
209
|
+
(0, ui_1.error)(`${provider.displayName} is required but not found in PATH.`);
|
|
115
210
|
console.log();
|
|
116
|
-
console.log(
|
|
117
|
-
|
|
211
|
+
console.log(' Install one of the supported AI CLIs:');
|
|
212
|
+
for (const line of getInstallHelpLines()) {
|
|
213
|
+
console.log(line);
|
|
214
|
+
}
|
|
118
215
|
console.log();
|
|
119
|
-
(0, ui_1.info)(
|
|
120
|
-
|
|
216
|
+
(0, ui_1.info)(`Selected provider docs: ${provider.docsUrl}`);
|
|
217
|
+
return;
|
|
121
218
|
}
|
|
122
219
|
// Ensure working directory exists
|
|
123
220
|
if (!fs_1.default.existsSync(workingDir)) {
|
|
124
221
|
fs_1.default.mkdirSync(workingDir, { recursive: true });
|
|
125
222
|
}
|
|
223
|
+
ensureAgentsFile(workingDir);
|
|
126
224
|
const agentPath = path_1.default.join(workingDir, 'agent.ts');
|
|
127
225
|
const agentExists = fs_1.default.existsSync(agentPath);
|
|
128
226
|
// Scaffold agent.ts template
|
|
@@ -142,37 +240,46 @@ function registerCreateCommand(program) {
|
|
|
142
240
|
console.log();
|
|
143
241
|
console.log(` ${chalk_1.default.bold('Starting AI-assisted agent creation...')}`);
|
|
144
242
|
console.log(` ${ui_1.colors.muted(`Working directory: ${workingDir}`)}`);
|
|
145
|
-
console.log(` ${ui_1.colors.muted(
|
|
243
|
+
console.log(` ${ui_1.colors.muted(`AI provider: ${provider.displayName}`)}`);
|
|
244
|
+
console.log(` ${ui_1.colors.muted(`Type your agent idea and ${provider.displayName} will build it for you.`)}`);
|
|
146
245
|
console.log(` ${ui_1.colors.muted('Press Ctrl+C to exit at any time.')}`);
|
|
147
246
|
console.log();
|
|
148
|
-
|
|
149
|
-
const
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
247
|
+
const args = provider.buildArgs();
|
|
248
|
+
const childExitCode = await new Promise((resolve) => {
|
|
249
|
+
let settled = false;
|
|
250
|
+
const child = (0, child_process_1.spawn)(provider.command, args, {
|
|
251
|
+
stdio: 'inherit',
|
|
252
|
+
cwd: workingDir,
|
|
253
|
+
env: { ...process.env },
|
|
254
|
+
});
|
|
255
|
+
child.on('error', (err) => {
|
|
256
|
+
if (settled)
|
|
257
|
+
return;
|
|
258
|
+
settled = true;
|
|
259
|
+
(0, ui_1.error)(`Failed to start ${provider.displayName}: ${err.message}`);
|
|
260
|
+
resolve(1);
|
|
261
|
+
});
|
|
262
|
+
child.on('exit', (code) => {
|
|
263
|
+
if (settled)
|
|
264
|
+
return;
|
|
265
|
+
settled = true;
|
|
266
|
+
resolve(code ?? 0);
|
|
267
|
+
});
|
|
161
268
|
});
|
|
162
|
-
|
|
269
|
+
console.log();
|
|
270
|
+
if (fs_1.default.existsSync(agentPath)) {
|
|
271
|
+
(0, ui_1.divider)();
|
|
163
272
|
console.log();
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
process.exit(code ?? 0);
|
|
175
|
-
});
|
|
273
|
+
console.log(chalk_1.default.bold(' Next steps:'));
|
|
274
|
+
console.log();
|
|
275
|
+
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white(`suzi deploy ${path_1.default.relative(process.cwd(), agentPath)}`)}`);
|
|
276
|
+
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi agents activate <id>')}`);
|
|
277
|
+
console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi agents execute <id>')}`);
|
|
278
|
+
console.log();
|
|
279
|
+
}
|
|
280
|
+
if (childExitCode !== 0) {
|
|
281
|
+
process.exitCode = childExitCode;
|
|
282
|
+
}
|
|
176
283
|
});
|
|
177
284
|
}
|
|
178
285
|
//# sourceMappingURL=create.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":";;;;;AAwKA,sDA6IC;AArTD,yCAAgE;AAChE,iDAAgD;AAChD,kDAA0B;AAC1B,4CAAoB;AACpB,gDAAwB;AACxB,wDAAgC;AAChC,oCAAoE;AACpE,kDAAuD;AACvD,0CAA2E;AAE3E,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBzB,CAAC;AAEF,SAAS,qBAAqB;IAC5B,OAAO;;;;;;EAMP,+BAAkB;;;;;;;;;;;;;;;;;;;;;sBAqBE,CAAC;AACvB,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO;QACL,4EAA4E;QAC5E,0CAA0C;QAC1C,0FAA0F;QAC1F,6FAA6F;KAC9F,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;CAkB1B,CAAC;AAUF,MAAM,YAAY,GAAiD;IACjE,MAAM,EAAE;QACN,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,aAAa;QAC1B,OAAO,EAAE,gDAAgD;QACzD,cAAc,EAAE,0CAA0C;QAC1D,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,wBAAwB,EAAE,qBAAqB,EAAE,CAAC;KACrE;IACD,KAAK,EAAE;QACL,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,yCAAyC;QAClD,cAAc,EAAE,8BAA8B;QAC9C,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,uBAAuB,EAAE,CAAC;KAC7C;CACF,CAAC;AAQF,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QACtD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,IAAI,sCAA0B,CAAC,2CAA2C,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC;QACnF,IAAA,wBAAQ,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACpD,OAAO,WAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,WAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE,CAClH,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACtD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;QACjD,IAAA,YAAO,EAAC,wBAAwB,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,IAAA,SAAI,EAAC,+BAA+B,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,eAAe,CAAC,gBAAiC;IACxD,IAAI,gBAAgB;QAAE,OAAO,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAA,qBAAY,GAAE,CAAC;IAClC,IAAI,UAAU;QAAE,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;IAChD,OAAO,YAAY,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,MAAM,MAAM,GAAG,OAAO;SACnB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2DAA2D,CAAC,CAAC;IAE5E,MAAM;SACH,QAAQ,CAAC,OAAO,CAAC;SACjB,MAAM,CAAC,eAAe,EAAE,iCAAiC,CAAC;SAC1D,MAAM,CAAC,iBAAiB,EAAE,mCAAmC,EAAE,eAAe,CAAC;SAC/E,MAAM,CAAC,0BAA0B,EAAE,wCAAwC,EAAE,eAAe,CAAC;SAC7F,WAAW,CAAC,OAAO,EAAE;QACpB,EAAE;QACF,WAAW;QACX,KAAK,WAAM,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc;QACtC,KAAK,WAAM,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB;QACjD,KAAK,WAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC;QAC3D,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACZ,MAAM,CAAC,KAAK,EAAE,GAAY,EAAE,IAAoB,EAAE,EAAE;QACnD,4DAA4D;QAC5D,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;YACrB,IAAA,qBAAY,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAA,YAAO,EAAC,qBAAqB,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAClE,IAAA,SAAI,EAAC,0DAA0D,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,IAAI,SAAiB,CAAC;QAEtB,IAAI,GAAG,EAAE,CAAC;YACR,SAAS,GAAG,GAAG,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAmB;gBACvD;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,yCAAyC;oBAClD,OAAO,EAAE,UAAU;oBACnB,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;wBAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;wBAC7B,IAAI,CAAC,OAAO;4BAAE,OAAO,6BAA6B,CAAC;wBACnD,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;4BAAE,OAAO,oCAAoC,CAAC;wBACvE,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG;4BAAE,OAAO,8CAA8C,CAAC;wBAChF,OAAO,IAAI,CAAC;oBACd,CAAC;iBACF;aACF,CAAC,CAAC;YACH,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;QAED,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,IAAI,EAAE,QAAQ,KAAK,KAAK,CAAC;QAChD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAE3C,uCAAuC;QACvC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,IAAA,UAAK,EAAC,GAAG,QAAQ,CAAC,WAAW,qCAAqC,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE,EAAE,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,IAAA,SAAI,EAAC,2BAA2B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,YAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAE7C,6BAA6B;QAC7B,IAAI,cAAc,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,SAAS;iBAC1B,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;iBACtB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAU,WAAW,GAAG,CAAC,CAAC;YACzF,YAAE,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACtC,IAAA,YAAO,EAAC,gCAAgC,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACvB,IAAA,SAAI,EAAC,8BAA8B,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAA,YAAO,GAAE,CAAC;QACV,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,WAAM,CAAC,KAAK,CAAC,sBAAsB,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,KAAK,WAAM,CAAC,KAAK,CAAC,gBAAgB,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,WAAM,CAAC,KAAK,CAAC,4BAA4B,QAAQ,CAAC,WAAW,yBAAyB,CAAC,EAAE,CAAC,CAAC;QAC5G,OAAO,CAAC,GAAG,CAAC,KAAK,WAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QAClC,MAAM,aAAa,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;YAC1D,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE;gBAC1C,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,UAAU;gBACf,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;aACxB,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxB,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,IAAA,UAAK,EAAC,mBAAmB,QAAQ,CAAC,WAAW,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBACjE,OAAO,CAAC,CAAC,CAAC,CAAC;YACb,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,IAAA,YAAO,GAAE,CAAC;YACV,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,OAAO,WAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC,eAAe,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACnH,OAAO,CAAC,GAAG,CAAC,OAAO,WAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;YACtF,OAAO,CAAC,GAAG,CAAC,OAAO,WAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;YACrF,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;AAEP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkL5D"}
|
package/dist/commands/deploy.js
CHANGED
|
@@ -4,12 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.registerDeployCommand = registerDeployCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
7
8
|
const ora_1 = __importDefault(require("ora"));
|
|
8
9
|
const fs_1 = __importDefault(require("fs"));
|
|
9
10
|
const path_1 = __importDefault(require("path"));
|
|
10
11
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
12
|
const api_1 = require("../lib/api");
|
|
12
13
|
const ui_1 = require("../utils/ui");
|
|
14
|
+
const memory_1 = require("../lib/memory");
|
|
13
15
|
function registerDeployCommand(program) {
|
|
14
16
|
program
|
|
15
17
|
.command('deploy [file]')
|
|
@@ -103,10 +105,12 @@ function registerDeployCommand(program) {
|
|
|
103
105
|
}
|
|
104
106
|
if (!resp.ok) {
|
|
105
107
|
spinner.fail();
|
|
106
|
-
|
|
108
|
+
const errorMsg = resp.data?.error || resp.data?.message || 'Unknown error';
|
|
109
|
+
(0, ui_1.error)(`Deploy failed: ${errorMsg}`);
|
|
107
110
|
if (resp.data?.details) {
|
|
108
111
|
console.log(ui_1.colors.muted(` ${resp.data.details}`));
|
|
109
112
|
}
|
|
113
|
+
(0, memory_1.appendLearning)({ category: 'error', message: `Deploy failed: ${errorMsg}`, command: 'deploy' });
|
|
110
114
|
return;
|
|
111
115
|
}
|
|
112
116
|
const agent = resp.data;
|
|
@@ -121,6 +125,24 @@ function registerDeployCommand(program) {
|
|
|
121
125
|
(0, ui_1.label)('Triggers', Object.keys(spec.triggers).join(', '));
|
|
122
126
|
}
|
|
123
127
|
}
|
|
128
|
+
// Show action validation warnings
|
|
129
|
+
if (agent.actionValidation?.issues?.length > 0) {
|
|
130
|
+
console.log();
|
|
131
|
+
(0, ui_1.warn)('Action validation issues:');
|
|
132
|
+
for (const issue of agent.actionValidation.issues) {
|
|
133
|
+
if (issue.type === 'unknown_protocol') {
|
|
134
|
+
console.log(` ${ui_1.colors.warning('⚠')} Unknown protocol: ${chalk_1.default.bold(issue.protocol)} ${ui_1.colors.muted(`(line ${issue.line})`)}`);
|
|
135
|
+
}
|
|
136
|
+
else if (issue.type === 'unknown_action') {
|
|
137
|
+
console.log(` ${ui_1.colors.warning('⚠')} Unknown action: ${chalk_1.default.bold(issue.protocol + '.' + issue.action)} ${ui_1.colors.muted(`(line ${issue.line})`)}`);
|
|
138
|
+
}
|
|
139
|
+
if (issue.suggestions?.length > 0) {
|
|
140
|
+
console.log(` ${ui_1.colors.muted('Did you mean:')} ${issue.suggestions.join(', ')}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
console.log();
|
|
144
|
+
(0, ui_1.info)('Run `suzi validate` for detailed validation.');
|
|
145
|
+
}
|
|
124
146
|
// Activate if requested
|
|
125
147
|
if (opts?.activate) {
|
|
126
148
|
console.log();
|
|
@@ -131,7 +153,9 @@ function registerDeployCommand(program) {
|
|
|
131
153
|
}
|
|
132
154
|
else {
|
|
133
155
|
activateSpinner.fail();
|
|
134
|
-
|
|
156
|
+
const activateError = activateResp.data?.error || activateResp.data?.message || 'Unknown error';
|
|
157
|
+
(0, ui_1.error)(`Activation failed: ${activateError}`);
|
|
158
|
+
(0, memory_1.appendLearning)({ category: 'error', message: `Post-deploy activation failed: ${activateError}`, command: 'deploy --activate', agentId: agent.id });
|
|
135
159
|
}
|
|
136
160
|
}
|
|
137
161
|
console.log();
|
|
@@ -143,6 +167,7 @@ function registerDeployCommand(program) {
|
|
|
143
167
|
catch (err) {
|
|
144
168
|
spinner.fail();
|
|
145
169
|
(0, ui_1.error)(`Deploy error: ${err.message}`);
|
|
170
|
+
(0, memory_1.appendLearning)({ category: 'error', message: `Deploy error: ${err.message}`, command: 'deploy' });
|
|
146
171
|
}
|
|
147
172
|
});
|
|
148
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":";;;;;AAUA,sDAkLC;AA3LD,kDAA0B;AAC1B,8CAAsB;AACtB,4CAAoB;AACpB,gDAAwB;AACxB,wDAAgC;AAChC,oCAA4C;AAC5C,oCAAkI;AAClI,0CAA+C;AAE/C,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CAAC,qBAAqB,EAAE,aAAa,CAAC;SAC5C,MAAM,CAAC,0BAA0B,EAAE,mBAAmB,CAAC;SACvD,MAAM,CAAC,oBAAoB,EAAE,kDAAkD,CAAC;SAChF,MAAM,CAAC,YAAY,EAAE,oCAAoC,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,IAAa,EAAE,IAAU,EAAE,EAAE;QAC1C,IAAI,CAAC,IAAA,gBAAW,GAAE;YAAE,OAAO;QAE3B,sBAAsB;QACtB,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,2DAA2D;YAC3D,MAAM,UAAU,GAAG;gBACjB,UAAU;gBACV,cAAc;gBACd,UAAU;gBACV,cAAc;aACf,CAAC;YAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;gBACxD,IAAI,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,QAAQ,GAAG,QAAQ,CAAC;oBACpB,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAA,UAAK,EAAC,oEAAoE,CAAC,CAAC;gBAC5E,IAAA,SAAI,EAAC,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE3D,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,IAAA,UAAK,EAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,YAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACpC,IAAA,UAAK,EAAC,gEAAgE,CAAC,CAAC;YACxE,IAAA,SAAI,EAAC,+CAA+C,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,IAAA,WAAM,EAAC,cAAc,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAA,UAAK,EAAC,MAAM,EAAE,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;QAC1D,IAAA,UAAK,EAAC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,kBAAkB;QAClB,IAAI,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YAC5B,6BAA6B;YAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC3D,IAAI,SAAS,EAAE,CAAC;gBACd,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;oBACpC;wBACE,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,OAAO;wBACb,OAAO,EAAE,cAAc;wBACvB,OAAO,EAAE,cAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,cAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;qBACjE;iBACF,CAAC,CAAC;gBACH,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACxB,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;QAElD,IAAI,CAAC;YACH,IAAI,IAAI,CAAC;YAET,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;gBACjB,wBAAwB;gBACxB,OAAO,CAAC,IAAI,GAAG,mBAAmB,CAAC;gBACnC,IAAI,GAAG,MAAM,IAAA,SAAG,EAAC,cAAc,IAAI,CAAC,MAAM,EAAE,EAAE;oBAC5C,IAAI,EAAE,MAAM;oBACZ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3B,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChE,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,mBAAmB;gBACnB,OAAO,CAAC,IAAI,GAAG,mBAAmB,CAAC;gBACnC,IAAI,GAAG,MAAM,IAAA,UAAI,EAAC,YAAY,EAAE;oBAC9B,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,KAAK,IAAI,WAAW;oBAC3B,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChE,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,eAAe,CAAC;gBAC3E,IAAA,UAAK,EAAC,kBAAkB,QAAQ,EAAE,CAAC,CAAC;gBACpC,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,WAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACtD,CAAC;gBACD,IAAA,uBAAc,EAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAChG,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,IAAA,UAAK,EAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAA,UAAK,EAAC,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC;YAC1C,IAAA,UAAK,EAAC,QAAQ,EAAE,IAAA,gBAAW,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAE3C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,IAAI,GAAG,IAAA,kBAAa,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,IAAA,UAAK,EAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YAED,kCAAkC;YAClC,IAAI,KAAK,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/C,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,IAAA,SAAI,EAAC,2BAA2B,CAAC,CAAC;gBAClC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;oBAClD,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;wBACtC,OAAO,CAAC,GAAG,CACT,OAAO,WAAM,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,WAAM,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CACrH,CAAC;oBACJ,CAAC;yBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;wBAC3C,OAAO,CAAC,GAAG,CACT,OAAO,WAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,WAAM,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CACxI,CAAC;oBACJ,CAAC;oBACD,IAAI,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;wBAClC,OAAO,CAAC,GAAG,CAAC,SAAS,WAAM,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACxF,CAAC;gBACH,CAAC;gBACD,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,IAAA,SAAI,EAAC,8CAA8C,CAAC,CAAC;YACvD,CAAC;YAED,wBAAwB;YACxB,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,eAAe,GAAG,IAAA,aAAG,EAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAC;gBAE3D,MAAM,YAAY,GAAG,MAAM,IAAA,UAAI,EAAC,cAAc,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;gBAEnE,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC;oBACpB,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACN,eAAe,CAAC,IAAI,EAAE,CAAC;oBACvB,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,IAAI,eAAe,CAAC;oBAChG,IAAA,UAAK,EAAC,sBAAsB,aAAa,EAAE,CAAC,CAAC;oBAC7C,IAAA,uBAAc,EAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,kCAAkC,aAAa,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrJ,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,IAAA,YAAO,GAAE,CAAC;YAEV,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC7B,IAAA,SAAI,EAAC,uCAAuC,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,IAAA,UAAK,EAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACtC,IAAA,uBAAc,EAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpG,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsGpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6C1D"}
|
|
@@ -0,0 +1,139 @@
|
|
|
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.registerInitCommand = registerInitCommand;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
10
|
+
const ui_1 = require("../utils/ui");
|
|
11
|
+
const SUZI_MD_TEMPLATE = (protocols) => `# SUZI.md
|
|
12
|
+
|
|
13
|
+
## Project Overview
|
|
14
|
+
|
|
15
|
+
<!-- Describe what this agent project does -->
|
|
16
|
+
|
|
17
|
+
## Agent Conventions
|
|
18
|
+
|
|
19
|
+
${protocols.length > 0 ? `### Protocols Used\n${protocols.map((p) => `- ${p}`).join('\n')}\n` : ''}
|
|
20
|
+
### Coding Patterns
|
|
21
|
+
- All agents must export \`defineAgent({...})\`
|
|
22
|
+
- No imports — agent code is self-contained
|
|
23
|
+
- Use \`ctx.actions.suzi.log()\` for debugging
|
|
24
|
+
- Use \`ctx.actions.suzi.set_to_store()\` / \`get_from_store()\` for persistent state
|
|
25
|
+
|
|
26
|
+
### Trading Rules
|
|
27
|
+
<!-- Define risk limits, position sizing, market preferences -->
|
|
28
|
+
<!-- Example:
|
|
29
|
+
- Max position size: $100
|
|
30
|
+
- Always set stop-losses
|
|
31
|
+
- Prefer high-liquidity markets only
|
|
32
|
+
-->
|
|
33
|
+
|
|
34
|
+
### Testing
|
|
35
|
+
- Always test with manual triggers first
|
|
36
|
+
- Check logs after execution: \`suzi agents logs <id>\`
|
|
37
|
+
- Validate before deploying: \`suzi validate\`
|
|
38
|
+
|
|
39
|
+
## Useful Commands
|
|
40
|
+
|
|
41
|
+
\`\`\`bash
|
|
42
|
+
suzi deploy ./agent.ts # Deploy agent
|
|
43
|
+
suzi deploy --activate # Deploy and activate
|
|
44
|
+
suzi agents activate <id> # Activate
|
|
45
|
+
suzi agents execute <id> # Manual execution
|
|
46
|
+
suzi agents logs <id> # View logs
|
|
47
|
+
suzi list-tools --verbose # Browse available actions
|
|
48
|
+
suzi list-triggers # Browse available triggers
|
|
49
|
+
\`\`\`
|
|
50
|
+
`;
|
|
51
|
+
function detectProtocols(dir) {
|
|
52
|
+
const protocols = new Set();
|
|
53
|
+
const agentFiles = [
|
|
54
|
+
'agent.ts',
|
|
55
|
+
'src/agent.ts',
|
|
56
|
+
'index.ts',
|
|
57
|
+
'src/index.ts',
|
|
58
|
+
];
|
|
59
|
+
for (const file of agentFiles) {
|
|
60
|
+
const filePath = path_1.default.join(dir, file);
|
|
61
|
+
if (fs_1.default.existsSync(filePath)) {
|
|
62
|
+
const content = fs_1.default.readFileSync(filePath, 'utf-8');
|
|
63
|
+
// Match ctx.actions.<protocol>. patterns
|
|
64
|
+
const matches = content.matchAll(/ctx\.actions\.(\w+)\./g);
|
|
65
|
+
for (const match of matches) {
|
|
66
|
+
if (match[1] !== 'suzi') {
|
|
67
|
+
protocols.add(match[1]);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Match on.<protocol>. trigger patterns
|
|
71
|
+
const triggerMatches = content.matchAll(/on\.(\w+)\./g);
|
|
72
|
+
for (const match of triggerMatches) {
|
|
73
|
+
if (match[1] !== 'suzi') {
|
|
74
|
+
protocols.add(match[1]);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Also scan for any .ts files with defineAgent
|
|
80
|
+
try {
|
|
81
|
+
const files = fs_1.default.readdirSync(dir).filter((f) => f.endsWith('.ts'));
|
|
82
|
+
for (const file of files) {
|
|
83
|
+
const filePath = path_1.default.join(dir, file);
|
|
84
|
+
const content = fs_1.default.readFileSync(filePath, 'utf-8');
|
|
85
|
+
if (content.includes('defineAgent')) {
|
|
86
|
+
const matches = content.matchAll(/ctx\.actions\.(\w+)\./g);
|
|
87
|
+
for (const match of matches) {
|
|
88
|
+
if (match[1] !== 'suzi') {
|
|
89
|
+
protocols.add(match[1]);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// Ignore readdir errors
|
|
97
|
+
}
|
|
98
|
+
return Array.from(protocols).sort();
|
|
99
|
+
}
|
|
100
|
+
function registerInitCommand(program) {
|
|
101
|
+
program
|
|
102
|
+
.command('init')
|
|
103
|
+
.description('Generate a SUZI.md project configuration file')
|
|
104
|
+
.action(async () => {
|
|
105
|
+
const cwd = process.cwd();
|
|
106
|
+
const suziPath = path_1.default.join(cwd, 'SUZI.md');
|
|
107
|
+
(0, ui_1.header)('Initialize SUZI.md');
|
|
108
|
+
console.log();
|
|
109
|
+
if (fs_1.default.existsSync(suziPath)) {
|
|
110
|
+
const answers = await inquirer_1.default.prompt([
|
|
111
|
+
{
|
|
112
|
+
type: 'confirm',
|
|
113
|
+
name: 'overwrite',
|
|
114
|
+
message: 'SUZI.md already exists. Overwrite?',
|
|
115
|
+
default: false,
|
|
116
|
+
},
|
|
117
|
+
]);
|
|
118
|
+
if (!answers.overwrite) {
|
|
119
|
+
(0, ui_1.info)('Cancelled.');
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Detect protocols from existing agent files
|
|
124
|
+
const protocols = detectProtocols(cwd);
|
|
125
|
+
if (protocols.length > 0) {
|
|
126
|
+
(0, ui_1.info)(`Detected protocols: ${protocols.join(', ')}`);
|
|
127
|
+
}
|
|
128
|
+
const content = SUZI_MD_TEMPLATE(protocols);
|
|
129
|
+
fs_1.default.writeFileSync(suziPath, content);
|
|
130
|
+
(0, ui_1.success)(`Created SUZI.md at ${path_1.default.relative(cwd, suziPath) || 'SUZI.md'}`);
|
|
131
|
+
console.log();
|
|
132
|
+
(0, ui_1.divider)();
|
|
133
|
+
console.log();
|
|
134
|
+
(0, ui_1.info)('Edit SUZI.md to add your project-specific conventions.');
|
|
135
|
+
(0, ui_1.info)('This file will be auto-injected into AI context via Claude Code hooks.');
|
|
136
|
+
console.log();
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
export interface HookInstallResult {
|
|
3
|
+
scripts: Array<{
|
|
4
|
+
name: string;
|
|
5
|
+
state: 'installed' | 'updated' | 'unchanged';
|
|
6
|
+
}>;
|
|
7
|
+
settingsMerged: boolean;
|
|
8
|
+
memoryCreated: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Install Suzi hooks globally to ~/.claude/.
|
|
12
|
+
* Can be called programmatically (e.g. during login onboarding) or via the CLI command.
|
|
13
|
+
*/
|
|
14
|
+
export declare function installHooksGlobal(): HookInstallResult;
|
|
15
|
+
export declare function registerInstallHooksCommand(program: Command): void;
|
|
16
|
+
//# sourceMappingURL=install-hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-hooks.d.ts","sourceRoot":"","sources":["../../src/commands/install-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoUpC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,CAAA;KAAE,CAAC,CAAC;IAC/E,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,iBAAiB,CAyBtD;AAID,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwDlE"}
|