herdctl 0.0.1 → 0.0.2
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/bin/herdctl.js +9 -0
- package/dist/commands/__tests__/config.test.d.ts +2 -0
- package/dist/commands/__tests__/config.test.d.ts.map +1 -0
- package/dist/commands/__tests__/config.test.js +299 -0
- package/dist/commands/__tests__/config.test.js.map +1 -0
- package/dist/commands/__tests__/init.test.d.ts +2 -0
- package/dist/commands/__tests__/init.test.d.ts.map +1 -0
- package/dist/commands/__tests__/init.test.js +247 -0
- package/dist/commands/__tests__/init.test.js.map +1 -0
- package/dist/commands/__tests__/start.test.d.ts +2 -0
- package/dist/commands/__tests__/start.test.d.ts.map +1 -0
- package/dist/commands/__tests__/start.test.js +185 -0
- package/dist/commands/__tests__/start.test.js.map +1 -0
- package/dist/commands/__tests__/status.test.d.ts +2 -0
- package/dist/commands/__tests__/status.test.d.ts.map +1 -0
- package/dist/commands/__tests__/status.test.js +342 -0
- package/dist/commands/__tests__/status.test.js.map +1 -0
- package/dist/commands/__tests__/stop.test.d.ts +2 -0
- package/dist/commands/__tests__/stop.test.d.ts.map +1 -0
- package/dist/commands/__tests__/stop.test.js +229 -0
- package/dist/commands/__tests__/stop.test.js.map +1 -0
- package/dist/commands/__tests__/trigger.test.d.ts +2 -0
- package/dist/commands/__tests__/trigger.test.d.ts.map +1 -0
- package/dist/commands/__tests__/trigger.test.js +321 -0
- package/dist/commands/__tests__/trigger.test.js.map +1 -0
- package/dist/commands/cancel.d.ts +20 -0
- package/dist/commands/cancel.d.ts.map +1 -0
- package/dist/commands/cancel.js +263 -0
- package/dist/commands/cancel.js.map +1 -0
- package/dist/commands/config.d.ts +26 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +287 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/init.d.ts +16 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +305 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/job.d.ts +19 -0
- package/dist/commands/job.d.ts.map +1 -0
- package/dist/commands/job.js +460 -0
- package/dist/commands/job.js.map +1 -0
- package/dist/commands/jobs.d.ts +23 -0
- package/dist/commands/jobs.d.ts.map +1 -0
- package/dist/commands/jobs.js +328 -0
- package/dist/commands/jobs.js.map +1 -0
- package/dist/commands/logs.d.ts +25 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +360 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/start.d.ts +17 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +166 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +18 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +373 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/stop.d.ts +18 -0
- package/dist/commands/stop.d.ts.map +1 -0
- package/dist/commands/stop.js +161 -0
- package/dist/commands/stop.js.map +1 -0
- package/dist/commands/trigger.d.ts +23 -0
- package/dist/commands/trigger.d.ts.map +1 -0
- package/dist/commands/trigger.js +332 -0
- package/dist/commands/trigger.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +283 -0
- package/dist/index.js.map +1 -0
- package/package.json +46 -7
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* herdctl jobs - List jobs with filtering and pagination
|
|
3
|
+
*
|
|
4
|
+
* Commands:
|
|
5
|
+
* - herdctl jobs List recent jobs (last 20)
|
|
6
|
+
* - herdctl jobs --agent <name> Jobs for specific agent
|
|
7
|
+
* - herdctl jobs --status running Filter by status
|
|
8
|
+
* - herdctl jobs --limit 50 Custom limit
|
|
9
|
+
* - herdctl jobs --json JSON output
|
|
10
|
+
*/
|
|
11
|
+
import { FleetManager, ConfigNotFoundError, isFleetManagerError, isAgentNotFoundError, JobManager, } from "@herdctl/core";
|
|
12
|
+
/**
|
|
13
|
+
* Default state directory
|
|
14
|
+
*/
|
|
15
|
+
const DEFAULT_STATE_DIR = ".herdctl";
|
|
16
|
+
/**
|
|
17
|
+
* Default job limit
|
|
18
|
+
*/
|
|
19
|
+
const DEFAULT_LIMIT = 20;
|
|
20
|
+
/**
|
|
21
|
+
* Valid job statuses
|
|
22
|
+
*/
|
|
23
|
+
const VALID_STATUSES = ["pending", "running", "completed", "failed", "cancelled"];
|
|
24
|
+
/**
|
|
25
|
+
* Check if colors should be disabled
|
|
26
|
+
*/
|
|
27
|
+
function shouldUseColor() {
|
|
28
|
+
if (process.env.NO_COLOR !== undefined && process.env.NO_COLOR !== "") {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
if (process.env.FORCE_COLOR !== undefined && process.env.FORCE_COLOR !== "0") {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
return process.stdout.isTTY === true;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* ANSI color codes
|
|
38
|
+
*/
|
|
39
|
+
const colors = {
|
|
40
|
+
reset: "\x1b[0m",
|
|
41
|
+
bold: "\x1b[1m",
|
|
42
|
+
dim: "\x1b[2m",
|
|
43
|
+
green: "\x1b[32m",
|
|
44
|
+
yellow: "\x1b[33m",
|
|
45
|
+
red: "\x1b[31m",
|
|
46
|
+
cyan: "\x1b[36m",
|
|
47
|
+
gray: "\x1b[90m",
|
|
48
|
+
blue: "\x1b[34m",
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Get a colored string, respecting NO_COLOR
|
|
52
|
+
*/
|
|
53
|
+
function colorize(text, color) {
|
|
54
|
+
if (!shouldUseColor()) {
|
|
55
|
+
return text;
|
|
56
|
+
}
|
|
57
|
+
return `${colors[color]}${text}${colors.reset}`;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get status color based on job status
|
|
61
|
+
*/
|
|
62
|
+
function getStatusColor(status) {
|
|
63
|
+
switch (status) {
|
|
64
|
+
case "running":
|
|
65
|
+
return "green";
|
|
66
|
+
case "pending":
|
|
67
|
+
return "yellow";
|
|
68
|
+
case "completed":
|
|
69
|
+
return "cyan";
|
|
70
|
+
case "failed":
|
|
71
|
+
return "red";
|
|
72
|
+
case "cancelled":
|
|
73
|
+
return "gray";
|
|
74
|
+
default:
|
|
75
|
+
return "reset";
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Format job status with color
|
|
80
|
+
*/
|
|
81
|
+
function formatStatus(status) {
|
|
82
|
+
const color = getStatusColor(status);
|
|
83
|
+
return colorize(status, color);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Format duration in human-readable format
|
|
87
|
+
*/
|
|
88
|
+
function formatDuration(seconds) {
|
|
89
|
+
if (seconds === null || seconds === undefined) {
|
|
90
|
+
return "-";
|
|
91
|
+
}
|
|
92
|
+
const minutes = Math.floor(seconds / 60);
|
|
93
|
+
const hours = Math.floor(minutes / 60);
|
|
94
|
+
const days = Math.floor(hours / 24);
|
|
95
|
+
if (days > 0) {
|
|
96
|
+
return `${days}d ${hours % 24}h`;
|
|
97
|
+
}
|
|
98
|
+
else if (hours > 0) {
|
|
99
|
+
return `${hours}h ${minutes % 60}m`;
|
|
100
|
+
}
|
|
101
|
+
else if (minutes > 0) {
|
|
102
|
+
return `${minutes}m ${Math.floor(seconds % 60)}s`;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
return `${Math.floor(seconds)}s`;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Format timestamp to local timezone
|
|
110
|
+
*/
|
|
111
|
+
function formatTimestamp(isoTimestamp) {
|
|
112
|
+
const date = new Date(isoTimestamp);
|
|
113
|
+
return date.toLocaleString(undefined, {
|
|
114
|
+
month: "short",
|
|
115
|
+
day: "numeric",
|
|
116
|
+
hour: "2-digit",
|
|
117
|
+
minute: "2-digit",
|
|
118
|
+
hour12: false,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Format relative time (e.g., "5m ago")
|
|
123
|
+
*/
|
|
124
|
+
function formatRelativeTime(isoTimestamp) {
|
|
125
|
+
const now = Date.now();
|
|
126
|
+
const timestamp = new Date(isoTimestamp).getTime();
|
|
127
|
+
const diffMs = now - timestamp;
|
|
128
|
+
const absDiffMs = Math.abs(diffMs);
|
|
129
|
+
const seconds = Math.floor(absDiffMs / 1000);
|
|
130
|
+
const minutes = Math.floor(seconds / 60);
|
|
131
|
+
const hours = Math.floor(minutes / 60);
|
|
132
|
+
const days = Math.floor(hours / 24);
|
|
133
|
+
let timeStr;
|
|
134
|
+
if (days > 0) {
|
|
135
|
+
timeStr = `${days}d`;
|
|
136
|
+
}
|
|
137
|
+
else if (hours > 0) {
|
|
138
|
+
timeStr = `${hours}h`;
|
|
139
|
+
}
|
|
140
|
+
else if (minutes > 0) {
|
|
141
|
+
timeStr = `${minutes}m`;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
timeStr = `${seconds}s`;
|
|
145
|
+
}
|
|
146
|
+
return `${timeStr} ago`;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Format jobs table for console output
|
|
150
|
+
*/
|
|
151
|
+
function formatJobsTable(jobs, total, limit) {
|
|
152
|
+
const lines = [];
|
|
153
|
+
if (jobs.length === 0) {
|
|
154
|
+
lines.push("");
|
|
155
|
+
lines.push(colorize("No jobs found.", "dim"));
|
|
156
|
+
lines.push("");
|
|
157
|
+
return lines.join("\n");
|
|
158
|
+
}
|
|
159
|
+
// Header
|
|
160
|
+
lines.push("");
|
|
161
|
+
lines.push(colorize(`Jobs (${jobs.length}${total > jobs.length ? ` of ${total}` : ""})`, "bold"));
|
|
162
|
+
lines.push("═".repeat(90));
|
|
163
|
+
// Calculate column widths
|
|
164
|
+
const idWidth = Math.max(10, ...jobs.map(j => j.id.length)) + 2;
|
|
165
|
+
const agentWidth = Math.max(6, ...jobs.map(j => j.agent.length)) + 2;
|
|
166
|
+
const statusWidth = 12;
|
|
167
|
+
const durationWidth = 10;
|
|
168
|
+
const startedWidth = 16;
|
|
169
|
+
// Table header
|
|
170
|
+
lines.push(`${"JOB ID".padEnd(idWidth)}${"AGENT".padEnd(agentWidth)}${"STATUS".padEnd(statusWidth)}${"DURATION".padEnd(durationWidth)}${"STARTED".padEnd(startedWidth)}`);
|
|
171
|
+
lines.push(colorize("─".repeat(idWidth + agentWidth + statusWidth + durationWidth + startedWidth), "dim"));
|
|
172
|
+
// Table rows
|
|
173
|
+
for (const job of jobs) {
|
|
174
|
+
const statusStr = formatStatus(job.status);
|
|
175
|
+
const statusPad = shouldUseColor()
|
|
176
|
+
? statusWidth + colors[getStatusColor(job.status)].length + colors.reset.length
|
|
177
|
+
: statusWidth;
|
|
178
|
+
lines.push(`${colorize(job.id, "cyan").padEnd(idWidth + (shouldUseColor() ? colors.cyan.length + colors.reset.length : 0))}${job.agent.padEnd(agentWidth)}${statusStr.padEnd(statusPad)}${formatDuration(job.duration_seconds ?? null).padEnd(durationWidth)}${formatRelativeTime(job.started_at).padEnd(startedWidth)}`);
|
|
179
|
+
}
|
|
180
|
+
if (total > jobs.length) {
|
|
181
|
+
lines.push("");
|
|
182
|
+
lines.push(colorize(`Showing ${jobs.length} of ${total} jobs. Use --limit to see more.`, "dim"));
|
|
183
|
+
}
|
|
184
|
+
lines.push("");
|
|
185
|
+
return lines.join("\n");
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* List jobs (herdctl jobs)
|
|
189
|
+
*/
|
|
190
|
+
export async function jobsCommand(options) {
|
|
191
|
+
const stateDir = options.state || DEFAULT_STATE_DIR;
|
|
192
|
+
const isJsonOutput = options.json === true;
|
|
193
|
+
const limit = options.limit ?? DEFAULT_LIMIT;
|
|
194
|
+
// Validate status if provided
|
|
195
|
+
if (options.status && !VALID_STATUSES.includes(options.status)) {
|
|
196
|
+
if (isJsonOutput) {
|
|
197
|
+
console.log(JSON.stringify({
|
|
198
|
+
error: {
|
|
199
|
+
code: "INVALID_STATUS",
|
|
200
|
+
message: `Invalid status '${options.status}'. Valid statuses: ${VALID_STATUSES.join(", ")}`,
|
|
201
|
+
},
|
|
202
|
+
}));
|
|
203
|
+
process.exit(1);
|
|
204
|
+
}
|
|
205
|
+
console.error("");
|
|
206
|
+
console.error(`Error: Invalid status '${options.status}'.`);
|
|
207
|
+
console.error(`Valid statuses: ${VALID_STATUSES.join(", ")}`);
|
|
208
|
+
process.exit(1);
|
|
209
|
+
}
|
|
210
|
+
// Create FleetManager
|
|
211
|
+
const manager = new FleetManager({
|
|
212
|
+
configPath: options.config,
|
|
213
|
+
stateDir,
|
|
214
|
+
});
|
|
215
|
+
try {
|
|
216
|
+
// Initialize to load configuration
|
|
217
|
+
await manager.initialize();
|
|
218
|
+
// Create JobManager to query jobs
|
|
219
|
+
const { join } = await import("node:path");
|
|
220
|
+
const jobsDir = join(stateDir, "jobs");
|
|
221
|
+
const jobManager = new JobManager({
|
|
222
|
+
jobsDir,
|
|
223
|
+
});
|
|
224
|
+
// Build filter
|
|
225
|
+
const filter = {
|
|
226
|
+
limit,
|
|
227
|
+
};
|
|
228
|
+
if (options.agent) {
|
|
229
|
+
filter.agent = options.agent;
|
|
230
|
+
}
|
|
231
|
+
if (options.status) {
|
|
232
|
+
filter.status = options.status;
|
|
233
|
+
}
|
|
234
|
+
// Get jobs
|
|
235
|
+
const result = await jobManager.getJobs(filter);
|
|
236
|
+
if (isJsonOutput) {
|
|
237
|
+
const output = {
|
|
238
|
+
jobs: result.jobs.map((job) => ({
|
|
239
|
+
id: job.id,
|
|
240
|
+
agent: job.agent,
|
|
241
|
+
schedule: job.schedule,
|
|
242
|
+
status: job.status,
|
|
243
|
+
triggerType: job.trigger_type,
|
|
244
|
+
startedAt: job.started_at,
|
|
245
|
+
finishedAt: job.finished_at,
|
|
246
|
+
durationSeconds: job.duration_seconds,
|
|
247
|
+
exitReason: job.exit_reason,
|
|
248
|
+
summary: job.summary,
|
|
249
|
+
})),
|
|
250
|
+
total: result.total,
|
|
251
|
+
limit,
|
|
252
|
+
};
|
|
253
|
+
console.log(JSON.stringify(output, null, 2));
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
console.log(formatJobsTable(result.jobs, result.total, limit));
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
// Handle specific error types
|
|
261
|
+
if (error instanceof ConfigNotFoundError) {
|
|
262
|
+
if (isJsonOutput) {
|
|
263
|
+
console.log(JSON.stringify({
|
|
264
|
+
error: {
|
|
265
|
+
code: "CONFIG_NOT_FOUND",
|
|
266
|
+
message: "No configuration file found",
|
|
267
|
+
startDirectory: error.startDirectory,
|
|
268
|
+
},
|
|
269
|
+
}));
|
|
270
|
+
process.exit(1);
|
|
271
|
+
}
|
|
272
|
+
console.error("");
|
|
273
|
+
console.error("Error: No configuration file found.");
|
|
274
|
+
console.error(`Searched from: ${error.startDirectory}`);
|
|
275
|
+
console.error("");
|
|
276
|
+
console.error("Run 'herdctl init' to create a configuration file.");
|
|
277
|
+
process.exit(1);
|
|
278
|
+
}
|
|
279
|
+
if (isAgentNotFoundError(error)) {
|
|
280
|
+
if (isJsonOutput) {
|
|
281
|
+
console.log(JSON.stringify({
|
|
282
|
+
error: {
|
|
283
|
+
code: "AGENT_NOT_FOUND",
|
|
284
|
+
message: error.message,
|
|
285
|
+
agentName: options.agent,
|
|
286
|
+
},
|
|
287
|
+
}));
|
|
288
|
+
process.exit(1);
|
|
289
|
+
}
|
|
290
|
+
console.error("");
|
|
291
|
+
console.error(`Error: Agent '${options.agent}' not found.`);
|
|
292
|
+
console.error("");
|
|
293
|
+
console.error("Run 'herdctl status' to see all agents.");
|
|
294
|
+
process.exit(1);
|
|
295
|
+
}
|
|
296
|
+
if (isFleetManagerError(error)) {
|
|
297
|
+
if (isJsonOutput) {
|
|
298
|
+
console.log(JSON.stringify({
|
|
299
|
+
error: {
|
|
300
|
+
code: error.code,
|
|
301
|
+
message: error.message,
|
|
302
|
+
},
|
|
303
|
+
}));
|
|
304
|
+
process.exit(1);
|
|
305
|
+
}
|
|
306
|
+
console.error("");
|
|
307
|
+
console.error(`Error: ${error.message}`);
|
|
308
|
+
if (error.code) {
|
|
309
|
+
console.error(`Code: ${error.code}`);
|
|
310
|
+
}
|
|
311
|
+
process.exit(1);
|
|
312
|
+
}
|
|
313
|
+
// Generic error
|
|
314
|
+
if (isJsonOutput) {
|
|
315
|
+
console.log(JSON.stringify({
|
|
316
|
+
error: {
|
|
317
|
+
code: "UNKNOWN_ERROR",
|
|
318
|
+
message: error instanceof Error ? error.message : String(error),
|
|
319
|
+
},
|
|
320
|
+
}));
|
|
321
|
+
process.exit(1);
|
|
322
|
+
}
|
|
323
|
+
console.error("");
|
|
324
|
+
console.error("Error:", error instanceof Error ? error.message : String(error));
|
|
325
|
+
process.exit(1);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=jobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/commands/jobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* herdctl logs - Show agent logs
|
|
3
|
+
*
|
|
4
|
+
* Commands:
|
|
5
|
+
* - herdctl logs Recent logs from all agents
|
|
6
|
+
* - herdctl logs <agent> Logs from specific agent
|
|
7
|
+
* - herdctl logs -f Follow mode (stream new logs)
|
|
8
|
+
* - herdctl logs -f <agent> Follow specific agent
|
|
9
|
+
* - herdctl logs --job <id> Logs from specific job
|
|
10
|
+
* - herdctl logs -n 100 Last 100 lines (default: 50)
|
|
11
|
+
* - herdctl logs --json JSON output for each log entry
|
|
12
|
+
*/
|
|
13
|
+
export interface LogsOptions {
|
|
14
|
+
follow?: boolean;
|
|
15
|
+
job?: string;
|
|
16
|
+
lines?: string;
|
|
17
|
+
json?: boolean;
|
|
18
|
+
state?: string;
|
|
19
|
+
config?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Show logs (herdctl logs)
|
|
23
|
+
*/
|
|
24
|
+
export declare function logsCommand(agentName: string | undefined, options: LogsOptions): Promise<void>;
|
|
25
|
+
//# sourceMappingURL=logs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAYH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAgKD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA8Nf"}
|