/* Pure client contract checks. Synthetic data stays in tests only. */ const assert = require('node:assert/strict'); const fs = require('node:fs'); const vm = require('node:vm'); const path = require('node:path'); const client = path.join(__dirname,'../src/antigravity_provider/router/web/static'); const elements = new Map(); const document = {addEventListener(){},getElementById(id){if(!elements.has(id)) elements.set(id,{innerHTML:'',textContent:''});return elements.get(id);}}; const context = vm.createContext({document,Intl,Number,console,escapeHtml:value=>String(value ?? '').replaceAll('<','<').replaceAll('"','"')}); vm.runInContext(fs.readFileSync(path.join(client,'workspace.js'),'utf8'),context); const snapshot = {providers:[{provider_id:'test',discovered_models:['measured-model'],last_refresh_at:'2026-08-31'}]}; const choices = context.modelOptions(snapshot,{provider:'test',preferred_models:['invented-model']},'old-model'); assert(choices.includes('measured-model')); assert(!choices.includes('invented-model')); assert(choices.includes('selected disabled>old-model')); assert(context.modelOptions({providers:[]},{provider:'test'},'').includes('ещё не получен')); assert(context.modelOptions({providers:[{provider_id:'test',discovered_models:[],last_refresh_at:'today'}]},{provider:'test'},'').includes('Доступных моделей нет')); assert(!context.routeQuota({profile_id:'a',quota_snapshot:{buckets:[{label:'quota',remaining_percent:null}]}},{}).includes('width:0%')); assert(context.routeQuota({profile_id:'a',quota_snapshot:{buckets:[{label:'quota',remaining_percent:0}]}},{}).includes('0%')); context.renderHostResources(document.getElementById('host'),{cpu_percent:0,memory_percent:52,disk_percent:null}); assert(document.getElementById('host').innerHTML.includes('>0%')); assert(document.getElementById('host').innerHTML.includes('>52%')); assert(!document.getElementById('host').innerHTML.includes('null%')); context.renderAnalyticsCharts({by_provider:{test:{total_tokens:321}},by_role:{coder:{total_calls:7}}}); assert(document.getElementById('analytics-token-chart').innerHTML.includes('321')); assert(document.getElementById('analytics-role-chart').innerHTML.includes('7')); context.renderLogDetail({message:'',level:'info'}); assert(!document.getElementById('log-detail').innerHTML.includes('