Commit Graph

409 Commits

Author SHA1 Message Date
Gustavo Madeira Santana
30211be1cb Slack: treat ACP block text as visible output (#62858)
Merged via squash.

Prepared head SHA: 14f202e1cc
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-08 16:33:43 -04:00
Peter Steinberger
95e397a266 refactor: dedupe repeated test helpers 2026-04-08 09:58:22 +01:00
Vincent Koc
952862b9e2 perf(plugins): narrow boundary compile import surfaces 2026-04-08 08:52:52 +01:00
Vincent Koc
73c475023f perf(plugins): trim channel boundary core imports 2026-04-08 08:52:52 +01:00
Vincent Koc
55cbcd829d fix(slack): preserve auth on same-origin media redirects (#62996) (thanks @vincentkoc)
- Verified: pnpm build\n- Verified: pnpm test extensions/slack/src/monitor/media.test.ts\n- Verified: pnpm exec oxlint extensions/slack/src/monitor/media.ts extensions/slack/src/monitor/media.test.ts\n- Verified: pnpm exec oxfmt --check extensions/slack/src/monitor/media.ts extensions/slack/src/monitor/media.test.ts CHANGELOG.md\n\nRepo-wide pnpm lint and pnpm test were not clean on current main outside this fix, and the first full-suite test attempt from the default core sparse profile was additionally contaminated by missing ui/packages/OpenClawKit paths until they were materialized.
2026-04-08 08:11:27 +01:00
Gustavo Madeira Santana
6c0d25cea4 Slack: clarify native streaming config hint 2026-04-08 00:58:00 -04:00
Peter Steinberger
825028289b fix: pass resolved Slack download tokens (#62097) (thanks @martingarramon) 2026-04-08 05:44:23 +01:00
Martin Garramon
fd68c28164 fix(slack): forward resolved botToken to downloadSlackFile
Closes #62088

When `buildActionOpts` returns undefined (default account, no token
override), `downloadSlackFile` calls `resolveToken(undefined, undefined)`
which re-reads raw config via `loadConfig()`. If botToken is a SecretRef
object, `normalizeResolvedSecretInputString` rejects it because it
expects a string — the download silently fails.

This injects the already-resolved botToken from the gateway runtime
snapshot into the download opts as a fallback, bypassing the raw config
re-read. Same root cause as the Discord fix in b51214ec3e.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 05:44:23 +01:00
Peter Steinberger
b4034b32c3 fix: honor Slack Socket Mode env proxies (#62878) (thanks @mjamiv) 2026-04-08 05:38:45 +01:00
Michael Martello
5609a35f67 fix: handle leading-dot NO_PROXY entries matching apex domain
`.slack.com` in NO_PROXY should match both `slack.com` (apex) and
`wss-primary.slack.com` (subdomain). Strip the leading dot before
comparison so the suffix check works for both cases.
2026-04-08 05:38:45 +01:00
Michael Martello
4ab6a7b324 fix: address review — honor NO_PROXY, guard malformed URLs
- Check NO_PROXY/no_proxy before creating HttpsProxyAgent; skip proxy
  when slack.com matches an exclusion entry (exact, suffix, or wildcard).
- Wrap HttpsProxyAgent construction in try/catch so malformed proxy URLs
  degrade to direct connectivity instead of crashing Slack channel init.
- Extract resolveProxyUrlFromEnv and isHostExcludedByNoProxy as testable
  helpers.
- Add tests for NO_PROXY exclusion, wildcard, unrelated hosts, and
  malformed URL resilience.
2026-04-08 05:38:45 +01:00
Michael Martello
d4e5f250a0 fix(slack): honor HTTPS_PROXY for Socket Mode WebSocket connections
When HTTPS_PROXY or HTTP_PROXY env vars are set, create an
HttpsProxyAgent and pass it as the `agent` option through
@slack/bolt → @slack/socket-mode → ws, so the WebSocket upgrade
request is tunneled through the proxy.

This fixes Slack Socket Mode in environments where all outbound
traffic must go through an HTTP CONNECT proxy (e.g. sandboxed
containers, corporate networks). Previously the ws library opened
a direct connection to wss-primary.slack.com, ignoring proxy env
vars entirely.

The approach mirrors the existing Discord gateway proxy support
(extensions/discord/src/monitor/gateway-plugin.ts) which uses the
same https-proxy-agent library.

Fixes #57405
2026-04-08 05:38:45 +01:00
Peter Steinberger
aec24f4599 refactor: dedupe messaging trimmed readers 2026-04-08 01:36:39 +01:00
Peter Steinberger
2187b19d7e refactor: dedupe extension lowercase helpers 2026-04-07 22:24:32 +01:00
Gustavo Madeira Santana
af4a2faa1d types: preserve approval runtime payload typing 2026-04-07 17:11:04 -04:00
Gustavo Madeira Santana
28fc5d9b5e Plugin SDK: split approval adapter seams 2026-04-07 16:06:02 -04:00
Gustavo Madeira Santana
9bcef781e7 Tests: restore approval runtime coverage 2026-04-07 16:06:02 -04:00
Peter Steinberger
ba68537d9d refactor: dedupe line qqbot slack lowercase helpers 2026-04-07 20:58:01 +01:00
Gustavo Madeira Santana
d78512b09d Refactor: centralize native approval lifecycle assembly (#62135)
Merged via squash.

Prepared head SHA: b7c20a7398
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-07 14:40:26 -04:00
Peter Steinberger
774b6b6438 refactor: dedupe messaging lowercase helpers 2026-04-07 15:53:50 +01:00
Peter Steinberger
f2b13b0a1a refactor: dedupe slack matrix venice lowercase helpers 2026-04-07 15:12:31 +01:00
Peter Steinberger
46db833772 test: speed up channel probe tests 2026-04-07 13:37:01 +01:00
Peter Steinberger
dc854ec521 test: speed up setup surface tests 2026-04-07 13:16:49 +01:00
Vincent Koc
dfb6c9c920 perf(plugin-sdk): split channel secret runtime helpers 2026-04-07 13:09:12 +01:00
Peter Steinberger
af1cf77b16 refactor: dedupe extension lowercase readers 2026-04-07 11:18:18 +01:00
Peter Steinberger
cb29ecc100 refactor: dedupe channel helper readers 2026-04-07 10:37:39 +01:00
Peter Steinberger
58e822e712 test: narrow hook and inbound context assertions 2026-04-07 09:18:59 +01:00
Peter Steinberger
2197ce62bd refactor: dedupe lower-parser readers 2026-04-07 08:40:34 +01:00
Peter Steinberger
ce19b6bf6a refactor: dedupe channel extension readers 2026-04-07 08:40:34 +01:00
Peter Steinberger
625fd5b3e3 refactor: centralize inbound mention policy 2026-04-07 07:51:00 +01:00
Peter Steinberger
820201a343 fix(ci): restore plugin sdk doctor boundaries 2026-04-07 06:49:15 +01:00
Chunyue Wang
e8fb140642 fix: preserve Slack guarded media transport (#62239) (thanks @openperf)
* fix(slack ): prevent undici dispatcher leak to globalThis.fetch causing media download failure

* fix(slack): preserve guarded media transport

* fix: preserve Slack guarded media transport (#62239) (thanks @openperf)

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-04-07 11:15:53 +05:30
Peter Steinberger
80826bc000 fix(extensions): bypass stale doctor runtime exports 2026-04-07 06:23:46 +01:00
Peter Steinberger
1275b9b873 refactor: dedupe account name normalization 2026-04-07 06:07:13 +01:00
Peter Steinberger
8c7dd66a7b refactor: dedupe string readers 2026-04-07 05:06:54 +01:00
Peter Steinberger
d9fbfa268f refactor: dedupe extension string helpers 2026-04-07 05:06:54 +01:00
Peter Steinberger
9e2a1e12fd refactor: dedupe channel runtime error formatting 2026-04-07 02:03:34 +01:00
Peter Steinberger
325ff24bae refactor: dedupe probe error formatting 2026-04-07 02:03:34 +01:00
Peter Steinberger
560a7aecd0 refactor: dedupe plugin string helpers 2026-04-07 02:03:33 +01:00
Peter Steinberger
017c25b075 test(runtime): fix stale harness and registry mocks 2026-04-07 01:16:15 +01:00
Praktika Engineer
b8c8139138 feat(slack): add thread.requireExplicitMention config option (#58276)
* feat(slack): add thread.requireExplicitMention config option

When requireMention is true in a Slack channel, replying inside a thread
where the bot previously participated currently bypasses mention gating
via implicit mention detection. This makes the bot respond to every
thread message even without an explicit @mention.

Add channels.slack.thread.requireExplicitMention (default: false) which,
when set to true, suppresses implicit thread mentions. Only explicit
@bot mentions will trigger replies inside threads.

Closes #34389
Closes #49972

* slack: refresh changelog and generated config artifacts

* slack: restore bundled channel metadata generation

---------

Co-authored-by: praktika-devops <devops@praktika.ai>
Co-authored-by: George Pickett <gpickett00@gmail.com>
2026-04-06 17:05:11 -07:00
Peter Steinberger
80c8567f9d fix: resolve merge conflicts and preserve runtime test fixes 2026-04-06 22:46:33 +01:00
Peter Steinberger
ef252976bc fix(plugins): harden doctor contract record guards 2026-04-06 21:34:26 +01:00
Vincent Koc
78639eff76 perf(secrets): narrow channel secret sdk seam 2026-04-06 20:40:11 +01:00
Peter Steinberger
ccfdfec43f refactor: dedupe doctor account streaming matchers 2026-04-06 20:30:20 +01:00
Peter Steinberger
6d52014ef8 refactor: dedupe doctor compat record helper 2026-04-06 20:30:20 +01:00
Peter Steinberger
50628ef62c refactor: dedupe security audit helper coercion 2026-04-06 19:36:01 +01:00
Peter Steinberger
283b103e75 refactor: dedupe doctor account streaming checks 2026-04-06 19:24:43 +01:00
Peter Steinberger
dab4a4790d refactor: dedupe mutable allowlist doctor warnings 2026-04-06 19:24:42 +01:00
Peter Steinberger
591347113e refactor(deadcode): prune extension test shims 2026-04-06 17:26:25 +01:00