Watchtower
5fb302ebf1
fix(pi-embedded-runner): retry silent stopReason=error turns (non-frontier models)
...
ollama/glm-5.1:cloud (and occasionally other models) can end a turn with
stopReason="error", usage.output=0, and empty content[] after a successful
tool-call sequence. The existing empty-response retry path in
src/agents/pi-embedded-runner/run/incomplete-turn.ts is gated on
isStrictAgenticSupportedProviderModel (gpt-5 family only), so non-frontier
models fall through to "incomplete turn detected" with payloads=0 and no
recovery. The user sees no reply and has to nudge.
Add a narrow, model-agnostic resubmission inside the attempt loop, placed
before the incompleteTurnText surface-to-user return:
- stopReason === "error"
- usage.output === 0
- content.length === 0 (excludes reasoning-only error turns)
- bounded by MAX_EMPTY_ERROR_RETRIES = 3
No instruction injection, no model gating; same prompt, same session
transcript (tool results already captured), just let the loop try again.
New test file run.empty-error-retry.test.ts covers:
1. Retries for ollama/glm-5.1:cloud → succeeds on 2nd attempt.
2. Caps at 3 retries → 4 total attempts → surfaces incomplete-turn error.
3. Does NOT retry when output > 0 (preserve produced text).
4. Does NOT retry when stopReason=stop + output=0 (NO_REPLY path).
5. Retries for anthropic/claude-opus-4-7 too — model-agnostic.
Relates to #68281 .
2026-04-21 00:43:50 +01:00
Peter Steinberger
982b1c9464
test(ci): reduce channel contract import cost
2026-04-21 00:40:07 +01:00
Peter Steinberger
92191d37e6
test: split chat view coverage
2026-04-21 00:35:58 +01:00
Peter Steinberger
503af7afa6
refactor: dedupe install scan skill spec
2026-04-21 00:32:42 +01:00
Peter Steinberger
1a834a0ff6
test: reuse runtime sidecar uniqueness helper
2026-04-21 00:32:42 +01:00
Peter Steinberger
883f66eef3
test: share provider catalog fixtures
2026-04-21 00:32:42 +01:00
Peter Steinberger
3b1ef4354f
test: share streaming error response helper
2026-04-21 00:32:42 +01:00
Dale Yarborough
7b5527a74e
fix(gateway): prevent 1006 errors from race condition in WebSocket upgrade ( #43392 )
...
Merged via squash.
Prepared head SHA: 0bca6d3512
Co-authored-by: dalefrieswthat <176454532+dalefrieswthat@users.noreply.github.com >
Co-authored-by: grp06 <1573959+grp06@users.noreply.github.com >
Reviewed-by: @grp06
2026-04-20 16:29:14 -07:00
Peter Steinberger
67719b3c28
test: share debug proxy reset helper
2026-04-21 00:24:18 +01:00
Peter Steinberger
da3f47ddd0
test: share generation live env helper
2026-04-21 00:24:18 +01:00
Peter Steinberger
a95b61560a
test: dedupe reconnect drain fixtures
2026-04-21 00:24:17 +01:00
Peter Steinberger
897a7b794f
refactor: dedupe tlon helpers
2026-04-21 00:24:17 +01:00
scoootscooob
f700ad32a8
providers: default Moonshot to Kimi 2.6 ( #69477 )
...
Merged via squash.
Prepared head SHA: 4d778d09d1
Co-authored-by: scoootscooob <167050519+scoootscooob@users.noreply.github.com >
Co-authored-by: scoootscooob <167050519+scoootscooob@users.noreply.github.com >
Reviewed-by: @scoootscooob
2026-04-20 16:15:29 -07:00
Peter Steinberger
74178b37be
test: split chat status indicator coverage
2026-04-21 00:08:11 +01:00
Peter Steinberger
f2a46ec46f
refactor: dedupe perplexity request headers
2026-04-21 00:06:19 +01:00
Peter Steinberger
594337698f
refactor: dedupe qqbot helpers
2026-04-21 00:06:19 +01:00
Peter Steinberger
8e681123d8
refactor: dedupe synology chat tests
2026-04-21 00:06:19 +01:00
Peter Steinberger
28d6aa5514
refactor: reuse text runtime in google chat
2026-04-21 00:06:19 +01:00
Peter Steinberger
77a6187a70
fix(telegram): bound offset confirmation timeout ( #50368 ) (thanks @boticlaw)
2026-04-21 00:04:15 +01:00
Daniel
45ffb6cc25
fix(telegram): add client-side timeout to #confirmPersistedOffset getUpdates
2026-04-21 00:04:15 +01:00
Peter Steinberger
a732b916f4
test: use synthetic media channel fixtures
2026-04-20 23:59:39 +01:00
Garry Tan
c8086b731a
tasks: add detached task recovery hook before markLost ( #69313 )
...
Merged via squash.
Prepared head SHA: 24322af4f7
Co-authored-by: garrytan <19957+garrytan@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-04-21 00:58:20 +02:00
Peter Steinberger
871aa9d0b9
test: use synthetic ui channel fixtures
2026-04-20 23:54:59 +01:00
Peter Steinberger
73f36b0c80
test: use synthetic outbound dispatch fixtures
2026-04-20 23:49:39 +01:00
Peter Steinberger
59d18a13b7
refactor: reuse text runtime in nextcloud talk
2026-04-20 23:42:11 +01:00
Peter Steinberger
caf4766493
refactor: reuse media base64 helper in qqbot
2026-04-20 23:42:11 +01:00
Peter Steinberger
b8c02c64fb
refactor: reuse shared string coercion in ui
2026-04-20 23:42:11 +01:00
Peter Steinberger
7ca649413a
refactor: share env secret ref allowlist check
2026-04-20 23:42:11 +01:00
Peter Steinberger
3fd64772d6
test: use synthetic message media fixtures
2026-04-20 23:41:56 +01:00
chiyouYCH
2055e75f9f
fix(memory-core): prevent dreaming-narrative session leaks ( #66358 ) ( #67023 )
...
Merged via squash.
Prepared head SHA: 51f72b200c
Co-authored-by: chiyouYCH <26790612+chiyouYCH@users.noreply.github.com >
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com >
Reviewed-by: @jalehman
2026-04-20 15:41:11 -07:00
Peter Steinberger
a06f4d0808
test: use synthetic outbound message fixtures
2026-04-20 23:38:56 +01:00
Peter Steinberger
d0b69a2064
test: use synthetic message channel fixtures
2026-04-20 23:37:28 +01:00
Peter Steinberger
04cdc33731
test: fix unit coverage scope
2026-04-20 23:36:33 +01:00
Peter Steinberger
a216b4ebc3
test: merge system run path binding cases
2026-04-20 23:34:59 +01:00
Peter Steinberger
0094f76314
refactor: share plugin config issue formatting
2026-04-20 23:34:19 +01:00
Peter Steinberger
6464cf4756
refactor: share plugin package version lookup
2026-04-20 23:34:19 +01:00
Peter Steinberger
4fb2e2309e
refactor: share timeout abort helper with matrix
2026-04-20 23:34:19 +01:00
Peter Steinberger
8b7418b127
refactor: share channel doctor alias normalization
2026-04-20 23:34:19 +01:00
Peter Steinberger
e2abd4bc62
test(ci): fix msteams and heartbeat red lanes
2026-04-20 23:33:49 +01:00
Peter Steinberger
1151d69bb8
test: use synthetic outbound routing fixtures
2026-04-20 23:33:25 +01:00
Peter Steinberger
68954f9c6c
test: extract chat item builder coverage
2026-04-20 23:33:21 +01:00
Peter Steinberger
31d545260e
test: merge acp manager retry cases
2026-04-20 23:33:21 +01:00
Peter Steinberger
f6c9912e37
test: use synthetic outbound binding fixtures
2026-04-20 23:29:43 +01:00
Peter Steinberger
7e8b58cb25
test: use synthetic outbound utility fixtures
2026-04-20 23:27:18 +01:00
Peter Steinberger
b07c40a5a8
test: merge system run denial matrices
2026-04-20 23:26:37 +01:00
Peter Steinberger
11eae6b2d8
test: use synthetic message action fixtures
2026-04-20 23:25:08 +01:00
Peter Steinberger
c1be9ac0a7
test: move chat tool disclosure coverage
2026-04-20 23:22:26 +01:00
Peter Steinberger
c561e4c11b
test: use synthetic outbound core fixtures
2026-04-20 23:20:51 +01:00
Peter Steinberger
f1a544ef6d
perf: avoid sort-for-single selection
2026-04-20 23:20:31 +01:00
Peter Steinberger
2d010306e4
test: split grouped chat rendering coverage
2026-04-20 23:17:21 +01:00