@herdctl/core 5.2.1 → 5.3.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/__tests__/fleet-composition-integration.test.d.ts +15 -0
- package/dist/__tests__/fleet-composition-integration.test.d.ts.map +1 -0
- package/dist/__tests__/fleet-composition-integration.test.js +942 -0
- package/dist/__tests__/fleet-composition-integration.test.js.map +1 -0
- package/dist/config/__tests__/fleet-error-messages.test.d.ts +9 -0
- package/dist/config/__tests__/fleet-error-messages.test.d.ts.map +1 -0
- package/dist/config/__tests__/fleet-error-messages.test.js +321 -0
- package/dist/config/__tests__/fleet-error-messages.test.js.map +1 -0
- package/dist/config/__tests__/fleet-loading.test.d.ts +2 -0
- package/dist/config/__tests__/fleet-loading.test.d.ts.map +1 -0
- package/dist/config/__tests__/fleet-loading.test.js +627 -0
- package/dist/config/__tests__/fleet-loading.test.js.map +1 -0
- package/dist/config/__tests__/fleet-naming-and-defaults.test.d.ts +2 -0
- package/dist/config/__tests__/fleet-naming-and-defaults.test.d.ts.map +1 -0
- package/dist/config/__tests__/fleet-naming-and-defaults.test.js +1024 -0
- package/dist/config/__tests__/fleet-naming-and-defaults.test.js.map +1 -0
- package/dist/config/__tests__/schema.test.js +172 -1
- package/dist/config/__tests__/schema.test.js.map +1 -1
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +2 -2
- package/dist/config/index.js.map +1 -1
- package/dist/config/loader.d.ts +63 -2
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +309 -74
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +58 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +29 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/fleet-manager/__tests__/config-reload-qualified.test.d.ts +8 -0
- package/dist/fleet-manager/__tests__/config-reload-qualified.test.d.ts.map +1 -0
- package/dist/fleet-manager/__tests__/config-reload-qualified.test.js +416 -0
- package/dist/fleet-manager/__tests__/config-reload-qualified.test.js.map +1 -0
- package/dist/fleet-manager/__tests__/integration.test.js +2 -2
- package/dist/fleet-manager/__tests__/integration.test.js.map +1 -1
- package/dist/fleet-manager/chat-manager-interface.d.ts +6 -6
- package/dist/fleet-manager/chat-manager-interface.d.ts.map +1 -1
- package/dist/fleet-manager/config-reload.d.ts.map +1 -1
- package/dist/fleet-manager/config-reload.js +17 -14
- package/dist/fleet-manager/config-reload.js.map +1 -1
- package/dist/fleet-manager/fleet-manager.d.ts +9 -5
- package/dist/fleet-manager/fleet-manager.d.ts.map +1 -1
- package/dist/fleet-manager/fleet-manager.js +18 -9
- package/dist/fleet-manager/fleet-manager.js.map +1 -1
- package/dist/fleet-manager/job-control.js +9 -9
- package/dist/fleet-manager/job-control.js.map +1 -1
- package/dist/fleet-manager/schedule-executor.js +13 -13
- package/dist/fleet-manager/schedule-executor.js.map +1 -1
- package/dist/fleet-manager/schedule-management.d.ts.map +1 -1
- package/dist/fleet-manager/schedule-management.js +22 -16
- package/dist/fleet-manager/schedule-management.js.map +1 -1
- package/dist/fleet-manager/status-queries.d.ts +5 -1
- package/dist/fleet-manager/status-queries.d.ts.map +1 -1
- package/dist/fleet-manager/status-queries.js +16 -8
- package/dist/fleet-manager/status-queries.js.map +1 -1
- package/dist/fleet-manager/types.d.ts +12 -1
- package/dist/fleet-manager/types.d.ts.map +1 -1
- package/dist/runner/__tests__/job-executor.test.js +2 -0
- package/dist/runner/__tests__/job-executor.test.js.map +1 -1
- package/dist/runner/__tests__/sdk-adapter.test.js +2 -0
- package/dist/runner/__tests__/sdk-adapter.test.js.map +1 -1
- package/dist/scheduler/__tests__/schedule-runner.test.js +2 -0
- package/dist/scheduler/__tests__/schedule-runner.test.js.map +1 -1
- package/dist/scheduler/__tests__/scheduler.test.js +5 -3
- package/dist/scheduler/__tests__/scheduler.test.js.map +1 -1
- package/dist/scheduler/schedule-runner.js +12 -12
- package/dist/scheduler/schedule-runner.js.map +1 -1
- package/dist/scheduler/scheduler.js +27 -27
- package/dist/scheduler/scheduler.js.map +1 -1
- package/dist/state/__tests__/session.test.js +27 -0
- package/dist/state/__tests__/session.test.js.map +1 -1
- package/dist/state/fleet-state.d.ts +2 -2
- package/dist/state/fleet-state.js +2 -2
- package/dist/state/schemas/session-info.d.ts +5 -2
- package/dist/state/schemas/session-info.d.ts.map +1 -1
- package/dist/state/schemas/session-info.js +5 -2
- package/dist/state/schemas/session-info.js.map +1 -1
- package/dist/state/session.d.ts +4 -1
- package/dist/state/session.d.ts.map +1 -1
- package/dist/state/session.js +4 -1
- package/dist/state/session.js.map +1 -1
- package/dist/state/utils/__tests__/path-safety.test.js +18 -3
- package/dist/state/utils/__tests__/path-safety.test.js.map +1 -1
- package/dist/state/utils/path-safety.d.ts +4 -2
- package/dist/state/utils/path-safety.d.ts.map +1 -1
- package/dist/state/utils/path-safety.js +5 -3
- package/dist/state/utils/path-safety.js.map +1 -1
- package/dist/work-sources/__tests__/manager.test.js +2 -0
- package/dist/work-sources/__tests__/manager.test.js.map +1 -1
- package/package.json +1 -1
package/dist/config/loader.d.ts
CHANGED
|
@@ -31,6 +31,52 @@ export declare class AgentLoadError extends ConfigError {
|
|
|
31
31
|
readonly agentName?: string;
|
|
32
32
|
constructor(agentPath: string, cause: Error, agentName?: string);
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Error thrown when a fleet composition cycle is detected
|
|
36
|
+
*
|
|
37
|
+
* Format: Fleet composition cycle detected: root.yaml -> project-a/herdctl.yaml -> shared/herdctl.yaml -> project-a/herdctl.yaml
|
|
38
|
+
* The path chain shows the full cycle so the user can identify which reference creates the cycle.
|
|
39
|
+
*/
|
|
40
|
+
export declare class FleetCycleError extends ConfigError {
|
|
41
|
+
readonly pathChain: string[];
|
|
42
|
+
constructor(pathChain: string[]);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Error thrown when two sub-fleets at the same level resolve to the same name
|
|
46
|
+
*
|
|
47
|
+
* Format: Fleet name collision at level "root": two sub-fleets resolve to name "project-a".
|
|
48
|
+
* Conflicting references: ./project-a/herdctl.yaml, ./renamed-a/herdctl.yaml
|
|
49
|
+
* Add explicit "name" overrides to disambiguate.
|
|
50
|
+
*/
|
|
51
|
+
export declare class FleetNameCollisionError extends ConfigError {
|
|
52
|
+
readonly fleetName: string;
|
|
53
|
+
readonly parentConfigPath: string;
|
|
54
|
+
readonly conflictingPaths: [string, string];
|
|
55
|
+
constructor(fleetName: string, parentConfigPath: string, existingPath: string, newPath: string);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Error thrown when a fleet name is invalid (doesn't match the required pattern)
|
|
59
|
+
*
|
|
60
|
+
* Format: Invalid fleet name "my.fleet" — fleet names must match pattern ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ (no dots allowed)
|
|
61
|
+
*/
|
|
62
|
+
export declare class InvalidFleetNameError extends ConfigError {
|
|
63
|
+
readonly invalidName: string;
|
|
64
|
+
readonly pattern: RegExp;
|
|
65
|
+
constructor(invalidName: string, pattern?: RegExp);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Error thrown when a sub-fleet fails to load
|
|
69
|
+
*
|
|
70
|
+
* For file not found errors, the format is:
|
|
71
|
+
* Failed to load sub-fleet: file not found at /path/to/missing/herdctl.yaml (referenced from root.yaml)
|
|
72
|
+
*
|
|
73
|
+
* For other errors (e.g., YAML parse errors), the original error message is included.
|
|
74
|
+
*/
|
|
75
|
+
export declare class FleetLoadError extends ConfigError {
|
|
76
|
+
readonly fleetPath: string;
|
|
77
|
+
readonly referencedFrom?: string;
|
|
78
|
+
constructor(fleetPath: string, cause: Error, referencedFrom?: string);
|
|
79
|
+
}
|
|
34
80
|
/**
|
|
35
81
|
* A fully resolved agent configuration with computed properties
|
|
36
82
|
*/
|
|
@@ -39,6 +85,18 @@ export interface ResolvedAgent extends AgentConfig {
|
|
|
39
85
|
* The absolute path to the agent configuration file
|
|
40
86
|
*/
|
|
41
87
|
configPath: string;
|
|
88
|
+
/**
|
|
89
|
+
* The fleet hierarchy path for this agent.
|
|
90
|
+
* Empty array for agents directly in the root fleet.
|
|
91
|
+
* e.g., ["herdctl"] or ["other-project", "frontend"]
|
|
92
|
+
*/
|
|
93
|
+
fleetPath: string[];
|
|
94
|
+
/**
|
|
95
|
+
* Dot-separated qualified name computed from fleetPath and agent name.
|
|
96
|
+
* For root-level agents, equals the agent's local name.
|
|
97
|
+
* e.g., "herdctl.security-auditor" or just "engineer" for root-level
|
|
98
|
+
*/
|
|
99
|
+
qualifiedName: string;
|
|
42
100
|
}
|
|
43
101
|
/**
|
|
44
102
|
* A fully resolved configuration with all agents loaded and merged
|
|
@@ -110,10 +168,10 @@ export declare function findConfigFile(startDir: string): Promise<{
|
|
|
110
168
|
* This function:
|
|
111
169
|
* 1. Finds the config file (if not provided, searches up directory tree)
|
|
112
170
|
* 2. Parses and validates the fleet configuration
|
|
113
|
-
* 3.
|
|
171
|
+
* 3. Recursively loads all referenced sub-fleet and agent configurations
|
|
114
172
|
* 4. Interpolates environment variables (optional)
|
|
115
173
|
* 5. Merges fleet defaults into agent configs (optional)
|
|
116
|
-
* 6. Returns a fully resolved configuration
|
|
174
|
+
* 6. Returns a fully resolved configuration with a flat agent list
|
|
117
175
|
*
|
|
118
176
|
* @param configPath - Path to herdctl.yaml, or directory to search from.
|
|
119
177
|
* If not provided, searches from current working directory.
|
|
@@ -124,6 +182,9 @@ export declare function findConfigFile(startDir: string): Promise<{
|
|
|
124
182
|
* @throws {ConfigError} If YAML syntax is invalid
|
|
125
183
|
* @throws {SchemaValidationError} If configuration fails validation
|
|
126
184
|
* @throws {AgentLoadError} If an agent configuration fails to load
|
|
185
|
+
* @throws {FleetCycleError} If a fleet composition cycle is detected
|
|
186
|
+
* @throws {FleetNameCollisionError} If two sub-fleets have the same resolved name
|
|
187
|
+
* @throws {FleetLoadError} If a sub-fleet fails to load
|
|
127
188
|
*
|
|
128
189
|
* @example
|
|
129
190
|
* ```typescript
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
package/dist/config/loader.js
CHANGED
|
@@ -14,11 +14,12 @@ import { dirname, join, resolve } from "node:path";
|
|
|
14
14
|
import { parse as parseYaml, YAMLParseError } from "yaml";
|
|
15
15
|
import { config as loadDotenv } from "dotenv";
|
|
16
16
|
import { ZodError } from "zod";
|
|
17
|
-
import { FleetConfigSchema, AgentConfigSchema, } from "./schema.js";
|
|
17
|
+
import { FleetConfigSchema, AgentConfigSchema, AGENT_NAME_PATTERN, } from "./schema.js";
|
|
18
18
|
import { ConfigError, FileReadError, SchemaValidationError } from "./parser.js";
|
|
19
19
|
import { mergeAgentConfig, deepMerge } from "./merge.js";
|
|
20
20
|
import { interpolateConfig } from "./interpolate.js";
|
|
21
21
|
import { createLogger } from "../utils/logger.js";
|
|
22
|
+
const logger = createLogger("config");
|
|
22
23
|
// =============================================================================
|
|
23
24
|
// Constants
|
|
24
25
|
// =============================================================================
|
|
@@ -59,6 +60,93 @@ export class AgentLoadError extends ConfigError {
|
|
|
59
60
|
this.cause = cause;
|
|
60
61
|
}
|
|
61
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Error thrown when a fleet composition cycle is detected
|
|
65
|
+
*
|
|
66
|
+
* Format: Fleet composition cycle detected: root.yaml -> project-a/herdctl.yaml -> shared/herdctl.yaml -> project-a/herdctl.yaml
|
|
67
|
+
* The path chain shows the full cycle so the user can identify which reference creates the cycle.
|
|
68
|
+
*/
|
|
69
|
+
export class FleetCycleError extends ConfigError {
|
|
70
|
+
pathChain;
|
|
71
|
+
constructor(pathChain) {
|
|
72
|
+
super(`Fleet composition cycle detected: ${pathChain.join(" -> ")}`);
|
|
73
|
+
this.name = "FleetCycleError";
|
|
74
|
+
this.pathChain = pathChain;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Error thrown when two sub-fleets at the same level resolve to the same name
|
|
79
|
+
*
|
|
80
|
+
* Format: Fleet name collision at level "root": two sub-fleets resolve to name "project-a".
|
|
81
|
+
* Conflicting references: ./project-a/herdctl.yaml, ./renamed-a/herdctl.yaml
|
|
82
|
+
* Add explicit "name" overrides to disambiguate.
|
|
83
|
+
*/
|
|
84
|
+
export class FleetNameCollisionError extends ConfigError {
|
|
85
|
+
fleetName;
|
|
86
|
+
parentConfigPath;
|
|
87
|
+
conflictingPaths;
|
|
88
|
+
constructor(fleetName, parentConfigPath, existingPath, newPath) {
|
|
89
|
+
// Derive level name from parent config for clearer error message
|
|
90
|
+
const levelName = parentConfigPath.split("/").pop()?.replace(/\.ya?ml$/, "") ?? "root";
|
|
91
|
+
super(`Fleet name collision at level "${levelName}": two sub-fleets resolve to name "${fleetName}". ` +
|
|
92
|
+
`Conflicting references: ${existingPath}, ${newPath}. ` +
|
|
93
|
+
`Add explicit "name" overrides to disambiguate.`);
|
|
94
|
+
this.name = "FleetNameCollisionError";
|
|
95
|
+
this.fleetName = fleetName;
|
|
96
|
+
this.parentConfigPath = parentConfigPath;
|
|
97
|
+
this.conflictingPaths = [existingPath, newPath];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Error thrown when a fleet name is invalid (doesn't match the required pattern)
|
|
102
|
+
*
|
|
103
|
+
* Format: Invalid fleet name "my.fleet" — fleet names must match pattern ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ (no dots allowed)
|
|
104
|
+
*/
|
|
105
|
+
export class InvalidFleetNameError extends ConfigError {
|
|
106
|
+
invalidName;
|
|
107
|
+
pattern;
|
|
108
|
+
constructor(invalidName, pattern = AGENT_NAME_PATTERN) {
|
|
109
|
+
super(`Invalid fleet name "${invalidName}" — fleet names must match pattern ${pattern.source} (no dots allowed)`);
|
|
110
|
+
this.name = "InvalidFleetNameError";
|
|
111
|
+
this.invalidName = invalidName;
|
|
112
|
+
this.pattern = pattern;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Error thrown when a sub-fleet fails to load
|
|
117
|
+
*
|
|
118
|
+
* For file not found errors, the format is:
|
|
119
|
+
* Failed to load sub-fleet: file not found at /path/to/missing/herdctl.yaml (referenced from root.yaml)
|
|
120
|
+
*
|
|
121
|
+
* For other errors (e.g., YAML parse errors), the original error message is included.
|
|
122
|
+
*/
|
|
123
|
+
export class FleetLoadError extends ConfigError {
|
|
124
|
+
fleetPath;
|
|
125
|
+
referencedFrom;
|
|
126
|
+
constructor(fleetPath, cause, referencedFrom) {
|
|
127
|
+
// Check if this is a file not found error
|
|
128
|
+
const isNotFound = cause instanceof FileReadError &&
|
|
129
|
+
(cause.message.includes("ENOENT") || cause.message.includes("no such file"));
|
|
130
|
+
let message;
|
|
131
|
+
if (isNotFound) {
|
|
132
|
+
message = `Failed to load sub-fleet: file not found at ${fleetPath}`;
|
|
133
|
+
if (referencedFrom) {
|
|
134
|
+
message += ` (referenced from ${referencedFrom})`;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
message = `Failed to load sub-fleet '${fleetPath}': ${cause.message}`;
|
|
139
|
+
if (referencedFrom) {
|
|
140
|
+
message += ` (referenced from ${referencedFrom})`;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
super(message);
|
|
144
|
+
this.name = "FleetLoadError";
|
|
145
|
+
this.fleetPath = fleetPath;
|
|
146
|
+
this.referencedFrom = referencedFrom;
|
|
147
|
+
this.cause = cause;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
62
150
|
// =============================================================================
|
|
63
151
|
// File Discovery
|
|
64
152
|
// =============================================================================
|
|
@@ -225,6 +313,202 @@ function resolveAgentPath(agentPath, fleetConfigDir) {
|
|
|
225
313
|
}
|
|
226
314
|
return resolve(fleetConfigDir, agentPath);
|
|
227
315
|
}
|
|
316
|
+
/**
|
|
317
|
+
* Normalize working_directory in fleet defaults by resolving relative paths
|
|
318
|
+
* relative to the fleet config directory.
|
|
319
|
+
*/
|
|
320
|
+
function normalizeFleetDefaultsWorkingDirectory(fleetConfig, configDir) {
|
|
321
|
+
if (fleetConfig.defaults?.working_directory) {
|
|
322
|
+
const working_directory = fleetConfig.defaults.working_directory;
|
|
323
|
+
if (typeof working_directory === "string") {
|
|
324
|
+
if (!working_directory.startsWith("/")) {
|
|
325
|
+
fleetConfig.defaults.working_directory = resolve(configDir, working_directory);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
else if (working_directory.root &&
|
|
329
|
+
!working_directory.root.startsWith("/")) {
|
|
330
|
+
working_directory.root = resolve(configDir, working_directory.root);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Load and resolve a single agent from a reference, applying defaults and overrides.
|
|
336
|
+
*/
|
|
337
|
+
async function loadAgent(agentRef, configDir, fleetDefaults, fleetPath, ctx) {
|
|
338
|
+
const agentPath = resolveAgentPath(agentRef.path, configDir);
|
|
339
|
+
// Read agent config file
|
|
340
|
+
let agentContent;
|
|
341
|
+
try {
|
|
342
|
+
agentContent = await readFile(agentPath, "utf-8");
|
|
343
|
+
}
|
|
344
|
+
catch (error) {
|
|
345
|
+
throw new AgentLoadError(agentRef.path, new FileReadError(agentPath, error instanceof Error ? error : undefined));
|
|
346
|
+
}
|
|
347
|
+
// Parse and validate agent config
|
|
348
|
+
let agentConfig;
|
|
349
|
+
try {
|
|
350
|
+
agentConfig = parseAgentYaml(agentContent, agentPath);
|
|
351
|
+
}
|
|
352
|
+
catch (error) {
|
|
353
|
+
throw new AgentLoadError(agentRef.path, error instanceof Error ? error : new Error(String(error)));
|
|
354
|
+
}
|
|
355
|
+
// Interpolate environment variables in agent config
|
|
356
|
+
if (ctx.interpolate) {
|
|
357
|
+
agentConfig = interpolateConfig(agentConfig, { env: ctx.env });
|
|
358
|
+
}
|
|
359
|
+
// Merge fleet defaults into agent config
|
|
360
|
+
if (ctx.mergeDefaults && fleetDefaults) {
|
|
361
|
+
agentConfig = mergeAgentConfig(fleetDefaults, agentConfig);
|
|
362
|
+
}
|
|
363
|
+
// Apply per-agent overrides from the fleet config
|
|
364
|
+
if (agentRef.overrides) {
|
|
365
|
+
agentConfig = deepMerge(agentConfig, agentRef.overrides);
|
|
366
|
+
}
|
|
367
|
+
// Normalize working_directory: default to agent config directory, resolve relative paths
|
|
368
|
+
const agentConfigDir = dirname(agentPath);
|
|
369
|
+
if (!agentConfig.working_directory) {
|
|
370
|
+
agentConfig.working_directory = agentConfigDir;
|
|
371
|
+
}
|
|
372
|
+
else if (typeof agentConfig.working_directory === "string") {
|
|
373
|
+
if (!agentConfig.working_directory.startsWith("/")) {
|
|
374
|
+
agentConfig.working_directory = resolve(agentConfigDir, agentConfig.working_directory);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
else if (agentConfig.working_directory.root) {
|
|
378
|
+
if (!agentConfig.working_directory.root.startsWith("/")) {
|
|
379
|
+
agentConfig.working_directory.root = resolve(agentConfigDir, agentConfig.working_directory.root);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
// Compute qualified name
|
|
383
|
+
const qualifiedName = fleetPath.length > 0
|
|
384
|
+
? fleetPath.join(".") + "." + agentConfig.name
|
|
385
|
+
: agentConfig.name;
|
|
386
|
+
return {
|
|
387
|
+
...agentConfig,
|
|
388
|
+
configPath: agentPath,
|
|
389
|
+
fleetPath: [...fleetPath],
|
|
390
|
+
qualifiedName,
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Resolve the name for a sub-fleet using the priority order:
|
|
395
|
+
* 1. Parent's explicit name on the fleet reference (highest priority)
|
|
396
|
+
* 2. Sub-fleet's own fleet.name
|
|
397
|
+
* 3. Directory name derived from the config file's directory (fallback)
|
|
398
|
+
*/
|
|
399
|
+
function resolveFleetName(parentName, subFleetConfig, subFleetConfigPath) {
|
|
400
|
+
if (parentName) {
|
|
401
|
+
return parentName;
|
|
402
|
+
}
|
|
403
|
+
if (subFleetConfig.fleet?.name) {
|
|
404
|
+
return subFleetConfig.fleet.name;
|
|
405
|
+
}
|
|
406
|
+
// Derive from directory name
|
|
407
|
+
const configDir = dirname(subFleetConfigPath);
|
|
408
|
+
return configDir.split("/").pop() || "unnamed";
|
|
409
|
+
}
|
|
410
|
+
// =============================================================================
|
|
411
|
+
// Recursive Fleet Loading
|
|
412
|
+
// =============================================================================
|
|
413
|
+
/**
|
|
414
|
+
* Process a fleet config's sub-fleets and agents, returning a flat list of
|
|
415
|
+
* resolved agents. This is the core recursive descent function.
|
|
416
|
+
*
|
|
417
|
+
* @param fleetConfig - The already-parsed fleet config
|
|
418
|
+
* @param configDir - The directory containing this fleet config
|
|
419
|
+
* @param configPath - Absolute path to this fleet config file
|
|
420
|
+
* @param fleetPath - Fleet hierarchy path for agents at THIS level
|
|
421
|
+
* @param visitedPaths - Set of absolute paths already visited (cycle detection)
|
|
422
|
+
* @param parentDefaults - Effective defaults for this fleet's agents
|
|
423
|
+
* @param ctx - The fleet load context
|
|
424
|
+
* @param pathChain - Ordered list of config paths for cycle error messages
|
|
425
|
+
*/
|
|
426
|
+
async function processFleetSubFleets(fleetConfig, configDir, configPath, fleetPath, visitedPaths, effectiveDefaults, ctx, pathChain) {
|
|
427
|
+
const agents = [];
|
|
428
|
+
const fleetRefs = fleetConfig.fleets;
|
|
429
|
+
if (fleetRefs.length === 0) {
|
|
430
|
+
return agents;
|
|
431
|
+
}
|
|
432
|
+
// Track fleet names at this level for collision detection
|
|
433
|
+
const fleetNamesAtLevel = new Map();
|
|
434
|
+
for (const fleetRef of fleetRefs) {
|
|
435
|
+
const subFleetAbsPath = resolveAgentPath(fleetRef.path, configDir);
|
|
436
|
+
// Cycle detection
|
|
437
|
+
if (visitedPaths.has(subFleetAbsPath)) {
|
|
438
|
+
throw new FleetCycleError([...pathChain, subFleetAbsPath]);
|
|
439
|
+
}
|
|
440
|
+
// Read and parse sub-fleet config
|
|
441
|
+
// Derive parent config filename for error messages
|
|
442
|
+
const parentConfigFilename = configPath.split("/").pop() ?? configPath;
|
|
443
|
+
let subFleetContent;
|
|
444
|
+
try {
|
|
445
|
+
subFleetContent = await readFile(subFleetAbsPath, "utf-8");
|
|
446
|
+
}
|
|
447
|
+
catch (error) {
|
|
448
|
+
throw new FleetLoadError(subFleetAbsPath, new FileReadError(subFleetAbsPath, error instanceof Error ? error : undefined), parentConfigFilename);
|
|
449
|
+
}
|
|
450
|
+
let subFleetConfig;
|
|
451
|
+
try {
|
|
452
|
+
subFleetConfig = parseFleetYaml(subFleetContent, subFleetAbsPath);
|
|
453
|
+
}
|
|
454
|
+
catch (error) {
|
|
455
|
+
throw new FleetLoadError(subFleetAbsPath, error instanceof Error ? error : new Error(String(error)), parentConfigFilename);
|
|
456
|
+
}
|
|
457
|
+
if (ctx.interpolate) {
|
|
458
|
+
subFleetConfig = interpolateConfig(subFleetConfig, { env: ctx.env });
|
|
459
|
+
}
|
|
460
|
+
// Resolve fleet name using priority order
|
|
461
|
+
const resolvedName = resolveFleetName(fleetRef.name, subFleetConfig, subFleetAbsPath);
|
|
462
|
+
// Validate fleet name matches agent name pattern (no dots)
|
|
463
|
+
if (!AGENT_NAME_PATTERN.test(resolvedName)) {
|
|
464
|
+
throw new InvalidFleetNameError(resolvedName, AGENT_NAME_PATTERN);
|
|
465
|
+
}
|
|
466
|
+
// Check for fleet name collision at this level
|
|
467
|
+
const existingPath = fleetNamesAtLevel.get(resolvedName);
|
|
468
|
+
if (existingPath) {
|
|
469
|
+
throw new FleetNameCollisionError(resolvedName, configPath, existingPath, subFleetAbsPath);
|
|
470
|
+
}
|
|
471
|
+
fleetNamesAtLevel.set(resolvedName, subFleetAbsPath);
|
|
472
|
+
// Apply fleet-level overrides from parent's fleets entry
|
|
473
|
+
if (fleetRef.overrides) {
|
|
474
|
+
subFleetConfig = deepMerge(subFleetConfig, fleetRef.overrides);
|
|
475
|
+
}
|
|
476
|
+
// Suppress sub-fleet web unless parent overrides explicitly set web config
|
|
477
|
+
const parentOverridesWeb = fleetRef.overrides && "web" in fleetRef.overrides;
|
|
478
|
+
if (!parentOverridesWeb) {
|
|
479
|
+
if (subFleetConfig.web) {
|
|
480
|
+
subFleetConfig.web = { ...subFleetConfig.web, enabled: false };
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
const subFleetDir = dirname(subFleetAbsPath);
|
|
484
|
+
// Normalize working_directory in sub-fleet defaults
|
|
485
|
+
normalizeFleetDefaultsWorkingDirectory(subFleetConfig, subFleetDir);
|
|
486
|
+
// Compute effective defaults for sub-fleet agents:
|
|
487
|
+
// parent effectiveDefaults (gap-filler) + sub-fleet's own defaults
|
|
488
|
+
let subFleetEffectiveDefaults;
|
|
489
|
+
if (ctx.mergeDefaults) {
|
|
490
|
+
if (effectiveDefaults && subFleetConfig.defaults) {
|
|
491
|
+
subFleetEffectiveDefaults = deepMerge(effectiveDefaults, subFleetConfig.defaults);
|
|
492
|
+
}
|
|
493
|
+
else {
|
|
494
|
+
subFleetEffectiveDefaults =
|
|
495
|
+
subFleetConfig.defaults ?? effectiveDefaults;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
const subFleetFleetPath = [...fleetPath, resolvedName];
|
|
499
|
+
logger.debug(`Loading sub-fleet '${resolvedName}' from ${subFleetAbsPath}`);
|
|
500
|
+
// Load agents from the sub-fleet
|
|
501
|
+
for (const agentRef of subFleetConfig.agents) {
|
|
502
|
+
const agent = await loadAgent(agentRef, subFleetDir, subFleetEffectiveDefaults, subFleetFleetPath, ctx);
|
|
503
|
+
agents.push(agent);
|
|
504
|
+
}
|
|
505
|
+
// Mark visited and recurse into sub-fleet's own sub-fleets
|
|
506
|
+
visitedPaths.add(subFleetAbsPath);
|
|
507
|
+
const nestedAgents = await processFleetSubFleets(subFleetConfig, subFleetDir, subFleetAbsPath, subFleetFleetPath, visitedPaths, subFleetEffectiveDefaults, ctx, [...pathChain, subFleetAbsPath]);
|
|
508
|
+
agents.push(...nestedAgents);
|
|
509
|
+
}
|
|
510
|
+
return agents;
|
|
511
|
+
}
|
|
228
512
|
// =============================================================================
|
|
229
513
|
// Main Loading Function
|
|
230
514
|
// =============================================================================
|
|
@@ -234,10 +518,10 @@ function resolveAgentPath(agentPath, fleetConfigDir) {
|
|
|
234
518
|
* This function:
|
|
235
519
|
* 1. Finds the config file (if not provided, searches up directory tree)
|
|
236
520
|
* 2. Parses and validates the fleet configuration
|
|
237
|
-
* 3.
|
|
521
|
+
* 3. Recursively loads all referenced sub-fleet and agent configurations
|
|
238
522
|
* 4. Interpolates environment variables (optional)
|
|
239
523
|
* 5. Merges fleet defaults into agent configs (optional)
|
|
240
|
-
* 6. Returns a fully resolved configuration
|
|
524
|
+
* 6. Returns a fully resolved configuration with a flat agent list
|
|
241
525
|
*
|
|
242
526
|
* @param configPath - Path to herdctl.yaml, or directory to search from.
|
|
243
527
|
* If not provided, searches from current working directory.
|
|
@@ -248,6 +532,9 @@ function resolveAgentPath(agentPath, fleetConfigDir) {
|
|
|
248
532
|
* @throws {ConfigError} If YAML syntax is invalid
|
|
249
533
|
* @throws {SchemaValidationError} If configuration fails validation
|
|
250
534
|
* @throws {AgentLoadError} If an agent configuration fails to load
|
|
535
|
+
* @throws {FleetCycleError} If a fleet composition cycle is detected
|
|
536
|
+
* @throws {FleetNameCollisionError} If two sub-fleets have the same resolved name
|
|
537
|
+
* @throws {FleetLoadError} If a sub-fleet fails to load
|
|
251
538
|
*
|
|
252
539
|
* @example
|
|
253
540
|
* ```typescript
|
|
@@ -331,78 +618,26 @@ export async function loadConfig(configPath, options = {}) {
|
|
|
331
618
|
if (interpolate) {
|
|
332
619
|
fleetConfig = interpolateConfig(fleetConfig, { env });
|
|
333
620
|
}
|
|
334
|
-
// Normalize working_directory in fleet defaults
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
else if (working_directory.root &&
|
|
345
|
-
!working_directory.root.startsWith("/")) {
|
|
346
|
-
// Resolve relative root in working directory object
|
|
347
|
-
working_directory.root = resolve(configDir, working_directory.root);
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
// Load all agent configs
|
|
621
|
+
// Normalize working_directory in fleet defaults
|
|
622
|
+
normalizeFleetDefaultsWorkingDirectory(fleetConfig, configDir);
|
|
623
|
+
const ctx = { env, interpolate, mergeDefaults };
|
|
624
|
+
// Compute effective defaults for the root fleet (just its own defaults)
|
|
625
|
+
const rootDefaults = mergeDefaults
|
|
626
|
+
? fleetConfig.defaults ?? undefined
|
|
627
|
+
: undefined;
|
|
628
|
+
// Load root-level agents (fleetPath = [], no fleet name prefix)
|
|
351
629
|
const agents = [];
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
}
|
|
364
|
-
// Parse and validate agent config
|
|
365
|
-
let agentConfig;
|
|
366
|
-
try {
|
|
367
|
-
agentConfig = parseAgentYaml(agentContent, agentPath);
|
|
368
|
-
}
|
|
369
|
-
catch (error) {
|
|
370
|
-
throw new AgentLoadError(agentRef.path, error instanceof Error ? error : new Error(String(error)));
|
|
371
|
-
}
|
|
372
|
-
// Interpolate environment variables in agent config
|
|
373
|
-
if (interpolate) {
|
|
374
|
-
agentConfig = interpolateConfig(agentConfig, { env });
|
|
375
|
-
}
|
|
376
|
-
// Merge fleet defaults into agent config
|
|
377
|
-
if (mergeDefaults && fleetConfig.defaults) {
|
|
378
|
-
agentConfig = mergeAgentConfig(fleetConfig.defaults, agentConfig);
|
|
379
|
-
}
|
|
380
|
-
// Apply per-agent overrides from the fleet config
|
|
381
|
-
if (agentRef.overrides) {
|
|
382
|
-
agentConfig = deepMerge(agentConfig, agentRef.overrides);
|
|
383
|
-
}
|
|
384
|
-
// Normalize working_directory: default to agent config directory, resolve relative paths
|
|
385
|
-
const agentConfigDir = dirname(agentPath);
|
|
386
|
-
if (!agentConfig.working_directory) {
|
|
387
|
-
// Default: working directory is the directory containing the agent config file
|
|
388
|
-
agentConfig.working_directory = agentConfigDir;
|
|
389
|
-
}
|
|
390
|
-
else if (typeof agentConfig.working_directory === "string") {
|
|
391
|
-
// If working directory is a relative path, resolve it relative to agent config directory
|
|
392
|
-
if (!agentConfig.working_directory.startsWith("/")) {
|
|
393
|
-
agentConfig.working_directory = resolve(agentConfigDir, agentConfig.working_directory);
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
else if (agentConfig.working_directory.root) {
|
|
397
|
-
// If working directory is an object with relative root, resolve root relative to agent config directory
|
|
398
|
-
if (!agentConfig.working_directory.root.startsWith("/")) {
|
|
399
|
-
agentConfig.working_directory.root = resolve(agentConfigDir, agentConfig.working_directory.root);
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
agents.push({
|
|
403
|
-
...agentConfig,
|
|
404
|
-
configPath: agentPath,
|
|
405
|
-
});
|
|
630
|
+
for (const agentRef of fleetConfig.agents) {
|
|
631
|
+
const agent = await loadAgent(agentRef, configDir, rootDefaults, [], // root fleet agents have empty fleetPath
|
|
632
|
+
ctx);
|
|
633
|
+
agents.push(agent);
|
|
634
|
+
}
|
|
635
|
+
// Recursively load sub-fleets
|
|
636
|
+
if (fleetConfig.fleets.length > 0) {
|
|
637
|
+
const visitedPaths = new Set([resolve(resolvedConfigPath)]);
|
|
638
|
+
const subFleetAgents = await processFleetSubFleets(fleetConfig, configDir, resolvedConfigPath, [], // root fleet path is empty
|
|
639
|
+
visitedPaths, rootDefaults, ctx, [resolvedConfigPath]);
|
|
640
|
+
agents.push(...subFleetAgents);
|
|
406
641
|
}
|
|
407
642
|
return {
|
|
408
643
|
fleet: fleetConfig,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|