Commit Graph

11244 Commits

Author SHA1 Message Date
Peter Steinberger
e79e5dbbdf test(release): align plugin contract assertions 2026-05-15 17:33:28 +01:00
Peter Steinberger
1ba75463a5 test(release): align plugin prerelease contracts 2026-05-15 17:33:28 +01:00
Peter Steinberger
4e6c85d930 refactor: route remaining channel history through window (#82220) 2026-05-15 17:27:00 +01:00
許元豪
f3f2c784c4 fix(line): reject lowercased LINE-shaped recipients before push (#81628)
Defense-in-depth safety net for #81628: even with the cron-tool fix in
place, any other code path that ever produces a 33-char LINE-shaped
recipient missing its leading capital (C/U/R) would otherwise hit the
LINE API and return HTTP 400 with no permanent-error signal, causing
delivery-recovery to retry five times before moving the entry to
failed/.

normalizeTarget now throws "Recipient is not a valid LINE id ..." when
the post-strip value looks like a LINE id but the case was lost. The
message matches the existing /recipient is not a valid/i pattern in
delivery-queue-recovery's PERMANENT_ERROR_PATTERNS, so recovery moves
the entry to failed/ on the first attempt instead of silently retrying.

Short fixtures (length < 33) are left alone so existing tests using
"U123", "line:user:1", etc. keep working.
2026-05-15 17:22:58 +01:00
Peter Steinberger
5aefc9dda4 refactor: centralize channel turn media facts
Centralize channel-turn media fact shaping in core and route Discord/Slack through the shared helper.
2026-05-15 16:21:06 +01:00
Vincent Koc
1b62168a3a fix(media): reject malformed generated base64 2026-05-15 23:20:46 +08:00
Peter Steinberger
c5a4d7af41 fix: avoid OpenRouter DeepSeek V4 empty reasoning replay 2026-05-15 16:17:50 +01:00
Merlin
127156a88a fix(codex): fail fast after quiescent app-server turns
Fix Codex app-server turns that go quiet after the last non-assistant current-turn item completes without turn/completed.\n\nMaintainer proof: focused watchdog regression passed on rebased head, diff whitespace check passed, and local OpenClaw CLI + WebSocket app-server transport proof observed turn/interrupt after the short idle watchdog.\n\nCo-authored-by: funmerlin <funmerlin@users.noreply.github.com>
2026-05-15 16:16:33 +01:00
Peter Steinberger
bbf50a406e fix: keep Discord prompt metadata structured (#82168) 2026-05-15 16:12:11 +01:00
Peter Steinberger
2eee70e0a6 refactor: run prepared Discord and Slack turns
Route Discord and Slack prepared message turns through the core prepared-turn runner directly.

Local proof before landing:
- node scripts/run-vitest.mjs src/channels/turn/kernel.test.ts extensions/discord/src/monitor/message-handler.process.test.ts extensions/slack/src/monitor/message-handler/prepare.test.ts extensions/slack/src/monitor/message-handler/dispatch.preview-fallback.test.ts
- node scripts/run-tsgo.mjs -p tsconfig.core.json --incremental false
- node scripts/run-tsgo.mjs -p tsconfig.extensions.json --incremental false
- OPENCLAW_TESTBOX_REMOTE_RUN=1 OPENCLAW_VITEST_MAX_WORKERS=1 pnpm check:changed
- codex-review clean after accepted Slack bot-loop history cleanup finding was fixed in core

GitHub checks had no failures; Blacksmith/GitHub runner jobs were still queued when maintainer approved landing based on local proof.
2026-05-15 16:06:22 +01:00
Peter Steinberger
4780e69352 fix(line): acknowledge webhooks before agent processing 2026-05-15 15:49:36 +01:00
Peter Steinberger
99dfb8291f fix(providers): preserve Kimi MiMo reasoning replay (#82170)
* fix(providers): preserve Kimi MiMo reasoning replay

* chore: rerun provider replay ci
2026-05-15 15:44:34 +01:00
Peter Steinberger
80b5a0138f test(zalouser): align history expectation after rebase 2026-05-15 15:33:27 +01:00
Peter Steinberger
40789da1ef fix(wizard): narrow setup i18n SDK surface 2026-05-15 15:33:27 +01:00
MrBrain
6472b05fad feat(plugins): localize channel setup wizards 2026-05-15 15:33:27 +01:00
Peter Steinberger
41810a462e fix(discord): suppress link embeds by default
* fix(discord): suppress link embeds by default

* fix(discord): handle missing stream config
2026-05-15 15:22:54 +01:00
Peter Steinberger
934fc6ceeb fix(codex): keep app-server compaction native 2026-05-15 15:17:12 +01:00
Peter Steinberger
1e31bd2ac2 fix(codex): time out silent app-server turns 2026-05-15 14:46:33 +01:00
Yash Saliya
d91f58ee25 fix(message-tool): rename type schema property to avoid JSON Schema keyword collision (#78920)
Merged via squash.

Prepared head SHA: 669084aad8
Co-authored-by: YashSaliya <79741768+YashSaliya@users.noreply.github.com>
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com>
Reviewed-by: @altaywtf
2026-05-15 16:29:56 +03:00
Peter Steinberger
f74436dc81 refactor: assemble channel contexts in core 2026-05-15 14:14:02 +01:00
Jerome Xu
8cc1aee9d8 fix(xiaomi): surface MiMo reasoning-only finals (#60304)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-15 14:12:44 +01:00
Peter Steinberger
6de8563827 refactor: centralize channel history window 2026-05-15 13:56:17 +01:00
Peter Steinberger
56303b96d0 fix(slack): clarify finalized draft guard 2026-05-15 13:48:55 +01:00
Neerav Makwana
2b7c150de3 fix(slack): preserve finalized draft after tool warning 2026-05-15 13:48:55 +01:00
Eden
b67bcd93cc fix(twitch): keep account monitor alive until abort (#81853)
Summary:
- Keep Twitch startAccount alive until abort via runStoppablePassiveMonitor.
- Add lifecycle regression coverage and env-gated live Twitch IRC proof.
- Add changelog credit for #60071 / #81853.

Verification:
- pnpm test extensions/twitch/src/plugin.lifecycle.test.ts extensions/twitch/src/plugin.test.ts extensions/twitch/src/twitch-client.test.ts src/gateway/server-channels.test.ts
- pnpm exec oxfmt --check --threads=1 extensions/twitch/src/plugin.ts extensions/twitch/src/plugin.lifecycle.test.ts extensions/twitch/src/plugin.live.test.ts CHANGELOG.md
- pnpm test:live -- extensions/twitch/src/plugin.live.test.ts (skipped without Twitch live credentials)
- codex-review --mode branch --parallel-tests targeted Twitch/gateway tests
- GitHub checks on aea52056c6 green

Fixes #60071.

Co-authored-by: 許元豪 <146086744+edenfunf@users.noreply.github.com>
2026-05-15 13:47:10 +01:00
Kibi
cb695b0986 fix(slack): default unfurl_links to false for outbound messages
Slack link unfurls (inline message previews) are enabled by default
when unfurl_links is not explicitly set in chat.postMessage. This means
bot messages containing Slack message links or URLs automatically expand
into rich preview cards, which can be noisy in channels.

Default unfurl_links to false so outbound messages don't show inline
link previews unless the operator explicitly opts in via:

  channels.slack.unfurlLinks: true

unfurlMedia remains opt-in (only sent when explicitly configured).
2026-05-15 13:25:52 +01:00
Peter Steinberger
b4f6cb29b8 fix(slack): break modal routing import cycle 2026-05-15 13:18:55 +01:00
Peter Steinberger
d89732efca fix(slack): route plugin modal submissions
Co-authored-by: shannon0430 <258282406+shannon0430@users.noreply.github.com>

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>

Co-authored-by: Jin Kim <198280395+jink-ucla@users.noreply.github.com>
2026-05-15 13:18:55 +01:00
Peter Steinberger
2a02d83e2e refactor: record dropped channel history in turn kernel 2026-05-15 13:06:25 +01:00
Peter Steinberger
8859e89e07 feat: attach recent inbound history images to agent turns (#82068)
* feat: attach recent inbound history images

* fix: bound recent history media downloads

* fix: preserve sticker history media

* fix: enforce history media cap for stickers

* refactor: name agent turn attachments generically

* refactor: share pending history media recording

* fix: gate historical media attachment visibility

* fix: avoid media runtime on text-only turns

* fix: preserve fallback history media selection

* fix: avoid sparse media history index collisions

* fix: skip history images for current non-image media

* test: import history media type directly

* test: satisfy agent media runtime mock lint

* fix: respect mocked Slack media fetches

* fix: settle history media recording races
2026-05-15 12:41:52 +01:00
Jim Dawdy
795ad845d6 fix(xiaomi): address review findings — remove speculative models, add xiaomi-native to native+nonstandard lists, test host resolution 2026-05-15 12:35:44 +01:00
Jim Dawdy
7958eb0fc4 test(xiaomi): add MiMo thinking profile, stream wrapper, and reasoning_content injection tests 2026-05-15 12:35:44 +01:00
Jim Dawdy
f97645428e feat(xiaomi): register wrapStreamFn, resolveThinkingProfile, isModernModelRef, and replay hooks 2026-05-15 12:35:44 +01:00
Jim Dawdy
e3ad37c24f feat(xiaomi): add MiMo thinking profile and stream wrapper 2026-05-15 12:35:44 +01:00
Jim Dawdy
0dc34ca171 feat(xiaomi): add providerEndpoints for xiaomi-native and mimo-v2.5 model entries 2026-05-15 12:35:44 +01:00
Peter Steinberger
db3c4ba8d3 refactor(gateway): collapse method metadata shims 2026-05-15 12:25:31 +01:00
Peter Steinberger
c0fe7ab34a fix: keep queued system event authority structured
Keep queued system-event owner downgrades as structured runtime metadata while rendering the model-visible prompt as plain `System:` lines.

This preserves least-privilege wakeups for webhook/node/exec/cron/reaction/hook producers, keeps legacy `trusted: false` compatibility for installed plugins and older hosts, and updates representative gateway, agent, cron, plugin, and OpenGrep coverage.
2026-05-15 12:24:27 +01:00
Peter Steinberger
a1a6cd6508 refactor: centralize inbound history shaping
Centralize inbound history shaping through shared reply-history helpers and preserve existing channel behavior.
2026-05-15 11:56:38 +01:00
Peter Steinberger
f686bb519f fix: force ffmpeg muxers for staged audio outputs
* fix: force ffmpeg muxers for staged audio outputs

* docs: clarify staged audio changelog
2026-05-15 11:56:12 +01:00
Peter Steinberger
764cfd5552 feat: add bundled admin HTTP RPC plugin 2026-05-15 11:44:58 +01:00
Peter Steinberger
cd9b2c0af4 fix: restore voice media uploads 2026-05-15 11:35:34 +01:00
Frank Yang
b04e42812e fix(memory): stop watcher write-polling fd pressure (#81802)
Merged via squash.

Prepared head SHA: 623874619b
Co-authored-by: frankekn <4488090+frankekn@users.noreply.github.com>
Co-authored-by: frankekn <4488090+frankekn@users.noreply.github.com>
Reviewed-by: @frankekn
2026-05-15 18:12:29 +08:00
Peter Steinberger
21b6dcbe37 fix: restore Discord voice Ogg transcoding 2026-05-15 11:01:15 +01:00
Peter Steinberger
3b1497789c refactor(channels): derive command turns from turn facts 2026-05-15 10:38:43 +01:00
Pavan Kumar Gondhi
238b0fc76f fix(canvas): validate snapshot response formats [AI] (#81881)
* fix: validate canvas snapshot formats

* addressing codex review

* docs: add changelog entry for PR merge
2026-05-15 14:51:38 +05:30
Peter Steinberger
df70ed2b9c fix: force message through empty allowlists 2026-05-15 10:16:27 +01:00
Peter Steinberger
63ad5b4f97 fix: send structured message attachments 2026-05-15 10:16:27 +01:00
Peter Steinberger
3fd4b02eb5 fix: track message attachment aliases 2026-05-15 10:16:27 +01:00
Peter Steinberger
55322d7301 fix: deliver generated media as structured attachments 2026-05-15 10:16:27 +01:00
Peter Steinberger
64d4f99d26 refactor(auto-reply): centralize command turn context
* refactor(auto-reply): centralize command turn context

* fix(channels): narrow command turn context literals

* fix(auto-reply): preserve command auth on refinalize

* fix(auto-reply): keep command turn context sdk-compatible

* fix(auto-reply): route structured command turns before reply setup

* test(cli): type stale launchd job mock
2026-05-15 08:41:09 +01:00