Fähigkeitsverträge
Dieses Inventar wird von scripts/test-capability-contracts.mjs durchgesetzt. Eine Anbieterfähigkeit ist erst vollständig, wenn Schema und Katalogzuordnung, ausführbarer Handler, passender Browserclient, benannte Oberflächenaktion, Dokumentation, fokussierter Verhaltenstest und gebündelte Definitionen übereinstimmen.
| Fähigkeit | Plugin-Typen | Ausführbare Route | Browserclient | Oberflächenaktion | Dokumentation | Fokussierte Verhaltenstests | Gebündelte Definitionen |
|---|---|---|---|---|---|---|---|
| Chat / Vervollständigung | chat, completion | WS /ws (chat_stream) | frontend/src/hooks/useChat.ts | frontend/src/pages/ChatPage.tsx — handleSendMessage | docs/08-PLUGIN_ARCHITECTURE.md | scripts/test-chat-provider-selection.mjs (test:package) — die exakte Plugin-Weiterleitung erreicht den gewählten Anbieter bei regulären und Streaming-Anfragen | anthropic, codex-oauth, gemini, github, groq, huggingface, kimi-code, llama-cpp, mistral, mlx-lm, openai, openrouter |
| Einbettungen | embedding | POST /api/ollama/embedGET /api/embeddings/models (nur Ermittlung) | frontend/src/utils/api/modelApi.ts | frontend/src/components/ModelManager.tsx — handleGenerateEmbeddings | docs/09-RAG_FEATURE.md | scripts/test-plugin-capability-routing.mjs (test:package) — Hugging Face-Fähigkeiten umgehen den allgemeinen Chat-Endpunkt und verwenden aufgabenspezifische Nutzdaten | huggingface |
| Bilderzeugung | image | POST /api/image-gen/generate | frontend/src/utils/api/imageGenApi.ts | frontend/src/components/ImageGenerationPanel.tsx — handleGenerate | docs/38-MEDIA_GENERATION.md | scripts/test-image-generation-routing.mjs (test:package) — die Bilderzeugung nutzt den ausgewählten Anbieter und benutzerspezifische OpenAI-Einstellungen | comfyui, huggingface, openai, openrouter |
| Sprache zu Text | stt | POST /api/stt/transcribe | frontend/src/utils/api/sttApi.ts | frontend/src/hooks/useDictation.ts — toggle | docs/42-SPEECH_TO_TEXT.md | scripts/test-stt-routing.mjs (test:package) — STT sendet eine OpenAI-kompatible Multipart-Anfrage an die gewählte Routefrontend/e2e/stt.spec.ts (test:e2e) — die Spracheingabe weist ihre Route aus und transkribiert aufgezeichnetes Audio | huggingface, openai |
| Text zu Sprache | tts | POST /api/tts/generate | frontend/src/utils/api/ttsApi.ts | frontend/src/components/TTSButton.tsx — handlePlay | docs/38-MEDIA_GENERATION.md | scripts/test-tts-routing.mjs (test:package) — TTS leitet einen gemeinsamen Modellalias durch das gewählte Plugin und Benutzerventilfrontend/e2e/tts-playback.spec.ts (test:e2e) — die stapelweise Wiedergabe nutzt für jeden Stapel die gespeicherte Stimme | elevenlabs, huggingface, kyutai-tts-1.6b, kyutai-tts, longcat-audiodit, openai-tts, openai, openrouter, qwen-tts |
| Audioerzeugung | audio | POST /api/media/sound/generate | frontend/src/utils/api/mediaApi.ts | frontend/src/components/MediaGenerationPanel.tsx — handleGenerate | docs/38-MEDIA_GENERATION.md | scripts/test-openrouter-media-routing.mjs (test:package) — OpenRouter-Audioausgabemodelle streamen erzeugte Klangbytes | openrouter |
| Videoerzeugung | video | POST /api/media/video/generatePOST /api/media/video/jobs/:jobId/resume | frontend/src/utils/api/mediaApi.tsfrontend/src/utils/api/mediaApi.ts | frontend/src/components/MediaGenerationPanel.tsx — handleGenerate | docs/38-MEDIA_GENERATION.md | scripts/test-openrouter-media-routing.mjs (test:package) — die Videoerzeugung sendet, fragt ab und lädt über den Anbieterendpunkt herunterscripts/test-openrouter-media-routing.mjs (test:package) — vorbereitete Videos und Fortsetzungen behandeln verlorene Bestätigungen | openrouter |
Durchsetzung
Die Paketprüfung verwirft nicht deklarierte Schemas oder Plugin-Typen, veraltete Katalogzuordnungen, als Ausführung dargestellte Ermittlungsrouten, Handler ohne passenden Browsertransport, Oberflächenaktionen ohne Aufruf und sichtbaren Auslöser, Dokumentation ohne fähigkeitsspezifische Aussagen, Tests ohne Verhalten im genannten Fall, veraltete Inventare sowie ungültige Endpunkte, Modellkarten oder Standardwerte.
Einbettungen werden über POST /api/ollama/embed erzeugt und können an ein gewähltes Einbettungs-Plugin geleitet werden. GET /api/embeddings/models listet Modelle auf; die Prüfung erfasst ihn nur als Ermittlungsroute und akzeptiert ihn nie als Nachweis für funktionierende Erzeugung.
Der Quellvertrag benennt jeden fokussierten Test und seinen Runner. Backend-Skripte müssen in test:package registriert und Frontend-Spezifikationen vom Playwright-basierten test:e2e auffindbar sein. Live-Ermittlung kann einen Katalog einschränken, schafft aber keine neue ausführbare Fähigkeit.