Skip to content

Commit f2b112e

Browse files
committed
fix(slack): remove direct reaction action path
1 parent b3cc26f commit f2b112e

13 files changed

Lines changed: 20 additions & 624 deletions

api/channel_installation_config.go

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -150,18 +150,6 @@ func defaultOpenClawConfig() map[string]any {
150150
"executablePath": "/usr/bin/chromium",
151151
},
152152
"messages": defaultOpenClawMessagesConfig(),
153-
"mcp": map[string]any{
154-
"servers": map[string]any{
155-
"spritz-channel-actions": map[string]any{
156-
"command": "node",
157-
"args": []any{"/usr/local/bin/spritz-channel-actions-mcp.js"},
158-
"env": map[string]any{
159-
"SPRITZ_CHANNEL_ACTIONS_BASE_URL": "${SPRITZ_CHANNEL_ACTIONS_BASE_URL}",
160-
"SPRITZ_CHANNEL_ACTIONS_TOKEN": "${SPRITZ_CHANNEL_ACTIONS_TOKEN}",
161-
},
162-
},
163-
},
164-
},
165153
}
166154
}
167155

api/internal_bindings_test.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -369,12 +369,6 @@ func TestInternalUpsertBindingProjectsInstallationConfigWithoutDroppingOpenClawD
369369
if statusReactions["enabled"] != true || statusEmojis["thinking"] != "\U0001F440" || statusEmojis["done"] != "\U0001F440" {
370370
t.Fatalf("expected OpenClaw status reaction defaults to be preserved, got %s", openClawConfig)
371371
}
372-
mcp, _ := projected["mcp"].(map[string]any)
373-
mcpServers, _ := mcp["servers"].(map[string]any)
374-
channelActions, _ := mcpServers["spritz-channel-actions"].(map[string]any)
375-
if channelActions["command"] != "node" {
376-
t.Fatalf("expected OpenClaw channel action MCP defaults to be preserved, got %s", openClawConfig)
377-
}
378372
channelsConfig, _ := projected["channels"].(map[string]any)
379373
slackConfig, _ := channelsConfig["slack"].(map[string]any)
380374
channels, _ := slackConfig["channels"].(map[string]any)

docs/2026-04-26-channel-delivery-feedback-architecture.md

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ Slack requirements:
204204
Slack should prefer reaction names such as `eyes` in stored policy. The Slack
205205
adapter can normalize aliases and provider syntax at the edge.
206206

207-
## Deferred Agent-Authored Reactions
207+
## Agent-Authored Reactions
208208

209209
Automatic acknowledgement reactions and agent-authored reactions are separate
210210
capabilities. This plan implements only automatic acknowledgement reactions.
@@ -234,8 +234,9 @@ For Slack, this requires:
234234
- `reactions:write` on the Slack app installation
235235
- clear error reporting when the bot is not allowed to react
236236

237-
Do not implement this by enabling OpenClaw's generic Slack, Discord, Teams, or
238-
other provider-channel integrations in a Spritz gateway-routed runtime. Those
237+
Do not implement future explicit reactions by enabling OpenClaw's generic Slack,
238+
Discord, Teams, or other provider-channel integrations in a Spritz
239+
gateway-routed runtime. Those
239240
integrations are for deployments where OpenClaw owns the provider connection
240241
directly. In Spritz gateway mode, they give the model a direct provider-send
241242
path that cannot work without provider tokens in the runtime pod.
@@ -246,6 +247,10 @@ The important boundary is:
246247
- future explicit user-requested reactions must be narrow Spritz-owned actions,
247248
not generic provider-channel tools
248249

250+
Current Spritz code should therefore not expose a Slack reaction MCP tool or
251+
internal provider-action endpoint by default. The only Slack reaction behavior
252+
in this phase is the gateway's automatic acknowledgement reaction lifecycle.
253+
249254
## Runtime Boundary
250255

251256
The runtime should not be asked to add automatic acknowledgement reactions or

images/examples/openclaw/Dockerfile

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ FROM node:22-bookworm-slim
2121

2222
ENV DEBIAN_FRONTEND=noninteractive
2323

24-
ARG OPENCLAW_VERSION=latest
24+
ARG OPENCLAW_VERSION=2026.4.2
2525

2626
COPY --from=openclaw-ts-build --chmod=0755 /build/examples/dist/openclaw/generate-openclaw-acp-compat.js /usr/local/bin/spritz-generate-openclaw-acp-compat
2727
COPY --from=openclaw-ts-build --chmod=0755 /build/examples/dist/openclaw/resolve-openclaw-acpx-extension-dir.js /usr/local/bin/spritz-resolve-openclaw-acpx-extension-dir
@@ -80,7 +80,6 @@ COPY --chown=dev:dev examples/openclaw/entrypoint.sh /usr/local/bin/spritz-openc
8080
COPY --from=openclaw-ts-build --chown=dev:dev --chmod=0755 /build/examples/dist/shared/spritz-acp-server.js /usr/local/shared/spritz-acp-server.js
8181
COPY --from=openclaw-ts-build --chown=dev:dev --chmod=0755 /build/examples/dist/openclaw/acp-server.js /usr/local/bin/spritz-openclaw-acp-server
8282
COPY --from=openclaw-ts-build --chown=dev:dev --chmod=0755 /build/examples/dist/openclaw/acp-wrapper.js /usr/local/bin/acp-wrapper.js
83-
COPY --from=openclaw-ts-build --chown=dev:dev --chmod=0755 /build/examples/dist/openclaw/channel-actions-mcp.js /usr/local/bin/spritz-channel-actions-mcp.js
8483
COPY --from=openclaw-ts-build --chown=dev:dev --chmod=0755 /build/examples/dist/openclaw/gateway-proxy.js /usr/local/bin/gateway-proxy.js
8584

8685
ENTRYPOINT ["/usr/local/bin/spritz-openclaw-entrypoint"]

images/examples/openclaw/README.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ docker build -f examples/openclaw/Dockerfile -t spritz-openclaw:latest .
2222

2323
Optional build args:
2424

25-
- `OPENCLAW_VERSION` (default: `latest`)
25+
- `OPENCLAW_VERSION` (default: `2026.4.2`)
2626

2727
Example:
2828

2929
```bash
3030
docker build \
3131
-f examples/openclaw/Dockerfile \
3232
-t spritz-openclaw:latest \
33-
--build-arg OPENCLAW_VERSION=latest \
33+
--build-arg OPENCLAW_VERSION=2026.4.2 \
3434
.
3535
```
3636

@@ -118,6 +118,11 @@ OpenClaw's direct Slack, Discord, Teams, or similar provider-channel tools. The
118118
runtime should return text over ACP, and the Spritz gateway should own provider
119119
delivery and automatic acknowledgement reactions.
120120

121+
The default image config does not include provider-action MCP tools for reacting
122+
to Slack messages. Those tools require a separate action policy and should be
123+
added only when the runtime is intentionally allowed to perform explicit
124+
provider actions.
125+
121126
## Spritz Open Integration
122127

123128
Use this image as a per-devbox application surface in Spritz:

images/examples/openclaw/channel-actions-mcp.ts

Lines changed: 0 additions & 200 deletions
This file was deleted.

images/examples/openclaw/entrypoint.sh

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -235,20 +235,6 @@ elif [[ ! -f "${config_path}" ]]; then
235235
"compacting": "\ud83d\udc40"
236236
}
237237
}
238-
},
239-
"mcp": {
240-
"servers": {
241-
"spritz-channel-actions": {
242-
"command": "node",
243-
"args": [
244-
"/usr/local/bin/spritz-channel-actions-mcp.js"
245-
],
246-
"env": {
247-
"SPRITZ_CHANNEL_ACTIONS_BASE_URL": "${SPRITZ_CHANNEL_ACTIONS_BASE_URL}",
248-
"SPRITZ_CHANNEL_ACTIONS_TOKEN": "${SPRITZ_CHANNEL_ACTIONS_TOKEN}"
249-
}
250-
}
251-
}
252238
}
253239
}
254240
JSON

images/examples/openclaw/entrypoint_test.sh

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -237,14 +237,6 @@ if (
237237
) {
238238
throw new Error(`status reaction defaults missing: ${JSON.stringify(cfg)}`);
239239
}
240-
const channelActions = cfg.mcp?.servers?.["spritz-channel-actions"];
241-
if (
242-
channelActions?.command !== "node" ||
243-
!Array.isArray(channelActions?.args) ||
244-
channelActions.args[0] !== "/usr/local/bin/spritz-channel-actions-mcp.js"
245-
) {
246-
throw new Error(`channel action MCP defaults missing: ${JSON.stringify(cfg)}`);
247-
}
248240
NODE
249241
}
250242

integrations/slack-gateway/.env.example

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ SPRITZ_SLACK_API_BASE_URL=https://slack.com/api
1616
SPRITZ_SLACK_BOT_SCOPES=app_mentions:read,channels:history,chat:write,im:history,mpim:history,reactions:write
1717
SPRITZ_SLACK_ACK_REACTION=eyes
1818
SPRITZ_SLACK_REMOVE_ACK_AFTER_REPLY=true
19-
SPRITZ_SLACK_CHANNEL_ACTIONS_TOKEN=fill-me
20-
SPRITZ_SLACK_CHANNEL_ACTIONS_TARGETS=T_example:C_example
2119
SPRITZ_SLACK_PRESET_ID=zeno
2220

2321
SPRITZ_SLACK_BACKEND_BASE_URL=https://backend.example.com

0 commit comments

Comments
 (0)