import "../analytics/analytics_service.dart"; import "analytics_config.dart"; abstract class ToolTelemetryClient { Future recordToolCall({ required String toolName, required bool success, int? durationMs, Map metadata = const {}, }); } class NullToolTelemetryClient implements ToolTelemetryClient { const NullToolTelemetryClient(); @override Future recordToolCall({ required String toolName, required bool success, int? durationMs, Map metadata = const {}, }) async {} } class LocalToolTelemetryClient implements ToolTelemetryClient { const LocalToolTelemetryClient(); @override Future recordToolCall({ required String toolName, required bool success, int? durationMs, Map metadata = const {}, }) async { final eventMetadata = { "tool_name": toolName, "success": success, if (durationMs != null) "duration_ms": durationMs, ...metadata, }; logAnalyticsEvent("tool_call", eventMetadata); } } ToolTelemetryClient createToolTelemetryClient() { if (isTelemetryDisabled()) { return const NullToolTelemetryClient(); } return const LocalToolTelemetryClient(); }