feat: 增加共享 Agent Browser 调试能力

需求:在 AI 编程会话中让用户与 Agent 共享同一浏览器页面,并查看控制台与网络信息。

实现:新增沙箱浏览器内核、Host API/渲染器面板、OpenCode 工具接入及安全边界测试。
This commit is contained in:
2026-07-31 14:53:36 +08:00
parent 80e8386fa6
commit e97a7ce9df
39 changed files with 6734 additions and 9 deletions

View File

@@ -44,6 +44,23 @@ describe('host-events', () => {
expect(cleanupSpy).toHaveBeenCalledTimes(1);
});
it.each(['agent-browser:show', 'agent-browser:state'])(
'maps %s to the preload IPC bridge',
async (eventName) => {
const onMock = vi.mocked(window.electron.ipcRenderer.on);
const cleanupSpy = vi.fn();
onMock.mockReturnValue(cleanupSpy);
const { subscribeHostEvent } = await import('@/lib/host-events');
const unsubscribe = subscribeHostEvent(eventName, vi.fn());
expect(onMock).toHaveBeenCalledWith(eventName, expect.any(Function));
expect(createHostEventSourceMock).not.toHaveBeenCalled();
unsubscribe();
expect(cleanupSpy).toHaveBeenCalledTimes(1);
},
);
it('does not use SSE fallback by default for unknown events', async () => {
const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {});
const { subscribeHostEvent } = await import('@/lib/host-events');