agent-orcha 0.0.1
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/LICENSE +21 -0
- package/README.md +917 -0
- package/bin/cli.js +2 -0
- package/dist/lib/agents/agent-executor.d.ts +13 -0
- package/dist/lib/agents/agent-executor.d.ts.map +1 -0
- package/dist/lib/agents/agent-executor.js +158 -0
- package/dist/lib/agents/agent-executor.js.map +1 -0
- package/dist/lib/agents/agent-loader.d.ts +13 -0
- package/dist/lib/agents/agent-loader.d.ts.map +1 -0
- package/dist/lib/agents/agent-loader.js +39 -0
- package/dist/lib/agents/agent-loader.js.map +1 -0
- package/dist/lib/agents/index.d.ts +5 -0
- package/dist/lib/agents/index.d.ts.map +1 -0
- package/dist/lib/agents/index.js +4 -0
- package/dist/lib/agents/index.js.map +1 -0
- package/dist/lib/agents/types.d.ts +140 -0
- package/dist/lib/agents/types.d.ts.map +1 -0
- package/dist/lib/agents/types.js +28 -0
- package/dist/lib/agents/types.js.map +1 -0
- package/dist/lib/functions/function-loader.d.ts +30 -0
- package/dist/lib/functions/function-loader.d.ts.map +1 -0
- package/dist/lib/functions/function-loader.js +107 -0
- package/dist/lib/functions/function-loader.js.map +1 -0
- package/dist/lib/functions/index.d.ts +3 -0
- package/dist/lib/functions/index.d.ts.map +1 -0
- package/dist/lib/functions/index.js +2 -0
- package/dist/lib/functions/index.js.map +1 -0
- package/dist/lib/functions/simple-function-wrapper.d.ts +33 -0
- package/dist/lib/functions/simple-function-wrapper.d.ts.map +1 -0
- package/dist/lib/functions/simple-function-wrapper.js +66 -0
- package/dist/lib/functions/simple-function-wrapper.js.map +1 -0
- package/dist/lib/index.d.ts +16 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +17 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/llm/index.d.ts +6 -0
- package/dist/lib/llm/index.d.ts.map +1 -0
- package/dist/lib/llm/index.js +4 -0
- package/dist/lib/llm/index.js.map +1 -0
- package/dist/lib/llm/llm-config.d.ts +138 -0
- package/dist/lib/llm/llm-config.d.ts.map +1 -0
- package/dist/lib/llm/llm-config.js +75 -0
- package/dist/lib/llm/llm-config.js.map +1 -0
- package/dist/lib/llm/llm-factory.d.ts +30 -0
- package/dist/lib/llm/llm-factory.d.ts.map +1 -0
- package/dist/lib/llm/llm-factory.js +103 -0
- package/dist/lib/llm/llm-factory.js.map +1 -0
- package/dist/lib/llm/provider-detector.d.ts +12 -0
- package/dist/lib/llm/provider-detector.d.ts.map +1 -0
- package/dist/lib/llm/provider-detector.js +46 -0
- package/dist/lib/llm/provider-detector.js.map +1 -0
- package/dist/lib/llm/types.d.ts +19 -0
- package/dist/lib/llm/types.d.ts.map +1 -0
- package/dist/lib/llm/types.js +18 -0
- package/dist/lib/llm/types.js.map +1 -0
- package/dist/lib/logger.d.ts +43 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +113 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/mcp/index.d.ts +4 -0
- package/dist/lib/mcp/index.d.ts.map +1 -0
- package/dist/lib/mcp/index.js +3 -0
- package/dist/lib/mcp/index.js.map +1 -0
- package/dist/lib/mcp/mcp-client.d.ts +17 -0
- package/dist/lib/mcp/mcp-client.d.ts.map +1 -0
- package/dist/lib/mcp/mcp-client.js +166 -0
- package/dist/lib/mcp/mcp-client.js.map +1 -0
- package/dist/lib/mcp/types.d.ts +146 -0
- package/dist/lib/mcp/types.d.ts.map +1 -0
- package/dist/lib/mcp/types.js +24 -0
- package/dist/lib/mcp/types.js.map +1 -0
- package/dist/lib/orchestrator.d.ts +64 -0
- package/dist/lib/orchestrator.d.ts.map +1 -0
- package/dist/lib/orchestrator.js +201 -0
- package/dist/lib/orchestrator.js.map +1 -0
- package/dist/lib/tools/built-in/index.d.ts +2 -0
- package/dist/lib/tools/built-in/index.d.ts.map +1 -0
- package/dist/lib/tools/built-in/index.js +2 -0
- package/dist/lib/tools/built-in/index.js.map +1 -0
- package/dist/lib/tools/built-in/vector-search.tool.d.ts +4 -0
- package/dist/lib/tools/built-in/vector-search.tool.d.ts.map +1 -0
- package/dist/lib/tools/built-in/vector-search.tool.js +26 -0
- package/dist/lib/tools/built-in/vector-search.tool.js.map +1 -0
- package/dist/lib/tools/index.d.ts +3 -0
- package/dist/lib/tools/index.d.ts.map +1 -0
- package/dist/lib/tools/index.js +3 -0
- package/dist/lib/tools/index.js.map +1 -0
- package/dist/lib/tools/tool-registry.d.ts +20 -0
- package/dist/lib/tools/tool-registry.d.ts.map +1 -0
- package/dist/lib/tools/tool-registry.js +76 -0
- package/dist/lib/tools/tool-registry.js.map +1 -0
- package/dist/lib/vectors/index.d.ts +5 -0
- package/dist/lib/vectors/index.d.ts.map +1 -0
- package/dist/lib/vectors/index.js +4 -0
- package/dist/lib/vectors/index.js.map +1 -0
- package/dist/lib/vectors/types.d.ts +212 -0
- package/dist/lib/vectors/types.d.ts.map +1 -0
- package/dist/lib/vectors/types.js +39 -0
- package/dist/lib/vectors/types.js.map +1 -0
- package/dist/lib/vectors/vector-store-factory.d.ts +14 -0
- package/dist/lib/vectors/vector-store-factory.d.ts.map +1 -0
- package/dist/lib/vectors/vector-store-factory.js +350 -0
- package/dist/lib/vectors/vector-store-factory.js.map +1 -0
- package/dist/lib/vectors/vector-store-manager.d.ts +18 -0
- package/dist/lib/vectors/vector-store-manager.d.ts.map +1 -0
- package/dist/lib/vectors/vector-store-manager.js +79 -0
- package/dist/lib/vectors/vector-store-manager.js.map +1 -0
- package/dist/lib/workflows/index.d.ts +5 -0
- package/dist/lib/workflows/index.d.ts.map +1 -0
- package/dist/lib/workflows/index.js +4 -0
- package/dist/lib/workflows/index.js.map +1 -0
- package/dist/lib/workflows/types.d.ts +630 -0
- package/dist/lib/workflows/types.d.ts.map +1 -0
- package/dist/lib/workflows/types.js +51 -0
- package/dist/lib/workflows/types.js.map +1 -0
- package/dist/lib/workflows/workflow-executor.d.ts +22 -0
- package/dist/lib/workflows/workflow-executor.d.ts.map +1 -0
- package/dist/lib/workflows/workflow-executor.js +276 -0
- package/dist/lib/workflows/workflow-executor.js.map +1 -0
- package/dist/lib/workflows/workflow-loader.d.ts +13 -0
- package/dist/lib/workflows/workflow-loader.d.ts.map +1 -0
- package/dist/lib/workflows/workflow-loader.js +39 -0
- package/dist/lib/workflows/workflow-loader.js.map +1 -0
- package/dist/public/index.html +762 -0
- package/dist/src/cli/commands/init.d.ts +2 -0
- package/dist/src/cli/commands/init.d.ts.map +1 -0
- package/dist/src/cli/commands/init.js +108 -0
- package/dist/src/cli/commands/init.js.map +1 -0
- package/dist/src/cli/commands/start.d.ts +3 -0
- package/dist/src/cli/commands/start.d.ts.map +1 -0
- package/dist/src/cli/commands/start.js +114 -0
- package/dist/src/cli/commands/start.js.map +1 -0
- package/dist/src/cli/index.d.ts +3 -0
- package/dist/src/cli/index.d.ts.map +1 -0
- package/dist/src/cli/index.js +59 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +62 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/routes/agents.route.d.ts +3 -0
- package/dist/src/routes/agents.route.d.ts.map +1 -0
- package/dist/src/routes/agents.route.js +58 -0
- package/dist/src/routes/agents.route.js.map +1 -0
- package/dist/src/routes/llm.route.d.ts +3 -0
- package/dist/src/routes/llm.route.d.ts.map +1 -0
- package/dist/src/routes/llm.route.js +97 -0
- package/dist/src/routes/llm.route.js.map +1 -0
- package/dist/src/routes/vectors.route.d.ts +3 -0
- package/dist/src/routes/vectors.route.d.ts.map +1 -0
- package/dist/src/routes/vectors.route.js +74 -0
- package/dist/src/routes/vectors.route.js.map +1 -0
- package/dist/src/routes/workflows.route.d.ts +3 -0
- package/dist/src/routes/workflows.route.d.ts.map +1 -0
- package/dist/src/routes/workflows.route.js +58 -0
- package/dist/src/routes/workflows.route.js.map +1 -0
- package/dist/src/server.d.ts +9 -0
- package/dist/src/server.d.ts.map +1 -0
- package/dist/src/server.js +34 -0
- package/dist/src/server.js.map +1 -0
- package/dist/templates/.env.example +6 -0
- package/dist/templates/README.md +234 -0
- package/dist/templates/agents/example.agent.yaml +32 -0
- package/dist/templates/agents/knowledge.agent.yaml +36 -0
- package/dist/templates/agents/math.agent.yaml +38 -0
- package/dist/templates/agents/time.agent.yaml +42 -0
- package/dist/templates/functions/README.md +195 -0
- package/dist/templates/functions/fibonacci.function.js +55 -0
- package/dist/templates/llm.json +44 -0
- package/dist/templates/mcp.json +18 -0
- package/dist/templates/vectors/example-chroma.vector.yaml +43 -0
- package/dist/templates/vectors/example.vector.yaml +28 -0
- package/dist/templates/vectors/sample-data/example-document.txt +15 -0
- package/dist/templates/workflows/example.workflow.yaml +79 -0
- package/package.json +77 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AgentExecutor } from '../agents/agent-executor.js';
|
|
2
|
+
import type { AgentLoader } from '../agents/agent-loader.js';
|
|
3
|
+
import type { WorkflowDefinition, WorkflowResult, WorkflowStatus } from './types.js';
|
|
4
|
+
export declare class WorkflowExecutor {
|
|
5
|
+
private agentLoader;
|
|
6
|
+
private agentExecutor;
|
|
7
|
+
constructor(agentLoader: AgentLoader, agentExecutor: AgentExecutor);
|
|
8
|
+
execute(definition: WorkflowDefinition, input: Record<string, unknown>, onStatus?: (status: WorkflowStatus) => void): Promise<WorkflowResult>;
|
|
9
|
+
private isParallelSteps;
|
|
10
|
+
private applyDefaults;
|
|
11
|
+
private executeStep;
|
|
12
|
+
private executeParallel;
|
|
13
|
+
private resolveInput;
|
|
14
|
+
private resolveValue;
|
|
15
|
+
private interpolateString;
|
|
16
|
+
private resolveTemplatePath;
|
|
17
|
+
private resolvePath;
|
|
18
|
+
private getNestedValue;
|
|
19
|
+
private evaluateCondition;
|
|
20
|
+
private resolveOutput;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=workflow-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-executor.d.ts","sourceRoot":"","sources":["../../../lib/workflows/workflow-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EACV,kBAAkB,EAGlB,cAAc,EAGd,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAgB;gBAEzB,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa;IAK5D,OAAO,CACX,UAAU,EAAE,kBAAkB,EAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,GAC1C,OAAO,CAAC,cAAc,CAAC;IAsH1B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,aAAa;YAeP,WAAW;YA6DX,eAAe;IAc7B,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,aAAa;CAYtB"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
export class WorkflowExecutor {
|
|
2
|
+
agentLoader;
|
|
3
|
+
agentExecutor;
|
|
4
|
+
constructor(agentLoader, agentExecutor) {
|
|
5
|
+
this.agentLoader = agentLoader;
|
|
6
|
+
this.agentExecutor = agentExecutor;
|
|
7
|
+
}
|
|
8
|
+
async execute(definition, input, onStatus) {
|
|
9
|
+
const startTime = Date.now();
|
|
10
|
+
const context = {
|
|
11
|
+
input: this.applyDefaults(definition, input),
|
|
12
|
+
steps: {},
|
|
13
|
+
vectors: {},
|
|
14
|
+
};
|
|
15
|
+
const totalSteps = definition.steps.length;
|
|
16
|
+
let stepsExecuted = 0;
|
|
17
|
+
let success = true;
|
|
18
|
+
onStatus?.({
|
|
19
|
+
type: 'workflow_start',
|
|
20
|
+
message: `Starting workflow: ${definition.name}`,
|
|
21
|
+
progress: { current: 0, total: totalSteps },
|
|
22
|
+
elapsed: 0,
|
|
23
|
+
});
|
|
24
|
+
for (const stepDef of definition.steps) {
|
|
25
|
+
try {
|
|
26
|
+
if (this.isParallelSteps(stepDef)) {
|
|
27
|
+
onStatus?.({
|
|
28
|
+
type: 'step_start',
|
|
29
|
+
stepId: 'parallel',
|
|
30
|
+
message: `Executing ${stepDef.parallel.length} steps in parallel`,
|
|
31
|
+
progress: { current: stepsExecuted, total: totalSteps },
|
|
32
|
+
elapsed: Date.now() - startTime,
|
|
33
|
+
});
|
|
34
|
+
const results = await this.executeParallel(stepDef.parallel, context);
|
|
35
|
+
for (const [id, result] of Object.entries(results)) {
|
|
36
|
+
context.steps[id] = result;
|
|
37
|
+
stepsExecuted++;
|
|
38
|
+
onStatus?.({
|
|
39
|
+
type: result.metadata.success ? 'step_complete' : 'step_error',
|
|
40
|
+
stepId: id,
|
|
41
|
+
agent: result.metadata.agent,
|
|
42
|
+
message: result.metadata.success
|
|
43
|
+
? `Step "${id}" completed successfully`
|
|
44
|
+
: `Step "${id}" failed: ${result.metadata.error || 'Unknown error'}`,
|
|
45
|
+
progress: { current: stepsExecuted, total: totalSteps },
|
|
46
|
+
elapsed: Date.now() - startTime,
|
|
47
|
+
error: result.metadata.error,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
onStatus?.({
|
|
53
|
+
type: 'step_start',
|
|
54
|
+
stepId: stepDef.id,
|
|
55
|
+
agent: stepDef.agent,
|
|
56
|
+
message: `Starting step "${stepDef.id}" with agent "${stepDef.agent}"`,
|
|
57
|
+
progress: { current: stepsExecuted, total: totalSteps },
|
|
58
|
+
elapsed: Date.now() - startTime,
|
|
59
|
+
});
|
|
60
|
+
const result = await this.executeStep(stepDef, context);
|
|
61
|
+
context.steps[stepDef.id] = result;
|
|
62
|
+
stepsExecuted++;
|
|
63
|
+
onStatus?.({
|
|
64
|
+
type: result.metadata.success ? 'step_complete' : 'step_error',
|
|
65
|
+
stepId: stepDef.id,
|
|
66
|
+
agent: result.metadata.agent,
|
|
67
|
+
message: result.metadata.success
|
|
68
|
+
? `Step "${stepDef.id}" completed in ${result.metadata.duration}ms`
|
|
69
|
+
: `Step "${stepDef.id}" failed: ${result.metadata.error || 'Unknown error'}`,
|
|
70
|
+
progress: { current: stepsExecuted, total: totalSteps },
|
|
71
|
+
elapsed: Date.now() - startTime,
|
|
72
|
+
error: result.metadata.error,
|
|
73
|
+
});
|
|
74
|
+
if (!result.metadata.success && definition.config?.onError === 'stop') {
|
|
75
|
+
success = false;
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
success = false;
|
|
82
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
83
|
+
onStatus?.({
|
|
84
|
+
type: 'step_error',
|
|
85
|
+
message: `Step execution error: ${errorMessage}`,
|
|
86
|
+
progress: { current: stepsExecuted, total: totalSteps },
|
|
87
|
+
elapsed: Date.now() - startTime,
|
|
88
|
+
error: errorMessage,
|
|
89
|
+
});
|
|
90
|
+
if (definition.config?.onError === 'stop') {
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const output = this.resolveOutput(definition, context);
|
|
96
|
+
const duration = Date.now() - startTime;
|
|
97
|
+
onStatus?.({
|
|
98
|
+
type: success ? 'workflow_complete' : 'workflow_error',
|
|
99
|
+
message: success
|
|
100
|
+
? `Workflow completed successfully in ${duration}ms`
|
|
101
|
+
: `Workflow completed with errors in ${duration}ms`,
|
|
102
|
+
progress: { current: stepsExecuted, total: totalSteps },
|
|
103
|
+
elapsed: duration,
|
|
104
|
+
});
|
|
105
|
+
return {
|
|
106
|
+
output,
|
|
107
|
+
metadata: {
|
|
108
|
+
duration,
|
|
109
|
+
stepsExecuted,
|
|
110
|
+
success,
|
|
111
|
+
},
|
|
112
|
+
stepResults: context.steps,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
isParallelSteps(step) {
|
|
116
|
+
return 'parallel' in step;
|
|
117
|
+
}
|
|
118
|
+
applyDefaults(definition, input) {
|
|
119
|
+
const result = { ...input };
|
|
120
|
+
for (const [key, field] of Object.entries(definition.input.schema)) {
|
|
121
|
+
if (result[key] === undefined && field.default !== undefined) {
|
|
122
|
+
result[key] = field.default;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return result;
|
|
126
|
+
}
|
|
127
|
+
async executeStep(step, context) {
|
|
128
|
+
const startTime = Date.now();
|
|
129
|
+
if (step.condition) {
|
|
130
|
+
const conditionMet = this.evaluateCondition(step.condition, context);
|
|
131
|
+
if (!conditionMet) {
|
|
132
|
+
return {
|
|
133
|
+
output: null,
|
|
134
|
+
metadata: {
|
|
135
|
+
duration: 0,
|
|
136
|
+
agent: step.agent,
|
|
137
|
+
success: true,
|
|
138
|
+
error: 'Condition not met, step skipped',
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
const agentDef = this.agentLoader.get(step.agent);
|
|
144
|
+
if (!agentDef) {
|
|
145
|
+
return {
|
|
146
|
+
output: null,
|
|
147
|
+
metadata: {
|
|
148
|
+
duration: Date.now() - startTime,
|
|
149
|
+
agent: step.agent,
|
|
150
|
+
success: false,
|
|
151
|
+
error: `Agent not found: ${step.agent}`,
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
const resolvedInput = this.resolveInput(step.input, context);
|
|
156
|
+
try {
|
|
157
|
+
const agent = await this.agentExecutor.createInstance(agentDef);
|
|
158
|
+
const result = await agent.invoke(resolvedInput);
|
|
159
|
+
return {
|
|
160
|
+
output: result.output,
|
|
161
|
+
metadata: {
|
|
162
|
+
duration: Date.now() - startTime,
|
|
163
|
+
agent: step.agent,
|
|
164
|
+
success: true,
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
return {
|
|
170
|
+
output: null,
|
|
171
|
+
metadata: {
|
|
172
|
+
duration: Date.now() - startTime,
|
|
173
|
+
agent: step.agent,
|
|
174
|
+
success: false,
|
|
175
|
+
error: error instanceof Error ? error.message : String(error),
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
async executeParallel(steps, context) {
|
|
181
|
+
const results = await Promise.all(steps.map(async (step) => {
|
|
182
|
+
const result = await this.executeStep(step, context);
|
|
183
|
+
return { id: step.id, result };
|
|
184
|
+
}));
|
|
185
|
+
return Object.fromEntries(results.map(({ id, result }) => [id, result]));
|
|
186
|
+
}
|
|
187
|
+
resolveInput(inputMapping, context) {
|
|
188
|
+
const resolved = {};
|
|
189
|
+
for (const [key, value] of Object.entries(inputMapping)) {
|
|
190
|
+
resolved[key] = this.resolveValue(value, context);
|
|
191
|
+
}
|
|
192
|
+
return resolved;
|
|
193
|
+
}
|
|
194
|
+
resolveValue(value, context) {
|
|
195
|
+
if (typeof value === 'string') {
|
|
196
|
+
return this.interpolateString(value, context);
|
|
197
|
+
}
|
|
198
|
+
if (typeof value === 'object' && value !== null && 'from' in value) {
|
|
199
|
+
const mapping = value;
|
|
200
|
+
return this.resolvePath(mapping.from, mapping.path, context);
|
|
201
|
+
}
|
|
202
|
+
return value;
|
|
203
|
+
}
|
|
204
|
+
interpolateString(template, context) {
|
|
205
|
+
return template.replace(/\{\{([^}]+)\}\}/g, (_, path) => {
|
|
206
|
+
const trimmedPath = path.trim();
|
|
207
|
+
const value = this.resolveTemplatePath(trimmedPath, context);
|
|
208
|
+
return value !== undefined ? String(value) : '';
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
resolveTemplatePath(path, context) {
|
|
212
|
+
const parts = path.split('.');
|
|
213
|
+
if (parts[0] === 'input') {
|
|
214
|
+
return this.getNestedValue(context.input, parts.slice(1));
|
|
215
|
+
}
|
|
216
|
+
if (parts[0] === 'steps' && parts[1]) {
|
|
217
|
+
const stepId = parts[1];
|
|
218
|
+
const stepResult = context.steps[stepId];
|
|
219
|
+
if (!stepResult)
|
|
220
|
+
return undefined;
|
|
221
|
+
if (parts[2] === 'output') {
|
|
222
|
+
return this.getNestedValue(stepResult.output, parts.slice(3));
|
|
223
|
+
}
|
|
224
|
+
if (parts[2] === 'metadata') {
|
|
225
|
+
return this.getNestedValue(stepResult.metadata, parts.slice(3));
|
|
226
|
+
}
|
|
227
|
+
return stepResult.output;
|
|
228
|
+
}
|
|
229
|
+
return undefined;
|
|
230
|
+
}
|
|
231
|
+
resolvePath(from, path, context) {
|
|
232
|
+
switch (from) {
|
|
233
|
+
case 'context':
|
|
234
|
+
return this.getNestedValue(context, path.split('.'));
|
|
235
|
+
case 'step': {
|
|
236
|
+
const [stepId, ...rest] = path.split('.');
|
|
237
|
+
const stepResult = stepId ? context.steps[stepId] : undefined;
|
|
238
|
+
return stepResult ? this.getNestedValue(stepResult, rest) : undefined;
|
|
239
|
+
}
|
|
240
|
+
default:
|
|
241
|
+
return undefined;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
getNestedValue(obj, path) {
|
|
245
|
+
let current = obj;
|
|
246
|
+
for (const key of path) {
|
|
247
|
+
if (current === null || current === undefined)
|
|
248
|
+
return undefined;
|
|
249
|
+
if (typeof current !== 'object')
|
|
250
|
+
return undefined;
|
|
251
|
+
current = current[key];
|
|
252
|
+
}
|
|
253
|
+
return current;
|
|
254
|
+
}
|
|
255
|
+
evaluateCondition(condition, context) {
|
|
256
|
+
const interpolated = this.interpolateString(condition, context);
|
|
257
|
+
try {
|
|
258
|
+
if (interpolated === 'true')
|
|
259
|
+
return true;
|
|
260
|
+
if (interpolated === 'false')
|
|
261
|
+
return false;
|
|
262
|
+
return Boolean(interpolated);
|
|
263
|
+
}
|
|
264
|
+
catch {
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
resolveOutput(definition, context) {
|
|
269
|
+
const output = {};
|
|
270
|
+
for (const [key, template] of Object.entries(definition.output)) {
|
|
271
|
+
output[key] = this.interpolateString(template, context);
|
|
272
|
+
}
|
|
273
|
+
return output;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=workflow-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-executor.js","sourceRoot":"","sources":["../../../lib/workflows/workflow-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type WorkflowDefinition } from './types.js';
|
|
2
|
+
export declare class WorkflowLoader {
|
|
3
|
+
private workflowsDir;
|
|
4
|
+
private workflows;
|
|
5
|
+
constructor(workflowsDir: string);
|
|
6
|
+
loadAll(): Promise<Map<string, WorkflowDefinition>>;
|
|
7
|
+
loadOne(filePath: string): Promise<WorkflowDefinition>;
|
|
8
|
+
get(name: string): WorkflowDefinition | undefined;
|
|
9
|
+
list(): WorkflowDefinition[];
|
|
10
|
+
has(name: string): boolean;
|
|
11
|
+
names(): string[];
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=workflow-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-loader.d.ts","sourceRoot":"","sources":["../../../lib/workflows/workflow-loader.ts"],"names":[],"mappings":"AAIA,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE/E,qBAAa,cAAc;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAA8C;gBAEnD,YAAY,EAAE,MAAM;IAI1B,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAYnD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAM5D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIjD,IAAI,IAAI,kBAAkB,EAAE;IAI5B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,KAAK,IAAI,MAAM,EAAE;CAGlB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import * as fs from 'fs/promises';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { glob } from 'glob';
|
|
4
|
+
import { parse as parseYaml } from 'yaml';
|
|
5
|
+
import { WorkflowDefinitionSchema } from './types.js';
|
|
6
|
+
export class WorkflowLoader {
|
|
7
|
+
workflowsDir;
|
|
8
|
+
workflows = new Map();
|
|
9
|
+
constructor(workflowsDir) {
|
|
10
|
+
this.workflowsDir = workflowsDir;
|
|
11
|
+
}
|
|
12
|
+
async loadAll() {
|
|
13
|
+
const files = await glob('**/*.workflow.yaml', { cwd: this.workflowsDir });
|
|
14
|
+
for (const file of files) {
|
|
15
|
+
const filePath = path.join(this.workflowsDir, file);
|
|
16
|
+
const workflow = await this.loadOne(filePath);
|
|
17
|
+
this.workflows.set(workflow.name, workflow);
|
|
18
|
+
}
|
|
19
|
+
return this.workflows;
|
|
20
|
+
}
|
|
21
|
+
async loadOne(filePath) {
|
|
22
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
23
|
+
const parsed = parseYaml(content);
|
|
24
|
+
return WorkflowDefinitionSchema.parse(parsed);
|
|
25
|
+
}
|
|
26
|
+
get(name) {
|
|
27
|
+
return this.workflows.get(name);
|
|
28
|
+
}
|
|
29
|
+
list() {
|
|
30
|
+
return Array.from(this.workflows.values());
|
|
31
|
+
}
|
|
32
|
+
has(name) {
|
|
33
|
+
return this.workflows.has(name);
|
|
34
|
+
}
|
|
35
|
+
names() {
|
|
36
|
+
return Array.from(this.workflows.keys());
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=workflow-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-loader.js","sourceRoot":"","sources":["../../../lib/workflows/workflow-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAA2B,MAAM,YAAY,CAAC;AAE/E,MAAM,OAAO,cAAc;IACjB,YAAY,CAAS;IACrB,SAAS,GAAoC,IAAI,GAAG,EAAE,CAAC;IAE/D,YAAY,YAAoB;QAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAE3E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;CACF"}
|