Commit Graph

67697 Commits

Author SHA1 Message Date
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
wangmiao0668000666
5723222bbb fix(chutes-oauth-plugin): bound plugin JSON response reads 2026-06-28 21:33:20 -07:00
wangmiao0668000666
238398e331 fix(video-generation): bound DashScope JSON response reads 2026-06-28 21:33:09 -07:00
wangmiao0668000666
ff820d3942 fix(openai-completions): bound SSE response reads via buildGuardedModelFetch
Rebased and narrowed to the current-main OpenAI completions guarded-fetch fix. Validation passed locally and GitHub checks were green before merge.
2026-06-28 21:28:27 -07:00