This commit is contained in:
2025-12-11 13:50:38 +01:00
parent e4c1be628d
commit c7e5de40d6
212 changed files with 2965 additions and 763 deletions

View File

@@ -1,4 +1,4 @@
import type { HostedSessionConfig } from '../../domain/entities/HostedSessionConfig';
import type { HostedSessionConfig } from '../../domain/types/HostedSessionConfig';
export interface SessionDTO {
sessionId: string;

View File

@@ -1,4 +1,4 @@
import { HostedSessionConfig } from '../../domain/entities/HostedSessionConfig';
import type { HostedSessionConfig } from '../../domain/types/HostedSessionConfig';
import { StepId } from '../../domain/value-objects/StepId';
import type { AutomationEngineValidationResultDTO } from '../dto/AutomationEngineValidationResultDTO';

View File

@@ -2,6 +2,7 @@ import { OverlaySyncPort, OverlayAction, ActionAck } from '../ports/OverlaySyncP
import { AutomationEventPublisherPort, AutomationEvent } from '../ports/AutomationEventPublisherPort';
import { IAutomationLifecycleEmitter, LifecycleCallback } from '../../infrastructure/adapters/IAutomationLifecycleEmitter';
import { LoggerPort } from '../ports/LoggerPort';
import type { IAsyncApplicationService } from '@gridpilot/shared/application';
type ConstructorArgs = {
lifecycleEmitter: IAutomationLifecycleEmitter
@@ -13,7 +14,9 @@ type ConstructorArgs = {
defaultTimeoutMs?: number
}
export class OverlaySyncService implements OverlaySyncPort {
export class OverlaySyncService
implements OverlaySyncPort, IAsyncApplicationService<OverlayAction, ActionAck>
{
private lifecycleEmitter: IAutomationLifecycleEmitter
private publisher: AutomationEventPublisherPort
private logger: LoggerPort
@@ -32,6 +35,10 @@ export class OverlaySyncService implements OverlaySyncPort {
this.defaultTimeoutMs = args.defaultTimeoutMs ?? 5000
}
async execute(action: OverlayAction): Promise<ActionAck> {
return this.startAction(action)
}
async startAction(action: OverlayAction): Promise<ActionAck> {
const timeoutMs = action.timeoutMs ?? this.defaultTimeoutMs
const seenEvents: AutomationEvent[] = []

View File

@@ -1,11 +1,13 @@
import type { AsyncUseCase } from '@gridpilot/shared/application';
import { AutomationSession } from '../../domain/entities/AutomationSession';
import { HostedSessionConfig } from '../../domain/entities/HostedSessionConfig';
import type { HostedSessionConfig } from '../../domain/types/HostedSessionConfig';
import { AutomationEnginePort } from '../ports/AutomationEnginePort';
import type { IBrowserAutomation } from '../ports/ScreenAutomationPort';
import { SessionRepositoryPort } from '../ports/SessionRepositoryPort';
import type { SessionDTO } from '../dto/SessionDTO';
export class StartAutomationSessionUseCase {
export class StartAutomationSessionUseCase
implements AsyncUseCase<HostedSessionConfig, SessionDTO> {
constructor(
private readonly automationEngine: AutomationEnginePort,
private readonly browserAutomation: IBrowserAutomation,