Commit graph

19904 commits

Author SHA1 Message Date
Mason Huang
3d20dcc10b
test: tighten browser cdpUrl redaction coverage 2026-04-18 11:37:24 +08:00
Ziy1-Tan
c2d5e03f0c
fix(config): regenerate base schema URL-secret hints for browser cdpUrl 2026-04-18 11:37:24 +08:00
Ziy1-Tan
25106f1b35
test: add snapshot redact/restore round-trip tests for browser.cdpUrl
Cover three scenarios:
- browser.cdpUrl with query token and HTTP Basic auth credentials
- browser.profiles.*.cdpUrl with per-profile credentials
- bare cdpUrl addresses without credentials remain unchanged

Refs #67656, #53433
2026-04-18 11:37:24 +08:00
Ziy1-Tan
1dbfd41462
fix: add cdpUrl to sensitive URL config path matching
Browser CDP URLs (browser.cdpUrl, browser.profiles.*.cdpUrl) can embed
credentials via query tokens (?token=xxx) or HTTP Basic auth
(user:pass@host). Add .cdpUrl suffix to isSensitiveUrlConfigPath() so
these paths are correctly redacted in config.get responses.

Refs #67656, #53433
2026-04-18 11:37:24 +08:00
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
Onur
361750775d
CI: stabilize live release lanes (#67838)
Some checks are pending
CI / preflight (push) Waiting to run
CI / security-fast (push) Waiting to run
CI / build-artifacts (push) Blocked by required conditions
CI / (push) Blocked by required conditions
CI / -1 (push) Blocked by required conditions
CI / checks-node-extensions (push) Blocked by required conditions
CI / -2 (push) Blocked by required conditions
CI / -3 (push) Blocked by required conditions
CI / checks-node-core (push) Blocked by required conditions
CI / extension-fast (push) Blocked by required conditions
CI / check (push) Blocked by required conditions
CI / check-additional (push) Blocked by required conditions
CI / build-smoke (push) Blocked by required conditions
CI / check-docs (push) Blocked by required conditions
CI / skills-python (push) Blocked by required conditions
CI / -4 (push) Blocked by required conditions
CI / -5 (push) Blocked by required conditions
CI / macos-swift (push) Blocked by required conditions
CI / -6 (push) Blocked by required conditions
Docs Sync Publish Repo / sync-publish-repo (push) Waiting to run
Install Smoke / preflight (push) Waiting to run
Install Smoke / install-smoke (push) Blocked by required conditions
Plugin NPM Release / preview_plugins_npm (push) Waiting to run
Plugin NPM Release / preview_plugin_pack (push) Blocked by required conditions
Plugin NPM Release / publish_plugins_npm (push) Blocked by required conditions
Workflow Sanity / no-tabs (push) Waiting to run
Workflow Sanity / actionlint (push) Waiting to run
Workflow Sanity / generated-doc-baselines (push) Waiting to run
* 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
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
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
30cbfa3457
test: slim plugin shape contracts 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
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
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
5af1a51f8e
test: reuse default gateway auth server 2026-04-17 19:14:54 -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
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
Vincent Koc
141c7f8eaa
fix(plugins): keep contract vitest registries on public surfaces 2026-04-17 14:32:40 -07:00
Vincent Koc
d834d270df
fix(test): preserve new module exports in mocks 2026-04-17 14:28:16 -07:00
Gustavo Madeira Santana
2482e70fb8
test: narrow web search contract runtime loads
Honor targeted includes in the contracts Vitest lane and compare bundled
web-search fast-path artifacts against plugin-owned runtime artifacts instead
of loading whole plugin entries. Split Google and Firecrawl runtime-only work
behind lazy seams so provider registration stays metadata-light.

Also keep Perplexity contract metadata aligned by sharing its runtime transport
resolution with the contract artifact.
2026-04-17 17:26:46 -04:00
Vincent Koc
c03f97f954
test(plugins): break google contract helper cycles 2026-04-17 14:25:21 -07:00
Vincent Koc
8b5030447a
test(plugins): trim contract helper runtime boot 2026-04-17 14:25:21 -07:00
Vincent Koc
48c4a026dd
test(plugins): fast-path bundled provider contract loads 2026-04-17 14:25:21 -07:00
Vincent Koc
afdbf48914
test(plugins): fast-path bundled setup web providers 2026-04-17 14:25:21 -07:00
Vincent Koc
c0b8250f4f
test(plugins): trim contract registry runtime fanout 2026-04-17 14:25:21 -07:00
Vincent Koc
d89cee8787
test(plugins): avoid runtime loads for id-only registry checks 2026-04-17 14:25:21 -07:00
Vincent Koc
855c7cf989
test(plugins): keep loader contracts inventory-backed 2026-04-17 14:25:21 -07:00
Vincent Koc
30895f7135
fix(auth): restore cli bootstrap split on rebase 2026-04-17 14:19:45 -07:00
Vincent Koc
76812401ca
test(auth): align cli overlay coverage after rebase 2026-04-17 14:14:03 -07:00
Vincent Koc
5edf876a5e
test(auth): add codex oauth red-blue coverage 2026-04-17 14:14:03 -07:00
Vincent Koc
1e7c7dd02f
refactor(auth): polish external oauth bootstrap flow 2026-04-17 14:11:41 -07:00
Vincent Koc
f61712437f
refactor(auth): tighten external oauth bootstrap policy 2026-04-17 14:05:26 -07:00
Agustin Rivera
99ef3a63c5
fix(gateway): require read scope for assistant media (#68175)
* fix(gateway): enforce assistant media scopes

* changelog: require read scope for assistant media (#68175)

* skip scope enforcement for auth.mode=none

Exclude method "none" from the identity-bearing scope gate so
gateway.auth.mode=none deployments are not regressed by the new
operator.read check.

---------

Co-authored-by: Devin Robison <drobison@nvidia.com>
2026-04-17 15:03:53 -06:00
Peter Steinberger
af0f7e1bc7
test: type runtime auth overlay mock 2026-04-17 21:56:25 +01:00
Peter Steinberger
8742e8fae3
test: stub channel migration setup surfaces 2026-04-17 21:53:25 +01:00
Peter Steinberger
8dde0acbae
test: trim agent test hot spots 2026-04-17 21:53:08 +01:00
Vincent Koc
ff55cd5c16
refactor(auth): drop legacy external cli oauth sync path 2026-04-17 13:52:37 -07:00