@s_s/harmonia 1.3.0 → 1.4.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 (172) hide show
  1. package/README.md +140 -392
  2. package/build/cli/setup.d.ts +4 -2
  3. package/build/cli/setup.js +44 -18
  4. package/build/cli/setup.js.map +1 -1
  5. package/build/core/action-registry.d.ts +36 -0
  6. package/build/core/action-registry.js +53 -0
  7. package/build/core/action-registry.js.map +1 -0
  8. package/build/core/artifacts.d.ts +66 -0
  9. package/build/core/artifacts.js +178 -0
  10. package/build/core/artifacts.js.map +1 -0
  11. package/build/core/dispatch.d.ts +6 -2
  12. package/build/core/dispatch.js +12 -7
  13. package/build/core/dispatch.js.map +1 -1
  14. package/build/core/overrides.d.ts +19 -26
  15. package/build/core/overrides.js +32 -98
  16. package/build/core/overrides.js.map +1 -1
  17. package/build/core/plugin.d.ts +86 -0
  18. package/build/core/plugin.js +332 -0
  19. package/build/core/plugin.js.map +1 -0
  20. package/build/core/registry.d.ts +4 -5
  21. package/build/core/registry.js +8 -9
  22. package/build/core/registry.js.map +1 -1
  23. package/build/core/reviews.d.ts +11 -12
  24. package/build/core/reviews.js +18 -21
  25. package/build/core/reviews.js.map +1 -1
  26. package/build/core/schema.d.ts +43 -15
  27. package/build/core/schema.js +124 -20
  28. package/build/core/schema.js.map +1 -1
  29. package/build/core/state.d.ts +26 -27
  30. package/build/core/state.js +36 -90
  31. package/build/core/state.js.map +1 -1
  32. package/build/core/steps.d.ts +13 -14
  33. package/build/core/steps.js +26 -29
  34. package/build/core/steps.js.map +1 -1
  35. package/build/core/tree-utils.d.ts +52 -0
  36. package/build/core/tree-utils.js +226 -0
  37. package/build/core/tree-utils.js.map +1 -0
  38. package/build/core/types.d.ts +389 -118
  39. package/build/core/types.js +15 -1
  40. package/build/core/types.js.map +1 -1
  41. package/build/core/workflow-engine.d.ts +68 -0
  42. package/build/core/workflow-engine.js +821 -0
  43. package/build/core/workflow-engine.js.map +1 -0
  44. package/build/core/workflow-validator.d.ts +22 -0
  45. package/build/core/workflow-validator.js +489 -0
  46. package/build/core/workflow-validator.js.map +1 -0
  47. package/build/index.js +25 -26
  48. package/build/index.js.map +1 -1
  49. package/build/setup/inject.d.ts +4 -4
  50. package/build/setup/inject.js +6 -6
  51. package/build/setup/inject.js.map +1 -1
  52. package/build/setup/templates.d.ts +9 -7
  53. package/build/setup/templates.js +68 -172
  54. package/build/setup/templates.js.map +1 -1
  55. package/build/tools/artifact-approve.d.ts +8 -0
  56. package/build/tools/{approve-doc.js → artifact-approve.js} +24 -16
  57. package/build/tools/artifact-approve.js.map +1 -0
  58. package/build/tools/artifact-schema.d.ts +12 -0
  59. package/build/tools/artifact-schema.js +148 -0
  60. package/build/tools/artifact-schema.js.map +1 -0
  61. package/build/tools/artifact-tools.d.ts +18 -0
  62. package/build/tools/artifact-tools.js +465 -0
  63. package/build/tools/artifact-tools.js.map +1 -0
  64. package/build/tools/{report-dispatch.d.ts → dispatch-report.d.ts} +7 -3
  65. package/build/tools/{report-dispatch.js → dispatch-report.js} +106 -28
  66. package/build/tools/dispatch-report.js.map +1 -0
  67. package/build/tools/engine-helpers.d.ts +41 -0
  68. package/build/tools/engine-helpers.js +182 -0
  69. package/build/tools/engine-helpers.js.map +1 -0
  70. package/build/tools/get-project-status.d.ts +6 -4
  71. package/build/tools/get-project-status.js +265 -248
  72. package/build/tools/get-project-status.js.map +1 -1
  73. package/build/tools/get-role-prompt.d.ts +1 -1
  74. package/build/tools/get-role-prompt.js +7 -41
  75. package/build/tools/get-role-prompt.js.map +1 -1
  76. package/build/tools/iteration-start.d.ts +7 -4
  77. package/build/tools/iteration-start.js +45 -19
  78. package/build/tools/iteration-start.js.map +1 -1
  79. package/build/tools/loop-done.d.ts +11 -0
  80. package/build/tools/loop-done.js +109 -0
  81. package/build/tools/loop-done.js.map +1 -0
  82. package/build/tools/patch-start.d.ts +4 -2
  83. package/build/tools/patch-start.js +36 -11
  84. package/build/tools/patch-start.js.map +1 -1
  85. package/build/tools/project-init.d.ts +5 -5
  86. package/build/tools/project-init.js +41 -10
  87. package/build/tools/project-init.js.map +1 -1
  88. package/build/tools/role-dispatch.d.ts +55 -0
  89. package/build/tools/role-dispatch.js +508 -0
  90. package/build/tools/role-dispatch.js.map +1 -0
  91. package/build/tools/utils.d.ts +6 -0
  92. package/build/tools/utils.js +36 -0
  93. package/build/tools/utils.js.map +1 -1
  94. package/package.json +1 -1
  95. package/{build/hooks/claude-code.js → workflows/dev/hooks/claude.js} +34 -23
  96. package/{build → workflows/dev}/hooks/content.js +27 -18
  97. package/workflows/dev/hooks/index.js +52 -0
  98. package/{build → workflows/dev}/hooks/openclaw.js +31 -20
  99. package/{build → workflows/dev}/hooks/opencode.js +31 -20
  100. package/workflows/dev/roles/architect.md +68 -28
  101. package/workflows/dev/roles/coordinator.md +103 -0
  102. package/workflows/dev/roles/developer.md +5 -5
  103. package/workflows/dev/roles/tester.md +19 -19
  104. package/workflows/dev/schemas/api-contract.json +42 -0
  105. package/workflows/dev/schemas/api-design.json +30 -13
  106. package/workflows/dev/schemas/data-model.json +20 -7
  107. package/workflows/dev/schemas/prd.completeness-check.json +6 -5
  108. package/workflows/dev/schemas/prd.draft.json +13 -5
  109. package/workflows/dev/schemas/prd.final.json +34 -11
  110. package/workflows/dev/schemas/prd.json +29 -11
  111. package/workflows/dev/schemas/prd.requirements.json +6 -5
  112. package/workflows/dev/schemas/prototype.json +6 -2
  113. package/workflows/dev/schemas/task-breakdown.coarse.json +4 -3
  114. package/workflows/dev/schemas/task-breakdown.dependencies.json +5 -4
  115. package/workflows/dev/schemas/task-breakdown.detailed.json +8 -3
  116. package/workflows/dev/schemas/task-breakdown.final.json +8 -3
  117. package/workflows/dev/schemas/task-breakdown.json +8 -3
  118. package/workflows/dev/schemas/tech-design.analysis.json +6 -5
  119. package/workflows/dev/schemas/tech-design.draft.json +14 -5
  120. package/workflows/dev/schemas/tech-design.final.json +39 -13
  121. package/workflows/dev/schemas/tech-design.json +34 -13
  122. package/workflows/dev/schemas/tech-design.research.json +21 -0
  123. package/workflows/dev/schemas/test-plan.json +17 -7
  124. package/workflows/dev/schemas/test-report.json +26 -9
  125. package/workflows/dev/schemas/user-stories.json +7 -3
  126. package/workflows/dev/tools/index.js +23 -0
  127. package/workflows/dev/workflow.json +234 -101
  128. package/build/core/docs.d.ts +0 -36
  129. package/build/core/docs.js +0 -96
  130. package/build/core/docs.js.map +0 -1
  131. package/build/core/workflow.d.ts +0 -33
  132. package/build/core/workflow.js +0 -140
  133. package/build/core/workflow.js.map +0 -1
  134. package/build/hooks/claude-code.d.ts +0 -20
  135. package/build/hooks/claude-code.js.map +0 -1
  136. package/build/hooks/content.d.ts +0 -43
  137. package/build/hooks/content.js.map +0 -1
  138. package/build/hooks/install.d.ts +0 -40
  139. package/build/hooks/install.js +0 -63
  140. package/build/hooks/install.js.map +0 -1
  141. package/build/hooks/openclaw.d.ts +0 -24
  142. package/build/hooks/openclaw.js.map +0 -1
  143. package/build/hooks/opencode.d.ts +0 -29
  144. package/build/hooks/opencode.js.map +0 -1
  145. package/build/tools/approve-doc.d.ts +0 -6
  146. package/build/tools/approve-doc.js.map +0 -1
  147. package/build/tools/dispatch-role.d.ts +0 -16
  148. package/build/tools/dispatch-role.js +0 -266
  149. package/build/tools/dispatch-role.js.map +0 -1
  150. package/build/tools/doc-tools.d.ts +0 -16
  151. package/build/tools/doc-tools.js +0 -425
  152. package/build/tools/doc-tools.js.map +0 -1
  153. package/build/tools/override-tools.d.ts +0 -6
  154. package/build/tools/override-tools.js +0 -129
  155. package/build/tools/override-tools.js.map +0 -1
  156. package/build/tools/report-dispatch.js.map +0 -1
  157. package/build/tools/set-scale.d.ts +0 -6
  158. package/build/tools/set-scale.js +0 -95
  159. package/build/tools/set-scale.js.map +0 -1
  160. package/build/tools/setup-project.d.ts +0 -8
  161. package/build/tools/setup-project.js +0 -116
  162. package/build/tools/setup-project.js.map +0 -1
  163. package/build/tools/update-phase.d.ts +0 -12
  164. package/build/tools/update-phase.js +0 -148
  165. package/build/tools/update-phase.js.map +0 -1
  166. package/workflows/dev/roles/pm.md +0 -99
  167. package/workflows/dev/schemas/deploy.json +0 -20
  168. package/workflows/dev/schemas/fsd.json +0 -25
  169. package/workflows/dev/schemas/project-plan.json +0 -20
  170. package/workflows/dev/schemas/retrospective.json +0 -20
  171. package/workflows/dev/schemas/risk-assessment.json +0 -15
  172. package/workflows/dev/schemas/tech-design.api-contract.json +0 -20
@@ -1,62 +1,55 @@
1
1
  /**
2
- * Override configuration — three-layer merge system.
2
+ * Override configuration — two-layer system: project overrides > workflow defaults.
3
3
  *
4
- * Priority: project-level > global-level > workflow defaults
4
+ * Project-level overrides are stored in:
5
+ * <data_dir>/<project_name>/overrides.json
5
6
  *
6
- * Files:
7
- * <data_dir>/overrides.json (global)
8
- * <data_dir>/<project_name>/overrides.json (project)
7
+ * Workflow defaults come from the workflow definition (artifactDefinitions, roles).
8
+ * The override system lets users customize per-project settings without modifying
9
+ * the workflow definition itself.
9
10
  */
10
- import type { CapabilityOverride, DocDefinition, OverrideConfig } from './types.js';
11
- /**
12
- * Read global overrides (<data_dir>/overrides.json).
13
- */
14
- export declare function readGlobalOverrides(): Promise<OverrideConfig>;
11
+ import type { CapabilityOverride, ArtifactDefinition, OverrideConfig } from './types.js';
15
12
  /**
16
13
  * Read project-level overrides (<data_dir>/<project_name>/overrides.json).
17
14
  */
18
15
  export declare function readProjectOverrides(projectName: string): Promise<OverrideConfig>;
19
- /**
20
- * Write global overrides.
21
- */
22
- export declare function writeGlobalOverrides(config: OverrideConfig): Promise<void>;
23
16
  /**
24
17
  * Write project-level overrides.
25
18
  */
26
19
  export declare function writeProjectOverrides(projectName: string, config: OverrideConfig): Promise<void>;
27
20
  /**
28
- * Get the fully merged override config for a project.
29
- * Priority: project > global
21
+ * Get the override config for a project.
22
+ * Returns the project-level overrides directly — no global merge.
30
23
  */
31
24
  export declare function getMergedOverrides(projectName: string): Promise<OverrideConfig>;
32
25
  /**
33
- * Resolve whether a specific doc requires review.
26
+ * Resolve whether a specific artifact requires review.
34
27
  *
35
- * Priority: project override > global override > workflow default
28
+ * Priority: project override > workflow default
36
29
  */
37
- export declare function resolveDocReview(docId: string, docDef: DocDefinition, overrides: OverrideConfig): boolean;
30
+ export declare function resolveArtifactReview(artifactId: string, artifactDef: ArtifactDefinition, overrides: OverrideConfig): boolean;
38
31
  /**
39
32
  * Resolve the capability override for a specific role + capability.
40
33
  * Returns null if no override is configured.
41
34
  */
42
35
  export declare function resolveCapabilityOverride(roleId: string, capabilityId: string, overrides: OverrideConfig): CapabilityOverride | null;
43
36
  /**
44
- * Set a single role capability override at project or global level.
37
+ * Set a single role capability override at project level.
45
38
  */
46
- export declare function setCapabilityOverride(scope: 'global' | 'project', projectName: string | null, roleId: string, capabilityId: string, override: CapabilityOverride): Promise<void>;
39
+ export declare function setCapabilityOverride(projectName: string, roleId: string, capabilityId: string, override: CapabilityOverride): Promise<void>;
47
40
  /**
48
- * Set review override for a specific doc at project or global level.
41
+ * Set review override for a specific artifact at project level.
49
42
  */
50
- export declare function setReviewOverride(scope: 'global' | 'project', projectName: string | null, docId: string, enabled: boolean): Promise<void>;
43
+ export declare function setReviewOverride(projectName: string, artifactId: string, enabled: boolean): Promise<void>;
51
44
  /**
52
45
  * Resolve the agent/model configuration for a role.
53
- * Returns { agent, model } from the merged overrides, or undefined fields if not set.
46
+ * Returns { agent, model } from the overrides, or undefined fields if not set.
54
47
  */
55
48
  export declare function resolveRoleConfig(roleId: string, overrides: OverrideConfig): {
56
49
  agent?: string;
57
50
  model?: string;
58
51
  };
59
52
  /**
60
- * Set agent/model config for a role at project or global level.
53
+ * Set agent/model config for a role at project level.
61
54
  */
62
- export declare function setRoleAgentConfig(scope: 'global' | 'project', projectName: string | null, roleId: string, agent?: string, model?: string): Promise<void>;
55
+ export declare function setRoleAgentConfig(projectName: string, roleId: string, agent?: string, model?: string): Promise<void>;
@@ -1,15 +1,16 @@
1
1
  /**
2
- * Override configuration — three-layer merge system.
2
+ * Override configuration — two-layer system: project overrides > workflow defaults.
3
3
  *
4
- * Priority: project-level > global-level > workflow defaults
4
+ * Project-level overrides are stored in:
5
+ * <data_dir>/<project_name>/overrides.json
5
6
  *
6
- * Files:
7
- * <data_dir>/overrides.json (global)
8
- * <data_dir>/<project_name>/overrides.json (project)
7
+ * Workflow defaults come from the workflow definition (artifactDefinitions, roles).
8
+ * The override system lets users customize per-project settings without modifying
9
+ * the workflow definition itself.
9
10
  */
10
11
  import { readFile, writeFile, mkdir } from 'node:fs/promises';
11
12
  import { join, dirname } from 'node:path';
12
- import { getGlobalDir, getProjectDataDir } from './registry.js';
13
+ import { getProjectDataDir } from './registry.js';
13
14
  const OVERRIDES_FILE = 'overrides.json';
14
15
  /**
15
16
  * Read an override config file. Returns empty config if file doesn't exist.
@@ -23,12 +24,6 @@ async function readOverrideFile(filePath) {
23
24
  return {};
24
25
  }
25
26
  }
26
- /**
27
- * Read global overrides (<data_dir>/overrides.json).
28
- */
29
- export async function readGlobalOverrides() {
30
- return readOverrideFile(join(getGlobalDir(), OVERRIDES_FILE));
31
- }
32
27
  /**
33
28
  * Read project-level overrides (<data_dir>/<project_name>/overrides.json).
34
29
  */
@@ -42,12 +37,6 @@ async function writeOverrideFile(filePath, config) {
42
37
  await mkdir(dirname(filePath), { recursive: true });
43
38
  await writeFile(filePath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
44
39
  }
45
- /**
46
- * Write global overrides.
47
- */
48
- export async function writeGlobalOverrides(config) {
49
- await writeOverrideFile(join(getGlobalDir(), OVERRIDES_FILE), config);
50
- }
51
40
  /**
52
41
  * Write project-level overrides.
53
42
  */
@@ -55,63 +44,23 @@ export async function writeProjectOverrides(projectName, config) {
55
44
  await writeOverrideFile(join(getProjectDataDir(projectName), OVERRIDES_FILE), config);
56
45
  }
57
46
  /**
58
- * Merge two override configs. `higher` takes priority over `lower`.
59
- */
60
- function mergeConfigs(lower, higher) {
61
- const merged = {};
62
- // Merge review: higher wins entirely if present
63
- if (higher.review !== undefined) {
64
- merged.review = higher.review;
65
- }
66
- else if (lower.review !== undefined) {
67
- merged.review = lower.review;
68
- }
69
- // Merge roles: deep merge per role (agent, model, capabilities)
70
- const lowerRoles = lower.roles ?? {};
71
- const higherRoles = higher.roles ?? {};
72
- const allRoleIds = new Set([...Object.keys(lowerRoles), ...Object.keys(higherRoles)]);
73
- if (allRoleIds.size > 0) {
74
- merged.roles = {};
75
- for (const roleId of allRoleIds) {
76
- const lo = lowerRoles[roleId] ?? {};
77
- const hi = higherRoles[roleId] ?? {};
78
- merged.roles[roleId] = {
79
- ...lo,
80
- ...hi,
81
- // Deep merge capabilities
82
- capabilities: {
83
- ...(lo.capabilities ?? {}),
84
- ...(hi.capabilities ?? {}),
85
- },
86
- };
87
- // Clean up empty capabilities
88
- if (Object.keys(merged.roles[roleId].capabilities).length === 0) {
89
- delete merged.roles[roleId].capabilities;
90
- }
91
- }
92
- }
93
- return merged;
94
- }
95
- /**
96
- * Get the fully merged override config for a project.
97
- * Priority: project > global
47
+ * Get the override config for a project.
48
+ * Returns the project-level overrides directly — no global merge.
98
49
  */
99
50
  export async function getMergedOverrides(projectName) {
100
- const global = await readGlobalOverrides();
101
- const project = await readProjectOverrides(projectName);
102
- return mergeConfigs(global, project);
51
+ return readProjectOverrides(projectName);
103
52
  }
104
53
  /**
105
- * Resolve whether a specific doc requires review.
54
+ * Resolve whether a specific artifact requires review.
106
55
  *
107
- * Priority: project override > global override > workflow default
56
+ * Priority: project override > workflow default
108
57
  */
109
- export function resolveDocReview(docId, docDef, overrides) {
58
+ export function resolveArtifactReview(artifactId, artifactDef, overrides) {
110
59
  const review = overrides.review;
111
- // Override is a per-doc record
60
+ // Override is a per-artifact record
112
61
  if (typeof review === 'object' && review !== null) {
113
- if (docId in review) {
114
- return review[docId];
62
+ if (artifactId in review) {
63
+ return review[artifactId];
115
64
  }
116
65
  // Not mentioned in override, fall through to workflow default
117
66
  }
@@ -120,7 +69,7 @@ export function resolveDocReview(docId, docDef, overrides) {
120
69
  return review;
121
70
  }
122
71
  // No override — use workflow default
123
- return docDef.review ?? false;
72
+ return artifactDef.review ?? false;
124
73
  }
125
74
  /**
126
75
  * Resolve the capability override for a specific role + capability.
@@ -130,10 +79,10 @@ export function resolveCapabilityOverride(roleId, capabilityId, overrides) {
130
79
  return overrides.roles?.[roleId]?.capabilities?.[capabilityId] ?? null;
131
80
  }
132
81
  /**
133
- * Set a single role capability override at project or global level.
82
+ * Set a single role capability override at project level.
134
83
  */
135
- export async function setCapabilityOverride(scope, projectName, roleId, capabilityId, override) {
136
- const config = scope === 'global' ? await readGlobalOverrides() : await readProjectOverrides(projectName);
84
+ export async function setCapabilityOverride(projectName, roleId, capabilityId, override) {
85
+ const config = await readProjectOverrides(projectName);
137
86
  if (!config.roles) {
138
87
  config.roles = {};
139
88
  }
@@ -144,33 +93,23 @@ export async function setCapabilityOverride(scope, projectName, roleId, capabili
144
93
  config.roles[roleId].capabilities = {};
145
94
  }
146
95
  config.roles[roleId].capabilities[capabilityId] = override;
147
- if (scope === 'global') {
148
- await writeGlobalOverrides(config);
149
- }
150
- else {
151
- await writeProjectOverrides(projectName, config);
152
- }
96
+ await writeProjectOverrides(projectName, config);
153
97
  }
154
98
  /**
155
- * Set review override for a specific doc at project or global level.
99
+ * Set review override for a specific artifact at project level.
156
100
  */
157
- export async function setReviewOverride(scope, projectName, docId, enabled) {
158
- const config = scope === 'global' ? await readGlobalOverrides() : await readProjectOverrides(projectName);
159
- // Ensure review is a per-doc record
101
+ export async function setReviewOverride(projectName, artifactId, enabled) {
102
+ const config = await readProjectOverrides(projectName);
103
+ // Ensure review is a per-artifact record
160
104
  if (typeof config.review !== 'object' || config.review === null) {
161
105
  config.review = {};
162
106
  }
163
- config.review[docId] = enabled;
164
- if (scope === 'global') {
165
- await writeGlobalOverrides(config);
166
- }
167
- else {
168
- await writeProjectOverrides(projectName, config);
169
- }
107
+ config.review[artifactId] = enabled;
108
+ await writeProjectOverrides(projectName, config);
170
109
  }
171
110
  /**
172
111
  * Resolve the agent/model configuration for a role.
173
- * Returns { agent, model } from the merged overrides, or undefined fields if not set.
112
+ * Returns { agent, model } from the overrides, or undefined fields if not set.
174
113
  */
175
114
  export function resolveRoleConfig(roleId, overrides) {
176
115
  const role = overrides.roles?.[roleId];
@@ -182,10 +121,10 @@ export function resolveRoleConfig(roleId, overrides) {
182
121
  };
183
122
  }
184
123
  /**
185
- * Set agent/model config for a role at project or global level.
124
+ * Set agent/model config for a role at project level.
186
125
  */
187
- export async function setRoleAgentConfig(scope, projectName, roleId, agent, model) {
188
- const config = scope === 'global' ? await readGlobalOverrides() : await readProjectOverrides(projectName);
126
+ export async function setRoleAgentConfig(projectName, roleId, agent, model) {
127
+ const config = await readProjectOverrides(projectName);
189
128
  if (!config.roles) {
190
129
  config.roles = {};
191
130
  }
@@ -196,11 +135,6 @@ export async function setRoleAgentConfig(scope, projectName, roleId, agent, mode
196
135
  config.roles[roleId].agent = agent;
197
136
  if (model)
198
137
  config.roles[roleId].model = model;
199
- if (scope === 'global') {
200
- await writeGlobalOverrides(config);
201
- }
202
- else {
203
- await writeProjectOverrides(projectName, config);
204
- }
138
+ await writeProjectOverrides(projectName, config);
205
139
  }
206
140
  //# sourceMappingURL=overrides.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../src/core/overrides.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../src/core/overrides.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Plugin system — discovery, loading, and registration of workflow plugins.
3
+ *
4
+ * A workflow plugin is a directory containing:
5
+ * workflow.json — Node tree definition + artifact definitions
6
+ * roles/*.md — Role prompts with YAML frontmatter
7
+ * schemas/*.json — Artifact schemas for validation
8
+ * hooks/index.js — Optional, exports createHooks()
9
+ * tools/index.js — Optional, exports registerActions()
10
+ *
11
+ * Loading flow:
12
+ * 1. Read workflow.json → parse node tree + artifact definitions
13
+ * 2. Validate via workflow-validator
14
+ * 3. Scan roles/ → parse role files
15
+ * 4. Scan schemas/ → load artifact schemas
16
+ * 5. If tools/index.js exists → dynamic import, register actions
17
+ * 6. If hooks/index.js exists → record hook creator (not executed yet)
18
+ */
19
+ import type { WorkflowPlugin, PluginEntry } from './types.js';
20
+ export declare class PluginLoadError extends Error {
21
+ constructor(pluginPath: string, reason: string);
22
+ }
23
+ export declare class PluginValidationError extends Error {
24
+ errors: {
25
+ type: string;
26
+ message: string;
27
+ nodeId?: string;
28
+ }[];
29
+ constructor(pluginPath: string, errors: {
30
+ type: string;
31
+ message: string;
32
+ nodeId?: string;
33
+ }[]);
34
+ }
35
+ export declare class WorkflowNotFoundError extends Error {
36
+ constructor(name: string, searched: string[]);
37
+ }
38
+ /**
39
+ * Load a workflow plugin from a directory.
40
+ *
41
+ * Full loading flow:
42
+ * 1. Read workflow.json → parse definition + artifact definitions
43
+ * 2. Validate the workflow definition (static analysis)
44
+ * 3. Load roles from roles/
45
+ * 4. Load schemas from schemas/
46
+ * 5. Optionally load actions from tools/index.js
47
+ * 6. Optionally load hook creator from hooks/index.js
48
+ *
49
+ * @param pluginPath - Absolute path to the plugin directory
50
+ * @param config - Optional plugin configuration
51
+ * @param skipValidation - Skip workflow validation (for testing)
52
+ */
53
+ export declare function loadPlugin(pluginPath: string, config?: unknown, skipValidation?: boolean): Promise<WorkflowPlugin>;
54
+ /**
55
+ * Discover registered plugins from a config.json file.
56
+ *
57
+ * Config format:
58
+ * ```json
59
+ * {
60
+ * "workflows": {
61
+ * "dev": { "path": "/path/to/dev/plugin" },
62
+ * "custom": { "path": "/path/to/custom", "config": { ... } }
63
+ * }
64
+ * }
65
+ * ```
66
+ */
67
+ export declare function discoverPlugins(configPath: string): Promise<PluginEntry[]>;
68
+ /**
69
+ * Resolve the actual directory for a workflow name.
70
+ * Searches only the single workflows directory (<data_dir>/harmonia/.workflows/).
71
+ */
72
+ export declare function resolveWorkflowDir(workflowsDir: string, name: string): Promise<string>;
73
+ /**
74
+ * Load a single workflow by name.
75
+ * Delegates to loadPlugin() internally.
76
+ *
77
+ * @param workflowsDir - Workflows directory (<data_dir>/harmonia/.workflows)
78
+ * @param name - Workflow name (directory name)
79
+ */
80
+ export declare function loadWorkflow(workflowsDir: string, name: string): Promise<WorkflowPlugin>;
81
+ /**
82
+ * List all available workflow names from the workflows directory.
83
+ *
84
+ * @param workflowsDir - Workflows directory (<data_dir>/harmonia/.workflows)
85
+ */
86
+ export declare function listWorkflows(workflowsDir: string): Promise<string[]>;