herdctl 0.3.2 → 0.4.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/README.md +7 -0
- package/dist/commands/sessions.d.ts +32 -0
- package/dist/commands/sessions.d.ts.map +1 -0
- package/dist/commands/sessions.js +347 -0
- package/dist/commands/sessions.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +52 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -33,6 +33,12 @@ herdctl status
|
|
|
33
33
|
|
|
34
34
|
# Manually trigger an agent
|
|
35
35
|
herdctl trigger my-agent
|
|
36
|
+
|
|
37
|
+
# List agent sessions
|
|
38
|
+
herdctl sessions
|
|
39
|
+
|
|
40
|
+
# Resume a session in Claude Code
|
|
41
|
+
herdctl sessions resume
|
|
36
42
|
```
|
|
37
43
|
|
|
38
44
|
## Configuration
|
|
@@ -75,6 +81,7 @@ permissions:
|
|
|
75
81
|
- **Work Sources** - GitHub Issues integration (Jira/Linear planned)
|
|
76
82
|
- **Execution Hooks** - Shell commands, webhooks, Discord notifications
|
|
77
83
|
- **Chat Integration** - Discord connector for conversational agents
|
|
84
|
+
- **Session Management** - List and resume Claude Code sessions from CLI
|
|
78
85
|
|
|
79
86
|
## Documentation
|
|
80
87
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* herdctl sessions - List and resume Claude Code sessions for agents
|
|
3
|
+
*
|
|
4
|
+
* Commands:
|
|
5
|
+
* - herdctl sessions List all sessions
|
|
6
|
+
* - herdctl sessions --agent <name> Sessions for specific agent
|
|
7
|
+
* - herdctl sessions --verbose Show full resume commands
|
|
8
|
+
* - herdctl sessions --json JSON output
|
|
9
|
+
* - herdctl sessions resume [session-id] Resume a session in Claude Code
|
|
10
|
+
*/
|
|
11
|
+
export interface SessionsOptions {
|
|
12
|
+
agent?: string;
|
|
13
|
+
verbose?: boolean;
|
|
14
|
+
json?: boolean;
|
|
15
|
+
state?: string;
|
|
16
|
+
config?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SessionsResumeOptions {
|
|
19
|
+
state?: string;
|
|
20
|
+
config?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* List sessions (herdctl sessions)
|
|
24
|
+
*/
|
|
25
|
+
export declare function sessionsCommand(options: SessionsOptions): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Resume a session in Claude Code (herdctl sessions resume)
|
|
28
|
+
*
|
|
29
|
+
* If no session ID is provided, resumes the most recently active session.
|
|
30
|
+
*/
|
|
31
|
+
export declare function sessionsResumeCommand(sessionId: string | undefined, options: SessionsResumeOptions): Promise<void>;
|
|
32
|
+
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAiMD;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA+E7E;AA0BD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAkGf"}
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* herdctl sessions - List and resume Claude Code sessions for agents
|
|
3
|
+
*
|
|
4
|
+
* Commands:
|
|
5
|
+
* - herdctl sessions List all sessions
|
|
6
|
+
* - herdctl sessions --agent <name> Sessions for specific agent
|
|
7
|
+
* - herdctl sessions --verbose Show full resume commands
|
|
8
|
+
* - herdctl sessions --json JSON output
|
|
9
|
+
* - herdctl sessions resume [session-id] Resume a session in Claude Code
|
|
10
|
+
*/
|
|
11
|
+
import { listSessions, loadConfig } from "@herdctl/core";
|
|
12
|
+
import { join } from "node:path";
|
|
13
|
+
import { spawn } from "node:child_process";
|
|
14
|
+
/**
|
|
15
|
+
* Default state directory
|
|
16
|
+
*/
|
|
17
|
+
const DEFAULT_STATE_DIR = ".herdctl";
|
|
18
|
+
/**
|
|
19
|
+
* Check if colors should be disabled
|
|
20
|
+
*/
|
|
21
|
+
function shouldUseColor() {
|
|
22
|
+
if (process.env.NO_COLOR !== undefined && process.env.NO_COLOR !== "") {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
if (process.env.FORCE_COLOR !== undefined && process.env.FORCE_COLOR !== "0") {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
return process.stdout.isTTY === true;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* ANSI color codes
|
|
32
|
+
*/
|
|
33
|
+
const colors = {
|
|
34
|
+
reset: "\x1b[0m",
|
|
35
|
+
bold: "\x1b[1m",
|
|
36
|
+
dim: "\x1b[2m",
|
|
37
|
+
green: "\x1b[32m",
|
|
38
|
+
yellow: "\x1b[33m",
|
|
39
|
+
red: "\x1b[31m",
|
|
40
|
+
cyan: "\x1b[36m",
|
|
41
|
+
gray: "\x1b[90m",
|
|
42
|
+
blue: "\x1b[34m",
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Get a colored string, respecting NO_COLOR
|
|
46
|
+
*/
|
|
47
|
+
function colorize(text, color) {
|
|
48
|
+
if (!shouldUseColor()) {
|
|
49
|
+
return text;
|
|
50
|
+
}
|
|
51
|
+
return `${colors[color]}${text}${colors.reset}`;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Format relative time (e.g., "5m ago")
|
|
55
|
+
*/
|
|
56
|
+
function formatRelativeTime(isoTimestamp) {
|
|
57
|
+
const now = Date.now();
|
|
58
|
+
const timestamp = new Date(isoTimestamp).getTime();
|
|
59
|
+
const diffMs = now - timestamp;
|
|
60
|
+
const absDiffMs = Math.abs(diffMs);
|
|
61
|
+
const seconds = Math.floor(absDiffMs / 1000);
|
|
62
|
+
const minutes = Math.floor(seconds / 60);
|
|
63
|
+
const hours = Math.floor(minutes / 60);
|
|
64
|
+
const days = Math.floor(hours / 24);
|
|
65
|
+
let timeStr;
|
|
66
|
+
if (days > 0) {
|
|
67
|
+
timeStr = `${days}d`;
|
|
68
|
+
}
|
|
69
|
+
else if (hours > 0) {
|
|
70
|
+
timeStr = `${hours}h`;
|
|
71
|
+
}
|
|
72
|
+
else if (minutes > 0) {
|
|
73
|
+
timeStr = `${minutes}m`;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
timeStr = `${seconds}s`;
|
|
77
|
+
}
|
|
78
|
+
return `${timeStr} ago`;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Format sessions table for console output
|
|
82
|
+
*/
|
|
83
|
+
function formatSessionsTable(sessions, agentWorkspaces) {
|
|
84
|
+
const lines = [];
|
|
85
|
+
if (sessions.length === 0) {
|
|
86
|
+
lines.push("");
|
|
87
|
+
lines.push(colorize("No sessions found.", "dim"));
|
|
88
|
+
lines.push("");
|
|
89
|
+
lines.push(colorize("Sessions are created when agents run with session persistence enabled.", "dim"));
|
|
90
|
+
lines.push("");
|
|
91
|
+
return lines.join("\n");
|
|
92
|
+
}
|
|
93
|
+
// Header
|
|
94
|
+
lines.push("");
|
|
95
|
+
lines.push(colorize(`Sessions (${sessions.length})`, "bold"));
|
|
96
|
+
lines.push("═".repeat(90));
|
|
97
|
+
// Calculate column widths
|
|
98
|
+
const agentWidth = Math.max(8, ...sessions.map((s) => s.agent_name.length)) + 2;
|
|
99
|
+
const sessionIdWidth = 38; // UUIDs are 36 chars + padding
|
|
100
|
+
const lastActiveWidth = 14;
|
|
101
|
+
const jobsWidth = 6;
|
|
102
|
+
// Table header
|
|
103
|
+
lines.push(`${"AGENT".padEnd(agentWidth)}${"SESSION ID".padEnd(sessionIdWidth)}${"LAST ACTIVE".padEnd(lastActiveWidth)}${"JOBS".padEnd(jobsWidth)}`);
|
|
104
|
+
lines.push(colorize("─".repeat(agentWidth + sessionIdWidth + lastActiveWidth + jobsWidth), "dim"));
|
|
105
|
+
// Table rows
|
|
106
|
+
for (const session of sessions) {
|
|
107
|
+
const agentPad = shouldUseColor()
|
|
108
|
+
? agentWidth + colors.cyan.length + colors.reset.length
|
|
109
|
+
: agentWidth;
|
|
110
|
+
lines.push(`${colorize(session.agent_name, "cyan").padEnd(agentPad)}${session.session_id.padEnd(sessionIdWidth)}${formatRelativeTime(session.last_used_at).padEnd(lastActiveWidth)}${String(session.job_count).padEnd(jobsWidth)}`);
|
|
111
|
+
}
|
|
112
|
+
// Footer with resume instructions
|
|
113
|
+
lines.push("");
|
|
114
|
+
lines.push(colorize("Resume a session in Claude Code:", "dim"));
|
|
115
|
+
// If all agents have the same workspace (or no workspace), show generic command
|
|
116
|
+
const workspaces = new Set(agentWorkspaces.values());
|
|
117
|
+
if (workspaces.size === 1 && workspaces.has(undefined)) {
|
|
118
|
+
lines.push(colorize(" claude --resume <session-id>", "dim"));
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
lines.push(colorize(" cd <workspace> && claude --resume <session-id>", "dim"));
|
|
122
|
+
lines.push("");
|
|
123
|
+
lines.push(colorize("Use --verbose to see full resume commands for each agent.", "dim"));
|
|
124
|
+
}
|
|
125
|
+
lines.push("");
|
|
126
|
+
return lines.join("\n");
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Format sessions in verbose mode with full resume commands
|
|
130
|
+
*/
|
|
131
|
+
function formatSessionsVerbose(sessions, agentWorkspaces) {
|
|
132
|
+
const lines = [];
|
|
133
|
+
if (sessions.length === 0) {
|
|
134
|
+
lines.push("");
|
|
135
|
+
lines.push(colorize("No sessions found.", "dim"));
|
|
136
|
+
lines.push("");
|
|
137
|
+
return lines.join("\n");
|
|
138
|
+
}
|
|
139
|
+
lines.push("");
|
|
140
|
+
lines.push(colorize(`Sessions (${sessions.length})`, "bold"));
|
|
141
|
+
lines.push("═".repeat(90));
|
|
142
|
+
for (const session of sessions) {
|
|
143
|
+
lines.push("");
|
|
144
|
+
lines.push(`${colorize(session.agent_name, "cyan")} ${colorize(`(${session.job_count} jobs, ${formatRelativeTime(session.last_used_at)})`, "dim")}`);
|
|
145
|
+
lines.push(` Session: ${session.session_id}`);
|
|
146
|
+
const workspace = agentWorkspaces.get(session.agent_name);
|
|
147
|
+
if (workspace) {
|
|
148
|
+
lines.push(` Resume: ${colorize(`cd ${workspace} && claude --resume ${session.session_id}`, "green")}`);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
lines.push(` Resume: ${colorize(`claude --resume ${session.session_id}`, "green")}`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
lines.push("");
|
|
155
|
+
return lines.join("\n");
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* List sessions (herdctl sessions)
|
|
159
|
+
*/
|
|
160
|
+
export async function sessionsCommand(options) {
|
|
161
|
+
const stateDir = options.state || DEFAULT_STATE_DIR;
|
|
162
|
+
const isJsonOutput = options.json === true;
|
|
163
|
+
const isVerbose = options.verbose === true;
|
|
164
|
+
try {
|
|
165
|
+
const sessionsDir = join(stateDir, "sessions");
|
|
166
|
+
// Get all sessions
|
|
167
|
+
let sessions = await listSessions(sessionsDir);
|
|
168
|
+
// Filter by agent if specified
|
|
169
|
+
if (options.agent) {
|
|
170
|
+
sessions = sessions.filter((s) => s.agent_name === options.agent);
|
|
171
|
+
}
|
|
172
|
+
// Try to load config to get workspace paths for each agent
|
|
173
|
+
const agentWorkspaces = new Map();
|
|
174
|
+
try {
|
|
175
|
+
const config = await loadConfig(options.config || ".");
|
|
176
|
+
for (const agent of config.agents) {
|
|
177
|
+
// workspace can be a string or an object with a root property
|
|
178
|
+
const workspace = agent.workspace;
|
|
179
|
+
if (typeof workspace === "string") {
|
|
180
|
+
agentWorkspaces.set(agent.name, workspace);
|
|
181
|
+
}
|
|
182
|
+
else if (workspace && typeof workspace === "object" && "root" in workspace) {
|
|
183
|
+
agentWorkspaces.set(agent.name, workspace.root);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
agentWorkspaces.set(agent.name, undefined);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
// Config might not be available - that's okay
|
|
192
|
+
}
|
|
193
|
+
if (isJsonOutput) {
|
|
194
|
+
const output = {
|
|
195
|
+
sessions: sessions.map((session) => {
|
|
196
|
+
const workspace = agentWorkspaces.get(session.agent_name);
|
|
197
|
+
const resumeCommand = workspace
|
|
198
|
+
? `cd ${workspace} && claude --resume ${session.session_id}`
|
|
199
|
+
: `claude --resume ${session.session_id}`;
|
|
200
|
+
return {
|
|
201
|
+
agentName: session.agent_name,
|
|
202
|
+
sessionId: session.session_id,
|
|
203
|
+
createdAt: session.created_at,
|
|
204
|
+
lastUsedAt: session.last_used_at,
|
|
205
|
+
jobCount: session.job_count,
|
|
206
|
+
mode: session.mode,
|
|
207
|
+
workspace,
|
|
208
|
+
resumeCommand,
|
|
209
|
+
};
|
|
210
|
+
}),
|
|
211
|
+
total: sessions.length,
|
|
212
|
+
};
|
|
213
|
+
console.log(JSON.stringify(output, null, 2));
|
|
214
|
+
}
|
|
215
|
+
else if (isVerbose) {
|
|
216
|
+
console.log(formatSessionsVerbose(sessions, agentWorkspaces));
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
console.log(formatSessionsTable(sessions, agentWorkspaces));
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
// Generic error
|
|
224
|
+
if (isJsonOutput) {
|
|
225
|
+
console.log(JSON.stringify({
|
|
226
|
+
error: {
|
|
227
|
+
code: "UNKNOWN_ERROR",
|
|
228
|
+
message: error instanceof Error ? error.message : String(error),
|
|
229
|
+
},
|
|
230
|
+
}));
|
|
231
|
+
process.exit(1);
|
|
232
|
+
}
|
|
233
|
+
console.error("");
|
|
234
|
+
console.error("Error:", error instanceof Error ? error.message : String(error));
|
|
235
|
+
process.exit(1);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Get workspace path for an agent from config
|
|
240
|
+
*/
|
|
241
|
+
async function getAgentWorkspace(agentName, configPath) {
|
|
242
|
+
try {
|
|
243
|
+
const config = await loadConfig(configPath);
|
|
244
|
+
const agent = config.agents.find((a) => a.name === agentName);
|
|
245
|
+
if (!agent)
|
|
246
|
+
return undefined;
|
|
247
|
+
const workspace = agent.workspace;
|
|
248
|
+
if (typeof workspace === "string") {
|
|
249
|
+
return workspace;
|
|
250
|
+
}
|
|
251
|
+
else if (workspace && typeof workspace === "object" && "root" in workspace) {
|
|
252
|
+
return workspace.root;
|
|
253
|
+
}
|
|
254
|
+
return undefined;
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Resume a session in Claude Code (herdctl sessions resume)
|
|
262
|
+
*
|
|
263
|
+
* If no session ID is provided, resumes the most recently active session.
|
|
264
|
+
*/
|
|
265
|
+
export async function sessionsResumeCommand(sessionId, options) {
|
|
266
|
+
const stateDir = options.state || DEFAULT_STATE_DIR;
|
|
267
|
+
try {
|
|
268
|
+
const sessionsDir = join(stateDir, "sessions");
|
|
269
|
+
// Get all sessions (sorted by last_used_at descending)
|
|
270
|
+
const sessions = await listSessions(sessionsDir);
|
|
271
|
+
if (sessions.length === 0) {
|
|
272
|
+
console.error("");
|
|
273
|
+
console.error(colorize("No sessions found.", "red"));
|
|
274
|
+
console.error("");
|
|
275
|
+
console.error("Sessions are created when agents run with session persistence enabled.");
|
|
276
|
+
process.exit(1);
|
|
277
|
+
}
|
|
278
|
+
// Find the session to resume
|
|
279
|
+
let session;
|
|
280
|
+
if (sessionId) {
|
|
281
|
+
// Find by session ID (support partial matches)
|
|
282
|
+
session = sessions.find((s) => s.session_id === sessionId || s.session_id.startsWith(sessionId));
|
|
283
|
+
if (!session) {
|
|
284
|
+
// Maybe they passed an agent name instead?
|
|
285
|
+
session = sessions.find((s) => s.agent_name === sessionId);
|
|
286
|
+
}
|
|
287
|
+
if (!session) {
|
|
288
|
+
console.error("");
|
|
289
|
+
console.error(colorize(`Session not found: ${sessionId}`, "red"));
|
|
290
|
+
console.error("");
|
|
291
|
+
console.error("Available sessions:");
|
|
292
|
+
for (const s of sessions.slice(0, 5)) {
|
|
293
|
+
console.error(` ${s.agent_name}: ${s.session_id}`);
|
|
294
|
+
}
|
|
295
|
+
if (sessions.length > 5) {
|
|
296
|
+
console.error(` ... and ${sessions.length - 5} more`);
|
|
297
|
+
}
|
|
298
|
+
process.exit(1);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
// Use the most recent session
|
|
303
|
+
session = sessions[0];
|
|
304
|
+
}
|
|
305
|
+
// Get the workspace for this agent
|
|
306
|
+
const workspace = await getAgentWorkspace(session.agent_name, options.config || ".");
|
|
307
|
+
// Display what we're resuming
|
|
308
|
+
console.log("");
|
|
309
|
+
console.log(`Resuming session for ${colorize(session.agent_name, "cyan")} (${session.job_count} jobs, last active ${formatRelativeTime(session.last_used_at)})`);
|
|
310
|
+
console.log(`Session: ${colorize(session.session_id, "dim")}`);
|
|
311
|
+
if (workspace) {
|
|
312
|
+
console.log(`Workspace: ${colorize(workspace, "dim")}`);
|
|
313
|
+
}
|
|
314
|
+
console.log("");
|
|
315
|
+
// Build the claude command
|
|
316
|
+
const claudeArgs = ["--resume", session.session_id];
|
|
317
|
+
// Spawn claude in the workspace directory
|
|
318
|
+
const cwd = workspace || process.cwd();
|
|
319
|
+
console.log(colorize(`Running: claude ${claudeArgs.join(" ")}`, "dim"));
|
|
320
|
+
if (workspace) {
|
|
321
|
+
console.log(colorize(` in: ${cwd}`, "dim"));
|
|
322
|
+
}
|
|
323
|
+
console.log("");
|
|
324
|
+
// Spawn claude as an interactive process
|
|
325
|
+
const child = spawn("claude", claudeArgs, {
|
|
326
|
+
cwd,
|
|
327
|
+
stdio: "inherit", // Inherit stdin/stdout/stderr for interactive use
|
|
328
|
+
shell: true,
|
|
329
|
+
});
|
|
330
|
+
child.on("error", (error) => {
|
|
331
|
+
console.error("");
|
|
332
|
+
console.error(colorize(`Failed to start Claude: ${error.message}`, "red"));
|
|
333
|
+
console.error("");
|
|
334
|
+
console.error("Make sure Claude Code CLI is installed and in your PATH.");
|
|
335
|
+
process.exit(1);
|
|
336
|
+
});
|
|
337
|
+
child.on("close", (code) => {
|
|
338
|
+
process.exit(code ?? 0);
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
catch (error) {
|
|
342
|
+
console.error("");
|
|
343
|
+
console.error("Error:", error instanceof Error ? error.message : String(error));
|
|
344
|
+
process.exit(1);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
* - herdctl jobs List recent jobs
|
|
19
19
|
* - herdctl job <id> Show job details
|
|
20
20
|
* - herdctl cancel <id> Cancel running job
|
|
21
|
+
*
|
|
22
|
+
* Commands (Session Management):
|
|
23
|
+
* - herdctl sessions List Claude Code sessions
|
|
24
|
+
* - herdctl sessions resume [id] Resume a session in Claude Code
|
|
21
25
|
*/
|
|
22
26
|
export {};
|
|
23
27
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;GAuBG"}
|
package/dist/index.js
CHANGED
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
* - herdctl jobs List recent jobs
|
|
19
19
|
* - herdctl job <id> Show job details
|
|
20
20
|
* - herdctl cancel <id> Cancel running job
|
|
21
|
+
*
|
|
22
|
+
* Commands (Session Management):
|
|
23
|
+
* - herdctl sessions List Claude Code sessions
|
|
24
|
+
* - herdctl sessions resume [id] Resume a session in Claude Code
|
|
21
25
|
*/
|
|
22
26
|
import { Command } from "commander";
|
|
23
27
|
import { VERSION } from "@herdctl/core";
|
|
@@ -31,6 +35,7 @@ import { triggerCommand } from "./commands/trigger.js";
|
|
|
31
35
|
import { jobsCommand } from "./commands/jobs.js";
|
|
32
36
|
import { jobCommand } from "./commands/job.js";
|
|
33
37
|
import { cancelCommand } from "./commands/cancel.js";
|
|
38
|
+
import { sessionsCommand, sessionsResumeCommand } from "./commands/sessions.js";
|
|
34
39
|
const program = new Command();
|
|
35
40
|
program
|
|
36
41
|
.name("herdctl")
|
|
@@ -243,6 +248,53 @@ program
|
|
|
243
248
|
throw error;
|
|
244
249
|
}
|
|
245
250
|
});
|
|
251
|
+
// Session management command group
|
|
252
|
+
const sessionsCmd = program
|
|
253
|
+
.command("sessions")
|
|
254
|
+
.description("List and resume Claude Code sessions for agents")
|
|
255
|
+
.option("-a, --agent <name>", "Filter by agent name")
|
|
256
|
+
.option("-v, --verbose", "Show full resume commands")
|
|
257
|
+
.option("--json", "Output as JSON for scripting")
|
|
258
|
+
.option("-c, --config <path>", "Path to config file or directory")
|
|
259
|
+
.option("-s, --state <path>", "Path to state directory (default: .herdctl)")
|
|
260
|
+
.action(async (options) => {
|
|
261
|
+
try {
|
|
262
|
+
await sessionsCommand({
|
|
263
|
+
agent: options.agent,
|
|
264
|
+
verbose: options.verbose,
|
|
265
|
+
json: options.json,
|
|
266
|
+
config: options.config,
|
|
267
|
+
state: options.state,
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
if (error instanceof Error && error.message.includes("User force closed")) {
|
|
272
|
+
console.log("\nAborted.");
|
|
273
|
+
process.exit(0);
|
|
274
|
+
}
|
|
275
|
+
throw error;
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
sessionsCmd
|
|
279
|
+
.command("resume [session-id]")
|
|
280
|
+
.description("Resume a session in Claude Code (defaults to most recent)")
|
|
281
|
+
.option("-c, --config <path>", "Path to config file or directory")
|
|
282
|
+
.option("-s, --state <path>", "Path to state directory (default: .herdctl)")
|
|
283
|
+
.action(async (sessionId, options) => {
|
|
284
|
+
try {
|
|
285
|
+
await sessionsResumeCommand(sessionId, {
|
|
286
|
+
config: options.config,
|
|
287
|
+
state: options.state,
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
if (error instanceof Error && error.message.includes("User force closed")) {
|
|
292
|
+
console.log("\nAborted.");
|
|
293
|
+
process.exit(0);
|
|
294
|
+
}
|
|
295
|
+
throw error;
|
|
296
|
+
}
|
|
297
|
+
});
|
|
246
298
|
// Config command group
|
|
247
299
|
const configCmd = program
|
|
248
300
|
.command("config")
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,mDAAmD,CAAC;KAChE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,mBAAmB,EAAE,YAAY,CAAC;KACzC,MAAM,CAAC,0BAA0B,EAAE,mDAAmD,CAAC;KACvF,MAAM,CAAC,WAAW,EAAE,uCAAuC,CAAC;KAC5D,MAAM,CAAC,aAAa,EAAE,kCAAkC,CAAC;KACzD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,iBAAiB,CAAC;KAC9B,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;KACjE,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gBAAgB,CAAC;KAC7B,MAAM,CAAC,aAAa,EAAE,8BAA8B,CAAC;KACrD,MAAM,CAAC,yBAAyB,EAAE,oCAAoC,EAAE,IAAI,CAAC;KAC7E,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,WAAW,CAAC;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACtC,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACrE,uDAAuD;YACvD,OAAO;QACT,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,QAAQ,EAAE,8BAA8B,CAAC;KAChD,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;KACjE,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAC/B,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,iBAAiB,CAAC;KAC9B,MAAM,CAAC,cAAc,EAAE,gCAAgC,CAAC;KACxD,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC;KAC9C,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,CAAC;KACtE,MAAM,CAAC,QAAQ,EAAE,kCAAkC,CAAC;KACpD,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;KACjE,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAC/B,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,uBAAuB,EAAE,2BAA2B,CAAC;KAC5D,MAAM,CAAC,uBAAuB,EAAE,eAAe,CAAC;KAChD,MAAM,CAAC,YAAY,EAAE,0CAA0C,CAAC;KAChE,MAAM,CAAC,aAAa,EAAE,8CAA8C,CAAC;KACrE,MAAM,CAAC,QAAQ,EAAE,8BAA8B,CAAC;KAChD,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;KACjE,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAC/B,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,KAAK,EAAE;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,kCAAkC;AAClC,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kBAAkB,CAAC;KAC/B,MAAM,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;KACpD,MAAM,CAAC,uBAAuB,EAAE,mEAAmE,CAAC;KACpG,MAAM,CAAC,qBAAqB,EAAE,sCAAsC,CAAC;KACrE,MAAM,CAAC,QAAQ,EAAE,8BAA8B,CAAC;KAChD,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;KACjE,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,WAAW,CAAC;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YAC9D,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,kBAAkB,CAAC;KAC/B,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC;KACvC,MAAM,CAAC,QAAQ,EAAE,8BAA8B,CAAC;KAChD,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;KACjE,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;IAC5B,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,EAAE,EAAE;YACnB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,aAAa,EAAE,wBAAwB,CAAC;KAC/C,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,QAAQ,EAAE,8BAA8B,CAAC;KAChD,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;KACjE,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;IAC5B,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,EAAE,EAAE;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,mCAAmC;AACnC,MAAM,WAAW,GAAG,OAAO;KACxB,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;KACpD,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;KACpD,MAAM,CAAC,QAAQ,EAAE,8BAA8B,CAAC;KAChD,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;KACjE,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,eAAe,CAAC;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,WAAW;KACR,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,2DAA2D,CAAC;KACxE,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;KACjE,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IACnC,IAAI,CAAC;QACH,MAAM,qBAAqB,CAAC,SAAS,EAAE;YACrC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,uBAAuB;AACvB,MAAM,SAAS,GAAG,OAAO;KACtB,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mCAAmC,CAAC,CAAC;AAEpD,SAAS;KACN,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,OAAO,EAAE,4BAA4B,CAAC;KAC7C,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;KACjE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,SAAS;KACN,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;KACjE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "herdctl",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Autonomous Agent Fleet Management for Claude Code",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@inquirer/prompts": "^8.2.0",
|
|
18
18
|
"commander": "^12",
|
|
19
|
-
"@herdctl/core": "1.
|
|
20
|
-
"@herdctl/discord": "0.1.
|
|
19
|
+
"@herdctl/core": "1.2.0",
|
|
20
|
+
"@herdctl/discord": "0.1.2"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"typescript": "^5",
|