Kontrakty schopností
Přehled vymáhá scripts/test-capability-contracts.mjs. Schopnost poskytovatele není úplná, dokud se neshoduje její schéma a mapování katalogu, spustitelná obsluha, odpovídající klient prohlížeče, pojmenovaná akce UI, dokumentace, zaměřený test chování a přibalené manifesty.
| Schopnost | Typy pluginů | Spustitelná trasa | Klient prohlížeče | Akce UI | Dokumentace | Zaměřené testy chování | Přibalené definice |
|---|---|---|---|---|---|---|---|
| Chat/dokončení | 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) — přesné směrování pluginu dorazí k vybranému poskytovateli u běžných i streamovaných požadavků | anthropic, codex-oauth, gemini, github, groq, huggingface, kimi-code, llama-cpp, mistral, mlx-lm, openai, openrouter |
| Vkládání | embedding | POST /api/ollama/embedGET /api/embeddings/models (pouze zjišťování) | 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) — schopnosti Hugging Face ignorují obecný endpoint Chatu a používají payloady úkolů | huggingface |
| Generování obrázků | 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) — generování používá vybraného poskytovatele a uživatelská nastavení OpenAI | comfyui, huggingface, openai, openrouter |
| Řeč na 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 posílá multipart požadavek kompatibilní s OpenAI na vybranou trasufrontend/e2e/stt.spec.ts (test:e2e) — řečový vstup poskytovatele zveřejní trasu a přepíše zaznamenaný zvuk | huggingface, openai |
| Text na řeč | 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 směruje společný alias modelu přes vybraný plugin a uživatelský ventilfrontend/e2e/tts-playback.spec.ts (test:e2e) — dávkové předčítání používá vybraný uložený hlas pro každou dávku | elevenlabs, huggingface, kyutai-tts-1.6b, kyutai-tts, longcat-audiodit, openai-tts, openai, openrouter, qwen-tts |
| Generování zvuku | 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) — modely OpenRouter se zvukovým výstupem streamují vygenerované bajty zvuku | openrouter |
| Generování videa | 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) — generování videa odesílá, dotazuje a stahuje přes endpoint poskytovatelescripts/test-openrouter-media-routing.mjs (test:package) — připravené publikace videa a obnovení řeší ztracená potvrzení commitů | openrouter |
Vymáhání
Kontrola balíčku odmítá nedeklarovaná schémata nebo typy pluginů, zastaralá mapování katalogu, trasy pouze pro zjišťování vydávané za spuštění, obsluhy bez odpovídajícího přenosu prohlížeče, akce UI bez volání a viditelného spouštěče, dokumentaci bez tvrzení specifických pro schopnost, testy bez chování v pojmenovaném případu, zastaralý generovaný přehled a neplatné endpointy manifestu, mapy modelů či výchozí hodnoty.
Generování vkládání běží přes POST /api/ollama/embed a lze jej směrovat do vybraného pluginu. GET /api/embeddings/models vypisuje modely; kontrola trasu eviduje pouze jako zjišťování a nikdy ji nepřijímá jako důkaz funkčnosti.
Zdrojový kontrakt identifikuje každý zaměřený test chování a jeho běh. Skripty backendu musí být registrované v test:package; specifikace frontendu musí najít skript test:e2e založený na Playwright. Živé zjišťování může zúžit katalog modelů, ale nevytváří novou spustitelnou schopnost.