dynamic-api-workflow 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 (114) hide show
  1. package/README.md +287 -0
  2. package/dist/engine/cli.d.ts +3 -0
  3. package/dist/engine/cli.d.ts.map +1 -0
  4. package/dist/engine/cli.js +4 -0
  5. package/dist/engine/cli.js.map +1 -0
  6. package/dist/engine/config/llm-costs.d.ts +16 -0
  7. package/dist/engine/config/llm-costs.d.ts.map +1 -0
  8. package/dist/engine/config/llm-costs.js +38 -0
  9. package/dist/engine/config/llm-costs.js.map +1 -0
  10. package/dist/engine/core/node-executor.d.ts +8 -0
  11. package/dist/engine/core/node-executor.d.ts.map +1 -0
  12. package/dist/engine/core/node-executor.js +144 -0
  13. package/dist/engine/core/node-executor.js.map +1 -0
  14. package/dist/engine/core/validator.d.ts +6 -0
  15. package/dist/engine/core/validator.d.ts.map +1 -0
  16. package/dist/engine/core/validator.js +473 -0
  17. package/dist/engine/core/validator.js.map +1 -0
  18. package/dist/engine/core/workflow-executor.d.ts +6 -0
  19. package/dist/engine/core/workflow-executor.d.ts.map +1 -0
  20. package/dist/engine/core/workflow-executor.js +186 -0
  21. package/dist/engine/core/workflow-executor.js.map +1 -0
  22. package/dist/engine/core/workflow-loader.d.ts +26 -0
  23. package/dist/engine/core/workflow-loader.d.ts.map +1 -0
  24. package/dist/engine/core/workflow-loader.js +257 -0
  25. package/dist/engine/core/workflow-loader.js.map +1 -0
  26. package/dist/engine/index.d.ts +5 -0
  27. package/dist/engine/index.d.ts.map +1 -0
  28. package/dist/engine/index.js +70 -0
  29. package/dist/engine/index.js.map +1 -0
  30. package/dist/engine/nodes/code-node.d.ts +6 -0
  31. package/dist/engine/nodes/code-node.d.ts.map +1 -0
  32. package/dist/engine/nodes/code-node.js +70 -0
  33. package/dist/engine/nodes/code-node.js.map +1 -0
  34. package/dist/engine/nodes/llm-node.d.ts +6 -0
  35. package/dist/engine/nodes/llm-node.d.ts.map +1 -0
  36. package/dist/engine/nodes/llm-node.js +164 -0
  37. package/dist/engine/nodes/llm-node.js.map +1 -0
  38. package/dist/engine/nodes/passthrough-node.d.ts +6 -0
  39. package/dist/engine/nodes/passthrough-node.d.ts.map +1 -0
  40. package/dist/engine/nodes/passthrough-node.js +13 -0
  41. package/dist/engine/nodes/passthrough-node.js.map +1 -0
  42. package/dist/engine/nodes/reduce-node.d.ts +6 -0
  43. package/dist/engine/nodes/reduce-node.d.ts.map +1 -0
  44. package/dist/engine/nodes/reduce-node.js +44 -0
  45. package/dist/engine/nodes/reduce-node.js.map +1 -0
  46. package/dist/engine/nodes/split-node.d.ts +10 -0
  47. package/dist/engine/nodes/split-node.d.ts.map +1 -0
  48. package/dist/engine/nodes/split-node.js +51 -0
  49. package/dist/engine/nodes/split-node.js.map +1 -0
  50. package/dist/engine/providers/gemini.d.ts +27 -0
  51. package/dist/engine/providers/gemini.d.ts.map +1 -0
  52. package/dist/engine/providers/gemini.js +163 -0
  53. package/dist/engine/providers/gemini.js.map +1 -0
  54. package/dist/engine/providers/grok.d.ts +28 -0
  55. package/dist/engine/providers/grok.d.ts.map +1 -0
  56. package/dist/engine/providers/grok.js +164 -0
  57. package/dist/engine/providers/grok.js.map +1 -0
  58. package/dist/engine/providers/registry.d.ts +33 -0
  59. package/dist/engine/providers/registry.d.ts.map +1 -0
  60. package/dist/engine/providers/registry.js +51 -0
  61. package/dist/engine/providers/registry.js.map +1 -0
  62. package/dist/engine/router.d.ts +8 -0
  63. package/dist/engine/router.d.ts.map +1 -0
  64. package/dist/engine/router.js +79 -0
  65. package/dist/engine/router.js.map +1 -0
  66. package/dist/engine/scripts/cleanup-port.d.ts +2 -0
  67. package/dist/engine/scripts/cleanup-port.d.ts.map +1 -0
  68. package/dist/engine/scripts/cleanup-port.js +54 -0
  69. package/dist/engine/scripts/cleanup-port.js.map +1 -0
  70. package/dist/engine/scripts/create-endpoint.d.ts +2 -0
  71. package/dist/engine/scripts/create-endpoint.d.ts.map +1 -0
  72. package/dist/engine/scripts/create-endpoint.js +83 -0
  73. package/dist/engine/scripts/create-endpoint.js.map +1 -0
  74. package/dist/engine/scripts/scan-deps.d.ts +2 -0
  75. package/dist/engine/scripts/scan-deps.d.ts.map +1 -0
  76. package/dist/engine/scripts/scan-deps.js +112 -0
  77. package/dist/engine/scripts/scan-deps.js.map +1 -0
  78. package/dist/engine/scripts/validate-workflows.d.ts +3 -0
  79. package/dist/engine/scripts/validate-workflows.d.ts.map +1 -0
  80. package/dist/engine/scripts/validate-workflows.js +75 -0
  81. package/dist/engine/scripts/validate-workflows.js.map +1 -0
  82. package/dist/engine/server.d.ts +10 -0
  83. package/dist/engine/server.d.ts.map +1 -0
  84. package/dist/engine/server.js +92 -0
  85. package/dist/engine/server.js.map +1 -0
  86. package/dist/engine/types/index.d.ts +304 -0
  87. package/dist/engine/types/index.d.ts.map +1 -0
  88. package/dist/engine/types/index.js +24 -0
  89. package/dist/engine/types/index.js.map +1 -0
  90. package/dist/engine/utils/file-cache.d.ts +31 -0
  91. package/dist/engine/utils/file-cache.d.ts.map +1 -0
  92. package/dist/engine/utils/file-cache.js +68 -0
  93. package/dist/engine/utils/file-cache.js.map +1 -0
  94. package/dist/engine/utils/file-resolver.d.ts +21 -0
  95. package/dist/engine/utils/file-resolver.d.ts.map +1 -0
  96. package/dist/engine/utils/file-resolver.js +33 -0
  97. package/dist/engine/utils/file-resolver.js.map +1 -0
  98. package/dist/engine/utils/jsonpath.d.ts +13 -0
  99. package/dist/engine/utils/jsonpath.d.ts.map +1 -0
  100. package/dist/engine/utils/jsonpath.js +38 -0
  101. package/dist/engine/utils/jsonpath.js.map +1 -0
  102. package/dist/engine/utils/logger.d.ts +11 -0
  103. package/dist/engine/utils/logger.d.ts.map +1 -0
  104. package/dist/engine/utils/logger.js +24 -0
  105. package/dist/engine/utils/logger.js.map +1 -0
  106. package/dist/engine/utils/metrics.d.ts +6 -0
  107. package/dist/engine/utils/metrics.d.ts.map +1 -0
  108. package/dist/engine/utils/metrics.js +82 -0
  109. package/dist/engine/utils/metrics.js.map +1 -0
  110. package/dist/engine/utils/schema-validator.d.ts +10 -0
  111. package/dist/engine/utils/schema-validator.d.ts.map +1 -0
  112. package/dist/engine/utils/schema-validator.js +61 -0
  113. package/dist/engine/utils/schema-validator.js.map +1 -0
  114. package/package.json +53 -0
@@ -0,0 +1,473 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ import { providerRegistry } from '../providers/registry.js';
4
+ import { ErrorCode } from '../types/index.js';
5
+ import { resolveFilePath } from '../utils/file-resolver.js';
6
+ const schemasDir = process.env.SCHEMAS_DIR || './src/source/schemas';
7
+ /**
8
+ * Validate a workflow definition
9
+ */
10
+ export async function validateWorkflow(workflow) {
11
+ const errors = [];
12
+ const warnings = [];
13
+ // Validate nodes
14
+ const nodeValidation = validateNodes(workflow);
15
+ errors.push(...nodeValidation.errors);
16
+ warnings.push(...nodeValidation.warnings);
17
+ // Validate stages
18
+ const stageValidation = validateStages(workflow);
19
+ errors.push(...stageValidation.errors);
20
+ warnings.push(...stageValidation.warnings);
21
+ // Validate entry/exit stages
22
+ const entryExitValidation = validateEntryExitStages(workflow);
23
+ errors.push(...entryExitValidation.errors);
24
+ // Validate input references
25
+ const inputValidation = validateInputReferences(workflow);
26
+ errors.push(...inputValidation.errors);
27
+ // Check for cycles
28
+ const cycleValidation = detectCycles(workflow);
29
+ errors.push(...cycleValidation.errors);
30
+ // Validate file existence
31
+ const fileValidation = await validateFileExistence(workflow);
32
+ errors.push(...fileValidation.errors);
33
+ // Validate LLM references
34
+ const llmValidation = validateLLMReferences(workflow);
35
+ errors.push(...llmValidation.errors);
36
+ warnings.push(...llmValidation.warnings);
37
+ if (errors.length > 0) {
38
+ return { valid: false, errors, warnings };
39
+ }
40
+ return { valid: true, warnings };
41
+ }
42
+ /**
43
+ * Validate node definitions
44
+ */
45
+ function validateNodes(workflow) {
46
+ const errors = [];
47
+ const warnings = [];
48
+ const nodeIds = new Set();
49
+ for (const node of workflow.nodes) {
50
+ // Check node ID uniqueness
51
+ if (nodeIds.has(node.id)) {
52
+ errors.push({
53
+ code: ErrorCode.INVALID_WORKFLOW,
54
+ message: `Duplicate node ID: ${node.id}`,
55
+ path: `nodes[${node.id}]`,
56
+ });
57
+ }
58
+ nodeIds.add(node.id);
59
+ // Validate node type specific requirements
60
+ if (node.type === 'llm') {
61
+ if (!node.llmRef && !node.provider) {
62
+ errors.push({
63
+ code: ErrorCode.INVALID_WORKFLOW,
64
+ message: `LLM node '${node.id}' must have either 'llmRef' or 'provider' specified`,
65
+ path: `nodes[${node.id}]`,
66
+ });
67
+ }
68
+ if (node.provider && !node.config) {
69
+ errors.push({
70
+ code: ErrorCode.INVALID_WORKFLOW,
71
+ message: `LLM node '${node.id}' with inline provider must have 'config'`,
72
+ path: `nodes[${node.id}]`,
73
+ });
74
+ }
75
+ }
76
+ if (node.type === 'code') {
77
+ if (!node.file) {
78
+ errors.push({
79
+ code: ErrorCode.INVALID_WORKFLOW,
80
+ message: `Code node '${node.id}' must have 'file' specified`,
81
+ path: `nodes[${node.id}]`,
82
+ });
83
+ }
84
+ }
85
+ if (node.type === 'reduce') {
86
+ if (!node.inputs || node.inputs.length === 0) {
87
+ errors.push({
88
+ code: ErrorCode.INVALID_WORKFLOW,
89
+ message: `Reduce node '${node.id}' must have at least one input`,
90
+ path: `nodes[${node.id}]`,
91
+ });
92
+ }
93
+ if (!node.mapping || Object.keys(node.mapping).length === 0) {
94
+ errors.push({
95
+ code: ErrorCode.INVALID_WORKFLOW,
96
+ message: `Reduce node '${node.id}' must have mapping defined`,
97
+ path: `nodes[${node.id}]`,
98
+ });
99
+ }
100
+ }
101
+ if (node.type === 'split') {
102
+ if (!node.mapping || Object.keys(node.mapping).length === 0) {
103
+ errors.push({
104
+ code: ErrorCode.INVALID_WORKFLOW,
105
+ message: `Split node '${node.id}' must have mapping defined`,
106
+ path: `nodes[${node.id}]`,
107
+ });
108
+ }
109
+ }
110
+ }
111
+ return { errors, warnings };
112
+ }
113
+ /**
114
+ * Validate stage definitions
115
+ * All stages now use nodes: { nodeId: InlineNodeDefinition }
116
+ */
117
+ function validateStages(workflow) {
118
+ const errors = [];
119
+ const warnings = [];
120
+ const nodeIds = new Set(workflow.nodes.map((n) => n.id));
121
+ const referencedNodes = new Set();
122
+ const isSingleStage = workflow.stages.length === 1;
123
+ for (const stage of workflow.stages) {
124
+ // Validate nodes object exists
125
+ if (!stage.nodes || typeof stage.nodes !== 'object') {
126
+ errors.push({
127
+ code: ErrorCode.INVALID_WORKFLOW,
128
+ message: `Stage '${stage.name}' must have 'nodes' object defined`,
129
+ path: `stages[${stage.name}]`,
130
+ });
131
+ continue;
132
+ }
133
+ const nodeEntries = Object.entries(stage.nodes);
134
+ if (nodeEntries.length === 0) {
135
+ errors.push({
136
+ code: ErrorCode.INVALID_WORKFLOW,
137
+ message: `Stage '${stage.name}' must have at least one node`,
138
+ path: `stages[${stage.name}]`,
139
+ });
140
+ continue;
141
+ }
142
+ // Determine if this is a boundary stage (entry, exit, or single 'main' stage)
143
+ const isBoundaryStage = stage.name === 'entry' ||
144
+ stage.name === 'exit' ||
145
+ (isSingleStage && stage.name === 'main');
146
+ // Boundary stages must have exactly 1 node
147
+ if (isBoundaryStage && nodeEntries.length !== 1) {
148
+ errors.push({
149
+ code: ErrorCode.INVALID_WORKFLOW,
150
+ message: `Stage '${stage.name}' must have exactly 1 node, got ${nodeEntries.length}`,
151
+ path: `stages[${stage.name}]`,
152
+ });
153
+ }
154
+ // Validate each node reference
155
+ for (const [nodeId, inlineNode] of nodeEntries) {
156
+ if (!nodeIds.has(nodeId)) {
157
+ errors.push({
158
+ code: ErrorCode.NODE_NOT_FOUND,
159
+ message: `Stage '${stage.name}' references non-existent node: ${nodeId}`,
160
+ path: `stages[${stage.name}].nodes`,
161
+ });
162
+ }
163
+ else {
164
+ referencedNodes.add(nodeId);
165
+ }
166
+ // Validate input is a string (property of InlineNodeDefinition)
167
+ const input = 'input' in inlineNode ? inlineNode.input : undefined;
168
+ if (!input || typeof input !== 'string') {
169
+ // Reduce nodes might have inputs array instead of single input string
170
+ if (inlineNode.type !== 'reduce') {
171
+ errors.push({
172
+ code: ErrorCode.INVALID_WORKFLOW,
173
+ message: `Stage '${stage.name}' node '${nodeId}' input must be a string`,
174
+ path: `stages[${stage.name}].nodes.${nodeId}`,
175
+ });
176
+ }
177
+ }
178
+ }
179
+ }
180
+ // Check if all nodes are referenced
181
+ for (const nodeId of nodeIds) {
182
+ if (!referencedNodes.has(nodeId)) {
183
+ warnings.push({
184
+ code: 'UNREACHABLE_NODE',
185
+ message: `Node '${nodeId}' is not referenced by any stage`,
186
+ path: `nodes[${nodeId}]`,
187
+ });
188
+ }
189
+ }
190
+ return { errors, warnings };
191
+ }
192
+ /**
193
+ * Validate entry and exit stages exist and are in correct positions
194
+ */
195
+ function validateEntryExitStages(workflow) {
196
+ const errors = [];
197
+ if (workflow.stages.length === 0) {
198
+ errors.push({
199
+ code: ErrorCode.INVALID_WORKFLOW,
200
+ message: 'Workflow must have at least one stage',
201
+ });
202
+ return { errors };
203
+ }
204
+ // Single-stage workflow (must be named 'main')
205
+ if (workflow.stages.length === 1) {
206
+ const stage = workflow.stages[0];
207
+ if (stage.name !== 'main') {
208
+ errors.push({
209
+ code: ErrorCode.INVALID_WORKFLOW,
210
+ message: `Single-stage workflow must have stage named 'main', got '${stage.name}'`,
211
+ path: 'stages[0]',
212
+ });
213
+ }
214
+ // Validate entry node uses $input
215
+ if (stage.nodes) {
216
+ const nodeId = Object.keys(stage.nodes)[0];
217
+ const inlineNode = stage.nodes[nodeId];
218
+ const input = 'input' in inlineNode ? inlineNode.input : undefined;
219
+ if (input !== '$input' && !input?.startsWith('$input.')) {
220
+ errors.push({
221
+ code: ErrorCode.INVALID_WORKFLOW,
222
+ message: `Entry node '${nodeId}' must use '$input' or '$input.*', got '${input}'`,
223
+ path: `stages[main].nodes.${nodeId}`,
224
+ });
225
+ }
226
+ }
227
+ return { errors };
228
+ }
229
+ // Multi-stage workflow (must have entry and exit)
230
+ if (workflow.stages[0].name !== 'entry') {
231
+ errors.push({
232
+ code: ErrorCode.INVALID_WORKFLOW,
233
+ message: `First stage must be named 'entry', got '${workflow.stages[0].name}'`,
234
+ path: 'stages[0]',
235
+ });
236
+ }
237
+ const lastStage = workflow.stages[workflow.stages.length - 1];
238
+ if (lastStage.name !== 'exit') {
239
+ errors.push({
240
+ code: ErrorCode.INVALID_WORKFLOW,
241
+ message: `Last stage must be named 'exit', got '${lastStage.name}'`,
242
+ path: `stages[${workflow.stages.length - 1}]`,
243
+ });
244
+ }
245
+ // Validate entry node uses $input
246
+ const entryStage = workflow.stages[0];
247
+ if (entryStage.nodes) {
248
+ const nodeId = Object.keys(entryStage.nodes)[0];
249
+ const inlineNode = entryStage.nodes[nodeId];
250
+ const input = 'input' in inlineNode ? inlineNode.input : undefined;
251
+ if (input !== '$input' && !input?.startsWith('$input.')) {
252
+ errors.push({
253
+ code: ErrorCode.INVALID_WORKFLOW,
254
+ message: `Entry node '${nodeId}' must use '$input' or '$input.*', got '${input}'`,
255
+ path: `stages[entry].nodes.${nodeId}`,
256
+ });
257
+ }
258
+ }
259
+ return { errors };
260
+ }
261
+ /**
262
+ * Validate input references
263
+ */
264
+ function validateInputReferences(workflow) {
265
+ const errors = [];
266
+ const nodeIds = new Set(workflow.nodes.map((n) => n.id));
267
+ const splitNodeIds = new Set(workflow.nodes.filter((n) => n.type === 'split').map((n) => n.id));
268
+ for (const node of workflow.nodes) {
269
+ if ('input' in node && typeof node.input === 'string') {
270
+ const input = node.input;
271
+ // Skip $input (valid special reference)
272
+ if (input === '$input' || input.startsWith('$input.')) {
273
+ continue;
274
+ }
275
+ // Check for split output reference (nodeId.outputName)
276
+ if (input.includes('.')) {
277
+ const [nodeId] = input.split('.');
278
+ // Check if it's a split node OR if it's just a node reference from a stage/namespace
279
+ // NOTE: Currently we only support dots for split outputs.
280
+ // Using stage.node syntax is NOT supported by the engine yet.
281
+ if (!splitNodeIds.has(nodeId)) {
282
+ // Try to verify if it's "namespace.nodeId" but current engine flattens nodes to global scope
283
+ // So any dot implies split-node output access.
284
+ // We will allow it IF the validator is fixed to support namespaces, but for now we error.
285
+ errors.push({
286
+ code: ErrorCode.NODE_NOT_FOUND,
287
+ message: `Node '${node.id}' references '${input}' but '${nodeId}' is not a split node`,
288
+ path: `nodes[${node.id}].input`,
289
+ });
290
+ }
291
+ }
292
+ else {
293
+ // Regular node reference
294
+ if (!nodeIds.has(input)) {
295
+ errors.push({
296
+ code: ErrorCode.NODE_NOT_FOUND,
297
+ message: `Node '${node.id}' references non-existent node: ${input}`,
298
+ path: `nodes[${node.id}].input`,
299
+ });
300
+ }
301
+ }
302
+ }
303
+ // Check reduce node inputs
304
+ if (node.type === 'reduce') {
305
+ for (const input of node.inputs) {
306
+ if (!nodeIds.has(input)) {
307
+ errors.push({
308
+ code: ErrorCode.NODE_NOT_FOUND,
309
+ message: `Reduce node '${node.id}' references non-existent input node: ${input}`,
310
+ path: `nodes[${node.id}].inputs`,
311
+ });
312
+ }
313
+ }
314
+ }
315
+ }
316
+ return { errors };
317
+ }
318
+ /**
319
+ * Detect cycles in node dependencies
320
+ */
321
+ function detectCycles(workflow) {
322
+ const errors = [];
323
+ const graph = buildDependencyGraph(workflow);
324
+ const visited = new Set();
325
+ const recursionStack = new Set();
326
+ function hasCycle(nodeId, path) {
327
+ visited.add(nodeId);
328
+ recursionStack.add(nodeId);
329
+ const dependencies = graph.get(nodeId) || [];
330
+ for (const dep of dependencies) {
331
+ if (!visited.has(dep)) {
332
+ if (hasCycle(dep, [...path, dep])) {
333
+ return true;
334
+ }
335
+ }
336
+ else if (recursionStack.has(dep)) {
337
+ errors.push({
338
+ code: ErrorCode.CYCLE_DETECTED,
339
+ message: `Cycle detected: ${[...path, dep].join(' -> ')}`,
340
+ });
341
+ return true;
342
+ }
343
+ }
344
+ recursionStack.delete(nodeId);
345
+ return false;
346
+ }
347
+ for (const nodeId of graph.keys()) {
348
+ if (!visited.has(nodeId)) {
349
+ hasCycle(nodeId, [nodeId]);
350
+ }
351
+ }
352
+ return { errors };
353
+ }
354
+ /**
355
+ * Build dependency graph from workflow nodes
356
+ */
357
+ function buildDependencyGraph(workflow) {
358
+ const graph = new Map();
359
+ for (const node of workflow.nodes) {
360
+ const dependencies = [];
361
+ if ('input' in node && typeof node.input === 'string' && node.input !== '$input') {
362
+ const inputNodeId = node.input.split('.')[0];
363
+ dependencies.push(inputNodeId);
364
+ }
365
+ if (node.type === 'reduce') {
366
+ dependencies.push(...node.inputs);
367
+ }
368
+ graph.set(node.id, dependencies);
369
+ }
370
+ return graph;
371
+ }
372
+ /**
373
+ * Validate file existence for code nodes, prompts, and schemas
374
+ */
375
+ async function validateFileExistence(workflow) {
376
+ const errors = [];
377
+ const endpointPath = workflow.endpoint?.endpointPath || '';
378
+ // Validate code node files
379
+ for (const node of workflow.nodes) {
380
+ if (node.type === 'code') {
381
+ const filePath = resolveFilePath(node.file, endpointPath, 'codes');
382
+ try {
383
+ await fs.access(filePath);
384
+ }
385
+ catch {
386
+ errors.push({
387
+ code: ErrorCode.FILE_NOT_FOUND,
388
+ message: `Code file not found: ${node.file}`,
389
+ path: `nodes[${node.id}].file`,
390
+ });
391
+ }
392
+ }
393
+ // Validate prompt files for LLM nodes
394
+ if (node.type === 'llm' && node.systemMessages) {
395
+ for (const msg of node.systemMessages) {
396
+ if (msg.file) {
397
+ const filePath = resolveFilePath(msg.file, endpointPath, 'prompts');
398
+ try {
399
+ await fs.access(filePath);
400
+ }
401
+ catch {
402
+ errors.push({
403
+ code: ErrorCode.FILE_NOT_FOUND,
404
+ message: `Prompt file not found: ${msg.file}`,
405
+ path: `nodes[${node.id}].systemMessages`,
406
+ });
407
+ }
408
+ }
409
+ }
410
+ }
411
+ }
412
+ // Validate schema file if referenced
413
+ if (workflow.input?.schema?.file) {
414
+ const filePath = path.join(process.cwd(), schemasDir, workflow.input.schema.file);
415
+ try {
416
+ await fs.access(filePath);
417
+ }
418
+ catch {
419
+ errors.push({
420
+ code: ErrorCode.FILE_NOT_FOUND,
421
+ message: `Schema file not found: ${workflow.input.schema.file}`,
422
+ path: 'input.schema.file',
423
+ });
424
+ }
425
+ }
426
+ return { errors };
427
+ }
428
+ /**
429
+ * Validate LLM references and provider availability
430
+ */
431
+ function validateLLMReferences(workflow) {
432
+ const errors = [];
433
+ const warnings = [];
434
+ for (const node of workflow.nodes) {
435
+ if (node.type === 'llm') {
436
+ // Check llmRef exists
437
+ if (node.llmRef) {
438
+ if (!workflow.llm || !workflow.llm[node.llmRef]) {
439
+ errors.push({
440
+ code: ErrorCode.INVALID_WORKFLOW,
441
+ message: `LLM node '${node.id}' references non-existent llmRef: ${node.llmRef}`,
442
+ path: `nodes[${node.id}].llmRef`,
443
+ });
444
+ }
445
+ else {
446
+ // Check provider is registered
447
+ const llmConfig = workflow.llm[node.llmRef];
448
+ const validation = providerRegistry.validate(llmConfig.provider);
449
+ if (!validation.valid) {
450
+ errors.push({
451
+ code: ErrorCode.PROVIDER_NOT_FOUND,
452
+ message: validation.error || 'Provider not found',
453
+ path: `llm[${node.llmRef}].provider`,
454
+ });
455
+ }
456
+ }
457
+ }
458
+ else if (node.provider) {
459
+ // Inline provider - check it's registered
460
+ const validation = providerRegistry.validate(node.provider);
461
+ if (!validation.valid) {
462
+ errors.push({
463
+ code: ErrorCode.PROVIDER_NOT_FOUND,
464
+ message: validation.error || 'Provider not found',
465
+ path: `nodes[${node.id}].provider`,
466
+ });
467
+ }
468
+ }
469
+ }
470
+ }
471
+ return { errors, warnings };
472
+ }
473
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../engine/core/validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { WorkflowDefinition, WorkflowResponse } from '../types/index.js';
2
+ /**
3
+ * Execute a workflow with the given input
4
+ */
5
+ export declare function executeWorkflow(workflow: WorkflowDefinition, input: unknown, params?: Record<string, string>): Promise<WorkflowResponse>;
6
+ //# sourceMappingURL=workflow-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-executor.d.ts","sourceRoot":"","sources":["../../../engine/core/workflow-executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,kBAAkB,EAClB,gBAAgB,EAInB,MAAM,mBAAmB,CAAC;AAO3B;;GAEG;AACH,wBAAsB,eAAe,CACjC,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,OAAO,EACd,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACpC,OAAO,CAAC,gBAAgB,CAAC,CAsG3B"}