@agentuity/cli 0.0.58 → 0.0.59

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 (143) hide show
  1. package/dist/cmd/build/bundler.d.ts +1 -1
  2. package/dist/cmd/cloud/agent/get.d.ts +2 -0
  3. package/dist/cmd/cloud/agent/get.d.ts.map +1 -0
  4. package/dist/cmd/cloud/agent/get.js +97 -0
  5. package/dist/cmd/cloud/agent/get.js.map +1 -0
  6. package/dist/cmd/cloud/agent/index.d.ts +2 -0
  7. package/dist/cmd/cloud/agent/index.d.ts.map +1 -0
  8. package/dist/cmd/cloud/agent/index.js +11 -0
  9. package/dist/cmd/cloud/agent/index.js.map +1 -0
  10. package/dist/cmd/cloud/agent/list.d.ts +2 -0
  11. package/dist/cmd/cloud/agent/list.d.ts.map +1 -0
  12. package/dist/cmd/cloud/agent/list.js +101 -0
  13. package/dist/cmd/cloud/agent/list.js.map +1 -0
  14. package/dist/cmd/cloud/agent/schema.d.ts +4 -0
  15. package/dist/cmd/cloud/agent/schema.d.ts.map +1 -0
  16. package/dist/cmd/cloud/agent/schema.js +22 -0
  17. package/dist/cmd/cloud/agent/schema.js.map +1 -0
  18. package/dist/cmd/cloud/apikey/create.d.ts +2 -0
  19. package/dist/cmd/cloud/apikey/create.d.ts.map +1 -0
  20. package/dist/cmd/cloud/apikey/create.js +100 -0
  21. package/dist/cmd/cloud/apikey/create.js.map +1 -0
  22. package/dist/cmd/cloud/apikey/delete.d.ts +2 -0
  23. package/dist/cmd/cloud/apikey/delete.d.ts.map +1 -0
  24. package/dist/cmd/cloud/apikey/delete.js +55 -0
  25. package/dist/cmd/cloud/apikey/delete.js.map +1 -0
  26. package/dist/cmd/cloud/apikey/get.d.ts +2 -0
  27. package/dist/cmd/cloud/apikey/get.d.ts.map +1 -0
  28. package/dist/cmd/cloud/apikey/get.js +57 -0
  29. package/dist/cmd/cloud/apikey/get.js.map +1 -0
  30. package/dist/cmd/cloud/apikey/index.d.ts.map +1 -0
  31. package/dist/cmd/cloud/apikey/index.js +13 -0
  32. package/dist/cmd/cloud/apikey/index.js.map +1 -0
  33. package/dist/cmd/cloud/apikey/list.d.ts +2 -0
  34. package/dist/cmd/cloud/apikey/list.d.ts.map +1 -0
  35. package/dist/cmd/cloud/apikey/list.js +53 -0
  36. package/dist/cmd/cloud/apikey/list.js.map +1 -0
  37. package/dist/cmd/cloud/deployment/index.d.ts.map +1 -1
  38. package/dist/cmd/cloud/deployment/index.js +2 -0
  39. package/dist/cmd/cloud/deployment/index.js.map +1 -1
  40. package/dist/cmd/cloud/deployment/logs.d.ts +2 -0
  41. package/dist/cmd/cloud/deployment/logs.d.ts.map +1 -0
  42. package/dist/cmd/cloud/deployment/logs.js +70 -0
  43. package/dist/cmd/cloud/deployment/logs.js.map +1 -0
  44. package/dist/cmd/cloud/index.d.ts.map +1 -1
  45. package/dist/cmd/cloud/index.js +8 -2
  46. package/dist/cmd/cloud/index.js.map +1 -1
  47. package/dist/cmd/cloud/session/logs.d.ts.map +1 -1
  48. package/dist/cmd/cloud/session/logs.js +12 -9
  49. package/dist/cmd/cloud/session/logs.js.map +1 -1
  50. package/dist/cmd/cloud/stream/delete.d.ts +3 -0
  51. package/dist/cmd/cloud/stream/delete.d.ts.map +1 -0
  52. package/dist/cmd/cloud/stream/delete.js +42 -0
  53. package/dist/cmd/cloud/stream/delete.js.map +1 -0
  54. package/dist/cmd/cloud/stream/get.d.ts +3 -0
  55. package/dist/cmd/cloud/stream/get.d.ts.map +1 -0
  56. package/dist/cmd/cloud/stream/get.js +110 -0
  57. package/dist/cmd/cloud/stream/get.js.map +1 -0
  58. package/dist/cmd/cloud/stream/index.d.ts +3 -0
  59. package/dist/cmd/cloud/stream/index.d.ts.map +1 -0
  60. package/dist/cmd/cloud/stream/index.js +13 -0
  61. package/dist/cmd/cloud/stream/index.js.map +1 -0
  62. package/dist/cmd/cloud/stream/list.d.ts +3 -0
  63. package/dist/cmd/cloud/stream/list.d.ts.map +1 -0
  64. package/dist/cmd/cloud/stream/list.js +131 -0
  65. package/dist/cmd/cloud/stream/list.js.map +1 -0
  66. package/dist/cmd/cloud/stream/util.d.ts +8 -0
  67. package/dist/cmd/cloud/stream/util.d.ts.map +1 -0
  68. package/dist/cmd/cloud/stream/util.js +19 -0
  69. package/dist/cmd/cloud/stream/util.js.map +1 -0
  70. package/dist/cmd/cloud/vector/delete.d.ts +3 -0
  71. package/dist/cmd/cloud/vector/delete.d.ts.map +1 -0
  72. package/dist/cmd/cloud/vector/delete.js +90 -0
  73. package/dist/cmd/cloud/vector/delete.js.map +1 -0
  74. package/dist/cmd/cloud/vector/get.d.ts +3 -0
  75. package/dist/cmd/cloud/vector/get.d.ts.map +1 -0
  76. package/dist/cmd/cloud/vector/get.js +80 -0
  77. package/dist/cmd/cloud/vector/get.js.map +1 -0
  78. package/dist/cmd/cloud/vector/index.d.ts +3 -0
  79. package/dist/cmd/cloud/vector/index.d.ts.map +1 -0
  80. package/dist/cmd/cloud/vector/index.js +14 -0
  81. package/dist/cmd/cloud/vector/index.js.map +1 -0
  82. package/dist/cmd/cloud/vector/search.d.ts +3 -0
  83. package/dist/cmd/cloud/vector/search.d.ts.map +1 -0
  84. package/dist/cmd/cloud/vector/search.js +136 -0
  85. package/dist/cmd/cloud/vector/search.js.map +1 -0
  86. package/dist/cmd/cloud/vector/util.d.ts +8 -0
  87. package/dist/cmd/cloud/vector/util.d.ts.map +1 -0
  88. package/dist/cmd/cloud/vector/util.js +18 -0
  89. package/dist/cmd/cloud/vector/util.js.map +1 -0
  90. package/dist/cmd/dev/agents.d.ts.map +1 -1
  91. package/dist/cmd/dev/agents.js +3 -2
  92. package/dist/cmd/dev/agents.js.map +1 -1
  93. package/dist/cmd/dev/index.js +3 -3
  94. package/dist/cmd/dev/index.js.map +1 -1
  95. package/dist/cmd/index.d.ts.map +1 -1
  96. package/dist/cmd/index.js +38 -42
  97. package/dist/cmd/index.js.map +1 -1
  98. package/dist/schema-parser.d.ts.map +1 -1
  99. package/dist/schema-parser.js +3 -1
  100. package/dist/schema-parser.js.map +1 -1
  101. package/dist/tui.d.ts +10 -1
  102. package/dist/tui.d.ts.map +1 -1
  103. package/dist/tui.js +58 -31
  104. package/dist/tui.js.map +1 -1
  105. package/dist/utils/date.d.ts +14 -0
  106. package/dist/utils/date.d.ts.map +1 -0
  107. package/dist/utils/date.js +51 -0
  108. package/dist/utils/date.js.map +1 -0
  109. package/package.json +6 -6
  110. package/src/cmd/cloud/agent/get.ts +105 -0
  111. package/src/cmd/cloud/agent/index.ts +11 -0
  112. package/src/cmd/cloud/agent/list.ts +107 -0
  113. package/src/cmd/cloud/agent/schema.ts +25 -0
  114. package/src/cmd/cloud/apikey/create.ts +114 -0
  115. package/src/cmd/cloud/apikey/delete.ts +66 -0
  116. package/src/cmd/cloud/apikey/get.ts +62 -0
  117. package/src/cmd/cloud/apikey/index.ts +13 -0
  118. package/src/cmd/cloud/apikey/list.ts +58 -0
  119. package/src/cmd/cloud/deployment/index.ts +2 -0
  120. package/src/cmd/cloud/deployment/logs.ts +75 -0
  121. package/src/cmd/cloud/index.ts +8 -2
  122. package/src/cmd/cloud/session/logs.ts +12 -11
  123. package/src/cmd/cloud/stream/delete.ts +49 -0
  124. package/src/cmd/cloud/stream/get.ts +118 -0
  125. package/src/cmd/cloud/stream/index.ts +14 -0
  126. package/src/cmd/cloud/stream/list.ts +146 -0
  127. package/src/cmd/cloud/stream/util.ts +32 -0
  128. package/src/cmd/cloud/vector/delete.ts +105 -0
  129. package/src/cmd/cloud/vector/get.ts +94 -0
  130. package/src/cmd/cloud/vector/index.ts +15 -0
  131. package/src/cmd/cloud/vector/search.ts +156 -0
  132. package/src/cmd/cloud/vector/util.ts +28 -0
  133. package/src/cmd/dev/agents.ts +4 -3
  134. package/src/cmd/dev/index.ts +3 -3
  135. package/src/cmd/index.ts +38 -42
  136. package/src/schema-parser.ts +3 -1
  137. package/src/tui.ts +69 -36
  138. package/src/utils/date.ts +57 -0
  139. package/dist/cmd/cloud/agents/index.d.ts.map +0 -1
  140. package/dist/cmd/cloud/agents/index.js +0 -133
  141. package/dist/cmd/cloud/agents/index.js.map +0 -1
  142. package/src/cmd/cloud/agents/index.ts +0 -148
  143. /package/dist/cmd/cloud/{agents → apikey}/index.d.ts +0 -0
package/src/cmd/index.ts CHANGED
@@ -1,53 +1,49 @@
1
- import { readdir } from 'node:fs/promises';
2
- import { join } from 'node:path';
3
1
  import type { CommandDefinition } from '../types';
4
2
 
3
+ // Use dynamic imports for bundler compatibility while maintaining lazy loading
5
4
  export async function discoverCommands(): Promise<CommandDefinition[]> {
6
- const cmdDir = join(import.meta.dir);
7
- const entries = await readdir(cmdDir, { withFileTypes: true });
5
+ const commandModules = await Promise.all([
6
+ import('./ai').then((m) => m.command),
7
+ import('./auth').then((m) => m.command),
8
+ import('./build').then((m) => m.command),
9
+ import('./cloud').then((m) => m.command),
10
+ import('./dev').then((m) => m.command),
11
+ import('./profile').then((m) => m.command),
12
+ import('./project').then((m) => m.command),
13
+ import('./repl').then((m) => m.command),
14
+ import('./version').then((m) => m.command),
15
+ ]);
8
16
 
9
17
  const commands: CommandDefinition[] = [];
10
18
 
11
- for (const entry of entries) {
12
- if (entry.isDirectory()) {
13
- try {
14
- const modulePath = join(cmdDir, entry.name, 'index.ts');
15
- const module = await import(modulePath);
19
+ for (const cmd of commandModules) {
20
+ commands.push(cmd);
16
21
 
17
- if (module.default || module.command) {
18
- const cmd = module.default || module.command;
19
- commands.push(cmd);
20
-
21
- // Auto-create hidden top-level aliases for subcommands with toplevel: true
22
- if (cmd.subcommands) {
23
- for (const subcommand of cmd.subcommands) {
24
- if (subcommand.toplevel) {
25
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
- const alias: any = {
27
- name: subcommand.name,
28
- description: subcommand.description,
29
- aliases: subcommand.aliases,
30
- hidden: true,
31
- requires: subcommand.requires,
32
- optional: subcommand.optional,
33
- schema: subcommand.schema,
34
- handler: subcommand.handler,
35
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
36
- idempotent: (subcommand as any).idempotent,
37
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
- prerequisites: (subcommand as any).prerequisites,
39
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
- tags: (subcommand as any).tags,
41
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
- examples: (subcommand as any).examples,
43
- };
44
- commands.push(alias as CommandDefinition);
45
- }
46
- }
47
- }
22
+ // Auto-create hidden top-level aliases for subcommands with toplevel: true
23
+ if (cmd.subcommands) {
24
+ for (const subcommand of cmd.subcommands) {
25
+ if (subcommand.toplevel) {
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ const alias: any = {
28
+ name: subcommand.name,
29
+ description: subcommand.description,
30
+ aliases: subcommand.aliases,
31
+ hidden: true,
32
+ requires: subcommand.requires,
33
+ optional: subcommand.optional,
34
+ schema: subcommand.schema,
35
+ handler: subcommand.handler,
36
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
37
+ idempotent: (subcommand as any).idempotent,
38
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
+ prerequisites: (subcommand as any).prerequisites,
40
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
+ tags: (subcommand as any).tags,
42
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
+ examples: (subcommand as any).examples,
44
+ };
45
+ commands.push(alias as CommandDefinition);
48
46
  }
49
- } catch (error) {
50
- console.warn(`Warning: Failed to load command from ${entry.name}:`, error);
51
47
  }
52
48
  }
53
49
  }
@@ -216,7 +216,9 @@ export function buildValidationInput(
216
216
  const parsed = parseOptionsSchema(schemas.options);
217
217
  for (const opt of parsed) {
218
218
  // Only include the option if it has a value - omitting undefined allows Zod to apply defaults
219
- const value = rawOptions[opt.name];
219
+ // Commander.js converts kebab-case to camelCase, so we need to check both
220
+ const camelCaseName = opt.name.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
221
+ const value = rawOptions[opt.name] ?? rawOptions[camelCaseName];
220
222
  if (value !== undefined) {
221
223
  result.options[opt.name] = value;
222
224
  }
package/src/tui.ts CHANGED
@@ -135,6 +135,24 @@ export function colorMuted(text: string): string {
135
135
  return `${color}${text}${reset}`;
136
136
  }
137
137
 
138
+ /**
139
+ * Get the appropriate color function for a log severity level
140
+ */
141
+ export function getSeverityColor(severity: string): (text: string) => string {
142
+ switch (severity.toUpperCase()) {
143
+ case 'ERROR':
144
+ return colorError;
145
+ case 'WARN':
146
+ return colorWarning;
147
+ case 'INFO':
148
+ return colorInfo;
149
+ case 'DEBUG':
150
+ return colorMuted;
151
+ default:
152
+ return (text: string) => text;
153
+ }
154
+ }
155
+
138
156
  /**
139
157
  * Print a success message with a green checkmark
140
158
  */
@@ -214,6 +232,25 @@ export function bold(text: string): string {
214
232
  return `${color}${text}${reset}`;
215
233
  }
216
234
 
235
+ /**
236
+ * Format text with white bold (or inverse for light mode)
237
+ * Used for table headings
238
+ */
239
+ export function heading(text: string): string {
240
+ const USE_COLORS = shouldUseColors();
241
+ if (!USE_COLORS) {
242
+ return text;
243
+ }
244
+
245
+ // For light mode: use inverse (black bg, white text)
246
+ // For dark mode: use white bold
247
+ const style = isDarkMode()
248
+ ? '\x1b[1;37m' // bold white
249
+ : '\x1b[7m'; // inverse
250
+ const reset = getColor('reset');
251
+ return `${style}${text}${reset}`;
252
+ }
253
+
217
254
  /**
218
255
  * Format text as a link (blue and underlined)
219
256
  */
@@ -1377,7 +1414,7 @@ export interface TableColumn {
1377
1414
  }
1378
1415
 
1379
1416
  /**
1380
- * Display data in a formatted table using console-table-printer
1417
+ * Display data in a formatted table using cli-table3
1381
1418
  *
1382
1419
  * Supports two modes:
1383
1420
  * 1. Simple mode: Pass data array and optional column names
@@ -1393,14 +1430,14 @@ export function table<T extends Record<string, unknown>>(
1393
1430
  columns?: (keyof T)[] | TableColumn[],
1394
1431
  options?: { render?: boolean }
1395
1432
  ): string | void {
1396
- // Dynamic import to avoid type errors (console-table-printer has poor typings)
1397
1433
  // eslint-disable-next-line @typescript-eslint/no-require-imports
1398
- const { Table } = require('console-table-printer') as {
1399
- Table: new (options?: { columns?: Array<{ name: string; alignment: string }> }) => {
1400
- addRow(row: Record<string, unknown>): void;
1401
- printTable(): void;
1402
- render(): string;
1403
- };
1434
+ const Table = require('cli-table3') as new (options?: {
1435
+ head?: string[];
1436
+ colAligns?: Array<'left' | 'right' | 'center'>;
1437
+ wordWrap?: boolean;
1438
+ }) => {
1439
+ push(row: unknown[]): void;
1440
+ toString(): string;
1404
1441
  };
1405
1442
 
1406
1443
  if (!data || data.length === 0) {
@@ -1410,52 +1447,48 @@ export function table<T extends Record<string, unknown>>(
1410
1447
  // Determine if we're using advanced column config or simple column names
1411
1448
  const isAdvancedMode = columns && columns.length > 0 && typeof columns[0] === 'object';
1412
1449
 
1413
- let tableConfig: { columns: Array<{ name: string; alignment: string }> };
1450
+ let columnNames: string[];
1451
+ let colAligns: Array<'left' | 'right' | 'center'>;
1414
1452
 
1415
1453
  if (isAdvancedMode) {
1416
1454
  // Advanced mode: use provided column configurations
1417
- tableConfig = {
1418
- columns: (columns as TableColumn[]).map((col) => ({
1419
- name: col.name,
1420
- alignment: col.alignment || 'left',
1421
- })),
1422
- };
1455
+ const columnConfigs = columns as TableColumn[];
1456
+ columnNames = columnConfigs.map((col) => col.name);
1457
+ colAligns = columnConfigs.map((col) => col.alignment || 'left');
1423
1458
  } else {
1424
1459
  // Simple mode: determine column names from data or columns parameter
1425
- const columnNames = columns
1460
+ columnNames = columns
1426
1461
  ? (columns as (keyof T)[]).map((c) => String(c))
1427
1462
  : data.length > 0
1428
1463
  ? Object.keys(data[0])
1429
1464
  : [];
1430
-
1431
- tableConfig = {
1432
- columns: columnNames.map((name) => ({
1433
- name,
1434
- alignment: 'left',
1435
- })),
1436
- };
1465
+ colAligns = columnNames.map(() => 'left' as const);
1437
1466
  }
1438
1467
 
1439
- const t = new Table(tableConfig);
1468
+ // Apply heading style to column names
1469
+ const headings = columnNames.map((name) => heading(name));
1470
+
1471
+ const t = new Table({
1472
+ head: headings,
1473
+ colAligns,
1474
+ wordWrap: true,
1475
+ });
1440
1476
 
1441
1477
  // Add rows to table
1442
1478
  for (const row of data) {
1443
- if (columns && !isAdvancedMode) {
1444
- // Simple mode with column filtering
1445
- const filtered: Record<string, unknown> = {};
1446
- for (const col of columns as (keyof T)[]) {
1447
- filtered[String(col)] = row[col];
1448
- }
1449
- t.addRow(filtered);
1450
- } else {
1451
- // Advanced mode or no column filtering
1452
- t.addRow(row);
1479
+ const rowData: unknown[] = [];
1480
+ for (const colName of columnNames) {
1481
+ const value = row[colName];
1482
+ rowData.push(value !== undefined && value !== null ? String(value) : '');
1453
1483
  }
1484
+ t.push(rowData);
1454
1485
  }
1455
1486
 
1487
+ const output = t.toString();
1488
+
1456
1489
  if (options?.render) {
1457
- return t.render();
1490
+ return output;
1458
1491
  } else {
1459
- t.printTable();
1492
+ console.log(output);
1460
1493
  }
1461
1494
  }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Parse duration string (e.g., "1h", "2d", "1y") or ISO date to ISO date string
3
+ *
4
+ * @param input - Duration string (1m, 1h, 2d, 1w, 1y) or ISO date (2025-12-31T23:59:59Z)
5
+ * @returns ISO date string
6
+ * @throws Error if input format is invalid
7
+ *
8
+ * @example
9
+ * parseExpiresAt('1h') // Returns ISO date 1 hour from now
10
+ * parseExpiresAt('30d') // Returns ISO date 30 days from now
11
+ * parseExpiresAt('2025-12-31T23:59:59Z') // Returns same ISO date
12
+ */
13
+ export function parseExpiresAt(input: string): string {
14
+ // Check if it's already an ISO date format
15
+ if (input.includes('T') || input.includes('-')) {
16
+ // Validate it's a valid date
17
+ const date = new Date(input);
18
+ if (isNaN(date.getTime())) {
19
+ throw new Error(`Invalid date format: ${input}`);
20
+ }
21
+ return date.toISOString();
22
+ }
23
+
24
+ // Parse duration format (e.g., "1h", "2d", "30d", "1y")
25
+ const durationRegex = /^(\d+)(m|h|d|w|y)$/;
26
+ const match = input.match(durationRegex);
27
+
28
+ if (!match) {
29
+ throw new Error(
30
+ `Invalid expires-at format: ${input}. Use ISO date (2025-12-31T23:59:59Z) or duration (1h, 2d, 1y)`
31
+ );
32
+ }
33
+
34
+ const [, amount, unit] = match;
35
+ const num = parseInt(amount, 10);
36
+ const now = new Date();
37
+
38
+ switch (unit) {
39
+ case 'm': // minutes
40
+ now.setMinutes(now.getMinutes() + num);
41
+ break;
42
+ case 'h': // hours
43
+ now.setHours(now.getHours() + num);
44
+ break;
45
+ case 'd': // days
46
+ now.setDate(now.getDate() + num);
47
+ break;
48
+ case 'w': // weeks
49
+ now.setDate(now.getDate() + num * 7);
50
+ break;
51
+ case 'y': // years
52
+ now.setFullYear(now.getFullYear() + num);
53
+ break;
54
+ }
55
+
56
+ return now.toISOString();
57
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cmd/cloud/agents/index.ts"],"names":[],"mappings":"AAmCA,eAAO,MAAM,OAAO,sCA+GlB,CAAC;AACH,eAAe,OAAO,CAAC"}
@@ -1,133 +0,0 @@
1
- import { z } from 'zod';
2
- import { createCommand } from '../../../types';
3
- import * as tui from '../../../tui';
4
- import { APIResponseSchema } from '@agentuity/server';
5
- import { Table } from 'console-table-printer';
6
- import { abbreviate, abbreviateDescription } from '../../../utils/format';
7
- const AgentSchema = z.object({
8
- id: z.string(),
9
- name: z.string(),
10
- description: z.string().nullable(),
11
- identifier: z.string(),
12
- version: z.string().nullable(),
13
- deploymentId: z.string().nullable(),
14
- devmode: z.boolean(),
15
- metadata: z.record(z.string(), z.unknown()).nullable(),
16
- createdAt: z.string(),
17
- updatedAt: z.string(),
18
- evals: z.array(z.object({
19
- id: z.string(),
20
- name: z.string(),
21
- description: z.string().nullable(),
22
- identifier: z.string().nullable(),
23
- deploymentId: z.string().nullable(),
24
- version: z.string().nullable(),
25
- devmode: z.boolean(),
26
- createdAt: z.string(),
27
- updatedAt: z.string(),
28
- })),
29
- });
30
- const AgentsResponseSchema = APIResponseSchema(z.array(AgentSchema));
31
- export const command = createCommand({
32
- name: 'agents',
33
- description: 'Show devmode agent results',
34
- requires: { auth: true, apiClient: true, project: true },
35
- schema: {
36
- options: z.object({
37
- deploymentId: z.string().optional().describe('Filter by deployment ID'),
38
- format: z
39
- .enum(['json', 'table'])
40
- .optional()
41
- .default('table')
42
- .describe('Output format: json or table'),
43
- verbose: z.boolean().optional().default(false).describe('Show full IDs and descriptions'),
44
- }),
45
- },
46
- async handler(ctx) {
47
- const { opts, apiClient, project } = ctx;
48
- const projectId = project.projectId;
49
- const format = opts?.format ?? 'table';
50
- const verbose = opts?.verbose ?? false;
51
- const deploymentId = opts?.deploymentId;
52
- const queryParams = deploymentId ? `?deploymentId=${deploymentId}` : '';
53
- const response = await tui.spinner('Fetching agents', async () => {
54
- return apiClient.request('GET', `/cli/agent/${projectId}${queryParams}`, AgentsResponseSchema);
55
- });
56
- if (!response.success) {
57
- tui.fatal(`Failed to fetch agents: ${response.message ?? 'Unknown error'}`);
58
- }
59
- const agents = response.data;
60
- if (format === 'json') {
61
- console.log(JSON.stringify(agents, null, 2));
62
- return;
63
- }
64
- tui.info(`Agents (${agents.length})`);
65
- if (agents.length === 0) {
66
- tui.muted('No agents found');
67
- }
68
- else {
69
- const table = new Table({
70
- columns: [
71
- { name: 'Name', alignment: 'left' },
72
- { name: 'ID', alignment: 'left' },
73
- { name: 'Identifier', alignment: 'left' },
74
- { name: 'Deployment', alignment: 'left' },
75
- { name: 'Version', alignment: 'left' },
76
- { name: 'Evals', alignment: 'center' },
77
- { name: 'Created', alignment: 'left' },
78
- ],
79
- });
80
- for (const agent of agents) {
81
- table.addRow({
82
- Name: agent.name,
83
- ID: verbose ? agent.id : abbreviate(agent.id, 20),
84
- Identifier: verbose ? agent.identifier : abbreviate(agent.identifier, 20),
85
- Deployment: abbreviate(agent.deploymentId, 20),
86
- Version: verbose
87
- ? (agent.version ?? 'N/A')
88
- : (abbreviate(agent.version, 20) ?? 'N/A'),
89
- Evals: agent.evals.length,
90
- Created: new Date(agent.createdAt).toLocaleString(),
91
- });
92
- }
93
- table.printTable();
94
- // Show evals for each agent
95
- for (const agent of agents) {
96
- if (agent.evals.length > 0) {
97
- console.log(`\n Evals for ${agent.name}:`);
98
- const evalTable = new Table({
99
- columns: [
100
- { name: 'Name', alignment: 'left' },
101
- { name: 'ID', alignment: 'left' },
102
- { name: 'Identifier', alignment: 'left' },
103
- { name: 'Deployment', alignment: 'left' },
104
- { name: 'Version', alignment: 'left' },
105
- { name: 'Description', alignment: 'left' },
106
- { name: 'Created', alignment: 'left' },
107
- ],
108
- });
109
- for (const evalItem of agent.evals) {
110
- evalTable.addRow({
111
- Name: evalItem.name,
112
- ID: verbose ? evalItem.id : abbreviate(evalItem.id, 20),
113
- Identifier: verbose
114
- ? (evalItem.identifier ?? 'N/A')
115
- : (abbreviate(evalItem.identifier, 20) ?? 'N/A'),
116
- Deployment: abbreviate(evalItem.deploymentId, 20),
117
- Version: verbose
118
- ? (evalItem.version ?? 'N/A')
119
- : (abbreviate(evalItem.version, 20) ?? 'N/A'),
120
- Description: verbose
121
- ? (evalItem.description ?? 'N/A')
122
- : abbreviateDescription(evalItem.description),
123
- Created: new Date(evalItem.createdAt).toLocaleString(),
124
- });
125
- }
126
- evalTable.printTable();
127
- }
128
- }
129
- }
130
- },
131
- });
132
- export default command;
133
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/agents/index.ts"],"names":[],"mappings":"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"}
@@ -1,148 +0,0 @@
1
- import { z } from 'zod';
2
- import { createCommand } from '../../../types';
3
- import * as tui from '../../../tui';
4
- import { APIResponseSchema } from '@agentuity/server';
5
- import { Table } from 'console-table-printer';
6
- import { abbreviate, abbreviateDescription } from '../../../utils/format';
7
-
8
- const AgentSchema = z.object({
9
- id: z.string(),
10
- name: z.string(),
11
- description: z.string().nullable(),
12
- identifier: z.string(),
13
- version: z.string().nullable(),
14
- deploymentId: z.string().nullable(),
15
- devmode: z.boolean(),
16
- metadata: z.record(z.string(), z.unknown()).nullable(),
17
- createdAt: z.string(),
18
- updatedAt: z.string(),
19
- evals: z.array(
20
- z.object({
21
- id: z.string(),
22
- name: z.string(),
23
- description: z.string().nullable(),
24
- identifier: z.string().nullable(),
25
- deploymentId: z.string().nullable(),
26
- version: z.string().nullable(),
27
- devmode: z.boolean(),
28
- createdAt: z.string(),
29
- updatedAt: z.string(),
30
- })
31
- ),
32
- });
33
-
34
- const AgentsResponseSchema = APIResponseSchema(z.array(AgentSchema));
35
-
36
- export const command = createCommand({
37
- name: 'agents',
38
- description: 'Show devmode agent results',
39
- requires: { auth: true, apiClient: true, project: true },
40
- schema: {
41
- options: z.object({
42
- deploymentId: z.string().optional().describe('Filter by deployment ID'),
43
- format: z
44
- .enum(['json', 'table'])
45
- .optional()
46
- .default('table')
47
- .describe('Output format: json or table'),
48
- verbose: z.boolean().optional().default(false).describe('Show full IDs and descriptions'),
49
- }),
50
- },
51
- async handler(ctx) {
52
- const { opts, apiClient, project } = ctx;
53
- const projectId = project.projectId;
54
- const format = opts?.format ?? 'table';
55
- const verbose = opts?.verbose ?? false;
56
-
57
- const deploymentId = opts?.deploymentId;
58
- const queryParams = deploymentId ? `?deploymentId=${deploymentId}` : '';
59
- const response = await tui.spinner('Fetching agents', async () => {
60
- return apiClient.request(
61
- 'GET',
62
- `/cli/agent/${projectId}${queryParams}`,
63
- AgentsResponseSchema
64
- );
65
- });
66
-
67
- if (!response.success) {
68
- tui.fatal(`Failed to fetch agents: ${response.message ?? 'Unknown error'}`);
69
- }
70
-
71
- const agents = response.data;
72
-
73
- if (format === 'json') {
74
- console.log(JSON.stringify(agents, null, 2));
75
- return;
76
- }
77
-
78
- tui.info(`Agents (${agents.length})`);
79
- if (agents.length === 0) {
80
- tui.muted('No agents found');
81
- } else {
82
- const table = new Table({
83
- columns: [
84
- { name: 'Name', alignment: 'left' },
85
- { name: 'ID', alignment: 'left' },
86
- { name: 'Identifier', alignment: 'left' },
87
- { name: 'Deployment', alignment: 'left' },
88
- { name: 'Version', alignment: 'left' },
89
- { name: 'Evals', alignment: 'center' },
90
- { name: 'Created', alignment: 'left' },
91
- ],
92
- });
93
-
94
- for (const agent of agents) {
95
- table.addRow({
96
- Name: agent.name,
97
- ID: verbose ? agent.id : abbreviate(agent.id, 20),
98
- Identifier: verbose ? agent.identifier : abbreviate(agent.identifier, 20),
99
- Deployment: abbreviate(agent.deploymentId, 20),
100
- Version: verbose
101
- ? (agent.version ?? 'N/A')
102
- : (abbreviate(agent.version, 20) ?? 'N/A'),
103
- Evals: agent.evals.length,
104
- Created: new Date(agent.createdAt).toLocaleString(),
105
- });
106
- }
107
- table.printTable();
108
-
109
- // Show evals for each agent
110
- for (const agent of agents) {
111
- if (agent.evals.length > 0) {
112
- console.log(`\n Evals for ${agent.name}:`);
113
- const evalTable = new Table({
114
- columns: [
115
- { name: 'Name', alignment: 'left' },
116
- { name: 'ID', alignment: 'left' },
117
- { name: 'Identifier', alignment: 'left' },
118
- { name: 'Deployment', alignment: 'left' },
119
- { name: 'Version', alignment: 'left' },
120
- { name: 'Description', alignment: 'left' },
121
- { name: 'Created', alignment: 'left' },
122
- ],
123
- });
124
-
125
- for (const evalItem of agent.evals) {
126
- evalTable.addRow({
127
- Name: evalItem.name,
128
- ID: verbose ? evalItem.id : abbreviate(evalItem.id, 20),
129
- Identifier: verbose
130
- ? (evalItem.identifier ?? 'N/A')
131
- : (abbreviate(evalItem.identifier, 20) ?? 'N/A'),
132
- Deployment: abbreviate(evalItem.deploymentId, 20),
133
- Version: verbose
134
- ? (evalItem.version ?? 'N/A')
135
- : (abbreviate(evalItem.version, 20) ?? 'N/A'),
136
- Description: verbose
137
- ? (evalItem.description ?? 'N/A')
138
- : abbreviateDescription(evalItem.description),
139
- Created: new Date(evalItem.createdAt).toLocaleString(),
140
- });
141
- }
142
- evalTable.printTable();
143
- }
144
- }
145
- }
146
- },
147
- });
148
- export default command;
File without changes