agentis
Version:
A TypeScript framework for building sophisticated multi-agent systems
59 lines (58 loc) • 2.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TaskPipeline = void 0;
class TaskPipeline {
async executePipeline(task, agents) {
const pipeline = new Map();
const results = [];
const executionMetadata = [];
// Group agents by execution stage
agents.forEach(agent => {
// Default to stage 0 if determineStage not implemented
const stage = this.determineStage ? this.determineStage(agent, task) : 0;
if (!pipeline.has(stage)) {
pipeline.set(stage, []);
}
pipeline.get(stage).push(agent);
});
// Execute stages sequentially
for (const [stage, stageAgents] of pipeline) {
const stageStart = Date.now();
// Execute agents in parallel within each stage
const stageResults = await Promise.all(stageAgents.map(agent => agent.executeTask(task)
.then((result) => {
const metadata = {
agentId: agent.id,
status: 'success',
duration: Date.now() - stageStart
};
executionMetadata.push(metadata);
return {
agentId: agent.id,
status: 'success',
result
};
})
.catch((error) => {
const metadata = {
agentId: agent.id,
status: 'failed',
duration: Date.now() - stageStart
};
executionMetadata.push(metadata);
return {
agentId: agent.id,
status: 'failed',
error
};
})));
results.push(...stageResults);
}
return { results, metadata: executionMetadata };
}
determineStage(agent, task) {
// Default implementation: all agents execute in parallel (stage 0)
return 0;
}
}
exports.TaskPipeline = TaskPipeline;