submit method
Submit a user message and process the response.
Implementation
Future<Message> submit(String prompt) async {
if (_status == RemoteSessionStatus.processing) {
throw StateError('Session is already processing a request');
}
_startedAt = DateTime.now();
_setStatus(RemoteSessionStatus.processing);
final userMessage = Message.user(prompt);
_addMessage(userMessage);
try {
final response = await _engine.query(
messages: _messages,
onPermissionRequest: _handlePermissionRequest,
);
_addMessage(response);
_totalTokens += _estimateTokens(response);
_setStatus(RemoteSessionStatus.idle);
_events.add(
CompletionEvent(
totalTokens: _totalTokens,
toolCalls: _toolCalls,
elapsed: DateTime.now().difference(_startedAt!),
),
);
return response;
} catch (e) {
_setStatus(RemoteSessionStatus.error);
_events.add(ErrorEvent(e.toString()));
rethrow;
}
}