Commit Graph

53068 Commits

Author SHA1 Message Date
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
Peter Steinberger
d6949d5951 fix(lint): preserve JSONL parse cause 2026-05-27 05:18:46 -04:00
Peter Steinberger
5eba76531b test(e2e): preserve macos smoke entrypoint path 2026-05-27 10:07:36 +01:00
Vincent Koc
109ba23083 fix(test): await mcp timeout cleanup 2026-05-27 11:04:09 +02:00
Vincent Koc
a4a75a8694 fix(test): harden mcp channel ws timeout 2026-05-27 11:01:52 +02:00
Vincent Koc
e50b20fe7b fix(test): harden gateway network ws timeout 2026-05-27 10:59:50 +02:00
Cathryn Lavery
730ac1a68d fix(agents/harness): validate forced plugin harness support before pinning (#74341)
Validates forced plugin harness support for the requested provider/model before pinning Codex or any other plugin harness. This prevents an explicitly forced Codex runtime from accepting unsupported OpenAI-like providers through a hardcoded bypass while preserving implicit PI fallback and CLI runtime alias passthrough.

Regression coverage covers forced Codex rejection for unsupported openai/openai-codex support, Codex provider support declarations, CLI attempt routing, pi-embedded auth/profile forwarding fakes, Testbox scenario probes, and live Docker Codex plugin E2E.

Thanks @cathrynlavery.
2026-05-27 09:59:04 +01:00
Vincent Koc
40a2600544 fix(test): bound codex media path log polling 2026-05-27 10:55:00 +02:00
Peter Steinberger
98c0ad8b42 test: align extension inbound context assertions 2026-05-27 04:52:02 -04:00
Sebastien Tardif
527b7c2eed fix(install): skip Homebrew until macOS packages need it
Keep macOS Homebrew setup lazy so users with supported Node and Git can install without admin/Homebrew, while still installing Homebrew before macOS Node or Git package installs.

Updates installer docs and adds focused install.sh coverage for the lazy Git path. Also aligns the live-media provider expectation with current main so built-artifact checks stay green.

Fixes #83232

Co-authored-by: Sebastien Tardif <sebtardif@ncf.ca>
2026-05-27 09:48:04 +01:00
Vincent Koc
351aac9f57 fix(ci): bound additional boundary checks 2026-05-27 10:42:22 +02:00
Vincent Koc
4dfc2cf14a fix(release): reject empty beta smoke runs 2026-05-27 10:34:06 +02:00
Vincent Koc
158bc697c4 fix(lint): split source lint shards 2026-05-27 10:32:53 +02:00
Vincent Koc
ecdc925698 fix(crabbox): reinitialize invalid changed-gate git dirs 2026-05-27 10:32:53 +02:00
Vincent Koc
1ba4448a60 fix(lint): shard core lint checks 2026-05-27 10:32:53 +02:00
Vincent Koc
8caa44fba3 fix(lint): cap oxlint helper memory locally 2026-05-27 10:32:53 +02:00
Vincent Koc
6c42fea2d8 fix(package): omit unpacked test helpers from inventory 2026-05-27 10:32:53 +02:00
Vincent Koc
cc662ba7d3 fix(docker): skip declarations in runtime packages 2026-05-27 10:32:53 +02:00
Vincent Koc
e8dde305e2 fix(build): cap tsdown heap in containers 2026-05-27 10:32:53 +02:00
Vincent Koc
b3e3b1b659 fix(crabbox): full-sync local sparse container runs 2026-05-27 10:32:52 +02:00
Vincent Koc
72c681396e fix(test): enable live cache script gates 2026-05-27 10:31:27 +02:00
Vincent Koc
51dd548a59 fix(test): reject unknown live media providers 2026-05-27 10:29:24 +02:00
Peter Steinberger
6b391efa4e fix(cli): reject loose model and gateway numeric options 2026-05-27 04:27:02 -04:00
Peter Steinberger
1507a9701b refactor: centralize inbound supplemental context
* refactor: centralize inbound supplemental context

* refactor: trim supplemental finalizer typing

* docs: clarify supplemental context projection

* refactor: move inbound finalization into core

* refactor: simplify channel inbound facts

* refactor: fold supplemental media into inbound finalizer

* refactor: migrate channel inbound callers to builder

* docs: mark inbound finalizer compat types deprecated

* refactor: wire runtime turn context builder

* refactor: replace channel turn runtime API

* fix: respect discord quote visibility

* fix: avoid deprecated line dispatch helper

* refactor: deprecate channel message SDK seams

* docs: trim channel outbound SDK page

* test: migrate irc inbound assertion

* refactor: deprecate outbound SDK facades

* refactor: deprecate channel helper SDK facades

* refactor: deprecate channel streaming SDK facade

* refactor: move direct dm helpers into inbound SDK

* chore: mark legacy test-utils SDK alias deprecated

* refactor: remove unused allow-from read helper

* refactor: route remaining channel dispatch through core

* refactor: enforce modern extension SDK imports

* test: give slow image root tests more time

* ci: support node fallback on windows

* fix: add transcripts tool display metadata

* refactor: trim legacy channel test seams

* fix: preserve channel compat after rebase

* fix: keep deprecated channel inbound aliases

* fix: preserve discord thread context visibility

* fix: clean final rebase conflicts

* fix: preserve channel message dispatch aliases

* fix: sync channel refactor after rebase

* fix: sync channel refactor after latest main

* fix: dedupe memory-core subagent mock

* test: align clickclack inbound dispatch assertions

* fix: sync plugin sdk api hash after rebase

* fix: sync channel refactor after latest main

* fix: sync plugin sdk api hash after rebase

* fix: sync plugin sdk api hash after latest main

* test: remove stale inbound context awaits
2026-05-27 09:26:06 +01:00
Vincent Koc
ad3d197c68 fix(test): reject empty gateway cpu runs 2026-05-27 10:19:57 +02:00
Vincent Koc
b460ee48a6 fix(test): fail empty plugin gauntlet runs 2026-05-27 10:16:16 +02:00
Josh Avant
cc704caa08 fix: load Claude CLI OAuth for PI auth profiles (#87167)
* test: cover auth profile SecretRef regressions

* docs: note auth profile regression coverage

* test: satisfy auth profile regression lint

* fix: load Claude CLI OAuth overlay for PI runs

* fix(agents): share external CLI auth selection with btw

* chore: remove release-owned changelog entry
2026-05-27 01:15:41 -07:00
Vincent Koc
cefa6777e2 fix(qa): keep fallback delivery on latest targets 2026-05-27 10:06:09 +02:00
Vincent Koc
31ecbbd5bf fix(agents): ignore failed subagent placeholders 2026-05-27 10:06:09 +02:00
Vincent Koc
2c3190d9de fix(agents): preserve bridge hook context 2026-05-27 10:06:09 +02:00
Vincent Koc
88bbc5b84b fix(agents): report approval resolutions in bridge mode 2026-05-27 10:06:09 +02:00
Vincent Koc
79f7b9348e fix(agents): classify direct fallback targets by channel grammar 2026-05-27 10:06:08 +02:00
Vincent Koc
35248be6b0 fix(qa): isolate mock bridge hook state 2026-05-27 10:06:08 +02:00
Vincent Koc
c2d059dc29 fix(qa): scope mock image prompts to latest turn 2026-05-27 10:06:08 +02:00
Vincent Koc
14198a1c66 fix(qa): close remaining mock qa e2e regressions 2026-05-27 10:06:08 +02:00
Vincent Koc
81c1892c9a fix(qa): stabilize mock QA scenario contracts 2026-05-27 10:06:08 +02:00
ToToKr
7e702bb43d fix(agents): suppress Write/Edit failed warning on response-timeout false-failure (#55424) (#86855)
* fix(agents): suppress Write/Edit failed warning on response-timeout false-failure (#55424)

Reporter sees '⚠️ Write failed' / '⚠️ Edit failed' warnings on Feishu (and other channels) even though the file was 100% saved successfully (8 of 8 verified writes succeeded; warning shown for all 8). Source path: tool-mutation records lastToolError.timedOut=true with a fileTarget when a write/edit tool ack reply times out after the disk mutation has already completed, then resolveToolErrorWarningPolicy goes through the default mutating-tool branch and emits the misleading failure summary.

Add a narrow gate inside resolveToolErrorWarningPolicy that suppresses the warning only when both lastToolError.timedOut is true AND lastToolError.fileTarget is defined. fileTarget is set by tool-mutation.ts only for the write/edit family (FILE_MUTATING_TOOL_NAMES), so this branch never matches exec/message/cron/gateway mutating-tool timeouts where the disk-write idempotency reasoning does not apply. Real file failures (no timeout) and timeouts without recorded fileTarget keep their visible warnings.

* fix: recover completed write timeouts safely

* fix: bound write timeout recovery precheck

* fix: type write recovery precheck fallback

* test: complete write recovery result mock

* test: isolate e2e timeout fixture shims

* test: stabilize e2e timeout fixture path

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-27 09:03:58 +01:00
Yoshikazu Terashi
3104f36329 fix(cron): surface classified run failure causes
Surface classified cron failure causes without changing raw cron JSON error text.

- add additive CLI `cause` output for finished run entries with `errorReason`
- persist/backfill full `FailoverReason` values on cron run-log entries
- thread provider context through cron finalization so provider-specific failure causes stay accurate
- extend protocol/Swift models and regression coverage for CLI JSON, run-log parsing/search, alerts, and protocol conformance

Verification:
- `pnpm lint --threads=8`
- `pnpm protocol:check`
- `pnpm exec oxfmt --check src/cli/cron-cli/shared.ts src/cli/cron-cli/shared.cause-display.test.ts src/cron/run-log.ts src/cron/run-log.error-reason.test.ts src/cron/cron-protocol-conformance.test.ts src/cron/service.failure-alert.test.ts src/cron/service/timer.ts src/cron/service/ops.ts src/gateway/protocol/schema/cron.ts scripts/protocol-gen-swift.ts`
- `git diff --check`
- AWS Crabbox `cbx_8a6a65ab83b0` / `run_42b73a4a9750`: 4 files, 20 tests passed
- autoreview clean, no accepted/actionable findings
- GitHub CI/CodeQL/OpenGrep/Workflow Sanity green/skipped/neutral on `aa29b087b2587d0aed3d409de5e7a2c706c32cdf`

Co-authored-by: Yoshikazu Terashi <yterashi@peperon-works.jp>
2026-05-27 09:03:17 +01:00
Vincent Koc
57b1c0b3d9 fix(test): fail empty extension test requests 2026-05-27 09:57:18 +02:00
Peter Steinberger
c95d348bb5 fix(cli): reject loose numeric options 2026-05-27 03:52:40 -04:00