Commit Graph

78555 Commits

Author SHA1 Message Date
Vincent Koc 70d75c6fa3 merge: sync prepared model handoff with main
* origin/main:
  fix: preserve live updater failure diagnostics (#119096)
  fix: recover new-session models through Gateway startup (#119120)
  test(qa): cover instruction profile artifacts (#119078)
  fix(telegram): record automatic delivery message ids
  test(qa): cover memory promotion safety (#119093)
  test(qa): prove overflow compaction pruning (#119033)
  fix(tool-search): preserve deferred MCP failures (#118363)
2026-08-04 13:44:04 +08:00
Jason (Json) 8ad2e06a9d fix: preserve live updater failure diagnostics (#119096) 2026-08-03 23:30:17 -06:00
Peter Steinberger 3be66d7716 fix: recover new-session models through Gateway startup (#119120)
* fix: preserve new-session models through startup errors

* fix(ui): normalize metadata retry failures to errors

* test(ui): prove new-session metadata recovery

* test(gateway): use public model fixtures

* test(ui): order auth transport E2E lifecycle

* test(ui): drain auth transport bootstrap work

---------

Co-authored-by: ZYV5ge <39863830+ZYV5ge@users.noreply.github.com>
2026-08-03 22:24:23 -07:00
Vincent Koc a8fbadcde7 test(qa): cover instruction profile artifacts (#119078) 2026-08-04 13:18:43 +08:00
tangtaizong666 2ea3b0da98 fix(telegram): record automatic delivery message ids
Record every accepted Telegram automatic delivery in the scoped sent-message ledger, including finalized streaming previews. This restores bot-owned reaction checks and removes the per-send full-ledger expiry scan.
2026-08-04 10:45:00 +05:30
Vincent Koc 5a1daf81a5 test(qa): cover memory promotion safety (#119093) 2026-08-04 12:17:46 +08:00
Vincent Koc 2ca01fb618 test(qa): prove overflow compaction pruning (#119033) 2026-08-04 12:15:11 +08:00
Jesse Merhi ba24420f17 fix(tool-search): preserve deferred MCP failures (#118363)
* fix(tool-search): propagate deferred tool failures

* fix(tool-search): preserve failures across harnesses

* test(tool-search): align projection contract
2026-08-04 14:10:00 +10:00
Vincent Koc 48a759f6a0 merge: sync llama.cpp completion fix with main
* origin/main:
  test(qa): cover packaged browser profiles (#119043)
2026-08-04 11:22:27 +08:00
Vincent Koc 8a68252113 fix(macos): keep setup activation within app checks 2026-08-04 11:20:42 +08:00
Vincent Koc 203a7500ee merge: sync prepared model handoff with main
* origin/main:
  test(qa): cover packaged browser profiles (#119043)
2026-08-04 11:18:33 +08:00
Vincent Koc 12beeb7b29 test(qa): cover packaged browser profiles (#119043) 2026-08-04 11:13:05 +08:00
Vincent Koc 99341b9ee7 merge: sync llama.cpp completion fix with main
* origin/main:
  test(qa): prove agent tool approval controls (#119029)
  docs(agents): require exact-head ClawSweeper re-review after post-review pushes (#119069)
  fix(qa): provision ffmpeg for Playwright scenarios (#119064)
  test(qa): repair scenario catalog baselines (#119062)
2026-08-04 11:11:59 +08:00
Vincent Koc ea90866916 fix(tts): use prepared completion transport 2026-08-04 11:11:55 +08:00
Vincent Koc 9501a8264b fix(ai): prefer provider-owned completion streams 2026-08-04 11:11:55 +08:00
Vincent Koc 3e96bdc157 test(setup): type provider kind fixture 2026-08-04 11:11:08 +08:00
Vincent Koc 7a6d6fdfb4 merge: sync prepared model handoff with main
* origin/main:
  test(qa): prove agent tool approval controls (#119029)
  docs(agents): require exact-head ClawSweeper re-review after post-review pushes (#119069)
  fix(qa): provision ffmpeg for Playwright scenarios (#119064)
  test(qa): repair scenario catalog baselines (#119062)
  test(qa): prove agent session scope continuity (#119032)
  test(qa): prove workspace mutation tools (#119021)
  fix(cli): honor local port in gateway call (#119046)
  test(xai): cover playback mark overflow
  fix(xai): bound realtime playback marks
2026-08-04 11:08:38 +08:00
Vincent Koc c489a2ddab fix(setup): complete prepared model activation 2026-08-04 11:08:21 +08:00
Vincent Koc 7f766550a1 test(qa): prove agent tool approval controls (#119029) 2026-08-04 11:02:17 +08:00
Ayaan Zaidi ed8d1e71d1 docs(agents): require exact-head ClawSweeper re-review after post-review pushes (#119069)
The no-round-trip clause from #111385 covered the unchanged-head case; once rank-up moves are applied the old comment attests stale code. Head unchanged: land without re-review, as before. Head changed after review: one exact-head re-review, land when no actionable finding and no remaining rank-up move.
2026-08-04 08:22:03 +05:30
Peter Steinberger cd50780d6a fix(qa): provision ffmpeg for Playwright scenarios (#119064) 2026-08-03 19:40:39 -07:00
Vincent Koc e29f692066 test(qa): repair scenario catalog baselines (#119062) 2026-08-04 10:21:04 +08:00
Vincent Koc 6b66866fe8 test(qa): prove agent session scope continuity (#119032) 2026-08-04 09:52:39 +08:00
Vincent Koc fc1913defe test(qa): prove workspace mutation tools (#119021) 2026-08-04 09:52:31 +08:00
Vincent Koc 03ba86544e fix(protocol): regenerate Swift wizard models 2026-08-04 09:51:56 +08:00
Peter Steinberger 25e3b6c9b7 fix(cli): honor local port in gateway call (#119046) 2026-08-03 18:50:21 -07:00
Vincent Koc 981d2cdc2c Merge pull request #119045 from openclaw/fix/xai-realtime-playback-mark-bound-20260804
fix(xai): stop realtime sessions when playback acknowledgements stall
2026-08-04 09:46:06 +08:00
Vincent Koc f70821908e fix(ollama): activate the model selected during setup 2026-08-04 09:39:02 +08:00
Vincent Koc dea04651b9 fix(setup): preserve the prepared model handoff 2026-08-04 09:39:02 +08:00
Jason (Json) afa4977b2c fix(gateway): honor external status target context (#119015)
* fix(gateway): preserve external status target context

* fix(gateway): keep status service authority scoped
2026-08-03 19:37:39 -06:00
Vincent Koc ada473e560 test(qa): cover agent session streaming (#119028) 2026-08-04 09:24:44 +08:00
Vincent Koc 5a59bb07b3 test(qa): cover sandbox workspace isolation (#119038) 2026-08-04 09:21:54 +08:00
Vincent Koc bf61c4c581 test(qa): cover progress followthrough evidence (#119039)
* test(qa): cover progress task followthrough

* test(qa): cover progress evidence
2026-08-04 09:20:50 +08:00
Mert Başar 196d81195b fix(auth): cooldown inline api key billing failures (#88709)
* fix(auth): cooldown inline api key billing failures

* fix: mark inline api key prompt failures

* fix(auth): propagate inline api key cooldown to provider visibility

* fix(types): fix test type errors in agents and ui

* fix(auth): correct null check for cooldown gate and fix test case

* fix(ui): remove unrelated test drift and fix expired toast expectation

* fix(auth): preserve inline cooldown usageStats in warm worker snapshots

* test(auth): update warm snapshot expectation with usageStats

* test(auth): format inline cooldown worker proof

* fix(auth): narrow inline cooldown classifier

* fix(auth): mark managed file/exec SecretRef inline keys on auth/billing failure

The inline-api-key cooldown marker only fired for literal, env-marker, and
env SecretRef sources, while the resolution gate already covered managed
file/exec SecretRef provider keys via coerceSecretRef. As a result a
file/exec SecretRef models.providers.<id>.apiKey could never record a 402
billing cooldown, so the gate that would honor it never triggered.

Align the runner failure-marker trigger with the gate predicate
(isConfigBackedInlineProviderApiKey) so managed non-env SecretRef inline keys
are marked on auth/billing failure. Adds focused regression coverage.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(auth): drop now-unused isInlineProviderApiKeyAuth export

The runner failure-marker now gates on isConfigBackedInlineProviderApiKey, so
isInlineProviderApiKeyAuth has no remaining callers. Removing the dead export
also trims one public callable export back under the plugin-SDK surface budget.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(auth): enforce inline cooldown for managed file/exec SecretRef keys

The inline-api-key cooldown was recorded for managed (file/exec) SecretRef
provider keys but never enforced: these keys resolve through the synthetic
runtime path (resolveSyntheticLocalProviderAuth) and the explicit api-key
override path, neither of which consulted the inline-key cooldown gate. So an
exhausted file/exec SecretRef provider kept resolving and reporting available
during an active inline-api-key:<provider> cooldown.

Gate both resolution exits (and the provider-availability check) on
isConfigBackedInlineProviderApiKey + assertInlineProviderApiKeyUsable, matching
the literal/env paths. Local no-auth markers are not config-backed inline keys,
so they stay untouched. Adds regression coverage for both resolution paths.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(auth): gate runtime SecretRef cooldown checks

* fix(auth): honor inline key cooldowns in model-list and tool auth checks

Direct hasRuntimeAvailableProviderAuth callers omitted the auth store, so
inline provider keys in billing cooldown were still advertised as available
in model browsing (models.list) and model-backed tool auth checks. Pass the
scoped auth store at each call site and cover the cooled-key paths with
regression tests, including profile fallback and cooldown expiry.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(auth): resolve merge CI failures (format + browse cooldown mock independence)

- failover-retry-controller.ts: apply oxfmt formatting missed after the port.
- model-auth-availability.ts: the browse-side inline cooldown check imported
  resolveInlineProviderApiKeyUnusableUntil from the auth-profiles usage module,
  which several command/directive tests partially mock — the new export was
  absent from those mocks, so every mocking test threw at the browse path.
  Read the inline cooldown via usage-state primitives (resolveProfileUnusableUntil
  + isAuthCooldownBypassedForProvider) and build the usage id with the same
  normalizeProviderId the write side uses, so the hot browse path no longer
  depends on the mocked usage module while keeping key resolution identical.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(auth): make model-auth inline cooldown reads mock-independent

resolveApiKeyForProvider/assertInlineProviderApiKeyUsable read the inline
provider API-key cooldown, which this PR routes through the auth-profiles
usage module. Many existing suites partially mock that barrel (e.g.
run.overflow-compaction.test.ts) without the new export, so those tests
threw once merged code reached the inline path.

Read the cooldown via usage-state primitives (resolveProfileUnusableUntil +
isAuthCooldownBypassedForProvider) and build the `inline-api-key:<provider>`
usage id with the same normalizeProviderId the write side uses, so model-auth
no longer depends on the mocked usage module while key resolution stays
identical. Verified across all 30 suites that mock the auth-profiles module.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(test): use main's terminal failure shape for the inline-key billing case

Main reworked EmbeddedRunAttemptResult so attempt failures are reported via
`terminal: { kind: "failed", source, error }` instead of the old
`promptError`/`promptErrorSource` fields. The inline-key billing regression
test still used the removed fields, which merged cleanly but broke
check-test-types.

Switch it to the same shape the sibling helper in this file already uses.
Verified with `pnpm check:test-types` (exit 0).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Mert Basar <MertBasar0@users.noreply.github.com>
Co-authored-by: Ceviz Agent <ceviz@openclaw.local>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-03 18:19:06 -07:00
Vincent Koc b4faa5aa5e chore(gateway): cover update and setup RPCs
* test(gateway): cover update and setup RPCs

* test(gateway): cover target wizard lifecycle

* test(gateway): normalize QA fixture ownership

* test(gateway): include historical dist closure

* test(gateway): isolate historical update fixture

* test(qa): align target wizard lifecycle proof

* test(qa): read structured gateway call errors
2026-08-04 09:15:55 +08:00
Vincent Koc ee397f0c59 test(qa): prove ClawHub catalog discovery (#118934)
* test(qa): prove ClawHub catalog discovery

* test(qa): use shared temp cleanup
2026-08-04 09:07:35 +08:00
Vincent Koc 84d9e93dbb chore(qa): cover plugin testing harness contracts (#118933)
* test(qa): cover plugin testing harness contracts

* test(qa): narrow plugin harness tool factory
2026-08-04 09:07:27 +08:00
Vincent Koc d5d4a63733 test(xai): cover playback mark overflow 2026-08-04 09:07:06 +08:00
Vincent Koc 73544a73af fix(xai): bound realtime playback marks 2026-08-04 09:07:06 +08:00
Vincent Koc 79dac911f6 test(qa): prove failure recovery visibility (#119034) 2026-08-04 09:02:33 +08:00
Vincent Koc 6419711eb3 test(qa): cover direct tool invocation (#119025) 2026-08-04 09:01:46 +08:00
Vincent Koc e928762b9d test(qa): close external app SDK proof gaps (#118978)
* test(qa): close external app SDK proof gaps

* test(qa): close external app SDK proof gaps
2026-08-04 09:00:22 +08:00
Vincent Koc a85d3bbc5c test(qa): prove container health endpoints (#119012) 2026-08-04 08:49:51 +08:00
Vincent Koc 36b681344c test(qa): claim sessionless heartbeat coverage (#119027) 2026-08-04 08:47:49 +08:00
Peter Steinberger e16bc0108c fix(gateway): keep plugin model allowlists static (#118854) 2026-08-03 17:39:45 -07:00
Patrick Erichsen 1aea2df935 fix(plugins): refresh bundled channel skills (#119020) 2026-08-03 17:31:00 -07:00
Vincent Koc 07a9856cce test(qa): cover ClawHub package compatibility (#118985) 2026-08-04 08:29:29 +08:00
Vincent Koc 945597bb81 test(qa): cover agent session reconnect dedupe (#119013) 2026-08-04 08:25:06 +08:00
Vincent Koc 1520b839f3 test(qa): prove gateway chat RPCs (#118988) 2026-08-04 08:19:14 +08:00
Vincent Koc 0dc9970624 test(ui): cover Control UI auth transports (#118866)
* test(ui): cover control ui auth transports

* test(qa): register control ui auth transport scenarios

* test(ui): allow loaded control ui startup

* test(ui): allow loaded screenshot capture

* test(ui): scrub loopback proof URLs

* test(ui): keep transport proof assertion-focused

* test(ui): capture auth transport proof directly

* test(ui): gate auth transport proof media

* test(ui): scope auth transport evidence

* test(ui): fix auth transport frame typing

* test(ui): stabilize auth transport QA

* test(ui): separate auth UI navigation readiness
2026-08-04 08:16:22 +08:00