Ga naar hoofdinhoud

Capaciteitscontracten

Deze inventaris wordt afgedwongen door scripts/test-capability-contracts.mjs. Een providercapaciteit is pas compleet wanneer schema en catalogustoewijzing, uitvoerbare handler, bijpassende browserclient, benoemde UI-actie, documentatie, gerichte gedragstest en meegeleverde manifesten overeenkomen.

CapaciteitPlugintypenUitvoerbare routeBrowserclientUI-actieDocumentatieGerichte gedragstestsMeegeleverde definities
Chat/completionchat, completionWS /ws (chat_stream)frontend/src/hooks/useChat.tsfrontend/src/pages/ChatPage.tsxhandleSendMessagedocs/08-PLUGIN_ARCHITECTURE.mdscripts/test-chat-provider-selection.mjs (test:package) — exacte pluginroutering bereikt de gekozen provider voor gewone en streamingaanvragenanthropic, codex-oauth, gemini, github, groq, huggingface, kimi-code, llama-cpp, mistral, mlx-lm, openai, openrouter
EmbeddingsembeddingPOST /api/ollama/embed
GET /api/embeddings/models (alleen ontdekking)
frontend/src/utils/api/modelApi.tsfrontend/src/components/ModelManager.tsxhandleGenerateEmbeddingsdocs/09-RAG_FEATURE.mdscripts/test-plugin-capability-routing.mjs (test:package) — Hugging Face-capaciteiten gebruiken taakspecifieke payloads in plaats van het algemene Chat-endpointhuggingface
AfbeeldingsgeneratieimagePOST /api/image-gen/generatefrontend/src/utils/api/imageGenApi.tsfrontend/src/components/ImageGenerationPanel.tsxhandleGeneratedocs/38-MEDIA_GENERATION.mdscripts/test-image-generation-routing.mjs (test:package) — gebruikt gekozen provider en OpenAI-instellingen van de gebruikercomfyui, huggingface, openai, openrouter
Spraak naar tekststtPOST /api/stt/transcribefrontend/src/utils/api/sttApi.tsfrontend/src/hooks/useDictation.tstoggledocs/42-SPEECH_TO_TEXT.mdscripts/test-stt-routing.mjs (test:package) — stuurt OpenAI-compatibele multipartaanvraag
frontend/e2e/stt.spec.ts (test:e2e) — vermeldt route en transcribeert opname
huggingface, openai
Tekst naar spraakttsPOST /api/tts/generatefrontend/src/utils/api/ttsApi.tsfrontend/src/components/TTSButton.tsxhandlePlaydocs/38-MEDIA_GENERATION.mdscripts/test-tts-routing.mjs (test:package) — routeert alias via gekozen plugin en gebruiker
frontend/e2e/tts-playback.spec.ts (test:e2e) — hergebruikt opgeslagen stem per batch
elevenlabs, huggingface, kyutai-tts-1.6b, kyutai-tts, longcat-audiodit, openai-tts, openai, openrouter, qwen-tts
AudiogeneratieaudioPOST /api/media/sound/generatefrontend/src/utils/api/mediaApi.tsfrontend/src/components/MediaGenerationPanel.tsxhandleGeneratedocs/38-MEDIA_GENERATION.mdscripts/test-openrouter-media-routing.mjs (test:package) — OpenRouter streamt gegenereerde audiobytesopenrouter
VideogeneratievideoPOST /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) — verzendt, peilt en downloadt via provider
dezelfde test — voorbereide en hervatte publicaties herstellen verloren commitbevestigingen
openrouter

Handhaving

De pakketcontrole weigert niet-gedeclareerde schema- of plugintypen, verouderde catalogustoewijzingen, ontdekkingsroutes als uitvoering, handlers zonder browsertransport, UI-acties zonder zichtbare aanroep, documentatie zonder capaciteitsclaims, tests zonder gedrag, verouderde inventaris en ongeldige endpoints, modelmappen of standaardwaarden.

Embeddinggeneratie loopt via POST /api/ollama/embed; GET /api/embeddings/models is uitsluitend ontdekking en bewijst geen uitvoering.

Het broncontract benoemt elke test en runner. Backendscripts moeten in test:package staan; frontendspecificaties moeten door test:e2e met Playwright worden gevonden. Live ontdekking kan een catalogus beperken, maar creëert geen nieuwe uitvoerbare capaciteit.