feat: Feishu chat bridge — strip MCP residuals, enhance streaming cards, add tool progress
Phase 1: Strip Feishu MCP residuals
- Remove 'feishu' server entry from .mcp.json
- Remove @codepilot/feishu-mcp and packages/feishu-mcp from package-lock.json
- General MCP infrastructure (McpManager, /api/plugins/mcp) preserved
Phase 2: Streaming card improvements
- card-controller.ts: Add thinking state (💭 Thinking...), tool call progress
display (🔄/✅/❌), better finalize with status footer (✅/⚠️/❌ + elapsed time),
markdown optimization on final card, proper sequence numbering for setStreamingMode
- conversation-engine.ts: Add OnToolEvent callback type, fire tool_use/tool_result
events during stream consumption
- bridge-manager.ts: Wire tool event tracking to card controller, pass proper status
(completed/interrupted/error) to finalize, render errors in card when streaming
Phase 3: Typing indicator & UX
- Change reaction emoji from 'OnIt' to 'Typing' (OpenClaw convention)
- Improve /help and /start command output with grouped sections
- Export optimizeMarkdown() for reuse in card-controller
types.ts:
- Add ToolCallInfo interface for card tool progress
- Add updateToolCalls?() and setThinking?() to CardStreamController
Tests: 374 pass, 0 fail
TypeScript: clean (npx tsc --noEmit)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>