rcourtman
7a1e41bcf9
Let flowing AI streams outlive the configured request timeout
...
Thinking models served through OpenAI-compatible endpoints (qwen3 via
Ollama >=0.31, DeepSeek) spend most of a turn streaming per-token
reasoning deltas before any content. The stream reader wrapped the whole
turn in a wall-clock deadline at the configured request timeout, so a
live, visibly-thinking stream was killed mid-thought with 'AI response
timed out before completion' (#1576 , second symptom).
The timeout's job is stall detection, not turn budgeting. It now bounds
only how long Pulse waits for the stream to start: the response-header
wait (Ollama holds headers while a cold model loads) and the first-chunk
wait both honor the configured timeout, completing what 1c0648451
started. Once deltas flow, the 12s inter-chunk stall bound and caller
cancellation are the only limits, matching the native Ollama provider's
long-standing design.
Verified live against Ollama 0.31.1 / qwen3:8b: with a 15s configured
timeout, a turn streaming 10k chars of reasoning over 4m17s completes
and delivers the answer; previously it died at the timeout.
2026-07-14 11:57:26 +01:00
..
2026-06-23 17:26:15 +01:00
2026-07-01 10:38:57 +01:00
2026-03-18 16:06:30 +00:00
2026-07-12 23:01:40 +01:00
2026-03-18 16:06:30 +00:00
2026-05-21 15:15:23 +01:00
2026-07-12 22:13:23 +01:00
2026-06-23 17:26:15 +01:00
2026-05-15 12:22:52 +01:00
2026-06-03 12:29:37 +01:00
2026-05-25 18:02:28 +01:00
2026-03-29 14:18:20 +01:00
2026-03-18 16:06:30 +00:00
2026-06-10 09:38:52 +01:00
2026-06-09 09:43:21 +01:00
2026-07-10 13:02:26 +01:00
2026-03-18 16:06:30 +00:00
2026-07-14 11:57:26 +01:00
2026-04-01 14:47:58 +01:00
2026-06-23 17:26:15 +01:00
2026-07-13 21:51:33 +01:00
2026-06-27 14:43:09 +01:00
2026-05-01 20:28:11 +01:00
2026-03-30 13:34:08 +01:00
2026-03-30 13:34:08 +01:00
2026-01-25 21:08:44 +00:00
2026-05-07 01:24:57 +01:00
2026-05-07 01:24:57 +01:00
2025-12-29 13:49:04 +00:00
2026-03-18 16:06:30 +00:00
2025-12-29 13:49:04 +00:00
2026-01-01 22:29:15 +00:00
2025-12-12 11:29:47 +00:00
2026-03-18 16:06:30 +00:00
2025-12-12 14:26:10 +00:00
2026-06-23 17:26:15 +01:00
2026-06-23 17:26:15 +01:00
2026-05-10 21:57:39 +01:00
2026-06-03 12:29:37 +01:00
2026-07-11 11:25:52 +01:00
2026-07-11 12:02:05 +01:00
2026-05-17 21:59:39 +01:00
2026-06-03 12:29:37 +01:00
2026-04-09 20:15:17 +01:00
2026-01-25 21:08:44 +00:00
2026-07-12 05:23:02 +01:00
2026-07-13 21:51:33 +01:00
2026-05-12 22:23:55 +01:00
2026-05-12 22:23:55 +01:00
2026-01-30 19:02:14 +00:00
2026-05-11 11:40:07 +01:00
2026-01-30 19:02:14 +00:00
2026-01-30 19:02:14 +00:00
2026-06-23 17:26:15 +01:00
2026-06-10 09:38:52 +01:00
2026-06-09 21:42:21 +01:00
2026-05-13 11:35:24 +01:00
2026-05-13 05:42:25 +01:00
2026-05-13 11:35:24 +01:00
2026-05-13 11:35:24 +01:00
2026-06-30 10:37:54 +01:00
2026-07-11 11:25:52 +01:00
2026-07-13 16:05:44 +01:00
2026-07-13 16:05:44 +01:00
2026-06-09 21:42:21 +01:00
2026-05-13 01:13:38 +01:00
2026-03-30 13:34:08 +01:00
2026-05-13 02:41:45 +01:00
2026-05-13 02:41:45 +01:00
2026-05-13 02:41:45 +01:00
2026-03-18 16:06:30 +00:00
2026-06-30 10:37:54 +01:00
2026-02-01 10:12:23 +00:00
2026-06-23 17:26:15 +01:00
2026-06-23 17:26:15 +01:00
2026-06-09 21:42:21 +01:00
2026-05-13 04:18:27 +01:00
2026-05-13 04:18:27 +01:00
2026-06-30 10:37:54 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-06-23 17:26:15 +01:00
2026-03-19 04:15:26 +00:00
2026-06-23 17:26:15 +01:00
2026-07-10 21:22:06 +01:00
2026-07-10 21:22:06 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 17:22:24 +00:00
2026-07-10 13:02:26 +01:00
2025-12-12 13:49:37 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2025-12-29 13:49:04 +00:00
2025-12-12 09:45:57 +00:00
2026-03-18 16:06:30 +00:00
2026-06-08 07:21:38 +01:00
2026-07-10 00:14:01 +01:00
2026-07-06 10:08:36 +01:00
2026-03-18 16:06:30 +00:00
2026-06-23 17:26:15 +01:00
2026-07-03 10:15:55 +01:00
2026-07-11 23:12:00 +01:00
2026-02-01 18:07:41 +00:00
2026-07-11 23:12:00 +01:00
2026-05-15 12:22:52 +01:00
2026-06-23 17:26:15 +01:00
2026-06-23 17:26:15 +01:00
2026-03-18 16:06:30 +00:00
2026-05-07 18:24:47 +01:00
2026-07-11 12:43:55 +01:00
2026-06-27 22:18:09 +01:00
2026-07-12 02:53:01 +01:00
2026-02-04 19:56:12 +00:00
2026-05-08 11:08:53 +01:00
2026-05-08 11:08:53 +01:00
2026-03-18 16:06:30 +00:00
2026-06-15 10:08:54 +01:00
2026-06-09 21:47:14 +01:00
2026-05-01 20:28:11 +01:00
2026-06-10 09:38:52 +01:00
2026-02-01 16:27:25 +00:00
2026-03-18 16:06:30 +00:00
2026-05-15 14:51:15 +01:00
2026-07-10 12:04:03 +01:00
2026-07-11 11:25:52 +01:00
2026-05-01 20:28:11 +01:00
2026-05-01 20:28:11 +01:00
2026-07-10 12:04:03 +01:00
2026-07-11 11:25:52 +01:00
2026-06-23 19:38:22 +01:00
2026-03-30 13:34:08 +01:00
2026-06-15 10:08:54 +01:00
2026-05-15 12:22:52 +01:00
2026-07-13 14:34:27 +01:00
2026-06-05 12:50:02 +01:00
2026-07-10 12:04:03 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-06-29 18:17:24 +01:00
2026-03-18 16:06:30 +00:00
2026-06-29 18:17:24 +01:00
2026-06-03 12:29:37 +01:00
2026-03-18 16:06:30 +00:00
2026-06-09 21:47:14 +01:00
2026-01-24 22:41:43 +00:00
2026-05-17 18:24:13 +01:00
2026-03-30 13:34:08 +01:00
2026-04-01 23:09:32 +01:00
2026-05-13 00:28:24 +01:00
2026-06-15 10:08:54 +01:00
2026-06-15 10:08:54 +01:00
2026-07-13 16:05:44 +01:00
2025-12-12 14:11:28 +00:00
2026-05-10 19:30:54 +01:00
2026-05-10 19:30:54 +01:00
2026-05-10 21:23:12 +01:00
2026-05-10 22:02:10 +01:00
2026-05-10 21:08:51 +01:00
2026-05-10 22:02:10 +01:00
2026-06-09 09:43:21 +01:00
2026-06-09 09:43:21 +01:00
2026-06-08 15:21:51 +01:00
2026-06-09 09:43:21 +01:00
2026-03-19 04:07:47 +00:00
2026-03-19 04:07:47 +00:00
2026-03-18 16:06:30 +00:00
2026-03-30 13:34:08 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2025-12-10 08:35:24 +00:00
2026-06-08 03:48:33 +01:00
2026-07-13 21:51:33 +01:00
2026-05-15 16:28:17 +01:00
2026-07-13 21:51:33 +01:00
2026-07-12 13:29:21 +01:00
2026-07-12 13:29:21 +01:00
2026-03-18 16:06:30 +00:00
2026-07-12 13:29:21 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00