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,112 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import ts from 'typescript';
4
+ import { execSync } from 'child_process';
5
+ import { builtinModules } from 'module';
6
+ const SCAN_DIRS = ['./src/source/code'];
7
+ const PACKAGE_JSON_PATH = './package.json';
8
+ const TSCONFIG_PATH = './tsconfig.json';
9
+ /**
10
+ * Scan a file for imports
11
+ */
12
+ function getImports(filePath) {
13
+ const fileContent = fs.readFileSync(filePath, 'utf8');
14
+ const sourceFile = ts.createSourceFile(filePath, fileContent, ts.ScriptTarget.Latest, true);
15
+ const imports = [];
16
+ function visit(node) {
17
+ if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) {
18
+ if (node.moduleSpecifier && ts.isStringLiteral(node.moduleSpecifier)) {
19
+ imports.push(node.moduleSpecifier.text);
20
+ }
21
+ }
22
+ ts.forEachChild(node, visit);
23
+ }
24
+ visit(sourceFile);
25
+ return imports;
26
+ }
27
+ /**
28
+ * Get all TS files in a directory recursively
29
+ */
30
+ function getFiles(dir) {
31
+ const files = [];
32
+ const items = fs.readdirSync(dir, { withFileTypes: true });
33
+ for (const item of items) {
34
+ if (item.isDirectory()) {
35
+ files.push(...getFiles(path.join(dir, item.name)));
36
+ }
37
+ else if (item.name.endsWith('.ts')) {
38
+ files.push(path.join(dir, item.name));
39
+ }
40
+ }
41
+ return files;
42
+ }
43
+ /**
44
+ * Main function
45
+ */
46
+ async function main() {
47
+ const args = process.argv.slice(2);
48
+ const dryRun = args.includes('--dry-run');
49
+ console.log('🔍 Scanning code-nodes for dependencies...');
50
+ // Load package.json
51
+ const packageJson = JSON.parse(fs.readFileSync(PACKAGE_JSON_PATH, 'utf8'));
52
+ const dependencies = new Set(Object.keys(packageJson.dependencies || {}));
53
+ const devDependencies = new Set(Object.keys(packageJson.devDependencies || {}));
54
+ // Load tsconfig for paths
55
+ let paths = {};
56
+ if (fs.existsSync(TSCONFIG_PATH)) {
57
+ const tsconfig = JSON.parse(fs.readFileSync(TSCONFIG_PATH, 'utf8'));
58
+ paths = tsconfig.compilerOptions?.paths || {};
59
+ }
60
+ const pathAliases = Object.keys(paths).map(p => p.replace(/\/\*$/, ''));
61
+ // Scan files
62
+ const files = SCAN_DIRS.flatMap(dir => fs.existsSync(dir) ? getFiles(dir) : []);
63
+ const detectedDeps = new Set();
64
+ for (const file of files) {
65
+ const imports = getImports(file);
66
+ for (let imp of imports) {
67
+ // Filter relative imports
68
+ if (imp.startsWith('.'))
69
+ continue;
70
+ // Filter path aliases
71
+ if (pathAliases.some(alias => imp === alias || imp.startsWith(alias + '/')))
72
+ continue;
73
+ // Filter built-ins
74
+ if (builtinModules.includes(imp) || imp.startsWith('node:'))
75
+ continue;
76
+ // Extract package name (handle scoped packages)
77
+ let pkgName = '';
78
+ if (imp.startsWith('@')) {
79
+ const parts = imp.split('/');
80
+ pkgName = `${parts[0]}/${parts[1]}`;
81
+ }
82
+ else {
83
+ pkgName = imp.split('/')[0];
84
+ }
85
+ if (pkgName) {
86
+ detectedDeps.add(pkgName);
87
+ }
88
+ }
89
+ }
90
+ const missingDeps = Array.from(detectedDeps).filter(d => !dependencies.has(d) && !devDependencies.has(d));
91
+ if (missingDeps.length === 0) {
92
+ console.log('✅ All dependencies are present in package.json');
93
+ return;
94
+ }
95
+ console.log(`📦 Found ${missingDeps.length} missing dependencies:`);
96
+ missingDeps.forEach(d => console.log(` - ${d}`));
97
+ if (dryRun) {
98
+ console.log('\n⚠️ Dry run: skipping installation.');
99
+ return;
100
+ }
101
+ console.log('\nInstalling missing dependencies...');
102
+ try {
103
+ execSync(`npm install ${missingDeps.join(' ')}`, { stdio: 'inherit' });
104
+ console.log('✅ Dependencies installed successfully.');
105
+ }
106
+ catch (error) {
107
+ console.error('❌ Failed to install dependencies:', error instanceof Error ? error.message : String(error));
108
+ process.exit(1);
109
+ }
110
+ }
111
+ main().catch(console.error);
112
+ //# sourceMappingURL=scan-deps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-deps.js","sourceRoot":"","sources":["../../../engine/scripts/scan-deps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=validate-workflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-workflows.d.ts","sourceRoot":"","sources":["../../../engine/scripts/validate-workflows.ts"],"names":[],"mappings":""}
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env node
2
+ import dotenv from 'dotenv';
3
+ import { loadAllWorkflows } from '../core/workflow-loader.js';
4
+ import { validateWorkflow } from '../core/validator.js';
5
+ import { providerRegistry } from '../providers/registry.js';
6
+ import { GeminiProvider } from '../providers/gemini.js';
7
+ import { GrokProvider } from '../providers/grok.js';
8
+ dotenv.config();
9
+ async function main() {
10
+ console.log('🔍 Validating workflows...\n');
11
+ try {
12
+ // Register providers (needed for provider validation)
13
+ providerRegistry.register(new GeminiProvider());
14
+ providerRegistry.register(new GrokProvider());
15
+ // Load workflows
16
+ const workflows = await loadAllWorkflows();
17
+ if (workflows.size === 0) {
18
+ console.log('⚠️ No workflows found\n');
19
+ return;
20
+ }
21
+ console.log(`Found ${workflows.size} workflow(s)\n`);
22
+ let totalErrors = 0;
23
+ let totalWarnings = 0;
24
+ // Validate each workflow
25
+ for (const [route, workflow] of workflows.entries()) {
26
+ const validation = await validateWorkflow(workflow);
27
+ if (!validation.valid) {
28
+ console.log(`❌ ${route}`);
29
+ if (validation.errors) {
30
+ for (const error of validation.errors) {
31
+ console.log(` ERROR [${error.code}]: ${error.message}`);
32
+ if (error.path) {
33
+ console.log(` at ${error.path}`);
34
+ }
35
+ totalErrors++;
36
+ }
37
+ }
38
+ }
39
+ else {
40
+ console.log(`✅ ${route}`);
41
+ }
42
+ if (validation.warnings && validation.warnings.length > 0) {
43
+ for (const warning of validation.warnings) {
44
+ console.log(` ⚠️ WARNING [${warning.code}]: ${warning.message}`);
45
+ if (warning.path) {
46
+ console.log(` at ${warning.path}`);
47
+ }
48
+ totalWarnings++;
49
+ }
50
+ }
51
+ console.log('');
52
+ }
53
+ // Summary
54
+ console.log('─'.repeat(60));
55
+ console.log(`Summary: ${workflows.size} workflows validated`);
56
+ console.log(` Errors: ${totalErrors}`);
57
+ console.log(` Warnings: ${totalWarnings}`);
58
+ console.log('─'.repeat(60));
59
+ if (totalErrors > 0) {
60
+ console.log('\n❌ Validation failed');
61
+ process.exit(1);
62
+ }
63
+ else {
64
+ console.log('\n✅ All workflows are valid');
65
+ process.exit(0);
66
+ }
67
+ }
68
+ catch (error) {
69
+ console.error('\n❌ Validation failed with error:');
70
+ console.error(error instanceof Error ? error.message : String(error));
71
+ process.exit(1);
72
+ }
73
+ }
74
+ main();
75
+ //# sourceMappingURL=validate-workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-workflows.js","sourceRoot":"","sources":["../../../engine/scripts/validate-workflows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Express } from 'express';
2
+ /**
3
+ * Create and configure Express server
4
+ */
5
+ export declare function createServer(): Express;
6
+ /**
7
+ * Start the server
8
+ */
9
+ export declare function startServer(app: Express, port: number): Promise<void>;
10
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../engine/server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAkEtC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BrE"}
@@ -0,0 +1,92 @@
1
+ import express from 'express';
2
+ import logger from './utils/logger.js';
3
+ /**
4
+ * Create and configure Express server
5
+ */
6
+ export function createServer() {
7
+ const app = express();
8
+ // JSON body parser
9
+ app.use(express.json({ limit: '10mb' }));
10
+ // Request logging middleware
11
+ app.use((req, res, next) => {
12
+ const start = Date.now();
13
+ res.on('finish', () => {
14
+ const duration = Date.now() - start;
15
+ logger.info('Request completed', {
16
+ method: req.method,
17
+ path: req.path,
18
+ status: res.statusCode,
19
+ duration: `${duration}ms`,
20
+ });
21
+ });
22
+ next();
23
+ });
24
+ // CORS support
25
+ app.use((req, res, next) => {
26
+ res.header('Access-Control-Allow-Origin', '*');
27
+ res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, PATCH, OPTIONS');
28
+ res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
29
+ if (req.method === 'OPTIONS') {
30
+ res.sendStatus(200);
31
+ return;
32
+ }
33
+ next();
34
+ });
35
+ // Health check endpoint
36
+ app.get('/health', (_req, res) => {
37
+ res.status(200).json({
38
+ status: 'ok',
39
+ timestamp: new Date().toISOString(),
40
+ uptime: process.uptime(),
41
+ });
42
+ });
43
+ // Error handling middleware
44
+ app.use((error, req, res, _next) => {
45
+ logger.error('Unhandled error', {
46
+ method: req.method,
47
+ path: req.path,
48
+ error: error.message,
49
+ stack: error.stack,
50
+ });
51
+ res.status(500).json({
52
+ success: false,
53
+ error: {
54
+ stage: 'server',
55
+ code: 'INTERNAL_ERROR',
56
+ message: error.message || 'Internal server error',
57
+ },
58
+ });
59
+ });
60
+ return app;
61
+ }
62
+ /**
63
+ * Start the server
64
+ */
65
+ export function startServer(app, port) {
66
+ return new Promise((resolve, reject) => {
67
+ const server = app.listen(port, () => {
68
+ logger.info(`Server started on port ${port}`);
69
+ resolve();
70
+ });
71
+ server.on('error', (error) => {
72
+ logger.error('Server error', { error: error.message });
73
+ reject(error);
74
+ });
75
+ // Graceful shutdown
76
+ process.on('SIGTERM', () => {
77
+ logger.info('SIGTERM received, shutting down gracefully');
78
+ server.close(() => {
79
+ logger.info('Server closed');
80
+ process.exit(0);
81
+ });
82
+ });
83
+ process.on('SIGINT', () => {
84
+ logger.info('SIGINT received, shutting down gracefully');
85
+ server.close(() => {
86
+ logger.info('Server closed');
87
+ process.exit(0);
88
+ });
89
+ });
90
+ });
91
+ }
92
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../engine/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,304 @@
1
+ /**
2
+ * Core type definitions for the Dynamic API Workflow Engine
3
+ */
4
+ /**
5
+ * Unified output format for all node types
6
+ */
7
+ export interface NodeOutput {
8
+ type: 'string' | 'json' | 'number' | 'boolean' | 'array';
9
+ value: unknown;
10
+ }
11
+ /**
12
+ * LLM provider configuration
13
+ */
14
+ export interface LLMConfig {
15
+ model: string;
16
+ temperature?: number;
17
+ maxTokens?: number;
18
+ thinkingTokens?: number;
19
+ custom?: Record<string, unknown>;
20
+ }
21
+ /**
22
+ * System message definition for LLM nodes
23
+ */
24
+ export interface SystemMessage {
25
+ file?: string;
26
+ content?: string;
27
+ cache?: boolean;
28
+ }
29
+ /**
30
+ * Base node definition
31
+ */
32
+ export interface BaseNodeDefinition {
33
+ id: string;
34
+ type: 'llm' | 'code' | 'reduce' | 'split' | 'passthrough';
35
+ }
36
+ /**
37
+ * LLM node definition
38
+ */
39
+ export interface LLMNodeDefinition extends BaseNodeDefinition {
40
+ type: 'llm';
41
+ llmRef?: string;
42
+ provider?: 'gemini' | 'grok';
43
+ config?: LLMConfig;
44
+ systemMessages?: SystemMessage[];
45
+ input: string;
46
+ }
47
+ /**
48
+ * Code node definition
49
+ */
50
+ export interface CodeNodeDefinition extends BaseNodeDefinition {
51
+ type: 'code';
52
+ file: string;
53
+ input: string;
54
+ }
55
+ /**
56
+ * Reduce node definition
57
+ */
58
+ export interface ReduceNodeDefinition extends BaseNodeDefinition {
59
+ type: 'reduce';
60
+ inputs: string[];
61
+ mapping: Record<string, string>;
62
+ }
63
+ /**
64
+ * Split node definition
65
+ */
66
+ export interface SplitNodeDefinition extends BaseNodeDefinition {
67
+ type: 'split';
68
+ input: string;
69
+ mapping: Record<string, string>;
70
+ }
71
+ /**
72
+ * Passthrough node definition
73
+ */
74
+ export interface PassthroughNodeDefinition extends BaseNodeDefinition {
75
+ type: 'passthrough';
76
+ input: string;
77
+ }
78
+ /**
79
+ * Union of all node definition types
80
+ */
81
+ export type NodeDefinition = LLMNodeDefinition | CodeNodeDefinition | ReduceNodeDefinition | SplitNodeDefinition | PassthroughNodeDefinition;
82
+ /**
83
+ * Stage definition
84
+ * nodes is a Record where key is nodeId and value is the inline node definition with input
85
+ */
86
+ export interface StageDefinition {
87
+ name: string;
88
+ nodes: Record<string, InlineNodeDefinition>;
89
+ parallel?: boolean;
90
+ errorStrategy?: 'complete' | 'fast';
91
+ }
92
+ /**
93
+ * Inline node definition (includes input and full node config)
94
+ */
95
+ export type InlineNodeDefinition = InlineLLMNode | InlineCodeNode | InlineReduceNode | InlineSplitNode | InlinePassthroughNode;
96
+ export interface InlineLLMNode {
97
+ type: 'llm';
98
+ input: string;
99
+ provider?: 'gemini' | 'grok';
100
+ model?: string;
101
+ temperature?: number;
102
+ maxTokens?: number;
103
+ systemMessages?: SystemMessage[];
104
+ }
105
+ export interface InlineCodeNode {
106
+ type: 'code';
107
+ input: string;
108
+ file: string;
109
+ }
110
+ export interface InlineReduceNode {
111
+ type: 'reduce';
112
+ inputs: string[];
113
+ mapping: Record<string, string>;
114
+ }
115
+ export interface InlineSplitNode {
116
+ type: 'split';
117
+ input: string;
118
+ mapping: Record<string, string>;
119
+ }
120
+ export interface InlinePassthroughNode {
121
+ type: 'passthrough';
122
+ input: string;
123
+ }
124
+ /**
125
+ * Input schema definition
126
+ */
127
+ export interface InputSchema {
128
+ inline?: Record<string, unknown>;
129
+ file?: string;
130
+ }
131
+ /**
132
+ * Endpoint configuration
133
+ */
134
+ export interface EndpointConfig {
135
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
136
+ route?: string;
137
+ routeParams?: string[];
138
+ endpointPath?: string;
139
+ }
140
+ /**
141
+ * HTTP method definition (stages for a specific method)
142
+ */
143
+ export interface EndpointMethodDefinition {
144
+ stages: StageDefinition[];
145
+ }
146
+ /**
147
+ * Endpoint file definition (keyed by HTTP method)
148
+ */
149
+ export interface EndpointFileDefinition {
150
+ version: string;
151
+ POST?: EndpointMethodDefinition;
152
+ GET?: EndpointMethodDefinition;
153
+ PUT?: EndpointMethodDefinition;
154
+ DELETE?: EndpointMethodDefinition;
155
+ PATCH?: EndpointMethodDefinition;
156
+ }
157
+ /**
158
+ * Complete workflow definition (merged nodes + endpoint)
159
+ */
160
+ export interface WorkflowDefinition {
161
+ version: string;
162
+ endpoint?: EndpointConfig;
163
+ input?: {
164
+ schema?: InputSchema;
165
+ };
166
+ llm?: Record<string, {
167
+ provider: 'gemini' | 'grok';
168
+ config: LLMConfig;
169
+ }>;
170
+ nodes: NodeDefinition[];
171
+ stages: StageDefinition[];
172
+ }
173
+ /**
174
+ * Validation result
175
+ */
176
+ export interface ValidationResult {
177
+ valid: boolean;
178
+ errors?: ValidationError[];
179
+ warnings?: ValidationWarning[];
180
+ }
181
+ /**
182
+ * Validation error
183
+ */
184
+ export interface ValidationError {
185
+ code: string;
186
+ message: string;
187
+ path?: string;
188
+ details?: unknown;
189
+ }
190
+ /**
191
+ * Validation warning
192
+ */
193
+ export interface ValidationWarning {
194
+ code: string;
195
+ message: string;
196
+ path?: string;
197
+ }
198
+ /**
199
+ * LLM call parameters
200
+ */
201
+ export interface LLMCallParams {
202
+ config: LLMConfig;
203
+ systemMessages: Array<{
204
+ content: string;
205
+ cache: boolean;
206
+ }>;
207
+ userMessage: string;
208
+ }
209
+ /**
210
+ * LLM response
211
+ */
212
+ export interface LLMResponse {
213
+ content: string;
214
+ usage?: {
215
+ inputTokens: number;
216
+ outputTokens: number;
217
+ cachedTokens?: number;
218
+ };
219
+ metadata?: Record<string, unknown>;
220
+ }
221
+ /**
222
+ * LLM provider interface
223
+ */
224
+ export interface LLMProvider {
225
+ name: string;
226
+ validateConfig(config: LLMConfig): Promise<ValidationResult>;
227
+ call(params: LLMCallParams): Promise<LLMResponse>;
228
+ supportsFeature(feature: string): boolean;
229
+ }
230
+ /**
231
+ * Workflow error response
232
+ */
233
+ export interface WorkflowError {
234
+ success: false;
235
+ error: {
236
+ stage: string;
237
+ node?: string;
238
+ code: string;
239
+ message: string;
240
+ details?: unknown;
241
+ };
242
+ errors?: Array<{
243
+ stage: string;
244
+ node: string;
245
+ code: string;
246
+ message: string;
247
+ details?: unknown;
248
+ }>;
249
+ }
250
+ /**
251
+ * Workflow success response
252
+ */
253
+ export interface WorkflowSuccess {
254
+ success: true;
255
+ data: unknown;
256
+ }
257
+ /**
258
+ * Workflow response
259
+ */
260
+ export type WorkflowResponse = WorkflowSuccess | WorkflowError;
261
+ /**
262
+ * Node execution metrics
263
+ */
264
+ export interface NodeMetrics {
265
+ nodeId: string;
266
+ nodeType: 'llm' | 'code' | 'reduce' | 'split' | 'passthrough';
267
+ executionTimeMs: number;
268
+ model?: string;
269
+ inputTokens?: number;
270
+ outputTokens?: number;
271
+ cachedTokens?: number;
272
+ }
273
+ /**
274
+ * Execution context for tracking node outputs
275
+ */
276
+ export interface ExecutionContext {
277
+ requestId: string;
278
+ input: unknown;
279
+ params: Record<string, string>;
280
+ nodeOutputs: Map<string, NodeOutput>;
281
+ splitOutputs: Map<string, Map<string, NodeOutput>>;
282
+ timing: Map<string, number>;
283
+ metrics: NodeMetrics[];
284
+ }
285
+ /**
286
+ * Error codes
287
+ */
288
+ export declare enum ErrorCode {
289
+ VALIDATION_FAILED = "VALIDATION_FAILED",
290
+ NODE_NOT_FOUND = "NODE_NOT_FOUND",
291
+ CODE_EXCEPTION = "CODE_EXCEPTION",
292
+ CODE_INVALID_OUTPUT = "CODE_INVALID_OUTPUT",
293
+ LLM_API_ERROR = "LLM_API_ERROR",
294
+ LLM_TIMEOUT = "LLM_TIMEOUT",
295
+ LLM_RATE_LIMIT = "LLM_RATE_LIMIT",
296
+ JSONPATH_ERROR = "JSONPATH_ERROR",
297
+ STAGE_FAILED = "STAGE_FAILED",
298
+ WORKFLOW_LOAD_FAILED = "WORKFLOW_LOAD_FAILED",
299
+ INVALID_WORKFLOW = "INVALID_WORKFLOW",
300
+ PROVIDER_NOT_FOUND = "PROVIDER_NOT_FOUND",
301
+ FILE_NOT_FOUND = "FILE_NOT_FOUND",
302
+ CYCLE_DETECTED = "CYCLE_DETECTED"
303
+ }
304
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../engine/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Core type definitions for the Dynamic API Workflow Engine
3
+ */
4
+ /**
5
+ * Error codes
6
+ */
7
+ export var ErrorCode;
8
+ (function (ErrorCode) {
9
+ ErrorCode["VALIDATION_FAILED"] = "VALIDATION_FAILED";
10
+ ErrorCode["NODE_NOT_FOUND"] = "NODE_NOT_FOUND";
11
+ ErrorCode["CODE_EXCEPTION"] = "CODE_EXCEPTION";
12
+ ErrorCode["CODE_INVALID_OUTPUT"] = "CODE_INVALID_OUTPUT";
13
+ ErrorCode["LLM_API_ERROR"] = "LLM_API_ERROR";
14
+ ErrorCode["LLM_TIMEOUT"] = "LLM_TIMEOUT";
15
+ ErrorCode["LLM_RATE_LIMIT"] = "LLM_RATE_LIMIT";
16
+ ErrorCode["JSONPATH_ERROR"] = "JSONPATH_ERROR";
17
+ ErrorCode["STAGE_FAILED"] = "STAGE_FAILED";
18
+ ErrorCode["WORKFLOW_LOAD_FAILED"] = "WORKFLOW_LOAD_FAILED";
19
+ ErrorCode["INVALID_WORKFLOW"] = "INVALID_WORKFLOW";
20
+ ErrorCode["PROVIDER_NOT_FOUND"] = "PROVIDER_NOT_FOUND";
21
+ ErrorCode["FILE_NOT_FOUND"] = "FILE_NOT_FOUND";
22
+ ErrorCode["CYCLE_DETECTED"] = "CYCLE_DETECTED";
23
+ })(ErrorCode || (ErrorCode = {}));
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../engine/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AA8TH;;GAEG;AACH,MAAM,CAAN,IAAY,SAeX;AAfD,WAAY,SAAS;IACjB,oDAAuC,CAAA;IACvC,8CAAiC,CAAA;IACjC,8CAAiC,CAAA;IACjC,wDAA2C,CAAA;IAC3C,4CAA+B,CAAA;IAC/B,wCAA2B,CAAA;IAC3B,8CAAiC,CAAA;IACjC,8CAAiC,CAAA;IACjC,0CAA6B,CAAA;IAC7B,0DAA6C,CAAA;IAC7C,kDAAqC,CAAA;IACrC,sDAAyC,CAAA;IACzC,8CAAiC,CAAA;IACjC,8CAAiC,CAAA;AACrC,CAAC,EAfW,SAAS,KAAT,SAAS,QAepB"}