src/connection.ts:69-90, 160-165: neither connect() nor call() has any timeout. If DFHack accepts TCP but wedges (or a Lua script blocks the RPC thread), the caller hangs indefinitely — and because calls are queued (:148-154), everything behind the wedged call hangs too. For the MCP server this means a hung tool call with no recovery path.
Fix: add an optional timeoutMs (socket setTimeout + a per-call timer that rejects and destroys the connection). This is the one genuinely missing convenience in the API surface the MCP server consumes.
Found in the post-v1.0 review.
src/connection.ts:69-90, 160-165: neitherconnect()norcall()has any timeout. If DFHack accepts TCP but wedges (or a Lua script blocks the RPC thread), the caller hangs indefinitely — and because calls are queued (:148-154), everything behind the wedged call hangs too. For the MCP server this means a hung tool call with no recovery path.Fix: add an optional
timeoutMs(socketsetTimeout+ a per-call timer that rejects and destroys the connection). This is the one genuinely missing convenience in the API surface the MCP server consumes.Found in the post-v1.0 review.