SPB Git

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.4 KB · 47 lines typescript
Raw Blame History
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