///|
/// Shared frontend dependencies. Individual command objects only retain their
/// parsed input and receive this context when they execute.
priv struct ReplContext {
  session : @debugger.DebugSession
  registry : CommandRegistry
  renderer : &PresentationRenderer
}

///|
fn ReplContext::new(
  session : @debugger.DebugSession,
  registry : CommandRegistry,
  renderer : &PresentationRenderer,
) -> ReplContext {
  { session, registry, renderer, }
}

///|
async fn ReplContext::render(
  self : ReplContext,
  events : Array[PresentationEvent],
) -> Unit {
  self.renderer.render(events)
}