RealtimeSessionController constructor

RealtimeSessionController({
  1. RealtimeSession? session,
  2. List<RealtimeFunctionToolHandler>? initialTools,
})

Implementation

RealtimeSessionController({RealtimeSession? session, List<RealtimeFunctionToolHandler>? initialTools}) : _session = session {
  _sub = serverEvents.listen(_handleSessionEvents);
  if (initialTools != null) {
    for (final tool in initialTools) {
      if (_tools.containsKey(tool.metadata.name)) {
        throw new ArgumentError("duplicate tool ${tool.metadata.name}");
      }
      _tools[tool.metadata.name] = tool;
    }
  }

  _ready.future.then((_) {
    if (initialTools != null) {
      send(SessionUpdateEvent(session: RealtimeSession(tools: [...initialTools.map((t) => t.metadata)])));
    }
  });
}