feat(diagnostic): Sprachmodell per Tier-Dropdown waehlen (Opus/Sonnet/Haiku)

ARIA laeuft ueber das Claude-Max-Abo via CLI — waehlbar ist der Tier, nicht
eine feste Modellversion (die CLI nimmt automatisch das aktuelle Modell des
Tiers). Kein API-Key → keine echte Anthropic-Models-API; daher kuratierte Liste.

- proxy routes.js handleModels: kuratierte /v1/models mit tier/display_name/
  description (ids bleiben MODEL_MAP-kompatibel: claude-sonnet-4/opus-4/haiku-4).
- diagnostic server.js: neuer GET /api/models-list — holt die Liste vom Proxy
  (Frontend erreicht den Proxy nicht direkt).
- Frontend: Dropdown statt Freitext + „↻ Aktualisieren"-Button; markiert das
  aktive brainModel (get_model), zeigt Beschreibung, „Setzen" schreibt brainModel
  und weist auf Brain-Neustart hin. Freitext-Override bleibt unter „Erweitert".
  Liste wird bei WS-Connect automatisch geladen.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-10 22:13:17 +02:00
co-authored by Claude Opus 4.8
parent 1b48307907
commit 44f4067834
3 changed files with 118 additions and 18 deletions
+18 -12
View File
@@ -453,26 +453,32 @@ async function handleNonStreamingResponse(res, subprocess, cliInput, requestId)
* Returns available models
*/
export function handleModels(_req, res) {
// ARIA laeuft ueber das Claude-Max-Abo via CLI — waehlbar ist der TIER
// (opus/sonnet/haiku), nicht eine feste Modellversion. Die CLI loest den
// Alias auf das AKTUELLE Modell des Tiers auf. Die id-Strings muessen von
// openai-to-cli.js extractModel() erkannt werden (MODEL_MAP). display_name/
// tier/description sind ARIA-Zusatzfelder fuers Diagnostic-Dropdown.
const created = Math.floor(Date.now() / 1000);
res.json({
object: "list",
data: [
{
id: "claude-opus-4",
object: "model",
owned_by: "anthropic",
created: Math.floor(Date.now() / 1000),
id: "claude-sonnet-4", object: "model", owned_by: "anthropic", created,
tier: "sonnet",
display_name: "Sonnet (aktuell: Sonnet 5)",
description: "Schnell & gut — Standard fuer den Alltag.",
},
{
id: "claude-sonnet-4",
object: "model",
owned_by: "anthropic",
created: Math.floor(Date.now() / 1000),
id: "claude-opus-4", object: "model", owned_by: "anthropic", created,
tier: "opus",
display_name: "Opus (aktuell: Opus 4.8)",
description: "Langsamer, aber am schlausten — fuer schwere/lange Aufgaben.",
},
{
id: "claude-haiku-4",
object: "model",
owned_by: "anthropic",
created: Math.floor(Date.now() / 1000),
id: "claude-haiku-4", object: "model", owned_by: "anthropic", created,
tier: "haiku",
display_name: "Haiku (aktuell: Haiku 4.5)",
description: "Sehr schnell & guenstig, kleinerer Kontext — fuer einfache Tasks.",
},
],
});