Commit Graph

53107 Commits

Author SHA1 Message Date
Peter Steinberger
ef17bbaabf ci(release): harden postpublish verification 2026-05-27 13:58:14 +01:00
Peter Steinberger
1e67af7006 ci(release): accept main full-validation proof 2026-05-27 13:58:14 +01:00
Peter Steinberger
e61f175203 fix(cli): reject malformed gateway timeouts 2026-05-27 08:57:03 -04:00
Vincent Koc
b12bd3fc98 fix(dev): bound issue labeler OpenAI waits 2026-05-27 14:56:10 +02:00
Yuval Dinodia
ef77428c95 fix(openai): normalize responses replay tool ids
Fixes #74665.

Normalize replayed OpenAI Responses tool call identifiers before same-model pi-ai replay sends them back to the provider. This keeps canonical `call_*|fc_*` pairs intact when valid, rewrites overlong or malformed `function_call.call_id`, `function_call.id`, and matching `function_call_output.call_id` values into OpenAI's accepted 64-character shape, and preserves the reasoning replay path.

Verification:
- Live OpenAI E2E with maintainer key: raw replay payload failed with HTTP 400 for overlong `input[1].id`; normalized replay succeeded with HTTP 200 and `LIVE_OK`.
- `pnpm exec oxfmt --check --threads=1 src/agents/pi-embedded-helpers/openai.ts`
- `CI=1 OPENCLAW_VITEST_FS_MODULE_CACHE_PATH="$(mktemp -d /tmp/openclaw-vitest-cache.XXXXXX)" fnm exec --using 24.15.0 -- pnpm test src/agents/pi-embedded-runner/run/attempt.tool-call-normalization.test.ts -- --run --reporter=verbose --maxWorkers=1`
- `CI=1 OPENCLAW_VITEST_FS_MODULE_CACHE_PATH="$(mktemp -d /tmp/openclaw-vitest-cache.XXXXXX)" fnm exec --using 24.15.0 -- pnpm test src/agents/pi-embedded-runner.openai-tool-id-preservation.test.ts src/agents/openai-responses.reasoning-replay.test.ts -- --run --reporter=verbose --maxWorkers=2`
- `autoreview --mode branch --base origin/main`: clean, no accepted/actionable findings.
- GitHub CI green on c675b35ade.

Co-authored-by: Yuval Dinodia <yetvald@gmail.com>
2026-05-27 13:51:57 +01:00
xin zhuang
7121f674ba fix(status): keep default status fast path bounded
Keeps plain `openclaw status` on a bounded fast path while preserving local status metadata. The default text scan now avoids network update fetches, live channel checks, setup fallback work, and unbounded session hydration; deep/all status keeps the fuller behavior.

Behavior addressed: default status latency from update, channel, setup, and session scans
Real environment tested: GitHub Actions on PR head 98f589a35df74a7abb8327984d0103bb9f31af3e; local focused lint; autoreview
Exact steps or command run after this patch: CI workflow 26510790999; CodeQL workflow 26510790924; CodeQL Critical Quality workflow 26510791058; OpenGrep workflow 26510791138; autoreview branch against origin/main
Evidence after fix: all current-SHA workflows completed successfully; autoreview clean; local focused core oxlint passed on touched status files
Observed result after fix: default status hydrates only visible recent sessions, keeps local update metadata, and shows intentionally skipped SecretRef credentials as unknown instead of warning
What was not tested: live provider/channel roundtrip

Co-authored-by: 1052326311 <1052326311@users.noreply.github.com>
2026-05-27 13:49:51 +01:00
Bob
4d89e00c50 feat(embeddings): add OpenAI-compatible core provider (#85269)
Merged via squash.

Prepared head SHA: dc9a5d5397
Co-authored-by: dutifulbob <261991368+dutifulbob@users.noreply.github.com>
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Reviewed-by: @mbelinky
2026-05-27 14:37:17 +02:00
Mariano
f3fe48e8b7 Make Telegram sendMessage actions durable (#87261)
Route Telegram sendMessage action replies through durable outbound delivery so completed agent responses remain retryable when the gateway send path times out.

Verified with focused Telegram/outbound tests, extension test typecheck, prepare build/check/full test gates, and green CI rerun for head 20b45687e1.
2026-05-27 14:34:47 +02:00
Vincent Koc
5fb57b533e fix(dev): bound gh-read API waits 2026-05-27 14:33:06 +02:00
rendrag-git
e153eceea5 fix(vllm): wire configured thinking params
Move vLLM Qwen thinking control onto configured model compat metadata and carry it through catalog/model-selection/runtime thinking contexts.

Also migrate legacy provider/default request params in doctor and keep Pi/runtime model rows buildable with explicit reasoning defaults.

Thanks @rendrag-git.

Co-authored-by: rendrag-git <253747599+rendrag-git@users.noreply.github.com>
2026-05-27 13:32:18 +01:00
Mason Huang
75221e0550 fix(agents): separate heartbeat runtime template (#85416)
Summary:
- The PR moves the runtime `HEARTBEAT.md` bootstrap template into `src/agents/templates`, keeps docs templates ... or other workspace files, adds a legacy heartbeat-template doctor repair, and updates package guards/tests.
- PR surface: Source +281, Tests +283, Docs +11, Config +1, Other 0. Total +576 across 15 files.
- Reproducibility: yes. from source inspection: current main loads `HEARTBEAT.md` from the docs template, and  ... pty heartbeat file non-empty to the runtime. I did not run a live heartbeat repro in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(doctor): recognize heartbeat docs boilerplate
- PR branch already contained follow-up commit before automerge: fix(agents): update heartbeat workspace test
- PR branch already contained follow-up commit before automerge: fix(doctor): tighten heartbeat template repair

Validation:
- ClawSweeper review passed for head e34e85864c.
- Required merge gates passed before the squash merge.

Prepared head SHA: e34e85864c
Review: https://github.com/openclaw/openclaw/pull/85416#issuecomment-4519851630

Co-authored-by: Mason Huang <masonxhuang@tencent.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: hxy91819
Co-authored-by: hxy91819 <8814856+hxy91819@users.noreply.github.com>
2026-05-27 12:30:22 +00:00
Peter Steinberger
3e351b718e fix(agents): honor OpenAI-compatible cache retention
Carry over #82973 and fix #81281 by preserving explicit cacheRetention for OpenAI-compatible completions providers that opt into prompt-cache-key support.

The change keeps explicit cacheRetention suppressed for OpenAI-compatible providers without compat.supportsPromptCacheKey, adds regression coverage for both paths, and updates prompt-caching docs for prompt_cache_key / prompt_cache_retention behavior.

Fixes #81281.
Supersedes #82973.

Co-authored-by: lonexreb <reach2shubhankar@gmail.com>
2026-05-27 13:21:23 +01:00
Peter Steinberger
517ce3df75 fix: require admin for node device approvals 2026-05-27 13:18:50 +01:00
Vincent Koc
983759b9b8 fix(qa): create Matrix mention progress target 2026-05-27 14:14:17 +02:00
Vincent Koc
d09eb437f2 fix(dev): bound Claude usage debug fetches 2026-05-27 14:10:15 +02:00
Peter Steinberger
5fdaf6b49b fix(cli): validate message numeric options 2026-05-27 08:05:03 -04:00
Peter Steinberger
7efbaf7dba perf(gateway): cache current plugin metadata fingerprints 2026-05-27 12:59:23 +01:00
Vincent Koc
e2cebe88ca fix(dev): bound realtime smoke HTTP waits 2026-05-27 13:46:42 +02:00
Vincent Koc
a275ce8611 fix(qa): accept Matrix tool error final races 2026-05-27 13:43:17 +02:00
Vincent Koc
099b0f816a fix(qa): cap Matrix readiness polling 2026-05-27 13:39:14 +02:00
Peter Steinberger
513a223c15 fix(cli): validate directory limits before resolution 2026-05-27 07:35:02 -04:00
Peter Steinberger
0889106cb2 fix(cli): reject loose webhook and directory numeric options 2026-05-27 07:35:02 -04:00
Syu
0503853c29 fix(agents): keep runtime context before active user turns
Fix runtime context placement so hidden runtime context is model-visible before the active user turn without persisting as a visible/session message.

Verification:
- git diff --check origin/main...origin/pr/86995-merge
- gh pr checks 86995 --repo openclaw/openclaw --watch=false
- gh run rerun 26493979156 --repo openclaw/openclaw --failed
- gh run watch 26493979156 --repo openclaw/openclaw --exit-status
- CodeQL run 26493979156 attempt 2, Security High (mcp-process-tool-boundary) job 78066719467 passed
2026-05-27 12:31:56 +01:00
Vincent Koc
f4b9d24621 fix(qa): stop Matrix phases after run timeout 2026-05-27 13:22:18 +02:00
Andy Ye
66965f5008 fix(agents): strip stale Anthropic thinking
Preserve replayability for direct Anthropic sessions whose stored assistant thinking blocks have empty or blank signatures after a newer user turn. Older invalid thinking-only assistant turns are replaced with the existing omitted-reasoning placeholder so the turn shape survives provider replay.

Also keep active tool-use continuations safe: when an assistant tool call is followed by tool results, preserve the latest assistant thinking block so signed-thinking providers can replay the current tool turn unchanged.

Proof:
- node scripts/run-vitest.mjs src/agents/pi-embedded-runner.sanitize-session-history.test.ts src/agents/pi-embedded-runner/thinking.test.ts test/scripts/openclaw-e2e-instance.test.ts
- pnpm check:changed via Blacksmith Testbox through Crabbox, tbx_01ksmfypqet50et92vdm5mmv5v, run https://github.com/openclaw/openclaw/actions/runs/26505947008
- Live Anthropic Messages replay accepted the OpenClaw-sanitized active tool-turn history with a real thinking signature.
- PR CI on 37c2e72d82 completed successfully for relevant checks.

Fixes #86886.

Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
2026-05-27 12:20:27 +01:00
Vincent Koc
a02fe525f1 fix(doctor): validate bundled MCP tool schemas 2026-05-27 13:15:15 +02:00
Vincent Koc
b8fc2f6587 fix(qa): kill timed out Matrix CLI runs 2026-05-27 13:01:36 +02:00
Vincent Koc
545ad7f256 fix(dev): bound discord smoke waits 2026-05-27 12:56:39 +02:00
Vincent Koc
53662094c3 chore(pixverse): publish as external plugin 2026-05-27 12:41:10 +02:00
Vincent Koc
b3083de4f2 feat(pixverse): add api region selection 2026-05-27 12:41:10 +02:00
Vincent Koc
c18370574e feat(pixverse): add video generation provider 2026-05-27 12:41:10 +02:00
Vincent Koc
a46e839f7c fix(qa): tolerate fast Matrix tool replies 2026-05-27 12:41:04 +02:00
Peter Steinberger
6c3740255f refactor: remove channel turn runtime aliases 2026-05-27 11:37:23 +01:00
Vincent Koc
83ab0ba99f fix(test): bound qa otel receiver bodies 2026-05-27 12:26:49 +02:00
Peter Steinberger
fd648edfa9 fix(lint): clean manifest registry installed checks 2026-05-27 06:26:15 -04:00
Vincent Koc
7a7d9dedc1 fix(scripts): resolve npm package candidates through npm runner 2026-05-27 12:12:32 +02:00
Vincent Koc
42f3550f7e fix(qa): hide Matrix tool progress marker in workspace 2026-05-27 12:09:35 +02:00
caz0075
12e5876903 fix(usage): forward cached token usage in chat completions (#82062)
Forward cache-read token counts through the OpenAI-compatible chat-completions usage shape as prompt_tokens_details.cached_tokens so clients can price cached turns correctly.

Align internal gateway usage typing with the expanded wire shape.

Thanks @caz0075.
2026-05-27 11:07:37 +01:00
Peter Steinberger
42387aff59 test(codex): align provider claim expectation 2026-05-27 11:03:50 +01:00
Peter Steinberger
2babe03bf5 perf(gateway): cache stable plugin index fingerprints 2026-05-27 11:03:50 +01:00
Vincent Koc
1d4537add3 fix(test): scan kitchen rpc readiness logs incrementally 2026-05-27 11:51:03 +02:00
Vincent Koc
8c6da93fdf fix(test): fail startup bench on bad samples 2026-05-27 11:46:02 +02:00
Yuval Dinodia
bbdff39b6a fix(onboard): preserve agents.list and bindings on rerun
Preserve existing `agents.list` and top-level `bindings` during ordinary onboarding reruns so rerunning `openclaw onboard` cannot silently wipe configured agents or routing bindings.

Keep config size-drop allowances scoped to explicit reset/import/plugin-install migration flows, validate binding agent ids with normalized agent ids, and add doctor repair coverage for dangling bindings that is still best-effort around malformed agent lists.

Closes #84692.

Co-authored-by: yetval <yetvald@gmail.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-27 10:45:14 +01:00
Andy Ye
aa0a29099f fix: send bare direct Anthropic model ids
Closes #87181.

Direct Anthropic Messages requests now send bare Claude model ids even when OpenClaw stores them with the `anthropic/` provider prefix. Anthropic-compatible proxy and custom endpoint routes keep slash-bearing model ids unchanged so configured proxy models do not regress.

Also preserves the original parse error as `cause` in the JSONL request tail helper to keep the current CI lint gate green.

Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
2026-05-27 10:44:20 +01:00
Georgi Atsev
9e7c2b356b fix(deepinfra): load all DeepInfra models when user wants to browse t… (#84549)
* fix(deepinfra): load all DeepInfra models when user wants to browse them during onboarding

* docs(deepinfra): align TTS default

* fix(deepinfra): refresh video fallbacks

* fix(deepinfra): share credential-aware catalog discovery

* test(deepinfra): narrow catalog regression types

* test(deepinfra): keep catalog narrowing across callback

* fix(deepinfra): preserve default model in live catalog

* fix(deepinfra): align default model pricing

* fix(deepinfra): keep pixverse as video default

* docs(deepinfra): match video fallback default

* fix(deepinfra): honor config api keys for live catalog

* test(e2e): wait for watchdog stdio close

* test(media): align live harness provider expectation

* fix(deepinfra): always augment custom catalogs

* test(e2e): resolve watchdog commands before spawning

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-27 10:43:37 +01:00
Vincent Koc
32b3fb698d fix(qa): harden Matrix tool progress scenario 2026-05-27 11:37:55 +02:00
Vincent Koc
f4bcd61c9b fix(package): match npm globstar exclusions 2026-05-27 11:37:55 +02:00
Vincent Koc
296fbde279 fix(package): honor dist package exclusions in inventory 2026-05-27 11:37:55 +02:00
Peter Steinberger
c89298f9f8 fix: preserve channel runResolved mock compatibility 2026-05-27 10:36:33 +01:00
Vincent Koc
329dad23f5 fix(test): bound config reload log polling 2026-05-27 11:23:50 +02:00