feat(automation): add macOS permission check before automation start

This commit is contained in:
2025-11-22 14:52:48 +01:00
parent 98baa1c3bc
commit c0e0e00c4c
6 changed files with 510 additions and 9 deletions

View File

@@ -3,6 +3,7 @@ import { MockBrowserAutomationAdapter } from '@/packages/infrastructure/adapters
import { BrowserDevToolsAdapter } from '@/packages/infrastructure/adapters/automation/BrowserDevToolsAdapter';
import { NutJsAutomationAdapter } from '@/packages/infrastructure/adapters/automation/NutJsAutomationAdapter';
import { MockAutomationEngineAdapter } from '@/packages/infrastructure/adapters/automation/MockAutomationEngineAdapter';
import { PermissionService } from '@/packages/infrastructure/adapters/automation/PermissionService';
import { StartAutomationSessionUseCase } from '@/packages/application/use-cases/StartAutomationSessionUseCase';
import { loadAutomationConfig, AutomationMode } from '@/packages/infrastructure/config';
import { PinoLogAdapter } from '@/packages/infrastructure/adapters/logging/PinoLogAdapter';
@@ -74,6 +75,7 @@ export class DIContainer {
private automationEngine: IAutomationEngine;
private startAutomationUseCase: StartAutomationSessionUseCase;
private automationMode: AutomationMode;
private permissionService: PermissionService;
private constructor() {
// Initialize logger first - it's needed by other components
@@ -94,6 +96,9 @@ export class DIContainer {
this.browserAutomation,
this.sessionRepository
);
this.permissionService = new PermissionService(
this.logger.child({ service: 'PermissionService' })
);
this.logger.info('DIContainer initialized', {
automationMode: config.mode,
@@ -141,6 +146,10 @@ export class DIContainer {
return this.logger;
}
public getPermissionService(): PermissionService {
return this.permissionService;
}
/**
* Initialize browser connection for dev mode.
* In dev mode, connects to the browser via Chrome DevTools Protocol.