Commit Graph

62700 Commits

Author SHA1 Message Date
pick-cat eb5fb2aa69 fix(microsoft-foundry): bound connection test error reads (#97812)
Co-authored-by: Pick-cat <266665499+Pick-cat@users.noreply.github.com>
2026-06-29 10:50:38 -07:00
Dallin Romney 2ec6708980 fix(whatsapp): validate WebSocket URL env (#97697) 2026-06-29 10:50:16 -07:00
pick-cat 9949f6bd85 fix(chutes): bound OAuth token error response reads (#97808)
* fix(chutes): bound OAuth token error response reads

* ci: re-trigger checks (fs-safe unhandled-rejection flake on prior run)

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

---------

Co-authored-by: Pick-cat <266665499+Pick-cat@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 10:48:05 -07:00
maweibin 84cd3aa7f5 fix(cli): call process.exit(1) in root help and version fast path error handlers (#97793) (#97807)
The error handler in tryHandleRootHelpFastPath only set process.exitCode=1
without calling process.exit(). When dangling async handles exist (timers,
connections, promises), the Node event loop stays open and the CLI hangs
indefinitely instead of returning to the terminal.

In tryHandleRootVersionFastPath, the default onError handler called
process.exit(1) directly, bypassing the injected exit seam that the
success path already uses. Changed to exit(1) (deps.exit ?? process.exit)
so tests and embedded callers can observe and control exit on failure.

Added rejection-path tests for version fast path: injected exit called
on resolveVersion rejection, and caller-supplied onError honored.

Fixes #97793.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 10:47:55 -07:00
Yuval Dinodia 24626e5266 fix(compaction): count bashExecution and summary turns in pre-prompt overflow precheck (#97861)
estimateMessageTokenPressure special-cased toolResult, tool, and
assistant roles and otherwise read record.content. bashExecution stores
its payload in command/output and branchSummary/compactionSummary store
theirs in summary, so record.content was undefined and those turns
scored as bare boundary overhead. The provider request expands them via
convertToLlm into full user text, so bash-heavy sessions skipped the
preflight overflow gate and submitted oversized prompts.

Estimate each affected role from the exact text convertToLlm renders:
bashExecutionToText for bash turns (zero for excludeFromContext records,
which convertToLlm drops), and the summary prefix/suffix plus summary
text for the two summary roles.
2026-06-29 10:47:45 -07:00
Masato Hoshino 888f399499 fix(status): surface should-run plugin drift (#97878)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 10:46:36 -07:00
Dallin Romney beab0ecb02 test: link ClawHub packaged plugin QA evidence (#97712)
* test: link ClawHub packaged plugin QA evidence

* test: narrow ClawHub QA primary links
2026-06-29 10:46:33 -07:00
ly-wang19 5f60724b6d fix(nodes): guard node scalar fields against malformed entries 2026-06-29 10:36:29 -07:00
LiLan0125 685b95b607 fix(cron): warn when allowed web_search has no provider 2026-06-29 10:36:22 -07:00
cxbAsDev 597a0ba43c fix(discord): bound PluralKit and voice-message JSON reads 2026-06-29 10:36:16 -07:00
dwc1997 ecf054a40f test(infra): add numeric option helper coverage 2026-06-29 10:36:12 -07:00
Dallin Romney 0deddfa204 feat(whatsapp): support Baileys WebSocket URL override (#97155)
* Allow WhatsApp monitor socket substitution

* Refine WhatsApp socket substitution surface

* Keep WhatsApp socket seam on existing API

* Tighten WhatsApp socket seam type exports

* Simplify WhatsApp monitor runtime option state

* Use WhatsApp WebSocket URL override
2026-06-29 10:28:34 -07:00
SunnyShu 6de357ad47 fix(agents): enable bundled static catalog fallback for cron Attempt 2 (#96070)
* [AI] fix(agents): enable bundled static catalog fallback for cron Attempt 2 (#95500)

Plugin-provided models (e.g. opencode-go/deepseek-v4-flash) are registered
in the bundled static catalog but are not discoverable via agent model
discovery alone. The embedded runner's Attempt 2 (after ensureOpenClawModelsJson)
now passes allowBundledStaticCatalogFallback to resolveModelAsync so these
models are resolved through the static catalog fallback path.

Co-Authored-By: iCodeMate <noreply@anthropic.com>

* fix(agents): trim production comment to durable contract per ClawSweeper P3

* fix(agents): enforce plugin policy for static catalog fallback

Signed-off-by: sallyom <somalley@redhat.com>

---------

Signed-off-by: sallyom <somalley@redhat.com>
Co-authored-by: iCodeMate <noreply@anthropic.com>
Co-authored-by: sallyom <somalley@redhat.com>
2026-06-29 11:47:21 -04:00
SunnyShu 1052652a71 fix(session-memory): skip transcript-only assistant messages in getRecentSessionContent (#94401)
* fix(session-memory): only skip delivery-mirror duplicates, preserve unique DM rows

- Skip delivery-mirror rows only when their text duplicates the preceding
  assistant text (fixes #92563)
- Delivery-mirror rows with unique visible content (e.g., message-tool
  replies) are preserved
- Gateway-injected standalone assistant replies are preserved
- Combined with upstream sanitizeSessionMemoryTranscriptText

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(session-memory): reset assistant-text tracking across user turns

lastAssistantText persisted across user messages, causing delivery-mirror
rows that echoed a previous turn's assistant text to be incorrectly
filtered. Reset lastAssistantText to undefined when a visible user
message is emitted, so cross-turn delivery-mirror duplicates are
preserved while same-turn duplicates are still skipped.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(session-memory): reset mirror dedupe on command turns

Signed-off-by: sallyom <somalley@redhat.com>

---------

Signed-off-by: sallyom <somalley@redhat.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: sallyom <somalley@redhat.com>
2026-06-29 11:19:25 -04:00
sunlit-deng 825d9a6662 fix(os): use sw_vers for macOS version on Darwin instead of os.release() (#95225)
* fix(os): use sw_vers for macOS version on Darwin instead of os.release()

* fix: cache sw_vers, keep resolveOsSummary().release as raw kernel version

Addresses ClawSweeper P1 findings on #95225:

1. Cache sw_vers output for process lifetime: resolveDarwinProductVersion()
   is called on the agent prompt hot path (3 callers via resolveOsProductLabel).
   Without caching, every prompt build spawns a synchronous subprocess.
   Added module-level cache + _resetCachedDarwinProductVersion() for tests.

2. Keep resolveOsSummary().release as os.release(): changing release from
   raw kernel to product version breaks status JSON and trajectory metadata
   consumers that expect the Darwin kernel release. The darwin product
   version is now used only in the label field.

* fix(os): preserve runtime OS labels off Darwin
2026-06-29 08:03:56 -07:00
solodmd 86b9b88f40 test(firecrawl): add unit tests for firecrawl client functions (#97714) 2026-06-29 07:58:40 -07:00
solodmd d21ddd3f7a test(config): add unit tests for mapZodIssueToConfigIssue (#97736)
* test(config): add unit tests for mapZodIssueToConfigIssue

* fix: remove unused ts-expect-error directive
2026-06-29 07:55:11 -07:00
Andi Liao be94853de0 fix(tasks): recover terminal lost cron rows (#86088)
* fix(tasks): recover terminal lost cron rows

* fix(tasks): require backing-session lost recovery signal

* fix(tasks): satisfy has-own lint rule

---------

Co-authored-by: Altay <altay@hey.com>
2026-06-29 15:32:47 +03:00
Harjoth Khara 355c43fe0c fix(ui): collapse failed internal tool calls when the turn still replied (#89683) (#90122)
A non-zero internal tool exit (Codex marks any non-zero exit as failed,
e.g. a no-match shell search) was promoted to a primary red "Tool error"
banner in Control UI even when the turn produced a clean assistant reply.
Compute a per-tool-group turnSucceeded signal at the chat projection
boundary and de-promote such non-terminal failures to a collapsed tool
summary; detail stays available on expand. Genuinely terminal tool
failures still surface.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 15:23:46 +03:00
Momo db2488b6e3 fix(memory): record structured dreaming outcomes (#97723)
Summary:
- Merged fix(memory): record structured dreaming outcomes after ClawSweeper review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: chore(plugin-sdk): update surface budgets

Validation:
- ClawSweeper review passed for head 9fa7d20a96.
- Required merge gates passed before the squash merge.

Prepared head SHA: 9fa7d20a96
Review: https://github.com/openclaw/openclaw/pull/97723#issuecomment-4831902831

Co-authored-by: momothemage <niuzhengnan@163.com>
Approved-by: momothemage
2026-06-29 11:23:38 +00:00
mikasa cfd8ba8fc8 fix #95519: [Bug]: Fallback should trigger on provider upstream_error / LLM request failed (#95542)
* fix(agents): fallback on upstream provider errors

* refactor(agents): clarify provider fallback classification

---------

Co-authored-by: Altay <altay@hey.com>
2026-06-29 14:12:09 +03:00
Kevin Lin 389c355bcf fix(codex): preserve per-app approval reviewer policy (#97327)
* fix(codex): version app inventory cache keys

* fix(codex): refresh and replay plugin app policy

* fix(codex): preserve user reviewer for plugin turns

* fix(codex): gate plugin reviewer from startup policy

* fix(codex): route app approvals to user reviewer

* fix(codex): prompt destructive app tools

* fix(codex): scope app approval reviewers

* test(codex): complete app policy fixture

* fix(codex): avoid pre-start app inventory gate

* Revert "fix(codex): prompt destructive app tools"

This reverts commit d1cb0d5ba8.

# Conflicts:
#	extensions/codex/src/app-server/plugin-thread-config.test.ts
#	extensions/codex/src/app-server/plugin-thread-config.ts
2026-06-29 02:35:13 -07:00
wm0018 ff1e7e1305 docs(telegram): correct errorPolicy values and defaults 2026-06-29 01:20:44 -07:00
wm0018 293f0369d0 docs(feishu): remove nonexistent disabled dmPolicy option 2026-06-29 01:05:03 -07:00
Dallin Romney 96c8338d5b test: fold remaining Docker lanes into QA (#97708) 2026-06-29 00:39:06 -07:00
cxbAsDev 0ce10d7793 fix(agents): bound WHAM usage probe JSON response reads 2026-06-29 00:21:36 -07:00
Wynne668 ac5af25015 fix: document stream cleanup fallback intent 2026-06-29 00:20:56 -07:00
Rain 0635fa5eca fix(agents): safely record non-json transport errors 2026-06-29 00:15:21 -07:00
Dallin Romney 5327340a09 test: fold release upgrade docker lanes into qa (#97689) 2026-06-28 23:59:36 -07:00
Rain b01e6127d9 fix(config): accept overlays for bundled provider aliases (#88400)
Co-authored-by: Pluviobyte <Pluviobyte@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 23:40:02 -07:00
programmingWTF 05cf497767 feat(control-ui): add right-click Reply in Dashboard webchat (#92654)
* fix(control-ui): right-click Reply icon, dismiss button, quote format, and queue ordering

* fix(control-ui): harden Dashboard webchat reply menu

* fix(control-ui): satisfy reply menu lint

---------

Co-authored-by: openclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-28 23:37:32 -07:00
saju01 78b03fb415 test(github-copilot): cover live xhigh reasoning for non-Claude models (#91728)
Regression coverage for #59416: when live /models metadata wins over the
static xhigh allowlist, non-Claude mini-family ids (e.g. gpt-5.4-mini)
must gain xhigh from their resolved compat, while ids whose live effort
list lacks xhigh (e.g. gpt-5-mini) must not over-grant it.

The live-first model catalog union and models-defaults removal are
already in origin/main (75405f64d0, 46c42d4a0d, d2279591bf); this PR now
contributes only the still-missing regression tests on top of that base.

Co-authored-by: saju01 <saju@coderedcorp.com>
2026-06-28 23:34:28 -07:00
狼哥 68ddb9744f ci: check bundled channel config metadata (#91134) 2026-06-28 23:24:22 -07:00
Dallin Romney 18f0eeab20 test: fold webchat auto tts proof into qa (#97632) 2026-06-28 23:20:13 -07:00
Vincent Koc f5482efbd7 UI: render half-block QR output in web chat (#93869)
Co-authored-by: MG <1900448+emg110@users.noreply.github.com>
2026-06-28 23:12:28 -07:00
Acache e7d6566b8f fix(feishu): publish transport health status (#90966)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Co-authored-by: Acache <acache@users.noreply.github.com>
2026-06-28 23:12:09 -07:00
Vincent Koc c0ee7a1d20 test: gate symlink assertions on file symlink capability (#95531)
Co-authored-by: ANIRUDDHA ADAK <127435065+aniruddhaadak80@users.noreply.github.com>
2026-06-28 22:50:37 -07:00
Goutam Adwant 5715744ea0 fix(control-ui): apply seamColor bootstrap config (#93699) 2026-06-28 22:31:31 -07:00
Alex Knight 527f20f4b5 refactor(diagnostics): keep model-call prompt/usage types module-local to avoid SDK surface growth 2026-06-29 15:21:53 +10:00
Alex Knight ee0d50bb2c fix(diagnostics): capture per-call usage on terminal error streams; skip prompt stats when diagnostics off 2026-06-29 15:21:53 +10:00
Alex Knight aeab5f8418 feat: improve model call telemetry 2026-06-29 15:21:53 +10:00
solodmd 7e2f425c49 test(provider-usage): cover bounded shared response reads 2026-06-28 22:12:53 -07:00
Vincent Koc db2786bde1 fix(provider-usage): bound usage response body reads 2026-06-28 21:57:22 -07:00
Alix-007 46e119074e fix(xai): bound video response body reads 2026-06-28 21:57:14 -07:00
NIO 748bea3434 fix(github-copilot): bound login JSON response reads 2026-06-28 21:57:06 -07:00
wangmiao0668000666 a6aaba76ac fix(google): bound OAuth response body reads 2026-06-28 21:49:13 -07:00
Josh Avant 75db48a175 fix(sessions): compare reply init revisions using persisted shape (#97657) 2026-06-28 23:45:50 -05:00
Vincent Koc 0392ff7242 fix(test): remove duplicate provider HTTP mock export 2026-06-28 21:44:50 -07:00
wangmiao0668000666 bf66b4e1ea fix(comfy): bound JSON response reads via readProviderJsonResponse 2026-06-28 21:33:30 -07:00
wangmiao0668000666 f83cdec217 fix(chutes-oauth): bound core helper JSON response reads 2026-06-28 21:33:24 -07:00