| 125 | |
| 126 | // Listen for messages |
| 127 | const messageHandler = ({ message }: { message: ClineMessage }) => { |
| 128 | messages.push(message) |
| 129 | |
| 130 | // Check for MCP tool request |
| 131 | if (message.type === "ask" && message.ask === "use_mcp_server") { |
| 132 | mcpToolRequested = true |
| 133 | console.log("MCP tool request:", message.text?.substring(0, 200)) |
| 134 | |
| 135 | // Parse the MCP request to verify structure and tool name |
| 136 | if (message.text) { |
| 137 | try { |
| 138 | const mcpRequest = JSON.parse(message.text) |
| 139 | mcpToolName = mcpRequest.toolName |
| 140 | console.log("MCP request parsed:", { |
| 141 | type: mcpRequest.type, |
| 142 | serverName: mcpRequest.serverName, |
| 143 | toolName: mcpRequest.toolName, |
| 144 | hasArguments: !!mcpRequest.arguments, |
| 145 | }) |
| 146 | } catch (e) { |
| 147 | console.log("Failed to parse MCP request:", e) |
| 148 | } |
| 149 | } |
| 150 | } |
| 151 | |
| 152 | // Check for MCP server response |
| 153 | if (message.type === "say" && message.say === "mcp_server_response") { |
| 154 | mcpServerResponse = message.text || null |
| 155 | console.log("MCP server response received:", message.text?.substring(0, 200)) |
| 156 | } |
| 157 | |
| 158 | // Check for attempt_completion |
| 159 | if (message.type === "say" && message.say === "completion_result") { |
| 160 | attemptCompletionCalled = true |
| 161 | console.log("Attempt completion called:", message.text?.substring(0, 200)) |
| 162 | } |
| 163 | |
| 164 | // Log important messages for debugging |
| 165 | if (message.type === "say" && message.say === "error") { |
| 166 | errorOccurred = message.text || "Unknown error" |
| 167 | console.error("Error:", message.text) |
| 168 | } |
| 169 | } |
| 170 | api.on(RooCodeEventName.Message, messageHandler) |
| 171 | |
| 172 | // Listen for task events |