@s_s/harmonia 1.2.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 (180) 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 +18 -11
  12. package/build/core/dispatch.js +43 -33
  13. package/build/core/dispatch.js.map +1 -1
  14. package/build/core/issues.d.ts +37 -0
  15. package/build/core/issues.js +100 -0
  16. package/build/core/issues.js.map +1 -0
  17. package/build/core/overrides.d.ts +19 -26
  18. package/build/core/overrides.js +32 -98
  19. package/build/core/overrides.js.map +1 -1
  20. package/build/core/plugin.d.ts +86 -0
  21. package/build/core/plugin.js +332 -0
  22. package/build/core/plugin.js.map +1 -0
  23. package/build/core/registry.d.ts +36 -3
  24. package/build/core/registry.js +63 -5
  25. package/build/core/registry.js.map +1 -1
  26. package/build/core/reviews.d.ts +13 -13
  27. package/build/core/reviews.js +31 -32
  28. package/build/core/reviews.js.map +1 -1
  29. package/build/core/schema.d.ts +43 -15
  30. package/build/core/schema.js +124 -20
  31. package/build/core/schema.js.map +1 -1
  32. package/build/core/state.d.ts +29 -22
  33. package/build/core/state.js +49 -81
  34. package/build/core/state.js.map +1 -1
  35. package/build/core/steps.d.ts +15 -15
  36. package/build/core/steps.js +32 -33
  37. package/build/core/steps.js.map +1 -1
  38. package/build/core/tree-utils.d.ts +52 -0
  39. package/build/core/tree-utils.js +226 -0
  40. package/build/core/tree-utils.js.map +1 -0
  41. package/build/core/types.d.ts +417 -117
  42. package/build/core/types.js +15 -1
  43. package/build/core/types.js.map +1 -1
  44. package/build/core/workflow-engine.d.ts +68 -0
  45. package/build/core/workflow-engine.js +821 -0
  46. package/build/core/workflow-engine.js.map +1 -0
  47. package/build/core/workflow-validator.d.ts +22 -0
  48. package/build/core/workflow-validator.js +489 -0
  49. package/build/core/workflow-validator.js.map +1 -0
  50. package/build/index.js +28 -25
  51. package/build/index.js.map +1 -1
  52. package/build/setup/inject.d.ts +4 -4
  53. package/build/setup/inject.js +6 -6
  54. package/build/setup/inject.js.map +1 -1
  55. package/build/setup/templates.d.ts +9 -7
  56. package/build/setup/templates.js +68 -103
  57. package/build/setup/templates.js.map +1 -1
  58. package/build/tools/artifact-approve.d.ts +8 -0
  59. package/build/tools/artifact-approve.js +94 -0
  60. package/build/tools/artifact-approve.js.map +1 -0
  61. package/build/tools/artifact-schema.d.ts +12 -0
  62. package/build/tools/artifact-schema.js +148 -0
  63. package/build/tools/artifact-schema.js.map +1 -0
  64. package/build/tools/artifact-tools.d.ts +18 -0
  65. package/build/tools/artifact-tools.js +465 -0
  66. package/build/tools/artifact-tools.js.map +1 -0
  67. package/build/tools/{report-dispatch.d.ts → dispatch-report.d.ts} +7 -3
  68. package/build/tools/dispatch-report.js +261 -0
  69. package/build/tools/dispatch-report.js.map +1 -0
  70. package/build/tools/engine-helpers.d.ts +41 -0
  71. package/build/tools/engine-helpers.js +182 -0
  72. package/build/tools/engine-helpers.js.map +1 -0
  73. package/build/tools/get-project-status.d.ts +6 -4
  74. package/build/tools/get-project-status.js +308 -246
  75. package/build/tools/get-project-status.js.map +1 -1
  76. package/build/tools/get-role-prompt.d.ts +1 -1
  77. package/build/tools/get-role-prompt.js +7 -41
  78. package/build/tools/get-role-prompt.js.map +1 -1
  79. package/build/tools/issue-tools.d.ts +10 -0
  80. package/build/tools/issue-tools.js +169 -0
  81. package/build/tools/issue-tools.js.map +1 -0
  82. package/build/tools/iteration-start.d.ts +7 -4
  83. package/build/tools/iteration-start.js +51 -20
  84. package/build/tools/iteration-start.js.map +1 -1
  85. package/build/tools/loop-done.d.ts +11 -0
  86. package/build/tools/loop-done.js +109 -0
  87. package/build/tools/loop-done.js.map +1 -0
  88. package/build/tools/patch-start.d.ts +16 -0
  89. package/build/tools/patch-start.js +122 -0
  90. package/build/tools/patch-start.js.map +1 -0
  91. package/build/tools/project-init.d.ts +5 -5
  92. package/build/tools/project-init.js +47 -18
  93. package/build/tools/project-init.js.map +1 -1
  94. package/build/tools/role-dispatch.d.ts +55 -0
  95. package/build/tools/role-dispatch.js +508 -0
  96. package/build/tools/role-dispatch.js.map +1 -0
  97. package/build/tools/utils.d.ts +40 -0
  98. package/build/tools/utils.js +97 -0
  99. package/build/tools/utils.js.map +1 -0
  100. package/package.json +1 -1
  101. package/{build/hooks/claude-code.js → workflows/dev/hooks/claude.js} +34 -23
  102. package/{build → workflows/dev}/hooks/content.js +27 -18
  103. package/workflows/dev/hooks/index.js +52 -0
  104. package/{build → workflows/dev}/hooks/openclaw.js +31 -20
  105. package/{build → workflows/dev}/hooks/opencode.js +31 -20
  106. package/workflows/dev/roles/architect.md +68 -28
  107. package/workflows/dev/roles/coordinator.md +103 -0
  108. package/workflows/dev/roles/developer.md +5 -5
  109. package/workflows/dev/roles/tester.md +19 -19
  110. package/workflows/dev/schemas/api-contract.json +42 -0
  111. package/workflows/dev/schemas/api-design.json +30 -13
  112. package/workflows/dev/schemas/data-model.json +20 -7
  113. package/workflows/dev/schemas/prd.completeness-check.json +6 -5
  114. package/workflows/dev/schemas/prd.draft.json +13 -5
  115. package/workflows/dev/schemas/prd.final.json +34 -11
  116. package/workflows/dev/schemas/prd.json +29 -11
  117. package/workflows/dev/schemas/prd.requirements.json +6 -5
  118. package/workflows/dev/schemas/prototype.json +6 -2
  119. package/workflows/dev/schemas/task-breakdown.coarse.json +4 -3
  120. package/workflows/dev/schemas/task-breakdown.dependencies.json +5 -4
  121. package/workflows/dev/schemas/task-breakdown.detailed.json +8 -3
  122. package/workflows/dev/schemas/task-breakdown.final.json +8 -3
  123. package/workflows/dev/schemas/task-breakdown.json +8 -3
  124. package/workflows/dev/schemas/tech-design.analysis.json +6 -5
  125. package/workflows/dev/schemas/tech-design.draft.json +14 -5
  126. package/workflows/dev/schemas/tech-design.final.json +39 -13
  127. package/workflows/dev/schemas/tech-design.json +34 -13
  128. package/workflows/dev/schemas/tech-design.research.json +21 -0
  129. package/workflows/dev/schemas/test-plan.json +17 -7
  130. package/workflows/dev/schemas/test-report.json +26 -9
  131. package/workflows/dev/schemas/user-stories.json +7 -3
  132. package/workflows/dev/tools/index.js +23 -0
  133. package/workflows/dev/workflow.json +234 -101
  134. package/build/core/docs.d.ts +0 -32
  135. package/build/core/docs.js +0 -91
  136. package/build/core/docs.js.map +0 -1
  137. package/build/core/workflow.d.ts +0 -33
  138. package/build/core/workflow.js +0 -140
  139. package/build/core/workflow.js.map +0 -1
  140. package/build/hooks/claude-code.d.ts +0 -20
  141. package/build/hooks/claude-code.js.map +0 -1
  142. package/build/hooks/content.d.ts +0 -43
  143. package/build/hooks/content.js.map +0 -1
  144. package/build/hooks/install.d.ts +0 -40
  145. package/build/hooks/install.js +0 -63
  146. package/build/hooks/install.js.map +0 -1
  147. package/build/hooks/openclaw.d.ts +0 -24
  148. package/build/hooks/openclaw.js.map +0 -1
  149. package/build/hooks/opencode.d.ts +0 -29
  150. package/build/hooks/opencode.js.map +0 -1
  151. package/build/tools/approve-doc.d.ts +0 -6
  152. package/build/tools/approve-doc.js +0 -108
  153. package/build/tools/approve-doc.js.map +0 -1
  154. package/build/tools/dispatch-role.d.ts +0 -16
  155. package/build/tools/dispatch-role.js +0 -277
  156. package/build/tools/dispatch-role.js.map +0 -1
  157. package/build/tools/doc-tools.d.ts +0 -16
  158. package/build/tools/doc-tools.js +0 -389
  159. package/build/tools/doc-tools.js.map +0 -1
  160. package/build/tools/override-tools.d.ts +0 -6
  161. package/build/tools/override-tools.js +0 -129
  162. package/build/tools/override-tools.js.map +0 -1
  163. package/build/tools/report-dispatch.js +0 -194
  164. package/build/tools/report-dispatch.js.map +0 -1
  165. package/build/tools/set-scale.d.ts +0 -6
  166. package/build/tools/set-scale.js +0 -107
  167. package/build/tools/set-scale.js.map +0 -1
  168. package/build/tools/setup-project.d.ts +0 -8
  169. package/build/tools/setup-project.js +0 -116
  170. package/build/tools/setup-project.js.map +0 -1
  171. package/build/tools/update-phase.d.ts +0 -12
  172. package/build/tools/update-phase.js +0 -159
  173. package/build/tools/update-phase.js.map +0 -1
  174. package/workflows/dev/roles/pm.md +0 -99
  175. package/workflows/dev/schemas/deploy.json +0 -20
  176. package/workflows/dev/schemas/fsd.json +0 -25
  177. package/workflows/dev/schemas/project-plan.json +0 -20
  178. package/workflows/dev/schemas/retrospective.json +0 -20
  179. package/workflows/dev/schemas/risk-assessment.json +0 -15
  180. package/workflows/dev/schemas/tech-design.api-contract.json +0 -20
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-engine.js","sourceRoot":"","sources":["../../src/core/workflow-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Static workflow definition validator.
3
+ *
4
+ * Runs at load time to validate the structural integrity of a WorkflowDefinition.
5
+ * Checks:
6
+ * 1. ID uniqueness across tree + floating nodes
7
+ * 2. Goto target legality (exists + reachable in execution order)
8
+ * 3. Cycle detection (no exit-less loops; maxRetries = ok, bubbleFailure or onExhausted provides exit)
9
+ * 4. failStrategy required for parallel nodes
10
+ * 5. Floating node reference validity (onExhausted targets exist in floatingNodes)
11
+ * 6. Role reference validity (task.role must exist in provided roles set)
12
+ * 7. Coordinator validity (definition.coordinator must exist in roles)
13
+ */
14
+ import type { WorkflowDefinition, ValidationError, ArtifactDefinition } from './types.js';
15
+ /**
16
+ * Validate a workflow definition.
17
+ *
18
+ * @param definition - The workflow definition to validate
19
+ * @param availableRoles - Set of role IDs available in the role registry
20
+ * @returns Array of validation errors (empty = valid)
21
+ */
22
+ export declare function validateWorkflow(definition: WorkflowDefinition, availableRoles: Set<string>, artifactDefinitions?: Record<string, ArtifactDefinition>): ValidationError[];
@@ -0,0 +1,489 @@
1
+ /**
2
+ * Static workflow definition validator.
3
+ *
4
+ * Runs at load time to validate the structural integrity of a WorkflowDefinition.
5
+ * Checks:
6
+ * 1. ID uniqueness across tree + floating nodes
7
+ * 2. Goto target legality (exists + reachable in execution order)
8
+ * 3. Cycle detection (no exit-less loops; maxRetries = ok, bubbleFailure or onExhausted provides exit)
9
+ * 4. failStrategy required for parallel nodes
10
+ * 5. Floating node reference validity (onExhausted targets exist in floatingNodes)
11
+ * 6. Role reference validity (task.role must exist in provided roles set)
12
+ * 7. Coordinator validity (definition.coordinator must exist in roles)
13
+ */
14
+ // ─── Utility: collect reachable IDs (loop-opaque) ───
15
+ /**
16
+ * Like collectSubtreeIds, but treats loop nodes as opaque — only collects the
17
+ * loop's own ID without entering its body. This prevents external nodes from
18
+ * being able to goto into loop body internals, which would bypass loop state
19
+ * initialization.
20
+ */
21
+ function collectReachableIds(node, ids) {
22
+ ids.add(node.id);
23
+ switch (node.type) {
24
+ case 'sequence':
25
+ case 'parallel':
26
+ for (const child of node.children) {
27
+ collectReachableIds(child, ids);
28
+ }
29
+ break;
30
+ case 'gate':
31
+ collectReachableIds(node.pass, ids);
32
+ if ('type' in node.fail) {
33
+ collectReachableIds(node.fail, ids);
34
+ }
35
+ break;
36
+ case 'loop':
37
+ // Intentionally do NOT recurse into node.body.
38
+ // Loop body is an internal implementation detail; external nodes
39
+ // should goto the loop node itself to re-enter the loop.
40
+ break;
41
+ case 'task':
42
+ break;
43
+ }
44
+ }
45
+ // ─── Utility: check if subtree contains at least one task node ───
46
+ /**
47
+ * Recursively checks whether the given node subtree contains at least one task node.
48
+ * Used to validate that loop bodies are not empty/synchronous-only, which would cause
49
+ * stack overflow via synchronous recursive iteration.
50
+ *
51
+ * Known edge case (accepted as 80/20 fix): if a gate node's pass branch has no task
52
+ * but its fail branch has a task (or is a GotoTarget), this function returns true
53
+ * (any branch having a task suffices). At runtime, if the gate condition is persistently
54
+ * true and the pass branch synchronously completes every iteration, a stack overflow
55
+ * is still theoretically possible. This scenario is considered extreme and rare enough
56
+ * that the current "any branch has task" logic is acceptable.
57
+ */
58
+ function containsTaskNode(node) {
59
+ switch (node.type) {
60
+ case 'task':
61
+ return true;
62
+ case 'sequence':
63
+ case 'parallel':
64
+ return node.children.some((child) => containsTaskNode(child));
65
+ case 'gate': {
66
+ if (containsTaskNode(node.pass))
67
+ return true;
68
+ if ('type' in node.fail) {
69
+ return containsTaskNode(node.fail);
70
+ }
71
+ // fail is GotoTarget — goto itself interrupts synchronous recursion
72
+ return true;
73
+ }
74
+ case 'loop':
75
+ return containsTaskNode(node.body);
76
+ default:
77
+ return false;
78
+ }
79
+ }
80
+ // ─── Main Validator ───
81
+ /**
82
+ * Validate a workflow definition.
83
+ *
84
+ * @param definition - The workflow definition to validate
85
+ * @param availableRoles - Set of role IDs available in the role registry
86
+ * @returns Array of validation errors (empty = valid)
87
+ */
88
+ export function validateWorkflow(definition, availableRoles, artifactDefinitions = {}) {
89
+ const errors = [];
90
+ const allIds = new Map(); // id → location description
91
+ const floatingNodeIds = new Set();
92
+ const gotoEdges = [];
93
+ // Collect floating node IDs
94
+ if (definition.floatingNodes) {
95
+ for (const fn of definition.floatingNodes) {
96
+ floatingNodeIds.add(fn.id);
97
+ }
98
+ }
99
+ // ── 1. Collect all IDs and check uniqueness + failStrategy ──
100
+ collectAndValidateIds(definition.root, [], allIds, errors);
101
+ if (definition.floatingNodes) {
102
+ for (const fn of definition.floatingNodes) {
103
+ if (allIds.has(fn.id)) {
104
+ errors.push({
105
+ type: 'duplicate_id',
106
+ message: `Duplicate node ID "${fn.id}" — found in floating nodes and also at ${allIds.get(fn.id)}`,
107
+ nodeId: fn.id,
108
+ });
109
+ }
110
+ else {
111
+ allIds.set(fn.id, 'floatingNodes');
112
+ }
113
+ }
114
+ }
115
+ // ── 2. Validate goto targets + collect edges for cycle detection ──
116
+ validateGotoTargets(definition.root, [], new Set(), allIds, floatingNodeIds, errors, gotoEdges);
117
+ if (definition.floatingNodes) {
118
+ for (const fn of definition.floatingNodes) {
119
+ if (fn.onFailed) {
120
+ validateFailureHandler(fn.onFailed, fn.id, allIds, floatingNodeIds, [], new Set(), errors, gotoEdges, true);
121
+ }
122
+ }
123
+ }
124
+ // ── 3. Cycle detection ──
125
+ detectCycles(gotoEdges, errors);
126
+ // ── 4-5. (done inline during traversals above) ──
127
+ // ── 6. Role reference check ──
128
+ validateRoleReferences(definition.root, availableRoles, errors);
129
+ if (definition.floatingNodes) {
130
+ for (const fn of definition.floatingNodes) {
131
+ if (!availableRoles.has(fn.role)) {
132
+ errors.push({
133
+ type: 'invalid_role_ref',
134
+ message: `Floating node "${fn.id}" references role "${fn.role}" which is not in the role registry`,
135
+ nodeId: fn.id,
136
+ });
137
+ }
138
+ }
139
+ }
140
+ // ── 7. Coordinator check ──
141
+ if (!availableRoles.has(definition.coordinator)) {
142
+ errors.push({
143
+ type: 'invalid_coordinator',
144
+ message: `Coordinator role "${definition.coordinator}" is not in the role registry`,
145
+ });
146
+ }
147
+ // ── 8. Artifact definition validation ──
148
+ validateArtifactDefinitions(artifactDefinitions, errors);
149
+ // ── 9. inputArtifacts reference validation ──
150
+ validateInputArtifactReferences(definition.root, artifactDefinitions, errors);
151
+ if (definition.floatingNodes) {
152
+ for (const fn of definition.floatingNodes) {
153
+ validateTaskInputArtifacts(fn, artifactDefinitions, errors);
154
+ }
155
+ }
156
+ return errors;
157
+ }
158
+ // ─── ID Collection & Uniqueness ───
159
+ function collectAndValidateIds(node, ancestorIds, allIds, errors) {
160
+ const location = ancestorIds.length > 0 ? `under ${ancestorIds[ancestorIds.length - 1]}` : 'root';
161
+ if (allIds.has(node.id)) {
162
+ errors.push({
163
+ type: 'duplicate_id',
164
+ message: `Duplicate node ID "${node.id}" — found at ${location} and also at ${allIds.get(node.id)}`,
165
+ nodeId: node.id,
166
+ });
167
+ }
168
+ else {
169
+ allIds.set(node.id, location);
170
+ }
171
+ // Check failStrategy for parallel nodes
172
+ if (node.type === 'parallel' && !node.failStrategy) {
173
+ errors.push({
174
+ type: 'missing_fail_strategy',
175
+ message: `Parallel node "${node.id}" must have a failStrategy ("fail-fast" or "wait-all")`,
176
+ nodeId: node.id,
177
+ });
178
+ }
179
+ const childAncestors = [...ancestorIds, node.id];
180
+ switch (node.type) {
181
+ case 'sequence':
182
+ case 'parallel':
183
+ for (const child of node.children) {
184
+ collectAndValidateIds(child, childAncestors, allIds, errors);
185
+ }
186
+ break;
187
+ case 'gate':
188
+ collectAndValidateIds(node.pass, childAncestors, allIds, errors);
189
+ if ('type' in node.fail) {
190
+ collectAndValidateIds(node.fail, childAncestors, allIds, errors);
191
+ }
192
+ break;
193
+ case 'loop':
194
+ validateLoopNode(node, errors);
195
+ collectAndValidateIds(node.body, childAncestors, allIds, errors);
196
+ break;
197
+ case 'task':
198
+ break;
199
+ }
200
+ }
201
+ // ─── Goto Target Validation ───
202
+ /**
203
+ * Validate goto targets throughout the tree.
204
+ *
205
+ * `reachableIds` tracks all node IDs that are "before" the current node in execution
206
+ * order — ancestors + preceding siblings and their entire subtrees. A goto target
207
+ * must be one of these reachable IDs (or self for task nodes).
208
+ */
209
+ function validateGotoTargets(node, ancestorIds, reachableIds, allIds, floatingNodeIds, errors, gotoEdges) {
210
+ const childAncestors = [...ancestorIds, node.id];
211
+ // reachableIds for this node = ancestors + preceding siblings' subtrees
212
+ // (passed in from parent)
213
+ switch (node.type) {
214
+ case 'task': {
215
+ if (node.onFailed) {
216
+ validateFailureHandler(node.onFailed, node.id, allIds, floatingNodeIds, ancestorIds, reachableIds, errors, gotoEdges, true);
217
+ }
218
+ break;
219
+ }
220
+ case 'sequence': {
221
+ // For sequence children, preceding siblings + their subtrees are reachable
222
+ const accumulated = new Set(reachableIds);
223
+ for (const child of node.children) {
224
+ validateGotoTargets(child, childAncestors, new Set(accumulated), allIds, floatingNodeIds, errors, gotoEdges);
225
+ // After processing child, add its reachable subtree to accumulated
226
+ // (loop-opaque: only loop's own ID, not body internals)
227
+ collectReachableIds(child, accumulated);
228
+ }
229
+ break;
230
+ }
231
+ case 'parallel': {
232
+ // Parallel children cannot see each other's IDs — no cross-branch jumps
233
+ for (const child of node.children) {
234
+ validateGotoTargets(child, childAncestors, new Set(reachableIds), allIds, floatingNodeIds, errors, gotoEdges);
235
+ }
236
+ if (node.onFailed) {
237
+ validateFailureHandler(node.onFailed, node.id, allIds, floatingNodeIds, ancestorIds, reachableIds, errors, gotoEdges, false);
238
+ }
239
+ break;
240
+ }
241
+ case 'gate': {
242
+ // Pass branch
243
+ validateGotoTargets(node.pass, childAncestors, new Set(reachableIds), allIds, floatingNodeIds, errors, gotoEdges);
244
+ // Fail branch
245
+ if ('goto' in node.fail && !('type' in node.fail)) {
246
+ const gotoTarget = node.fail;
247
+ validateGotoRef(gotoTarget, node.id, allIds, floatingNodeIds, ancestorIds, reachableIds, errors, gotoEdges, false);
248
+ }
249
+ else if ('type' in node.fail) {
250
+ validateGotoTargets(node.fail, childAncestors, new Set(reachableIds), allIds, floatingNodeIds, errors, gotoEdges);
251
+ }
252
+ break;
253
+ }
254
+ case 'loop': {
255
+ // Body can see loop's ancestors — body is not isolated
256
+ validateGotoTargets(node.body, childAncestors, new Set(reachableIds), allIds, floatingNodeIds, errors, gotoEdges);
257
+ if (node.onFailed) {
258
+ validateFailureHandler(node.onFailed, node.id, allIds, floatingNodeIds, ancestorIds, reachableIds, errors, gotoEdges, false);
259
+ }
260
+ break;
261
+ }
262
+ }
263
+ }
264
+ /**
265
+ * Validate a single goto reference (GotoTarget or FailureHandler).
266
+ */
267
+ function validateGotoRef(target, sourceNodeId, allIds, floatingNodeIds, ancestorIds, reachableIds, errors, gotoEdges, isTask) {
268
+ const targetId = target.goto;
269
+ // Check target exists
270
+ if (!allIds.has(targetId)) {
271
+ errors.push({
272
+ type: 'invalid_goto',
273
+ message: `Node "${sourceNodeId}" has goto target "${targetId}" which does not exist`,
274
+ nodeId: sourceNodeId,
275
+ });
276
+ }
277
+ else {
278
+ // Check reachability: target must be an ancestor, a preceding node (in reachableIds),
279
+ // or self (only for task nodes).
280
+ const canGotoSelf = isTask && targetId === sourceNodeId;
281
+ const isAncestor = ancestorIds.includes(targetId);
282
+ const isReachable = reachableIds.has(targetId);
283
+ if (!canGotoSelf && !isAncestor && !isReachable) {
284
+ errors.push({
285
+ type: 'invalid_goto',
286
+ message: `Node "${sourceNodeId}" has goto target "${targetId}" which is not an ancestor or preceding node — violates goto constraint`,
287
+ nodeId: sourceNodeId,
288
+ });
289
+ }
290
+ }
291
+ // Check onExhausted reference
292
+ if (target.onExhausted && !floatingNodeIds.has(target.onExhausted)) {
293
+ errors.push({
294
+ type: 'invalid_floating_ref',
295
+ message: `Node "${sourceNodeId}" references onExhausted="${target.onExhausted}" which is not in floatingNodes`,
296
+ nodeId: sourceNodeId,
297
+ });
298
+ }
299
+ // Collect edge for cycle detection
300
+ gotoEdges.push({
301
+ from: sourceNodeId,
302
+ to: targetId,
303
+ hasExit: target.maxRetries !== undefined,
304
+ });
305
+ }
306
+ function validateFailureHandler(handler, sourceNodeId, allIds, floatingNodeIds, ancestorIds, reachableIds, errors, gotoEdges, isTask) {
307
+ validateGotoRef(handler, sourceNodeId, allIds, floatingNodeIds, ancestorIds, reachableIds, errors, gotoEdges, isTask);
308
+ }
309
+ // ─── Cycle Detection ───
310
+ /**
311
+ * Detect cycles in goto edges that have no exit.
312
+ *
313
+ * A goto edge with hasExit=true (maxRetries set) has a guaranteed exit path
314
+ * (either via onExhausted or bubbleFailure), so it does not contribute to exit-less cycles.
315
+ *
316
+ * We look for strongly connected components in the subgraph of exit-less goto edges.
317
+ * Any node that can reach itself through exit-less gotos forms a problematic cycle.
318
+ */
319
+ function detectCycles(edges, errors) {
320
+ // For cycle detection we need to check: can any node reach itself?
321
+ // Since goto edges go from a later node back to an earlier node,
322
+ // a cycle requires a "forward path" in the workflow tree from
323
+ // the goto target back to the goto source. This always exists
324
+ // (that's the normal execution flow). So any exit-less goto edge
325
+ // effectively forms a cycle: target → (normal flow) → source → (goto) → target.
326
+ //
327
+ // Therefore: every exit-less goto is a potential infinite loop.
328
+ const reported = new Set();
329
+ for (const edge of edges) {
330
+ if (!edge.hasExit && !reported.has(edge.from)) {
331
+ reported.add(edge.from);
332
+ errors.push({
333
+ type: 'cycle',
334
+ message: `Detected exit-less cycle: node "${edge.from}" has goto to "${edge.to}" without maxRetries exit`,
335
+ nodeId: edge.from,
336
+ });
337
+ }
338
+ }
339
+ }
340
+ // ─── Role Reference Validation ───
341
+ function validateRoleReferences(node, availableRoles, errors) {
342
+ switch (node.type) {
343
+ case 'task':
344
+ if (!availableRoles.has(node.role)) {
345
+ errors.push({
346
+ type: 'invalid_role_ref',
347
+ message: `Task node "${node.id}" references role "${node.role}" which is not in the role registry`,
348
+ nodeId: node.id,
349
+ });
350
+ }
351
+ break;
352
+ case 'sequence':
353
+ case 'parallel':
354
+ for (const child of node.children) {
355
+ validateRoleReferences(child, availableRoles, errors);
356
+ }
357
+ break;
358
+ case 'gate':
359
+ validateRoleReferences(node.pass, availableRoles, errors);
360
+ if ('type' in node.fail) {
361
+ validateRoleReferences(node.fail, availableRoles, errors);
362
+ }
363
+ break;
364
+ case 'loop':
365
+ validateRoleReferences(node.body, availableRoles, errors);
366
+ break;
367
+ }
368
+ }
369
+ // ─── Artifact Definition Validation ───
370
+ const KNOWN_PLACEHOLDERS = new Set(['{global}', '{project}', '{context}']);
371
+ const PLACEHOLDER_RE = /\{[^}]+\}/g;
372
+ /**
373
+ * Validate artifact definitions — checks `output` field format.
374
+ *
375
+ * Rules:
376
+ * 1. `output` must start with `{global}` or `{project}`
377
+ * 2. `{context}` must appear after `{global}` or `{project}` — implicitly covered by Rule 1
378
+ * 3. No unknown placeholders
379
+ * 4. No `..` in paths (prevent directory traversal)
380
+ */
381
+ function validateArtifactDefinitions(artifactDefinitions, errors) {
382
+ for (const [artifactId, def] of Object.entries(artifactDefinitions)) {
383
+ if (!def.output)
384
+ continue;
385
+ const output = def.output;
386
+ // Rule 4: no directory traversal
387
+ if (output.includes('..')) {
388
+ errors.push({
389
+ type: 'invalid_artifact_output',
390
+ message: `Artifact "${artifactId}": output path must not contain ".." (directory traversal)`,
391
+ });
392
+ continue;
393
+ }
394
+ // Rule 1: must start with {global} or {project}
395
+ if (!output.startsWith('{global}') && !output.startsWith('{project}')) {
396
+ errors.push({
397
+ type: 'invalid_artifact_output',
398
+ message: `Artifact "${artifactId}": output must start with {global} or {project}, got "${output}"`,
399
+ });
400
+ continue;
401
+ }
402
+ // Rule 3: no unknown placeholders
403
+ const matches = output.match(PLACEHOLDER_RE);
404
+ if (matches) {
405
+ for (const m of matches) {
406
+ if (!KNOWN_PLACEHOLDERS.has(m)) {
407
+ errors.push({
408
+ type: 'invalid_artifact_output',
409
+ message: `Artifact "${artifactId}": unknown placeholder "${m}" in output "${output}"`,
410
+ });
411
+ }
412
+ }
413
+ }
414
+ }
415
+ }
416
+ // ─── Loop Node Validation ───
417
+ /**
418
+ * Validate loop-specific constraints:
419
+ * - maxIterations must be a positive integer
420
+ * - body must exist (covered by type system, but validate at runtime for JSON input)
421
+ */
422
+ function validateLoopNode(node, errors) {
423
+ if (typeof node.maxIterations !== 'number' || !Number.isInteger(node.maxIterations) || node.maxIterations <= 0) {
424
+ errors.push({
425
+ type: 'other',
426
+ message: `Loop node "${node.id}" must have maxIterations as a positive integer, got ${node.maxIterations}`,
427
+ nodeId: node.id,
428
+ });
429
+ }
430
+ if (!node.body) {
431
+ errors.push({
432
+ type: 'other',
433
+ message: `Loop node "${node.id}" must have a body`,
434
+ nodeId: node.id,
435
+ });
436
+ }
437
+ else if (!containsTaskNode(node.body)) {
438
+ errors.push({
439
+ type: 'other',
440
+ message: `Loop node "${node.id}" body must contain at least one task node — a loop body without tasks would cause synchronous stack overflow`,
441
+ nodeId: node.id,
442
+ });
443
+ }
444
+ }
445
+ // ─── Input Artifact Reference Validation ───
446
+ /**
447
+ * Validate that inputArtifacts references on task nodes refer to
448
+ * artifact IDs that exist in artifactDefinitions.
449
+ */
450
+ function validateInputArtifactReferences(node, artifactDefinitions, errors) {
451
+ switch (node.type) {
452
+ case 'task':
453
+ validateTaskInputArtifacts(node, artifactDefinitions, errors);
454
+ break;
455
+ case 'sequence':
456
+ case 'parallel':
457
+ for (const child of node.children) {
458
+ validateInputArtifactReferences(child, artifactDefinitions, errors);
459
+ }
460
+ break;
461
+ case 'gate':
462
+ validateInputArtifactReferences(node.pass, artifactDefinitions, errors);
463
+ if ('type' in node.fail) {
464
+ validateInputArtifactReferences(node.fail, artifactDefinitions, errors);
465
+ }
466
+ break;
467
+ case 'loop':
468
+ validateInputArtifactReferences(node.body, artifactDefinitions, errors);
469
+ break;
470
+ }
471
+ }
472
+ /**
473
+ * Validate inputArtifacts on a single task node.
474
+ * Each ID must exist in artifactDefinitions.
475
+ */
476
+ function validateTaskInputArtifacts(node, artifactDefinitions, errors) {
477
+ if (!node.inputArtifacts)
478
+ return;
479
+ for (const artifactId of node.inputArtifacts) {
480
+ if (!artifactDefinitions[artifactId]) {
481
+ errors.push({
482
+ type: 'invalid_input_artifact',
483
+ message: `Task node "${node.id}" declares inputArtifact "${artifactId}" which is not defined in artifactDefinitions`,
484
+ nodeId: node.id,
485
+ });
486
+ }
487
+ }
488
+ }
489
+ //# sourceMappingURL=workflow-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-validator.js","sourceRoot":"","sources":["../../src/core/workflow-validator.ts"],"names":[],"mappings":"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"}