# Channels Boundary `src/channels/**` is core channel implementation. Plugin authors should not import from this tree directly. ## Public Contracts - Docs: - `docs/plugins/sdk-channel-plugins.md` - `docs/plugins/architecture.md` - `docs/plugins/sdk-overview.md` - Definition files: - `src/channels/plugins/types.plugin.ts` - `src/channels/plugins/types.core.ts` - `src/channels/plugins/types.adapters.ts` - `src/plugin-sdk/core.ts` - `src/plugin-sdk/channel-contract.ts` ## Boundary Rules - Keep extension-facing channel surfaces flowing through `openclaw/plugin-sdk/*` instead of direct imports from `src/channels/**`. - When a bundled or third-party channel needs a new seam, add a typed SDK contract or facade first. - Remember that shared channel changes affect both built-in and extension channels. Check routing, pairing, allowlists, command gating, onboarding, and reply behavior across the full set.