@herdctl/core 5.2.2 → 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.
Files changed (91) hide show
  1. package/dist/__tests__/fleet-composition-integration.test.d.ts +15 -0
  2. package/dist/__tests__/fleet-composition-integration.test.d.ts.map +1 -0
  3. package/dist/__tests__/fleet-composition-integration.test.js +942 -0
  4. package/dist/__tests__/fleet-composition-integration.test.js.map +1 -0
  5. package/dist/config/__tests__/fleet-error-messages.test.d.ts +9 -0
  6. package/dist/config/__tests__/fleet-error-messages.test.d.ts.map +1 -0
  7. package/dist/config/__tests__/fleet-error-messages.test.js +321 -0
  8. package/dist/config/__tests__/fleet-error-messages.test.js.map +1 -0
  9. package/dist/config/__tests__/fleet-loading.test.d.ts +2 -0
  10. package/dist/config/__tests__/fleet-loading.test.d.ts.map +1 -0
  11. package/dist/config/__tests__/fleet-loading.test.js +627 -0
  12. package/dist/config/__tests__/fleet-loading.test.js.map +1 -0
  13. package/dist/config/__tests__/fleet-naming-and-defaults.test.d.ts +2 -0
  14. package/dist/config/__tests__/fleet-naming-and-defaults.test.d.ts.map +1 -0
  15. package/dist/config/__tests__/fleet-naming-and-defaults.test.js +1024 -0
  16. package/dist/config/__tests__/fleet-naming-and-defaults.test.js.map +1 -0
  17. package/dist/config/__tests__/schema.test.js +172 -1
  18. package/dist/config/__tests__/schema.test.js.map +1 -1
  19. package/dist/config/index.d.ts +2 -2
  20. package/dist/config/index.d.ts.map +1 -1
  21. package/dist/config/index.js +2 -2
  22. package/dist/config/index.js.map +1 -1
  23. package/dist/config/loader.d.ts +63 -2
  24. package/dist/config/loader.d.ts.map +1 -1
  25. package/dist/config/loader.js +309 -74
  26. package/dist/config/loader.js.map +1 -1
  27. package/dist/config/schema.d.ts +58 -0
  28. package/dist/config/schema.d.ts.map +1 -1
  29. package/dist/config/schema.js +29 -0
  30. package/dist/config/schema.js.map +1 -1
  31. package/dist/fleet-manager/__tests__/config-reload-qualified.test.d.ts +8 -0
  32. package/dist/fleet-manager/__tests__/config-reload-qualified.test.d.ts.map +1 -0
  33. package/dist/fleet-manager/__tests__/config-reload-qualified.test.js +416 -0
  34. package/dist/fleet-manager/__tests__/config-reload-qualified.test.js.map +1 -0
  35. package/dist/fleet-manager/__tests__/integration.test.js +2 -2
  36. package/dist/fleet-manager/__tests__/integration.test.js.map +1 -1
  37. package/dist/fleet-manager/chat-manager-interface.d.ts +6 -6
  38. package/dist/fleet-manager/chat-manager-interface.d.ts.map +1 -1
  39. package/dist/fleet-manager/config-reload.d.ts.map +1 -1
  40. package/dist/fleet-manager/config-reload.js +17 -14
  41. package/dist/fleet-manager/config-reload.js.map +1 -1
  42. package/dist/fleet-manager/fleet-manager.d.ts +9 -5
  43. package/dist/fleet-manager/fleet-manager.d.ts.map +1 -1
  44. package/dist/fleet-manager/fleet-manager.js +18 -9
  45. package/dist/fleet-manager/fleet-manager.js.map +1 -1
  46. package/dist/fleet-manager/job-control.js +9 -9
  47. package/dist/fleet-manager/job-control.js.map +1 -1
  48. package/dist/fleet-manager/schedule-executor.js +13 -13
  49. package/dist/fleet-manager/schedule-executor.js.map +1 -1
  50. package/dist/fleet-manager/schedule-management.d.ts.map +1 -1
  51. package/dist/fleet-manager/schedule-management.js +22 -16
  52. package/dist/fleet-manager/schedule-management.js.map +1 -1
  53. package/dist/fleet-manager/status-queries.d.ts +5 -1
  54. package/dist/fleet-manager/status-queries.d.ts.map +1 -1
  55. package/dist/fleet-manager/status-queries.js +16 -8
  56. package/dist/fleet-manager/status-queries.js.map +1 -1
  57. package/dist/fleet-manager/types.d.ts +12 -1
  58. package/dist/fleet-manager/types.d.ts.map +1 -1
  59. package/dist/runner/__tests__/job-executor.test.js +2 -0
  60. package/dist/runner/__tests__/job-executor.test.js.map +1 -1
  61. package/dist/runner/__tests__/sdk-adapter.test.js +2 -0
  62. package/dist/runner/__tests__/sdk-adapter.test.js.map +1 -1
  63. package/dist/scheduler/__tests__/schedule-runner.test.js +2 -0
  64. package/dist/scheduler/__tests__/schedule-runner.test.js.map +1 -1
  65. package/dist/scheduler/__tests__/scheduler.test.js +2 -0
  66. package/dist/scheduler/__tests__/scheduler.test.js.map +1 -1
  67. package/dist/scheduler/schedule-runner.js +12 -12
  68. package/dist/scheduler/schedule-runner.js.map +1 -1
  69. package/dist/scheduler/scheduler.js +22 -22
  70. package/dist/scheduler/scheduler.js.map +1 -1
  71. package/dist/state/__tests__/session.test.js +27 -0
  72. package/dist/state/__tests__/session.test.js.map +1 -1
  73. package/dist/state/fleet-state.d.ts +2 -2
  74. package/dist/state/fleet-state.js +2 -2
  75. package/dist/state/schemas/session-info.d.ts +5 -2
  76. package/dist/state/schemas/session-info.d.ts.map +1 -1
  77. package/dist/state/schemas/session-info.js +5 -2
  78. package/dist/state/schemas/session-info.js.map +1 -1
  79. package/dist/state/session.d.ts +4 -1
  80. package/dist/state/session.d.ts.map +1 -1
  81. package/dist/state/session.js +4 -1
  82. package/dist/state/session.js.map +1 -1
  83. package/dist/state/utils/__tests__/path-safety.test.js +18 -3
  84. package/dist/state/utils/__tests__/path-safety.test.js.map +1 -1
  85. package/dist/state/utils/path-safety.d.ts +4 -2
  86. package/dist/state/utils/path-safety.d.ts.map +1 -1
  87. package/dist/state/utils/path-safety.js +5 -3
  88. package/dist/state/utils/path-safety.js.map +1 -1
  89. package/dist/work-sources/__tests__/manager.test.js +2 -0
  90. package/dist/work-sources/__tests__/manager.test.js.map +1 -1
  91. package/package.json +1 -1
@@ -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. Loads and validates all referenced agent configurations
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 object
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,EAGL,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAwC,MAAM,aAAa,CAAC;AAShF;;GAEG;AACH,eAAO,MAAM,iBAAiB,0CAA2C,CAAC;AAM1E;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,SAAgB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxC,SAAgB,cAAc,EAAE,MAAM,CAAC;gBAE3B,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE;CAU5D;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEvB,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM;CAQhE;AAMD;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,KAAK,EAAE,WAAW,CAAC;IAEnB;;OAEG;IACH,MAAM,EAAE,aAAa,EAAE,CAAC;IAExB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAEzC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC5B;AAkBD;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CAyB3D;AA8JD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,UAAU,CAC9B,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,cAAc,CAAC,CAiMzB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CACN;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,GACvC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CACzC,CAeA"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAwC,MAAM,aAAa,CAAC;AAWhF;;GAEG;AACH,eAAO,MAAM,iBAAiB,0CAA2C,CAAC;AAM1E;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,SAAgB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxC,SAAgB,cAAc,EAAE,MAAM,CAAC;gBAE3B,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE;CAU5D;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEvB,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM;CAQhE;AAED;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,SAAgB,SAAS,EAAE,MAAM,EAAE,CAAC;gBAExB,SAAS,EAAE,MAAM,EAAE;CAOhC;AAED;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,WAAW;IACtD,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,SAAgB,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAGjD,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM;CAclB;AAED;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,WAAW;IACpD,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,SAAgB,OAAO,EAAE,MAAM,CAAC;gBAEpB,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,MAA2B;CAQtE;AAED;;;;;;;GAOG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,cAAc,CAAC,EAAE,MAAM,CAAC;gBAE5B,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,MAAM;CAwBrE;AAMD;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,KAAK,EAAE,WAAW,CAAC;IAEnB;;OAEG;IACH,MAAM,EAAE,aAAa,EAAE,CAAC;IAExB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAEzC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC5B;AAkBD;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CAyB3D;AA2dD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,UAAU,CAC9B,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,cAAc,CAAC,CAmIzB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CACN;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,GACvC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CACzC,CAeA"}
@@ -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. Loads and validates all referenced agent configurations
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 object
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 (resolve relative paths relative to fleet config directory)
335
- // This ensures fleet-level default working directory paths are resolved consistently before merging into agents
336
- if (fleetConfig.defaults?.working_directory) {
337
- const working_directory = fleetConfig.defaults.working_directory;
338
- if (typeof working_directory === "string") {
339
- // Resolve relative string working directory path
340
- if (!working_directory.startsWith("/")) {
341
- fleetConfig.defaults.working_directory = resolve(configDir, working_directory);
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
- // FleetConfigSchema has default of [], so agents is always defined
353
- const agentRefs = fleetConfig.agents;
354
- for (const agentRef of agentRefs) {
355
- const agentPath = resolveAgentPath(agentRef.path, configDir);
356
- // Read agent config file
357
- let agentContent;
358
- try {
359
- agentContent = await readFile(agentPath, "utf-8");
360
- }
361
- catch (error) {
362
- throw new AgentLoadError(agentRef.path, new FileReadError(agentPath, error instanceof Error ? error : undefined));
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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"}