import type { WorkflowDefinition, WorkflowExecutionRepository, WorkflowRepository } from "@codemation/core"; import { CoreTokens, inject, injectable } from "@codemation/core"; import { Engine } from "@codemation/core/bootstrap"; import { WorkflowDefinitionRepository } from "../../domain/workflows/WorkflowDefinitionRepository"; @injectable() export class WorkflowDefinitionRepositoryAdapter implements WorkflowDefinitionRepository { constructor( @inject(Engine) private readonly engine: Engine, @inject(CoreTokens.WorkflowRepository) private readonly workflowRepository: WorkflowRepository, ) {} async listDefinitions(): Promise> { return [...this.workflowRepository.list()]; } async getDefinition(workflowId: string): Promise { const decoded = decodeURIComponent(workflowId); return this.workflowRepository.get(decoded); } async resolveSnapshot( args: Readonly<{ workflowId: string; workflowSnapshot?: unknown }>, ): Promise { return this.engine.resolveWorkflowSnapshot({ workflowId: decodeURIComponent(args.workflowId), workflowSnapshot: args.workflowSnapshot as NonNullable< Awaited> >["workflowSnapshot"], }); } }