suzi-cli 0.1.7 → 0.1.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  <h1 align="center">Suzi CLI</h1>
2
2
 
3
3
  <p align="center">
4
- <img src="../../.github/assets/suzi-logo-repo.png" alt="Suzi" width="600" />
4
+ <img src="https://assets.sendai.fun/suzi/repo.png" alt="Suzi" width="600" />
5
5
  </p>
6
6
 
7
7
  <p align="center">
@@ -54,8 +54,8 @@ ${suzi_guide_1.SUZI_GUIDE_CONTENT}
54
54
  - Use ctx.actions.<protocol>.<action>() for all external calls
55
55
  - Always include at least one trigger
56
56
  - Use ctx.actions.suzi.log() for debugging
57
- - To discover available protocols and actions, run: suzi list-tools --verbose
58
- - To discover actions for a specific protocol, run: suzi list-tools --protocol <name>
57
+ - To discover available protocols and actions, run: suzi list-actions --verbose
58
+ - To discover actions for a specific protocol, run: suzi list-actions --protocol <name>
59
59
  </rules>
60
60
 
61
61
  <workflow>
@@ -88,7 +88,7 @@ When assisting in this directory:
88
88
  - Use \`ctx.actions.suzi.log()\` for debugging logs.
89
89
 
90
90
  Useful commands:
91
- - \`suzi list-tools --verbose\` to discover protocols/actions
91
+ - \`suzi list-actions --verbose\` to discover protocols/actions
92
92
  - \`suzi deploy ./agent.ts\` to deploy
93
93
  - \`suzi agents activate <id>\` to activate
94
94
  - \`suzi agents execute <id>\` to test
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerDebugCommand(program: Command): void;
3
+ //# sourceMappingURL=debug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/commands/debug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiW3D"}
@@ -0,0 +1,332 @@
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.registerDebugCommand = registerDebugCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const ora_1 = __importDefault(require("ora"));
9
+ const cli_table3_1 = __importDefault(require("cli-table3"));
10
+ const api_1 = require("../lib/api");
11
+ const ui_1 = require("../utils/ui");
12
+ function registerDebugCommand(program) {
13
+ const debug = program
14
+ .command('debug')
15
+ .description('Debug agent issues with Datadog logs and database records');
16
+ // ── suzi debug logs <agentId> ─────────────────────────────
17
+ debug
18
+ .command('logs <agentId>')
19
+ .description('View Datadog logs for an agent')
20
+ .option('--status <level>', 'Filter by log level: error, warn, info, debug')
21
+ .option('--time-range <range>', 'Lookback window (e.g. now-15m, now-1h, now-1d)', 'now-1h')
22
+ .option('--limit <n>', 'Max results (1-1000)', '25')
23
+ .option('--query <q>', 'Raw Datadog query to append')
24
+ .option('--cursor <cursor>', 'Pagination cursor from previous response')
25
+ .action(async (agentId, opts) => {
26
+ if (!(0, ui_1.requireAuth)())
27
+ return;
28
+ const spinner = (0, ora_1.default)('Fetching Datadog logs...').start();
29
+ const params = new URLSearchParams();
30
+ if (opts.status)
31
+ params.set('status', opts.status);
32
+ if (opts.timeRange)
33
+ params.set('timeRange', opts.timeRange);
34
+ if (opts.limit)
35
+ params.set('limit', opts.limit);
36
+ if (opts.query)
37
+ params.set('query', opts.query);
38
+ if (opts.cursor)
39
+ params.set('cursor', opts.cursor);
40
+ const resp = await (0, api_1.get)(`/api/debug/${agentId}/datadog/logs?${params}`);
41
+ if (!resp.ok) {
42
+ spinner.fail();
43
+ (0, ui_1.error)(resp.data?.message || 'Failed to fetch Datadog logs');
44
+ return;
45
+ }
46
+ spinner.stop();
47
+ const { query, count, logs } = resp.data;
48
+ (0, ui_1.header)(`Datadog Logs (${count})`);
49
+ console.log();
50
+ (0, ui_1.info)(`Query: ${query}`);
51
+ console.log();
52
+ if (logs.length === 0) {
53
+ (0, ui_1.info)('No logs found for the given filters.');
54
+ return;
55
+ }
56
+ for (const log of logs) {
57
+ const ts = log.timestamp ? new Date(log.timestamp).toLocaleString() : 'N/A';
58
+ const statusColor = log.status === 'error' ? chalk_1.default.red :
59
+ log.status === 'warn' ? chalk_1.default.yellow :
60
+ chalk_1.default.white;
61
+ console.log(` ${ui_1.colors.muted(ts)} ${statusColor(String(log.status || '').padEnd(6))} ${chalk_1.default.cyan(log.service || '')} ${log.message || ''}`);
62
+ if (log.attributes && Object.keys(log.attributes).length > 0) {
63
+ console.log(` ${ui_1.colors.muted(JSON.stringify(log.attributes))}`);
64
+ }
65
+ }
66
+ if (resp.data.pagination) {
67
+ printPagination(resp.data.pagination);
68
+ }
69
+ else {
70
+ console.log();
71
+ }
72
+ });
73
+ // ── suzi debug aggregate <agentId> ────────────────────────
74
+ debug
75
+ .command('aggregate <agentId>')
76
+ .description('Aggregate Datadog logs (counts, optionally grouped)')
77
+ .option('--time-range <range>', 'Lookback window (e.g. now-15m, now-1h, now-1d)', 'now-1h')
78
+ .option('--group-by <field>', 'Group by: status, host, service')
79
+ .option('--query <q>', 'Raw Datadog query to append')
80
+ .action(async (agentId, opts) => {
81
+ if (!(0, ui_1.requireAuth)())
82
+ return;
83
+ const spinner = (0, ora_1.default)('Aggregating Datadog logs...').start();
84
+ const params = new URLSearchParams();
85
+ if (opts.timeRange)
86
+ params.set('timeRange', opts.timeRange);
87
+ if (opts.groupBy)
88
+ params.set('groupBy', opts.groupBy);
89
+ if (opts.query)
90
+ params.set('query', opts.query);
91
+ const resp = await (0, api_1.get)(`/api/debug/${agentId}/datadog/aggregate?${params}`);
92
+ if (!resp.ok) {
93
+ spinner.fail();
94
+ (0, ui_1.error)(resp.data?.message || 'Failed to aggregate Datadog logs');
95
+ return;
96
+ }
97
+ spinner.stop();
98
+ const data = resp.data;
99
+ (0, ui_1.header)('Datadog Log Aggregation');
100
+ console.log();
101
+ (0, ui_1.info)(`Query: ${data.query}`);
102
+ console.log();
103
+ if (data.groups) {
104
+ const table = new cli_table3_1.default({
105
+ head: [chalk_1.default.gray(data.groupBy), chalk_1.default.gray('Count')],
106
+ style: { head: [], border: ['gray'] },
107
+ });
108
+ for (const group of data.groups) {
109
+ table.push([
110
+ String(group[data.groupBy] || 'N/A'),
111
+ String(group.count || 0),
112
+ ]);
113
+ }
114
+ console.log(table.toString());
115
+ }
116
+ else {
117
+ (0, ui_1.info)(`Total logs: ${data.total}`);
118
+ }
119
+ console.log();
120
+ });
121
+ // ── suzi debug db-logs <agentId> ──────────────────────────
122
+ debug
123
+ .command('db-logs <agentId>')
124
+ .description('View agent logs from database')
125
+ .option('--level <level>', 'Filter: info, warn, error, debug')
126
+ .option('--run-id <runId>', 'Filter by specific run')
127
+ .option('--limit <n>', 'Page size (1-100)', '50')
128
+ .option('--cursor <cursor>', 'Pagination cursor from previous response')
129
+ .action(async (agentId, opts) => {
130
+ if (!(0, ui_1.requireAuth)())
131
+ return;
132
+ const spinner = (0, ora_1.default)('Fetching agent logs...').start();
133
+ const params = new URLSearchParams();
134
+ if (opts.level)
135
+ params.set('level', opts.level);
136
+ if (opts.runId)
137
+ params.set('runId', opts.runId);
138
+ if (opts.limit)
139
+ params.set('limit', opts.limit);
140
+ if (opts.cursor)
141
+ params.set('cursor', opts.cursor);
142
+ const resp = await (0, api_1.get)(`/api/debug/${agentId}/db/logs?${params}`);
143
+ if (!resp.ok) {
144
+ spinner.fail();
145
+ (0, ui_1.error)(resp.data?.message || 'Failed to fetch agent logs');
146
+ return;
147
+ }
148
+ spinner.stop();
149
+ const { logs, pagination } = resp.data;
150
+ (0, ui_1.header)(`Agent Logs (${logs.length})`);
151
+ console.log();
152
+ if (logs.length === 0) {
153
+ (0, ui_1.info)('No logs found.');
154
+ return;
155
+ }
156
+ const table = new cli_table3_1.default({
157
+ head: [
158
+ chalk_1.default.gray('Time'),
159
+ chalk_1.default.gray('Level'),
160
+ chalk_1.default.gray('Run ID'),
161
+ chalk_1.default.gray('Message'),
162
+ ],
163
+ style: { head: [], border: ['gray'] },
164
+ colWidths: [22, 8, 20, 60],
165
+ wordWrap: true,
166
+ });
167
+ for (const log of logs) {
168
+ const ts = log.createdAt ? new Date(log.createdAt).toLocaleString() : 'N/A';
169
+ const levelColor = log.level === 'error' ? chalk_1.default.red :
170
+ log.level === 'warn' ? chalk_1.default.yellow :
171
+ log.level === 'debug' ? chalk_1.default.gray :
172
+ chalk_1.default.white;
173
+ table.push([
174
+ ui_1.colors.muted(ts),
175
+ levelColor(log.level || 'info'),
176
+ ui_1.colors.muted(log.runId ? log.runId.slice(0, 18) : 'N/A'),
177
+ log.log || '',
178
+ ]);
179
+ }
180
+ console.log(table.toString());
181
+ printPagination(pagination);
182
+ });
183
+ // ── suzi debug executions <agentId> ───────────────────────
184
+ debug
185
+ .command('executions <agentId>')
186
+ .description('View action executions from database')
187
+ .option('--status <status>', 'Filter: running, completed, failed')
188
+ .option('--run-id <runId>', 'Filter by specific run')
189
+ .option('--limit <n>', 'Page size (1-100)', '20')
190
+ .option('--cursor <cursor>', 'Pagination cursor')
191
+ .action(async (agentId, opts) => {
192
+ if (!(0, ui_1.requireAuth)())
193
+ return;
194
+ const spinner = (0, ora_1.default)('Fetching action executions...').start();
195
+ const params = new URLSearchParams();
196
+ if (opts.status)
197
+ params.set('status', opts.status);
198
+ if (opts.runId)
199
+ params.set('runId', opts.runId);
200
+ if (opts.limit)
201
+ params.set('limit', opts.limit);
202
+ if (opts.cursor)
203
+ params.set('cursor', opts.cursor);
204
+ const resp = await (0, api_1.get)(`/api/debug/${agentId}/db/executions?${params}`);
205
+ if (!resp.ok) {
206
+ spinner.fail();
207
+ (0, ui_1.error)(resp.data?.message || 'Failed to fetch executions');
208
+ return;
209
+ }
210
+ spinner.stop();
211
+ const { executions, pagination } = resp.data;
212
+ (0, ui_1.header)(`Action Executions (${executions.length})`);
213
+ console.log();
214
+ if (executions.length === 0) {
215
+ (0, ui_1.info)('No executions found.');
216
+ return;
217
+ }
218
+ const table = new cli_table3_1.default({
219
+ head: [
220
+ chalk_1.default.gray('Time'),
221
+ chalk_1.default.gray('Action'),
222
+ chalk_1.default.gray('Status'),
223
+ chalk_1.default.gray('Run ID'),
224
+ chalk_1.default.gray('Error'),
225
+ ],
226
+ style: { head: [], border: ['gray'] },
227
+ colWidths: [22, 24, 12, 20, 30],
228
+ wordWrap: true,
229
+ });
230
+ for (const exec of executions) {
231
+ const ts = exec.createdAt ? new Date(exec.createdAt).toLocaleString() : 'N/A';
232
+ table.push([
233
+ ui_1.colors.muted(ts),
234
+ chalk_1.default.cyan(exec.actionName || 'N/A'),
235
+ (0, ui_1.statusBadge)(exec.status),
236
+ ui_1.colors.muted(exec.runId ? exec.runId.slice(0, 18) : 'N/A'),
237
+ exec.error ? chalk_1.default.red(exec.error.slice(0, 80)) : ui_1.colors.muted('-'),
238
+ ]);
239
+ }
240
+ console.log(table.toString());
241
+ printPagination(pagination);
242
+ // Show input/output for failed executions
243
+ const failed = executions.filter((e) => e.status === 'failed');
244
+ if (failed.length > 0) {
245
+ console.log();
246
+ console.log(chalk_1.default.bold(' Failed Execution Details:'));
247
+ for (const exec of failed) {
248
+ console.log();
249
+ console.log(` ${chalk_1.default.red('Action:')} ${exec.actionName}`);
250
+ if (exec.input) {
251
+ console.log(` ${ui_1.colors.muted('Input:')} ${JSON.stringify(exec.input, null, 2).split('\n').join('\n ')}`);
252
+ }
253
+ if (exec.output) {
254
+ console.log(` ${ui_1.colors.muted('Output:')} ${JSON.stringify(exec.output, null, 2).split('\n').join('\n ')}`);
255
+ }
256
+ if (exec.error) {
257
+ console.log(` ${chalk_1.default.red('Error:')} ${exec.error}`);
258
+ }
259
+ }
260
+ }
261
+ });
262
+ // ── suzi debug runs <agentId> ─────────────────────────────
263
+ debug
264
+ .command('runs <agentId>')
265
+ .description('View agent runs from database')
266
+ .option('--status <status>', 'Filter: running, completed, failed')
267
+ .option('--limit <n>', 'Page size (1-100)', '20')
268
+ .option('--cursor <cursor>', 'Pagination cursor')
269
+ .action(async (agentId, opts) => {
270
+ if (!(0, ui_1.requireAuth)())
271
+ return;
272
+ const spinner = (0, ora_1.default)('Fetching agent runs...').start();
273
+ const params = new URLSearchParams();
274
+ if (opts.status)
275
+ params.set('status', opts.status);
276
+ if (opts.limit)
277
+ params.set('limit', opts.limit);
278
+ if (opts.cursor)
279
+ params.set('cursor', opts.cursor);
280
+ const resp = await (0, api_1.get)(`/api/debug/${agentId}/db/runs?${params}`);
281
+ if (!resp.ok) {
282
+ spinner.fail();
283
+ (0, ui_1.error)(resp.data?.message || 'Failed to fetch runs');
284
+ return;
285
+ }
286
+ spinner.stop();
287
+ const { runs, pagination } = resp.data;
288
+ (0, ui_1.header)(`Agent Runs (${runs.length})`);
289
+ console.log();
290
+ if (runs.length === 0) {
291
+ (0, ui_1.info)('No runs found.');
292
+ return;
293
+ }
294
+ const table = new cli_table3_1.default({
295
+ head: [
296
+ chalk_1.default.gray('Started'),
297
+ chalk_1.default.gray('Status'),
298
+ chalk_1.default.gray('Trigger'),
299
+ chalk_1.default.gray('Run ID'),
300
+ chalk_1.default.gray('Completed'),
301
+ chalk_1.default.gray('Error'),
302
+ ],
303
+ style: { head: [], border: ['gray'] },
304
+ colWidths: [22, 12, 18, 20, 22, 24],
305
+ wordWrap: true,
306
+ });
307
+ for (const run of runs) {
308
+ const started = run.startedAt ? new Date(run.startedAt).toLocaleString() : 'N/A';
309
+ const completed = run.completedAt ? new Date(run.completedAt).toLocaleString() : '-';
310
+ table.push([
311
+ ui_1.colors.muted(started),
312
+ (0, ui_1.statusBadge)(run.status),
313
+ chalk_1.default.cyan(run.triggerName || 'N/A'),
314
+ ui_1.colors.muted(run.runId ? run.runId.slice(0, 18) : 'N/A'),
315
+ ui_1.colors.muted(completed),
316
+ run.error ? chalk_1.default.red(run.error.slice(0, 40)) : ui_1.colors.muted('-'),
317
+ ]);
318
+ }
319
+ console.log(table.toString());
320
+ printPagination(pagination);
321
+ });
322
+ }
323
+ // --- Helper: print pagination info ---
324
+ function printPagination(pagination) {
325
+ if (pagination.hasNextPage && pagination.nextCursor) {
326
+ console.log();
327
+ (0, ui_1.divider)();
328
+ (0, ui_1.info)(`More results available. Use ${chalk_1.default.cyan(`--cursor ${pagination.nextCursor}`)} to see the next page.`);
329
+ }
330
+ console.log();
331
+ }
332
+ //# sourceMappingURL=debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/commands/debug.ts"],"names":[],"mappings":"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"}
@@ -44,7 +44,7 @@ suzi deploy --activate # Deploy and activate
44
44
  suzi agents activate <id> # Activate
45
45
  suzi agents execute <id> # Manual execution
46
46
  suzi agents logs <id> # View logs
47
- suzi list-tools --verbose # Browse available actions
47
+ suzi list-actions --verbose # Browse available actions
48
48
  suzi list-triggers # Browse available triggers
49
49
  \`\`\`
50
50
  `;
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerListActionsCommand(program: Command): void;
3
+ //# sourceMappingURL=list-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-actions.d.ts","sourceRoot":"","sources":["../../src/commands/list-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2GpC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwIjE"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.registerListToolsCommand = registerListToolsCommand;
6
+ exports.registerListActionsCommand = registerListActionsCommand;
7
7
  const chalk_1 = __importDefault(require("chalk"));
8
8
  const fs_1 = __importDefault(require("fs"));
9
9
  const path_1 = __importDefault(require("path"));
@@ -92,10 +92,10 @@ function groupByProtocol(actions) {
92
92
  }
93
93
  return groups;
94
94
  }
95
- function registerListToolsCommand(program) {
95
+ function registerListActionsCommand(program) {
96
96
  const cmd = program
97
- .command('list-tools')
98
- .alias('tools')
97
+ .command('list-actions')
98
+ .alias('actions')
99
99
  .description('List all available protocols and actions')
100
100
  .option('--protocol <name>', 'Filter by protocol name')
101
101
  .option('--verbose', 'Show all actions per protocol')
@@ -109,7 +109,7 @@ function registerListToolsCommand(program) {
109
109
  // --schema: show schema for a single action
110
110
  if (opts.schema) {
111
111
  if (!opts.protocol) {
112
- (0, ui_1.error)('--schema requires --protocol. Example: suzi list-tools --protocol polymarket --schema place_order');
112
+ (0, ui_1.error)('--schema requires --protocol. Example: suzi list-actions --protocol polymarket --schema place_order');
113
113
  return;
114
114
  }
115
115
  const protocolActions = grouped.get(opts.protocol);
@@ -129,11 +129,15 @@ function registerListToolsCommand(program) {
129
129
  }
130
130
  return;
131
131
  }
132
- console.log(JSON.stringify(match.parameters, null, 2));
132
+ const schema = {
133
+ parameters: match.parameters,
134
+ ...(match.response ? { response: match.response } : {}),
135
+ };
136
+ console.log(JSON.stringify(schema, null, 2));
133
137
  return;
134
138
  }
135
139
  // Default: list protocols and actions
136
- (0, ui_1.header)('Available Tools');
140
+ (0, ui_1.header)('Available Actions');
137
141
  console.log();
138
142
  const protocols = opts.protocol
139
143
  ? [[opts.protocol, grouped.get(opts.protocol)]]
@@ -143,50 +147,52 @@ function registerListToolsCommand(program) {
143
147
  (0, ui_1.info)(`Available: ${Array.from(grouped.keys()).join(', ')}`);
144
148
  return;
145
149
  }
150
+ const showDetails = opts.verbose || opts.protocol;
146
151
  for (const [protocol, protocolActions] of protocols) {
147
152
  if (!protocolActions)
148
153
  continue;
149
154
  const badge = chainBadge(protocolActions);
150
- console.log(` ${chalk_1.default.bold(protocol)} ${badge}`);
151
- const showDetails = opts.verbose || opts.protocol;
155
+ console.log(` ${ui_1.colors.highlight(protocol)} ${badge}`);
156
+ console.log();
152
157
  if (showDetails) {
153
158
  const readActions = protocolActions.filter((a) => isReadAction(a.name));
154
159
  const writeActions = protocolActions.filter((a) => !isReadAction(a.name));
155
160
  if (writeActions.length > 0) {
156
- console.log();
157
161
  console.log(` ${chalk_1.default.yellow('Write Actions:')}`);
158
162
  for (const action of writeActions) {
159
163
  const shortName = action.name.includes('.') ? action.name.split('.')[1] : action.name;
160
164
  console.log(` ${ui_1.colors.highlight(shortName)} ${ui_1.colors.muted(action.description)}`);
161
165
  }
166
+ console.log();
162
167
  }
163
168
  if (readActions.length > 0) {
164
- console.log();
165
169
  console.log(` ${chalk_1.default.cyan('Read Actions:')}`);
166
170
  for (const action of readActions) {
167
171
  const shortName = action.name.includes('.') ? action.name.split('.')[1] : action.name;
168
172
  console.log(` ${ui_1.colors.highlight(shortName)} ${ui_1.colors.muted(action.description)}`);
169
173
  }
174
+ console.log();
170
175
  }
171
176
  }
172
177
  else {
173
- const writeCount = protocolActions.filter((a) => !isReadAction(a.name)).length;
174
- const readCount = protocolActions.filter((a) => isReadAction(a.name)).length;
175
- console.log(` ${ui_1.colors.muted(`${writeCount} write`)} + ${ui_1.colors.muted(`${readCount} read`)} actions`);
178
+ for (const action of protocolActions) {
179
+ const shortName = action.name.includes('.') ? action.name.split('.')[1] : action.name;
180
+ console.log(` ${ui_1.colors.highlight(shortName)} ${ui_1.colors.muted(action.description)}`);
181
+ }
182
+ console.log();
176
183
  }
177
- console.log();
178
184
  }
179
185
  const totalActions = actions.length;
180
186
  (0, ui_1.divider)();
181
187
  (0, ui_1.info)(`${grouped.size} protocols, ${totalActions} total actions`);
182
188
  const age = cacheAge();
183
189
  if (age) {
184
- (0, ui_1.info)(`Cached ${age}. Run ${chalk_1.default.cyan('suzi list-tools reload')} to refresh.`);
190
+ (0, ui_1.info)(`Cached ${age}. Run ${chalk_1.default.cyan('suzi list-actions reload')} to refresh.`);
185
191
  }
186
192
  if (!opts.verbose && !opts.protocol) {
187
193
  (0, ui_1.info)('Use --verbose or --protocol <name> for details.');
188
194
  }
189
- (0, ui_1.info)(`Use ${chalk_1.default.cyan('suzi list-tools --protocol <name> --schema <action>')} to view schema.`);
195
+ (0, ui_1.info)(`Use ${chalk_1.default.cyan('suzi list-actions --protocol <name> --schema <action>')} to view schema.`);
190
196
  }
191
197
  catch (err) {
192
198
  (0, ui_1.error)(`Failed to fetch actions: ${err.message}`);
@@ -209,4 +215,4 @@ function registerListToolsCommand(program) {
209
215
  }
210
216
  });
211
217
  }
212
- //# sourceMappingURL=list-tools.js.map
218
+ //# sourceMappingURL=list-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-actions.js","sourceRoot":"","sources":["../../src/commands/list-actions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"list-triggers.d.ts","sourceRoot":"","sources":["../../src/commands/list-triggers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwCpC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8IlE"}
1
+ {"version":3,"file":"list-triggers.d.ts","sourceRoot":"","sources":["../../src/commands/list-triggers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsDpC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4JlE"}
@@ -30,6 +30,16 @@ function formatConfigFields(schema) {
30
30
  }
31
31
  return lines;
32
32
  }
33
+ function formatOutputFields(schema) {
34
+ const properties = (schema?.properties ?? {});
35
+ const lines = [];
36
+ for (const [name, prop] of Object.entries(properties)) {
37
+ const type = prop.type ?? 'unknown';
38
+ const desc = prop.description ? ` ${ui_1.colors.muted(prop.description)}` : '';
39
+ lines.push(` ${ui_1.colors.highlight(name)} ${ui_1.colors.muted(`(${type})`)}${desc}`);
40
+ }
41
+ return lines;
42
+ }
33
43
  function registerListTriggersCommand(program) {
34
44
  program
35
45
  .command('list-triggers')
@@ -92,7 +102,11 @@ function registerListTriggersCommand(program) {
92
102
  return;
93
103
  }
94
104
  spinner.succeed(`Schema for ${opts.protocol}.${opts.schema}`);
95
- console.log(JSON.stringify(match.configSchema, null, 2));
105
+ const schema = {
106
+ configSchema: match.configSchema,
107
+ ...(match.outputSchema ? { outputSchema: match.outputSchema } : {}),
108
+ };
109
+ console.log(JSON.stringify(schema, null, 2));
96
110
  return;
97
111
  }
98
112
  // Default: list protocols and triggers
@@ -120,6 +134,15 @@ function registerListTriggersCommand(program) {
120
134
  console.log(line);
121
135
  }
122
136
  }
137
+ if (trigger.outputSchema) {
138
+ const outputLines = formatOutputFields(trigger.outputSchema);
139
+ if (outputLines.length > 0) {
140
+ console.log(` ${chalk_1.default.cyan('Output:')}`);
141
+ for (const line of outputLines) {
142
+ console.log(line);
143
+ }
144
+ }
145
+ }
123
146
  if (trigger.example) {
124
147
  console.log(` ${chalk_1.default.cyan('Example:')}`);
125
148
  for (const line of trigger.example.split('\n')) {