This commit is contained in:
2025-12-11 21:06:25 +01:00
parent c49ea2598d
commit ec3ddc3a5c
227 changed files with 3496 additions and 2083 deletions

View File

@@ -11,12 +11,14 @@ import type { AutomationEnginePort } from '@gridpilot/automation/application/por
import type { AuthenticationServicePort } from '@gridpilot/automation/application/ports/AuthenticationServicePort';
import type { LoggerPort } from '@gridpilot/automation/application/ports/LoggerPort';
import type { OverlaySyncPort } from '@gridpilot/automation/application/ports/OverlaySyncPort';
import type { CheckoutServicePort } from '@gridpilot/automation/application/ports/CheckoutServicePort';
import { StartAutomationSessionUseCase } from '@gridpilot/automation/application/use-cases/StartAutomationSessionUseCase';
import { CheckAuthenticationUseCase } from '@gridpilot/automation/application/use-cases/CheckAuthenticationUseCase';
import { InitiateLoginUseCase } from '@gridpilot/automation/application/use-cases/InitiateLoginUseCase';
import { ClearSessionUseCase } from '@gridpilot/automation/application/use-cases/ClearSessionUseCase';
import { ConfirmCheckoutUseCase } from '@gridpilot/automation/application/use-cases/ConfirmCheckoutUseCase';
import { OverlaySyncService } from '@gridpilot/automation/application/services/OverlaySyncService';
import type { IAutomationLifecycleEmitter } from '@gridpilot/automation/infrastructure/adapters/IAutomationLifecycleEmitter';
// Infrastructure
import { InMemorySessionRepository } from '@gridpilot/automation/infrastructure/repositories/InMemorySessionRepository';
@@ -187,13 +189,19 @@ export function configureDIContainer(): void {
browserAutomation
);
// Checkout Service (singleton, backed by browser automation)
container.registerInstance<CheckoutServicePort>(
DI_TOKENS.CheckoutService,
browserAutomation as unknown as CheckoutServicePort
);
// Automation Engine (singleton)
const sessionRepository = container.resolve<SessionRepositoryPort>(DI_TOKENS.SessionRepository);
let automationEngine: AutomationEnginePort;
if (fixtureMode) {
automationEngine = new AutomationEngineAdapter(
browserAutomation as any,
browserAutomation,
sessionRepository
);
} else {
@@ -247,16 +255,16 @@ export function configureDIContainer(): void {
}
// Overlay Sync Service - create singleton instance directly
const lifecycleEmitter = browserAutomation as any;
const lifecycleEmitter = browserAutomation as unknown as IAutomationLifecycleEmitter;
const publisher = {
publish: async (_event: any) => {
publish: async (event: unknown) => {
try {
logger.debug?.('OverlaySyncPublisher.publish', _event);
logger.debug?.('OverlaySyncPublisher.publish', { event });
} catch {
// swallow
}
},
} as any;
};
const overlaySyncService = new OverlaySyncService({
lifecycleEmitter,
publisher,