@agentuity/cli 0.0.57 → 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 (149) hide show
  1. package/dist/cmd/build/bundler.d.ts +1 -1
  2. package/dist/cmd/build/bundler.js +8 -9
  3. package/dist/cmd/build/bundler.js.map +1 -1
  4. package/dist/cmd/cloud/agent/get.d.ts +2 -0
  5. package/dist/cmd/cloud/agent/get.d.ts.map +1 -0
  6. package/dist/cmd/cloud/agent/get.js +97 -0
  7. package/dist/cmd/cloud/agent/get.js.map +1 -0
  8. package/dist/cmd/cloud/agent/index.d.ts +2 -0
  9. package/dist/cmd/cloud/agent/index.d.ts.map +1 -0
  10. package/dist/cmd/cloud/agent/index.js +11 -0
  11. package/dist/cmd/cloud/agent/index.js.map +1 -0
  12. package/dist/cmd/cloud/agent/list.d.ts +2 -0
  13. package/dist/cmd/cloud/agent/list.d.ts.map +1 -0
  14. package/dist/cmd/cloud/agent/list.js +101 -0
  15. package/dist/cmd/cloud/agent/list.js.map +1 -0
  16. package/dist/cmd/cloud/agent/schema.d.ts +4 -0
  17. package/dist/cmd/cloud/agent/schema.d.ts.map +1 -0
  18. package/dist/cmd/cloud/agent/schema.js +22 -0
  19. package/dist/cmd/cloud/agent/schema.js.map +1 -0
  20. package/dist/cmd/cloud/apikey/create.d.ts +2 -0
  21. package/dist/cmd/cloud/apikey/create.d.ts.map +1 -0
  22. package/dist/cmd/cloud/apikey/create.js +100 -0
  23. package/dist/cmd/cloud/apikey/create.js.map +1 -0
  24. package/dist/cmd/cloud/apikey/delete.d.ts +2 -0
  25. package/dist/cmd/cloud/apikey/delete.d.ts.map +1 -0
  26. package/dist/cmd/cloud/apikey/delete.js +55 -0
  27. package/dist/cmd/cloud/apikey/delete.js.map +1 -0
  28. package/dist/cmd/cloud/apikey/get.d.ts +2 -0
  29. package/dist/cmd/cloud/apikey/get.d.ts.map +1 -0
  30. package/dist/cmd/cloud/apikey/get.js +57 -0
  31. package/dist/cmd/cloud/apikey/get.js.map +1 -0
  32. package/dist/cmd/cloud/apikey/index.d.ts.map +1 -0
  33. package/dist/cmd/cloud/apikey/index.js +13 -0
  34. package/dist/cmd/cloud/apikey/index.js.map +1 -0
  35. package/dist/cmd/cloud/apikey/list.d.ts +2 -0
  36. package/dist/cmd/cloud/apikey/list.d.ts.map +1 -0
  37. package/dist/cmd/cloud/apikey/list.js +53 -0
  38. package/dist/cmd/cloud/apikey/list.js.map +1 -0
  39. package/dist/cmd/cloud/deployment/index.d.ts.map +1 -1
  40. package/dist/cmd/cloud/deployment/index.js +2 -0
  41. package/dist/cmd/cloud/deployment/index.js.map +1 -1
  42. package/dist/cmd/cloud/deployment/logs.d.ts +2 -0
  43. package/dist/cmd/cloud/deployment/logs.d.ts.map +1 -0
  44. package/dist/cmd/cloud/deployment/logs.js +70 -0
  45. package/dist/cmd/cloud/deployment/logs.js.map +1 -0
  46. package/dist/cmd/cloud/index.d.ts.map +1 -1
  47. package/dist/cmd/cloud/index.js +8 -2
  48. package/dist/cmd/cloud/index.js.map +1 -1
  49. package/dist/cmd/cloud/session/get.js.map +1 -1
  50. package/dist/cmd/cloud/session/logs.d.ts.map +1 -1
  51. package/dist/cmd/cloud/session/logs.js +12 -9
  52. package/dist/cmd/cloud/session/logs.js.map +1 -1
  53. package/dist/cmd/cloud/stream/delete.d.ts +3 -0
  54. package/dist/cmd/cloud/stream/delete.d.ts.map +1 -0
  55. package/dist/cmd/cloud/stream/delete.js +42 -0
  56. package/dist/cmd/cloud/stream/delete.js.map +1 -0
  57. package/dist/cmd/cloud/stream/get.d.ts +3 -0
  58. package/dist/cmd/cloud/stream/get.d.ts.map +1 -0
  59. package/dist/cmd/cloud/stream/get.js +110 -0
  60. package/dist/cmd/cloud/stream/get.js.map +1 -0
  61. package/dist/cmd/cloud/stream/index.d.ts +3 -0
  62. package/dist/cmd/cloud/stream/index.d.ts.map +1 -0
  63. package/dist/cmd/cloud/stream/index.js +13 -0
  64. package/dist/cmd/cloud/stream/index.js.map +1 -0
  65. package/dist/cmd/cloud/stream/list.d.ts +3 -0
  66. package/dist/cmd/cloud/stream/list.d.ts.map +1 -0
  67. package/dist/cmd/cloud/stream/list.js +131 -0
  68. package/dist/cmd/cloud/stream/list.js.map +1 -0
  69. package/dist/cmd/cloud/stream/util.d.ts +8 -0
  70. package/dist/cmd/cloud/stream/util.d.ts.map +1 -0
  71. package/dist/cmd/cloud/stream/util.js +19 -0
  72. package/dist/cmd/cloud/stream/util.js.map +1 -0
  73. package/dist/cmd/cloud/vector/delete.d.ts +3 -0
  74. package/dist/cmd/cloud/vector/delete.d.ts.map +1 -0
  75. package/dist/cmd/cloud/vector/delete.js +90 -0
  76. package/dist/cmd/cloud/vector/delete.js.map +1 -0
  77. package/dist/cmd/cloud/vector/get.d.ts +3 -0
  78. package/dist/cmd/cloud/vector/get.d.ts.map +1 -0
  79. package/dist/cmd/cloud/vector/get.js +80 -0
  80. package/dist/cmd/cloud/vector/get.js.map +1 -0
  81. package/dist/cmd/cloud/vector/index.d.ts +3 -0
  82. package/dist/cmd/cloud/vector/index.d.ts.map +1 -0
  83. package/dist/cmd/cloud/vector/index.js +14 -0
  84. package/dist/cmd/cloud/vector/index.js.map +1 -0
  85. package/dist/cmd/cloud/vector/search.d.ts +3 -0
  86. package/dist/cmd/cloud/vector/search.d.ts.map +1 -0
  87. package/dist/cmd/cloud/vector/search.js +136 -0
  88. package/dist/cmd/cloud/vector/search.js.map +1 -0
  89. package/dist/cmd/cloud/vector/util.d.ts +8 -0
  90. package/dist/cmd/cloud/vector/util.d.ts.map +1 -0
  91. package/dist/cmd/cloud/vector/util.js +18 -0
  92. package/dist/cmd/cloud/vector/util.js.map +1 -0
  93. package/dist/cmd/dev/agents.d.ts.map +1 -1
  94. package/dist/cmd/dev/agents.js +3 -2
  95. package/dist/cmd/dev/agents.js.map +1 -1
  96. package/dist/cmd/dev/index.d.ts.map +1 -1
  97. package/dist/cmd/dev/index.js +103 -55
  98. package/dist/cmd/dev/index.js.map +1 -1
  99. package/dist/cmd/index.d.ts.map +1 -1
  100. package/dist/cmd/index.js +38 -42
  101. package/dist/cmd/index.js.map +1 -1
  102. package/dist/schema-parser.d.ts.map +1 -1
  103. package/dist/schema-parser.js +3 -1
  104. package/dist/schema-parser.js.map +1 -1
  105. package/dist/tui.d.ts +10 -1
  106. package/dist/tui.d.ts.map +1 -1
  107. package/dist/tui.js +67 -41
  108. package/dist/tui.js.map +1 -1
  109. package/dist/utils/date.d.ts +14 -0
  110. package/dist/utils/date.d.ts.map +1 -0
  111. package/dist/utils/date.js +51 -0
  112. package/dist/utils/date.js.map +1 -0
  113. package/package.json +6 -6
  114. package/src/cmd/build/bundler.ts +8 -8
  115. package/src/cmd/cloud/agent/get.ts +105 -0
  116. package/src/cmd/cloud/agent/index.ts +11 -0
  117. package/src/cmd/cloud/agent/list.ts +107 -0
  118. package/src/cmd/cloud/agent/schema.ts +25 -0
  119. package/src/cmd/cloud/apikey/create.ts +114 -0
  120. package/src/cmd/cloud/apikey/delete.ts +66 -0
  121. package/src/cmd/cloud/apikey/get.ts +62 -0
  122. package/src/cmd/cloud/apikey/index.ts +13 -0
  123. package/src/cmd/cloud/apikey/list.ts +58 -0
  124. package/src/cmd/cloud/deployment/index.ts +2 -0
  125. package/src/cmd/cloud/deployment/logs.ts +75 -0
  126. package/src/cmd/cloud/index.ts +8 -2
  127. package/src/cmd/cloud/session/get.ts +5 -5
  128. package/src/cmd/cloud/session/logs.ts +12 -11
  129. package/src/cmd/cloud/stream/delete.ts +49 -0
  130. package/src/cmd/cloud/stream/get.ts +118 -0
  131. package/src/cmd/cloud/stream/index.ts +14 -0
  132. package/src/cmd/cloud/stream/list.ts +146 -0
  133. package/src/cmd/cloud/stream/util.ts +32 -0
  134. package/src/cmd/cloud/vector/delete.ts +105 -0
  135. package/src/cmd/cloud/vector/get.ts +94 -0
  136. package/src/cmd/cloud/vector/index.ts +15 -0
  137. package/src/cmd/cloud/vector/search.ts +156 -0
  138. package/src/cmd/cloud/vector/util.ts +28 -0
  139. package/src/cmd/dev/agents.ts +4 -3
  140. package/src/cmd/dev/index.ts +114 -59
  141. package/src/cmd/index.ts +38 -42
  142. package/src/schema-parser.ts +3 -1
  143. package/src/tui.ts +80 -48
  144. package/src/utils/date.ts +57 -0
  145. package/dist/cmd/cloud/agents/index.d.ts.map +0 -1
  146. package/dist/cmd/cloud/agents/index.js +0 -133
  147. package/dist/cmd/cloud/agents/index.js.map +0 -1
  148. package/src/cmd/cloud/agents/index.ts +0 -148
  149. /package/dist/cmd/cloud/{agents → apikey}/index.d.ts +0 -0
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
  */
@@ -859,8 +896,8 @@ export async function spinner<T>(
859
896
  let frameIndex = 0;
860
897
  let currentProgress: number | undefined;
861
898
 
862
- // Hide cursor
863
- process.stderr.write('\x1B[?25l');
899
+ // Save cursor position and hide cursor
900
+ process.stderr.write('\x1B[s\x1B[?25l');
864
901
 
865
902
  // Start animation
866
903
  const interval = setInterval(() => {
@@ -893,9 +930,12 @@ export async function spinner<T>(
893
930
  ? await options.callback()
894
931
  : await options.callback;
895
932
 
896
- // Clear interval and line
933
+ // Stop animation first
897
934
  clearInterval(interval);
898
- process.stderr.write('\r\x1B[K');
935
+
936
+ // Restore cursor position, clear to end of screen, show cursor
937
+ // This removes spinner and any partial output that happened during animation
938
+ process.stderr.write('\x1B[u\x1B[J\x1B[?25h');
899
939
 
900
940
  // If clearOnSuccess is false, show success message
901
941
  if (!options.clearOnSuccess) {
@@ -904,22 +944,18 @@ export async function spinner<T>(
904
944
  console.error(`${successColor}${ICONS.success} ${message}${reset}`);
905
945
  }
906
946
 
907
- // Show cursor
908
- process.stderr.write('\x1B[?25h');
909
-
910
947
  return result;
911
948
  } catch (err) {
912
- // Clear interval and line
949
+ // Stop animation first
913
950
  clearInterval(interval);
914
- process.stderr.write('\r\x1B[K');
951
+
952
+ // Restore cursor position, clear to end of screen, show cursor
953
+ process.stderr.write('\x1B[u\x1B[J\x1B[?25h');
915
954
 
916
955
  // Show error
917
956
  const errorColor = getColor('error');
918
957
  console.error(`${errorColor}${ICONS.error} ${message}${reset}`);
919
958
 
920
- // Show cursor
921
- process.stderr.write('\x1B[?25h');
922
-
923
959
  throw err;
924
960
  }
925
961
  }
@@ -1378,7 +1414,7 @@ export interface TableColumn {
1378
1414
  }
1379
1415
 
1380
1416
  /**
1381
- * Display data in a formatted table using console-table-printer
1417
+ * Display data in a formatted table using cli-table3
1382
1418
  *
1383
1419
  * Supports two modes:
1384
1420
  * 1. Simple mode: Pass data array and optional column names
@@ -1394,14 +1430,14 @@ export function table<T extends Record<string, unknown>>(
1394
1430
  columns?: (keyof T)[] | TableColumn[],
1395
1431
  options?: { render?: boolean }
1396
1432
  ): string | void {
1397
- // Dynamic import to avoid type errors (console-table-printer has poor typings)
1398
1433
  // eslint-disable-next-line @typescript-eslint/no-require-imports
1399
- const { Table } = require('console-table-printer') as {
1400
- Table: new (options?: { columns?: Array<{ name: string; alignment: string }> }) => {
1401
- addRow(row: Record<string, unknown>): void;
1402
- printTable(): void;
1403
- render(): string;
1404
- };
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;
1405
1441
  };
1406
1442
 
1407
1443
  if (!data || data.length === 0) {
@@ -1411,52 +1447,48 @@ export function table<T extends Record<string, unknown>>(
1411
1447
  // Determine if we're using advanced column config or simple column names
1412
1448
  const isAdvancedMode = columns && columns.length > 0 && typeof columns[0] === 'object';
1413
1449
 
1414
- let tableConfig: { columns: Array<{ name: string; alignment: string }> };
1450
+ let columnNames: string[];
1451
+ let colAligns: Array<'left' | 'right' | 'center'>;
1415
1452
 
1416
1453
  if (isAdvancedMode) {
1417
1454
  // Advanced mode: use provided column configurations
1418
- tableConfig = {
1419
- columns: (columns as TableColumn[]).map((col) => ({
1420
- name: col.name,
1421
- alignment: col.alignment || 'left',
1422
- })),
1423
- };
1455
+ const columnConfigs = columns as TableColumn[];
1456
+ columnNames = columnConfigs.map((col) => col.name);
1457
+ colAligns = columnConfigs.map((col) => col.alignment || 'left');
1424
1458
  } else {
1425
1459
  // Simple mode: determine column names from data or columns parameter
1426
- const columnNames = columns
1460
+ columnNames = columns
1427
1461
  ? (columns as (keyof T)[]).map((c) => String(c))
1428
1462
  : data.length > 0
1429
1463
  ? Object.keys(data[0])
1430
1464
  : [];
1431
-
1432
- tableConfig = {
1433
- columns: columnNames.map((name) => ({
1434
- name,
1435
- alignment: 'left',
1436
- })),
1437
- };
1465
+ colAligns = columnNames.map(() => 'left' as const);
1438
1466
  }
1439
1467
 
1440
- 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
+ });
1441
1476
 
1442
1477
  // Add rows to table
1443
1478
  for (const row of data) {
1444
- if (columns && !isAdvancedMode) {
1445
- // Simple mode with column filtering
1446
- const filtered: Record<string, unknown> = {};
1447
- for (const col of columns as (keyof T)[]) {
1448
- filtered[String(col)] = row[col];
1449
- }
1450
- t.addRow(filtered);
1451
- } else {
1452
- // Advanced mode or no column filtering
1453
- 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) : '');
1454
1483
  }
1484
+ t.push(rowData);
1455
1485
  }
1456
1486
 
1487
+ const output = t.toString();
1488
+
1457
1489
  if (options?.render) {
1458
- return t.render();
1490
+ return output;
1459
1491
  } else {
1460
- t.printTable();
1492
+ console.log(output);
1461
1493
  }
1462
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