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.
Files changed (76) hide show
  1. package/CLAUDE.md +2 -2
  2. package/README.md +267 -1
  3. package/dist/commands/accounts.d.ts.map +1 -1
  4. package/dist/commands/accounts.js +59 -0
  5. package/dist/commands/accounts.js.map +1 -1
  6. package/dist/commands/agents.d.ts.map +1 -1
  7. package/dist/commands/agents.js +10 -3
  8. package/dist/commands/agents.js.map +1 -1
  9. package/dist/commands/create.d.ts.map +1 -1
  10. package/dist/commands/create.js +147 -40
  11. package/dist/commands/create.js.map +1 -1
  12. package/dist/commands/deploy.d.ts.map +1 -1
  13. package/dist/commands/deploy.js +27 -2
  14. package/dist/commands/deploy.js.map +1 -1
  15. package/dist/commands/init.d.ts +3 -0
  16. package/dist/commands/init.d.ts.map +1 -0
  17. package/dist/commands/init.js +139 -0
  18. package/dist/commands/init.js.map +1 -0
  19. package/dist/commands/install-hooks.d.ts +16 -0
  20. package/dist/commands/install-hooks.d.ts.map +1 -0
  21. package/dist/commands/install-hooks.js +381 -0
  22. package/dist/commands/install-hooks.js.map +1 -0
  23. package/dist/commands/list-triggers.d.ts +3 -0
  24. package/dist/commands/list-triggers.d.ts.map +1 -0
  25. package/dist/commands/list-triggers.js +153 -0
  26. package/dist/commands/list-triggers.js.map +1 -0
  27. package/dist/commands/login.d.ts.map +1 -1
  28. package/dist/commands/login.js +78 -0
  29. package/dist/commands/login.js.map +1 -1
  30. package/dist/commands/memory.d.ts +3 -0
  31. package/dist/commands/memory.d.ts.map +1 -0
  32. package/dist/commands/memory.js +196 -0
  33. package/dist/commands/memory.js.map +1 -0
  34. package/dist/commands/portfolio.d.ts.map +1 -1
  35. package/dist/commands/portfolio.js +5 -8
  36. package/dist/commands/portfolio.js.map +1 -1
  37. package/dist/commands/prompt-suggestions.d.ts.map +1 -1
  38. package/dist/commands/prompt-suggestions.js +8 -14
  39. package/dist/commands/prompt-suggestions.js.map +1 -1
  40. package/dist/commands/share.d.ts.map +1 -1
  41. package/dist/commands/share.js +2 -0
  42. package/dist/commands/share.js.map +1 -1
  43. package/dist/commands/skills.d.ts.map +1 -1
  44. package/dist/commands/skills.js +30 -31
  45. package/dist/commands/skills.js.map +1 -1
  46. package/dist/commands/validate.d.ts +3 -0
  47. package/dist/commands/validate.d.ts.map +1 -0
  48. package/dist/commands/validate.js +165 -0
  49. package/dist/commands/validate.js.map +1 -0
  50. package/dist/index.js +40 -10
  51. package/dist/index.js.map +1 -1
  52. package/dist/lib/config.d.ts +4 -0
  53. package/dist/lib/config.d.ts.map +1 -1
  54. package/dist/lib/config.js +13 -0
  55. package/dist/lib/config.js.map +1 -1
  56. package/dist/lib/memory.d.ts +45 -0
  57. package/dist/lib/memory.d.ts.map +1 -0
  58. package/dist/lib/memory.js +247 -0
  59. package/dist/lib/memory.js.map +1 -0
  60. package/dist/lib/skills.d.ts +20 -0
  61. package/dist/lib/skills.d.ts.map +1 -0
  62. package/dist/lib/skills.js +73 -0
  63. package/dist/lib/skills.js.map +1 -0
  64. package/dist/lib/suzi-guide.d.ts +1 -1
  65. package/dist/lib/suzi-guide.d.ts.map +1 -1
  66. package/dist/lib/suzi-guide.js +154 -37
  67. package/dist/lib/suzi-guide.js.map +1 -1
  68. package/dist/utils/ui.d.ts +3 -1
  69. package/dist/utils/ui.d.ts.map +1 -1
  70. package/dist/utils/ui.js +4 -1
  71. package/dist/utils/ui.js.map +1 -1
  72. package/package.json +1 -1
  73. package/dist/commands/wallet.d.ts +0 -3
  74. package/dist/commands/wallet.d.ts.map +0 -1
  75. package/dist/commands/wallet.js +0 -191
  76. package/dist/commands/wallet.js.map +0 -1
@@ -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. Help the user modify it to match their needs.
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 isClaudeAvailable() {
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' ? 'where claude' : 'which claude';
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 [dir]')
81
- .description('Create an agent with AI assistance (launches Claude Code)')
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
- // Check that claude CLI is available
112
- if (!isClaudeAvailable()) {
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)('Claude Code is required but not found in PATH.');
209
+ (0, ui_1.error)(`${provider.displayName} is required but not found in PATH.`);
115
210
  console.log();
116
- console.log(` Install it with:`);
117
- console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('npm install -g @anthropic-ai/claude-code')}`);
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)('Learn more: https://docs.anthropic.com/en/docs/claude-code');
120
- process.exit(1);
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('Type your agent idea and Claude will build it for you.')}`);
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
- // Spawn claude with suzi context appended to system prompt
149
- const args = [
150
- '--append-system-prompt',
151
- buildSuziSystemPrompt(),
152
- ];
153
- const child = (0, child_process_1.spawn)('claude', args, {
154
- stdio: 'inherit',
155
- cwd: workingDir,
156
- env: { ...process.env },
157
- });
158
- child.on('error', (err) => {
159
- (0, ui_1.error)(`Failed to start Claude Code: ${err.message}`);
160
- process.exit(1);
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
- child.on('exit', (code) => {
269
+ console.log();
270
+ if (fs_1.default.existsSync(agentPath)) {
271
+ (0, ui_1.divider)();
163
272
  console.log();
164
- if (fs_1.default.existsSync(agentPath)) {
165
- (0, ui_1.divider)();
166
- console.log();
167
- console.log(chalk_1.default.bold(' Next steps:'));
168
- console.log();
169
- console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white(`suzi deploy ${path_1.default.relative(process.cwd(), agentPath)}`)}`);
170
- console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi agents activate <id>')}`);
171
- console.log(` ${ui_1.colors.primary('$')} ${chalk_1.default.white('suzi agents execute <id>')}`);
172
- console.log();
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":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
@@ -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;AASpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyJ5D"}
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"}
@@ -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
- (0, ui_1.error)(`Deploy failed: ${resp.data?.error || resp.data?.message || 'Unknown error'}`);
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
- (0, ui_1.error)(`Activation failed: ${activateResp.data?.error || activateResp.data?.message || 'Unknown error'}`);
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":"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"}
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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerInitCommand(program: Command): void;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -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"}