5735 Commits

Author SHA1 Message Date
Peter Steinberger 943cb47274 fix(qa): use exported runner sdk seam
Docker Release / validate_manual_backfill (push) Has been cancelled
Docker Release / approve_manual_backfill (push) Has been cancelled
Docker Release / build-amd64 (push) Has been cancelled
Docker Release / build-arm64 (push) Has been cancelled
Docker Release / create-manifest (push) Has been cancelled
Plugin NPM Release / preview_plugins_npm (push) Failing after 33s
Plugin NPM Release / preview_plugin_pack (push) Has been skipped
Plugin NPM Release / publish_plugins_npm (push) Has been skipped
CI / preflight (push) Has been cancelled
CI / security-fast (push) Has been cancelled
Install Smoke / preflight (push) Has been cancelled
Workflow Sanity / no-tabs (push) Has been cancelled
Workflow Sanity / actionlint (push) Has been cancelled
Workflow Sanity / generated-doc-baselines (push) Has been cancelled
CI / build-artifacts (push) Has been cancelled
CI / ${{ matrix.check_name }} (push) Has been cancelled
CI / checks-node-extensions (push) Has been cancelled
CI / checks-node-core (push) Has been cancelled
CI / extension-fast (push) Has been cancelled
CI / check (push) Has been cancelled
CI / check-additional (push) Has been cancelled
CI / build-smoke (push) Has been cancelled
CI / check-docs (push) Has been cancelled
CI / skills-python (push) Has been cancelled
CI / macos-swift (push) Has been cancelled
Install Smoke / install-smoke (push) Has been cancelled
2026-04-15 20:26:12 +01:00
Bartok9 4de56b18ba fix(dreaming): use ingestion date for dayBucket instead of file date (#67091)
Merged via squash.

Prepared head SHA: 2df44e4d50094ba43d06ea2ba10e24ac73d56bd8
Co-authored-by: Bartok9 <259807879+Bartok9@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-04-15 11:56:10 -07:00
Peter Steinberger 4efd3c3d74 test: harden beta release gates 2026-04-15 19:28:49 +01:00
Gustavo Madeira Santana 2bfd808a83 fix(matrix): skip pairing-store reads for room auth (#67325)
Merged via squash.

Prepared head SHA: 121ff3b38c6121838450e55cb48061b06527c6bf
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-15 14:08:43 -04:00
Tak Hoffman 4f00b76925 fix(context-window): Tighten context limits and bound memory excerpts (#67277)
* Tighten context limits and bound memory excerpts

* Align startup context defaults in config docs

* Align qmd memory_get bounds with shared limits

* Preserve qmd partial memory reads

* Fix shared memory read type import

* Add changelog entry for context bounds
2026-04-15 13:06:02 -05:00
Pavan Kumar Gondhi f8705f512b fix(matrix): block DM pairing-store entries from authorizing room control commands [AI-assisted] (#67294)
* fix: address issue

* fix: address review feedback

* docs: add changelog entry for PR merge
2026-04-15 22:45:14 +05:30
Gustavo Madeira Santana ed28df48a4 test(matrix): fix bootstrap password mock typing 2026-04-15 13:09:00 -04:00
Gustavo Madeira Santana 78ac118427 fix(plugins): stabilize bundled setup runtimes (#67200)
Merged via squash.

Prepared head SHA: e8d6738fd08d850f1685c8f14d4c6df39ba2d34e
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-15 12:35:18 -04:00
saram ali b2753fd0de fix(matrix): fix E2EE SSSS bootstrap for passwordless token-auth bots (#66228)
Merged via squash.

Prepared head SHA: c62cebf7c3f043cf4a950f222a3a3dc477ac5cad
Co-authored-by: SARAMALI15792 <140950904+SARAMALI15792@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-15 11:48:29 -04:00
Peter Steinberger b3fa5880dd build(extensions): bump bundled plugin versions to 2026.4.15-beta.1 2026-04-15 15:06:13 +01:00
Peter Steinberger ef98bcf630 fix(discord): raise carbon slow listener threshold 2026-04-15 06:40:14 -07:00
Ayaan Zaidi 33154ce745 fix: simplify ollama onboarding (#67005)
* feat(ollama): split interactive cloud and local setup

* test(ollama): cover cloud onboarding flow

* docs(ollama): simplify provider setup docs

* docs(onboarding): update ollama wizard copy

* fix(ollama): restore web search auth helper

* fix(ollama): harden setup auth and ssrf handling

* fix(ollama): address review regressions

* fix(ollama): scope ssrf hardening to ollama

* feat(ollama): add hybrid onboarding mode

* fix(ollama): tighten cloud credential setup

* refactor(ollama): distill host-backed setup modes

* fix(ollama): preserve cloud api key in config

* fix: simplify ollama onboarding (#67005)
2026-04-15 19:06:21 +05:30
Peter Steinberger b9d0fc5630 fix(qa-matrix): remove unused scenario import 2026-04-15 13:08:36 +01:00
Gustavo Madeira Santana 963ad1df06 QA: extend Matrix live contract coverage 2026-04-15 07:36:35 -04:00
Vincent Koc b855b1d047 fix(ci): clear extension lint regressions 2026-04-15 12:08:33 +01:00
Vincent Koc c727388f93 fix(plugins): localize bundled runtime deps to extensions (#67099)
* fix(plugins): localize bundled runtime deps to extensions

* fix(plugins): move staged runtime deps out of root

* fix(packaging): harden prepack and runtime dep staging

* fix(packaging): preserve optional runtime dep staging

* Update CHANGELOG.md

* fix(packaging): harden runtime staging filesystem writes

* fix(docker): ship preinstall warning in bootstrap layers

* fix(packaging): exclude staged plugin node_modules from npm pack
2026-04-15 12:04:31 +01:00
Mason Huang edfa074e0f Tests: align pnpm test expectations with main (#67001)
Merged via squash.

Prepared head SHA: 29c80680539131e532596c7944f64066b82ea307
Co-authored-by: hxy91819 <8814856+hxy91819@users.noreply.github.com>
Co-authored-by: hxy91819 <8814856+hxy91819@users.noreply.github.com>
Reviewed-by: @hxy91819
2026-04-15 18:31:23 +08:00
Pengfei Ni 88d3620a85 feat(github-copilot): add embedding provider for memory search (#61718)
Merged via squash.

Prepared head SHA: 05a78ce7f215934157f899e0cfac40449ac95e0d
Co-authored-by: feiskyer <676637+feiskyer@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Reviewed-by: @vincentkoc
2026-04-15 10:39:28 +01:00
Xin Sun df918c4de5 feat(memory-lancedb): add cloud storage support to memory-lancedb (#63502)
* feat(memory-lancedb): add cloud storage support to memory-lancedb

- Pass storageOptions to LanceDB connection

# Conflicts:
#	extensions/memory-lancedb/index.ts

# Conflicts:
#	extensions/memory-lancedb/config.ts

* support env var

* make storageOptions sensitive
2026-04-15 16:07:49 +08:00
Peter Steinberger 7fc5a18d89 test(qa-matrix): isolate flaky beta scenarios 2026-04-15 06:10:37 +01:00
Gustavo Madeira Santana 7d7dc7510e QA: speed up Matrix live lane 2026-04-15 00:16:23 -04:00
xinmotlanthua 90c06c04c8 fix: guard against undefined event.content in cron agentTurn payload (#66302)
* fix: remove documentation fences from HEARTBEAT.md template

The HEARTBEAT.md template wrapped its content in markdown code fences
and a doc heading for display purposes. Since loadTemplate() only strips
YAML front matter, these artifacts leaked into generated workspace files,
causing isHeartbeatContentEffectivelyEmpty() to consider them non-empty
and triggering unnecessary API calls.

Remove the markdown fences and doc heading so the template produces
clean content after front-matter stripping.

Closes #66284

* fix: guard against undefined event.content in cron agentTurn payload

When a cron job fires with agentTurn payload, event.content is undefined.
parseFaceTags(undefined) returned undefined, which propagated to
userContent.startsWith("/") causing a TypeError crash.

- Fix parseFaceTags and filterInternalMarkers to return "" for falsy input
  instead of returning the falsy value itself
- Add null coalescing fallback at the gateway call site
- Add unit tests for undefined/null/empty string inputs

Closes #66283

* fix: address review — remove redundant guards, casts, and unrelated HEARTBEAT.md change

* fix: guard against undefined event.content in cron agentTurn payload (#66302) (thanks @xinmotlanthua)

---------

Co-authored-by: khanhkhanhlele <namkhanh2172@gmail.com>
Co-authored-by: sliverp <870080352@qq.com>
2026-04-15 11:47:21 +08:00
Gustavo Madeira Santana fb92ca1a4d QA: genericize mock streaming fixtures 2026-04-14 23:44:41 -04:00
Gustavo Madeira Santana 5042b8b8e3 QA: split Matrix contract runtime 2026-04-14 23:44:41 -04:00
Mr.NightQ b1d03b4057 fix: keep Telegram command sync process-local (#66730) (thanks @nightq)
* fix: use process-scoped cache for Telegram command sync to fix missing menu after restart

Fixes openclaw#66714, openclaw#66682

Root cause: The command hash cache was persisted to disk across gateway
restarts. When the hash matched (commands unchanged), setMyCommands was
skipped entirely. But Telegram bot commands can be cleared by external
factors, so the cached state becomes stale after restart.

Fix: Replace file-based hash cache with a process-scoped Map. This preserves
the rapid-restart rate-limit protection within a single process, but ensures
commands are always re-registered after a gateway restart.

* fix(telegram): drop stale async command cache calls

* fix: keep Telegram command sync process-local (#66730) (thanks @nightq)

---------

Co-authored-by: nightq <zengwei@nightq.cn>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-04-15 08:02:23 +05:30
Omar Shahine 6f1d321aab feat(bluebubbles): replay missed webhook messages after gateway restart (#66857)
Adds an in-process startup catchup pass to the BlueBubbles channel that
queries BB Server for messages delivered since a persisted per-account
cursor and re-feeds each through the existing processMessage pipeline.

Fixes the missed-message hole documented in #66721: BB's WebhookService
is fire-and-forget on POST failure, and MessagePoller only re-fires
webhooks on BB-side reconnection events, not on webhook-receiver
recovery.

- New extensions/bluebubbles/src/catchup.ts with singleflight per
  accountId, cursor persistence via the canonical state-paths
  resolver, bounded query (perRunLimit + maxAgeMinutes), failure-held
  cursor, truncation-aware page-boundary advancement, future-cursor
  recovery, isFromMe filter (pre- and post-normalization).
- monitor.ts fires catchup as a background task after the webhook
  target registers.
- config-schema.ts adds optional catchup block; accounts.ts adds
  catchup to nestedObjectKeys for deep-merge per-account overrides.
- Dedupes against #66816's persistent inbound GUID cache.
- 22 scoped tests; full BB suite 411/411; pnpm check green; live E2E
  on macOS 26.3 / BB Server 1.9.x recovered 3/3 missed messages.

Closes #66721.

Co-authored-by: Omar Shahine <omar@shahine.com>
2026-04-14 19:20:42 -07:00
Gustavo Madeira Santana 3c03d41f13 QA: split Matrix scenario leaf types 2026-04-14 21:16:48 -04:00
Gustavo Madeira Santana 9463f1c498 QA: expand Matrix config scenario coverage 2026-04-14 21:07:31 -04:00
François Martin 734bb9c2e7 Telegram/documents: sanitize binary payloads to prevent prompt input inflation (#66877)
Merged via squash.

Prepared head SHA: 09a87c184f36ca51a8a98da3376c9f13ffd3663b
Co-authored-by: martinfrancois <14319020+martinfrancois@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-14 20:53:00 -04:00
Gustavo Madeira Santana 0c4e0d7030 memory: block dreaming self-ingestion (#66852)
Merged via squash.

Prepared head SHA: 4742656a0d03c90902383213ac0608bcc51c0fbd
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-14 20:29:12 -04:00
Gustavo Madeira Santana 3aae0fb16d QA: tighten Matrix substrate coverage 2026-04-14 20:06:08 -04:00
Gustavo Madeira Santana 874eebe539 QA: extract Matrix event modules 2026-04-14 20:06:07 -04:00
Peter Steinberger 81b66e5bf3 test(qa-matrix): type provisioned topology fixture 2026-04-15 00:50:27 +01:00
Gustavo Madeira Santana 778ac4330a QA: finish Matrix P1 harness coverage 2026-04-14 19:42:17 -04:00
Gustavo Madeira Santana 5e77cbd9ec QA: add Matrix transport substrate 2026-04-14 19:42:17 -04:00
Vincent Koc 97ee0c6fd3 perf(migrations): trim legacy migration and bind cold paths 2026-04-15 00:38:45 +01:00
Josh Avant 1769fb2aa1 fix(secrets): align SecretRef inspect/strict behavior across preload/runtime paths (#66818)
* Config: add inspect/strict SecretRef string resolver

* CLI: pass resolved/source config snapshots to plugin preload

* Slack: keep HTTP route registration config-only

* Providers: normalize SecretRef handling for auth and web tools

* Secrets: add Exa web search target to registry and docs

* Telegram: resolve env SecretRef tokens at runtime

* Agents: resolve custom provider env SecretRef ids

* Providers: fail closed on blocked SecretRef fallback

* Telegram: enforce env SecretRef policy for runtime token refs

* Status/Providers/Telegram: tighten SecretRef preload and fallback handling

* Providers: enforce env SecretRef policy checks in fallback auth paths

* fix: add SecretRef lifecycle changelog entry (#66818) (thanks @joshavant)
2026-04-14 17:59:28 -05:00
Gustavo Madeira Santana 95be2c1605 QA: replace qa-lab-runtime with qa-runtime
Introduce a tiny generic qa-runtime seam for shared live-lane helpers and
repoint qa-matrix to it. This keeps the qa-lab host split while removing
the host-owned runtime name from runner code.

Drop the old qa-lab-runtime shim/export now that nothing consumes it and
keep the plugin-sdk surface aligned with the new seam.
2026-04-14 18:53:25 -04:00
Omar Shahine 58742acaab fix(bluebubbles): dedupe inbound webhooks across restarts (#19176, #12053) (#66816)
BlueBubbles MessagePoller replays its ~1-week lookback window as new-message
webhooks after BB Server restart or reconnect. Add a persistent file-backed
GUID dedupe (TTL=7d) at the top of processMessage using createClaimableDedupe
from the Plugin SDK. Claim/finalize/release semantics ensure transient delivery
failures release the GUID so a later replay can retry.

Fixes #19176, #12053.

Co-authored-by: Omar Shahine <omar@shahine.com>
2026-04-14 15:45:05 -07:00
Vincent Koc 2d26929ff1 test(slack): harden thread context fixture cleanup 2026-04-14 23:11:43 +01:00
Gustavo Madeira Santana 5977579da4 QA: drop qa-channel install metadata
Remove the stale install metadata from the private qa-channel package.
The runner still loads from the repo checkout, but it should not
advertise an npm install path we do not support.
2026-04-14 17:59:37 -04:00
Gustavo Madeira Santana 85eac42d34 QA: remove runner install fallback catalog
Drop the generated qa-runner catalog and the missing/install placeholder
path for repo-private QA runners. The host should discover bundled QA
commands from manifest plus runtime surface only.

Also trim stale qa-matrix install docs and package metadata so the
source-only QA policy stays consistent.
2026-04-14 17:37:18 -04:00
Gustavo Madeira Santana 653100488d QA: fix matrix runner staging and host registration 2026-04-14 17:18:25 -04:00
Gustavo Madeira Santana 5bf30d258f matrix: prefer named default account 2026-04-14 17:01:59 -04:00
Gustavo Madeira Santana f958e311d2 tests: fix Feishu card action runtime mock typing 2026-04-14 16:38:01 -04:00
Gustavo Madeira Santana 82a2db71e8 refactor(qa): split Matrix QA into optional plugin (#66723)
Merged via squash.

Prepared head SHA: 27241bd0898d9ed1f13a5aaf3113be345d3002be
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-14 16:28:57 -04:00
Gustavo Madeira Santana 3425823dfb fix(regression): avoid sync startup for matrix status reads 2026-04-14 16:21:12 -04:00
Vincent Koc c96871db30 test(feishu): avoid runtime env union lint trap 2026-04-14 21:14:43 +01:00
Vincent Koc 9386e3a9d4 test(feishu): align lifecycle runtime env typing 2026-04-14 21:01:39 +01:00
@zimeg d35bdf6311 refactor(slack): use packaged thread status method 2026-04-14 12:56:25 -07:00