// B0 smoke test — proves the OpenRouter free-chain answers through Mastra.
// Per-model 25s timeout + no auto-retry (Legea 4). First success wins.
import { Agent } from '@mastra/core/agent';

const FREE_MODELS = [
  'google/gemini-2.0-flash-exp:free',
  'meta-llama/llama-3.3-70b-instruct:free',
  'qwen/qwen3-coder:free',
  'nvidia/nemotron-3-ultra-550b-a55b:free',
  'openrouter/owl-alpha',
];

function withTimeout<T>(p: Promise<T>, ms: number): Promise<T> {
  return Promise.race([
    p,
    new Promise<T>((_, rej) => setTimeout(() => rej(new Error(`local-timeout ${ms}ms`)), ms)),
  ]);
}

async function tryModel(modelId: string): Promise<string | null> {
  const agent = new Agent({
    id: 'b0-smoke',
    name: 'b0-smoke',
    instructions: 'Răspunzi scurt, în română.',
    model: { providerId: 'openrouter', modelId, url: 'https://openrouter.ai/api/v1', apiKey: process.env.OPENROUTER_API_KEY ?? '' },
  });
  try {
    console.log(`  [try] ${modelId}`);
    const res = await withTimeout(agent.generate('Spune un singur cuvânt: salut.', { maxSteps: 1, maxRetries: 0 } as any), 25000);
    return (res as any).text;
  } catch (e: any) {
    console.log(`  [skip] ${modelId} -> ${e?.statusCode ?? ''} ${e?.data?.error?.message ?? e?.message ?? 'err'}`);
    return null;
  }
}

for (const m of FREE_MODELS) {
  const text = await tryModel(m);
  if (text && text.trim()) {
    console.log('B0_RESPONSE_START>>>');
    console.log(`model: ${m}`);
    console.log(`text:  ${text.trim()}`);
    console.log('<<<B0_RESPONSE_END');
    process.exit(0);
  }
}
console.log('B0_FAIL: toate modelele free au eșuat.');
process.exit(1);
