Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 4 additions & 81 deletions packages/sandbox-container/src/core/container.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,6 @@
import type { Logger } from '@repo/shared';
import { createLogger, GitLogger } from '@repo/shared';
import { BackupHandler } from '../handlers/backup-handler';
import { DesktopHandler } from '../handlers/desktop-handler';
import { ExecuteHandler } from '../handlers/execute-handler';
import { FileHandler } from '../handlers/file-handler';
import { GitHandler } from '../handlers/git-handler';
import { InterpreterHandler } from '../handlers/interpreter-handler';
import { MiscHandler } from '../handlers/misc-handler';
import { PortHandler } from '../handlers/port-handler';
import { ProcessHandler } from '../handlers/process-handler';
import { PtyWebSocketHandler } from '../handlers/pty-ws-handler';
import { SessionHandler } from '../handlers/session-handler';
import { WatchHandler } from '../handlers/watch-handler';
import { CorsMiddleware } from '../middleware/cors';
import { LoggingMiddleware } from '../middleware/logging';
import { SecurityServiceAdapter } from '../security/security-adapter';
import { SecurityService } from '../security/security-service';
import { BackupService } from '../services/backup-service';
Expand All @@ -37,29 +24,14 @@ export interface Dependencies {
backupService: BackupService;
desktopService: DesktopService;
watchService: WatchService;
sessionManager: SessionManager;

// Infrastructure
logger: Logger;
security: SecurityService;
sessionManager: SessionManager;

// Handlers
backupHandler: BackupHandler;
executeHandler: ExecuteHandler;
fileHandler: FileHandler;
processHandler: ProcessHandler;
portHandler: PortHandler;
gitHandler: GitHandler;
interpreterHandler: InterpreterHandler;
sessionHandler: SessionHandler;
miscHandler: MiscHandler;
desktopHandler: DesktopHandler;
// PTY handler (WebSocket-based, not part of the RPC layer)
ptyWsHandler: PtyWebSocketHandler;
watchHandler: WatchHandler;

// Middleware
corsMiddleware: CorsMiddleware;
loggingMiddleware: LoggingMiddleware;
}

export class Container {
Expand All @@ -78,7 +50,6 @@ export class Container {
);
}

// Safe cast because we know the container is initialized and dependency exists
return dependency as Dependencies[T];
}

Expand All @@ -94,22 +65,15 @@ export class Container {
return;
}

// Initialize infrastructure
const logger = createLogger({ component: 'container' });
const security = new SecurityService(logger);
const securityAdapter = new SecurityServiceAdapter(security);

// Initialize stores
const processStore = new ProcessStore(logger);
const portStore = new InMemoryPortStore();

// Initialize SessionManager
const sessionManager = new SessionManager(logger);

// Create git-specific logger that automatically sanitizes credentials
const gitLogger = new GitLogger(logger);

// Initialize services
const processService = new ProcessService(
processStore,
logger,
Expand All @@ -130,31 +94,9 @@ export class Container {
const backupService = new BackupService(logger, sessionManager);
const desktopService = new DesktopService(logger);
const watchService = new WatchService(logger);

// Initialize handlers
const backupHandler = new BackupHandler(backupService, logger);
const sessionHandler = new SessionHandler(sessionManager, logger);
const executeHandler = new ExecuteHandler(processService, logger);
const fileHandler = new FileHandler(fileService, logger);
const processHandler = new ProcessHandler(processService, logger);
const portHandler = new PortHandler(portService, processService, logger);
const gitHandler = new GitHandler(gitService, gitLogger);
const interpreterHandler = new InterpreterHandler(
interpreterService,
logger
);
const miscHandler = new MiscHandler(logger);
const desktopHandler = new DesktopHandler(desktopService, logger);
const ptyWsHandler = new PtyWebSocketHandler(sessionManager, logger);
const watchHandler = new WatchHandler(watchService, logger);

// Initialize middleware
const corsMiddleware = new CorsMiddleware();
const loggingMiddleware = new LoggingMiddleware(logger);

// Store all dependencies
this.dependencies = {
// Services
processService,
fileService,
portService,
Expand All @@ -163,29 +105,10 @@ export class Container {
backupService,
desktopService,
watchService,

// Infrastructure
sessionManager,
logger,
security,
sessionManager,

// Handlers
backupHandler,
executeHandler,
fileHandler,
processHandler,
portHandler,
gitHandler,
interpreterHandler,
sessionHandler,
miscHandler,
desktopHandler,
ptyWsHandler,
watchHandler,

// Middleware
corsMiddleware,
loggingMiddleware
ptyWsHandler
};

this.initialized = true;
Expand Down
Loading
Loading