Slash commands, plugins & webhooks
Built-in slash definitions live in src/slash/ and are registered during composition. Clients list commands for their current channel/thread, invoke one with arguments, and receive command-specific responses. External registrations can add/remove definitions and answer pending calls through slash_response.
Signed slash interactions can carry author/key/signature/timestamp/nonce metadata into messages. Connection cleanup drops outstanding slash ownership when a socket closes.
Plugins register through src/plugins/ and wrap the central dispatcher, allowing extensions to intercept or delegate without bypassing the authentication gate. Plugin configuration remains under config.json.
Webhooks are server-managed endpoints with generated credentials/paths. GitHub payload handling has a focused adapter under src/webhooks/; generic payload processing translates accepted inbound events into server behavior. Management commands require manage_server.
