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.
- package/LICENSE +21 -0
- package/README.md +309 -0
- package/dist/api-client.d.ts +199 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +184 -0
- package/dist/api-client.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +252 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/approve.d.ts +5 -0
- package/dist/commands/approve.d.ts.map +1 -0
- package/dist/commands/approve.js +190 -0
- package/dist/commands/approve.js.map +1 -0
- package/dist/commands/config-cmd.d.ts +7 -0
- package/dist/commands/config-cmd.d.ts.map +1 -0
- package/dist/commands/config-cmd.js +113 -0
- package/dist/commands/config-cmd.js.map +1 -0
- package/dist/commands/deploy.d.ts +7 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +179 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +118 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/login.d.ts +6 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +73 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logs.d.ts +6 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +173 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/plan.d.ts +8 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +122 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/run.d.ts +10 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +154 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +159 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/tasks.d.ts +7 -0
- package/dist/commands/tasks.d.ts.map +1 -0
- package/dist/commands/tasks.js +112 -0
- package/dist/commands/tasks.js.map +1 -0
- package/dist/commands/templates.d.ts +6 -0
- package/dist/commands/templates.d.ts.map +1 -0
- package/dist/commands/templates.js +82 -0
- package/dist/commands/templates.js.map +1 -0
- package/dist/commands/workers.d.ts +4 -0
- package/dist/commands/workers.d.ts.map +1 -0
- package/dist/commands/workers.js +98 -0
- package/dist/commands/workers.js.map +1 -0
- package/dist/config.d.ts +29 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +92 -0
- package/dist/config.js.map +1 -0
- package/dist/utils.d.ts +27 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +212 -0
- package/dist/utils.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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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"}
|
package/dist/config.d.ts
ADDED
|
@@ -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"}
|