mirror of
https://github.com/openclaw/openclaw.git
synced 2026-10-03 01:29:56 +00:00
Related: #142772. This fixes terminal API-failure diagnostics, not Slack Desktop's working-indicator behavior. ## What Problem This Solves Fixes silent Slack session-status cleanup failures when Slack accepts `processing` but rejects the terminal `active` update. ## User Impact Operators receive one normal-level diagnostic and can enable verbose logging for the underlying Slack API failure. Rejected or unsupported processing writes do not produce this new diagnostic. Status requests, cleanup ordering and retry behavior are unchanged; typing reactions are still removed. No configuration or migration is required. An accepted status request is not proof that Slack Desktop has refreshed its UI, so the broader issue remains open. ## Why This Change Was Made Preserve API acceptance through the existing monitor context and consume it in the existing dispatch cleanup owner. A successful write remains successful when another agent keeps Slack's aggregate status at `processing`, or when a subsequent title rename fails. The diagnostic contains no token, channel/thread identifiers, title or raw API error. The integration preserves current main's inferred context type rather than restoring its retired type file, and updates the existing delivery-trace fixture to the same acceptance contract. Unnecessary helper logging and wording-pinned test assertions were removed. ## Evidence Actual before/after proof ran on Linux arm64 / Node 24.19.0 through the supported Gateway CLI, the registered **signed Slack HTTP webhook**, real agent dispatch and typing callbacks, and the installed Slack WebClient against a loopback API. Only external Slack/model endpoints were fixtures; the monitor, dispatch, context, SDK response handling and normal file logger were real. | Scenario | Baseline diagnostics | Candidate diagnostics | | --- | ---: | ---: | | Processing accepted, active rejected | **0** | **1** | | Both writes accepted | 0 | 0 | | Processing rejected | 0 | 0 | | Active accepted, aggregate still processing | 0 | 0 | Every scenario delivered the scripted final reply, wrote `processing` then `active` exactly once, and completed typing-reaction cleanup. Each isolated Gateway was stopped before reading its log. The baseline failed the required diagnostic assertion; the candidate passed the same driver. Observed normal-level error: ```text Slack session status could not return to active after processing. Enable verbose logging to inspect the Slack API failure. ``` - Baseline: ` |
||
|---|---|---|
| .. | ||
| assets | ||
| scripts | ||
| skills | ||
| src | ||
| account-inspect-api.ts | ||
| api.ts | ||
| channel-config-api.ts | ||
| channel-entry.ts | ||
| channel-plugin-api.ts | ||
| config-api.ts | ||
| config-doctor-api.ts | ||
| configured-state.ts | ||
| contract-api.ts | ||
| directory-contract-api.ts | ||
| doctor-contract-api.ts | ||
| http-routes-api.ts | ||
| index.test.ts | ||
| index.ts | ||
| message-tool-api.ts | ||
| openclaw.plugin.json | ||
| package.json | ||
| README.md | ||
| runtime-api.ts | ||
| runtime-setter-api.ts | ||
| secret-contract-api.ts | ||
| security-contract-api.ts | ||
| setup-entry.ts | ||
| setup-plugin-api.ts | ||
| test-api.test.ts | ||
| test-api.ts | ||
| tsconfig.json | ||
OpenClaw Slack
Official OpenClaw channel plugin for Slack channels, DMs, commands, and app events.
Install from OpenClaw:
openclaw plugins install @openclaw/slack
Configure the Slack app credentials and allowed workspaces/channels in OpenClaw. The plugin lets agents receive Slack events and reply through the configured Slack app.