Route Lighthouse model defaults and business context onto the per-provider
configuration system (PATCH /lighthouse/config/<id>) and drop all use of the
legacy tenant configuration (/lighthouse/configuration, is_active) from the UI.
This fixes the 400 'No active configuration found' error when selecting a
Bedrock model in chat, and partially reverts 58539dced. The chat now resolves
the initial provider by a fixed priority (OpenAI > Bedrock > OpenAI-compatible)
and remembers the chosen model as the provider's default_model. Also narrows
the chat model combobox width.
Collapse the chain-of-thought by default with a pulsing Thinking header,
summarize tool calls as 'N tools called', and hide success outcomes.
Add a copy button and hover timestamps under each message (agent left,
user right).
Stream client: subscribe before POST without the open-event gate
(avoids a deadlock) and set the session URL with history.replaceState
instead of router.push (avoids remounting mid-stream).
Add a same-origin Next.js route handler that reverse-proxies the Django
SSE stream, so the browser EventSource connects same-origin (no CORS)
and the access token stays server-side.
Drop the unused per-message stream URL and stop revalidating /lighthouse
on session create (the force-dynamic route would otherwise remount the
chat and tear down the EventSource).
Move actions/components/lib/types for lighthouse v2 into
app/(prowler)/lighthouse/_{actions,components,lib,types}, matching the
co-located feature architecture used by /alerts. Update importers
(page, settings, sidebar) and add an _actions barrel.
Scope AI Elements per version: keep the legacy primitives under
components/lighthouse-v1/ai-elements, and add clean v2 copies under
_components/ai-elements (no memo/useMemo, per React Compiler).