feat: advance browser agent integration workflows

This commit is contained in:
go0p
2026-08-06 15:08:07 +08:00
parent c7891a6a9d
commit b11efcc79c
215 changed files with 35137 additions and 5442 deletions
@@ -0,0 +1,35 @@
import { describe, expect, it } from 'vitest';
import { ExtensionError } from '@/shared/errors';
import { browserAuthorizationWorkspaceRecovery } from './engine';
describe('browser authorization workspace lifecycle recovery', () => {
it.each([
['expired', '自然过期'],
['evicted', '容量达到上限'],
['engine_instance_changed', '引擎已经重启'],
['not_found', '引擎中不存在'],
['replaced', '新工作区替换'],
] as const)('maps %s to an actionable message', (reason, expected) => {
const error = new ExtensionError(
`authorization_workspace_${reason}`,
'server message',
{
reason,
workspaceId: 'workspace-old',
engineInstanceId: 'engine-current',
replacementWorkspaceId: reason === 'replaced' ? 'workspace-new' : undefined,
},
);
expect(browserAuthorizationWorkspaceRecovery(error)).toMatchObject({
reason,
message: expect.stringContaining(expected),
});
});
it('does not reinterpret unrelated bridge errors', () => {
expect(browserAuthorizationWorkspaceRecovery(
new ExtensionError('bridge_disconnected', 'offline'),
)).toBeUndefined();
});
});