takos-actions-engine 1.0.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 (171) hide show
  1. package/coverage/base.css +224 -0
  2. package/coverage/block-navigation.js +87 -0
  3. package/coverage/clover.xml +3477 -0
  4. package/coverage/coverage-final.json +20 -0
  5. package/coverage/favicon.png +0 -0
  6. package/coverage/index.html +176 -0
  7. package/coverage/prettify.css +1 -0
  8. package/coverage/prettify.js +2 -0
  9. package/coverage/sort-arrow-sprite.png +0 -0
  10. package/coverage/sorter.js +210 -0
  11. package/coverage/src/context/base.ts.html +1792 -0
  12. package/coverage/src/context/env.ts.html +1243 -0
  13. package/coverage/src/context/index.html +161 -0
  14. package/coverage/src/context/index.ts.html +229 -0
  15. package/coverage/src/context/secrets.ts.html +1276 -0
  16. package/coverage/src/index.html +131 -0
  17. package/coverage/src/index.ts.html +502 -0
  18. package/coverage/src/parser/expression.ts.html +2854 -0
  19. package/coverage/src/parser/index.html +161 -0
  20. package/coverage/src/parser/index.ts.html +163 -0
  21. package/coverage/src/parser/validator.ts.html +1588 -0
  22. package/coverage/src/parser/workflow.ts.html +616 -0
  23. package/coverage/src/scheduler/dependency.ts.html +1138 -0
  24. package/coverage/src/scheduler/index.html +221 -0
  25. package/coverage/src/scheduler/index.ts.html +214 -0
  26. package/coverage/src/scheduler/job-context.ts.html +265 -0
  27. package/coverage/src/scheduler/job-policy.ts.html +559 -0
  28. package/coverage/src/scheduler/job.ts.html +1816 -0
  29. package/coverage/src/scheduler/listener-registry.ts.html +199 -0
  30. package/coverage/src/scheduler/step.ts.html +2206 -0
  31. package/coverage/src/scheduler/steps-context.ts.html +217 -0
  32. package/coverage/src/types.ts.html +1897 -0
  33. package/coverage/src/utils/index.html +116 -0
  34. package/coverage/src/utils/needs.ts.html +127 -0
  35. package/dist/__tests__/context/env.test.d.ts +2 -0
  36. package/dist/__tests__/context/env.test.d.ts.map +1 -0
  37. package/dist/__tests__/context/env.test.js +28 -0
  38. package/dist/__tests__/context/env.test.js.map +1 -0
  39. package/dist/__tests__/index.test.d.ts +2 -0
  40. package/dist/__tests__/index.test.d.ts.map +1 -0
  41. package/dist/__tests__/index.test.js +50 -0
  42. package/dist/__tests__/index.test.js.map +1 -0
  43. package/dist/__tests__/parser/expression.test.d.ts +2 -0
  44. package/dist/__tests__/parser/expression.test.d.ts.map +1 -0
  45. package/dist/__tests__/parser/expression.test.js +116 -0
  46. package/dist/__tests__/parser/expression.test.js.map +1 -0
  47. package/dist/__tests__/parser/workflow.test.d.ts +2 -0
  48. package/dist/__tests__/parser/workflow.test.d.ts.map +1 -0
  49. package/dist/__tests__/parser/workflow.test.js +134 -0
  50. package/dist/__tests__/parser/workflow.test.js.map +1 -0
  51. package/dist/__tests__/scheduler/dependency.test.d.ts +2 -0
  52. package/dist/__tests__/scheduler/dependency.test.d.ts.map +1 -0
  53. package/dist/__tests__/scheduler/dependency.test.js +41 -0
  54. package/dist/__tests__/scheduler/dependency.test.js.map +1 -0
  55. package/dist/__tests__/scheduler/job-context.test.d.ts +2 -0
  56. package/dist/__tests__/scheduler/job-context.test.d.ts.map +1 -0
  57. package/dist/__tests__/scheduler/job-context.test.js +108 -0
  58. package/dist/__tests__/scheduler/job-context.test.js.map +1 -0
  59. package/dist/__tests__/scheduler/job-policy.test.d.ts +2 -0
  60. package/dist/__tests__/scheduler/job-policy.test.d.ts.map +1 -0
  61. package/dist/__tests__/scheduler/job-policy.test.js +159 -0
  62. package/dist/__tests__/scheduler/job-policy.test.js.map +1 -0
  63. package/dist/__tests__/scheduler/job.test.d.ts +2 -0
  64. package/dist/__tests__/scheduler/job.test.d.ts.map +1 -0
  65. package/dist/__tests__/scheduler/job.test.js +826 -0
  66. package/dist/__tests__/scheduler/job.test.js.map +1 -0
  67. package/dist/__tests__/scheduler/listener-registry.test.d.ts +2 -0
  68. package/dist/__tests__/scheduler/listener-registry.test.d.ts.map +1 -0
  69. package/dist/__tests__/scheduler/listener-registry.test.js +79 -0
  70. package/dist/__tests__/scheduler/listener-registry.test.js.map +1 -0
  71. package/dist/__tests__/scheduler/step.test.d.ts +2 -0
  72. package/dist/__tests__/scheduler/step.test.d.ts.map +1 -0
  73. package/dist/__tests__/scheduler/step.test.js +209 -0
  74. package/dist/__tests__/scheduler/step.test.js.map +1 -0
  75. package/dist/__tests__/scheduler/steps-context.test.d.ts +2 -0
  76. package/dist/__tests__/scheduler/steps-context.test.d.ts.map +1 -0
  77. package/dist/__tests__/scheduler/steps-context.test.js +43 -0
  78. package/dist/__tests__/scheduler/steps-context.test.js.map +1 -0
  79. package/dist/constants.d.ts +47 -0
  80. package/dist/constants.d.ts.map +1 -0
  81. package/dist/constants.js +53 -0
  82. package/dist/constants.js.map +1 -0
  83. package/dist/context.d.ts +37 -0
  84. package/dist/context.d.ts.map +1 -0
  85. package/dist/context.js +105 -0
  86. package/dist/context.js.map +1 -0
  87. package/dist/index.d.ts +9 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +10 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/parser/evaluator-builtins.d.ts +14 -0
  92. package/dist/parser/evaluator-builtins.d.ts.map +1 -0
  93. package/dist/parser/evaluator-builtins.js +258 -0
  94. package/dist/parser/evaluator-builtins.js.map +1 -0
  95. package/dist/parser/evaluator.d.ts +38 -0
  96. package/dist/parser/evaluator.d.ts.map +1 -0
  97. package/dist/parser/evaluator.js +257 -0
  98. package/dist/parser/evaluator.js.map +1 -0
  99. package/dist/parser/expression.d.ts +20 -0
  100. package/dist/parser/expression.d.ts.map +1 -0
  101. package/dist/parser/expression.js +128 -0
  102. package/dist/parser/expression.js.map +1 -0
  103. package/dist/parser/tokenizer.d.ts +26 -0
  104. package/dist/parser/tokenizer.d.ts.map +1 -0
  105. package/dist/parser/tokenizer.js +162 -0
  106. package/dist/parser/tokenizer.js.map +1 -0
  107. package/dist/parser/validator.d.ts +13 -0
  108. package/dist/parser/validator.d.ts.map +1 -0
  109. package/dist/parser/validator.js +383 -0
  110. package/dist/parser/validator.js.map +1 -0
  111. package/dist/parser/workflow.d.ts +30 -0
  112. package/dist/parser/workflow.d.ts.map +1 -0
  113. package/dist/parser/workflow.js +152 -0
  114. package/dist/parser/workflow.js.map +1 -0
  115. package/dist/scheduler/dependency.d.ts +37 -0
  116. package/dist/scheduler/dependency.d.ts.map +1 -0
  117. package/dist/scheduler/dependency.js +133 -0
  118. package/dist/scheduler/dependency.js.map +1 -0
  119. package/dist/scheduler/job-policy.d.ts +23 -0
  120. package/dist/scheduler/job-policy.d.ts.map +1 -0
  121. package/dist/scheduler/job-policy.js +117 -0
  122. package/dist/scheduler/job-policy.js.map +1 -0
  123. package/dist/scheduler/job.d.ts +151 -0
  124. package/dist/scheduler/job.d.ts.map +1 -0
  125. package/dist/scheduler/job.js +348 -0
  126. package/dist/scheduler/job.js.map +1 -0
  127. package/dist/scheduler/step-output-parser.d.ts +14 -0
  128. package/dist/scheduler/step-output-parser.d.ts.map +1 -0
  129. package/dist/scheduler/step-output-parser.js +70 -0
  130. package/dist/scheduler/step-output-parser.js.map +1 -0
  131. package/dist/scheduler/step.d.ts +74 -0
  132. package/dist/scheduler/step.d.ts.map +1 -0
  133. package/dist/scheduler/step.js +387 -0
  134. package/dist/scheduler/step.js.map +1 -0
  135. package/dist/types.d.ts +499 -0
  136. package/dist/types.d.ts.map +1 -0
  137. package/dist/types.js +5 -0
  138. package/dist/types.js.map +1 -0
  139. package/dist/workflow-models.d.ts +504 -0
  140. package/dist/workflow-models.d.ts.map +1 -0
  141. package/dist/workflow-models.js +5 -0
  142. package/dist/workflow-models.js.map +1 -0
  143. package/package.json +29 -0
  144. package/src/__tests__/context/env.test.ts +38 -0
  145. package/src/__tests__/index.test.ts +55 -0
  146. package/src/__tests__/parser/expression.test.ts +151 -0
  147. package/src/__tests__/parser/workflow.test.ts +151 -0
  148. package/src/__tests__/scheduler/dependency.test.ts +51 -0
  149. package/src/__tests__/scheduler/job-context.test.ts +119 -0
  150. package/src/__tests__/scheduler/job-policy.test.ts +195 -0
  151. package/src/__tests__/scheduler/job.test.ts +1014 -0
  152. package/src/__tests__/scheduler/listener-registry.test.ts +95 -0
  153. package/src/__tests__/scheduler/step.test.ts +258 -0
  154. package/src/__tests__/scheduler/steps-context.test.ts +49 -0
  155. package/src/constants.ts +61 -0
  156. package/src/context.ts +153 -0
  157. package/src/index.ts +64 -0
  158. package/src/parser/evaluator-builtins.ts +315 -0
  159. package/src/parser/evaluator.ts +333 -0
  160. package/src/parser/expression.ts +154 -0
  161. package/src/parser/tokenizer.ts +191 -0
  162. package/src/parser/validator.ts +444 -0
  163. package/src/parser/workflow.ts +176 -0
  164. package/src/scheduler/dependency.ts +180 -0
  165. package/src/scheduler/job-policy.ts +198 -0
  166. package/src/scheduler/job.ts +523 -0
  167. package/src/scheduler/step-output-parser.ts +94 -0
  168. package/src/scheduler/step.ts +543 -0
  169. package/src/workflow-models.ts +593 -0
  170. package/tsconfig.json +14 -0
  171. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,383 @@
1
+ /**
2
+ * Workflow schema validation using Zod
3
+ */
4
+ import { z } from 'zod';
5
+ import { buildDependencyGraph, detectCycle, DependencyError } from '../scheduler/dependency.js';
6
+ import { normalizeNeedsInput } from '../scheduler/job.js';
7
+ // =============================================================================
8
+ // Zod Schemas
9
+ // =============================================================================
10
+ /**
11
+ * Branch filter schema
12
+ */
13
+ const branchFilterSchema = z.object({
14
+ branches: z.array(z.string()).optional(),
15
+ 'branches-ignore': z.array(z.string()).optional(),
16
+ tags: z.array(z.string()).optional(),
17
+ 'tags-ignore': z.array(z.string()).optional(),
18
+ paths: z.array(z.string()).optional(),
19
+ 'paths-ignore': z.array(z.string()).optional(),
20
+ });
21
+ /**
22
+ * Push trigger schema
23
+ */
24
+ const pushTriggerSchema = branchFilterSchema.nullable();
25
+ /**
26
+ * Pull request trigger schema
27
+ */
28
+ const pullRequestTriggerSchema = branchFilterSchema
29
+ .extend({
30
+ types: z.array(z.string()).optional(),
31
+ })
32
+ .nullable();
33
+ /**
34
+ * Workflow dispatch input schema
35
+ */
36
+ const workflowDispatchInputSchema = z.object({
37
+ description: z.string().optional(),
38
+ required: z.boolean().optional(),
39
+ default: z.string().optional(),
40
+ type: z.enum(['string', 'boolean', 'choice', 'environment']).optional(),
41
+ options: z.array(z.string()).optional(),
42
+ });
43
+ /**
44
+ * Workflow dispatch trigger schema
45
+ */
46
+ const workflowDispatchSchema = z
47
+ .object({
48
+ inputs: z.record(workflowDispatchInputSchema).optional(),
49
+ })
50
+ .nullable();
51
+ /**
52
+ * Schedule trigger schema
53
+ */
54
+ const scheduleTriggerSchema = z.object({
55
+ cron: z.string(),
56
+ });
57
+ /**
58
+ * Workflow call input schema
59
+ */
60
+ const workflowCallInputSchema = z.object({
61
+ description: z.string().optional(),
62
+ required: z.boolean().optional(),
63
+ default: z.union([z.string(), z.boolean(), z.number()]).optional(),
64
+ type: z.enum(['string', 'boolean', 'number']),
65
+ });
66
+ /**
67
+ * Workflow call output schema
68
+ */
69
+ const workflowCallOutputSchema = z.object({
70
+ description: z.string().optional(),
71
+ value: z.string(),
72
+ });
73
+ /**
74
+ * Workflow call secret schema
75
+ */
76
+ const workflowCallSecretSchema = z.object({
77
+ description: z.string().optional(),
78
+ required: z.boolean().optional(),
79
+ });
80
+ /**
81
+ * Workflow call trigger schema
82
+ */
83
+ const workflowCallSchema = z
84
+ .object({
85
+ inputs: z.record(workflowCallInputSchema).optional(),
86
+ outputs: z.record(workflowCallOutputSchema).optional(),
87
+ secrets: z.record(workflowCallSecretSchema).optional(),
88
+ })
89
+ .nullable();
90
+ /**
91
+ * Workflow trigger schema
92
+ */
93
+ const workflowTriggerSchema = z.object({
94
+ push: pushTriggerSchema.optional(),
95
+ pull_request: pullRequestTriggerSchema.optional(),
96
+ pull_request_target: pullRequestTriggerSchema.optional(),
97
+ workflow_dispatch: workflowDispatchSchema.optional(),
98
+ workflow_call: workflowCallSchema.optional(),
99
+ schedule: z.array(scheduleTriggerSchema).optional(),
100
+ repository_dispatch: z
101
+ .object({
102
+ types: z.array(z.string()).optional(),
103
+ })
104
+ .nullable()
105
+ .optional(),
106
+ issues: z
107
+ .object({
108
+ types: z.array(z.string()).optional(),
109
+ })
110
+ .nullable()
111
+ .optional(),
112
+ issue_comment: z
113
+ .object({
114
+ types: z.array(z.string()).optional(),
115
+ })
116
+ .nullable()
117
+ .optional(),
118
+ release: z
119
+ .object({
120
+ types: z.array(z.string()).optional(),
121
+ })
122
+ .nullable()
123
+ .optional(),
124
+ create: z.null().optional(),
125
+ delete: z.null().optional(),
126
+ fork: z.null().optional(),
127
+ watch: z
128
+ .object({
129
+ types: z.array(z.string()).optional(),
130
+ })
131
+ .nullable()
132
+ .optional(),
133
+ });
134
+ /**
135
+ * Step schema
136
+ */
137
+ const stepSchema = z
138
+ .object({
139
+ id: z.string().optional(),
140
+ name: z.string().optional(),
141
+ uses: z.string().optional(),
142
+ run: z.string().optional(),
143
+ 'working-directory': z.string().optional(),
144
+ shell: z.enum(['bash', 'pwsh', 'python', 'sh', 'cmd', 'powershell']).optional(),
145
+ with: z.record(z.unknown()).optional(),
146
+ env: z.record(z.string()).optional(),
147
+ if: z.string().optional(),
148
+ 'continue-on-error': z.boolean().optional(),
149
+ 'timeout-minutes': z.number().positive().optional(),
150
+ })
151
+ .refine((step) => step.uses !== undefined || step.run !== undefined, {
152
+ message: 'Step must have either "uses" or "run"',
153
+ })
154
+ .refine((step) => !(step.uses !== undefined && step.run !== undefined), {
155
+ message: 'Step cannot have both "uses" and "run"',
156
+ });
157
+ /**
158
+ * Matrix config schema
159
+ */
160
+ const matrixConfigSchema = z
161
+ .record(z.unknown())
162
+ .refine((obj) => {
163
+ // Allow 'include' and 'exclude' as special keys
164
+ for (const [key, value] of Object.entries(obj)) {
165
+ if (key === 'include' || key === 'exclude') {
166
+ if (!Array.isArray(value))
167
+ return false;
168
+ }
169
+ else if (!Array.isArray(value)) {
170
+ return false;
171
+ }
172
+ }
173
+ return true;
174
+ }, {
175
+ message: 'Matrix values must be arrays (except include/exclude)',
176
+ });
177
+ /**
178
+ * Job strategy schema
179
+ */
180
+ const jobStrategySchema = z.object({
181
+ matrix: matrixConfigSchema.optional(),
182
+ 'fail-fast': z.boolean().optional(),
183
+ 'max-parallel': z.number().positive().optional(),
184
+ });
185
+ /**
186
+ * Container config schema
187
+ */
188
+ const containerConfigSchema = z.union([
189
+ z.string(),
190
+ z.object({
191
+ image: z.string(),
192
+ credentials: z
193
+ .object({
194
+ username: z.string(),
195
+ password: z.string(),
196
+ })
197
+ .optional(),
198
+ env: z.record(z.string()).optional(),
199
+ ports: z.array(z.union([z.number(), z.string()])).optional(),
200
+ volumes: z.array(z.string()).optional(),
201
+ options: z.string().optional(),
202
+ }),
203
+ ]);
204
+ /**
205
+ * Permissions schema
206
+ */
207
+ const permissionsSchema = z.union([
208
+ z.literal('read-all'),
209
+ z.literal('write-all'),
210
+ z.record(z.enum(['read', 'write', 'none'])),
211
+ ]);
212
+ /**
213
+ * Concurrency schema
214
+ */
215
+ const concurrencySchema = z.union([
216
+ z.string(),
217
+ z.object({
218
+ group: z.string(),
219
+ 'cancel-in-progress': z.boolean().optional(),
220
+ }),
221
+ ]);
222
+ /**
223
+ * Environment schema
224
+ */
225
+ const environmentSchema = z.union([
226
+ z.string(),
227
+ z.object({
228
+ name: z.string(),
229
+ url: z.string().optional(),
230
+ }),
231
+ ]);
232
+ /**
233
+ * Job defaults schema
234
+ */
235
+ const jobDefaultsSchema = z.object({
236
+ run: z
237
+ .object({
238
+ shell: z.string().optional(),
239
+ 'working-directory': z.string().optional(),
240
+ })
241
+ .optional(),
242
+ });
243
+ /**
244
+ * Job schema
245
+ */
246
+ const jobSchema = z.object({
247
+ name: z.string().optional(),
248
+ 'runs-on': z.union([z.string(), z.array(z.string())]),
249
+ needs: z.union([z.string(), z.array(z.string())]).optional(),
250
+ if: z.string().optional(),
251
+ env: z.record(z.string()).optional(),
252
+ steps: z.array(stepSchema).min(1, 'Job must have at least one step'),
253
+ outputs: z.record(z.string()).optional(),
254
+ strategy: jobStrategySchema.optional(),
255
+ container: containerConfigSchema.optional(),
256
+ services: z.record(containerConfigSchema).optional(),
257
+ 'timeout-minutes': z.number().positive().optional(),
258
+ 'continue-on-error': z.boolean().optional(),
259
+ permissions: permissionsSchema.optional(),
260
+ concurrency: concurrencySchema.optional(),
261
+ defaults: jobDefaultsSchema.optional(),
262
+ environment: environmentSchema.optional(),
263
+ });
264
+ /**
265
+ * Complete workflow schema
266
+ */
267
+ const workflowSchema = z.object({
268
+ name: z.string().optional(),
269
+ on: z.union([
270
+ workflowTriggerSchema,
271
+ z.string(),
272
+ z.array(z.string()),
273
+ ]),
274
+ env: z.record(z.string()).optional(),
275
+ jobs: z
276
+ .record(jobSchema)
277
+ .refine((jobs) => Object.keys(jobs).length > 0, {
278
+ message: 'Workflow must have at least one job',
279
+ }),
280
+ permissions: permissionsSchema.optional(),
281
+ concurrency: concurrencySchema.optional(),
282
+ defaults: jobDefaultsSchema.optional(),
283
+ });
284
+ /**
285
+ * Collect Zod issues as workflow diagnostics
286
+ */
287
+ function collectSchemaDiagnostics(schema, input, diagnostics, formatPath) {
288
+ const result = schema.safeParse(input);
289
+ if (result.success) {
290
+ return;
291
+ }
292
+ for (const issue of result.error.issues) {
293
+ diagnostics.push({
294
+ severity: 'error',
295
+ message: issue.message,
296
+ path: formatPath(issue.path),
297
+ });
298
+ }
299
+ }
300
+ /**
301
+ * Build validation result from diagnostics
302
+ */
303
+ function buildValidationResult(diagnostics) {
304
+ return {
305
+ valid: !diagnostics.some((d) => d.severity === 'error'),
306
+ diagnostics,
307
+ };
308
+ }
309
+ /**
310
+ * Validate workflow against schema
311
+ */
312
+ export function validateWorkflow(workflow) {
313
+ const diagnostics = [];
314
+ // Schema validation
315
+ collectSchemaDiagnostics(workflowSchema, workflow, diagnostics, (issuePath) => issuePath.join('.'));
316
+ // Additional semantic validation
317
+ const semanticDiagnostics = validateSemantics(workflow);
318
+ diagnostics.push(...semanticDiagnostics);
319
+ return buildValidationResult(diagnostics);
320
+ }
321
+ /**
322
+ * Perform semantic validation
323
+ */
324
+ function validateSemantics(workflow) {
325
+ const diagnostics = [];
326
+ // Validate job dependencies
327
+ const jobNames = new Set(Object.keys(workflow.jobs));
328
+ for (const [jobId, job] of Object.entries(workflow.jobs)) {
329
+ const needs = normalizeNeedsInput(job.needs);
330
+ for (const need of needs) {
331
+ if (!jobNames.has(need)) {
332
+ diagnostics.push({
333
+ severity: 'error',
334
+ message: `Job "${jobId}" references unknown job "${need}" in needs`,
335
+ path: `jobs.${jobId}.needs`,
336
+ });
337
+ }
338
+ if (need === jobId) {
339
+ diagnostics.push({
340
+ severity: 'error',
341
+ message: `Job "${jobId}" cannot depend on itself`,
342
+ path: `jobs.${jobId}.needs`,
343
+ });
344
+ }
345
+ }
346
+ // Validate step IDs are unique
347
+ const stepIds = new Set();
348
+ for (let i = 0; i < job.steps.length; i++) {
349
+ const step = job.steps[i];
350
+ if (step.id) {
351
+ if (stepIds.has(step.id)) {
352
+ diagnostics.push({
353
+ severity: 'error',
354
+ message: `Duplicate step ID "${step.id}" in job "${jobId}"`,
355
+ path: `jobs.${jobId}.steps[${i}].id`,
356
+ });
357
+ }
358
+ stepIds.add(step.id);
359
+ }
360
+ }
361
+ }
362
+ // Check for circular dependencies using the shared dependency graph
363
+ try {
364
+ const graph = buildDependencyGraph(workflow);
365
+ const cycle = detectCycle(graph);
366
+ if (cycle.length > 0) {
367
+ diagnostics.push({
368
+ severity: 'error',
369
+ message: `Circular dependency detected: ${cycle.join(' -> ')}`,
370
+ path: 'jobs',
371
+ });
372
+ }
373
+ }
374
+ catch (e) {
375
+ // buildDependencyGraph throws DependencyError for unknown job references,
376
+ // which are already reported by the needs-validation above.
377
+ if (!(e instanceof DependencyError)) {
378
+ throw e;
379
+ }
380
+ }
381
+ return diagnostics;
382
+ }
383
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/parser/validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { Workflow, ParsedWorkflow, WorkflowDiagnostic } from '../workflow-models.js';
2
+ /**
3
+ * Error thrown when workflow parsing fails
4
+ */
5
+ export declare class WorkflowParseError extends Error {
6
+ readonly diagnostics: WorkflowDiagnostic[];
7
+ constructor(message: string, diagnostics: WorkflowDiagnostic[]);
8
+ }
9
+ /**
10
+ * Parse YAML workflow content
11
+ *
12
+ * @param content - YAML content string
13
+ * @returns Parsed workflow with diagnostics
14
+ */
15
+ export declare function parseWorkflow(content: string): ParsedWorkflow;
16
+ /**
17
+ * Parse workflow from file path (for Node.js environments)
18
+ *
19
+ * @param filePath - Path to workflow file
20
+ * @returns Parsed workflow
21
+ */
22
+ export declare function parseWorkflowFile(filePath: string): Promise<ParsedWorkflow>;
23
+ /**
24
+ * Stringify workflow back to YAML
25
+ *
26
+ * @param workflow - Workflow object
27
+ * @returns YAML string
28
+ */
29
+ export declare function stringifyWorkflow(workflow: Workflow): string;
30
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/parser/workflow.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,kBAAkB,EAEnB,MAAM,uBAAuB,CAAC;AAG/B;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,WAAW,EAAE,kBAAkB,EAAE;gBADjD,OAAO,EAAE,MAAM,EACC,WAAW,EAAE,kBAAkB,EAAE;CAKpD;AA+ED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAuC7D;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC,CAKzB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAK5D"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * YAML workflow parser
3
+ */
4
+ import { parse as parseYaml, stringify as stringifyYaml, YAMLParseError } from 'yaml';
5
+ import { normalizeNeedsInput } from '../scheduler/job.js';
6
+ /**
7
+ * Error thrown when workflow parsing fails
8
+ */
9
+ export class WorkflowParseError extends Error {
10
+ diagnostics;
11
+ constructor(message, diagnostics) {
12
+ super(message);
13
+ this.diagnostics = diagnostics;
14
+ this.name = 'WorkflowParseError';
15
+ }
16
+ }
17
+ /**
18
+ * Normalize workflow trigger from various formats
19
+ */
20
+ function normalizeTrigger(on) {
21
+ // String format: on: push
22
+ if (typeof on === 'string') {
23
+ return { [on]: null };
24
+ }
25
+ // Array format: on: [push, pull_request]
26
+ if (Array.isArray(on)) {
27
+ const trigger = {};
28
+ for (const event of on) {
29
+ if (typeof event === 'string') {
30
+ trigger[event] = null;
31
+ }
32
+ }
33
+ return trigger;
34
+ }
35
+ // Object format: on: { push: { branches: [...] } }
36
+ if (typeof on === 'object' && on !== null) {
37
+ return on;
38
+ }
39
+ return {};
40
+ }
41
+ /**
42
+ * Normalize workflow structure
43
+ */
44
+ function normalizeWorkflow(raw) {
45
+ if (typeof raw !== 'object' || raw === null) {
46
+ throw new WorkflowParseError('Workflow must be an object', [
47
+ { severity: 'error', message: 'Workflow must be an object' },
48
+ ]);
49
+ }
50
+ const obj = raw;
51
+ // Normalize 'on' trigger
52
+ const on = normalizeTrigger(obj.on);
53
+ // Normalize jobs
54
+ const jobs = {};
55
+ const rawJobs = obj.jobs;
56
+ if (typeof rawJobs === 'object' && rawJobs !== null) {
57
+ for (const [jobId, job] of Object.entries(rawJobs)) {
58
+ if (typeof job !== 'object' || job === null) {
59
+ continue;
60
+ }
61
+ const jobObj = job;
62
+ const normalizedNeeds = normalizeNeedsInput(jobObj.needs);
63
+ jobs[jobId] = {
64
+ ...jobObj,
65
+ needs: normalizedNeeds.length > 0 ? normalizedNeeds : undefined,
66
+ steps: Array.isArray(jobObj.steps) ? jobObj.steps : [],
67
+ };
68
+ }
69
+ }
70
+ return {
71
+ name: typeof obj.name === 'string' ? obj.name : undefined,
72
+ on,
73
+ env: typeof obj.env === 'object' && obj.env !== null
74
+ ? obj.env
75
+ : undefined,
76
+ jobs,
77
+ permissions: obj.permissions,
78
+ concurrency: obj.concurrency,
79
+ defaults: obj.defaults,
80
+ };
81
+ }
82
+ /**
83
+ * Parse YAML workflow content
84
+ *
85
+ * @param content - YAML content string
86
+ * @returns Parsed workflow with diagnostics
87
+ */
88
+ export function parseWorkflow(content) {
89
+ const diagnostics = [];
90
+ try {
91
+ const parsed = parseYaml(content, {
92
+ strict: false,
93
+ uniqueKeys: true,
94
+ });
95
+ const workflow = normalizeWorkflow(parsed);
96
+ return {
97
+ workflow,
98
+ diagnostics,
99
+ };
100
+ }
101
+ catch (error) {
102
+ if (error instanceof YAMLParseError) {
103
+ diagnostics.push({
104
+ severity: 'error',
105
+ message: error.message,
106
+ line: error.linePos?.[0]?.line,
107
+ column: error.linePos?.[0]?.col,
108
+ });
109
+ }
110
+ else if (error instanceof WorkflowParseError) {
111
+ diagnostics.push(...error.diagnostics);
112
+ }
113
+ else if (error instanceof Error) {
114
+ diagnostics.push({
115
+ severity: 'error',
116
+ message: error.message,
117
+ });
118
+ }
119
+ else {
120
+ diagnostics.push({
121
+ severity: 'error',
122
+ message: 'Unknown parse error',
123
+ });
124
+ }
125
+ throw new WorkflowParseError('Failed to parse workflow', diagnostics);
126
+ }
127
+ }
128
+ /**
129
+ * Parse workflow from file path (for Node.js environments)
130
+ *
131
+ * @param filePath - Path to workflow file
132
+ * @returns Parsed workflow
133
+ */
134
+ export async function parseWorkflowFile(filePath) {
135
+ // Dynamic import for Node.js fs
136
+ const { readFile } = await import('node:fs/promises');
137
+ const content = await readFile(filePath, 'utf-8');
138
+ return parseWorkflow(content);
139
+ }
140
+ /**
141
+ * Stringify workflow back to YAML
142
+ *
143
+ * @param workflow - Workflow object
144
+ * @returns YAML string
145
+ */
146
+ export function stringifyWorkflow(workflow) {
147
+ return stringifyYaml(workflow, {
148
+ indent: 2,
149
+ lineWidth: 0,
150
+ });
151
+ }
152
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/parser/workflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Dependency resolution using DAG (Directed Acyclic Graph)
3
+ */
4
+ import type { Workflow } from '../workflow-models.js';
5
+ /**
6
+ * Error thrown when dependency resolution fails
7
+ */
8
+ export declare class DependencyError extends Error {
9
+ readonly jobs?: string[] | undefined;
10
+ constructor(message: string, jobs?: string[] | undefined);
11
+ }
12
+ /**
13
+ * Dependency graph representation
14
+ */
15
+ export interface DependencyGraph {
16
+ /** All nodes (job IDs) */
17
+ nodes: Set<string>;
18
+ /** Edges: key depends on values */
19
+ edges: Map<string, Set<string>>;
20
+ /** Reverse edges: key is required by values */
21
+ reverseEdges: Map<string, Set<string>>;
22
+ }
23
+ /**
24
+ * Build dependency graph from workflow
25
+ */
26
+ export declare function buildDependencyGraph(workflow: Workflow): DependencyGraph;
27
+ /**
28
+ * Detect circular dependencies in graph
29
+ * Returns the cycle path if found, empty array otherwise
30
+ */
31
+ export declare function detectCycle(graph: DependencyGraph): string[];
32
+ /**
33
+ * Group jobs into parallel execution phases
34
+ * Jobs in the same phase can run in parallel
35
+ */
36
+ export declare function groupIntoPhases(graph: DependencyGraph): string[][];
37
+ //# sourceMappingURL=dependency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency.d.ts","sourceRoot":"","sources":["../../src/scheduler/dependency.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGtD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,IAAI,CAAC,EAAE,MAAM,EAAE;gBAD/B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAA;CAKlC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,mCAAmC;IACnC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChC,+CAA+C;IAC/C,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACxC;AAkBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,CA4BxE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,EAAE,CAmC5D;AAYD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,EAAE,EAAE,CA2ClE"}