fix(workspace): prevent unhandled rejection on missing workspace directory#1763
fix(workspace): prevent unhandled rejection on missing workspace directory#1763
Conversation
…ctory The @office-ai/platform bridge library does not attach .catch() to provider callback promises, so any rejection from an IPC provider becomes an unhandled promise rejection in the main process. When a user's workspace directory is deleted while a conversation references it, fs.stat calls fail with ENOENT. This produced 1397 unhandled rejection events (Sentry ELECTRON-M). Changes: - Move buildFileServer() inside try-catch in getWorkspace provider - Wrap copyFilesToDirectory in try-catch in sendMessage provider - Add null safety check for res[0] in Workspace loadMore handler - Add .catch() to loadWorkspace promise chain in useWorkspaceTree - Add unit tests for ENOENT error paths Fixes ELECTRON-M
Code Review:fix(workspace): prevent unhandled rejection on missing workspace directory (#1763)变更概述本 PR 修复了 Sentry 监控中频发(1397 次)的 unhandled promise rejection 问题(ELECTRON-M)。变更涉及三处:将 方案评估结论:✅ 方案合理 PR 对问题根因(bridge 层不为 provider promise 附加 问题清单🔵 LOW —
|
| # | 严重级别 | 文件 | 问题 |
|---|---|---|---|
| 1 | 🔵 LOW | conversationBridge.ts:417 |
sendMessage catch 捕获所有错误,非 ENOENT 时文件静默丢失 |
结论
✅ 批准合并 — 修复方案正确,无阻塞性问题;测试覆盖了两个核心 ENOENT 路径,代码质量良好。
本报告由本地 pr-review skill 生成,包含完整项目上下文,无截断限制。
|
✅ 已自动 review,无阻塞性问题,正在触发自动合并。 |
Summary
buildFileServer()inside try-catch ingetWorkspaceprovidercopyFilesToDirectoryin try-catch insendMessageprovider.catch()to renderer-side workspace tree loadingCloses #1762
Test plan
getWorkspaceENOENT handlingsendMessagecopyFilesToDirectory failuretsc --noEmit)