Aller au contenu principal

Contrats de capacités

Cet inventaire est appliqué par scripts/test-capability-contracts.mjs. Une capacité de fournisseur n’est complète que lorsque son schéma et sa correspondance dans le catalogue, son gestionnaire exécutable, le client de navigateur correspondant, l’action d’interface nommée, la documentation, le test comportemental ciblé et les manifestes inclus concordent.

CapacitéTypes de pluginsRoute exécutableClient du navigateurAction de l’interfaceDocumentationTests comportementaux ciblésDéfinitions incluses
Discussion / complétionchat, completionWS /ws (chat_stream)frontend/src/hooks/useChat.tsfrontend/src/pages/ChatPage.tsxhandleSendMessagedocs/08-PLUGIN_ARCHITECTURE.mdscripts/test-chat-provider-selection.mjs (test:package) — le routage exact du plugin atteint le fournisseur sélectionné pour les requêtes normales et en diffusionanthropic, codex-oauth, gemini, github, groq, huggingface, kimi-code, llama-cpp, mistral, mlx-lm, openai, openrouter
PlongementsembeddingPOST /api/ollama/embed
GET /api/embeddings/models (découverte uniquement)
frontend/src/utils/api/modelApi.tsfrontend/src/components/ModelManager.tsxhandleGenerateEmbeddingsdocs/09-RAG_FEATURE.mdscripts/test-plugin-capability-routing.mjs (test:package) — les capacités Hugging Face ignorent le point de terminaison générique Chat et utilisent des charges utiles propres à la tâchehuggingface
Génération d’imagesimagePOST /api/image-gen/generatefrontend/src/utils/api/imageGenApi.tsfrontend/src/components/ImageGenerationPanel.tsxhandleGeneratedocs/38-MEDIA_GENERATION.mdscripts/test-image-generation-routing.mjs (test:package) — la génération d’images utilise le fournisseur sélectionné et les paramètres OpenAI propres à l’utilisateurcomfyui, huggingface, openai, openrouter
Reconnaissance vocalesttPOST /api/stt/transcribefrontend/src/utils/api/sttApi.tsfrontend/src/hooks/useDictation.tstoggledocs/42-SPEECH_TO_TEXT.mdscripts/test-stt-routing.mjs (test:package) — STT envoie une requête multipart compatible avec OpenAI à la route sélectionnée
frontend/e2e/stt.spec.ts (test:e2e) — la saisie vocale du fournisseur indique sa route et transcrit l’audio enregistré
huggingface, openai
Synthèse vocalettsPOST /api/tts/generatefrontend/src/utils/api/ttsApi.tsfrontend/src/components/TTSButton.tsxhandlePlaydocs/38-MEDIA_GENERATION.mdscripts/test-tts-routing.mjs (test:package) — TTS achemine un alias de modèle partagé par le plugin sélectionné et la valve de l’utilisateur
frontend/e2e/tts-playback.spec.ts (test:e2e) — la lecture à voix haute par lots réutilise la voix enregistrée sélectionnée pour chaque lot
elevenlabs, huggingface, kyutai-tts-1.6b, kyutai-tts, longcat-audiodit, openai-tts, openai, openrouter, qwen-tts
Génération audioaudioPOST /api/media/sound/generatefrontend/src/utils/api/mediaApi.tsfrontend/src/components/MediaGenerationPanel.tsxhandleGeneratedocs/38-MEDIA_GENERATION.mdscripts/test-openrouter-media-routing.mjs (test:package) — les modèles de sortie audio OpenRouter diffusent les octets du son généréopenrouter
Génération vidéovideoPOST /api/media/video/generate
POST /api/media/video/jobs/:jobId/resume
frontend/src/utils/api/mediaApi.ts
frontend/src/utils/api/mediaApi.ts
frontend/src/components/MediaGenerationPanel.tsxhandleGeneratedocs/38-MEDIA_GENERATION.mdscripts/test-openrouter-media-routing.mjs (test:package) — la génération vidéo envoie, interroge et télécharge par le point de terminaison du fournisseur
scripts/test-openrouter-media-routing.mjs (test:package) — la préparation des vidéos et la reprise des publications résolvent la perte d’accusés de validation
openrouter

Application

Le contrôle du paquet rejette les schémas ou types de plugins non déclarés, les correspondances de catalogue obsolètes, les routes de découverte présentées comme routes d’exécution, les gestionnaires sans transport de navigateur correspondant, les actions d’interface sans invocation ni déclencheur visible, la documentation dépourvue d’affirmations propres à la capacité, les tests sans comportement dans le cas de test nommé, l’inventaire généré obsolète ainsi que les points de terminaison, correspondances de modèles ou valeurs par défaut invalides des manifestes.

La génération de plongements s’exécute par POST /api/ollama/embed et peut être acheminée vers un plugin de plongement sélectionné. GET /api/embeddings/models répertorie les modèles ; le contrôle l’enregistre comme route de découverte uniquement et ne l’accepte jamais comme preuve du fonctionnement de la génération de plongements.

Le contrat source identifie chaque test comportemental ciblé et son exécuteur. Les scripts du serveur dorsal doivent être enregistrés dans test:package ; les spécifications de l’interface doivent être détectables par le script test:e2e fondé sur Playwright. La découverte en direct peut restreindre un catalogue de modèles, mais elle ne crée pas de nouvelle capacité exécutable.