@best-agent/channel-gateway
v0.0.2-beta.8
Published
`apps/channel-gateway` is the remote-control edge for chat platforms.
Readme
Channel Gateway
apps/channel-gateway is the remote-control edge for chat platforms.
It hosts channel adapters, converts inbound platform events into best-agent thread turns, and pushes streamed status, approvals, and final replies back to the platform.
Status
Current implementation status:
- landed:
SlackDM adapter - landed: streamed
ack -> placeholder -> update -> final - landed: remote approval buttons and ask-user reply resume
- landed: delivery retry, failure persistence,
/failures, andfailuresCLI inspection - landed: single-tenant gateway store and lifecycle cleanup
- not landed:
Discord,Feishu,Telegram,WeCom - not landed: OAuth install flow and multi-tenant routing
Current Boundaries
Today the gateway only supports:
- Slack inbound DM messages
- Slack interactive approval buttons
- ask-user resume via Slack reply text
- one workspace per gateway instance
It does not yet support:
- Slack OAuth install automation
- Discord, Feishu, Telegram, or WeCom adapters
- a shared
packages/channels-core/extraction
Build And Run
Build the package:
pnpm tsc -b apps/channel-gateway --pretty falseRun the gateway against a local app-server:
export BEST_AGENT_GATEWAY_WORKSPACE_ROOT=/absolute/path/to/workspace
export BEST_AGENT_GATEWAY_APP_SERVER_BASE_URL=http://127.0.0.1:3400
export SLACK_SIGNING_SECRET=...
export SLACK_BOT_TOKEN=...
node apps/channel-gateway/dist/main.js \
--workspace-root "$BEST_AGENT_GATEWAY_WORKSPACE_ROOT" \
--app-server-base-url "$BEST_AGENT_GATEWAY_APP_SERVER_BASE_URL" \
--channel slack:team-a:SLACK_SIGNING_SECRET:SLACK_BOT_TOKENThe installationId in the --channel flag is repo-local. It becomes part of the callback URL path, so the same value must be used in the Slack app configuration.
Runtime Surfaces
When running, the gateway exposes:
GET /healthzGET /readyzGET /failuresPOST /api/slack/:installationId/eventsPOST /api/slack/:installationId/interactions
Failure inspection is also available without starting the HTTP server:
node apps/channel-gateway/dist/main.js failures \
--workspace-root "$BEST_AGENT_GATEWAY_WORKSPACE_ROOT" \
--channel slack \
--operation update \
--limit 20Docs
- Slack setup:
/Users/Simon/Github/best-agent/docs/process/channel-gateway-slack-setup.md - Discord setup:
/Users/Simon/Github/best-agent/docs/process/channel-gateway-discord-setup.md - Discord implementation plan:
/Users/Simon/Github/best-agent/docs/process/channel-gateway-discord-implementation-plan.md - Telegram setup:
/Users/Simon/Github/best-agent/docs/process/channel-gateway-telegram-setup.md - Telegram implementation plan:
/Users/Simon/Github/best-agent/docs/process/channel-gateway-telegram-implementation-plan.md - Other platforms:
/Users/Simon/Github/best-agent/docs/process/channel-gateway-other-platforms.md - Architecture draft:
/Users/Simon/Github/best-agent/docs/architecture/remote-control-channel-architecture-draft.md - Formal bridge spec:
/Users/Simon/Github/best-agent/specs/100-platform/111-remote-control-channel-bridge.md
