From b75f7fc4ef84363b6185ea38f7a95373a29922cd Mon Sep 17 00:00:00 2001 From: William Valentin Date: Tue, 17 Feb 2026 09:55:11 -0800 Subject: [PATCH] test(routing): cover status backend output fast-path --- src/daemon/routing.test.ts | 72 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/src/daemon/routing.test.ts b/src/daemon/routing.test.ts index b3f4da8..7f190a4 100644 --- a/src/daemon/routing.test.ts +++ b/src/daemon/routing.test.ts @@ -423,6 +423,78 @@ describe('daemon command fast-path integration', () => { expect(session.setConfig).toHaveBeenCalledWith('queue.mode', 'followup'); }); + it('includes external backend in status fast-path output', async () => { + const processSpy = vi.spyOn(AgentOrchestrator.prototype, 'process'); + const session = { + id: 'telegram:user-status-backend', + addMessage: vi.fn(), + getHistory: vi.fn(() => []), + clear: vi.fn(), + replaceHistory: vi.fn(), + getConfig: vi.fn(() => undefined), + setConfig: vi.fn(), + deleteConfig: vi.fn(), + }; + + const commandRegistry = new CommandRegistry(); + registerBuiltinCommands(commandRegistry); + + const router = createMessageRouter({ + sessionManager: { + getSession: vi.fn(() => session), + } as unknown as MessageRouterDeps['sessionManager'], + modelRouter: { + getAvailableTiers: () => ['fast', 'default', 'complex', 'local'], + getAllLabels: () => ({ fast: 'fast', default: 'default', complex: 'complex', local: 'local' }), + getLabel: (tier: string) => tier, + } as unknown as MessageRouterDeps['modelRouter'], + systemPrompt: 'test prompt', + toolRegistry: { + clone() { return this; }, + register: vi.fn(), + } as unknown as MessageRouterDeps['toolRegistry'], + toolExecutor: {} as unknown as MessageRouterDeps['toolExecutor'], + config: { + agents: { + primary_tier: 'default', + delegation: { + compaction: 'fast', + memory_extraction: 'fast', + classification: 'fast', + tool_summarisation: 'fast', + complex_reasoning: 'complex', + }, + max_delegation_depth: 3, + max_iterations: 10, + }, + compaction: { enabled: false }, + models: { default: { provider: 'anthropic', model: 'claude' } }, + } as unknown as MessageRouterDeps['config'], + commandRegistry, + externalBackends: { + codex: { + name: 'codex', + process: vi.fn(async () => 'unused'), + }, + } as unknown as MessageRouterDeps['externalBackends'], + defaultExternalBackendName: 'codex', + }); + + const reply = vi.fn(async (_message: OutboundMessage) => {}); + await router.handler({ + id: 'm-status-backend', + channel: 'telegram', + senderId: 'user-status-backend', + text: '/status', + timestamp: Date.now(), + metadata: { isCommand: true, command: 'status' }, + } as MessageRouterInput, reply); + + expect(processSpy).not.toHaveBeenCalled(); + const outbound = reply.mock.calls[0]?.[0] as OutboundMessage | undefined; + expect(outbound?.text).toContain('Backend: codex'); + }); + it('uses intent match to override agent target', async () => { const session = { id: 'telegram:user-2',