Liu Xiaopai
ae29842158
Gateway: fix stale self version in status output ( #32655 )
...
Merged via squash.
Prepared head SHA: b9675d1f90
Co-authored-by: liuxiaopai-ai <73659136+liuxiaopai-ai@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-03-03 02:41:52 -05:00
Peter Steinberger
f7f0caa5c7
fix(ci): tighten type signatures in gateway params validation
2026-03-03 03:04:13 +00:00
Josh Avant
806803b7ef
feat(secrets): expand SecretRef coverage across user-supplied credentials ( #29580 )
...
* feat(secrets): expand secret target coverage and gateway tooling
* docs(secrets): align gateway and CLI secret docs
* chore(protocol): regenerate swift gateway models for secrets methods
* fix(config): restore talk apiKey fallback and stabilize runner test
* ci(windows): reduce test worker count for shard stability
* ci(windows): raise node heap for test shard stability
* test(feishu): make proxy env precedence assertion windows-safe
* fix(gateway): resolve auth password SecretInput refs for clients
* fix(gateway): resolve remote SecretInput credentials for clients
* fix(secrets): skip inactive refs in command snapshot assignments
* fix(secrets): scope gateway.remote refs to effective auth surfaces
* fix(secrets): ignore memory defaults when enabled agents disable search
* fix(secrets): honor Google Chat serviceAccountRef inheritance
* fix(secrets): address tsgo errors in command and gateway collectors
* fix(secrets): avoid auth-store load in providers-only configure
* fix(gateway): defer local password ref resolution by precedence
* fix(secrets): gate telegram webhook secret refs by webhook mode
* fix(secrets): gate slack signing secret refs to http mode
* fix(secrets): skip telegram botToken refs when tokenFile is set
* fix(secrets): gate discord pluralkit refs by enabled flag
* fix(secrets): gate discord voice tts refs by voice enabled
* test(secrets): make runtime fixture modes explicit
* fix(cli): resolve local qr password secret refs
* fix(cli): fail when gateway leaves command refs unresolved
* fix(gateway): fail when local password SecretRef is unresolved
* fix(gateway): fail when required remote SecretRefs are unresolved
* fix(gateway): resolve local password refs only when password can win
* fix(cli): skip local password SecretRef resolution on qr token override
* test(gateway): cast SecretRef fixtures to OpenClawConfig
* test(secrets): activate mode-gated targets in runtime coverage fixture
* fix(cron): support SecretInput webhook tokens safely
* fix(bluebubbles): support SecretInput passwords across config paths
* fix(msteams): make appPassword SecretInput-safe in onboarding/token paths
* fix(bluebubbles): align SecretInput schema helper typing
* fix(cli): clarify secrets.resolve version-skew errors
* refactor(secrets): return structured inactive paths from secrets.resolve
* refactor(gateway): type onboarding secret writes as SecretInput
* chore(protocol): regenerate swift models for secrets.resolve
* feat(secrets): expand extension credential secretref support
* fix(secrets): gate web-search refs by active provider
* fix(onboarding): detect SecretRef credentials in extension status
* fix(onboarding): allow keeping existing ref in secret prompt
* fix(onboarding): resolve gateway password SecretRefs for probe and tui
* fix(onboarding): honor secret-input-mode for local gateway auth
* fix(acp): resolve gateway SecretInput credentials
* fix(secrets): gate gateway.remote refs to remote surfaces
* test(secrets): cover pattern matching and inactive array refs
* docs(secrets): clarify secrets.resolve and remote active surfaces
* fix(bluebubbles): keep existing SecretRef during onboarding
* fix(tests): resolve CI type errors in new SecretRef coverage
* fix(extensions): replace raw fetch with SSRF-guarded fetch
* test(secrets): mark gateway remote targets active in runtime coverage
* test(infra): normalize home-prefix expectation across platforms
* fix(cli): only resolve local qr password refs in password mode
* test(cli): cover local qr token mode with unresolved password ref
* docs(cli): clarify local qr password ref resolution behavior
* refactor(extensions): reuse sdk SecretInput helpers
* fix(wizard): resolve onboarding env-template secrets before plaintext
* fix(cli): surface secrets.resolve diagnostics in memory and qr
* test(secrets): repair post-rebase runtime and fixtures
* fix(gateway): skip remote password ref resolution when token wins
* fix(secrets): treat tailscale remote gateway refs as active
* fix(gateway): allow remote password fallback when token ref is unresolved
* fix(gateway): ignore stale local password refs for none and trusted-proxy
* fix(gateway): skip remote secret ref resolution on local call paths
* test(cli): cover qr remote tailscale secret ref resolution
* fix(secrets): align gateway password active-surface with auth inference
* fix(cli): resolve inferred local gateway password refs in qr
* fix(gateway): prefer resolvable remote password over token ref pre-resolution
* test(gateway): cover none and trusted-proxy stale password refs
* docs(secrets): sync qr and gateway active-surface behavior
* fix: restore stability blockers from pre-release audit
* Secrets: fix collector/runtime precedence contradictions
* docs: align secrets and web credential docs
* fix(rebase): resolve integration regressions after main rebase
* fix(node-host): resolve gateway secret refs for auth
* fix(secrets): harden secretinput runtime readers
* gateway: skip inactive auth secretref resolution
* cli: avoid gateway preflight for inactive secret refs
* extensions: allow unresolved refs in onboarding status
* tests: fix qr-cli module mock hoist ordering
* Security: align audit checks with SecretInput resolution
* Gateway: resolve local-mode remote fallback secret refs
* Node host: avoid resolving inactive password secret refs
* Secrets runtime: mark Slack appToken inactive for HTTP mode
* secrets: keep inactive gateway remote refs non-blocking
* cli: include agent memory secret targets in runtime resolution
* docs(secrets): sync docs with active-surface and web search behavior
* fix(secrets): keep telegram top-level token refs active for blank account tokens
* fix(daemon): resolve gateway password secret refs for probe auth
* fix(secrets): skip IRC NickServ ref resolution when NickServ is disabled
* fix(secrets): align token inheritance and exec timeout defaults
* docs(secrets): clarify active-surface notes in cli docs
* cli: require secrets.resolve gateway capability
* gateway: log auth secret surface diagnostics
* secrets: remove dead provider resolver module
* fix(secrets): restore gateway auth precedence and fallback resolution
* fix(tests): align plugin runtime mock typings
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-03-03 02:58:20 +00:00
Peter Steinberger
3ff0cf262d
refactor(infra): dedupe update startup test setup
2026-03-03 02:53:14 +00:00
Peter Steinberger
a50dd0bb06
refactor(infra): dedupe ssrf fetch guard test fixtures
2026-03-03 02:53:13 +00:00
Peter Steinberger
8b4cdbb21d
refactor(infra): dedupe exec approval allowlist evaluation flow
2026-03-03 02:53:13 +00:00
Peter Steinberger
b5350bf46f
refactor(outbound): unify channel selection and action input normalization
2026-03-03 01:37:39 +00:00
Peter Steinberger
71cd337137
fix(gateway): harden message action channel fallback and startup grace
...
Take the safe, tested subset from #32367:\n- per-channel startup connect grace in health monitor\n- tool-context channel-provider fallback for message actions\n\nCo-authored-by: Munem Hashmi <munem.hashmi@gmail.com >
2026-03-03 01:17:27 +00:00
Peter Steinberger
a48a3dbdda
refactor(tests): dedupe tool, projector, and delivery fixtures
2026-03-03 01:06:00 +00:00
Gustavo Madeira Santana
f26853f14c
CLI: dedupe config validate errors and expose allowed values
2026-03-02 20:05:12 -05:00
velamints2
61be533ad4
fix(restart): deduplicate reason line in restart sentinel message
...
When gateway.restart is triggered with a reason but no separate note,
the payload sets both message and stats.reason to the same text.
formatRestartSentinelMessage() then emits both the message line and a
redundant 'Reason: <same text>' line, doubling the restart reason in
the notification delivered to the agent session.
Skip the 'Reason:' line when stats.reason matches the already-emitted
message text. Add regression tests for both duplicate and distinct
reason scenarios.
2026-03-03 00:30:34 +00:00
Peter Steinberger
6bf84ac28c
perf(runtime): reduce hot-path config and routing overhead
2026-03-03 00:20:46 +00:00
Peter Steinberger
6a42d09129
refactor: dedupe gateway config and infra flows
2026-03-03 00:15:14 +00:00
Peter Steinberger
1d0a4d1be2
refactor(runtime): harden channel-registry cache invalidation and split outbound delivery flow
2026-03-03 00:05:39 +00:00
Peter Steinberger
6b85ec3022
docs: tighten subscription guidance and update MiniMax M2.5 refs
2026-03-03 00:02:37 +00:00
Peter Steinberger
d3dc4e54f7
perf(runtime): trim hot-path allocations and cache channel plugin lookups
2026-03-02 23:56:30 +00:00
Peter Steinberger
c20ee11348
fix: harden fs-safe write boundary checks
2026-03-02 23:36:23 +00:00
Peter Steinberger
7eda632324
refactor: split slack/discord/session maintenance helpers
2026-03-02 23:07:20 +00:00
Peter Steinberger
caae34cbaf
refactor: unify message hook mapping and async dispatch
2026-03-02 22:51:28 +00:00
Peter Steinberger
29dde80c3e
fix: harden message hook session/group context and add integration coverage ( #9859 ) (thanks @Drickon)
2026-03-02 22:34:43 +00:00
Eric Lytle
b5102ba4f9
fix(hooks): add isGroup and groupId to message:sent context
...
Adds group context fields to MessageSentHookContext so hooks can
correlate sent events with received events for the same conversation.
Previously, message:received included isGroup/groupId but message:sent
did not, forcing hooks to use mismatched identifiers (e.g. groupId vs
numeric chat ID) when tracking conversations.
Fields are derived from MsgContext in dispatch-from-config and threaded
through route-reply and deliver via the mirror parameter.
Addresses feedback from matskevich (production user, 550+ events)
reported on PR #6797 .
2026-03-02 22:34:43 +00:00
Peter Steinberger
6358aae024
refactor(infra): share windows path normalization helper
2026-03-02 21:55:12 +00:00
Peter Steinberger
55a2d12f40
refactor: split inbound and reload pipelines into staged modules
2026-03-02 21:55:01 +00:00
Marcus Castro
58cde87436
fix: warn when proxy env var is set but agent creation fails
2026-03-02 21:37:36 +00:00
Marcus Castro
ba3fa44c5b
refactor: extract shared proxy-fetch utility from Telegram module
...
Move makeProxyFetch to src/infra/net/proxy-fetch.ts and add
resolveProxyFetchFromEnv which reads standard proxy env vars
(HTTPS_PROXY, HTTP_PROXY, and lowercase variants) and returns a
proxy-aware fetch via undici's EnvHttpProxyAgent. Telegram re-exports
from the shared location to avoid duplication.
2026-03-02 21:37:36 +00:00
Peter Steinberger
34daed1d1e
refactor(core): dedupe infra, media, pairing, and plugin helpers
2026-03-02 21:32:11 +00:00
Peter Steinberger
5f0cbd0edc
refactor(gateway): dedupe auth and discord monitor suites
2026-03-02 21:31:36 +00:00
Peter Steinberger
21d6d878ce
fix: harden exec allowlist regex literal handling ( #32162 ) (thanks @stakeswky)
2026-03-02 21:26:24 +00:00
User
8da8756f76
fix(exec): escape regex literals in allowlist path matching
2026-03-02 21:26:24 +00:00
bmendonca3
16e7fc2563
fix(models): infer codex weekly usage labels from reset cadence
2026-03-02 20:35:45 +00:00
Peter Steinberger
b1c30f0ba9
refactor: dedupe cli config cron and install flows
2026-03-02 19:57:33 +00:00
Peter Steinberger
c424836fbe
refactor: harden outbound, matrix bootstrap, and plugin entry resolution
2026-03-02 19:55:09 +00:00
Peter Steinberger
dbbd41a2ed
fix(security): harden file installs and race-path tests
2026-03-02 19:30:02 +00:00
Peter Steinberger
e1bc5cad25
fix(outbound): harden plain-text HTML sanitization paths ( #32034 )
2026-03-02 19:28:47 +00:00
AytuncYildizli
62d0cfeee7
fix(delivery): strip HTML tags for plain-text messaging surfaces
...
Models occasionally produce HTML tags in their output. While these render
fine on web surfaces, they appear as literal text on WhatsApp, Signal,
SMS, IRC, and Telegram.
Add sanitizeForPlainText() utility that converts common inline HTML to
lightweight-markup equivalents and strips remaining tags. Applied in the
outbound delivery pipeline for non-HTML surfaces only.
Closes #31884
See also: #18558
2026-03-02 19:28:47 +00:00
Peter Steinberger
83c8406f01
refactor(security): split gateway auth suites and share safe write path checks
2026-03-02 18:07:03 +00:00
Peter Steinberger
7dac9b05dd
fix(security): harden zip write race handling
2026-03-02 17:38:11 +00:00
Peter Steinberger
d4bf07d075
refactor(security): unify hardened install and fs write flows
2026-03-02 17:23:29 +00:00
Peter Steinberger
104d32bb64
fix(security): unify root-bound write hardening
2026-03-02 17:12:33 +00:00
Peter Steinberger
be3a62c5e0
test(perf): defer delivery queue fixture cleanup to suite end
2026-03-02 17:10:55 +00:00
Peter Steinberger
11562c452a
test(perf): avoid unused heartbeat fixture file writes
2026-03-02 17:01:40 +00:00
Peter Steinberger
db7a8a6982
test(perf): reuse delivery queue suite temp root
2026-03-02 16:55:18 +00:00
Peter Steinberger
4a80311628
refactor(security): split sandbox media staging and stream safe copies
2026-03-02 16:53:14 +00:00
Peter Steinberger
031bf0c6c0
refactor(security): split safe-regex parse and bounded matching
2026-03-02 16:47:00 +00:00
Artale
1b462ed174
fix(test): use NTFS junctions and platform guards for symlink tests on Windows (openclaw#28747) thanks @arosstale
...
Verified:
- pnpm install --frozen-lockfile
- pnpm test src/agents/apply-patch.test.ts src/agents/sandbox/fs-bridge.test.ts src/agents/sandbox/validate-sandbox-security.test.ts src/infra/archive.test.ts
Co-authored-by: arosstale <117890364+arosstale@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-03-02 10:45:19 -06:00
Peter Steinberger
18f8393b6c
fix: harden sandbox writes and centralize atomic file writes
2026-03-02 16:45:12 +00:00
Peter Steinberger
b1592457fa
perf(security): bound regex input in filters and redaction
2026-03-02 16:37:45 +00:00
Peter Steinberger
0dbb92dd2b
fix(security): harden tar archive extraction parity
2026-03-02 16:36:56 +00:00
Peter Steinberger
c973b053a5
refactor(net): unify proxy env checks and guarded fetch modes
2026-03-02 16:24:26 +00:00
Tak Hoffman
21708f58ce
fix(exec): resolve PATH key case-insensitively for Windows pathPrepend ( #25399 ) ( #31879 )
...
Co-authored-by: Glucksberg <markuscontasul@gmail.com >
2026-03-02 10:14:38 -06:00