Add HTTP client timeout in Workhorse for Duo Workflow http calls
## Problem
In the agentic chat (Web Chat), all tools use the HTTP action and are executed in Workhorse. Unlike the IDE executors (LSP/duo-cli), there is no shell command execution — every tool call goes through an HTTP request made by Workhorse.
Currently, Workhorse relies on [Rack Timeout](https://github.com/zombocom/rack-timeout) on the Rails side to handle slow or hanging HTTP requests, rather than having its own HTTP client timeout. This was confirmed through testing:
- A `sleep` was added to the Rails issues endpoint
- Duo was asked to fetch issues
- Rails logged: `source=rack-timeout id=01KNP3CSTX86NM56G60TGBRVGH timeout=60000ms service=60002ms state=timed_out at=error`
- Rails returned a 500
- Duo Workflow Service (DWS) forwarded the 500 to the LLM
- The LLM responded with: _"The GitLab instance appears to be having server issues. Please wait a moment and try again."_
While the tool call did not hang indefinitely in this case (thanks to Rack Timeout), relying on the server-side timeout is fragile. It would be better to have a dedicated HTTP client timeout in Workhorse so that:
1. Workhorse proactively terminates slow requests rather than waiting for the server to time out
2. The timeout behaviour is controlled on the client side and is not dependent on Rails/Rack configuration
3. A meaningful error can be returned to DWS and forwarded to the LLM
This is related to the broader issue of workflow sessions hanging when tools run indefinitely: https://gitlab.com/gitlab-org/gitlab/-/work_items/571932
## Proposal
Add an HTTP client timeout to the Workhorse HTTP client used for Duo Workflow agentic chat tool calls (HTTP actions).
- Configure a sensible default timeout for outbound HTTP requests made by Workhorse on behalf of DAP tool calls
- On timeout, return an appropriate `ActionResponse` error to DWS so the LLM can handle it gracefully
## References
- Parent issue: https://gitlab.com/gitlab-org/gitlab/-/work_items/571932
- Workhorse runner code: https://gitlab.com/gitlab-org/gitlab/-/blob/master/workhorse/internal/ai_assist/duoworkflow/runner.go
- Discussion: https://gitlab.com/gitlab-org/gitlab/-/work_items/571932#note_3228631966
issue