feat(ui): port Feishu integration from Windows client, fix blank replies on model errors
Port Feishu channel integration from Windows client:
- Add Feishu Mobile config injection (injectFeishuChannelConfig)
- Add expert agent injection from manifest (injectExpertAgents)
- Add Feishu channel session merging (mergeChannelSessions)
- Add isChannelSession flag to ProjectSessionSummary
- Add listChannelSessions to gateway-client
- Add Feishu guards in sendPrompt/streamPrompt
- Add Feishu session tag in sidebar (SessionList.tsx)
- Disable composer for channel sessions (ChatComposer.tsx)
- Add Feishu Mobile env vars to project model runtime
Fix blank assistant replies when model API fails:
- gateway-client: keep pending run alive when chat final has empty content
- renderer: don't finalize stream on empty completed event
- renderer: add 45s timeout fallback if error never arrives
- renderer: surface error message in failActiveStream fallback chain
Code review fixes:
- Add safeClone() helper to prevent original config mutation
- Deduplicate concurrent ensureLocalTranscript calls (transcriptInFlight)
- Call closeSession for Feishu sessions (server-side cleanup)
- Extract isChannelSessionId() helper to replace magic string
- Cache expert manifest read once per process lifetime
- Parallelize Feishu secret fetches with Promise.all
- Reuse resolveExpertPromptsRoot and ExpertManifestRecord from expert-catalog
- Use appropriate log levels (console.log/warn vs console.error)
- Add diagnostic logging at gateway-client, IPC, and renderer levels
Co-Authored-By:
Claude Opus 4.8 <noreply@anthropic.com>
Showing
This diff is collapsed.
This diff is collapsed.
Please register or sign in to comment