import { useEffect } from 'react' import { logEvent } from 'src/services/analytics/index.js' import { z } from 'zod/v4' import type { MCPServerConnection } from '../services/mcp/types.js' import { getConnectedIdeClient } from '../utils/ide.js' import { lazySchema } from '../utils/lazySchema.js' const LogEventSchema = lazySchema(() => z.object({ method: z.literal('log_event'), params: z.object({ eventName: z.string(), eventData: z.object({}).passthrough(), }), }), ) export function useIdeLogging(mcpClients: MCPServerConnection[]): void { useEffect(() => { // Skip if there are no clients if (!mcpClients.length) { return } // Find the IDE client from the MCP clients list const ideClient = getConnectedIdeClient(mcpClients) if (ideClient) { // Register the log event handler ideClient.client.setNotificationHandler( LogEventSchema(), notification => { const { eventName, eventData } = notification.params logEvent( `tengu_ide_${eventName}`, eventData as { [key: string]: boolean | number | undefined }, ) }, ) } }, [mcpClients]) }