fix: Codex turns stop showing typing during tool work#95844
Conversation
84adf85 to
7cf8d07
Compare
|
Codex review: needs maintainer review before merge. Reviewed June 24, 2026, 2:45 PM ET / 18:45 UTC. Summary PR surface: Source +34, Tests +108, Docs +1. Total +143 across 5 files. Reproducibility: yes. Current main has no execution-activity typing signal and message-mode tool-start typing waits for renderable text, so long pre-text Codex work can leave typing idle from source inspection. Review metrics: 1 noteworthy metric.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land the channel-neutral execution-phase typing bridge once maintainers accept execution activity as a default typing trigger and the stale PR-body Kysely note is removed. Do we have a high-confidence way to reproduce the issue? Yes. Current main has no execution-activity typing signal and message-mode tool-start typing waits for renderable text, so long pre-text Codex work can leave typing idle from source inspection. Is this the best way to solve the issue? Mostly yes. The fix is in the channel-neutral typing layer and reuses existing execution-phase contracts; the remaining question is whether maintainers accept the broader default timing for existing sessions. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 4c841ac575d7. Label changesLabel justifications:
Evidence reviewedPR surface: Source +34, Tests +108, Docs +1. Total +143 across 5 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
eb2155b to
2b1ac20
Compare
03836c5 to
cfdd436
Compare
cfdd436 to
17ee63c
Compare
|
Merged via squash.
|
* fix: bridge harness execution phases to typing * docs: clarify typing indicator activity triggers
* fix: bridge harness execution phases to typing * docs: clarify typing indicator activity triggers
What Problem This Solves
Fixes an issue where users running turns through the Codex harness could see the channel typing indicator stop during long-running model, tool, or command work, even though the same conversation surface stayed visibly active under the embedded OpenClaw harness.
Why This Change Was Made
The fix bridges user-visible harness execution phases into the existing reply typing signaler instead of adding Telegram-specific behavior. Codex CLI/app-server phases and embedded runner phases now share the same channel-neutral activity hook, so transports that already support typing/progress cues can refresh them before assistant text arrives.
This also includes a narrow Kysely guardrail allowlist update for the existing
sqlite-user-version.tsPRAGMA helper. Current CI's architecture shard requires that direct raw SQLite metadata probe to be explicitly classified as schema/pragma access.User Impact
Users can expect Codex-backed turns to show the same “agent is still working” signal as embedded turns during long tool-heavy work, long single commands, errors with recovery, and queued follow-up turns. This reduces the silent gap where a turn looked idle until the final reply appeared.
This changes typing start/refresh timing, not reply content or delivery. Because the bridge uses the shared typing signaler, execution activity can now start or refresh typing before the first assistant text delta in modes that previously waited for text/reasoning-only signals, including default group
messagemode.typingMode: "never"and heartbeat/system-event suppression remain unchanged.Evidence
dist, and a live Telegram group thread watched by Josh. The rebuilt runtime was verified to contain bothsignalExecutionActivityandsignalExecutionPhaseForTyping.dist, and restarted the gateway.node scripts/run-vitest.mjs run src/auto-reply/reply/reply-utils.test.ts src/auto-reply/reply/agent-runner-execution.test.ts.OPENCLAW_CHECK_CHANGED_REMOTE_CHILD=1 OPENCLAW_CHANGED_LANES_RAW_SYNC=1 node scripts/check-changed.mjs.AUTOREVIEW_ENGINE=codex PATH="/var/lib/openclaw/.local/bin:$PATH" .agents/skills/autoreview/scripts/autoreview --mode branch --base origin/main --stream-engine-output.node scripts/check-kysely-guardrails.mjsafter the guardrail allowlist update.patch is correct, confidence0.82.node scripts/check-kysely-guardrails.mjspassed withKysely guardrails OK.sendChatAction(typing)line, so the transport-level proof is visual plus runtime/source verification rather than a machine-verifiable chat-action log.../codex/codex-rs/app-server-protocol/src/protocol/v2/item.rs:215,../codex/codex-rs/app-server-protocol/src/protocol/v2/item.rs:1127, and../codex/codex-rs/app-server-protocol/src/protocol/thread_history.rs:652.