| 1 | import { describe, expect, it, vi } from 'vitest' |
| 2 | |
| 3 | const logMocks = vi.hoisted(() => ({ |
| 4 | info: vi.fn(), |
| 5 | warn: vi.fn() |
| 6 | })) |
| 7 | |
| 8 | vi.mock('electron-log/main.js', () => ({ default: logMocks })) |
| 9 | |
| 10 | import { AgentManager } from '../../../src/main/agent-runtime/agent/manager' |
| 11 | |
| 12 | describe('AgentManager', () => { |
| 13 | it('keeps session and agent cache ownership without owning run cancellation', () => { |
| 14 | const manager = new AgentManager() |
| 15 | const entry = manager.ensureSession({ |
| 16 | sessionId: 'session-1', |
| 17 | provider: 'openai', |
| 18 | model: 'gpt-test', |
| 19 | projectDir: '/tmp/session-1' |
| 20 | }) |
| 21 | const pageAgent = { stream: vi.fn() } |
| 22 | |
| 23 | manager.setPageAgent('session-1', 'page-1', pageAgent) |
| 24 | expect(entry.pageAgents.get('page-1')).toBe(pageAgent) |
| 25 | |
| 26 | manager.clearCachedAgents('session-1') |
| 27 | expect(entry.pageAgents.size).toBe(0) |
| 28 | expect(entry.agent).toBeNull() |
| 29 | |
| 30 | manager.removeSession('session-1') |
| 31 | expect(manager.getSession('session-1')).toBeUndefined() |
| 32 | }) |
| 33 | |
| 34 | it('creates an in-memory cache entry without a database dependency', () => { |
| 35 | const manager = new AgentManager() |
| 36 | |
| 37 | const entry = manager.ensureSession({ |
| 38 | sessionId: 'session-2', |
| 39 | provider: 'anthropic', |
| 40 | model: ' claude-test ', |
| 41 | projectDir: '/tmp/session-2' |
| 42 | }) |
| 43 | |
| 44 | expect(entry).toMatchObject({ |
| 45 | provider: 'anthropic', |
| 46 | model: 'claude-test', |
| 47 | projectDir: '/tmp/session-2' |
| 48 | }) |
| 49 | }) |
| 50 | }) |
| 51 |