Commit Graph

19174 Commits

Author SHA1 Message Date
Dallin Romney edf434b1a3 fix(qa): exercise blocked Slack lifecycle on selected account (#117805)
* fix(qa): exercise blocked Slack lifecycle on selected account

* test(qa): split Slack lifecycle catalog coverage

* qa(slack): wait for blocked lifecycle observation
2026-08-02 18:22:44 +08:00
Dallin Romney 45b74bf312 fix(qa): validate memory fallback semantics (#117815)
* fix(qa): validate memory fallback semantics

* test(qa): tie memory fallback boundary to subject

* test(qa): reject affirmative memory access claims

* test(qa): require responder-relative memory boundaries

* test(qa): scope memory boundaries to responder

* test(qa): keep memory boundary clauses local

* test(qa): assert memory fallback owner facts

* test(qa): bind memory fallback proof session
2026-08-02 18:21:46 +08:00
Dallin Romney 80a4cad56b fix(qa): assert standalone Slack commentary by identity (#117808)
* fix(qa): assert standalone Slack commentary by identity

* test(qa): satisfy Slack observation message contract

* test(qa): keep Slack final message shape distinct

* qa(slack): add deterministic commentary protocol fixture
2026-08-02 18:20:34 +08:00
Peter Steinberger 0aa262a795 fix(whatsapp): keep inbound media diagnostics safely redacted (#117939) 2026-08-02 03:16:24 -07:00
Vincent Koc bce957fe61 fix(llama-cpp): clarify local model setup 2026-08-02 18:04:30 +08:00
Burakagent d310ca3e0c fix(telegram): honor zero DM history while preserving replies (#116985)
* fix(telegram): honor zero DM history while preserving replies

* fix(telegram): apply effective DM history limit end to end

* fix(telegram): keep DM history default private

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-02 18:01:46 +08:00
Harjoth Khara 18f31f6d22 fix(media-understanding): resolve inbound media:// refs carried as attachment url (#117268)
* fix(media-understanding): resolve inbound media:// refs carried as attachment url

* fix(media-understanding): resolve stored inbound URL aliases

Co-authored-by: harjoth <harjoth.khara@gmail.com>

* test(qa): classify stored inbound media proof

* test(qa): require exact inbound media completion

* fix(media-understanding): preserve local media refs

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-02 03:01:30 -07:00
Vincent Koc 82a09e7446 fix(openai): prevent provisional realtime tool calls from running (#117923)
* commit '59fc41eeabde5a23b0f9318e29969d6fc61f6014':
  chore(openai): defer release note to release flow
  test(openai): pin reconnect terminal precedence
  fix(openai): reset fresh realtime reconnects
  test(openai): type outbound realtime items
  docs(changelog): record OpenAI realtime tool bounds
  test(openai): cover terminal tool-call ownership
  fix(openai): own terminal realtime tool calls
2026-08-02 17:58:04 +08:00
Dallin Romney 85a85515ef fix(qa): tolerate expected Matrix sync long-poll deadlines (#117807)
* qa(matrix): tolerate expected sync long-poll deadlines

* test(qa): preserve late Matrix sync failures
2026-08-02 17:56:55 +08:00
Simone 3f9b4519a9 fix: prevent fractional chunk limits from stalling text splitting (#117727)
* fix: normalize fractional text chunk limits

* fix: normalize markdown chunk limits

* fix: normalize direct newline chunk limits

* fix(matrix): reuse progress-safe text chunker

* test(matrix): align runtime API guard

* test(matrix): keep outbound shard topology stable

* fix(matrix): preserve facade chunk compatibility

* test(matrix): keep runtime export guard stable

* fix(matrix): normalize render-aware chunk limits

* test(matrix): type real-send assertions

* fix(matrix): preserve one-unit event limits

---------

Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-02 04:53:31 -05:00
guanbear a75b134231 fix(qqbot): add heartbeat-ACK liveness watchdog (#114902)
* fix(qqbot): add heartbeat-ACK liveness watchdog

The gateway sent heartbeats but never verified that op:11 ACKs arrived,
so a half-open connection (silent packet loss) stayed OPEN indefinitely
and inbound messages were lost with no status change.

Adds a counter-based watchdog: each heartbeat sent increments an
outstanding count, each op:11 resets it. When the count reaches the
missed-ACK threshold (2 unanswered sends), the socket is terminated so
handleClose -> scheduleReconnect re-establishes delivery.

ACKs are recognized synchronously in ws.on('message') before
socketMessageTail, so a slow ingress.receive() cannot mask an arrived
ACK. The raw frame is decoded/parsed once and carried as {rawData,
payload}; non-object frames are guarded to stay within the error path.

Closes #114885

* style(qqbot): oxfmt heartbeat liveness tests

* fix(qqbot): use this.ctx.log in heartbeat watchdog terminate path

handleHello has no local log binding; the overdue-ACK error log must
read this.ctx.log to match the existing GatewayConnection logging
convention and pass check-prod-types.

* chore: retrigger CI to clear stale checks
2026-08-02 02:52:45 -07:00
Shakker c60887bd73 fix: refresh Buzz room targets after reconnect (#117927) 2026-08-02 10:30:32 +01:00
Shakker 6129fbf784 fix: invalidate removed Buzz mention members 2026-08-02 10:30:32 +01:00
Shakker c2d6ecee3c fix: align Buzz explicit mention semantics 2026-08-02 10:30:32 +01:00
Shakker 1b8c99fa4e test: split Buzz mention delivery coverage 2026-08-02 10:30:32 +01:00
Shakker ea099cfdf7 fix: preserve Buzz reply session threads 2026-08-02 10:30:32 +01:00
Shakker 3de2a752f5 refactor: keep Buzz mention helpers internal 2026-08-02 10:30:32 +01:00
Shakker d4490c6a9d fix: invalidate stale Buzz room targets 2026-08-02 10:30:32 +01:00
Shakker f4e332a72e fix: tighten Buzz mention disambiguation 2026-08-02 10:30:32 +01:00
Shakker 6d7e371b0e perf: keep Buzz plain sends on the fast path 2026-08-02 10:30:32 +01:00
Shakker fe6960342f fix: reject unresolved Buzz mention text 2026-08-02 10:30:32 +01:00
Shakker 4c6e1f0d4c fix: resolve non-ASCII Buzz member mentions 2026-08-02 10:30:32 +01:00
Shakker c8d5d8ea34 fix: satisfy strict Buzz mention resolution 2026-08-02 10:30:32 +01:00
Shakker 0ee44d551a feat: guide Buzz room targeting and mentions 2026-08-02 10:30:32 +01:00
Shakker 12b924c4d0 test: cover Buzz mention boundaries 2026-08-02 10:30:32 +01:00
Shakker 09bdcf3eb1 fix: resolve Buzz mentions on reply delivery 2026-08-02 10:30:32 +01:00
Shakker 8fb9dcd54e feat: emit native Buzz mention tags 2026-08-02 10:30:32 +01:00
Shakker c4d355133f feat: resolve Buzz room member mentions 2026-08-02 10:30:31 +01:00
Vincent Koc 0f2864f86d test(openai): pin reconnect terminal precedence 2026-08-02 17:25:01 +08:00
Dallin Romney af77477a2a fix(qa): generated-image evidence waits despite successful delivery (#117799)
* fix(qa): observe generated images from outbound media

* fix(qa): preserve generated image producer evidence
2026-08-02 17:24:35 +08:00
Vincent Koc 3ba1f31c55 fix(openai): reset fresh realtime reconnects 2026-08-02 17:24:12 +08:00
Dallin Romney 652b0b96e2 qa: deduplicate producer and fallback evidence (#117806) 2026-08-02 17:20:32 +08:00
Vincent Koc 4fc66dc3a0 test(openai): type outbound realtime items 2026-08-02 17:18:28 +08:00
clawsweeper[bot] c8688051ed fix(whatsapp): log terminal inbound media failures (#117717)
* fix(whatsapp): log terminal inbound media failures

* fix(whatsapp): log terminal inbound media failures

* fix(whatsapp): surface media enrichment failures

* test(whatsapp): preserve caught media errors

---------

Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-02 17:13:16 +08:00
Vincent Koc 0ae79d580c merge: refresh OpenAI realtime tool ownership
* origin/main:
  refactor(whatsapp): split inbox lifecycle coverage (#117910)
2026-08-02 17:12:05 +08:00
Peter Steinberger d6aafb3dfc refactor(whatsapp): split inbox lifecycle coverage (#117910)
* test(whatsapp): split inbox lifecycle coverage

* test(whatsapp): import metadata cache type
2026-08-02 02:09:47 -07:00
Vincent Koc 1a7f981c9b merge: refresh OpenAI realtime tool ownership
* origin/main:
  fix: stop lost cancellations, false success, and stuck Codex compaction (#117902)
  fix(cli): reject incomplete hosted video downloads (#117893)
  refactor(board): remove duplicate in-memory store (#117353)
  refactor: consolidate Teams and error helpers (#117907)
  fix(msteams): cancel unread Graph error response bodies (#117664)
  fix(imessage): rewind the recovery cursor when chat.db is replaced at the same path (#117788)
  feat(browser): relay CDP compat for Puppeteer clients (chrome-devtools-mcp) (#117915)
2026-08-02 17:05:19 +08:00
Vincent Koc a90a688ca5 test(openai): cover terminal tool-call ownership
Co-authored-by: Peter Steinberger <steipete@users.noreply.github.com>
2026-08-02 17:05:14 +08:00
Vincent Koc 66afa21fcf fix(openai): own terminal realtime tool calls
Co-authored-by: Peter Steinberger <steipete@users.noreply.github.com>
2026-08-02 17:05:13 +08:00
Peter Steinberger 0138f5b5e3 fix: stop lost cancellations, false success, and stuck Codex compaction (#117902)
* fix(inference): preserve cancellation, lifecycle, and Codex completion ownership

* test(qa): settle visible replies on the active channel transport
2026-08-02 02:03:57 -07:00
Peter Steinberger a154b4faea refactor: consolidate Teams and error helpers (#117907) 2026-08-02 02:02:17 -07:00
zengLingbiao 83c6a51b0e fix(msteams): cancel unread Graph error response bodies (#117664)
* fix(msteams): cancel unread Graph error response bodies

* fix(msteams): release every guarded Graph response safely

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-02 17:01:30 +08:00
Yuval Dinodia 86c3486721 fix(imessage): rewind the recovery cursor when chat.db is replaced at the same path (#117788)
* fix(imessage): rewind the recovery cursor when chat.db is replaced at the same path

A restored, rebuilt, or symlink-retargeted chat.db keeps the configured
pathname, so it keeps the same recovery-cursor identity while its rowid
sequence restarts far below the persisted high-water. Startup then seeded
since_rowid with the stale value and imsg, which emits only rows above it,
suppressed every inbound message in the replacement database, including
messages arriving after the restart.

loadIMessageRecoveryCursor now takes the startup watermark and reconciles
the stored cursor against it. A cursor above the database's current
MAX(ROWID) cannot belong to the file now at that path, so the persisted
high-water rewinds to the new watermark and the monitor tails the
replacement database instead of skipping it.

* fix(imessage): rewind the recovery cursor for an empty rebuilt chat.db

A successful MAX(ROWID) on an empty message table yields null, the same value the watermark read returns for an unreadable database, so an empty rebuilt chat.db kept the stale high-water and suppressed its first rows. Return 0 for a readable empty table and keep null for an unavailable one.

* fix(imessage): preserve first row during empty database startup

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-02 17:00:01 +08:00
Peter Steinberger f599ff520d feat(browser): relay CDP compat for Puppeteer clients (chrome-devtools-mcp) (#117915)
* feat(browser): relay CDP compat for Puppeteer clients

Answer Target.getBrowserContexts with the always-empty context list so
puppeteer.connect() (chrome-devtools-mcp) can drive the paired Chrome
through the extension relay without the remote-debugging prompt. Serve
DevTools-style /json/list descriptors (id + type), which also makes the
HTTP tab-list fallback see extension-profile tabs, and add
`openclaw browser extension cdp` to print the relay endpoint and auth
header for external CDP clients.

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

* fix(browser): avoid map-spread in relay target descriptors

oxc(no-map-spread): build the /json/list descriptor object explicitly
instead of spreading RelayTabInfo inside map().

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

---------

Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-02 01:59:44 -07:00
Vincent Koc fcaa9d4842 Merge pull request #117896 from openclaw/fix/google-realtime-tool-ownership-20260802 2026-08-02 16:40:44 +08:00
Peter Steinberger f5c985d92c fix(memory): remove interrupted Dreaming sessions after Gateway restart (#117885)
* fix(memory): clean interrupted Dreaming sessions after Gateway restart

* test(sessions): preserve historical timestamps in lifecycle fixtures

* test(plugins): remove duplicate registry handle mock from main

* style(sessions): format lifecycle conformance assertion
2026-08-02 01:17:31 -07:00
Vincent Koc 5be95ad4ba fix(google): bound native realtime tool ownership 2026-08-02 15:59:47 +08:00
Vincent Koc b620caabcb Merge pull request #117490 from codex/qa402-google-live-session-activation-deadline
fix(google): honor Gemini Live new-session activation deadlines
2026-08-02 15:50:02 +08:00
Peter Steinberger 1e9a620a28 refactor(gateway): remove deferred channel load flag; 503 plugin routes until runtime ready (#117852)
* refactor(gateway): remove deferred channel load flag; 503 plugin routes until runtime ready

* test(agents): make setup middleware load intent explicit

* test(gateway): pin webhook startup routing outside SPA
2026-08-02 00:36:21 -07:00
Peter Steinberger ac28f4d558 fix: release channel delivery resources reliably (#117855)
* fix(channels): consolidate delivery lifecycle ownership

* test(msteams): match release mock contract

* test(plugin-sdk): satisfy promise executor lint

* chore(plugin-sdk): regenerate API baseline for delivery-correlation + fetch-runtime exports
2026-08-02 00:24:47 -07:00