Contracte de capabilități
Acest inventar este aplicat de scripts/test-capability-contracts.mjs. O capabilitate a furnizorului nu este completă până când schema și maparea catalogului, handler-ul executabil, clientul de browser corespunzător, acțiunea UI denumită, documentația, testul comportamental focalizat și manifestele incluse nu corespund.
| Capabilitate | Tipuri de pluginuri | Rută executabilă | Client de browser | Acțiune UI | Documentație | Teste comportamentale focalizate | Definiții incluse |
|---|---|---|---|---|---|---|---|
| Chat / completare | 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) — rutarea exactă a pluginului ajunge la furnizorul selectat pentru cereri obișnuite și în flux | anthropic, codex-oauth, gemini, github, groq, huggingface, kimi-code, llama-cpp, mistral, mlx-lm, openai, openrouter |
| Embeddings | embedding | POST /api/ollama/embedGET /api/embeddings/models (numai descoperire) | 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) — capabilitățile Hugging Face ignoră endpoint-ul generic Chat și folosesc sarcini drept conținut util | huggingface |
| Generare de imagini | 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) — generarea imaginilor folosește furnizorul selectat și setările OpenAI ale utilizatorului | comfyui, huggingface, openai, openrouter |
| Vorbire în 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 trimite o cerere multipart compatibilă cu OpenAI pe ruta selectatăfrontend/e2e/stt.spec.ts (test:e2e) — intrarea vocală a furnizorului își dezvăluie ruta și transcrie sunetul înregistrat | huggingface, openai |
| Text în vorbire | 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 rutează un alias comun de model prin pluginul selectat și valva utilizatoruluifrontend/e2e/tts-playback.spec.ts (test:e2e) — citirea pe loturi reutilizează vocea salvată selectată pentru fiecare lot | elevenlabs, huggingface, kyutai-tts-1.6b, kyutai-tts, longcat-audiodit, openai-tts, openai, openrouter, qwen-tts |
| Generare audio | 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) — modelele de ieșire audio OpenRouter transmit în flux octeții sunetului generat | openrouter |
| Generare video | 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) — generarea video trimite, verifică și descarcă prin endpoint-ul furnizoruluiscripts/test-openrouter-media-routing.mjs (test:package) — publicările video pregătite și reluate rezolvă confirmările de commit pierdute | openrouter |
Aplicare
Poarta pachetului respinge scheme sau tipuri de plugin nedeclarate, mapări de catalog învechite, rute numai pentru descoperire prezentate drept execuție, handler-e fără transport de browser corespunzător, acțiuni UI fără invocare și declanșator vizibil, documentație fără afirmații specifice capabilității, teste fără comportament în cazul de test denumit, inventar generat învechit și endpoint-uri, mapări de modele sau valori implicite nevalide în manifest.
Generarea embedding-urilor se execută prin POST /api/ollama/embed și poate fi rutată către un plugin de embedding selectat. GET /api/embeddings/models listează modelele; poarta îl înregistrează ca fiind numai pentru descoperire și nu îl acceptă niciodată drept dovadă că generarea embedding-urilor funcționează.
Contractul sursă identifică fiecare test comportamental focalizat și runner-ul acestuia. Scripturile backend trebuie înregistrate în test:package; specificațiile frontend trebuie să poată fi descoperite de scriptul test:e2e bazat pe Playwright. Descoperirea live poate restrânge un catalog de modele, dar nu creează o capabilitate executabilă nouă.