Expand description
§DebugProvider (Environment)
RESPONSIBILITIES:
- Implements
DebugServiceforMountainEnvironment - Manages complete debugging session lifecycle from configuration to termination
- Orchestrates between extension host (Cocoon), debug adapter, and UI
- Handles DAP (Debug Adapter Protocol) message mediation
ARCHITECTURAL ROLE:
- Core provider for debugging functionality, analogous to VSCode’s debug service
- Uses two-stage registration: configuration providers and adapter descriptor factories
- Each debug type (node, java, rust) can have its own configuration and adapter
- Integrates with
IPCProviderfor RPC to Cocoon
DEBUG SESSION FLOW:
- UI calls
StartDebuggingwith folder URI and configuration - Mountain RPCs to Cocoon to resolve debug configuration (variable substitution)
- Mountain RPCs to Cocoon to create debug adapter descriptor
- Mountain spawns debug adapter process or connects to TCP server
- Mountain mediates DAP messages between UI and debug adapter
- UI sends DAP commands via
SendCommandwhich forwards to adapter - Debug adapter sends DAP events/notifications back through Mountain to UI
- Session ends on stop request or adapter process exit
ERROR HANDLING:
- Uses
CommonErrorfor all operations - Validates debug type is non-empty (InvalidArgument error)
- TODO: Implement proper session lookup, timeout handling, and error recovery
PERFORMANCE:
- Debug adapter spawning should be async with timeout protection (5000ms in current RPC)
- DAP message routing needs efficient session lookup (TODO: O(1) hash map)
- Multiple simultaneous debug sessions require careful resource management
VS CODE REFERENCE:
vs/workbench/contrib/debug/browser/debugService.ts- debug service main logicvs/workbench/contrib/debug/common/debug.ts- debug interfaces and modelsvs/workbench/contrib/debug/browser/adapter/descriptorFactory.ts- adapter descriptor factoriesvs/debugAdapter/common/debugProtocol.ts- DAP protocol specification
TODO:
- Store debug adapter registrations in ApplicationState
- Implement proper debug session tracking and management
- Add debug adapter process spawning and lifecycle management
- Implement proper DAP message routing and serialization
- Add debug session state persistence across UI reloads
- Implement debug console and variable inspection integration
- Add support for multiple simultaneous debug sessions
- Implement debug adapter termination and cleanup
- Add debug session metrics and telemetry
- Consider implementing debug configuration validation
- Add support for debug adapters that communicate via TCP sockets
- Implement debug adapter crash detection and recovery
MODULE CONTENTS:
DebugServiceimplementation:RegisterDebugConfigurationProvider- register config resolverRegisterDebugAdapterDescriptorFactory- register adapter factoryStartDebugging- start debug session (partial)SendCommand- send DAP command to adapter (stub)