AgentGPT-Web-GUI / next /src /services /agent /agent-work /analyze-task-work.ts
dia-gov's picture
Upload 569 files
cd6f98e verified
import type AgentWork from "./agent-work";
import ExecuteTaskWork from "./execute-task-work";
import type { Message } from "../../../types/message";
import type { Task } from "../../../types/task";
import type { Analysis } from "../analysis";
import type AutonomousAgent from "../autonomous-agent";
export default class AnalyzeTaskWork implements AgentWork {
analysis: Analysis | undefined = undefined;
constructor(private parent: AutonomousAgent, private task: Task) {}
run = async () => {
this.task = this.parent.model.updateTaskStatus(this.task, "executing");
this.analysis = await this.parent.api.analyzeTask(this.task.value);
};
// eslint-disable-next-line @typescript-eslint/require-await
conclude = async () => {
let message: Message | undefined = undefined;
if (this.analysis) {
message = this.parent.messageService.sendAnalysisMessage(this.analysis);
} else {
message = this.parent.messageService.skipTaskMessage(this.task);
}
this.parent.api.saveMessages([message]);
};
next = () => {
if (!this.analysis) return undefined;
return new ExecuteTaskWork(this.parent, this.task, this.analysis);
};
onError = (e: unknown): boolean => {
this.parent.messageService.sendErrorMessage(e);
return true;
};
}