import { describe, expect, it } from 'bun:test' import { defineConfig, resolveProviderKind } from './config' describe('brain.providerKind default-OFF (Router opt-in)', () => { it('a plain config has NO providerKind (absent === direct)', () => { const cfg = defineConfig({ network: '0g-mainnet' }) expect(cfg.brain.providerKind).toBeUndefined() expect(resolveProviderKind(cfg.brain)).toBe('direct') }) it('a Direct config keeps provider/model and resolves to direct', () => { const cfg = defineConfig({ network: '0g-mainnet', brain: { provider: '0xprovider', model: 'qwen3.6-plus' }, }) expect(cfg.brain.provider).toBe('0xprovider') expect(resolveProviderKind(cfg.brain)).toBe('direct') }) it('a Router config round-trips providerKind + router block', () => { const cfg = defineConfig({ network: '0g-mainnet', brain: { provider: null, model: 'minimax-m3', providerKind: 'router', router: { baseUrl: 'https://router-api.0g.ai/v1', managementKeyRef: 'router-secrets' }, }, }) expect(resolveProviderKind(cfg.brain)).toBe('router') expect(cfg.brain.model).toBe('minimax-m3') expect(cfg.brain.router?.baseUrl).toBe('https://router-api.0g.ai/v1') expect(cfg.brain.router?.managementKeyRef).toBe('router-secrets') }) it('NEVER carries a secret in the router block (managementKeyRef is a label, not a key)', () => { const cfg = defineConfig({ network: '0g-mainnet', brain: { provider: null, model: 'minimax-m3', providerKind: 'router', router: { managementKeyRef: 'router-secrets' }, }, }) const serialized = JSON.stringify(cfg) expect(serialized).not.toContain('sk-') expect(serialized).not.toContain('mk-') }) it('resolveProviderKind tolerates null/undefined brain', () => { expect(resolveProviderKind(null)).toBe('direct') expect(resolveProviderKind(undefined)).toBe('direct') expect(resolveProviderKind({})).toBe('direct') }) })