@herdctl/core 5.10.1 → 5.12.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 +292 -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 +166 -2
- package/dist/fleet-manager/fleet-manager.d.ts.map +1 -1
- package/dist/fleet-manager/fleet-manager.js +289 -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/__tests__/session-discovery.test.js +172 -6
- package/dist/state/__tests__/session-discovery.test.js.map +1 -1
- package/dist/state/session-discovery.d.ts +45 -0
- package/dist/state/session-discovery.d.ts.map +1 -1
- package/dist/state/session-discovery.js +78 -4
- package/dist/state/session-discovery.js.map +1 -1
- package/package.json +1 -1
|
@@ -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"}
|
|
@@ -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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"}
|