Problem
Block streaming configuration (blockStreamingDefault, blockStreamingBreak, channels.msteams.blockStreaming) has no effect on the Microsoft Teams channel. Messages always arrive as a single block regardless of config.
Root cause
The msteams monitor handler uses dispatchReplyFromConfigWithSettledDispatcher() which omits onBlockReply from its type signature (plugin-sdk/inbound-reply-dispatch.ts line 14). Without onBlockReply, the block reply pipeline in agent-runner.ts is never created (blockReplyPipeline = null).
Other channels (Telegram, Discord, Slack) presumably wire onBlockReply through their own dispatch paths, but msteams does not.
Additional schema issue
The MSTeamsConfigSchema in zod-schema.providers-core.ts is missing blockStreaming: z.boolean().optional(). Every other channel schema includes this field. Setting channels.msteams.blockStreaming: true in config fails validation with .strict(). Even if added, it has no runtime effect due to the missing onBlockReply wiring.
Expected behavior
channels.msteams.blockStreaming: true with blockStreamingBreak: "text_end" should deliver messages in progressive chunks (separate bubbles) as text is generated, matching the behavior of other channels.
Environment
- OpenClaw v2026.3.24 (also confirmed on v2026.3.23)
- Microsoft Teams (personal DM scope)
Problem
Block streaming configuration (
blockStreamingDefault,blockStreamingBreak,channels.msteams.blockStreaming) has no effect on the Microsoft Teams channel. Messages always arrive as a single block regardless of config.Root cause
The msteams monitor handler uses
dispatchReplyFromConfigWithSettledDispatcher()which omitsonBlockReplyfrom its type signature (plugin-sdk/inbound-reply-dispatch.tsline 14). WithoutonBlockReply, the block reply pipeline inagent-runner.tsis never created (blockReplyPipeline = null).Other channels (Telegram, Discord, Slack) presumably wire
onBlockReplythrough their own dispatch paths, but msteams does not.Additional schema issue
The
MSTeamsConfigSchemainzod-schema.providers-core.tsis missingblockStreaming: z.boolean().optional(). Every other channel schema includes this field. Settingchannels.msteams.blockStreaming: truein config fails validation with.strict(). Even if added, it has no runtime effect due to the missingonBlockReplywiring.Expected behavior
channels.msteams.blockStreaming: truewithblockStreamingBreak: "text_end"should deliver messages in progressive chunks (separate bubbles) as text is generated, matching the behavior of other channels.Environment