spb/zyquo-cloud-web Public MIT
Zyquo Cloud Web — every cloud model, one beautiful chat, entirely in your browser.
TypeScript 81.9%
CSS 8.9%
JavaScript 7.5%
Shell 1.1%
HTML 0.6%
1/*2 * testKey.ts3 * Zyquo Cloud Web4 *5 * Author: Simon-Pierre Boucher6 * Mail: contact@spboucher.ai7 *8 * Key validation, ported from the native ProviderClient extension: the9 * cheapest authenticated call available — /models where supported, otherwise10 * (Perplexity) a minimal non-streaming completion against the provider's11 * cheapest catalog model. Returns round-trip latency in ms.12 */1314import type { Provider } from '../types'15import { cheapestModel } from './catalog'16import { clientFor, PROVIDER_META } from './registry'17import { ProviderError } from './types'1819export async function testKey(20 provider: Provider,21 apiKey: string,22 baseURLOverride?: string23): Promise<number> {24 const client = clientFor(provider)25 const start = performance.now()26 if (PROVIDER_META[provider].supportsModelListing) {27 await client.listModelIDs(apiKey, baseURLOverride)28 } else {29 const model = cheapestModel(provider)30 if (!model) throw ProviderError.noModelAvailable(provider)31 await client.complete(32 {33 model,34 messages: [35 { id: 'key-test', role: 'user', text: 'Reply with exactly: OK', createdAt: 0 },36 ],37 // Perplexity requires max_tokens ≥ 16 (probe-verified, docs/CORS-MATRIX.md).38 parameters: { maxTokens: 16 },39 stream: false,40 ...(baseURLOverride !== undefined ? { baseURLOverride } : {}),41 },42 apiKey43 )44 }45 return performance.now() - start46}47