devteam-orchestrator-cli 0.1.0

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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +309 -0
  3. package/dist/api-client.d.ts +199 -0
  4. package/dist/api-client.d.ts.map +1 -0
  5. package/dist/api-client.js +184 -0
  6. package/dist/api-client.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +252 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/commands/approve.d.ts +5 -0
  12. package/dist/commands/approve.d.ts.map +1 -0
  13. package/dist/commands/approve.js +190 -0
  14. package/dist/commands/approve.js.map +1 -0
  15. package/dist/commands/config-cmd.d.ts +7 -0
  16. package/dist/commands/config-cmd.d.ts.map +1 -0
  17. package/dist/commands/config-cmd.js +113 -0
  18. package/dist/commands/config-cmd.js.map +1 -0
  19. package/dist/commands/deploy.d.ts +7 -0
  20. package/dist/commands/deploy.d.ts.map +1 -0
  21. package/dist/commands/deploy.js +179 -0
  22. package/dist/commands/deploy.js.map +1 -0
  23. package/dist/commands/init.d.ts +4 -0
  24. package/dist/commands/init.d.ts.map +1 -0
  25. package/dist/commands/init.js +118 -0
  26. package/dist/commands/init.js.map +1 -0
  27. package/dist/commands/login.d.ts +6 -0
  28. package/dist/commands/login.d.ts.map +1 -0
  29. package/dist/commands/login.js +73 -0
  30. package/dist/commands/login.js.map +1 -0
  31. package/dist/commands/logs.d.ts +6 -0
  32. package/dist/commands/logs.d.ts.map +1 -0
  33. package/dist/commands/logs.js +173 -0
  34. package/dist/commands/logs.js.map +1 -0
  35. package/dist/commands/plan.d.ts +8 -0
  36. package/dist/commands/plan.d.ts.map +1 -0
  37. package/dist/commands/plan.js +122 -0
  38. package/dist/commands/plan.js.map +1 -0
  39. package/dist/commands/run.d.ts +10 -0
  40. package/dist/commands/run.d.ts.map +1 -0
  41. package/dist/commands/run.js +154 -0
  42. package/dist/commands/run.js.map +1 -0
  43. package/dist/commands/status.d.ts +5 -0
  44. package/dist/commands/status.d.ts.map +1 -0
  45. package/dist/commands/status.js +159 -0
  46. package/dist/commands/status.js.map +1 -0
  47. package/dist/commands/tasks.d.ts +7 -0
  48. package/dist/commands/tasks.d.ts.map +1 -0
  49. package/dist/commands/tasks.js +112 -0
  50. package/dist/commands/tasks.js.map +1 -0
  51. package/dist/commands/templates.d.ts +6 -0
  52. package/dist/commands/templates.d.ts.map +1 -0
  53. package/dist/commands/templates.js +82 -0
  54. package/dist/commands/templates.js.map +1 -0
  55. package/dist/commands/workers.d.ts +4 -0
  56. package/dist/commands/workers.d.ts.map +1 -0
  57. package/dist/commands/workers.js +98 -0
  58. package/dist/commands/workers.js.map +1 -0
  59. package/dist/config.d.ts +29 -0
  60. package/dist/config.d.ts.map +1 -0
  61. package/dist/config.js +92 -0
  62. package/dist/config.js.map +1 -0
  63. package/dist/utils.d.ts +27 -0
  64. package/dist/utils.d.ts.map +1 -0
  65. package/dist/utils.js +212 -0
  66. package/dist/utils.js.map +1 -0
  67. package/package.json +60 -0
@@ -0,0 +1,159 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { apiClient } from '../api-client.js';
4
+ import { box, keyValue, statusColor, formatUptime, progressBar, table, formatError, } from '../utils.js';
5
+ export async function statusCommand(options) {
6
+ if (options.watch) {
7
+ await watchStatus();
8
+ return;
9
+ }
10
+ await displayStatus(options.json);
11
+ }
12
+ async function displayStatus(json) {
13
+ const spinner = ora({
14
+ text: 'Fetching cluster status...',
15
+ color: 'cyan',
16
+ }).start();
17
+ try {
18
+ const response = await apiClient.getStatus();
19
+ if (!response.ok) {
20
+ spinner.fail(`Failed to fetch status: ${response.error}`);
21
+ process.exit(1);
22
+ }
23
+ const raw = response.data;
24
+ // Normalize: ensure arrays and objects have defaults
25
+ const status = {
26
+ version: raw.version || '0.1.0',
27
+ uptime: raw.uptime || 0,
28
+ workers: raw.workers || [],
29
+ queues: raw.queues || [],
30
+ tasks: raw.tasks || { completed: 0, running: 0, failed: 0, pending: 0, total: 0 },
31
+ };
32
+ spinner.stop();
33
+ if (json) {
34
+ console.log(JSON.stringify(status, null, 2));
35
+ return;
36
+ }
37
+ // Title box
38
+ console.log('');
39
+ console.log(box(`DevTeam Orchestrator v${status.version}`));
40
+ console.log('');
41
+ // Summary metrics
42
+ const onlineWorkers = status.workers.filter((w) => w.status === 'online' || w.status === 'active');
43
+ const workerNames = onlineWorkers.map((w) => w.name).join(', ');
44
+ const totalPending = status.queues.reduce((s, q) => s + q.pending, 0);
45
+ const totalRunning = status.queues.reduce((s, q) => s + q.running, 0);
46
+ const queueSummary = status.queues
47
+ .filter((q) => q.pending > 0 || q.running > 0)
48
+ .map((q) => `${q.name} (${q.pending + q.running} tasks)`)
49
+ .join(', ') || 'all idle';
50
+ console.log(keyValue([
51
+ [
52
+ 'Workers:',
53
+ `${chalk.green(String(onlineWorkers.length))} online` +
54
+ (workerNames ? ` (${workerNames})` : ''),
55
+ ],
56
+ ['Queues:', queueSummary],
57
+ [
58
+ 'Tasks:',
59
+ `${chalk.green(String(status.tasks.completed))} completed, ` +
60
+ `${chalk.cyan(String(status.tasks.running))} running, ` +
61
+ `${chalk.red(String(status.tasks.failed))} failed`,
62
+ ],
63
+ ['Uptime:', formatUptime(status.uptime)],
64
+ ]));
65
+ console.log('');
66
+ // Workers table
67
+ if (status.workers.length > 0) {
68
+ console.log(chalk.bold.underline(' Workers'));
69
+ console.log('');
70
+ const workerColumns = [
71
+ { header: 'Name', key: 'name', width: 18 },
72
+ { header: 'Status', key: 'status', width: 10 },
73
+ { header: 'CPU', key: 'cpu', width: 8, align: 'right' },
74
+ { header: 'Memory', key: 'memory', width: 14 },
75
+ { header: 'Queue', key: 'queue', width: 18 },
76
+ { header: 'Current Task', key: 'task', width: 14 },
77
+ { header: 'Last Seen', key: 'lastSeen', width: 10 },
78
+ ];
79
+ const workerRows = status.workers.map((w) => ({
80
+ name: w.name,
81
+ status: statusColor(w.status),
82
+ cpu: `${w.cpu}%`,
83
+ memory: `${formatMB(w.memory)}/${formatMB(w.memoryTotal)}`,
84
+ queue: w.taskQueue || w.queues?.join(', ') || '-',
85
+ task: w.currentTask || chalk.gray('idle'),
86
+ lastSeen: w.lastSeen ? timeSince(w.lastSeen) : '-',
87
+ }));
88
+ console.log(table(workerColumns, workerRows));
89
+ console.log('');
90
+ }
91
+ // Queues table
92
+ if (status.queues.length > 0) {
93
+ console.log(chalk.bold.underline(' Queues'));
94
+ console.log('');
95
+ const queueColumns = [
96
+ { header: 'Queue', key: 'name', width: 22 },
97
+ { header: 'Pending', key: 'pending', width: 10, align: 'right' },
98
+ { header: 'Running', key: 'running', width: 10, align: 'right' },
99
+ { header: 'Workers', key: 'workers', width: 10, align: 'right' },
100
+ { header: 'Load', key: 'load', width: 34 },
101
+ ];
102
+ const queueRows = status.queues.map((q) => ({
103
+ name: q.name,
104
+ pending: String(q.pending),
105
+ running: String(q.running),
106
+ workers: String(q.workers),
107
+ load: q.workers > 0 ? progressBar(q.running, q.workers) : chalk.gray('no workers'),
108
+ }));
109
+ console.log(table(queueColumns, queueRows));
110
+ console.log('');
111
+ }
112
+ // Task completion rate
113
+ const total = status.tasks.total || 1;
114
+ const successRate = Math.round((status.tasks.completed / total) * 100);
115
+ console.log(` ${chalk.gray('Success rate:')} ${progressBar(status.tasks.completed, total)} (${status.tasks.completed}/${total})`);
116
+ console.log('');
117
+ }
118
+ catch (err) {
119
+ spinner.fail('Failed to fetch cluster status');
120
+ console.error(formatError(err));
121
+ process.exit(1);
122
+ }
123
+ }
124
+ async function watchStatus() {
125
+ console.log(chalk.gray(' Watching cluster status (Ctrl+C to stop)...'));
126
+ console.log('');
127
+ const interval = setInterval(async () => {
128
+ process.stdout.write('\x1B[2J\x1B[0f'); // Clear screen
129
+ await displayStatus(false);
130
+ console.log(chalk.gray(` Last updated: ${new Date().toLocaleTimeString()}`));
131
+ }, 5000);
132
+ // Initial display
133
+ await displayStatus(false);
134
+ console.log(chalk.gray(` Last updated: ${new Date().toLocaleTimeString()}`));
135
+ process.on('SIGINT', () => {
136
+ clearInterval(interval);
137
+ console.log('');
138
+ process.exit(0);
139
+ });
140
+ // Keep alive
141
+ await new Promise(() => { });
142
+ }
143
+ function formatMB(bytes) {
144
+ if (bytes < 1024)
145
+ return `${bytes}MB`;
146
+ return `${(bytes / 1024).toFixed(1)}GB`;
147
+ }
148
+ function timeSince(dateStr) {
149
+ const diff = Date.now() - new Date(dateStr).getTime();
150
+ const seconds = Math.floor(diff / 1000);
151
+ if (seconds < 60)
152
+ return `${seconds}s`;
153
+ const minutes = Math.floor(seconds / 60);
154
+ if (minutes < 60)
155
+ return `${minutes}m`;
156
+ const hours = Math.floor(minutes / 60);
157
+ return `${hours}h`;
158
+ }
159
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function tasksCommand(options: {
2
+ status?: string;
3
+ queue?: string;
4
+ limit?: string;
5
+ json?: boolean;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"AAYA,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6GhB"}
@@ -0,0 +1,112 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { apiClient } from '../api-client.js';
4
+ import { table, statusColor, priorityColor, relativeTime, formatError, } from '../utils.js';
5
+ export async function tasksCommand(options) {
6
+ const spinner = ora({
7
+ text: 'Fetching tasks...',
8
+ color: 'cyan',
9
+ }).start();
10
+ try {
11
+ const response = await apiClient.listTasks({
12
+ status: options.status,
13
+ queue: options.queue,
14
+ limit: options.limit ? parseInt(options.limit, 10) : 20,
15
+ });
16
+ if (!response.ok) {
17
+ spinner.fail(`Failed to fetch tasks: ${response.error}`);
18
+ process.exit(1);
19
+ }
20
+ const tasks = response.data.tasks || [];
21
+ const total = response.data.total || tasks.length;
22
+ spinner.stop();
23
+ if (options.json) {
24
+ console.log(JSON.stringify(response.data, null, 2));
25
+ return;
26
+ }
27
+ if (tasks.length === 0) {
28
+ console.log('');
29
+ console.log(chalk.yellow(' No tasks found.'));
30
+ if (options.status) {
31
+ console.log(chalk.gray(` Try without --status filter to see all tasks.`));
32
+ }
33
+ console.log('');
34
+ return;
35
+ }
36
+ // Header
37
+ console.log('');
38
+ const filterParts = [];
39
+ if (options.status)
40
+ filterParts.push(`status: ${options.status}`);
41
+ if (options.queue)
42
+ filterParts.push(`queue: ${options.queue}`);
43
+ const filterStr = filterParts.length > 0
44
+ ? chalk.gray(` (${filterParts.join(', ')})`)
45
+ : '';
46
+ console.log(chalk.bold(' Recent Tasks') +
47
+ chalk.gray(` - showing ${tasks.length} of ${total}`) +
48
+ filterStr);
49
+ console.log('');
50
+ // Task table
51
+ const columns = [
52
+ { header: 'ID', key: 'id', width: 14 },
53
+ { header: 'Status', key: 'status', width: 12 },
54
+ { header: 'Priority', key: 'priority', width: 10 },
55
+ { header: 'Prompt', key: 'prompt', width: 36 },
56
+ { header: 'Queue', key: 'queue', width: 16 },
57
+ { header: 'Worker', key: 'worker', width: 14 },
58
+ { header: 'Created', key: 'created', width: 10 },
59
+ { header: 'Duration', key: 'duration', width: 10 },
60
+ ];
61
+ const rows = tasks.map((t) => ({
62
+ id: chalk.cyan(t.id.slice(0, 12)),
63
+ status: statusColor(t.status),
64
+ priority: priorityColor(t.priority || 'normal'),
65
+ prompt: truncate(t.prompt, 34),
66
+ queue: t.queue || '-',
67
+ worker: t.worker || chalk.gray('-'),
68
+ created: relativeTime(t.createdAt),
69
+ duration: t.duration ? formatDuration(t.duration) : chalk.gray('-'),
70
+ }));
71
+ console.log(table(columns, rows));
72
+ console.log('');
73
+ // Summary
74
+ const statusCounts = tasks.reduce((acc, t) => {
75
+ const s = t.status.toLowerCase();
76
+ acc[s] = (acc[s] || 0) + 1;
77
+ return acc;
78
+ }, {});
79
+ const summaryParts = Object.entries(statusCounts)
80
+ .map(([s, c]) => `${statusColor(s)}: ${c}`)
81
+ .join(' ');
82
+ console.log(` ${summaryParts}`);
83
+ console.log('');
84
+ console.log(chalk.gray(` View task logs: ${chalk.cyan('devteam logs <task-id>')}`));
85
+ console.log('');
86
+ }
87
+ catch (err) {
88
+ spinner.fail('Failed to fetch tasks');
89
+ console.error(formatError(err));
90
+ process.exit(1);
91
+ }
92
+ }
93
+ function truncate(str, maxLen) {
94
+ if (str.length <= maxLen)
95
+ return str;
96
+ return str.slice(0, maxLen - 3) + '...';
97
+ }
98
+ function formatDuration(ms) {
99
+ if (ms < 1000)
100
+ return `${ms}ms`;
101
+ const seconds = Math.floor(ms / 1000);
102
+ if (seconds < 60)
103
+ return `${seconds}s`;
104
+ const minutes = Math.floor(seconds / 60);
105
+ const secs = seconds % 60;
106
+ if (minutes < 60)
107
+ return `${minutes}m ${secs}s`;
108
+ const hours = Math.floor(minutes / 60);
109
+ const mins = minutes % 60;
110
+ return `${hours}h ${mins}m`;
111
+ }
112
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function templatesCommand(search?: string, options?: {
2
+ industry?: string;
3
+ category?: string;
4
+ json?: boolean;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/commands/templates.ts"],"names":[],"mappings":"AAKA,wBAAsB,gBAAgB,CACpC,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CA+Ff"}
@@ -0,0 +1,82 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { apiClient } from '../api-client.js';
4
+ import { table, stars, formatError } from '../utils.js';
5
+ export async function templatesCommand(search, options) {
6
+ const spinner = ora({
7
+ text: 'Fetching templates...',
8
+ color: 'cyan',
9
+ }).start();
10
+ try {
11
+ const response = await apiClient.listTemplates({
12
+ search: search,
13
+ industry: options?.industry,
14
+ category: options?.category,
15
+ });
16
+ if (!response.ok) {
17
+ spinner.fail(`Failed to fetch templates: ${response.error}`);
18
+ process.exit(1);
19
+ }
20
+ const templates = response.data.templates || [];
21
+ const total = response.data.total || templates.length;
22
+ spinner.stop();
23
+ if (options?.json) {
24
+ console.log(JSON.stringify(response.data, null, 2));
25
+ return;
26
+ }
27
+ if (templates.length === 0) {
28
+ console.log('');
29
+ console.log(chalk.yellow(' No templates found.'));
30
+ if (search) {
31
+ console.log(chalk.gray(` Try a different search term or remove filters.`));
32
+ }
33
+ console.log('');
34
+ return;
35
+ }
36
+ // Header
37
+ console.log('');
38
+ const filterParts = [];
39
+ if (search)
40
+ filterParts.push(`search: "${search}"`);
41
+ if (options?.industry)
42
+ filterParts.push(`industry: ${options.industry}`);
43
+ if (options?.category)
44
+ filterParts.push(`category: ${options.category}`);
45
+ const filterStr = filterParts.length > 0
46
+ ? chalk.gray(` (${filterParts.join(', ')})`)
47
+ : '';
48
+ console.log(chalk.bold(` Template Marketplace`) +
49
+ chalk.gray(` - ${total} template(s)`) +
50
+ filterStr);
51
+ console.log('');
52
+ // Table
53
+ const columns = [
54
+ { header: 'Template', key: 'name', width: 30 },
55
+ { header: 'Industry', key: 'industry', width: 12 },
56
+ { header: 'Category', key: 'category', width: 14 },
57
+ { header: 'Cost', key: 'cost', width: 10, align: 'right' },
58
+ { header: 'Rating', key: 'rating', width: 12 },
59
+ { header: 'Downloads', key: 'downloads', width: 10, align: 'right' },
60
+ ];
61
+ const rows = templates.map((t) => ({
62
+ name: t.name,
63
+ industry: t.industry,
64
+ category: t.category,
65
+ cost: t.cost,
66
+ rating: stars(t.rating),
67
+ downloads: String(t.downloads),
68
+ }));
69
+ console.log(table(columns, rows));
70
+ console.log('');
71
+ // Footer
72
+ console.log(chalk.gray(` Deploy a template: ${chalk.cyan('devteam deploy <template-id>')}`));
73
+ console.log(chalk.gray(` View details: ${chalk.cyan('devteam templates --industry <name>')}`));
74
+ console.log('');
75
+ }
76
+ catch (err) {
77
+ spinner.fail('Failed to fetch templates');
78
+ console.error(formatError(err));
79
+ process.exit(1);
80
+ }
81
+ }
82
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/commands/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function workersCommand(options: {
2
+ json?: boolean;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=workers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workers.d.ts","sourceRoot":"","sources":["../../src/commands/workers.ts"],"names":[],"mappings":"AAaA,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmHhB"}
@@ -0,0 +1,98 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { apiClient } from '../api-client.js';
4
+ import { table, statusColor, progressBar, keyValue, relativeTime, formatError, } from '../utils.js';
5
+ export async function workersCommand(options) {
6
+ const spinner = ora({
7
+ text: 'Fetching worker nodes...',
8
+ color: 'cyan',
9
+ }).start();
10
+ try {
11
+ const response = await apiClient.listWorkers();
12
+ if (!response.ok) {
13
+ spinner.fail(`Failed to fetch workers: ${response.error}`);
14
+ process.exit(1);
15
+ }
16
+ const workers = response.data.workers || [];
17
+ spinner.stop();
18
+ if (options.json) {
19
+ console.log(JSON.stringify(response.data, null, 2));
20
+ return;
21
+ }
22
+ if (workers.length === 0) {
23
+ console.log('');
24
+ console.log(chalk.yellow(' No worker nodes registered.'));
25
+ console.log('');
26
+ return;
27
+ }
28
+ // Header
29
+ console.log('');
30
+ const online = workers.filter((w) => w.status === 'online' || w.status === 'active').length;
31
+ const offline = workers.length - online;
32
+ console.log(chalk.bold(' Worker Nodes') +
33
+ chalk.gray(` - ${chalk.green(String(online))} online, ${offline > 0 ? chalk.red(String(offline)) : chalk.gray(String(offline))} offline`));
34
+ console.log('');
35
+ // Detailed view for each worker
36
+ for (const worker of workers) {
37
+ const statusStr = statusColor(worker.status);
38
+ const gpuStr = worker.gpu
39
+ ? chalk.magenta(` [${worker.gpu}]`)
40
+ : '';
41
+ console.log(` ${chalk.bold(worker.name)} ${statusStr}${gpuStr}`);
42
+ console.log(` ${chalk.gray('\u2500'.repeat(50))}`);
43
+ const memUsed = worker.memory;
44
+ const memTotal = worker.memoryTotal;
45
+ const memPct = memTotal > 0 ? memUsed / memTotal : 0;
46
+ const cpuPct = worker.cpu;
47
+ console.log(keyValue([
48
+ ['IP:', worker.ip || '-'],
49
+ ['CPU:', `${progressBar(cpuPct, 100, 20)} ${cpuPct}%`],
50
+ [
51
+ 'Memory:',
52
+ `${progressBar(Math.round(memPct * 100), 100, 20)} ${formatMB(memUsed)}/${formatMB(memTotal)}`,
53
+ ],
54
+ ['Queue:', worker.taskQueue || worker.queues?.join(', ') || '-'],
55
+ [
56
+ 'Current:',
57
+ worker.currentTask
58
+ ? chalk.cyan(worker.currentTask)
59
+ : chalk.gray('idle'),
60
+ ],
61
+ ['Last seen:', worker.lastSeen ? relativeTime(worker.lastSeen) : '-'],
62
+ ], 4));
63
+ console.log('');
64
+ }
65
+ // Summary table
66
+ console.log(chalk.bold.underline(' Summary'));
67
+ console.log('');
68
+ const columns = [
69
+ { header: 'Name', key: 'name', width: 18 },
70
+ { header: 'Status', key: 'status', width: 10 },
71
+ { header: 'CPU', key: 'cpu', width: 8, align: 'right' },
72
+ { header: 'Memory', key: 'memory', width: 18 },
73
+ { header: 'GPU', key: 'gpu', width: 14 },
74
+ { header: 'Task Queue', key: 'queue', width: 18 },
75
+ ];
76
+ const rows = workers.map((w) => ({
77
+ name: w.name,
78
+ status: statusColor(w.status),
79
+ cpu: `${w.cpu}%`,
80
+ memory: `${formatMB(w.memory)}/${formatMB(w.memoryTotal)}`,
81
+ gpu: w.gpu || chalk.gray('none'),
82
+ queue: w.taskQueue || w.queues?.join(', ') || '-',
83
+ }));
84
+ console.log(table(columns, rows));
85
+ console.log('');
86
+ }
87
+ catch (err) {
88
+ spinner.fail('Failed to fetch workers');
89
+ console.error(formatError(err));
90
+ process.exit(1);
91
+ }
92
+ }
93
+ function formatMB(bytes) {
94
+ if (bytes < 1024)
95
+ return `${bytes}MB`;
96
+ return `${(bytes / 1024).toFixed(1)}GB`;
97
+ }
98
+ //# sourceMappingURL=workers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workers.js","sourceRoot":"","sources":["../../src/commands/workers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import Conf from 'conf';
2
+ export interface DevTeamConfig {
3
+ apiUrl: string;
4
+ wsUrl: string;
5
+ apiKey: string;
6
+ defaultWorker: string;
7
+ outputFormat: 'table' | 'json' | 'minimal';
8
+ autoApprove: boolean;
9
+ projectName: string;
10
+ projectId: string;
11
+ }
12
+ export declare const config: Conf<DevTeamConfig>;
13
+ export interface ProjectConfig {
14
+ name: string;
15
+ id: string;
16
+ apiUrl: string;
17
+ wsUrl: string;
18
+ defaultQueue: string;
19
+ workers: string[];
20
+ templates: string[];
21
+ environment: Record<string, string>;
22
+ }
23
+ export declare function getProjectConfig(): ProjectConfig | null;
24
+ export declare function getEffectiveApiUrl(): string;
25
+ export declare function getEffectiveWsUrl(): string;
26
+ export declare function getApiKey(): string;
27
+ export declare function requireApiKey(): string;
28
+ export declare function getAllConfig(): Record<string, unknown>;
29
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3C,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAsCD,eAAO,MAAM,MAAM,qBAGjB,CAAC;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAID,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,IAAI,CAWvD;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAI3C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAQtC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYtD"}