'use client' import { useState } from 'react' import AnalystSelector from './AnalystSelector' import { useRunSubmit } from '../hooks/useRunSubmit' import { DEFAULT_FORM } from '../types' import type { NewRunFormState } from '../types' function SectionHeader({ step, title, subtitle }: { step: number; title: string; subtitle?: string }) { return (
{step}
{title}
{subtitle && (
{subtitle}
)}
) } export default function RunConfigForm() { const [form, setForm] = useState(DEFAULT_FORM) const { submit, loading, error } = useRunSubmit() const set = (k: keyof NewRunFormState, v: unknown) => setForm((f) => ({ ...f, [k]: v })) return (
{ e.preventDefault(); submit(form) }} className="space-y-3" > {/* Error banner */} {error && (
{error}
)} {/* ── Section 1: Target ──────────────────────────────────────── */}
set('ticker', e.target.value.toUpperCase())} required />
set('date', e.target.value)} required />
{/* ── Section 2: Model ───────────────────────────────────────── */}
set('deep_think_llm', e.target.value)} />
set('quick_think_llm', e.target.value)} />
set('max_debate_rounds', Number(e.target.value))} />
set('max_risk_discuss_rounds', Number(e.target.value))} />
{/* ── Section 3: Analysts ────────────────────────────────────── */}
set('enabled_analysts', v)} />
{/* ── Submit ──────────────────────────────────────────────────── */}

Analysis takes 2–5 minutes depending on model and configuration.

) }