The adapters directory groups the platform adapters of Chat SDK Go (github.com/coder/chat). It has no Go source files of its own. Each child package connects the portable chat runtime (root package github.com/coder/chat) to one chat platform: it receives platform webhooks or connections, normalizes them into chat.Event values, and posts replies through the platform API.
Both adapters share these traits, from their own contracts:
- Each adapter runs in single-install mode (static credentials) or multi-tenant mode (
chat.InstallStore, looked up for each request routed to an install, with no caching). - Each adapter verifies the signature of inbound webhooks before dispatch.
- Each adapter retries platform rate limits within a
RetryPolicyand never sleeps past the caller's context deadline. When the policy or the deadline check stops retry, it returns a typed*RateLimitederror. A context cancelled during a backoff sleep returns the context error, and a failed HTTP attempt returns its transport error. - Each adapter emits
chat.ObsAdapterCallandchat.ObsRateLimitevents to the configured observer. - Each adapter implements
chat.HistoryReaderas a live read with no storage or caching.
- linear: ./linear/README.md - Linear app-actor adapter. It handles agent-session and issue-comment webhooks, posts agent activities and comments through the Linear GraphQL API, and owns its own rate-limit retry.
- slack: ./slack/README.md - Slack adapter. It receives deliveries over HTTP webhooks and Socket Mode, and posts messages, ephemeral messages, Block Kit content, and modals. It contains the low-level
slackapipackage (./slack/slackapi/README.md), which holds the Slack Web API client, transports, and rate-limit retry, and itsslackapitesttest fakes (./slack/slackapi/slackapitest/README.md).