Commit Graph

655 Commits

Author SHA1 Message Date
Peter Steinberger 990fdcf6fd fix(providers): recognize configured media credentials across provider boundaries (#118761)
* fix(providers): honor configured media credentials across owner boundaries

* test(providers): align configured auth fixtures and derived SDK surfaces

* fix(providers): enforce shared DashScope media credential policy
2026-08-03 13:26:31 -07:00
Peter Steinberger 8eaf917efb fix(google): honor Cloud SDK credential location and Vertex billing project (#118745) 2026-08-03 10:47:13 -07:00
Peter Steinberger 8df0142771 fix(google): retry stalled Gemini response bodies (#118511)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-02 23:20:28 -07:00
Vincent Koc 9e81a9b51c fix(google): restore image generation with blank base URL (#116852)
* fix(google): handle empty image generation base URL

* fix(google): preserve attribution for blank base URL

* test(google): cover blank media base URLs

* fix(google): normalize blank Gemini API URLs

---------

Co-authored-by: Ted Li <tl2493@columbia.edu>
2026-08-03 12:18:16 +08:00
Vincent Koc 2844876be3 fix(google): align unsupported CLI auth paths (#118034) 2026-08-03 00:13:19 +08: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 131b9e3904 refactor(voice): share realtime session lifecycle (#117865)
* refactor(voice): share realtime session lifecycle

* test(voice): normalize abort rejection
2026-08-01 23:35:57 -07:00
Vincent Koc ee6302161a fix(google): keep realtime queue policy internal 2026-08-02 05:54:34 +08:00
Vincent Koc 30f8fbc67a perf(google): avoid copying rejected realtime audio 2026-08-02 05:27:36 +08:00
Vincent Koc 1ae9b1cfc5 test(google): preserve queued audio across fresh reconnect 2026-08-02 05:27:36 +08:00
Vincent Koc 213c05182f refactor(google): centralize realtime audio queue bounds 2026-08-02 05:27:36 +08:00
Vincent Koc 24e6354ec2 fix(google): preserve realtime startup audio order 2026-08-02 05:27:36 +08:00
Vincent Koc aab146eeec fix(google): bound lazy realtime audio queue 2026-08-02 05:27:36 +08:00
Vincent Koc 53d227970e fix(google): bound native realtime audio queue 2026-08-02 05:27:36 +08:00
Vincent Koc cdf4c4ce7a merge: refresh realtime continuity onto main
* origin/main: (53 commits)
  fix(whatsapp): normalize future-proof QA poll and video note ingress (#117579)
  fix(perf): separate warm and first-device health probes (#117525)
  fix(ci): repair plugin prerelease validation (#117562)
  fix(tasks): sanitize every human task and flow detail (#117568)
  fix(feishu): cancel unread streaming-card error bodies before release (#117312)
  fix(status): honor explicit local RPC fallback timeouts (#117519)
  fix(tasks): validate notification policy before persistence (#117554)
  refactor: consolidate full release child workflows (#117385)
  refactor(policy): centralize doctor health-check descriptors (#117578)
  perf(gateway): mark recovery before model preparation (#117544)
  test(openai): parse realtime websocket frames safely
  fix(openai): keep embedding identity stable across upgrades (#117557)
  fix(googlechat): drop invalid thread resource names before send (#108324)
  fix(skills): preserve profile in ClawHub command hints (#117555)
  fix(cli): explain filtered plugin policy without unsafe recovery (#117556)
  fix(irc): strip markdown from outbound text (#112961)
  refactor(plugins): consolidate registry snapshots (#117561)
  test(ui): cover reentrant Talk meter cleanup
  fix(plugins): fail blocked enable commands (#117536)
  fix(ui): reclaim reentrant Talk audio meters
  ...
2026-08-02 03:32:45 +08:00
Vincent Koc 81abcdeba4 fix(google): reset continuity before reconnect backoff 2026-08-02 02:32:20 +08:00
Vincent Koc d53772e984 fix(google): signal fresh realtime sessions 2026-08-02 01:29:18 +08:00
Vincent Koc d60584ee2d test(google): cover ready callback close precedence 2026-08-02 01:25:41 +08:00
Vincent Koc 814a2ebb61 fix(google): flush lazy prompts on provider readiness 2026-08-02 01:22:33 +08:00
Vincent Koc a38dc473dc fix(google): make continuity reset generation-idempotent 2026-08-02 01:06:14 +08:00
Vincent Koc 3a8afb2a71 Merge origin/main into fix/google-realtime-lazy-queue-bounds-20260801
* origin/main: (44 commits)
  fix(plugins): compare authoring metadata by canonical JSON semantics (#117486)
  fix(doctor): reject contradictory lint check selectors (#117495)
  fix(anthropic): honor configured model pricing (#117275)
  refactor(plugins): reuse scoped loader for capability discovery (#117373)
  refactor(test): derive changed tooling routes (#117407)
  fix(kova): clarify extension memory attribution (#117500)
  fix(imessage): sanitize private context on every outbound path (#117501)
  fix(ci): align release validation fixtures (#117494)
  fix(talk): preserve owner authorization in realtime consults (#114163)
  fix(ui): surface aborted-run diagnostics (#117497)
  perf(models): skip Ollama row runtime loading (#117465)
  fix(cli): report user profile command outcomes (#117466)
  fix(active-memory): detect Chinese recall intent in escalate mode (#117338) (#117419)
  fix(workboard): ignore caller-supplied archivedAt when creating a card (#116412)
  fix(models): avoid waiting on promotions before listing models (#117322)
  refactor(plugins): inherit shared package boundary settings (#117474)
  fix(systemd): parse all inline environment assignments (#117484)
  feat(web-fetch): add tools.web.fetch.headers for operator request headers (#115545)
  fix(qa): Slack progress lane misses successful delivery (#117391)
  refactor: deduplicate Codex prompt snapshot fixtures (#117476)
  ...
2026-08-02 01:02:06 +08:00
Vincent Koc 4f2429a817 merge: refresh realtime continuity onto main
* origin/main: (41 commits)
  fix(plugins): compare authoring metadata by canonical JSON semantics (#117486)
  fix(doctor): reject contradictory lint check selectors (#117495)
  fix(anthropic): honor configured model pricing (#117275)
  refactor(plugins): reuse scoped loader for capability discovery (#117373)
  refactor(test): derive changed tooling routes (#117407)
  fix(kova): clarify extension memory attribution (#117500)
  fix(imessage): sanitize private context on every outbound path (#117501)
  fix(ci): align release validation fixtures (#117494)
  fix(talk): preserve owner authorization in realtime consults (#114163)
  fix(ui): surface aborted-run diagnostics (#117497)
  perf(models): skip Ollama row runtime loading (#117465)
  fix(cli): report user profile command outcomes (#117466)
  fix(active-memory): detect Chinese recall intent in escalate mode (#117338) (#117419)
  fix(workboard): ignore caller-supplied archivedAt when creating a card (#116412)
  fix(models): avoid waiting on promotions before listing models (#117322)
  refactor(plugins): inherit shared package boundary settings (#117474)
  fix(systemd): parse all inline environment assignments (#117484)
  feat(web-fetch): add tools.web.fetch.headers for operator request headers (#115545)
  fix(qa): Slack progress lane misses successful delivery (#117391)
  refactor: deduplicate Codex prompt snapshot fixtures (#117476)
  ...
2026-08-02 01:00:52 +08:00
Vincent Koc 877843422e fix(google): avoid dropping first realtime voice input (#117450)
* commit '2ccb11ac28daea1939e6666c1a0a3d346159d9fe':
  test(google): satisfy realtime live lint
  test(google): wait for realtime response drain
  test(google): diagnose realtime live readiness
  test(google): prove realtime ready owns live session
  test(google): cover realtime setup activation ordering
  fix(google): gate realtime readiness on session ownership
2026-08-02 00:59:02 +08:00
Vincent Koc 9cb647e735 test(google): prove lazy realtime prompt delivery 2026-08-02 00:15:41 +08:00
Peter Steinberger 568ea29d2e refactor(plugins): inherit shared package boundary settings (#117474) 2026-08-01 09:11:09 -07:00
Jesse Merhi d3f4530ce8 feat(google): allow operator headers on Gemini web search (#115549)
* feat(google): support Gemini web search headers

* fix(google): validate Gemini search headers

* docs(changelog): credit Gemini headers

* test(secrets): route config contracts through collector

* chore: remove release-owned changelog entry

* test(google): cover resolved search headers
2026-08-02 01:41:09 +10:00
Peter Steinberger 4b1d397221 fix(google): bound realtime browser activation expiry 2026-08-01 08:37:22 -07:00
Vincent Koc 9789093c26 fix(google): signal fresh realtime continuity 2026-08-01 23:08:57 +08:00
Vincent Koc 85d959ee61 test(google): satisfy realtime live lint 2026-08-01 22:58:29 +08:00
Vincent Koc b1a0ee8539 test(google): wait for realtime response drain 2026-08-01 22:51:35 +08:00
Vincent Koc b2320c84ee fix(google): bound lazy realtime user messages 2026-08-01 22:47:12 +08:00
Vincent Koc 6f3f662a86 test(google): diagnose realtime live readiness 2026-08-01 22:46:14 +08:00
Vincent Koc 11d53bebfe test(google): prove realtime ready owns live session 2026-08-01 22:36:06 +08:00
Vincent Koc 9ba8ffad5d test(google): cover realtime setup activation ordering 2026-08-01 22:33:02 +08:00
Vincent Koc ee61f725f1 fix(google): gate realtime readiness on session ownership 2026-08-01 22:33:02 +08:00
Peter Steinberger 693ed336df fix(google): invalidate unsafe realtime session resume tokens 2026-08-01 03:56:33 -07:00
Vincent Koc fcc20d14a3 fix(google): stop scraping Gemini CLI OAuth credentials (#117167)
* fix(google): delegate Gemini OAuth refresh to the CLI

* refactor(google): remove retired Gemini OAuth stack

* chore(ci): prune retired Google OAuth baseline

* fix(google): retire Gemini CLI usage telemetry

* fix(google): remove retired usage token parser
2026-08-01 11:36:24 +08:00
Vincent Koc 541593dcb4 merge: refresh google live transcript bound onto main
* commit '7e78de747b8a64d52f30aee948b697bf4c528691': (359 commits)
  refactor(ui): replace duplicated locale bundles with canonical translation memory (#117157)
  fix(ui): retire stale Gateway event-log observers (#117169)
  fix(agents): keep subagent status consistent after restart and large fan-outs (#117141)
  refactor(ui): unify filtered session list ownership (#117158)
  refactor(agents): consolidate context budgets and compaction recovery (#117149)
  fix(net-policy): redact sig and x-* auth params in URLs and bodies (#116957)
  refactor(agents): remove duplicate generated-media delivery fallbacks (#117150)
  refactor(reply): unify turn lifecycle state ownership (#117145)
  fix(ui): preserve emoji agent avatar initials (#104912)
  refactor(auto-reply): unify command and directive ownership (#117143)
  refactor(plugins): consolidate descriptor and startup ownership (#117146)
  fix(messages): reply actions leak citation markers and reply/poll answers draw the no-reply fallback (#116909)
  fix(slack): let durable ingress retry transient thread lookups (#117135)
  refactor(doctor): consolidate shipped state migration ownership (#117142)
  fix(ai): Codex stream shows internal parser text on a malformed frame (#116966)
  fix: guard every migrated session accessor path (#117140)
  fix(terminal): measure unicode display width consistently (#117062)
  fix(openai): clear ChatGPT SSE fallback per session (#117123)
  fix(mistral): reject incomplete streamed tool terminals (#117137)
  fix(ai): preserve structured chat content and refusals (#117136)
  ...
2026-08-01 10:45:53 +08:00
Peter Steinberger 3cadc08593 fix(google): restore canonical Gemini and Vertex provider invariants (#117042)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 14:31:34 -07:00
Peter Steinberger d2047364a8 fix(google): preserve streamed termination and usage facts (#116822)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 05:29:40 -07:00
Vincent Koc c163f5272a merge: refresh google live transcript bound onto main
* origin/main: (52 commits)
  fix(setup): isolate failed channel probes and report doctor diagnostics (#116824)
  fix(telegram): preserve edit previews, message cache, and group history (#116818)
  fix(whatsapp): preserve interactive replies and normalize media MIME (#116816)
  fix(file-transfer): keep fetched media attachable in sandboxed replies (#116400)
  fix(browser): preserve doctor JSON failure status (#116811)
  fix(ollama): stream native tool call lifecycle (#116809)
  fix(matrix): preserve message-tool room thread routing (#116802)
  fix(ui): restore mobile navigation and accessible usage filters (#116751)
  fix(ui): coalesce profile identity refresh (#116764)
  fix(ui): preserve chat attachments and run ownership (#116752)
  fix(plugins): clean up partial service startup once (#116804)
  fix(qa-channel): enforce message and thread lifecycle ownership (#116801)
  fix(qa-lab): support groups and isolate thread timelines (#116803)
  feat(plugins): externalize Voyage embeddings (#116785)
  fix(outbound): strip echoed inbound metadata before delivery (#50520)
  fix(anthropic-vertex): correct multi-region endpoints (#116757)
  fix(ui): scope agent cron jobs and surface model catalog failures (#116771)
  fix(ui): preserve scoped session state across updates (#116772)
  fix(build): fail closed on symlinked build output roots (#116705)
  fix(commands): validate native settings and preserve Telegram ingress outcomes (#116773)
  ...
2026-07-31 20:20:01 +08:00
Peter Steinberger 0d40cfbb53 fix(google): surface blocked Gemini prompts (#116756)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 04:29:06 -07:00
Vincent Koc 74918607d1 test(google): cover live transcript overflow 2026-07-31 18:20:45 +08:00
Vincent Koc 4f65b7e8fe fix(google): bound live transcript accumulation 2026-07-31 18:20:45 +08:00
Vincent Koc 0ce230c861 test(google): cover expired CLI OAuth compatibility 2026-07-31 16:40:38 +08:00
Vincent Koc 091bc7f9ed Merge remote-tracking branch 'origin/main' into experiment/google-cli-supported-paths
* origin/main: (115 commits)
  test: type session request parameters (#116713)
  fix: retain event invalidation for pagination
  docs: note queued session refresh fix
  fix: preserve queued session refresh options
  fix(exec): require approval for abbreviated inline eval flags [AI] (#116529)
  fix: keep owner-only tools out of non-owner skill commands [AI] (#116532)
  fix(tui): require a fresh agent roster (#116715)
  fix(memory-wiki): preserve user edits when rolling back ChatGPT imports (#116517)
  fix(agents): cron failures preserve timeout and cancellation reasons (#116566)
  fix(release): unblock beta validation workflows (#116708)
  fix(ci): discover frozen target startup benchmark cases (#116711)
  fix(session): preserve reset message payloads (#116195)
  fix(qa): tolerate loaded-runner bus delivery stalls (#116448)
  improve(ci): rebalance embedded agent test configs (#116436)
  fix(browser): return committed trace path (#116702)
  fix(qa): exceed Slack table aggregate limit in fallback probe (#116447)
  fix(qa): use built plugin tools server (#116442)
  fix(test): keep memory FD repro config valid (#116698)
  fix(telegram): keep queued tool progress in one message (#116685)
  fix(qa): stop waiting on yielded fanout runs (#116440)
  ...

# Conflicts:
#	src/system-agent/setup-inference-detect.ts
#	ui/src/e2e/model-setup.e2e.test.ts
2026-07-31 16:40:33 +08:00
Vincent Koc 326a4831cc test(google): cover realtime connection ownership 2026-07-31 11:47:59 +08:00
Vincent Koc cc62f37d6e fix(google): own realtime connection attempts 2026-07-31 11:47:59 +08:00
Vincent Koc 9e965073e5 Merge remote-tracking branch 'origin/main' into experiment/google-cli-supported-paths
* origin/main: (168 commits)
  fix(plugins): keep registry sqlite root consistent (#116427)
  fix(cli): keep Gateway auth failures parseable in JSON (#116597)
  fix(trajectory): preserve prompts in oversized events (#116220)
  test(buzz): add live QA Lab channel lane (#116298)
  chore(i18n): refresh native locales (#116567)
  feat: add OpenClaw TUI prototype skill (#116583)
  fix(update): accept concrete versions selected by ranges (#116585)
  fix(agents): preserve locked session model routes
  test(qa-lab): preserve Matrix fault proxy identity
  fix(ci): extend OpenAI live profile setup budget (#116580)
  fix: prevent configured models from stalling startup (#116553)
  fix(cli): close MCP listener after one-shot commands
  fix(auto-reply): keep explicit NO_REPLY silent (#116548)
  test(discord): cover deferred backpressure terminals
  fix(discord): cancel backpressured realtime playback
  test(discord): cover realtime output backpressure
  fix(codex): add remote WebSocket heartbeat and reconnect (#116135)
  fix(macos): wait for the current reconnect snapshot (#116550)
  fix(outbound): recognize current-source message-tool sends (#116560)
  fix(voice-call): type cancelled consult outcomes
  ...

# Conflicts:
#	extensions/google/setup-api.test.ts
#	ui/src/e2e/model-setup.e2e.test.ts
2026-07-31 09:30:03 +08:00