mirror of
https://github.com/n8n-io/n8n.git
synced 2026-06-01 09:17:08 +02:00
Some checks are pending
Build: Benchmark Image / build (push) Waiting to run
CI: Master (Build, Test, Lint) / Build for Github Cache (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (22.x) (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (24.14.1) (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (25.x) (push) Waiting to run
CI: Master (Build, Test, Lint) / Lint (push) Waiting to run
CI: Master (Build, Test, Lint) / Performance (push) Waiting to run
CI: Master (Build, Test, Lint) / Notify Slack on failure (push) Blocked by required conditions
Util: Sync API Docs / sync-public-api (push) Waiting to run
Signed-off-by: Oleg Ivaniv <me@olegivaniv.com> Co-authored-by: Albert Alises <albert.alises@gmail.com> Co-authored-by: Jaakko Husso <jaakko@n8n.io> Co-authored-by: Dimitri Lavrenük <20122620+dlavrenuek@users.noreply.github.com> Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> Co-authored-by: Tuukka Kantola <Tuukkaa@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com> Co-authored-by: Raúl Gómez Morales <raul00gm@gmail.com> Co-authored-by: Elias Meire <elias@meire.dev> Co-authored-by: Dimitri Lavrenük <dimitri.lavrenuek@n8n.io> Co-authored-by: Tomi Turtiainen <10324676+tomi@users.noreply.github.com> Co-authored-by: Mutasem Aldmour <mutasem@n8n.io>
46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import type { WorkflowTaskService } from '../types';
|
|
import { WorkflowLoopRuntime } from './runtime';
|
|
import type {
|
|
VerificationResult,
|
|
WorkflowBuildOutcome,
|
|
WorkflowLoopAction,
|
|
} from './workflow-loop-state';
|
|
import type { WorkflowLoopStorage } from '../storage/workflow-loop-storage';
|
|
|
|
export class WorkflowTaskCoordinator implements WorkflowTaskService {
|
|
private readonly runtime: WorkflowLoopRuntime;
|
|
|
|
constructor(
|
|
private readonly threadId: string,
|
|
private readonly storage: WorkflowLoopStorage,
|
|
) {
|
|
this.runtime = new WorkflowLoopRuntime(storage);
|
|
}
|
|
|
|
async reportBuildOutcome(outcome: WorkflowBuildOutcome): Promise<WorkflowLoopAction> {
|
|
return await this.runtime.applyBuildOutcome(this.threadId, outcome);
|
|
}
|
|
|
|
async reportVerificationVerdict(verdict: VerificationResult): Promise<WorkflowLoopAction> {
|
|
return await this.runtime.applyVerificationVerdict(this.threadId, verdict);
|
|
}
|
|
|
|
async getBuildOutcome(workItemId: string): Promise<WorkflowBuildOutcome | undefined> {
|
|
const item = await this.storage.getWorkItem(this.threadId, workItemId);
|
|
return item?.lastBuildOutcome ?? undefined;
|
|
}
|
|
|
|
async updateBuildOutcome(
|
|
workItemId: string,
|
|
update: Partial<WorkflowBuildOutcome>,
|
|
): Promise<void> {
|
|
const item = await this.storage.getWorkItem(this.threadId, workItemId);
|
|
if (!item?.lastBuildOutcome) return;
|
|
|
|
await this.storage.saveWorkItem(this.threadId, item.state, item.attempts, {
|
|
...item.lastBuildOutcome,
|
|
...update,
|
|
});
|
|
}
|
|
}
|