fix(conversation): validate type field before creating conversation#1921
fix(conversation): validate type field before creating conversation#1921
Conversation
Add early validation for the `type` field in the conversation create bridge handler to prevent unhandled rejections when WebSocket clients send params without a required `type` field. Fixes ELECTRON-FP
Code Review:fix(conversation): validate type field before creating conversation (#1921)变更概述本 PR 针对 Sentry 问题 ELECTRON-FP( 方案评估结论:✅ 方案合理 在 IPC bridge 层增加早期验证是正确的防御措施,防止无效参数到达 service 层引发未处理 rejection。现有 问题清单🔵 LOW — 新增测试未覆盖 bridge-level guard文件: 问题代码: it('throws for undefined conversation type (ELECTRON-FP)', async () => {
const repo = makeRepo();
const svc = new ConversationServiceImpl(repo);
await expect(svc.createConversation({ type: undefined as any, model: {} as any, extra: {} })).rejects.toThrow(
'Invalid conversation type'
);
});问题说明:此测试覆盖的是 修复建议:可在 PR 描述中注明 "bridge guard 层因依赖 IPC mock 复杂度暂不添加单元测试",并考虑在未来为 bridge 层补充集成测试。 🔵 LOW — console.error 记录完整 params 可能含非必要信息文件: 问题代码: console.error('[conversationBridge] Missing required field "type" in create params:', params);问题说明: 修复建议(可选):保持现状即可,或改为只记录 汇总
结论✅ 批准合并 — 仅有两个 LOW 级别的小问题,不阻塞合并。bridge guard 的修复逻辑正确,测试覆盖了 service 层防线,CI 全部通过。 本报告由本地 |
|
✅ 已自动 review,无阻塞性问题,正在触发自动合并。 |
* 'main' of github.com:wuhao1477/AionUi: (40 commits) fix(agents): prevent unhandled promise rejection in bootstrap initialization (iOfficeAI#1933) fix(gemini): restore context after stopping a reply (iOfficeAI#1932) fix(codex): reject start promise immediately on process exit during startup (iOfficeAI#1929) fix(conversation): sync renamed titles with detail view (iOfficeAI#1927) fix(paste): deduplicate filenames when pasting multiple images simultaneously fix(mobile): add SafeArea support and update app icon (iOfficeAI#1926) fix(database): guard against undefined params in databaseBridge providers (iOfficeAI#1924) fix(conversation): validate type field before creating conversation (iOfficeAI#1921) fix(docs): restore wechat_group_5.png reference to wx-5.png in readme fix(snapshot): add maxBuffer to git add/commit exec calls (iOfficeAI#1914) refactor(acp): consolidate AGENT_SKILLS_DIRS into ACP_BACKENDS_ALL (iOfficeAI#1913) fix(gemini): guard against EACCES in workspace realpath during init (ELECTRON-BM) (iOfficeAI#1912) fix(channels): send raw QR ticket instead of page URL in WeChat WebUI login SSE (iOfficeAI#1910) .md format chore(pr-automation): fix missed sleep 5 in comment to sleep 10 chore(pr-automation): increase auto-merge retry delay to 10s chore(pr-automation): add 5s retry for transient GitHub mergeStateStatus UNKNOWN fix(docs): remove trailing whitespace in OfficeCLI readmes chore(pr-automation): verify auto-merge success before labeling bot:done fix(snapshot): guard against non-existent workspace in WorkspaceSnapshotService.init (iOfficeAI#1906) ...
Summary
Error: Invalid conversation type: undefined(10 events, actively occurring)params.typein the conversation create bridge handler to prevent unhandled rejections when WebSocket clients send params without the requiredtypefieldCloses #1920
Test plan
undefinedtype in ConversationServiceImpl