subscribeToolEvents method
GET /tools/events?snapshot=1
Implementation
Future<Stream<ToolLifecycleEventDto>> subscribeToolEvents({
String? daemonApiKey,
String? hostToken,
bool snapshot = true,
}) => _guardApi(() async {
if ((daemonApiKey == null || daemonApiKey.isEmpty) &&
(hostToken == null || hostToken.isEmpty)) {
throw ArgumentError('daemonApiKey or hostToken is required');
}
final sseStream = await toolSse.request(
'/events',
queryParameters: {'snapshot': snapshot ? '1' : '0'},
method: 'GET',
headers: {
if (daemonApiKey != null && daemonApiKey.isNotEmpty)
TOOL_API_KEY_HEADER: daemonApiKey,
if (hostToken != null && hostToken.isNotEmpty)
HOST_MANAGEMENT_TOKEN_HEADER: hostToken,
},
);
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));
}
});
},
),
);
});