Commit Graph

78472 Commits

Author SHA1 Message Date
Vyctor H. Brzezowski cfc684e49c fix(ui): remove the pre-creation session row (#122259) 2026-08-11 18:18:03 -03:00
Peter Steinberger 42a4d0a9b8 fix(openai): surface failed realtime response outcomes (#121177)
* fix(talk): type realtime response outcomes

* fix(ci): align realtime outcome contracts

* test(ui): identify completed realtime responses

* chore(plugin-sdk): refresh realtime voice baselines
2026-08-11 14:14:22 -07:00
wangmiao0668000666 9dc5a9a152 fix(logging): publish diagnostics ZIP through staged atomic overwrite (#122130)
* fix(logging): publish diagnostics ZIP through staged atomic overwrite

A named support export wrote the in-memory ZIP buffer straight to the
final path, so a failed or interrupted overwrite truncated the previous
archive, and an existing file kept its pre-existing (potentially
permissive) mode since writeFile only applies mode on creation.

Route publication through writeExternalFileWithinRoot's sibling staging:
the new archive is written to a private sibling, fsynced, and atomically
renamed over the final path. A failed publication leaves the previous
ZIP untouched with no staging residue, and the rename always installs
the staged file's 0o600 mode. The command now returns the actual
published path.

Fixes #122064

* test(logging): prove failed zip replacement stays atomic

* test(sqlite): create private reliability fixture

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-11 14:12:39 -07:00
Peter Steinberger f8b48df9e6 test(cli): trim duplicate MCP probe process cases (#122260)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 14:11:21 -07:00
Peter Steinberger c2ad148cb8 feat(agents): replay persisted native video (#122257) 2026-08-11 14:01:57 -07:00
Vincent Koc aa52ebaef3 fix(test): serialize default e2e runner (#122203)
* fix(test): serialize default e2e runner

* docs(test): document serial e2e default
2026-08-12 05:01:04 +08:00
Vyctor H. Brzezowski ce466fccb0 fix(ui): always show full assistant responses (#122207) 2026-08-11 18:00:48 -03:00
Ayaan Zaidi 6a4a546593 feat(mcp): per-requester OAuth for MCP servers (#122166)
Per-requester OAuth for HTTP MCP servers: in shared channels each trusted sender connects their own account. New config: mcp.servers.<name>.oauth.identity ("shared" default, byte-identical behavior) and gateway.publicOrigin (HTTPS except loopback) for the new GET /oauth/mcp/callback served on the Gateway HTTP server. Requester tokens are isolated per (channel, account, sender) in mcp_oauth_stores rows (no schema bump); callbacks correlate through a durable state-keyed one-time index with a 10-minute TTL; per-requester servers are fail-closed out of static/scheduled runtimes; unauthenticated senders get a sign-in link with a portable URL button; MCP config mutations clear requester credentials at the canonical owner. mcp status --json keeps the legacy authStatus fields additively. Proven by a two-user self-hosted-Executor E2E through the real gateway callback. Part of #122034.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-11 20:58:51 +00:00
Vyctor H. Brzezowski 776c19eaaa fix(ui): preserve focus on composer accessory clicks (#122243) 2026-08-11 17:50:28 -03:00
Peter Steinberger d699662083 fix(backup): exclude state temp files (#122250) 2026-08-11 13:48:27 -07:00
Vatsal Garg a432e2a586 fix(browser): let attached workers exit after CDP use (#122103)
* fix(browser): retire attached runtime Playwright CDP adapter on disposal (#122065)

* fix(browser): use optional chaining on refresh in CDP adapter retirement

* refactor(browser): simplify attached adapter disposal

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-11 13:47:58 -07:00
Peter Steinberger f4076e028b test(cli): trim duplicate Claw authoring process cases (#122248)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 13:47:38 -07:00
Vincent Koc 2f071c9371 refactor(outbound): inline delivery diagnostics (#122219) 2026-08-12 04:39:32 +08:00
Peter Steinberger e74be5d41d refactor: eliminate final wrapper-shadowing hazards (#122157)
* refactor: disambiguate wrapper-shadowed exports

* test: align renamed session and facade boundaries

* test: cover renamed runtime mock exports

* refactor: align remaining wrapper owner call sites

* test: align overlap-rebased runtime mocks

* refactor: preserve public SDK names after overlap rebase

* chore: regenerate wrapper shadowing baselines

* test: align cron model selection mocks
2026-08-11 13:34:24 -07:00
Vyctor H. Brzezowski 7d99f9fd86 fix(ui): keep new-session identity anchored (#122242) 2026-08-11 17:30:53 -03:00
Peter Steinberger 01c1ebf803 test(cli): trim duplicate gateway process cases (#122240)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 13:25:53 -07:00
Peter Steinberger 8f4a90a518 fix(media): decode local file URLs safely (#122192)
* fix(media): decode local file URLs safely

* refactor(media): remove obsolete helper exports
2026-08-11 13:19:09 -07:00
Vincent Koc 13823c85fb refactor(agents): centralize typed activity event emission (#122188) 2026-08-12 04:16:46 +08:00
Peter Steinberger 627e83d4f7 fix(ui): effort slider matches selected level after model switches (#122125)
* fix(ui): align effort picker after model switches

Publish ordered per-model effort profiles from the Gateway and reconcile new-session effort overrides so labels, slider positions, and create payloads stay consistent.

* fix(ci): align model profile contracts
2026-08-11 13:14:11 -07:00
Peter Steinberger 32a43960c6 fix(backup): keep large file reads from false-timeout (#122235)
* fix(backup): track file read progress

* fix(backup): keep progress type internal
2026-08-11 13:09:40 -07:00
Peter Steinberger a40df57bae refactor(agent-runner): split run policy ownership (#122209)
* refactor(agent-runner): split tool-call normalization ownership

* refactor(agent-runner): split incomplete-turn ownership

* test(agent-runner): hide incomplete-turn test helper

* test(ci): route split incomplete-turn tests

* test(ci): enumerate split incomplete-turn tests

* test(vitest): route split incomplete-turn tests to their serial shard
2026-08-11 13:06:29 -07:00
Jason (Json) 09c39e0ec5 fix(scripts): keep bundled channel smoke standalone (#122212) 2026-08-11 13:05:46 -07:00
Peter Steinberger a1846dbebc feat(ui): session-reset dividers + boundary markers for DB-backed sessions (#122222)
* feat(ui): show session-reset dividers and fix boundary markers on DB-backed sessions

/reset now leaves a durable 'Session reset' divider at the transcript
boundary in the Control UI. Root-cause fix underneath: the SQLite
transcript projection only selected message events, so compaction (and
now reset) markers never reached clients for DB-backed sessions; marker
synthesis now has one owner (session-transcript-message.ts) consumed by
both storage backends across full/recent/paged/by-id/anchor reads.
Additive __openclaw marker kind 'reset' documented in clients.md.

* fix(gateway): keep history readers out of the plugin SDK barrel and fix CI gates

Direct imports for the sqlite history readers (the session-accessor barrel
is SDK-reachable via session-transcript-lock-runtime); reset marker added
to the kept-tail chat.history expectation; lint naming fixes; marker tests
split into session-transcript-readers.markers.test.ts.
2026-08-11 12:59:11 -07:00
Peter Steinberger 7eed2c3f21 feat(google): add current-turn native video input (#122074)
* feat(agents): add current-turn Gemini video handoff

* test(google): add live native video regression

* build(ai): emit provider types entrypoint

* fix(google): preserve video shedding on retry
2026-08-11 12:58:32 -07:00
Vincent Koc 01cd9cc2a8 test(browser): isolate shared fixture state (#122216)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-12 03:57:39 +08:00
Peter Steinberger 69b08c4460 test(cli): trim duplicate cold-command process cases (#122236)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 12:57:35 -07:00
Vyctor H. Brzezowski 6c485842b1 fix(ui): calm composer focus treatment (#122232) 2026-08-11 16:53:30 -03:00
Peter Steinberger 7a1d5a86c7 test(cli): replace redundant ACP process cases (#122229)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 12:40:03 -07:00
Peter Steinberger 73ae583263 refactor(tasks): simplify subagent activity tracking (#122198)
* refactor(tasks): simplify subagent activity tracking

* fix(android): single-source subagent activity expiry clock

* chore(i18n): refresh native source baseline
2026-08-11 12:30:49 -07:00
Peter Steinberger 8c567306ba fix(openai): remove duplicate GPT-5.6 picker entry (#122178)
* fix(openai): remove duplicate GPT-5.6 picker entry

* test(gateway): split OpenAI model picker coverage

* test(openai): align canonical model fixtures

* chore(plugin-sdk): refresh agent harness API baseline
2026-08-11 12:29:36 -07:00
Vyctor H. Brzezowski a1a1c791fc improve(ui): blend chat header into transcript (#122220) 2026-08-11 16:28:22 -03:00
Vincent Koc e8885eefcd fix(update): migrate plugin config before final validation (#122199)
Stage transitional plugin install-record writes without plugin-schema validation, then require fresh doctor and strict validation for every aggregate plugin change.

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-12 03:16:22 +08:00
Ayaan Zaidi 746a188c90 refactor(media): collapse attachment byte classification into media-core (#122168)
Attachment MIME gating and extraction dispatch used nine separate byte policies across five files; the allowlist could approve one MIME while dispatch observed another after a second sniff. @openclaw/media-core/attachment-classify now owns byte sniffing, text heuristics, extension mapping, and the seven attachment classes; the cache stores one classification that gates and dispatch share. Channel-declared MIME leads with the transport Content-Type as a byte-arbitrated hint, normalizeMimeType folds YAML/XML synonyms so existing configured allowlists keep matching, and input_file API callers keep declared-MIME precedence over cosmetic filenames. Net -135 production LOC.

Proof: 2,153 focused tests across media-core/media-understanding/media plus boundary-contract and deadcode-mirror suites; ClawSweeper local review clean (round 5, zero findings); live Telegram default-turn probe green.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-11 19:10:49 +00:00
Peter Steinberger 2e6c693177 fix(backup): prevent false archive stalls during active traversal (#122213)
* fix(backup): track archive producer progress

* chore(backup): leave release notes to release flow
2026-08-11 12:08:37 -07:00
Peter Steinberger b955a7b989 test(cli): remove duplicate update dry-run process cases (#122218)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 12:07:43 -07:00
Alix-007 d76f71cee7 fix(auto-reply): omit heartbeat inbound metadata (#122075)
* fix(auto-reply): omit heartbeat inbound metadata

Prevent synthetic heartbeat routes from appearing as user-role Conversation info while preserving delivery routing. Fixes #97067. Reported by @xxtyyq.

* test(auto-reply): use complete heartbeat model state

* test(qa): prove heartbeat metadata boundary

* test(auto-reply): deduplicate heartbeat metadata coverage

Co-authored-by: Alix-007 <li.long15@xydigit.com>
Punchcard-Session: frost-cedar-harbor-2n

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-12 03:02:22 +08:00
Peter Steinberger 79701dfc84 fix: speed up streamed assistant output (#122206)
* fix: speed up streamed assistant output

* fix: preserve plan stream invalidation
2026-08-11 12:01:14 -07:00
Vincent Koc 7fe75acb5f fix(compaction): recover overflow from sparse assistant history (#122159)
Prevent overflow recovery from dereferencing missing assistant usage metadata while preserving explicit unavailable and legacy CLI barriers.

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-12 02:54:01 +08:00
Josh Lehman 2f4dff7428 fix(context-engine): long sessions continue past 20k events (#122149)
* oc-5b3: canonicalize durable commitTurn

* oc-deb: remove stale commitTurn test fields
2026-08-11 11:53:11 -07:00
Peter Steinberger 9836148970 test(cli): remove redundant process composites (#122197)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 11:50:08 -07:00
Peter Steinberger 2d6a5d7356 refactor(gateway): split worker environment service by ownership (#122138)
* refactor(gateway): split worker environment service by ownership

* refactor(gateway): derive environment intent at the contract owner

* chore(lint): ratchet max-lines baseline after worker-service split

* style(gateway): prune unused symbols after worker-service split

* refactor(gateway): narrow worker-service seam exports

* chore(plugin-sdk): refresh API baseline
2026-08-11 11:48:28 -07:00
Peter Steinberger 5179e12352 fix(macos): deliver provisional notifications (#122179)
* fix(macos): accept provisional notifications

* fix(macos): return notification permission labels

* fix(macos): preserve notification inventory
2026-08-11 11:42:06 -07:00
Peter Steinberger cfd6807915 improve: remove redundant slow heartbeat admission test (#122095)
* test(infra): remove redundant heartbeat admission composite

* test(agents): format OAuth issuer cases

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 11:40:26 -07:00
Peter Steinberger 0771787da2 fix(state): repair mis-stamped v17 agent databases (#122171)
* fix(state): repair mis-stamped v17 agent databases

* refactor(state): keep lease repair helpers internal
2026-08-11 11:34:46 -07:00
Kevin Lin 2d0c30fd65 fix(slack): keep previously joined threads active beyond 24 hours (#121708)
* fix(slack): keep participated threads active beyond 24 hours

* fix(plugin-state): reject transient TTLs after durable migration

* fix(slack): keep channel entrypoint on narrow plugin API

* chore(sdk): refresh sharded durable-state API baselines

* fix(slack): preserve existing thread expiration without migration

* fix(slack): preserve hydrated legacy thread expiration

---------

Co-authored-by: kevinlin-openai <kevinlin@openai.com>
2026-08-11 11:31:07 -07:00
Vincent Koc bd6ff17d4d refactor(mcp): centralize requester runtime materialization (#122151) 2026-08-12 02:30:53 +08:00
Peter Steinberger 508265cb4f docs: add operator backups guide covering archives, snapshots, scheduling, and continuous replication (#122196) 2026-08-11 11:29:02 -07:00
Peter Steinberger 4f6a6d9819 fix(cron): record stream failures before alerts (#122187)
Ensure exhausted stream-source restarts finalize durable cron run history before the existing generic failure alert is delivered.
2026-08-11 11:27:10 -07:00
tharuntejmeta a57e8c70f5 feat(meta): add Muse Spark 1.2 models (#120373)
* feat(meta): add Muse Spark 1.2 models

* fix(meta): verify Muse Spark 1.2 catalog metadata

* fix(meta): verify Muse Spark 1.2 contracts

* docs(meta): quote discounted services terms

* fix(meta): preserve replay fields for simple completions

* test(meta): align stream host adapter types

* fix(meta): apply catalog cap for zero max tokens

* fix(meta): preserve omitted output cap

* fix(meta): scope responses stream wrapper

* fix(ai): preserve source API for stream wrappers

* fix(ai): distinguish hook and dispatch APIs

* test(ai): adapt plugin streams synchronously

* chore(plugin-sdk): refresh API baseline

* chore(plugin-sdk): refresh sharded API baseline

---------

Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-08-11 11:26:58 -07:00
Peter Steinberger d498daa26b test(core): remove duplicate stream cases (#122190) 2026-08-11 11:21:08 -07:00