Commit Graph

5699 Commits

Author SHA1 Message Date
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: 27241bd089
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
Agustin Rivera c8003f1b33 Harden Feishu webhook replay guards (#66707)
* fix(feishu): harden webhook replay guards

* changelog: note Feishu webhook + card-action fail-closed hardening (#66707)

* fix(feishu): move blank-token check above decodeFeishuCardAction

Run the early-return guard against a missing/blank card-action
token before decoding the card-action payload. Decoding is
side-effect-free so this is a readability + tiny-perf nit, not a
correctness change. Matches Greptile's P2 suggestion.

---------

Co-authored-by: Devin Robison <drobison@nvidia.com>
2026-04-14 13:50:41 -06:00
@zimeg 1f14c8d96b fix(slack): fix slash commands with button arg menu errors
Co-authored-by: Wang Siyuan <wsy0227@sjtu.edu.cn>
2026-04-14 12:39:56 -07:00
Vincent Koc df956f8162 test(slack): harden fixture cleanup retries 2026-04-14 19:51:21 +01:00
Vincent Koc c7f08d19ea test(contracts): refresh plugin boundary expectations 2026-04-14 19:39:33 +01:00
Vincent Koc 8d1510eb7b fix(lint): clear masked main check failures 2026-04-14 18:58:36 +01:00
Vincent Koc 2aaa17dc6f fix(ci): restore main typecheck 2026-04-14 18:53:14 +01:00
Vincent Koc 0a9616caa8 fix(matrix): align extension-api source aliases 2026-04-14 18:03:26 +01:00
Vincent Koc 0a87707092 fix(matrix): normalize trusted wrapper bin hints 2026-04-14 17:58:58 +01:00
Vincent Koc 3745d5b135 fix(matrix): require trusted wrapper package roots 2026-04-14 17:55:07 +01:00
Vincent Koc 30073feb6f fix(matrix): sort safe wrapper sdk subpaths 2026-04-14 17:51:06 +01:00
OfflynAI 3a371a32e2 fix: filter telegram binary caption text (#66663) (thanks @joelnishanth)
* Telegram: filter binary content from msg.caption to prevent token explosion (#66647)

When a user sends a binary document (e.g. .mobi, .epub) via Telegram, raw
binary bytes can leak into msg.caption. getTelegramTextParts() passes this
through to the LLM prompt, causing catastrophic token explosion (~460K tokens).

Add isBinaryContent() that detects non-printable control characters (0x00-0x08,
0x0E-0x1F) and use it to sanitize the text in getTelegramTextParts() before it
reaches the prompt pipeline. When binary content is detected, the text and
entities are both replaced with empty values so the message is still processed
(media placeholder still works) but the binary junk is dropped.

Made-with: Cursor

* fix: distill telegram binary caption filtering

* fix: filter telegram binary caption text (#66663) (thanks @joelnishanth)

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-04-14 22:14:50 +05:30
Vincent Koc 074efc94dc fix(matrix): align wrapper scoped sdk aliases 2026-04-14 17:41:32 +01:00
Gustavo Madeira Santana f190bf0a07 Fix Matrix media alias normalization 2026-04-14 12:36:13 -04:00
Vincent Koc 8d3bd4859e perf(whatsapp): add doctor contract fast path 2026-04-14 17:27:07 +01:00
slepybear 450c3a8ed2 fix(security): include Matrix avatar params in sandbox media normalization + preserve mxc:// URLs + log gmail watcher stop failures [AI-assisted] (#64701)
Merged via squash.

Prepared head SHA: 54de3f019b
Co-authored-by: slepybear <108438815+slepybear@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-14 12:22:29 -04:00
Ayaan Zaidi daabbce9a0 refactor(openai): import base URL helpers directly 2026-04-14 21:52:16 +05:30
Vincent Koc 5c28cfbf09 perf(channels): add lightweight doctor contract APIs 2026-04-14 17:20:46 +01:00
Ayaan Zaidi 8b404eccff test(openai): cover base URL helpers 2026-04-14 21:45:34 +05:30
Ayaan Zaidi 3624dda67d refactor(openai): isolate base URL helpers 2026-04-14 21:45:34 +05:30
Vincent Koc b2b3bf35cd fix(openai): reuse canonical responses stream hooks 2026-04-14 17:14:53 +01:00
Vincent Koc eea7ba5345 fix(plugin-sdk): share canonical stream hook families 2026-04-14 17:13:31 +01:00
Agustin Rivera 37d5971db3 Align QMD memory reads with canonical memory paths (#66026)
* fix(memory): align qmd read paths

Co-authored-by: zsx <git@zsxsoft.com>

* fix(memory): add qmd exact-path read fast path

* fix(memory): tighten qmd read-path guards

* changelog: note QMD memory_get canonical-path restriction (#66026)

---------

Co-authored-by: zsx <git@zsxsoft.com>
Co-authored-by: Devin Robison <drobison@nvidia.com>
2026-04-14 09:58:27 -06:00
Vincent Koc 30dcebae80 fix(minimax): share region auth builders 2026-04-14 16:50:20 +01:00
Vincent Koc 66701d5a1e fix(plugin-sdk): share opencode catalog auth helper 2026-04-14 16:48:02 +01:00
Vincent Koc 25efa8cf81 fix(minimax): share provider hook bundle 2026-04-14 16:41:46 +01:00
Vincent Koc 36f4913e30 fix(openai): share responses transport hooks 2026-04-14 16:40:05 +01:00
Vincent Koc e5c38290a6 fix(plugin-sdk): share anthropic replay hook constants 2026-04-14 16:37:29 +01:00
Vincent Koc 4c15f1310b fix(plugin-sdk): share canonical replay hook families 2026-04-14 16:34:09 +01:00
Vincent Koc 356110c52f fix(google): share gemini provider hook bundle 2026-04-14 16:30:32 +01:00
Vincent Koc a14f7c5c6d fix(openai): share responses stream hook family 2026-04-14 16:28:58 +01:00
Vincent Koc 60961a7f55 fix(openai): share responses transport defaults 2026-04-14 16:25:30 +01:00
Vincent Koc 9c42e6424d fix(plugins): share tool-stream defaults and align xai sdk imports 2026-04-14 16:23:40 +01:00
Vincent Koc 5237a149ff fix(plugins): drop stale provider hook dead code 2026-04-14 16:16:34 +01:00
Vincent Koc 3f8c6dd341 fix(openrouter): reuse shared replay hooks 2026-04-14 16:15:22 +01:00
Vincent Koc e121889a9f fix(plugins): share native anthropic replay hooks 2026-04-14 16:07:16 +01:00
Peter Steinberger 7184200c17 fix: accept optional runway source mime type 2026-04-14 15:14:26 +01:00