@herdctl/core 5.10.1 → 5.11.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/dist/fleet-manager/__tests__/agent-management.test.d.ts +9 -0
- package/dist/fleet-manager/__tests__/agent-management.test.d.ts.map +1 -0
- package/dist/fleet-manager/__tests__/agent-management.test.js +358 -0
- package/dist/fleet-manager/__tests__/agent-management.test.js.map +1 -0
- package/dist/fleet-manager/__tests__/errors.test.js +40 -2
- package/dist/fleet-manager/__tests__/errors.test.js.map +1 -1
- package/dist/fleet-manager/__tests__/session-control.test.d.ts +14 -0
- package/dist/fleet-manager/__tests__/session-control.test.d.ts.map +1 -0
- package/dist/fleet-manager/__tests__/session-control.test.js +240 -0
- package/dist/fleet-manager/__tests__/session-control.test.js.map +1 -0
- package/dist/fleet-manager/__tests__/trigger.test.js +137 -2
- package/dist/fleet-manager/__tests__/trigger.test.js.map +1 -1
- package/dist/fleet-manager/agent-management.d.ts +107 -0
- package/dist/fleet-manager/agent-management.d.ts.map +1 -0
- package/dist/fleet-manager/agent-management.js +237 -0
- package/dist/fleet-manager/agent-management.js.map +1 -0
- package/dist/fleet-manager/errors.d.ts +30 -0
- package/dist/fleet-manager/errors.d.ts.map +1 -1
- package/dist/fleet-manager/errors.js +40 -0
- package/dist/fleet-manager/errors.js.map +1 -1
- package/dist/fleet-manager/fleet-manager.d.ts +144 -2
- package/dist/fleet-manager/fleet-manager.d.ts.map +1 -1
- package/dist/fleet-manager/fleet-manager.js +260 -2
- package/dist/fleet-manager/fleet-manager.js.map +1 -1
- package/dist/fleet-manager/index.d.ts +1 -0
- package/dist/fleet-manager/index.d.ts.map +1 -1
- package/dist/fleet-manager/index.js +2 -0
- package/dist/fleet-manager/index.js.map +1 -1
- package/dist/fleet-manager/job-control.d.ts.map +1 -1
- package/dist/fleet-manager/job-control.js +54 -9
- package/dist/fleet-manager/job-control.js.map +1 -1
- package/dist/fleet-manager/types.d.ts +28 -0
- package/dist/fleet-manager/types.d.ts.map +1 -1
- package/dist/runner/index.d.ts +1 -1
- package/dist/runner/index.d.ts.map +1 -1
- package/dist/runner/index.js +1 -1
- package/dist/runner/index.js.map +1 -1
- package/dist/runner/runtime/__tests__/cli-runtime.test.js +35 -0
- package/dist/runner/runtime/__tests__/cli-runtime.test.js.map +1 -1
- package/dist/runner/runtime/__tests__/cli-session-path.test.js +63 -6
- package/dist/runner/runtime/__tests__/cli-session-path.test.js.map +1 -1
- package/dist/runner/runtime/__tests__/docker-security.test.js +39 -0
- package/dist/runner/runtime/__tests__/docker-security.test.js.map +1 -1
- package/dist/runner/runtime/cli-session-path.d.ts +18 -6
- package/dist/runner/runtime/cli-session-path.d.ts.map +1 -1
- package/dist/runner/runtime/cli-session-path.js +48 -8
- package/dist/runner/runtime/cli-session-path.js.map +1 -1
- package/dist/runner/runtime/index.d.ts +1 -0
- package/dist/runner/runtime/index.d.ts.map +1 -1
- package/dist/runner/runtime/index.js +5 -0
- package/dist/runner/runtime/index.js.map +1 -1
- package/dist/scheduler/errors.d.ts +1 -0
- package/dist/scheduler/errors.d.ts.map +1 -1
- package/dist/state/session-discovery.d.ts +18 -0
- package/dist/state/session-discovery.d.ts.map +1 -1
- package/dist/state/session-discovery.js +12 -1
- package/dist/state/session-discovery.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for first-class session control on FleetManager:
|
|
3
|
+
* - deleteSession(name, sessionId): removes a session transcript from disk
|
|
4
|
+
* - setSessionName(name, sessionId, customName): sets/clears a custom name
|
|
5
|
+
*
|
|
6
|
+
* These exercise the REAL SessionDiscoveryService + SessionMetadataStore (no
|
|
7
|
+
* mocks) so we verify the transcript file is actually removed, the custom name
|
|
8
|
+
* is persisted, and a subsequent getAgentSessions reflects the new name.
|
|
9
|
+
*
|
|
10
|
+
* `os.homedir()` is mocked to a temp directory so CLI transcripts
|
|
11
|
+
* (~/.claude/projects/<encoded>/<id>.jsonl) land in a controlled location.
|
|
12
|
+
*/
|
|
13
|
+
import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
|
|
14
|
+
import { tmpdir } from "node:os";
|
|
15
|
+
import { join } from "node:path";
|
|
16
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
17
|
+
// Mock the Claude SDK to prevent real API calls.
|
|
18
|
+
vi.mock("@anthropic-ai/claude-agent-sdk", () => ({
|
|
19
|
+
query: vi.fn(),
|
|
20
|
+
}));
|
|
21
|
+
// Mock os.homedir so CLI session paths resolve under our temp dir. We keep the
|
|
22
|
+
// real module for everything else (tmpdir, etc.).
|
|
23
|
+
let mockHome;
|
|
24
|
+
vi.mock("node:os", async (importOriginal) => {
|
|
25
|
+
const actual = await importOriginal();
|
|
26
|
+
return {
|
|
27
|
+
...actual,
|
|
28
|
+
default: { ...actual, homedir: () => mockHome },
|
|
29
|
+
homedir: () => mockHome,
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
import { createJob, encodePathForCli, getCliSessionFile, SessionMetadataStore, updateJob, } from "../../index.js";
|
|
33
|
+
import { AgentNotFoundError, InvalidStateError } from "../errors.js";
|
|
34
|
+
import { FleetManager } from "../fleet-manager.js";
|
|
35
|
+
const silentLogger = () => ({
|
|
36
|
+
debug: vi.fn(),
|
|
37
|
+
info: vi.fn(),
|
|
38
|
+
warn: vi.fn(),
|
|
39
|
+
error: vi.fn(),
|
|
40
|
+
});
|
|
41
|
+
describe("FleetManager session control (deleteSession / setSessionName)", () => {
|
|
42
|
+
let tempDir;
|
|
43
|
+
let configDir;
|
|
44
|
+
let stateDir;
|
|
45
|
+
let workDir;
|
|
46
|
+
beforeEach(async () => {
|
|
47
|
+
tempDir = await mkdtemp(join(tmpdir(), "fleet-session-ctl-test-"));
|
|
48
|
+
configDir = join(tempDir, "config");
|
|
49
|
+
stateDir = join(tempDir, ".herdctl");
|
|
50
|
+
workDir = join(tempDir, "workspace");
|
|
51
|
+
mockHome = join(tempDir, "home");
|
|
52
|
+
await mkdir(configDir, { recursive: true });
|
|
53
|
+
await mkdir(workDir, { recursive: true });
|
|
54
|
+
await mkdir(mockHome, { recursive: true });
|
|
55
|
+
});
|
|
56
|
+
afterEach(async () => {
|
|
57
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
58
|
+
await rm(tempDir, { recursive: true, force: true, maxRetries: 3, retryDelay: 100 });
|
|
59
|
+
});
|
|
60
|
+
async function createConfig(config) {
|
|
61
|
+
const configPath = join(configDir, "herdctl.yaml");
|
|
62
|
+
const yaml = await import("yaml");
|
|
63
|
+
await writeFile(configPath, yaml.stringify(config));
|
|
64
|
+
return configPath;
|
|
65
|
+
}
|
|
66
|
+
async function createAgentConfig(name, config) {
|
|
67
|
+
const agentDir = join(configDir, "agents");
|
|
68
|
+
await mkdir(agentDir, { recursive: true });
|
|
69
|
+
const agentPath = join(agentDir, `${name}.yaml`);
|
|
70
|
+
const yaml = await import("yaml");
|
|
71
|
+
await writeFile(agentPath, yaml.stringify(config));
|
|
72
|
+
return agentPath;
|
|
73
|
+
}
|
|
74
|
+
function createTestManager(configPath) {
|
|
75
|
+
return new FleetManager({
|
|
76
|
+
configPath,
|
|
77
|
+
stateDir,
|
|
78
|
+
checkInterval: 10000,
|
|
79
|
+
logger: silentLogger(),
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/** Create a CLI transcript file for a session under the mocked ~/.claude. */
|
|
83
|
+
async function writeTranscript(wd, sessionId, content = "{}\n") {
|
|
84
|
+
const projDir = join(mockHome, ".claude", "projects", encodePathForCli(wd));
|
|
85
|
+
await mkdir(projDir, { recursive: true });
|
|
86
|
+
await writeFile(join(projDir, `${sessionId}.jsonl`), content);
|
|
87
|
+
}
|
|
88
|
+
async function buildManagerWithAgent(extraAgentConfig = {}) {
|
|
89
|
+
await createAgentConfig("keeper", {
|
|
90
|
+
name: "keeper",
|
|
91
|
+
working_directory: workDir,
|
|
92
|
+
...extraAgentConfig,
|
|
93
|
+
});
|
|
94
|
+
const configPath = await createConfig({
|
|
95
|
+
version: 1,
|
|
96
|
+
agents: [{ path: "./agents/keeper.yaml" }],
|
|
97
|
+
});
|
|
98
|
+
const manager = createTestManager(configPath);
|
|
99
|
+
await manager.initialize();
|
|
100
|
+
return manager;
|
|
101
|
+
}
|
|
102
|
+
// ===========================================================================
|
|
103
|
+
// deleteSession
|
|
104
|
+
// ===========================================================================
|
|
105
|
+
describe("deleteSession()", () => {
|
|
106
|
+
const sessionId = "11111111-2222-3333-4444-555555555555";
|
|
107
|
+
it("deletes the correct transcript file and returns true", async () => {
|
|
108
|
+
const manager = await buildManagerWithAgent();
|
|
109
|
+
await writeTranscript(workDir, sessionId);
|
|
110
|
+
const sessionFile = getCliSessionFile(workDir, sessionId);
|
|
111
|
+
expect(await readFile(sessionFile, "utf-8")).toBe("{}\n");
|
|
112
|
+
const removed = await manager.deleteSession("keeper", sessionId);
|
|
113
|
+
expect(removed).toBe(true);
|
|
114
|
+
// File should be gone now.
|
|
115
|
+
await expect(readFile(sessionFile, "utf-8")).rejects.toMatchObject({ code: "ENOENT" });
|
|
116
|
+
});
|
|
117
|
+
it("returns false when no transcript exists", async () => {
|
|
118
|
+
const manager = await buildManagerWithAgent();
|
|
119
|
+
// No transcript written.
|
|
120
|
+
const removed = await manager.deleteSession("keeper", sessionId);
|
|
121
|
+
expect(removed).toBe(false);
|
|
122
|
+
});
|
|
123
|
+
it("rejects a path-traversal session id", async () => {
|
|
124
|
+
const manager = await buildManagerWithAgent();
|
|
125
|
+
await expect(manager.deleteSession("keeper", "../../etc/passwd")).rejects.toThrow(/Invalid session ID/);
|
|
126
|
+
});
|
|
127
|
+
it("throws AgentNotFoundError for an unknown agent", async () => {
|
|
128
|
+
const manager = await buildManagerWithAgent();
|
|
129
|
+
await expect(manager.deleteSession("ghost", sessionId)).rejects.toThrow(AgentNotFoundError);
|
|
130
|
+
});
|
|
131
|
+
it("throws InvalidStateError before initialize()", async () => {
|
|
132
|
+
await createAgentConfig("keeper", { name: "keeper", working_directory: workDir });
|
|
133
|
+
const configPath = await createConfig({
|
|
134
|
+
version: 1,
|
|
135
|
+
agents: [{ path: "./agents/keeper.yaml" }],
|
|
136
|
+
});
|
|
137
|
+
const manager = createTestManager(configPath);
|
|
138
|
+
// not initialized
|
|
139
|
+
await expect(manager.deleteSession("keeper", sessionId)).rejects.toThrow(InvalidStateError);
|
|
140
|
+
});
|
|
141
|
+
it("removes the deleted session from a subsequent getAgentSessions listing", async () => {
|
|
142
|
+
const manager = await buildManagerWithAgent();
|
|
143
|
+
await writeTranscript(workDir, sessionId, "{}\n");
|
|
144
|
+
// Attribute the session to the agent via a job record so it surfaces in
|
|
145
|
+
// getAgentSessions (which only returns sessions attributed to the agent).
|
|
146
|
+
const jobsDir = join(stateDir, "jobs");
|
|
147
|
+
const job = await createJob(jobsDir, {
|
|
148
|
+
agent: "keeper",
|
|
149
|
+
trigger_type: "manual",
|
|
150
|
+
prompt: "x",
|
|
151
|
+
});
|
|
152
|
+
await updateJob(jobsDir, job.id, { session_id: sessionId });
|
|
153
|
+
const before = await manager.getAgentSessions("keeper");
|
|
154
|
+
expect(before.map((s) => s.sessionId)).toContain(sessionId);
|
|
155
|
+
const removed = await manager.deleteSession("keeper", sessionId);
|
|
156
|
+
expect(removed).toBe(true);
|
|
157
|
+
const after = await manager.getAgentSessions("keeper");
|
|
158
|
+
expect(after.map((s) => s.sessionId)).not.toContain(sessionId);
|
|
159
|
+
});
|
|
160
|
+
it("uses the docker-sessions location for docker agents", async () => {
|
|
161
|
+
const manager = await buildManagerWithAgent({ docker: { enabled: true } });
|
|
162
|
+
// Docker transcripts live flat in .herdctl/docker-sessions/<id>.jsonl
|
|
163
|
+
const dockerDir = join(stateDir, "docker-sessions");
|
|
164
|
+
await mkdir(dockerDir, { recursive: true });
|
|
165
|
+
await writeFile(join(dockerDir, `${sessionId}.jsonl`), "{}\n");
|
|
166
|
+
const removed = await manager.deleteSession("keeper", sessionId);
|
|
167
|
+
expect(removed).toBe(true);
|
|
168
|
+
await expect(readFile(join(dockerDir, `${sessionId}.jsonl`), "utf-8")).rejects.toMatchObject({
|
|
169
|
+
code: "ENOENT",
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
// ===========================================================================
|
|
174
|
+
// setSessionName
|
|
175
|
+
// ===========================================================================
|
|
176
|
+
describe("setSessionName()", () => {
|
|
177
|
+
const sessionId = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee";
|
|
178
|
+
it("persists a custom name via the metadata store", async () => {
|
|
179
|
+
const manager = await buildManagerWithAgent();
|
|
180
|
+
await manager.setSessionName("keeper", sessionId, "Feature Work");
|
|
181
|
+
// Verify directly via a fresh store reading the same state dir.
|
|
182
|
+
const store = new SessionMetadataStore(stateDir);
|
|
183
|
+
expect(await store.getCustomName("keeper", sessionId)).toBe("Feature Work");
|
|
184
|
+
});
|
|
185
|
+
it("trims whitespace from the custom name", async () => {
|
|
186
|
+
const manager = await buildManagerWithAgent();
|
|
187
|
+
await manager.setSessionName("keeper", sessionId, " Padded ");
|
|
188
|
+
const store = new SessionMetadataStore(stateDir);
|
|
189
|
+
expect(await store.getCustomName("keeper", sessionId)).toBe("Padded");
|
|
190
|
+
});
|
|
191
|
+
it("clears the custom name when passed null", async () => {
|
|
192
|
+
const manager = await buildManagerWithAgent();
|
|
193
|
+
await manager.setSessionName("keeper", sessionId, "Temp");
|
|
194
|
+
await manager.setSessionName("keeper", sessionId, null);
|
|
195
|
+
const store = new SessionMetadataStore(stateDir);
|
|
196
|
+
expect(await store.getCustomName("keeper", sessionId)).toBeUndefined();
|
|
197
|
+
});
|
|
198
|
+
it("clears the custom name when passed an empty/whitespace string", async () => {
|
|
199
|
+
const manager = await buildManagerWithAgent();
|
|
200
|
+
await manager.setSessionName("keeper", sessionId, "Temp");
|
|
201
|
+
await manager.setSessionName("keeper", sessionId, " ");
|
|
202
|
+
const store = new SessionMetadataStore(stateDir);
|
|
203
|
+
expect(await store.getCustomName("keeper", sessionId)).toBeUndefined();
|
|
204
|
+
});
|
|
205
|
+
it("is reflected in a subsequent getAgentSessions listing", async () => {
|
|
206
|
+
const manager = await buildManagerWithAgent();
|
|
207
|
+
await writeTranscript(workDir, sessionId, "{}\n");
|
|
208
|
+
// Attribute the session to the agent.
|
|
209
|
+
const jobsDir = join(stateDir, "jobs");
|
|
210
|
+
const job = await createJob(jobsDir, {
|
|
211
|
+
agent: "keeper",
|
|
212
|
+
trigger_type: "manual",
|
|
213
|
+
prompt: "x",
|
|
214
|
+
});
|
|
215
|
+
await updateJob(jobsDir, job.id, { session_id: sessionId });
|
|
216
|
+
// Prime the discovery cache first so we prove the rename invalidates it.
|
|
217
|
+
const before = await manager.getAgentSessions("keeper");
|
|
218
|
+
const beforeEntry = before.find((s) => s.sessionId === sessionId);
|
|
219
|
+
expect(beforeEntry?.customName).toBeUndefined();
|
|
220
|
+
await manager.setSessionName("keeper", sessionId, "Renamed Session");
|
|
221
|
+
const after = await manager.getAgentSessions("keeper");
|
|
222
|
+
const afterEntry = after.find((s) => s.sessionId === sessionId);
|
|
223
|
+
expect(afterEntry?.customName).toBe("Renamed Session");
|
|
224
|
+
});
|
|
225
|
+
it("throws AgentNotFoundError for an unknown agent", async () => {
|
|
226
|
+
const manager = await buildManagerWithAgent();
|
|
227
|
+
await expect(manager.setSessionName("ghost", sessionId, "x")).rejects.toThrow(AgentNotFoundError);
|
|
228
|
+
});
|
|
229
|
+
it("throws InvalidStateError before initialize()", async () => {
|
|
230
|
+
await createAgentConfig("keeper", { name: "keeper", working_directory: workDir });
|
|
231
|
+
const configPath = await createConfig({
|
|
232
|
+
version: 1,
|
|
233
|
+
agents: [{ path: "./agents/keeper.yaml" }],
|
|
234
|
+
});
|
|
235
|
+
const manager = createTestManager(configPath);
|
|
236
|
+
await expect(manager.setSessionName("keeper", sessionId, "x")).rejects.toThrow(InvalidStateError);
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
});
|
|
240
|
+
//# sourceMappingURL=session-control.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-control.test.js","sourceRoot":"","sources":["../../../src/fleet-manager/__tests__/session-control.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,9 +14,17 @@ vi.mock("@anthropic-ai/claude-agent-sdk", () => ({
|
|
|
14
14
|
}));
|
|
15
15
|
import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
|
|
16
16
|
import { tmpdir } from "node:os";
|
|
17
|
-
import { join } from "node:path";
|
|
18
|
-
import {
|
|
17
|
+
import { isAbsolute, join, resolve } from "node:path";
|
|
18
|
+
import { query } from "@anthropic-ai/claude-agent-sdk";
|
|
19
|
+
import { AgentNotFoundError, InvalidStateError, InvalidWorkingDirectoryOverrideError, ScheduleNotFoundError, } from "../errors.js";
|
|
19
20
|
import { FleetManager } from "../fleet-manager.js";
|
|
21
|
+
/** Read the `cwd` passed to the (mocked) SDK query for the most recent trigger. */
|
|
22
|
+
function lastSdkCwd() {
|
|
23
|
+
const mockQuery = vi.mocked(query);
|
|
24
|
+
const lastCall = mockQuery.mock.calls.at(-1);
|
|
25
|
+
const callOptions = lastCall?.[0]?.options;
|
|
26
|
+
return callOptions?.cwd;
|
|
27
|
+
}
|
|
20
28
|
describe("Manual Agent Triggering (US-5)", () => {
|
|
21
29
|
let tempDir;
|
|
22
30
|
let configDir;
|
|
@@ -475,5 +483,132 @@ describe("Manual Agent Triggering (US-5)", () => {
|
|
|
475
483
|
}));
|
|
476
484
|
});
|
|
477
485
|
});
|
|
486
|
+
describe("per-trigger working-directory override", () => {
|
|
487
|
+
it("runs in the override cwd when workingDirectory is provided", async () => {
|
|
488
|
+
// Agent configured with one working_directory...
|
|
489
|
+
await createAgentConfig("wd-agent", {
|
|
490
|
+
name: "wd-agent",
|
|
491
|
+
working_directory: "/configured/dir",
|
|
492
|
+
});
|
|
493
|
+
const configPath = await createConfig({
|
|
494
|
+
version: 1,
|
|
495
|
+
agents: [{ path: "./agents/wd-agent.yaml" }],
|
|
496
|
+
});
|
|
497
|
+
const manager = createTestManager(configPath);
|
|
498
|
+
await manager.initialize();
|
|
499
|
+
// ...but triggered against a different absolute directory.
|
|
500
|
+
const overrideDir = "/override/project";
|
|
501
|
+
const result = await manager.trigger("wd-agent", undefined, {
|
|
502
|
+
workingDirectory: overrideDir,
|
|
503
|
+
});
|
|
504
|
+
expect(result.success).toBe(true);
|
|
505
|
+
// The SDK runtime should have been invoked with the override cwd, not the
|
|
506
|
+
// configured working_directory.
|
|
507
|
+
expect(lastSdkCwd()).toBe(overrideDir);
|
|
508
|
+
});
|
|
509
|
+
it("uses the configured working_directory when override is omitted (unchanged)", async () => {
|
|
510
|
+
await createAgentConfig("wd-default-agent", {
|
|
511
|
+
name: "wd-default-agent",
|
|
512
|
+
working_directory: "/configured/dir",
|
|
513
|
+
});
|
|
514
|
+
const configPath = await createConfig({
|
|
515
|
+
version: 1,
|
|
516
|
+
agents: [{ path: "./agents/wd-default-agent.yaml" }],
|
|
517
|
+
});
|
|
518
|
+
const manager = createTestManager(configPath);
|
|
519
|
+
await manager.initialize();
|
|
520
|
+
await manager.trigger("wd-default-agent");
|
|
521
|
+
// Default behavior: SDK cwd is the configured working_directory.
|
|
522
|
+
expect(lastSdkCwd()).toBe("/configured/dir");
|
|
523
|
+
});
|
|
524
|
+
it("leaves the resolved cwd unchanged for an agent without an explicit working_directory when override is omitted", async () => {
|
|
525
|
+
await createAgentConfig("wd-none-agent", {
|
|
526
|
+
name: "wd-none-agent",
|
|
527
|
+
});
|
|
528
|
+
const configPath = await createConfig({
|
|
529
|
+
version: 1,
|
|
530
|
+
agents: [{ path: "./agents/wd-none-agent.yaml" }],
|
|
531
|
+
});
|
|
532
|
+
const manager = createTestManager(configPath);
|
|
533
|
+
await manager.initialize();
|
|
534
|
+
// Baseline: trigger with no override. The loader resolves a default
|
|
535
|
+
// working_directory (the agent's config dir), which becomes the SDK cwd.
|
|
536
|
+
await manager.trigger("wd-none-agent");
|
|
537
|
+
const baselineCwd = lastSdkCwd();
|
|
538
|
+
// Triggering again with no override must produce the identical cwd —
|
|
539
|
+
// proving the override code path is a no-op when omitted.
|
|
540
|
+
await manager.trigger("wd-none-agent");
|
|
541
|
+
expect(lastSdkCwd()).toBe(baselineCwd);
|
|
542
|
+
});
|
|
543
|
+
it("lets an agent without configured working_directory run against an override", async () => {
|
|
544
|
+
await createAgentConfig("wd-bare-agent", {
|
|
545
|
+
name: "wd-bare-agent",
|
|
546
|
+
});
|
|
547
|
+
const configPath = await createConfig({
|
|
548
|
+
version: 1,
|
|
549
|
+
agents: [{ path: "./agents/wd-bare-agent.yaml" }],
|
|
550
|
+
});
|
|
551
|
+
const manager = createTestManager(configPath);
|
|
552
|
+
await manager.initialize();
|
|
553
|
+
await manager.trigger("wd-bare-agent", undefined, {
|
|
554
|
+
workingDirectory: "/sweeper/target",
|
|
555
|
+
});
|
|
556
|
+
expect(lastSdkCwd()).toBe("/sweeper/target");
|
|
557
|
+
});
|
|
558
|
+
it("resolves a relative override against process.cwd()", async () => {
|
|
559
|
+
await createAgentConfig("wd-rel-agent", {
|
|
560
|
+
name: "wd-rel-agent",
|
|
561
|
+
});
|
|
562
|
+
const configPath = await createConfig({
|
|
563
|
+
version: 1,
|
|
564
|
+
agents: [{ path: "./agents/wd-rel-agent.yaml" }],
|
|
565
|
+
});
|
|
566
|
+
const manager = createTestManager(configPath);
|
|
567
|
+
await manager.initialize();
|
|
568
|
+
await manager.trigger("wd-rel-agent", undefined, {
|
|
569
|
+
workingDirectory: "some/relative/dir",
|
|
570
|
+
});
|
|
571
|
+
const cwd = lastSdkCwd();
|
|
572
|
+
expect(typeof cwd).toBe("string");
|
|
573
|
+
expect(isAbsolute(cwd)).toBe(true);
|
|
574
|
+
expect(cwd).toBe(resolve(process.cwd(), "some/relative/dir"));
|
|
575
|
+
});
|
|
576
|
+
it("rejects an empty-string override", async () => {
|
|
577
|
+
await createAgentConfig("wd-empty-agent", {
|
|
578
|
+
name: "wd-empty-agent",
|
|
579
|
+
});
|
|
580
|
+
const configPath = await createConfig({
|
|
581
|
+
version: 1,
|
|
582
|
+
agents: [{ path: "./agents/wd-empty-agent.yaml" }],
|
|
583
|
+
});
|
|
584
|
+
const manager = createTestManager(configPath);
|
|
585
|
+
await manager.initialize();
|
|
586
|
+
// Typed error (extends FleetManagerError), not a raw Error — per repo
|
|
587
|
+
// guidelines and the CodeRabbit fix.
|
|
588
|
+
await expect(manager.trigger("wd-empty-agent", undefined, { workingDirectory: " " })).rejects.toThrow(InvalidWorkingDirectoryOverrideError);
|
|
589
|
+
await expect(manager.trigger("wd-empty-agent", undefined, { workingDirectory: " " })).rejects.toThrow(/Invalid workingDirectory override/);
|
|
590
|
+
});
|
|
591
|
+
it("the override does not mutate the agent's configured working_directory", async () => {
|
|
592
|
+
await createAgentConfig("wd-immutable-agent", {
|
|
593
|
+
name: "wd-immutable-agent",
|
|
594
|
+
working_directory: "/configured/dir",
|
|
595
|
+
});
|
|
596
|
+
const configPath = await createConfig({
|
|
597
|
+
version: 1,
|
|
598
|
+
agents: [{ path: "./agents/wd-immutable-agent.yaml" }],
|
|
599
|
+
});
|
|
600
|
+
const manager = createTestManager(configPath);
|
|
601
|
+
await manager.initialize();
|
|
602
|
+
// Trigger once with an override, then once without.
|
|
603
|
+
await manager.trigger("wd-immutable-agent", undefined, {
|
|
604
|
+
workingDirectory: "/override/dir",
|
|
605
|
+
});
|
|
606
|
+
expect(lastSdkCwd()).toBe("/override/dir");
|
|
607
|
+
// The second (un-overridden) trigger must fall back to the configured dir,
|
|
608
|
+
// proving the first trigger did not mutate the shared agent config.
|
|
609
|
+
await manager.trigger("wd-immutable-agent");
|
|
610
|
+
expect(lastSdkCwd()).toBe("/configured/dir");
|
|
611
|
+
});
|
|
612
|
+
});
|
|
478
613
|
});
|
|
479
614
|
//# sourceMappingURL=trigger.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger.test.js","sourceRoot":"","sources":["../../../src/fleet-manager/__tests__/trigger.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trigger.test.js","sourceRoot":"","sources":["../../../src/fleet-manager/__tests__/trigger.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Management Module
|
|
3
|
+
*
|
|
4
|
+
* Centralizes programmatic (in-memory) agent registration for FleetManager.
|
|
5
|
+
*
|
|
6
|
+
* Unlike {@link ConfigReload}, which re-reads agent definitions from disk, this
|
|
7
|
+
* module lets a library consumer add or remove a single agent at runtime by
|
|
8
|
+
* passing an {@link AgentConfig} object directly. This avoids the
|
|
9
|
+
* write-yaml-then-reload() round trip that consumers building project-oriented
|
|
10
|
+
* apps on top of herdctl (e.g. paddock) would otherwise need.
|
|
11
|
+
*
|
|
12
|
+
* The resolved agent is integrated with the same plumbing reload() uses:
|
|
13
|
+
* - the stored {@link ResolvedConfig}'s `agents` array,
|
|
14
|
+
* - the {@link Scheduler} (via `setAgents`),
|
|
15
|
+
* so the new agent is immediately triggerable and appears in fleet status.
|
|
16
|
+
*
|
|
17
|
+
* @module agent-management
|
|
18
|
+
*/
|
|
19
|
+
import { type AgentConfig, type ResolvedConfig } from "../config/index.js";
|
|
20
|
+
import type { FleetManagerContext } from "./context.js";
|
|
21
|
+
import type { AgentInfo } from "./types.js";
|
|
22
|
+
/**
|
|
23
|
+
* Options for {@link AgentManagement.addAgent}.
|
|
24
|
+
*/
|
|
25
|
+
export interface AddAgentOptions {
|
|
26
|
+
/**
|
|
27
|
+
* Base directory used to resolve a relative `working_directory` to an absolute
|
|
28
|
+
* path. Defaults to the loaded config directory (or `process.cwd()` if the
|
|
29
|
+
* fleet was initialized without a config file).
|
|
30
|
+
*/
|
|
31
|
+
baseDir?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Whether to deep-merge fleet `defaults` into the agent (matching how agents
|
|
34
|
+
* loaded from disk are resolved). Defaults to `true`.
|
|
35
|
+
*/
|
|
36
|
+
mergeDefaults?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* When `true`, replace an existing agent with the same qualified name instead
|
|
39
|
+
* of throwing. Defaults to `false`.
|
|
40
|
+
*/
|
|
41
|
+
replace?: boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* AgentManagement provides programmatic agent registration for the FleetManager.
|
|
45
|
+
*
|
|
46
|
+
* This class encapsulates resolving an {@link AgentConfig} into a
|
|
47
|
+
* {@link ResolvedAgent} and wiring it into the running fleet, using the
|
|
48
|
+
* {@link FleetManagerContext} pattern shared by the other module classes.
|
|
49
|
+
*/
|
|
50
|
+
export declare class AgentManagement {
|
|
51
|
+
private ctx;
|
|
52
|
+
private setConfig;
|
|
53
|
+
private getAgentInfoByName;
|
|
54
|
+
constructor(ctx: FleetManagerContext, setConfig: (config: ResolvedConfig) => void, getAgentInfoByName: (name: string) => Promise<AgentInfo>);
|
|
55
|
+
/**
|
|
56
|
+
* Register an agent at runtime without writing YAML or calling `reload()`.
|
|
57
|
+
*
|
|
58
|
+
* The provided config is validated against the agent schema, merged with
|
|
59
|
+
* fleet defaults (unless disabled), and normalized the same way agents loaded
|
|
60
|
+
* from disk are. The resolved agent is appended to the in-memory config and
|
|
61
|
+
* pushed to the scheduler so it is immediately triggerable and visible in
|
|
62
|
+
* fleet status. A `config:reloaded` event is emitted describing the change.
|
|
63
|
+
*
|
|
64
|
+
* @param agent - The agent configuration to register
|
|
65
|
+
* @param options - Resolution options (base dir, defaults merge, replace)
|
|
66
|
+
* @returns Info for the newly registered agent
|
|
67
|
+
* @throws {InvalidStateError} If the fleet manager is not yet initialized
|
|
68
|
+
* @throws {ConfigurationError} If validation fails or the qualified name
|
|
69
|
+
* collides with an existing agent (and `replace` is not set)
|
|
70
|
+
*/
|
|
71
|
+
addAgent(agent: AgentConfig | (Record<string, unknown> & {
|
|
72
|
+
name: string;
|
|
73
|
+
}), options?: AddAgentOptions): Promise<AgentInfo>;
|
|
74
|
+
/**
|
|
75
|
+
* Unregister an agent at runtime.
|
|
76
|
+
*
|
|
77
|
+
* Removes the agent from the in-memory config and the scheduler. Accepts a
|
|
78
|
+
* qualified name (e.g. `"sub.agent"`) or a local name; qualified names are
|
|
79
|
+
* matched first. Running jobs are unaffected — the scheduler simply stops
|
|
80
|
+
* triggering the removed agent's schedules.
|
|
81
|
+
*
|
|
82
|
+
* @param name - The agent qualified name or local name to remove
|
|
83
|
+
* @returns `true` if an agent was removed, `false` if no match was found
|
|
84
|
+
* @throws {InvalidStateError} If the fleet manager is not yet initialized
|
|
85
|
+
*/
|
|
86
|
+
removeAgent(name: string): Promise<boolean>;
|
|
87
|
+
/**
|
|
88
|
+
* Ensure the fleet is initialized and return the current config.
|
|
89
|
+
*/
|
|
90
|
+
private requireConfig;
|
|
91
|
+
/**
|
|
92
|
+
* Persist the new agent list to the stored config and the scheduler, then
|
|
93
|
+
* emit a `config:reloaded` event describing the change.
|
|
94
|
+
*/
|
|
95
|
+
private commit;
|
|
96
|
+
/**
|
|
97
|
+
* Resolve a validated {@link AgentConfig} into a {@link ResolvedAgent},
|
|
98
|
+
* mirroring the loader's resolution: merge fleet defaults, normalize the
|
|
99
|
+
* working directory, and compute the qualified name.
|
|
100
|
+
*
|
|
101
|
+
* Programmatic agents are always registered at the root fleet level
|
|
102
|
+
* (`fleetPath: []`), so their qualified name equals their local name. This
|
|
103
|
+
* matches how a consumer-managed config dir references agents.
|
|
104
|
+
*/
|
|
105
|
+
private resolveAgent;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=agent-management.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-management.d.ts","sourceRoot":"","sources":["../../src/fleet-manager/agent-management.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EACL,KAAK,WAAW,EAKhB,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,YAAY,CAAC;AAM1D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD;;;;;;GAMG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,kBAAkB;gBAFlB,GAAG,EAAE,mBAAmB,EACxB,SAAS,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,EAC3C,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC;IAGlE;;;;;;;;;;;;;;;OAeG;IACG,QAAQ,CACZ,KAAK,EAAE,WAAW,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EACjE,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,SAAS,CAAC;IAiDrB;;;;;;;;;;;OAWG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BjD;;OAEG;IACH,OAAO,CAAC,aAAa;IAyBrB;;;OAGG;IACH,OAAO,CAAC,MAAM;IAsBd;;;;;;;;OAQG;IACH,OAAO,CAAC,YAAY;CA4BrB"}
|