@herdctl/core 5.10.0 → 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/dist/state/utils/__tests__/path-safety.test.js +26 -1
- package/dist/state/utils/__tests__/path-safety.test.js.map +1 -1
- package/dist/state/utils/path-safety.d.ts.map +1 -1
- package/dist/state/utils/path-safety.js +3 -2
- package/dist/state/utils/path-safety.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,237 @@
|
|
|
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 { isAbsolute, resolve } from "node:path";
|
|
20
|
+
import { AgentConfigSchema, mergeAgentConfig, } from "../config/index.js";
|
|
21
|
+
import { ConfigurationError, InvalidStateError } from "./errors.js";
|
|
22
|
+
// =============================================================================
|
|
23
|
+
// AgentManagement Class
|
|
24
|
+
// =============================================================================
|
|
25
|
+
/**
|
|
26
|
+
* AgentManagement provides programmatic agent registration for the FleetManager.
|
|
27
|
+
*
|
|
28
|
+
* This class encapsulates resolving an {@link AgentConfig} into a
|
|
29
|
+
* {@link ResolvedAgent} and wiring it into the running fleet, using the
|
|
30
|
+
* {@link FleetManagerContext} pattern shared by the other module classes.
|
|
31
|
+
*/
|
|
32
|
+
export class AgentManagement {
|
|
33
|
+
ctx;
|
|
34
|
+
setConfig;
|
|
35
|
+
getAgentInfoByName;
|
|
36
|
+
constructor(ctx, setConfig, getAgentInfoByName) {
|
|
37
|
+
this.ctx = ctx;
|
|
38
|
+
this.setConfig = setConfig;
|
|
39
|
+
this.getAgentInfoByName = getAgentInfoByName;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Register an agent at runtime without writing YAML or calling `reload()`.
|
|
43
|
+
*
|
|
44
|
+
* The provided config is validated against the agent schema, merged with
|
|
45
|
+
* fleet defaults (unless disabled), and normalized the same way agents loaded
|
|
46
|
+
* from disk are. The resolved agent is appended to the in-memory config and
|
|
47
|
+
* pushed to the scheduler so it is immediately triggerable and visible in
|
|
48
|
+
* fleet status. A `config:reloaded` event is emitted describing the change.
|
|
49
|
+
*
|
|
50
|
+
* @param agent - The agent configuration to register
|
|
51
|
+
* @param options - Resolution options (base dir, defaults merge, replace)
|
|
52
|
+
* @returns Info for the newly registered agent
|
|
53
|
+
* @throws {InvalidStateError} If the fleet manager is not yet initialized
|
|
54
|
+
* @throws {ConfigurationError} If validation fails or the qualified name
|
|
55
|
+
* collides with an existing agent (and `replace` is not set)
|
|
56
|
+
*/
|
|
57
|
+
async addAgent(agent, options) {
|
|
58
|
+
const config = this.requireConfig("addAgent");
|
|
59
|
+
const logger = this.ctx.getLogger();
|
|
60
|
+
// Validate the incoming config against the agent schema. This applies the
|
|
61
|
+
// same defaults/coercions (e.g. schedule.enabled) that a file-loaded agent
|
|
62
|
+
// would receive, and produces a clear error on bad input.
|
|
63
|
+
let validated;
|
|
64
|
+
try {
|
|
65
|
+
validated = AgentConfigSchema.parse(agent);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
throw new ConfigurationError(`Invalid agent configuration for addAgent: ${error instanceof Error ? error.message : String(error)}`, { cause: error instanceof Error ? error : undefined });
|
|
69
|
+
}
|
|
70
|
+
const resolved = this.resolveAgent(validated, config, options);
|
|
71
|
+
// Detect collisions. Root-level programmatic agents use their name as the
|
|
72
|
+
// qualified name, so this also catches duplicate local names.
|
|
73
|
+
const existingIndex = config.agents.findIndex((a) => a.qualifiedName === resolved.qualifiedName);
|
|
74
|
+
if (existingIndex !== -1 && !options?.replace) {
|
|
75
|
+
throw new ConfigurationError(`Agent "${resolved.qualifiedName}" already exists. ` +
|
|
76
|
+
`Use removeAgent() first, or pass { replace: true } to overwrite.`);
|
|
77
|
+
}
|
|
78
|
+
const newAgents = [...config.agents];
|
|
79
|
+
if (existingIndex !== -1) {
|
|
80
|
+
newAgents[existingIndex] = resolved;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
newAgents.push(resolved);
|
|
84
|
+
}
|
|
85
|
+
this.commit(config, newAgents, [
|
|
86
|
+
buildChange(existingIndex !== -1 ? "modified" : "added", resolved),
|
|
87
|
+
]);
|
|
88
|
+
logger.info(`Agent "${resolved.qualifiedName}" ${existingIndex !== -1 ? "replaced" : "added"} programmatically`);
|
|
89
|
+
return this.getAgentInfoByName(resolved.qualifiedName);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Unregister an agent at runtime.
|
|
93
|
+
*
|
|
94
|
+
* Removes the agent from the in-memory config and the scheduler. Accepts a
|
|
95
|
+
* qualified name (e.g. `"sub.agent"`) or a local name; qualified names are
|
|
96
|
+
* matched first. Running jobs are unaffected — the scheduler simply stops
|
|
97
|
+
* triggering the removed agent's schedules.
|
|
98
|
+
*
|
|
99
|
+
* @param name - The agent qualified name or local name to remove
|
|
100
|
+
* @returns `true` if an agent was removed, `false` if no match was found
|
|
101
|
+
* @throws {InvalidStateError} If the fleet manager is not yet initialized
|
|
102
|
+
*/
|
|
103
|
+
async removeAgent(name) {
|
|
104
|
+
const config = this.requireConfig("removeAgent");
|
|
105
|
+
const logger = this.ctx.getLogger();
|
|
106
|
+
// Match qualified name first, fall back to local name (mirrors
|
|
107
|
+
// getAgentInfoByName / trigger lookup semantics).
|
|
108
|
+
const qualifiedIndex = config.agents.findIndex((a) => a.qualifiedName === name);
|
|
109
|
+
const index = qualifiedIndex !== -1 ? qualifiedIndex : config.agents.findIndex((a) => a.name === name);
|
|
110
|
+
if (index === -1) {
|
|
111
|
+
logger.debug(`removeAgent: no agent matching "${name}"`);
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
const removed = config.agents[index];
|
|
115
|
+
const newAgents = config.agents.filter((_, i) => i !== index);
|
|
116
|
+
this.commit(config, newAgents, [buildChange("removed", removed)]);
|
|
117
|
+
logger.info(`Agent "${removed.qualifiedName}" removed programmatically`);
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
// ===========================================================================
|
|
121
|
+
// Private Helpers
|
|
122
|
+
// ===========================================================================
|
|
123
|
+
/**
|
|
124
|
+
* Ensure the fleet is initialized and return the current config.
|
|
125
|
+
*/
|
|
126
|
+
requireConfig(operation) {
|
|
127
|
+
const status = this.ctx.getStatus();
|
|
128
|
+
if (status === "uninitialized") {
|
|
129
|
+
throw new InvalidStateError(operation, status, [
|
|
130
|
+
"initialized",
|
|
131
|
+
"starting",
|
|
132
|
+
"running",
|
|
133
|
+
"stopping",
|
|
134
|
+
"stopped",
|
|
135
|
+
]);
|
|
136
|
+
}
|
|
137
|
+
const config = this.ctx.getConfig();
|
|
138
|
+
if (!config) {
|
|
139
|
+
throw new InvalidStateError(operation, status, [
|
|
140
|
+
"initialized",
|
|
141
|
+
"starting",
|
|
142
|
+
"running",
|
|
143
|
+
"stopping",
|
|
144
|
+
"stopped",
|
|
145
|
+
]);
|
|
146
|
+
}
|
|
147
|
+
return config;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Persist the new agent list to the stored config and the scheduler, then
|
|
151
|
+
* emit a `config:reloaded` event describing the change.
|
|
152
|
+
*/
|
|
153
|
+
commit(config, newAgents, changes) {
|
|
154
|
+
const newConfig = { ...config, agents: newAgents };
|
|
155
|
+
this.setConfig(newConfig);
|
|
156
|
+
const scheduler = this.ctx.getScheduler();
|
|
157
|
+
if (scheduler) {
|
|
158
|
+
scheduler.setAgents(newAgents);
|
|
159
|
+
}
|
|
160
|
+
this.ctx.emit("config:reloaded", {
|
|
161
|
+
agentCount: newAgents.length,
|
|
162
|
+
agentNames: newAgents.map((a) => a.qualifiedName),
|
|
163
|
+
configPath: config.configPath,
|
|
164
|
+
changes,
|
|
165
|
+
timestamp: new Date().toISOString(),
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Resolve a validated {@link AgentConfig} into a {@link ResolvedAgent},
|
|
170
|
+
* mirroring the loader's resolution: merge fleet defaults, normalize the
|
|
171
|
+
* working directory, and compute the qualified name.
|
|
172
|
+
*
|
|
173
|
+
* Programmatic agents are always registered at the root fleet level
|
|
174
|
+
* (`fleetPath: []`), so their qualified name equals their local name. This
|
|
175
|
+
* matches how a consumer-managed config dir references agents.
|
|
176
|
+
*/
|
|
177
|
+
resolveAgent(agentConfig, config, options) {
|
|
178
|
+
const mergeDefaults = options?.mergeDefaults ?? true;
|
|
179
|
+
const baseDir = options?.baseDir ??
|
|
180
|
+
(config.configDir && config.configDir.length > 0 ? config.configDir : process.cwd());
|
|
181
|
+
let merged = agentConfig;
|
|
182
|
+
const defaults = config.fleet.defaults;
|
|
183
|
+
if (mergeDefaults && defaults) {
|
|
184
|
+
merged = mergeAgentConfig(defaults, agentConfig);
|
|
185
|
+
}
|
|
186
|
+
// Normalize working_directory: resolve relative paths against baseDir.
|
|
187
|
+
// (Absent working_directory is left undefined — programmatic consumers are
|
|
188
|
+
// expected to provide an absolute path, as paddock does.)
|
|
189
|
+
const normalized = normalizeWorkingDirectory(merged, baseDir);
|
|
190
|
+
return {
|
|
191
|
+
...normalized,
|
|
192
|
+
configPath: config.configPath,
|
|
193
|
+
fleetPath: [],
|
|
194
|
+
qualifiedName: normalized.name,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// =============================================================================
|
|
199
|
+
// Module Helpers
|
|
200
|
+
// =============================================================================
|
|
201
|
+
/**
|
|
202
|
+
* Build a {@link ConfigChange} entry for an agent-level change.
|
|
203
|
+
*/
|
|
204
|
+
function buildChange(type, agent) {
|
|
205
|
+
return {
|
|
206
|
+
type,
|
|
207
|
+
category: "agent",
|
|
208
|
+
name: agent.qualifiedName,
|
|
209
|
+
details: type === "removed" ? undefined : agent.description,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Resolve a relative `working_directory` to an absolute path against `baseDir`.
|
|
214
|
+
* Handles both the string form and the structured `{ root }` form. Returns a
|
|
215
|
+
* shallow copy of the agent so the caller's input is not mutated.
|
|
216
|
+
*/
|
|
217
|
+
function normalizeWorkingDirectory(agent, baseDir) {
|
|
218
|
+
const wd = agent.working_directory;
|
|
219
|
+
if (wd === undefined) {
|
|
220
|
+
return { ...agent };
|
|
221
|
+
}
|
|
222
|
+
if (typeof wd === "string") {
|
|
223
|
+
return {
|
|
224
|
+
...agent,
|
|
225
|
+
working_directory: isAbsolute(wd) ? wd : resolve(baseDir, wd),
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
// Structured working directory ({ root, ... })
|
|
229
|
+
if (wd.root && !isAbsolute(wd.root)) {
|
|
230
|
+
return {
|
|
231
|
+
...agent,
|
|
232
|
+
working_directory: { ...wd, root: resolve(baseDir, wd.root) },
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
return { ...agent, working_directory: { ...wd } };
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=agent-management.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-management.js","sourceRoot":"","sources":["../../src/fleet-manager/agent-management.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ export declare const FleetManagerErrorCode: {
|
|
|
22
22
|
readonly SHUTDOWN_ERROR: "SHUTDOWN_ERROR";
|
|
23
23
|
readonly JOB_CANCEL_ERROR: "JOB_CANCEL_ERROR";
|
|
24
24
|
readonly JOB_FORK_ERROR: "JOB_FORK_ERROR";
|
|
25
|
+
readonly INVALID_WORKING_DIRECTORY_OVERRIDE: "INVALID_WORKING_DIRECTORY_OVERRIDE";
|
|
25
26
|
readonly SOURCE_PARSE_ERROR: "SOURCE_PARSE_ERROR";
|
|
26
27
|
readonly REPOSITORY_FETCH_ERROR: "REPOSITORY_FETCH_ERROR";
|
|
27
28
|
readonly AGENT_INSTALL_ERROR: "AGENT_INSTALL_ERROR";
|
|
@@ -358,6 +359,31 @@ export declare class JobForkError extends FleetManagerError {
|
|
|
358
359
|
cause?: Error;
|
|
359
360
|
});
|
|
360
361
|
}
|
|
362
|
+
/**
|
|
363
|
+
* Error thrown when a per-trigger `workingDirectory` override is invalid
|
|
364
|
+
*
|
|
365
|
+
* This error is thrown when {@link TriggerOptions.workingDirectory} is provided
|
|
366
|
+
* but is not a non-empty string (e.g. an empty string, whitespace, or a
|
|
367
|
+
* non-string value passed from untyped/JS callers).
|
|
368
|
+
*
|
|
369
|
+
* @example
|
|
370
|
+
* ```typescript
|
|
371
|
+
* try {
|
|
372
|
+
* await manager.trigger("my-agent", undefined, { workingDirectory: "" });
|
|
373
|
+
* } catch (error) {
|
|
374
|
+
* if (error instanceof InvalidWorkingDirectoryOverrideError) {
|
|
375
|
+
* console.error(`Bad override: ${JSON.stringify(error.override)}`);
|
|
376
|
+
* }
|
|
377
|
+
* }
|
|
378
|
+
* ```
|
|
379
|
+
*/
|
|
380
|
+
export declare class InvalidWorkingDirectoryOverrideError extends FleetManagerError {
|
|
381
|
+
/** The invalid override value that was provided */
|
|
382
|
+
readonly override: unknown;
|
|
383
|
+
constructor(override: unknown, options?: {
|
|
384
|
+
cause?: Error;
|
|
385
|
+
});
|
|
386
|
+
}
|
|
361
387
|
/**
|
|
362
388
|
* Type guard to check if an error is a FleetManagerError
|
|
363
389
|
*/
|
|
@@ -394,4 +420,8 @@ export declare function isJobCancelError(error: unknown): error is JobCancelErro
|
|
|
394
420
|
* Type guard to check if an error is a JobForkError
|
|
395
421
|
*/
|
|
396
422
|
export declare function isJobForkError(error: unknown): error is JobForkError;
|
|
423
|
+
/**
|
|
424
|
+
* Type guard to check if an error is an InvalidWorkingDirectoryOverrideError
|
|
425
|
+
*/
|
|
426
|
+
export declare function isInvalidWorkingDirectoryOverrideError(error: unknown): error is InvalidWorkingDirectoryOverrideError;
|
|
397
427
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/fleet-manager/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;;GAIG;AACH,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/fleet-manager/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,7 @@ export const FleetManagerErrorCode = {
|
|
|
31
31
|
// Job control errors (US-6)
|
|
32
32
|
JOB_CANCEL_ERROR: "JOB_CANCEL_ERROR",
|
|
33
33
|
JOB_FORK_ERROR: "JOB_FORK_ERROR",
|
|
34
|
+
INVALID_WORKING_DIRECTORY_OVERRIDE: "INVALID_WORKING_DIRECTORY_OVERRIDE",
|
|
34
35
|
// Distribution errors
|
|
35
36
|
SOURCE_PARSE_ERROR: "SOURCE_PARSE_ERROR",
|
|
36
37
|
REPOSITORY_FETCH_ERROR: "REPOSITORY_FETCH_ERROR",
|
|
@@ -486,6 +487,39 @@ export class JobForkError extends FleetManagerError {
|
|
|
486
487
|
}
|
|
487
488
|
}
|
|
488
489
|
// =============================================================================
|
|
490
|
+
// Trigger Override Errors
|
|
491
|
+
// =============================================================================
|
|
492
|
+
/**
|
|
493
|
+
* Error thrown when a per-trigger `workingDirectory` override is invalid
|
|
494
|
+
*
|
|
495
|
+
* This error is thrown when {@link TriggerOptions.workingDirectory} is provided
|
|
496
|
+
* but is not a non-empty string (e.g. an empty string, whitespace, or a
|
|
497
|
+
* non-string value passed from untyped/JS callers).
|
|
498
|
+
*
|
|
499
|
+
* @example
|
|
500
|
+
* ```typescript
|
|
501
|
+
* try {
|
|
502
|
+
* await manager.trigger("my-agent", undefined, { workingDirectory: "" });
|
|
503
|
+
* } catch (error) {
|
|
504
|
+
* if (error instanceof InvalidWorkingDirectoryOverrideError) {
|
|
505
|
+
* console.error(`Bad override: ${JSON.stringify(error.override)}`);
|
|
506
|
+
* }
|
|
507
|
+
* }
|
|
508
|
+
* ```
|
|
509
|
+
*/
|
|
510
|
+
export class InvalidWorkingDirectoryOverrideError extends FleetManagerError {
|
|
511
|
+
/** The invalid override value that was provided */
|
|
512
|
+
override;
|
|
513
|
+
constructor(override, options) {
|
|
514
|
+
super(`Invalid workingDirectory override: expected a non-empty string, received ${JSON.stringify(override)}`, {
|
|
515
|
+
cause: options?.cause,
|
|
516
|
+
code: FleetManagerErrorCode.INVALID_WORKING_DIRECTORY_OVERRIDE,
|
|
517
|
+
});
|
|
518
|
+
this.name = "InvalidWorkingDirectoryOverrideError";
|
|
519
|
+
this.override = override;
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
// =============================================================================
|
|
489
523
|
// Type Guards
|
|
490
524
|
// =============================================================================
|
|
491
525
|
/**
|
|
@@ -542,4 +576,10 @@ export function isJobCancelError(error) {
|
|
|
542
576
|
export function isJobForkError(error) {
|
|
543
577
|
return error instanceof JobForkError;
|
|
544
578
|
}
|
|
579
|
+
/**
|
|
580
|
+
* Type guard to check if an error is an InvalidWorkingDirectoryOverrideError
|
|
581
|
+
*/
|
|
582
|
+
export function isInvalidWorkingDirectoryOverrideError(error) {
|
|
583
|
+
return error instanceof InvalidWorkingDirectoryOverrideError;
|
|
584
|
+
}
|
|
545
585
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/fleet-manager/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,aAAa;IACb,mBAAmB,EAAE,qBAAqB;IAE1C,uBAAuB;IACvB,mBAAmB,EAAE,qBAAqB;IAC1C,iBAAiB,EAAE,mBAAmB;IAEtC,mBAAmB;IACnB,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;IAC9B,kBAAkB,EAAE,oBAAoB;IAExC,eAAe;IACf,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAElC,qBAAqB;IACrB,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAEhC,4BAA4B;IAC5B,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/fleet-manager/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,9 +11,10 @@
|
|
|
11
11
|
* @module fleet-manager
|
|
12
12
|
*/
|
|
13
13
|
import { EventEmitter } from "node:events";
|
|
14
|
-
import { type ResolvedAgent, type ResolvedConfig } from "../config/index.js";
|
|
14
|
+
import { type AgentConfig, type ResolvedAgent, type ResolvedConfig } from "../config/index.js";
|
|
15
15
|
import { Scheduler } from "../scheduler/index.js";
|
|
16
|
-
import { type StateDirectory } from "../state/index.js";
|
|
16
|
+
import { type ChatMessage, type DiscoveredSession, type StateDirectory } from "../state/index.js";
|
|
17
|
+
import { type AddAgentOptions } from "./agent-management.js";
|
|
17
18
|
import type { IChatManager } from "./chat-manager-interface.js";
|
|
18
19
|
import type { FleetManagerContext } from "./context.js";
|
|
19
20
|
import type { AgentInfo, CancelJobResult, ConfigChange, ConfigReloadedPayload, FleetManagerLogger, FleetManagerOptions, FleetManagerState, FleetManagerStatus, FleetManagerStopOptions, FleetStatus, ForkJobResult, JobModifications, LogEntry, LogStreamOptions, ScheduleInfo, TriggerOptions, TriggerResult } from "./types.js";
|
|
@@ -40,9 +41,12 @@ export declare class FleetManager extends EventEmitter implements FleetManagerCo
|
|
|
40
41
|
private statusQueries;
|
|
41
42
|
private scheduleManagement;
|
|
42
43
|
private configReloadModule;
|
|
44
|
+
private agentManagement;
|
|
43
45
|
private jobControl;
|
|
44
46
|
private logStreaming;
|
|
45
47
|
private scheduleExecutor;
|
|
48
|
+
private sessionDiscovery;
|
|
49
|
+
private sessionMetadataStore;
|
|
46
50
|
private chatManagers;
|
|
47
51
|
constructor(options: FleetManagerOptions);
|
|
48
52
|
getConfig(): ResolvedConfig | null;
|
|
@@ -92,6 +96,120 @@ export declare class FleetManager extends EventEmitter implements FleetManagerCo
|
|
|
92
96
|
disableSchedule(agentName: string, scheduleName: string): Promise<ScheduleInfo>;
|
|
93
97
|
reload(): Promise<ConfigReloadedPayload>;
|
|
94
98
|
computeConfigChanges(oldConfig: ResolvedConfig | null, newConfig: ResolvedConfig): ConfigChange[];
|
|
99
|
+
/**
|
|
100
|
+
* Register an agent at runtime without writing YAML or calling `reload()`.
|
|
101
|
+
*
|
|
102
|
+
* The config is validated, merged with fleet defaults, normalized (working
|
|
103
|
+
* directory resolved to an absolute path), and wired into the running fleet
|
|
104
|
+
* so it is immediately triggerable and appears in fleet status. A
|
|
105
|
+
* `config:reloaded` event is emitted describing the change.
|
|
106
|
+
*
|
|
107
|
+
* This is the programmatic counterpart to editing `herdctl.yaml` and calling
|
|
108
|
+
* `reload()` — useful for apps that manage agents in memory rather than on
|
|
109
|
+
* disk.
|
|
110
|
+
*
|
|
111
|
+
* @param agent - The agent configuration to register (must include `name`)
|
|
112
|
+
* @param options - Resolution options (base dir, defaults merge, replace)
|
|
113
|
+
* @returns Info for the newly registered agent
|
|
114
|
+
* @throws {InvalidStateError} If the fleet manager is not yet initialized
|
|
115
|
+
* @throws {ConfigurationError} If validation fails or the name collides
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* await fleet.addAgent({
|
|
120
|
+
* name: "keeper-myproject",
|
|
121
|
+
* working_directory: "/abs/projects/myproject",
|
|
122
|
+
* runtime: "cli",
|
|
123
|
+
* permission_mode: "acceptEdits",
|
|
124
|
+
* });
|
|
125
|
+
* await fleet.trigger("keeper-myproject", undefined, { prompt: "Hello" });
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
addAgent(agent: AgentConfig | (Record<string, unknown> & {
|
|
129
|
+
name: string;
|
|
130
|
+
}), options?: AddAgentOptions): Promise<AgentInfo>;
|
|
131
|
+
/**
|
|
132
|
+
* Unregister an agent at runtime.
|
|
133
|
+
*
|
|
134
|
+
* Removes the agent from the in-memory config and the scheduler. Accepts a
|
|
135
|
+
* qualified name or a local name. Running jobs are unaffected.
|
|
136
|
+
*
|
|
137
|
+
* @param name - The agent qualified name or local name to remove
|
|
138
|
+
* @returns `true` if an agent was removed, `false` if no match was found
|
|
139
|
+
* @throws {InvalidStateError} If the fleet manager is not yet initialized
|
|
140
|
+
*/
|
|
141
|
+
removeAgent(name: string): Promise<boolean>;
|
|
142
|
+
/**
|
|
143
|
+
* List discovered Claude Code sessions for an agent.
|
|
144
|
+
*
|
|
145
|
+
* Derives the agent's working directory and Docker mode from the loaded
|
|
146
|
+
* config, so consumers don't have to map agent → working directory by hand.
|
|
147
|
+
* Sessions are returned sorted by modification time (newest first).
|
|
148
|
+
*
|
|
149
|
+
* Note: sessions are keyed by working directory. This method uses the agent's
|
|
150
|
+
* *configured* `working_directory`. If you triggered the agent with a
|
|
151
|
+
* per-trigger `workingDirectory` override (see {@link TriggerOptions}), the
|
|
152
|
+
* resulting sessions live under that override directory and will NOT appear
|
|
153
|
+
* here — list them by scanning that directory instead (e.g. the directory
|
|
154
|
+
* grouped `getAllSessions` view on the underlying `SessionDiscoveryService`).
|
|
155
|
+
*
|
|
156
|
+
* @param name - The agent qualified name or local name
|
|
157
|
+
* @param options - Optional `limit` for top-N enrichment
|
|
158
|
+
* @returns Array of discovered sessions (empty if the agent has no working
|
|
159
|
+
* directory or no sessions yet)
|
|
160
|
+
* @throws {InvalidStateError} If the fleet manager is not yet initialized
|
|
161
|
+
* @throws {AgentNotFoundError} If no agent with that name exists
|
|
162
|
+
*/
|
|
163
|
+
getAgentSessions(name: string, options?: {
|
|
164
|
+
limit?: number;
|
|
165
|
+
}): Promise<DiscoveredSession[]>;
|
|
166
|
+
/**
|
|
167
|
+
* Get the parsed chat messages for one of an agent's sessions.
|
|
168
|
+
*
|
|
169
|
+
* Derives the working directory and Docker mode from the loaded config.
|
|
170
|
+
*
|
|
171
|
+
* @param name - The agent qualified name or local name
|
|
172
|
+
* @param sessionId - The session ID to read
|
|
173
|
+
* @returns Array of chat messages (empty if the agent has no working directory)
|
|
174
|
+
* @throws {InvalidStateError} If the fleet manager is not yet initialized
|
|
175
|
+
* @throws {AgentNotFoundError} If no agent with that name exists
|
|
176
|
+
*/
|
|
177
|
+
getAgentSessionMessages(name: string, sessionId: string): Promise<ChatMessage[]>;
|
|
178
|
+
/**
|
|
179
|
+
* Delete one of an agent's Claude Code session transcripts from disk.
|
|
180
|
+
*
|
|
181
|
+
* Resolves the agent's working directory and Docker mode from the loaded
|
|
182
|
+
* config, computes the CLI (or Docker) transcript file path with the same
|
|
183
|
+
* encoder Claude Code uses, deletes it, and invalidates the session-discovery
|
|
184
|
+
* cache so a subsequent {@link getAgentSessions} no longer lists it.
|
|
185
|
+
*
|
|
186
|
+
* The `sessionId` is validated (only `[A-Za-z0-9-]` is allowed) to prevent
|
|
187
|
+
* path traversal before any filesystem access.
|
|
188
|
+
*
|
|
189
|
+
* @param name - The agent qualified name or local name
|
|
190
|
+
* @param sessionId - The session ID whose transcript should be removed
|
|
191
|
+
* @returns `true` if a file was removed, `false` if no transcript existed (or
|
|
192
|
+
* the agent has no working directory)
|
|
193
|
+
* @throws {InvalidStateError} If the fleet manager is not yet initialized
|
|
194
|
+
* @throws {AgentNotFoundError} If no agent with that name exists
|
|
195
|
+
* @throws {Error} If `sessionId` contains invalid characters
|
|
196
|
+
*/
|
|
197
|
+
deleteSession(name: string, sessionId: string): Promise<boolean>;
|
|
198
|
+
/**
|
|
199
|
+
* Set (or clear) the custom display name for one of an agent's sessions.
|
|
200
|
+
*
|
|
201
|
+
* Writes through this fleet's shared {@link SessionMetadataStore} — the same
|
|
202
|
+
* store the session-discovery service reads — so a subsequent
|
|
203
|
+
* {@link getAgentSessions} reflects the new `customName` immediately. Passing
|
|
204
|
+
* `null` or an empty/whitespace string clears any existing custom name.
|
|
205
|
+
*
|
|
206
|
+
* @param name - The agent qualified name or local name
|
|
207
|
+
* @param sessionId - The session ID to (re)name
|
|
208
|
+
* @param customName - The custom name to set, or `null`/empty to clear it
|
|
209
|
+
* @throws {InvalidStateError} If the fleet manager is not yet initialized
|
|
210
|
+
* @throws {AgentNotFoundError} If no agent with that name exists
|
|
211
|
+
*/
|
|
212
|
+
setSessionName(name: string, sessionId: string, customName: string | null): Promise<void>;
|
|
95
213
|
trigger(agentName: string, scheduleName?: string, options?: TriggerOptions): Promise<TriggerResult>;
|
|
96
214
|
cancelJob(jobId: string, options?: {
|
|
97
215
|
timeout?: number;
|
|
@@ -133,6 +251,30 @@ export declare class FleetManager extends EventEmitter implements FleetManagerCo
|
|
|
133
251
|
* @throws ConfigurationError if duplicate qualified names are found
|
|
134
252
|
*/
|
|
135
253
|
private validateUniqueAgentNames;
|
|
254
|
+
/**
|
|
255
|
+
* Get (lazily creating) the shared SessionMetadataStore bound to this fleet's
|
|
256
|
+
* state directory. Shared with the SessionDiscoveryService so metadata writes
|
|
257
|
+
* (e.g. {@link setSessionName}) and reads (during discovery) use one cache.
|
|
258
|
+
*/
|
|
259
|
+
private getSessionMetadataStore;
|
|
260
|
+
/**
|
|
261
|
+
* Get (lazily creating) the SessionDiscoveryService bound to this fleet's
|
|
262
|
+
* state directory. Reused across calls so its caches are shared. The
|
|
263
|
+
* service shares this fleet's {@link SessionMetadataStore} so custom-name
|
|
264
|
+
* writes are immediately visible to discovery.
|
|
265
|
+
*/
|
|
266
|
+
private getSessionDiscovery;
|
|
267
|
+
/**
|
|
268
|
+
* Look up an agent by qualified or local name and derive the inputs the
|
|
269
|
+
* SessionDiscoveryService needs (working directory + Docker mode).
|
|
270
|
+
*
|
|
271
|
+
* @param name - The agent qualified name or local name
|
|
272
|
+
* @param operation - The public operation name, used for the
|
|
273
|
+
* {@link InvalidStateError} message when the fleet is uninitialized
|
|
274
|
+
* @throws {InvalidStateError} If the fleet manager is not yet initialized
|
|
275
|
+
* @throws {AgentNotFoundError} If no agent with that name exists
|
|
276
|
+
*/
|
|
277
|
+
private resolveAgentForSessions;
|
|
136
278
|
private initializeStateDir;
|
|
137
279
|
private startSchedulerAsync;
|
|
138
280
|
private handleScheduleTrigger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleet-manager.d.ts","sourceRoot":"","sources":["../../src/fleet-manager/fleet-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"fleet-manager.d.ts","sourceRoot":"","sources":["../../src/fleet-manager/fleet-manager.ts"],"names":[],"mappings":"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"}
|