The Nostr channel was calling a non-existent handleInboundMessage
method on the plugin runtime. This refactors the onMessage handler
to use the correct API pattern:
- Build proper MsgContext with all required fields
- Finalize context with finalizeInboundContext
- Record session metadata with recordInboundSession
- Create reply dispatcher with createReplyDispatcherWithTyping
- Dispatch to agent with dispatchReplyFromConfig
This follows the same pattern used by Matrix, MS Teams, and
Mattermost channel extensions.
Fixes#4547