subscribeToolEvents method

Future<Stream<ToolLifecycleEventDto>> subscribeToolEvents({
  1. required String daemonApiKey,
  2. bool snapshot = true,
})

GET /tools/events?snapshot=1

Implementation

Future<Stream<ToolLifecycleEventDto>> subscribeToolEvents({
  required String daemonApiKey,
  bool snapshot = true,
}) async {
  final sseStream = await toolSse.request(
    '/events',
    queryParameters: {'snapshot': snapshot ? '1' : '0'},
    method: 'GET',
    headers: {TOOL_API_KEY_HEADER: daemonApiKey},
  );

  return sseStream.transform(
    StreamTransformer<String, ToolLifecycleEventDto>.fromHandlers(
      handleData: (chunk, sink) {
        SseClient.parse(chunk, (event, data) {
          if (event == 'ready') return;
          if (event == ToolLifecycleEventType.SNAPSHOT ||
              event == ToolLifecycleEventType.READY ||
              event == ToolLifecycleEventType.DRAINING ||
              event == ToolLifecycleEventType.UNAVAILABLE ||
              event == ToolLifecycleEventType.REMOVED) {
            sink.add(ToolLifecycleEventDto.fromJson(data));
          }
        });
      },
    ),
  );
}