Commit Graph

406 Commits

Author SHA1 Message Date
Peter Steinberger 8eeccb116d test(planner): refresh extension batch expectations 2026-03-26 23:16:22 +00:00
Peter Steinberger 5f2876911a fix: harden discord gateway cleanup (#55373) (thanks @Takhoffman) 2026-03-26 16:07:13 -07:00
Peter Steinberger 556ce5cdda test(browser): fix CI after compat re-exports 2026-03-26 22:59:50 +00:00
Peter Steinberger 0f5a77d058
refactor: route memory runtime through memory plugin 2026-03-26 22:30:47 +00:00
Peter Steinberger 9dea807b28 test: share planner and sandbox test helpers 2026-03-26 22:03:18 +00:00
Peter Steinberger e955d574b2
refactor: move memory tooling into memory-core extension 2026-03-26 22:00:13 +00:00
Peter Steinberger e0dfc776bb
refactor: move memory flush ownership into memory plugin 2026-03-26 22:00:13 +00:00
Peter Steinberger 8b42ad08e5 perf: speed up shared extension test batches 2026-03-26 21:51:25 +00:00
Tak Hoffman 0805078118
fix(ci): format discord provider follow-up 2026-03-26 16:05:25 -05:00
Tak Hoffman aeee72426d
fix(ci): restore discord provider test seams 2026-03-26 15:59:51 -05:00
Tak Hoffman 53d3b8e92d
fix(ci): clean up discord harness types 2026-03-26 15:39:20 -05:00
Tak Hoffman a39e57a1bd
fix(ci): repair discord harness regressions 2026-03-26 15:39:20 -05:00
Peter Steinberger 663ba5a3cd perf: speed up test parallelism 2026-03-26 20:09:40 +00:00
Tak Hoffman c48a3e4fc9
ci: optimize windows test shard fanout (#55261)
* ci: reduce windows test shard fanout

* ci: tighten windows shard target

* ci: back off windows shard target

* ci: restore windows shard cap
2026-03-26 13:40:28 -05:00
Peter Steinberger 339cc33cf8 perf: speed up channel test runs 2026-03-26 15:40:01 +00:00
Peter Steinberger a4a00aa1da
feat: pluginize cli inference backends 2026-03-26 15:11:15 +00:00
Jacob Tomlinson 5e08ce36d5
fix(bluebubbles): throttle webhook auth guesses (#55133)
* fix(bluebubbles): throttle webhook auth guesses

* test(bluebubbles): isolate attachment ssrf config

* test(bluebubbles): hoist attachment mocks

* docs: refresh bluebubbles config baseline

* fix(bluebubbles): trust proxied webhook client IPs

* fix(bluebubbles): honor trusted proxy webhook IPs

* fix(bluebubbles): honor real-ip fallback for webhooks
2026-03-26 14:54:03 +00:00
Tak Hoffman e403899cc1
test: fix portable stderr capture and env leakage (#55184) 2026-03-26 09:31:08 -05:00
George Zhang 6cbd2d36f8
Revert "feat: add video generation core infrastructure and extend image generation parameters (#53681)" (#54943)
This reverts commit 4cb8dde894.
2026-03-25 23:00:14 -07:00
Neerav Makwana 6fd9d2ff38
fix: support OpenAI Codex media understanding (#54829) (thanks @neeravmakwana)
* OpenAI: register Codex media understanding provider

* fix: route codex image prompts through system instructions

* fix: add changelog for codex image tool fix (#54829) (thanks @neeravmakwana)

* fix: remove any from provider registration tests (#54829) (thanks @neeravmakwana)

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-26 10:10:11 +05:30
Tak Hoffman 5b68e52894
ci: collapse preflight manifest routing (#54773)
* ci: collapse preflight manifest routing

* ci: fix preflight workflow outputs

* ci: restore compat workflow tasks

* ci: match macos shards to windows

* ci: collapse macos swift jobs

* ci: skip empty submodule setup

* ci: drop submodule setup from node env
2026-03-25 22:38:30 -05:00
xieyongliang 4cb8dde894
feat: add video generation core infrastructure and extend image generation parameters (#53681)
* feat: add video generation core infrastructure and extend image generation parameters

Add full video generation capability to OpenClaw core:

- New `video_generate` agent tool with support for prompt, duration, aspect ratio,
  resolution, seed, watermark, I2V (first/last frame), camerafixed, and draft mode
- New `VideoGenerationProvider` plugin SDK type and `registerVideoGenerationProvider` API
- New `src/video-generation/` module (types, runtime with fallback, provider registry)
- New `openclaw/plugin-sdk/video-generation` export for external plugins
- 200MB max file size for generated videos (vs default 5MB for images)

Extend image generation with additional parameters:
- `seed`, `watermark`, `guidanceScale`, `optimizePrompt`, `providerOptions`
- New `readBooleanParam()` helper in tool common utilities

Update plugin registry, contracts, and all test mocks to include
`videoGenerationProviders` and `videoGenerationProviderIds`.

Made-with: Cursor

* fix: validate aspect ratio against target provider when model override is set

* cleanup: remove redundant ?? undefined from video/image generate tools

* chore: regenerate plugin SDK API baseline after video generation additions

---------

Co-authored-by: yongliang.xie <yongliang.xie@bytedance.com>
2026-03-25 18:45:06 -07:00
Tak Hoffman ab37d8810d
test: introduce planner-backed test runner, stabilize local builds (#54650)
* test: stabilize ci and local vitest workers

* test: introduce planner-backed test runner

* test: address planner review follow-ups

* test: derive planner budgets from host capabilities

* test: restore planner filter helper import

* test: align planner explain output with execution

* test: keep low profile as serial alias

* test: restrict explicit planner file targets

* test: clean planner exits and pnpm launch

* test: tighten wrapper flag validation

* ci: gate heavy fanout on check

* test: key shard assignments by unit identity

* ci(bun): shard vitest lanes further

* test: restore ci overlap and stabilize planner tests

* test: relax planner output worker assertions

* test: reset plugin runtime state in optional tools suite

* ci: split macos node and swift jobs

* test: honor no-isolate top-level concurrency budgets

* ci: fix macos swift format lint

* test: cap max-profile top-level concurrency

* ci: shard macos node checks

* ci: use four macos node shards

* test: normalize explain targets before classification
2026-03-25 18:11:58 -05:00
M1a0 7847e67f8a
plugin-runtime: expose runHeartbeatOnce in system API (#40299)
* plugin-runtime: expose runHeartbeatOnce in system API

Plugins that enqueue system events and need the agent to deliver
responses to the originating channel currently have no way to
override the default `heartbeat.target: "none"` behaviour.

Expose `runHeartbeatOnce` in the plugin runtime `system` namespace
so plugins can trigger a single heartbeat cycle with an explicit
`heartbeat: { target: "last" }` override — the same pattern the
cron service already uses (see #28508).

Changes:
- Add `RunHeartbeatOnceOptions` type and `runHeartbeatOnce` to
  `PluginRuntimeCore.system` (types-core.ts)
- Wire the function through a thin wrapper in runtime-system.ts
- Update the test-utils plugin-runtime mock

Made-with: Cursor

* feat(plugins): expose runHeartbeatOnce in system API (#40299) (thanks @loveyana)

---------

Co-authored-by: George Zhang <georgezhangtj97@gmail.com>
2026-03-25 10:47:01 -07:00
Tak Hoffman f63c4b0856
test: keep vitest on forks only 2026-03-25 12:22:22 -05:00
Peter Steinberger 436aa838fe
test(release): sync llama peer fixture 2026-03-25 06:06:47 -07:00
Peter Steinberger b7f2b0d7b9
refactor: align pairing replies, daemon hints, and feishu mention policy 2026-03-25 04:22:53 -07:00
Peter Steinberger f5408d82d2
refactor: unify gateway handshake timeout wiring 2026-03-24 22:53:55 -07:00
Peter Steinberger 23a4932997
refactor: share channel card selectors and layout 2026-03-24 21:44:28 -07:00
Tak Hoffman 93656da672
test: make vitest config tests platform-aware 2026-03-24 22:23:23 -05:00
Tak Hoffman 64432f8e46
test: disable Vitest fs cache on Windows 2026-03-24 21:51:55 -05:00
Vincent Koc e1d16ba42e test(parallel): force unit-fast batch planning 2026-03-24 18:04:20 -07:00
Peter Steinberger 6f6468027a refactor: dedupe test and runtime seams 2026-03-24 23:33:30 +00:00
Peter Steinberger 23a4ae4759 refactor: dedupe test helpers and harnesses 2026-03-24 21:41:46 +00:00
Vincent Koc 87919dec2c fix(test): stabilize npm runner path assertion 2026-03-24 12:32:01 -07:00
Peter Steinberger a4327ad544 refactor: dedupe tests and harden suite isolation 2026-03-24 19:16:19 +00:00
Vincent Koc e4ce1d9a0e
fix(runtime): stabilize dist runtime artifacts (#53855)
* fix(build): stabilize lazy runtime entry paths

* fix(runtime): harden bundled plugin npm staging

* docs(changelog): note runtime artifact fixes

* fix(runtime): stop trusting npm_execpath

* fix(runtime): harden Windows npm staging

* fix(runtime): add safe Windows npm fallback
2026-03-24 11:37:39 -07:00
Tak Hoffman d25b4a2943
fix: fail closed when subagent steer remap fails 2026-03-24 12:55:43 -05:00
Vincent Koc 3b03ff11fc test(memory): isolate slack action-runtime hotspot 2026-03-24 10:51:15 -07:00
Vincent Koc 548c2019f1 test(memory): isolate telegram monitor hotspot 2026-03-24 10:50:32 -07:00
Vincent Koc e7ae7d921a test(memory): isolate telegram fetch hotspot 2026-03-24 10:47:30 -07:00
Vincent Koc 488ad4ac70 test(memory): isolate telegram bot hotspot 2026-03-24 10:46:17 -07:00
Vincent Koc 86de8b65b1 test(memory): isolate plugin-core hotspot 2026-03-24 10:45:11 -07:00
Vincent Koc a088109327 test(memory): isolate browser remote-tab hotspot 2026-03-24 10:43:51 -07:00
Vincent Koc fbe5f45340 test(memory): isolate new unit hotspot files 2026-03-24 10:42:22 -07:00
Peter Steinberger 781295c14b refactor: dedupe test and script helpers 2026-03-24 15:48:35 +00:00
David Guttman aa91000a5d
feat(discord): add autoThreadName 'generated' strategy (#43366)
* feat(discord): add autoThreadName 'generated' strategy

Adds async thread title generation for auto-created threads:
- autoThread: boolean - enables/disables auto-threading
- autoThreadName: 'message' | 'generated' - naming strategy
- 'generated' uses LLM to create concise 3-6 word titles
- Includes channel name/description context for better titles
- 10s timeout with graceful fallback

* Discord: support non-key auth for generated thread titles

* Discord: skip fallback auto-thread rename

* Discord: normalize generated thread title first content line

* Discord: split thread title generation helpers

* Discord: tidy thread title generation constants and order

* Discord: use runtime fallback model resolution for thread titles

* Discord: resolve thread-title model aliases

* Discord: fallback thread-title model selection to runtime defaults

* Agents: centralize simple completion runtime

* fix(discord): pass apiKey to complete() for thread title generation

The setRuntimeApiKey approach only works for full agent runs that use
authStorage.getApiKey(). The pi-ai complete() function expects apiKey
directly in options or falls back to env vars — it doesn't read from
authStorage.runtimeOverrides.

Fixes thread title generation for Claude/Anthropic users.

* fix(agents): return exchanged Copilot token from prepareSimpleCompletionModel

The recent thread-title fix (3346ba6) passes prepared.auth.apiKey to
complete(). For github-copilot, this was still the raw GitHub token
rather than the exchanged runtime token, causing auth failures.

Now setRuntimeApiKeyForCompletion returns the resolved token and
prepareSimpleCompletionModel includes it in auth.apiKey, so both the
authStorage path and direct apiKey pass-through work correctly.

* fix(agents): catch auth lookup exceptions in completion model prep

getApiKeyForModel can throw for credential issues (missing profile, etc).
Wrap in try/catch to return { error } for fail-soft handling rather than
propagating rejected promises to callers like thread title generation.

* Discord: strip markdown wrappers from generated thread titles

* Discord/agents: align thread-title model and local no-auth completion headers

* Tests: import fresh modules for mocked thread-title/simple-completion suites

* Agents: apply exchanged Copilot baseUrl in simple completions

* Discord: route thread runtime imports through plugin SDK

* Lockfile: add Discord pi-ai runtime dependency

* Lockfile: regenerate Discord pi-ai runtime dependency entries

* Agents: use published Copilot token runtime module

* Discord: refresh config baseline and lockfile

* Tests: split extension runs by isolation

* Discord: add changelog for generated thread titles (#43366) (thanks @davidguttman)

---------

Co-authored-by: Onur Solmaz <onur@textcortex.com>
Co-authored-by: Onur Solmaz <2453968+osolmaz@users.noreply.github.com>
2026-03-24 16:27:19 +01:00
Peter Steinberger b1b162fcdb test: harden threaded channel follow-ups 2026-03-24 09:24:29 +00:00
Peter Steinberger 43131dcc08 test: harden threaded shared-worker suites 2026-03-24 08:37:00 +00:00
Peter Steinberger e7817ad12a test: continue vitest threads migration 2026-03-24 08:37:00 +00:00