import { describe, expect, it } from 'vitest' import { interpretRuntimeReadiness } from './runtime-readiness' describe('interpretRuntimeReadiness', () => { it('prefers runtime_check when both signals exist', () => { const result = interpretRuntimeReadiness({ setup: { provider_configured: false }, setupError: null, runtime: { ok: true }, runtimeError: null }) expect(result).toEqual({ checksDisagree: true, ready: true, reason: null, source: 'runtime_check' }) }) it('surfaces runtime mismatch details when runtime_check fails', () => { const result = interpretRuntimeReadiness({ setup: { provider_configured: true }, setupError: null, runtime: { error: 'No provider can serve the selected model.', ok: false }, runtimeError: null }) expect(result.ready).toBe(false) expect(result.source).toBe('runtime_check') expect(result.checksDisagree).toBe(true) expect(result.reason).toContain('No provider can serve the selected model.') expect(result.reason).toContain('setup.status reports configured credentials') }) it('falls back to setup.status when runtime_check has no boolean result', () => { const result = interpretRuntimeReadiness({ setup: { provider_configured: true }, setupError: null, runtime: null, runtimeError: 'runtime check RPC unavailable' }) expect(result).toEqual({ checksDisagree: false, ready: true, reason: null, source: 'setup_status' }) }) it('uses explicit fallback when both checks are missing', () => { const result = interpretRuntimeReadiness({ setup: null, setupError: 'setup.status timeout', runtime: null, runtimeError: 'setup.runtime_check timeout' }) expect(result.ready).toBe(false) expect(result.source).toBe('fallback') expect(result.reason).toBe('setup.runtime_check timeout') }) })