Commit Graph

19174 Commits

Author SHA1 Message Date
Peter Steinberger 0e1304d0de fix(llama-cpp): recover plaintext tool calls (#116736)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 02:45:32 -07:00
Peter Steinberger 1f578f0e65 fix(telegram): validate native queue arguments before fallback (#116726)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 02:45:15 -07:00
zw-xysk d2b869eda7 fix(ollama): models advertise tools when /api/show fails (#109971)
* fix(ollama): do not advertise tools when /api/show fails

Failed show responses left capabilities undefined, which
buildOllamaModelDefinition treats as optimistic supportsTools.
Match setup inspect: return empty capabilities instead.

* test(ollama): cover show-fail tools gate including L3 live HTTP

Unit paths for HTTP error/throw plus real 127.0.0.1 server proving
buildOllamaProvider keeps supportsTools false when /api/show 500s.

* fix(ollama): keep reasoning heuristics when /api/show fails

Distinguish failed inspection from authoritative empty capabilities
so tools stay conservative without suppressing model-name reasoning.

* test(ollama): cover three capability states for tools and reasoning

Failed show keeps reasoning heuristics; authoritative [] disables both.

* fix(ollama): propagate showInspectionFailed through setup configs

Setup inspection failures now use the three-state marker instead of
authoritative empty capabilities, keeping tools off and reasoning heuristics.

* test(ollama): setup show-fail keeps tools off and reasoning heuristics

Cover interactive setup when /api/show returns 500 for deepseek-r1.

* fix(ollama): propagate showInspectionFailed through dynamic model resolve

/models add dynamic path now builds failed-show definitions with tools
off while preserving reasoning name heuristics.

* test(ollama): dynamic resolve covers failed /api/show three-state behavior

Mock builder matches production tools/reasoning contract for inspection failure.

* fix(ollama): keep catalog-missing dynamic resolve fail-closed on show failure

Failed /api/show is an existence probe for unresolved models; return undefined so typos/404s stay rejected. Tag-discovered and setup paths keep showInspectionFailed tools-off behavior.

* chore(changelog): remove release-owned entry

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-31 17:37:48 +08:00
NIO 89bfd2150c fix(ollama): use CJK-aware char estimate for usage fallback (#110073)
* fix(ollama): use CJK-aware char estimate for usage fallback

* fix(ollama): keep CJK estimator plugin-private

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-31 17:37:13 +08:00
dwc1997 2c4886ec40 fix(ollama): release failed setup response bodies before returning (#111802)
* fix(ollama): release failed setup response bodies before returning

* chore(changelog): remove release-owned entry

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-31 17:32:36 +08:00
Vincent Koc a550827dad feat(plugins): externalize Synthetic provider (#116720) 2026-07-31 17:19:43 +08:00
Peter Steinberger f03dc9785e fix(telegram): keep typing alive during active steered tasks (#116721) 2026-07-31 02:14:19 -07:00
Vincent Koc 07a352ac95 fix(openai): narrow idle lifecycle cancellation 2026-07-31 17:10:40 +08:00
Peter Steinberger a5c8c5b3ec fix(googlechat): record canonical receipt thread (#116717)
* fix(googlechat): preserve receipt thread identity

* test(googlechat): prove receipt thread mirroring
2026-07-31 02:07:34 -07:00
Vincent Koc c5e9635b63 Merge pull request #116701 from openclaw/fix/voice-forced-consult-teardown
fix(voice-call): prevent late forced consults after teardown

* refs/remotes/origin/pr/116701:
  fix(voice-call): cancel consults on bridge replacement
  fix(voice-call): recheck consult owner after await
  fix(voice-call): cancel pending replacement consults
  fix(voice-call): isolate replacement consult handoff
  test(voice-call): cover late forced consult teardown
  fix(voice-call): cancel forced consults on teardown
2026-07-31 17:00:11 +08:00
Vincent Koc 255bb69a0e Merge pull request #116603 from synthalorian/fix/issue-116525
fix(openai): restrict GPT-Live broker cleanup to plugin disable only

* refs/remotes/origin/pr/116603:
  fix(edit): restore UTF-16 difference offsets
  fix(openai): share GPT-Live browser broker ownership
  fix(edit): prefer-for-of loop in firstDifferenceIndex
  fix(openai): return undefined from cleanup on non-disable reasons
  fix(openai): restrict GPT-Live broker cleanup to plugin disable only
2026-07-31 16:55:13 +08:00
Vincent Koc 20e68e01df fix(gateway): sign device proofs with challenge time (#116679) 2026-07-31 16:45:53 +08:00
Vincent Koc 337a2b3fc7 fix(openai): discard preconnect audio on close 2026-07-31 16:42:54 +08:00
Vincent Koc 42f1e8dd41 fix(openai): terminalize preconnect lifecycle 2026-07-31 16:42:25 +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
Yuval Dinodia 623a015928 fix(memory-wiki): preserve user edits when rolling back ChatGPT imports (#116517)
* fix(memory-wiki): preserve user edits when rolling back ChatGPT imports

Rollback deleted created pages and overwrote updated pages unconditionally,
destroying content the user added after the import with no recovery copy.
Import runs now record a content hash of each written page after vault
compile, and rollback preserves any page whose current content no longer
matches into the run's recovered directory before deleting or restoring.
Legacy run records without hashes preserve unconditionally.

Fixes #116457

* fix(memory-wiki): move pages aside atomically during rollback

Rollback now renames the live page into the recovery location before
inspecting it, so a concurrent external save cannot land between the
content read and the delete or snapshot restore. Matching pages drop
the moved copy; mismatching pages keep it as the recovery file.

* fix(memory-wiki): make rollback snapshot restore collision-safe

The snapshot restore wrote directly to the page path after the
move-aside, so a page recreated by an editor in that window was
overwritten with no recovery copy. Restore now creates the snapshot
exclusively and on collision moves the recreated page aside and
retries; recovery filenames are uniqued so a second move-aside cannot
clobber an earlier preserved copy.

* fix(memory-wiki): record rollback hashes at write time

* fix(memory-wiki): make ChatGPT rollback retry-safe

* fix(memory-wiki): fence ChatGPT rollback phases

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-31 08:01:52 +00:00
Vincent Koc c30322418e fix(openai): share GPT-Live browser broker ownership 2026-07-31 16:00:31 +08:00
Vincent Koc 038142d970 fix(sandbox): expose Podman posture and mounts 2026-07-31 15:56:45 +08:00
Vincent Koc 1629cbe560 fix(voice-call): cancel consults on bridge replacement 2026-07-31 15:47:17 +08:00
Vincent Koc 37b1a71654 fix(release): unblock beta validation workflows (#116708)
* fix(release): repair beta validation workflow state

* fix(qa): dispatch yielded fanout runs without task tracking

* fix(test): honor GPT-Live shard opt-in
2026-07-31 15:47:11 +08:00
Vincent Koc 31475b8ca3 fix(voice-call): recheck consult owner after await 2026-07-31 15:43:47 +08:00
Vincent Koc 5e46595331 fix(voice-call): cancel pending replacement consults 2026-07-31 15:43:47 +08:00
Vincent Koc ee4a19e8ac fix(voice-call): isolate replacement consult handoff 2026-07-31 15:43:47 +08:00
Vincent Koc c7b805c14f test(voice-call): cover late forced consult teardown 2026-07-31 15:43:47 +08:00
Vincent Koc 781c3c1ce7 fix(voice-call): cancel forced consults on teardown 2026-07-31 15:43:47 +08:00
Yuval Dinodia 589a914328 fix(session): preserve reset message payloads (#116195)
* fix(session): preserve reset message payloads

Use the raw command body when it directly matches a reset trigger so code, logs, bracketed text, and line breaks reach the new session intact. Keep structural normalization only for prefixed messages that require it to match.

* fix(session): anchor reset payloads to original input

* fix(session): anchor reset parsing to inbound projections

* fix(session): keep reset result type internal

* test(qa): prove reset payload preservation

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-31 15:34:23 +08:00
Dallin Romney a8df6e49a7 fix(qa): tolerate loaded-runner bus delivery stalls (#116448) 2026-07-31 15:20:14 +08:00
Peter Steinberger ba756a23ad fix(browser): return committed trace path (#116702) 2026-07-31 00:01:39 -07:00
Dallin Romney 126933ba73 fix(qa): exceed Slack table aggregate limit in fallback probe (#116447) 2026-07-31 14:56:20 +08:00
Dallin Romney fa5ee0798b fix(qa): use built plugin tools server (#116442) 2026-07-31 14:49:24 +08:00
Ayaan Zaidi c2c4f0b6b7 fix(telegram): keep queued tool progress in one message (#116685)
* fix(telegram): keep queued tool progress in one message

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-07-31 15:40:21 +09:00
Dallin Romney 397fe272a0 fix(qa): stop waiting on yielded fanout runs (#116440)
* fix(qa): observe resumed fanout completions

* test(qa): keep runtime watchdog assertions in runtime suite
2026-07-31 14:36:59 +08:00
Dallin Romney b13b3d9a0f fix(qa): bound gateway log cleanup (#116431) 2026-07-31 14:23:36 +08:00
Dallin Romney 5c061507d3 fix(qa): align Slack progress scenarios with fresh finals (#116445)
* fix(qa): verify Slack progress drafts against fresh finals

* fix(qa): narrow Slack progress message identity
2026-07-31 14:22:24 +08:00
Dallin Romney 142e745372 fix(qa): avoid classifying fetched prose as tool failure (#116444)
* fix(qa): avoid classifying fetched prose as tool failure

* test(qa): keep tool result regression concise
2026-07-31 14:21:57 +08:00
Dallin Romney 2857eaa0f5 fix(qa): reset Matrix scenario streaming state (#116454) 2026-07-31 14:19:58 +08:00
Vincent Koc fa4cc51a87 feat(plugins): externalize Teams and Zoom meetings (#116682) 2026-07-31 14:10:46 +08:00
Vincent Koc bc63c66988 fix(qa): keep Anthropic parity scenarios working in Code Mode
Route hidden QA capabilities through Code Mode and wait for fanout workers to settle before synthesis.
2026-07-31 13:53:34 +08:00
Josh Lehman 2bc694614f fix(telegram): make Codex login codes copyable (#116608) 2026-07-30 22:51:00 -07:00
Vincent Koc c892a712e6 feat(plugins): externalize Cohere and Meta providers (#116662)
* feat(plugins): externalize Cohere and Meta providers

* docs(changelog): note provider externalization

* chore: keep changelog release-owned
2026-07-31 12:53:01 +08:00
synthclaw 2f93db39eb fix(openai): return undefined from cleanup on non-disable reasons
Fixes TS7030: Not all code paths return a value.
2026-07-31 00:31:30 -04:00
Vincent Koc 80ea12b48d test(extensions): move live audio checks out of unit suites (#116651) 2026-07-31 12:15:03 +08:00
Vincent Koc aa4bba1b96 test(xai): mark terminal tool results fire-and-forget 2026-07-31 12:14:08 +08:00
Vincent Koc 1df8f28b88 fix(xai): reset resumable state on terminal close 2026-07-31 12:14:08 +08:00
Vincent Koc a37d15b4e5 fix(xai): reject oversized audio before copying 2026-07-31 12:14:08 +08:00
Vincent Koc 86c49703a6 fix(xai): copy queued realtime audio views 2026-07-31 12:14:08 +08:00
Vincent Koc dd5fd06a4d fix(xai): bound realtime terminal queues 2026-07-31 12:14:08 +08:00
Vincent Koc 1bd014fbd7 test(xai): cover realtime terminal queue bounds 2026-07-31 12:14:08 +08:00
Patrick Erichsen 5e10af048d fix(slack): explain allowlist-denied mentions (#116618)
* fix(slack): explain allowlist-denied mentions

* fix(slack): deduplicate denial notices
2026-07-30 21:11:06 -07:00