Two independent bugs made MCP terminal tools time out despite the command finishing. First, timeout_ms is declared integer in the tool schemas but was parsed through GetStringArg, which only reads JSON strings. A numeric value fell through to the 20s default, so callers asking for a longer wait were cut off at 20s. exec_command, terminal_open, terminal_exec and remote_open now parse timeout_ms through GetIntArg, which accepts both JSON numbers and digit strings, keeping the 1..600000 range guard. Second, FindSentinel treated the __MCP_DONE_<nonce>__ marker as a line start only when preceded by \n. Commands that produce no output (ping > nul, Start-Sleep, tar -czf) echo their command line ending in \r, so the marker never matched and the wait ran to timeout even though the command had completed. The check now also accepts \r. Co-Authored-By: deepseek-v4-pro
173 KiB
173 KiB