Commit Graph

32021 Commits

Author SHA1 Message Date
Marcus Castro
458a52610a fix(whatsapp): isolate multi-account inbound state and align shared defaults (#65700)
* refactor(whatsapp): centralize inbound policy resolution

* fix(whatsapp): scope named-account group session keys

* fix(whatsapp): preserve legacy group activation during scoped-key migration

* fix(whatsapp): wire shared defaults through accounts.default

* fix(whatsapp): align schema, helpers, and monitor behavior

* fix(whatsapp): restore verbose inbound diagnostics

* chore(config): refresh whatsapp changelog and baseline hashes
2026-04-18 01:37:38 -03:00
Rubén Cuevas
996eb9a024 fix: fence Telegram stale reply delivery after abort (#68100) (thanks @rubencu)
* fix(telegram): fence stale reply delivery after abort

* refactor(telegram): narrow abort fence scope

* fix(telegram): ignore stale reply finalization after abort

* fix(telegram): close abort supersession races

* fix(telegram): release abort fences on setup errors

* fix(telegram): discard superseded draft cleanup

* refactor(telegram): distill abort fence cleanup

* fix: fence Telegram stale reply delivery after abort (#68100) (thanks @rubencu)

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-04-18 10:02:38 +05:30
Kagura
2c3542e315 fix: allow unknown properties in WakeParams schema (#68355) (thanks @kagura-agent)
* fix: allow unknown properties in WakeParams schema (#68347)

WakeParamsSchema used additionalProperties: false, rejecting unknown
properties like 'paperclip' from external tools. Changed to
additionalProperties: true for forward compatibility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* style: trim wake params schema comments

* fix: allow unknown properties in WakeParams schema (#68355) (thanks @kagura-agent)

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-04-18 09:10:05 +05:30
Rubén Cuevas
a0dd5f7e8e Align documented bootstrap context defaults with runtime values (#67968)
* Fix bootstrap default limit docs to match runtime

* docs(context): fix stale bootstrap max/file example
2026-04-18 09:00:21 +05:30
Gustavo Madeira Santana
e910fe446a fix(install): omit checkout alias from dist inventory 2026-04-17 23:16:19 -04:00
Gustavo Madeira Santana
110f8bd2e1 fix(plugins): resolve checkout plugin sdk imports 2026-04-17 23:04:11 -04:00
Viz
dee99f27d1 fix(gateway): allow microphone access for same-origin in Permissions-Policy header (#68368)
* test(gateway): add full unit coverage for http-common.ts

Adds tests exercising every export in src/gateway/http-common.ts so the module reaches 100% line, branch, function and statement coverage (33 tests). Captures current default security headers (including the existing Permissions-Policy microphone=() deny-list) and exhaustively covers sendJson/sendText/sendMethodNotAllowed/sendUnauthorized/sendRateLimited (with and without Retry-After), sendGatewayAuthFailure (both branches), sendInvalidRequest, readJsonBodyOrError (413/408/400/success), writeDone, setSseHeaders (with and without flushHeaders) and watchClientDisconnect (empty/single/dedup/distinct sockets, abort logic and listener cleanup).

* fix(gateway): allow microphone access for same-origin in Permissions-Policy header

The gateway's default security headers set Permissions-Policy to microphone=(), which denies microphone access for every origin including the page itself. As a result, the control-ui chat mic button (ui/src/ui/chat/speech.ts) cannot start SpeechRecognition: the browser refuses with 'Permissions policy violation: microphone is not allowed in this document' and the button silently resets.

Relax microphone to the same-origin allowlist (self) so the dashboard page can use the Web Speech API while still blocking third-party frames. Camera and geolocation remain fully denied.

Fixes #51085

* test(gateway): add seeded property/fuzz tests for http-common.ts

Adds src/gateway/http-common.fuzz.test.ts with 13 property-style tests (200 iterations each) driven by an in-file deterministic mulberry32 PRNG. Covers every export with invariants rather than fixed examples: baseline security headers across all opts shapes, Strict-Transport-Security iff non-empty string, sendJson/sendText status + body round-trips across random codes and payloads, sendMethodNotAllowed with random Allow values, sendRateLimited Retry-After iff retryAfterMs>0 with ceil-seconds value (including fractional ms), sendGatewayAuthFailure delegation, sendInvalidRequest message echo, readJsonBodyOrError status/body mapping across random error texts, writeDone sentinel, setSseHeaders with/without flushHeaders, and watchClientDisconnect invariants across arbitrary socket/controller/callback combinations (empty, same, distinct, pre-aborted). Deterministic seeds keep failures reproducible without introducing a new dev dependency.
2026-04-17 23:03:49 -04:00
Gustavo Madeira Santana
a50ec27d3b Tests: speed up QA lab startup 2026-04-17 22:19:17 -04:00
Gustavo Madeira Santana
a09bf67fa5 Plugin SDK: preserve secret input runtime build 2026-04-17 22:15:00 -04:00
Onur
361750775d CI: stabilize live release lanes (#67838)
* CI: stabilize live release lanes

* CI: widen codex live exclusions

* Gateway: stop live config/auth lazy re-imports

* CI: mount writable live Docker homes

* Live: tighten retry and provider filter overrides

* CI: use API-key auth for codex live lanes

* CI: fix remaining live lanes

* CI: stop forwarding live OpenAI base URLs

* Gateway: fix live startup loader regression

* CI: stop expanding OpenAI keys in live Docker lanes

* CI: stop expanding installer secrets in Docker

* CI: tighten live secret boundaries

* Gateway: pin Codex harness base URL

* CI: fix reusable workflow runner label

* CI: avoid template expansion in live ref guard

* CI: tighten live trust gate

* Gateway: ignore empty Codex harness base URL

* CI: stabilize remaining live lanes

* CI: harden live retries and canvas auth test

* CI: extend cron live probe budget

* CI: keep codex harness lane on api-key auth

* CI: stage live Docker OpenAI auth via env files

* CI: bootstrap codex login for Docker API-key lanes

* CI: accept hosted-runner codex fallback responses

* CI: accept additional codex sandbox fallback text

* CI: accept hosted-runner live fallback variants

* CI: accept codex current-model fallback

* CI: broaden codex sandbox model fallbacks

* CI: cover extra codex sandbox wording

* CI: extend cli backend cron retry budget

* CI: match codex models fallbacks by predicate

* CI: accept configured-models live fallback

* CI: relax OpenAI websocket warmup timeout

* CI: accept extra codex model fallback wording

* CI: generalize codex model fallback matching

* CI: retry cron verify cancellation wording

* CI: accept interactive codex model entrypoint fallback

* Agents: stabilize Claude bundle skill command test

* CI: prestage live Docker auth homes

* Tests: accept current Codex models wording

* CI: stabilize remaining live lanes

* Tests: widen CLI backend live timeout

* Tests: accept current Codex model summary wording

* CI: disable codex-cli image probe in Docker lane

* Tests: respect CLI override for Codex Docker login

* Tests: accept current Codex session models header

* CI: stabilize remaining live validation lanes

* CI: preserve Gemini ACP coverage in auth fallback

* CI: fix final live validation blockers

* CI: restore Codex auth for CLI backend lane

* CI: drop local Codex config in live Docker lane

* Tests: tolerate Codex cron and model reply drift

* Tests: accept current Codex live replies

* Tests: retry more Codex cron retry wording

* Tests: accept environment-cancelled Codex cron retries

* Tests: retry blank Codex cron probe replies

* Tests: broaden Codex cron retry wording

* Tests: require explicit Codex cron retry replies

* Tests: accept current Codex models environment wording

* CI: restore trusted Codex config in live lane

* CI: bypass nested Codex sandbox in docker

* CI: instrument live codex cron lane

* CI: forward live CLI resume args

* Tests: accept interactive Codex model selection

* Tests: bound websocket warm-up live lane

* CI: close live lane review gaps

* Tests: lazy-load gateway live server

* Tests: avoid gateway live loader regression

* CI: scope reusable workflow secrets

* Tests: tighten codex models live assertion

* Tests: normalize OpenAI speech live text
2026-04-18 03:18:12 +02:00
Peter Steinberger
a22b789547 test: stabilize telegram status lane test 2026-04-18 02:13:11 +01:00
Peter Steinberger
36068281fb test: stabilize whatsapp pdf media test 2026-04-18 02:01:07 +01:00
Gustavo Madeira Santana
0e4ddf7b38 Tests: avoid bundled Discord runtime lookup 2026-04-17 20:57:27 -04:00
Peter Steinberger
c8d722d093 test: fix rebased local gates 2026-04-18 01:49:54 +01:00
Peter Steinberger
27f34f0491 test: merge provider contract wrappers 2026-04-18 01:36:33 +01:00
Peter Steinberger
6b99917d4e test: merge session binding contract flow 2026-04-18 01:36:33 +01:00
Peter Steinberger
3abb5fd291 test: slim channel contract hotspots 2026-04-18 01:36:33 +01:00
Peter Steinberger
569247cff8 test: speed channel contract hotspots 2026-04-18 01:36:15 +01:00
Peter Steinberger
576ce7c656 perf: slim zalo group access facade 2026-04-18 01:36:15 +01:00
Peter Steinberger
4143da0ffa test: use provider contract artifacts 2026-04-18 01:36:15 +01:00
Peter Steinberger
ac39cef969 test: use web fetch contract artifacts 2026-04-18 01:36:15 +01:00
Peter Steinberger
30cbfa3457 test: slim plugin shape contracts 2026-04-18 01:36:15 +01:00
Peter Steinberger
3213fcddbe test: use web search contract artifacts 2026-04-18 01:36:15 +01:00
Peter Steinberger
4c12ff6d23 test: merge provider web-search contracts 2026-04-18 01:36:15 +01:00
Peter Steinberger
ed65e8017d test: slim channel directory contracts 2026-04-18 01:36:15 +01:00
Peter Steinberger
7db9a53254 test: slim contract suite imports 2026-04-18 01:36:15 +01:00
Peter Steinberger
52b8e318bd test: collapse gateway node authz hotspots 2026-04-18 01:34:11 +01:00
Peter Steinberger
ca34c7cd7b test: merge device token authz cases 2026-04-18 01:34:11 +01:00
Peter Steinberger
5cf01ac7c1 test: keep gateway suites minimal 2026-04-18 01:33:37 +01:00
Peter Steinberger
e493d1d2fd test: keep twitch entry test lazy 2026-04-18 01:32:34 +01:00
Peter Steinberger
75ffa29054 test: trim browser bootstrap integration 2026-04-18 01:32:34 +01:00
chaoliang yan
4749993bb5 [AI-assisted] fix(agents): mark failed TTS tool synthesis as an error (#67980)
Merged via squash.

Prepared head SHA: fa12d93c79
Co-authored-by: lawrence3699 <247479654+lawrence3699@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-17 20:30:03 -04:00
Gustavo Madeira Santana
0266cf4d10 test: disable cron scheduler for manual runs 2026-04-17 19:46:38 -04:00
Gustavo Madeira Santana
b295f4afd8 test: skip throwaway device token auth clients 2026-04-17 19:37:12 -04:00
Gustavo Madeira Santana
e2351b5fdc test: skip throwaway control ui auth clients 2026-04-17 19:25:19 -04:00
Gustavo Madeira Santana
5d8dceb37f QA Matrix: add catchup incremental scenario 2026-04-17 19:16:58 -04:00
Gustavo Madeira Santana
5af1a51f8e test: reuse default gateway auth server 2026-04-17 19:14:54 -04:00
Gustavo Madeira Santana
8e0bcd0585 test: keep Zalo outbound contracts lightweight
Use shared SDK payload helpers directly in the outbound payload contract helper
and narrow ZaloUser target parsing to its session-route module. This preserves
the contract proof without loading broad extension runtime/test barrels.
2026-04-17 19:01:25 -04:00
Gustavo Madeira Santana
3ca8ad3845 test: avoid eager message action plugin discovery
Skip bundled channel discovery for plain message-action params and only resolve
plugin-owned media params when an extension field is actually present. This
keeps normal sends on the lightweight path while preserving plugin media-field
coverage.
2026-04-17 18:35:22 -04:00
Gustavo Madeira Santana
6f4d13f3bd test: narrow setup auto-enable probes
Run setup auto-enable probes only for plugin ids made relevant by the
current config instead of loading every setup API. This keeps provider
plugin auto-enable checks from paying unrelated setup registration cost.
2026-04-17 18:23:20 -04:00
Gustavo Madeira Santana
c54464a887 test: keep searxng web search contract light
Lazy-load the SearXNG web-search client from provider execution and reuse
the shared contract helper for credential and selection wiring. Keep the
shared fast-path contract focused on the single bundled manifest it checks.
2026-04-17 18:15:59 -04:00
Gustavo Madeira Santana
41ee813a45 test: lazy-load minimax web search runtime
Keep the Minimax web-search provider artifact metadata-only and move
execution, cache, endpoint, and test helpers behind a lazy runtime import.
This keeps contract metadata tests from importing the full runtime path.
2026-04-17 18:08:23 -04:00
Vincent Koc
8567dcfdd4 docs(changelog): add codex oauth pi entry 2026-04-17 15:08:01 -07:00
Vincent Koc
c756d61cdc ci(tests): rebalance extension shards by estimated cost 2026-04-17 15:05:41 -07:00
Gustavo Madeira Santana
b1c032245c test: lazy-load exa web search runtime
Keep Exa provider registration metadata-light and move request,
cache, validation, and test helpers behind a runtime seam.
2026-04-17 18:01:58 -04:00
Devin Robison
503b748a8e fix(exec-approvals): escape control characters in display sanitizers (#68198)
* fix(exec-approvals): escape control characters in display sanitizers

* docs(changelog): add exec approval control-char display sanitizer entry

* fix(exec-approvals): redact before escape, cover U+2028/U+2029 in display sanitizers

* fix(exec-approvals): strip invisibles before redaction and align forwarder test

* fix(exec-approvals): cover Zs bypass and preserve multi-line context on obfuscated secrets

* fix(exec-approvals): compare redaction outputs by content, not length

* fix(exec-approvals): suppress raw command on bypass; cover non-ASCII Zs in macOS sanitizer

* fix(exec-approvals): use position-bitmap bypass detection and bound input size

* style(exec-approvals): satisfy oxlint no-new-array-single-argument and SwiftFormat

* fix(exec-approvals): iterate by code point and redact before truncating
2026-04-17 15:59:08 -06:00
Gustavo Madeira Santana
cad1d04491 test: keep brave web search metadata light
Move Brave test helper exposure out of the provider artifact and
keep schema/config metadata free of runtime shared imports.
2026-04-17 17:54:57 -04:00
Gustavo Madeira Santana
c9dfb19001 test: lazy-load duckduckgo web search runtime
Keep DuckDuckGo provider metadata on the contract path and defer
client plus runtime argument helpers until search execution.
2026-04-17 17:49:17 -04:00
Gustavo Madeira Santana
5d6041de81 test: lazy-load moonshot web search runtime
Keep Kimi web-search provider metadata light and move setup,
execution, cache, and test helpers behind a runtime seam.
2026-04-17 17:44:32 -04:00
Vincent Koc
647c56ef66 test(boundary): allow contract public-surface helpers 2026-04-17 14:43:50 -07:00