@prompd/cli 0.3.3
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.
- package/README.md +162 -0
- package/bin/prompd.js +23 -0
- package/dist/commands/cache.d.ts +3 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +199 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/compile.d.ts +9 -0
- package/dist/commands/compile.d.ts.map +1 -0
- package/dist/commands/compile.js +104 -0
- package/dist/commands/compile.js.map +1 -0
- package/dist/commands/config.d.ts +7 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +212 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/create.d.ts +3 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +183 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/deps.d.ts +3 -0
- package/dist/commands/deps.d.ts.map +1 -0
- package/dist/commands/deps.js +192 -0
- package/dist/commands/deps.js.map +1 -0
- package/dist/commands/explain.d.ts +3 -0
- package/dist/commands/explain.d.ts.map +1 -0
- package/dist/commands/explain.js +227 -0
- package/dist/commands/explain.js.map +1 -0
- package/dist/commands/git.d.ts +3 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +306 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +177 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +126 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +326 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/namespace.d.ts +3 -0
- package/dist/commands/namespace.d.ts.map +1 -0
- package/dist/commands/namespace.js +113 -0
- package/dist/commands/namespace.js.map +1 -0
- package/dist/commands/package.d.ts +23 -0
- package/dist/commands/package.d.ts.map +1 -0
- package/dist/commands/package.js +746 -0
- package/dist/commands/package.js.map +1 -0
- package/dist/commands/provider.d.ts +3 -0
- package/dist/commands/provider.d.ts.map +1 -0
- package/dist/commands/provider.js +285 -0
- package/dist/commands/provider.js.map +1 -0
- package/dist/commands/registry.d.ts +9 -0
- package/dist/commands/registry.d.ts.map +1 -0
- package/dist/commands/registry.js +361 -0
- package/dist/commands/registry.js.map +1 -0
- package/dist/commands/run.d.ts +3 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +157 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/show.d.ts +3 -0
- package/dist/commands/show.d.ts.map +1 -0
- package/dist/commands/show.js +90 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/uninstall.d.ts +3 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +95 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/validate.d.ts +3 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +57 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/commands/version.d.ts +3 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +166 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +388 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/auth.d.ts +164 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +388 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/compiler/file-system.d.ts +178 -0
- package/dist/lib/compiler/file-system.d.ts.map +1 -0
- package/dist/lib/compiler/file-system.js +440 -0
- package/dist/lib/compiler/file-system.js.map +1 -0
- package/dist/lib/compiler/formatters/anthropic.d.ts +21 -0
- package/dist/lib/compiler/formatters/anthropic.d.ts.map +1 -0
- package/dist/lib/compiler/formatters/anthropic.js +95 -0
- package/dist/lib/compiler/formatters/anthropic.js.map +1 -0
- package/dist/lib/compiler/formatters/markdown.d.ts +17 -0
- package/dist/lib/compiler/formatters/markdown.d.ts.map +1 -0
- package/dist/lib/compiler/formatters/markdown.js +114 -0
- package/dist/lib/compiler/formatters/markdown.js.map +1 -0
- package/dist/lib/compiler/formatters/openai.d.ts +21 -0
- package/dist/lib/compiler/formatters/openai.d.ts.map +1 -0
- package/dist/lib/compiler/formatters/openai.js +98 -0
- package/dist/lib/compiler/formatters/openai.js.map +1 -0
- package/dist/lib/compiler/index.d.ts +56 -0
- package/dist/lib/compiler/index.d.ts.map +1 -0
- package/dist/lib/compiler/index.js +165 -0
- package/dist/lib/compiler/index.js.map +1 -0
- package/dist/lib/compiler/language-map.d.ts +31 -0
- package/dist/lib/compiler/language-map.d.ts.map +1 -0
- package/dist/lib/compiler/language-map.js +156 -0
- package/dist/lib/compiler/language-map.js.map +1 -0
- package/dist/lib/compiler/package-resolver.d.ts +68 -0
- package/dist/lib/compiler/package-resolver.d.ts.map +1 -0
- package/dist/lib/compiler/package-resolver.js +254 -0
- package/dist/lib/compiler/package-resolver.js.map +1 -0
- package/dist/lib/compiler/pipeline.d.ts +53 -0
- package/dist/lib/compiler/pipeline.d.ts.map +1 -0
- package/dist/lib/compiler/pipeline.js +209 -0
- package/dist/lib/compiler/pipeline.js.map +1 -0
- package/dist/lib/compiler/prompd-loader.d.ts +108 -0
- package/dist/lib/compiler/prompd-loader.d.ts.map +1 -0
- package/dist/lib/compiler/prompd-loader.js +270 -0
- package/dist/lib/compiler/prompd-loader.js.map +1 -0
- package/dist/lib/compiler/section-override.d.ts +40 -0
- package/dist/lib/compiler/section-override.d.ts.map +1 -0
- package/dist/lib/compiler/section-override.js +296 -0
- package/dist/lib/compiler/section-override.js.map +1 -0
- package/dist/lib/compiler/stages/assets.d.ts +71 -0
- package/dist/lib/compiler/stages/assets.d.ts.map +1 -0
- package/dist/lib/compiler/stages/assets.js +456 -0
- package/dist/lib/compiler/stages/assets.js.map +1 -0
- package/dist/lib/compiler/stages/codegen.d.ts +17 -0
- package/dist/lib/compiler/stages/codegen.d.ts.map +1 -0
- package/dist/lib/compiler/stages/codegen.js +64 -0
- package/dist/lib/compiler/stages/codegen.js.map +1 -0
- package/dist/lib/compiler/stages/dependency.d.ts +38 -0
- package/dist/lib/compiler/stages/dependency.d.ts.map +1 -0
- package/dist/lib/compiler/stages/dependency.js +307 -0
- package/dist/lib/compiler/stages/dependency.js.map +1 -0
- package/dist/lib/compiler/stages/lexical.d.ts +19 -0
- package/dist/lib/compiler/stages/lexical.d.ts.map +1 -0
- package/dist/lib/compiler/stages/lexical.js +92 -0
- package/dist/lib/compiler/stages/lexical.js.map +1 -0
- package/dist/lib/compiler/stages/semantic.d.ts +20 -0
- package/dist/lib/compiler/stages/semantic.d.ts.map +1 -0
- package/dist/lib/compiler/stages/semantic.js +166 -0
- package/dist/lib/compiler/stages/semantic.js.map +1 -0
- package/dist/lib/compiler/stages/template.d.ts +94 -0
- package/dist/lib/compiler/stages/template.d.ts.map +1 -0
- package/dist/lib/compiler/stages/template.js +1044 -0
- package/dist/lib/compiler/stages/template.js.map +1 -0
- package/dist/lib/compiler/types.d.ts +200 -0
- package/dist/lib/compiler/types.d.ts.map +1 -0
- package/dist/lib/compiler/types.js +137 -0
- package/dist/lib/compiler/types.js.map +1 -0
- package/dist/lib/config.d.ts +29 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +375 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/errors.d.ts +19 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +47 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/executor.d.ts +18 -0
- package/dist/lib/executor.d.ts.map +1 -0
- package/dist/lib/executor.js +372 -0
- package/dist/lib/executor.js.map +1 -0
- package/dist/lib/git.d.ts +74 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +254 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/index.d.ts +43 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +108 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/mcp.d.ts +42 -0
- package/dist/lib/mcp.d.ts.map +1 -0
- package/dist/lib/mcp.js +477 -0
- package/dist/lib/mcp.js.map +1 -0
- package/dist/lib/model-updater.d.ts +51 -0
- package/dist/lib/model-updater.d.ts.map +1 -0
- package/dist/lib/model-updater.js +275 -0
- package/dist/lib/model-updater.js.map +1 -0
- package/dist/lib/parser.d.ts +9 -0
- package/dist/lib/parser.d.ts.map +1 -0
- package/dist/lib/parser.js +197 -0
- package/dist/lib/parser.js.map +1 -0
- package/dist/lib/registry.d.ts +183 -0
- package/dist/lib/registry.d.ts.map +1 -0
- package/dist/lib/registry.js +786 -0
- package/dist/lib/registry.js.map +1 -0
- package/dist/lib/rpc-server.d.ts +78 -0
- package/dist/lib/rpc-server.d.ts.map +1 -0
- package/dist/lib/rpc-server.js +404 -0
- package/dist/lib/rpc-server.js.map +1 -0
- package/dist/lib/security.d.ts +120 -0
- package/dist/lib/security.d.ts.map +1 -0
- package/dist/lib/security.js +478 -0
- package/dist/lib/security.js.map +1 -0
- package/dist/lib/validation.d.ts +106 -0
- package/dist/lib/validation.d.ts.map +1 -0
- package/dist/lib/validation.js +398 -0
- package/dist/lib/validation.js.map +1 -0
- package/dist/lib/version.d.ts +29 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +202 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/lib/workflow-engine.d.ts +161 -0
- package/dist/lib/workflow-engine.d.ts.map +1 -0
- package/dist/lib/workflow-engine.js +422 -0
- package/dist/lib/workflow-engine.js.map +1 -0
- package/dist/lib/workflow.d.ts +102 -0
- package/dist/lib/workflow.d.ts.map +1 -0
- package/dist/lib/workflow.js +228 -0
- package/dist/lib/workflow.js.map +1 -0
- package/dist/server.d.ts +8 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +134 -0
- package/dist/server.js.map +1 -0
- package/dist/types/index.d.ts +116 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +144 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +104 -0
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Prompd Workflow Execution Engine
|
|
4
|
+
* Enterprise-grade LLM workflow chaining with OAuth, security, and RPC
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.TransformerNodeExecutor = exports.APINodeExecutor = exports.OutputNodeExecutor = exports.LoopNodeExecutor = exports.ConditionNodeExecutor = exports.ParameterNodeExecutor = exports.PromptNodeExecutor = exports.NodeExecutor = exports.WorkflowExecution = exports.WorkflowEngine = void 0;
|
|
8
|
+
const events_1 = require("events");
|
|
9
|
+
const security_1 = require("./security");
|
|
10
|
+
/**
|
|
11
|
+
* Core workflow execution engine
|
|
12
|
+
*/
|
|
13
|
+
class WorkflowEngine extends events_1.EventEmitter {
|
|
14
|
+
constructor() {
|
|
15
|
+
super();
|
|
16
|
+
this.workflows = new Map();
|
|
17
|
+
this.executions = new Map();
|
|
18
|
+
this.nodeExecutors = new Map();
|
|
19
|
+
this.setupNodeExecutors();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Register a workflow for execution
|
|
23
|
+
*/
|
|
24
|
+
async registerWorkflow(workflow) {
|
|
25
|
+
// Security validation
|
|
26
|
+
security_1.SecurityManager.validateWorkflowComplexity(workflow);
|
|
27
|
+
// Validate workflow structure
|
|
28
|
+
this.validateWorkflowStructure(workflow);
|
|
29
|
+
this.workflows.set(workflow.metadata.id, workflow);
|
|
30
|
+
this.emit('workflowRegistered', workflow.metadata.id);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Execute a workflow with parameters
|
|
34
|
+
*/
|
|
35
|
+
async executeWorkflow(request) {
|
|
36
|
+
const executionId = this.generateExecutionId();
|
|
37
|
+
const startTime = new Date();
|
|
38
|
+
try {
|
|
39
|
+
// Get workflow
|
|
40
|
+
const workflow = this.workflows.get(request.workflowId);
|
|
41
|
+
if (!workflow) {
|
|
42
|
+
throw new Error(`Workflow not found: ${request.workflowId}`);
|
|
43
|
+
}
|
|
44
|
+
// Create execution context
|
|
45
|
+
const execution = new WorkflowExecution(executionId, workflow, request.parameters, request.userId, request.sessionId);
|
|
46
|
+
this.executions.set(executionId, execution);
|
|
47
|
+
this.emit('executionStarted', executionId);
|
|
48
|
+
// Build execution plan
|
|
49
|
+
const plan = this.buildExecutionPlan(workflow);
|
|
50
|
+
// Execute workflow
|
|
51
|
+
const result = await this.executeWorkflowPlan(execution, plan);
|
|
52
|
+
const endTime = new Date();
|
|
53
|
+
const metrics = {
|
|
54
|
+
startTime,
|
|
55
|
+
endTime,
|
|
56
|
+
durationMs: endTime.getTime() - startTime.getTime(),
|
|
57
|
+
nodesExecuted: execution.getCompletedNodes().size,
|
|
58
|
+
llmCalls: execution.getLLMCallCount(),
|
|
59
|
+
totalTokens: execution.getTotalTokens(),
|
|
60
|
+
costs: execution.getCosts()
|
|
61
|
+
};
|
|
62
|
+
this.emit('executionCompleted', executionId);
|
|
63
|
+
return {
|
|
64
|
+
success: true,
|
|
65
|
+
executionId,
|
|
66
|
+
result,
|
|
67
|
+
metrics,
|
|
68
|
+
logs: execution.getLogs()
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
this.emit('executionFailed', executionId, error);
|
|
73
|
+
const execution = this.executions.get(executionId);
|
|
74
|
+
return {
|
|
75
|
+
success: false,
|
|
76
|
+
executionId,
|
|
77
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
78
|
+
metrics: {
|
|
79
|
+
startTime,
|
|
80
|
+
endTime: new Date(),
|
|
81
|
+
durationMs: Date.now() - startTime.getTime(),
|
|
82
|
+
nodesExecuted: execution?.getCompletedNodes().size || 0,
|
|
83
|
+
llmCalls: execution?.getLLMCallCount() || 0,
|
|
84
|
+
totalTokens: execution?.getTotalTokens() || 0,
|
|
85
|
+
costs: execution?.getCosts() || { totalCost: 0, breakdown: {} }
|
|
86
|
+
},
|
|
87
|
+
logs: execution?.getLogs() || []
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
// Cleanup execution after delay
|
|
92
|
+
setTimeout(() => {
|
|
93
|
+
this.executions.delete(executionId);
|
|
94
|
+
}, 5 * 60 * 1000); // Keep for 5 minutes
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get execution status
|
|
99
|
+
*/
|
|
100
|
+
getExecutionStatus(executionId) {
|
|
101
|
+
const execution = this.executions.get(executionId);
|
|
102
|
+
if (!execution) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
executionId,
|
|
107
|
+
status: execution.getStatus(),
|
|
108
|
+
progress: execution.getProgress(),
|
|
109
|
+
currentNode: execution.getCurrentNode(),
|
|
110
|
+
logs: execution.getLogs()
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
setupNodeExecutors() {
|
|
114
|
+
this.nodeExecutors.set('prompt', new PromptNodeExecutor());
|
|
115
|
+
this.nodeExecutors.set('parameter', new ParameterNodeExecutor());
|
|
116
|
+
this.nodeExecutors.set('condition', new ConditionNodeExecutor());
|
|
117
|
+
this.nodeExecutors.set('loop', new LoopNodeExecutor());
|
|
118
|
+
this.nodeExecutors.set('output', new OutputNodeExecutor());
|
|
119
|
+
this.nodeExecutors.set('api', new APINodeExecutor());
|
|
120
|
+
this.nodeExecutors.set('transformer', new TransformerNodeExecutor());
|
|
121
|
+
}
|
|
122
|
+
validateWorkflowStructure(workflow) {
|
|
123
|
+
// Check for cycles
|
|
124
|
+
if (this.hasCycles(workflow)) {
|
|
125
|
+
throw new Error('Workflow contains cycles');
|
|
126
|
+
}
|
|
127
|
+
// Validate node references
|
|
128
|
+
const nodeIds = new Set(workflow.nodes.map(n => n.id));
|
|
129
|
+
for (const connection of workflow.connections) {
|
|
130
|
+
if (!nodeIds.has(connection.sourceNodeId)) {
|
|
131
|
+
throw new Error(`Invalid connection: source node ${connection.sourceNodeId} not found`);
|
|
132
|
+
}
|
|
133
|
+
if (!nodeIds.has(connection.targetNodeId)) {
|
|
134
|
+
throw new Error(`Invalid connection: target node ${connection.targetNodeId} not found`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
hasCycles(workflow) {
|
|
139
|
+
// Simple cycle detection using DFS
|
|
140
|
+
const graph = this.buildDependencyGraph(workflow);
|
|
141
|
+
const visited = new Set();
|
|
142
|
+
const recursionStack = new Set();
|
|
143
|
+
const hasCycleDFS = (nodeId) => {
|
|
144
|
+
visited.add(nodeId);
|
|
145
|
+
recursionStack.add(nodeId);
|
|
146
|
+
const dependencies = graph.get(nodeId) || [];
|
|
147
|
+
for (const dep of dependencies) {
|
|
148
|
+
if (!visited.has(dep)) {
|
|
149
|
+
if (hasCycleDFS(dep))
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
else if (recursionStack.has(dep)) {
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
recursionStack.delete(nodeId);
|
|
157
|
+
return false;
|
|
158
|
+
};
|
|
159
|
+
for (const nodeId of graph.keys()) {
|
|
160
|
+
if (!visited.has(nodeId)) {
|
|
161
|
+
if (hasCycleDFS(nodeId))
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
buildDependencyGraph(workflow) {
|
|
168
|
+
const graph = new Map();
|
|
169
|
+
// Initialize nodes
|
|
170
|
+
for (const node of workflow.nodes) {
|
|
171
|
+
graph.set(node.id, []);
|
|
172
|
+
}
|
|
173
|
+
// Add dependencies from connections
|
|
174
|
+
for (const connection of workflow.connections) {
|
|
175
|
+
const dependencies = graph.get(connection.targetNodeId) || [];
|
|
176
|
+
dependencies.push(connection.sourceNodeId);
|
|
177
|
+
graph.set(connection.targetNodeId, dependencies);
|
|
178
|
+
}
|
|
179
|
+
return graph;
|
|
180
|
+
}
|
|
181
|
+
buildExecutionPlan(workflow) {
|
|
182
|
+
const dependencyGraph = this.buildDependencyGraph(workflow);
|
|
183
|
+
const nodes = [];
|
|
184
|
+
const parallelGroups = [];
|
|
185
|
+
// Convert workflow nodes to execution nodes
|
|
186
|
+
for (const node of workflow.nodes) {
|
|
187
|
+
nodes.push({
|
|
188
|
+
id: node.id,
|
|
189
|
+
type: node.type,
|
|
190
|
+
config: node.data.config,
|
|
191
|
+
dependencies: dependencyGraph.get(node.id) || [],
|
|
192
|
+
canRunInParallel: this.canNodeRunInParallel(node)
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
// Build parallel execution groups
|
|
196
|
+
const levels = this.topologicalSort(dependencyGraph);
|
|
197
|
+
for (const level of levels) {
|
|
198
|
+
parallelGroups.push(level);
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
nodes,
|
|
202
|
+
dependencies: dependencyGraph,
|
|
203
|
+
parallelGroups
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
canNodeRunInParallel(node) {
|
|
207
|
+
// Nodes that can safely run in parallel with others at same level
|
|
208
|
+
const parallelSafeTypes = ['prompt', 'transformer', 'api'];
|
|
209
|
+
return parallelSafeTypes.includes(node.type);
|
|
210
|
+
}
|
|
211
|
+
topologicalSort(graph) {
|
|
212
|
+
const levels = [];
|
|
213
|
+
const inDegree = new Map();
|
|
214
|
+
const queue = [];
|
|
215
|
+
// Calculate in-degrees
|
|
216
|
+
for (const nodeId of graph.keys()) {
|
|
217
|
+
inDegree.set(nodeId, 0);
|
|
218
|
+
}
|
|
219
|
+
for (const dependencies of graph.values()) {
|
|
220
|
+
for (const dep of dependencies) {
|
|
221
|
+
inDegree.set(dep, (inDegree.get(dep) || 0) + 1);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
// Find nodes with no dependencies
|
|
225
|
+
for (const [nodeId, degree] of inDegree.entries()) {
|
|
226
|
+
if (degree === 0) {
|
|
227
|
+
queue.push(nodeId);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
while (queue.length > 0) {
|
|
231
|
+
const currentLevel = [...queue];
|
|
232
|
+
levels.push(currentLevel);
|
|
233
|
+
queue.length = 0;
|
|
234
|
+
for (const nodeId of currentLevel) {
|
|
235
|
+
const dependencies = graph.get(nodeId) || [];
|
|
236
|
+
for (const dep of dependencies) {
|
|
237
|
+
const newDegree = (inDegree.get(dep) || 0) - 1;
|
|
238
|
+
inDegree.set(dep, newDegree);
|
|
239
|
+
if (newDegree === 0) {
|
|
240
|
+
queue.push(dep);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return levels;
|
|
246
|
+
}
|
|
247
|
+
async executeWorkflowPlan(execution, plan) {
|
|
248
|
+
let finalResult = null;
|
|
249
|
+
// Execute nodes level by level
|
|
250
|
+
for (const level of plan.parallelGroups) {
|
|
251
|
+
const levelPromises = [];
|
|
252
|
+
for (const nodeId of level) {
|
|
253
|
+
const node = plan.nodes.find(n => n.id === nodeId);
|
|
254
|
+
if (!node)
|
|
255
|
+
continue;
|
|
256
|
+
const executor = this.nodeExecutors.get(node.type);
|
|
257
|
+
if (!executor) {
|
|
258
|
+
throw new Error(`No executor found for node type: ${node.type}`);
|
|
259
|
+
}
|
|
260
|
+
const context = {
|
|
261
|
+
nodeId: node.id,
|
|
262
|
+
inputs: execution.getNodeInputs(nodeId),
|
|
263
|
+
outputs: {},
|
|
264
|
+
variables: execution.getVariables(),
|
|
265
|
+
metadata: {
|
|
266
|
+
executionId: execution.getId(),
|
|
267
|
+
userId: execution.getUserId(),
|
|
268
|
+
startTime: new Date()
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
levelPromises.push(executor.execute(node, context));
|
|
272
|
+
}
|
|
273
|
+
// Wait for all nodes in level to complete
|
|
274
|
+
const results = await Promise.all(levelPromises);
|
|
275
|
+
// Store results
|
|
276
|
+
for (let i = 0; i < level.length; i++) {
|
|
277
|
+
const nodeId = level[i];
|
|
278
|
+
execution.setNodeOutput(nodeId, results[i]);
|
|
279
|
+
// Check if this is a final output node
|
|
280
|
+
const node = plan.nodes.find(n => n.id === nodeId);
|
|
281
|
+
if (node && node.type === 'output') {
|
|
282
|
+
finalResult = results[i];
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
return finalResult || 'Workflow completed';
|
|
287
|
+
}
|
|
288
|
+
generateExecutionId() {
|
|
289
|
+
return `exec_${Date.now()}_${Math.random().toString(36).substring(2)}`;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
exports.WorkflowEngine = WorkflowEngine;
|
|
293
|
+
/**
|
|
294
|
+
* Individual workflow execution instance
|
|
295
|
+
*/
|
|
296
|
+
class WorkflowExecution {
|
|
297
|
+
constructor(executionId, workflow, parameters, userId, sessionId) {
|
|
298
|
+
this.executionId = executionId;
|
|
299
|
+
this.workflow = workflow;
|
|
300
|
+
this.parameters = parameters;
|
|
301
|
+
this.userId = userId;
|
|
302
|
+
this.sessionId = sessionId;
|
|
303
|
+
this.status = 'pending';
|
|
304
|
+
this.nodeOutputs = new Map();
|
|
305
|
+
this.variables = new Map();
|
|
306
|
+
this.logs = [];
|
|
307
|
+
this.completedNodes = new Set();
|
|
308
|
+
this.llmCallCount = 0;
|
|
309
|
+
this.totalTokens = 0;
|
|
310
|
+
this.costs = { totalCost: 0, breakdown: {} };
|
|
311
|
+
// Initialize variables with parameters
|
|
312
|
+
for (const [key, value] of Object.entries(parameters)) {
|
|
313
|
+
this.variables.set(key, security_1.SecurityManager.sanitizeParameters({ [key]: value })[key]);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
getId() { return this.executionId; }
|
|
317
|
+
getUserId() { return this.userId; }
|
|
318
|
+
getStatus() { return this.status; }
|
|
319
|
+
getCurrentNode() { return this.currentNode; }
|
|
320
|
+
getCompletedNodes() { return this.completedNodes; }
|
|
321
|
+
getLogs() { return this.logs; }
|
|
322
|
+
getLLMCallCount() { return this.llmCallCount; }
|
|
323
|
+
getTotalTokens() { return this.totalTokens; }
|
|
324
|
+
getCosts() { return this.costs; }
|
|
325
|
+
getVariables() { return this.variables; }
|
|
326
|
+
setNodeOutput(nodeId, output) {
|
|
327
|
+
this.nodeOutputs.set(nodeId, output);
|
|
328
|
+
this.completedNodes.add(nodeId);
|
|
329
|
+
}
|
|
330
|
+
getNodeInputs(nodeId) {
|
|
331
|
+
const inputs = {};
|
|
332
|
+
// Find connections to this node
|
|
333
|
+
const incomingConnections = this.workflow.connections.filter(c => c.targetNodeId === nodeId);
|
|
334
|
+
for (const connection of incomingConnections) {
|
|
335
|
+
const sourceOutput = this.nodeOutputs.get(connection.sourceNodeId);
|
|
336
|
+
if (sourceOutput !== undefined) {
|
|
337
|
+
inputs[connection.targetPortId] = sourceOutput;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
return inputs;
|
|
341
|
+
}
|
|
342
|
+
getProgress() {
|
|
343
|
+
const totalNodes = this.workflow.nodes.length;
|
|
344
|
+
const completed = this.completedNodes.size;
|
|
345
|
+
return totalNodes > 0 ? (completed / totalNodes) * 100 : 0;
|
|
346
|
+
}
|
|
347
|
+
log(level, message, nodeId, data) {
|
|
348
|
+
this.logs.push({
|
|
349
|
+
timestamp: new Date(),
|
|
350
|
+
level,
|
|
351
|
+
nodeId,
|
|
352
|
+
message,
|
|
353
|
+
data
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
exports.WorkflowExecution = WorkflowExecution;
|
|
358
|
+
/**
|
|
359
|
+
* Base class for node executors
|
|
360
|
+
*/
|
|
361
|
+
class NodeExecutor {
|
|
362
|
+
}
|
|
363
|
+
exports.NodeExecutor = NodeExecutor;
|
|
364
|
+
/**
|
|
365
|
+
* Specific node executors
|
|
366
|
+
*/
|
|
367
|
+
class PromptNodeExecutor extends NodeExecutor {
|
|
368
|
+
async execute(node, context) {
|
|
369
|
+
// This would integrate with LLM providers
|
|
370
|
+
// For now, return a placeholder
|
|
371
|
+
return `Executed prompt: ${node.config.template || 'Default prompt'}`;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
exports.PromptNodeExecutor = PromptNodeExecutor;
|
|
375
|
+
class ParameterNodeExecutor extends NodeExecutor {
|
|
376
|
+
async execute(node, context) {
|
|
377
|
+
const paramName = node.config.parameterName;
|
|
378
|
+
return context.variables.get(paramName) || node.config.defaultValue;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
exports.ParameterNodeExecutor = ParameterNodeExecutor;
|
|
382
|
+
class ConditionNodeExecutor extends NodeExecutor {
|
|
383
|
+
async execute(node, context) {
|
|
384
|
+
// Simple condition evaluation - would be more sophisticated in production
|
|
385
|
+
return true;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
exports.ConditionNodeExecutor = ConditionNodeExecutor;
|
|
389
|
+
class LoopNodeExecutor extends NodeExecutor {
|
|
390
|
+
async execute(node, context) {
|
|
391
|
+
// Loop execution logic
|
|
392
|
+
return 'Loop completed';
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
exports.LoopNodeExecutor = LoopNodeExecutor;
|
|
396
|
+
class OutputNodeExecutor extends NodeExecutor {
|
|
397
|
+
async execute(node, context) {
|
|
398
|
+
const template = node.config.template || '{result}';
|
|
399
|
+
let output = template;
|
|
400
|
+
// Simple template replacement
|
|
401
|
+
for (const [key, value] of Object.entries(context.inputs)) {
|
|
402
|
+
output = output.replace(`{${key}}`, String(value));
|
|
403
|
+
}
|
|
404
|
+
return output;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
exports.OutputNodeExecutor = OutputNodeExecutor;
|
|
408
|
+
class APINodeExecutor extends NodeExecutor {
|
|
409
|
+
async execute(node, context) {
|
|
410
|
+
// API call logic - would make actual HTTP requests
|
|
411
|
+
return `API call result for ${node.config.endpoint}`;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
exports.APINodeExecutor = APINodeExecutor;
|
|
415
|
+
class TransformerNodeExecutor extends NodeExecutor {
|
|
416
|
+
async execute(node, context) {
|
|
417
|
+
// Data transformation logic
|
|
418
|
+
return `Transformed data using ${node.config.transformationType}`;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
exports.TransformerNodeExecutor = TransformerNodeExecutor;
|
|
422
|
+
//# sourceMappingURL=workflow-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-engine.js","sourceRoot":"","sources":["../../src/lib/workflow-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompd Workflow execution support for MCP integration
|
|
3
|
+
* Handles .prmdflow files from prompd-IDE
|
|
4
|
+
*/
|
|
5
|
+
export interface PrompdFlowDocument {
|
|
6
|
+
version: string;
|
|
7
|
+
metadata: FlowMetadata;
|
|
8
|
+
nodes: FlowNode[];
|
|
9
|
+
connections: FlowConnection[];
|
|
10
|
+
variables: FlowVariable[];
|
|
11
|
+
executionConfig: ExecutionConfiguration;
|
|
12
|
+
}
|
|
13
|
+
export interface FlowMetadata {
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
version: string;
|
|
18
|
+
parameters?: FlowParameter[];
|
|
19
|
+
}
|
|
20
|
+
export interface FlowParameter {
|
|
21
|
+
name: string;
|
|
22
|
+
type: string;
|
|
23
|
+
required?: boolean;
|
|
24
|
+
description?: string;
|
|
25
|
+
default?: any;
|
|
26
|
+
}
|
|
27
|
+
export interface FlowNode {
|
|
28
|
+
id: string;
|
|
29
|
+
type: string;
|
|
30
|
+
data: NodeData;
|
|
31
|
+
inputPorts: Port[];
|
|
32
|
+
outputPorts: Port[];
|
|
33
|
+
}
|
|
34
|
+
export interface NodeData {
|
|
35
|
+
label: string;
|
|
36
|
+
description?: string;
|
|
37
|
+
enabled: boolean;
|
|
38
|
+
config: any;
|
|
39
|
+
}
|
|
40
|
+
export interface Port {
|
|
41
|
+
id: string;
|
|
42
|
+
name: string;
|
|
43
|
+
dataType: string;
|
|
44
|
+
required: boolean;
|
|
45
|
+
description?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface FlowConnection {
|
|
48
|
+
id: string;
|
|
49
|
+
sourceNodeId: string;
|
|
50
|
+
sourcePortId: string;
|
|
51
|
+
targetNodeId: string;
|
|
52
|
+
targetPortId: string;
|
|
53
|
+
}
|
|
54
|
+
export interface FlowVariable {
|
|
55
|
+
name: string;
|
|
56
|
+
type: string;
|
|
57
|
+
value?: any;
|
|
58
|
+
scope: 'global' | 'local';
|
|
59
|
+
description?: string;
|
|
60
|
+
}
|
|
61
|
+
export interface ExecutionConfiguration {
|
|
62
|
+
parallelism: {
|
|
63
|
+
enabled: boolean;
|
|
64
|
+
maxConcurrency: number;
|
|
65
|
+
};
|
|
66
|
+
errorHandling: {
|
|
67
|
+
continueOnError: boolean;
|
|
68
|
+
retryPolicy: {
|
|
69
|
+
enabled: boolean;
|
|
70
|
+
maxRetries: number;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export interface WorkflowExecutionResult {
|
|
75
|
+
success: boolean;
|
|
76
|
+
result?: any;
|
|
77
|
+
error?: string;
|
|
78
|
+
executionTime: number;
|
|
79
|
+
nodesExecuted: number;
|
|
80
|
+
errors: Array<{
|
|
81
|
+
nodeId: string;
|
|
82
|
+
message: string;
|
|
83
|
+
}>;
|
|
84
|
+
}
|
|
85
|
+
export declare class WorkflowExecutor {
|
|
86
|
+
private workflows;
|
|
87
|
+
loadWorkflow(filePath: string): Promise<PrompdFlowDocument>;
|
|
88
|
+
private validateWorkflow;
|
|
89
|
+
getWorkflowParameters(workflow: PrompdFlowDocument): FlowParameter[];
|
|
90
|
+
executeWorkflow(workflow: PrompdFlowDocument, parameters: Record<string, any>): Promise<WorkflowExecutionResult>;
|
|
91
|
+
private executeNodes;
|
|
92
|
+
private executeNode;
|
|
93
|
+
registerWorkflow(name: string, workflow: PrompdFlowDocument): void;
|
|
94
|
+
getWorkflow(name: string): PrompdFlowDocument | undefined;
|
|
95
|
+
listWorkflows(): string[];
|
|
96
|
+
discoverWorkflows(directory: string): Promise<Array<{
|
|
97
|
+
name: string;
|
|
98
|
+
path: string;
|
|
99
|
+
workflow: PrompdFlowDocument;
|
|
100
|
+
}>>;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/lib/workflow.ts"],"names":[],"mappings":"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"}
|