Guards the secondary resolveProviders call with `!allProviders.some(p => p.id === rawProvider)` so it only fires when the first pass genuinely missed the configured provider. Eliminates the spurious `WEB_SEARCH_PROVIDER_INVALID_AUTODETECT` warning and incorrect `providerSource: "none"` for external Brave plugin installs. Fixes#77676.
Summary:
- The branch changes non-streaming block reply delivery to direct-send all media-bearing block replies, updates reply-delivery/media-path regression tests, and adds a changelog entry.
- Reproducibility: yes. Current main's predicate and unit test show captioned media-bearing block replies are ... sent when block streaming is disabled, and the PR body adds real Telegram after-fix proof for the TTS path.
Automerge notes:
- PR branch already contained follow-up commit before automerge: test(agents): align direct media block delivery coverage
Validation:
- ClawSweeper review passed for head e9bb1314fe.
- Required merge gates passed before the squash merge.
Prepared head SHA: e9bb1314fe
Review: https://github.com/openclaw/openclaw/pull/78355#issuecomment-4386200162
Co-authored-by: Clawdbot <clawdbot@apilab.us>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
* commit '827e602d3a1bb726aaf68a02229a25ff3d848fc0':
fix(diagnostics): include talk events in stability snapshots
chore(plugin-sdk): refresh api baseline
fix(diagnostics): export talk and recovery metrics
Adds bounded Talk lifecycle/audio diagnostics and session recovery metrics for OTEL, Prometheus, and stability snapshots after the Talk SDK/session refactor. Includes changelog/docs updates and Testbox/live proof.
* Fix Codex PDF extraction fallback missing instructions
- add a Codex-specific systemPrompt on the PDF extraction fallback path
- keep non-Codex PDF fallback requests unchanged
- add regression coverage proving openai-codex-responses requests include instructions for PDF tool calls
* test: cover Codex text-only extraction fallback
- add regression coverage for the branch where PDF extraction includes images
but the selected Codex model only accepts text input
- assert Codex-specific extraction instructions are still attached in that path
* test: fix extracted image mock shape
- add the required `type: "image"` field to the text-only fallback regression mock
- keep the new Codex coverage test aligned with PdfExtractedImage
* test: align Codex PDF fallback tests
* docs(changelog): note PDF Codex fallback fix
---------
Co-authored-by: Dr JCai <jingxiao.cai@gmail.com>
Co-authored-by: anyech <8743351+anyech@users.noreply.github.com>
* fix infer model run codex instructions
* docs changelog for codex model probe fix
* fix codex model probe instructions only
* docs: note codex model probe instruction shim
* chore: rerun proof gate
---------
Co-authored-by: Le LI <leli@LedeMacBook-Air.local>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
The OpenClaw workspace bootstrap block (SOUL.md, IDENTITY.md, USER.md,
TOOLS.md, BOOTSTRAP.md, MEMORY.md, HEARTBEAT.md) was only being merged into
Codex's config.instructions. The Codex app-server runtime overlay
consistently applies the explicit developerInstructions field, so persona
and style guidance present in the workspace was failing to shape Codex
behavior on session resume.
Build the workspace bootstrap block before finalizing developerInstructions
and join it into both:
- the baseline developerInstructions (initial assignment), and
- the context-engine developerInstructions (when context engine is active),
preserving the existing config-engine projection addition.
The existing config.instructions merge stays intact, so the bootstrap now
reaches Codex through both paths and downstream hooks
(resolveAgentHarnessBeforePromptBuildResult) see what Codex will actually
receive. AGENTS.md remains excluded because Codex loads it natively.
Update the existing 'passes OpenClaw bootstrap files through ...' test to
also assert the developerInstructions field carries SOUL.md and the Codex
AGENTS.md substitution note while still excluding the native AGENTS.md
content.
Fixes#77363.