Egenskabskontrakter
Oversigten håndhæves af scripts/test-capability-contracts.mjs. En udbyderegenskab er ikke komplet, før dens skema og katalogtilknytning, eksekverbare håndtering, matchende browserklient, navngivne UI-handling, dokumentation, fokuserede adfærdstest og medfølgende manifester stemmer overens.
| Egenskab | Plugintyper | Eksekverbar rute | Browserklient | UI-handling | Dokumentation | Fokuserede adfærdstest | Medfølgende definitioner |
|---|---|---|---|---|---|---|---|
| Chat/fuldførelse | 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) — præcis pluginrouting når den valgte udbyder for normale og streamede anmodninger | anthropic, codex-oauth, gemini, github, groq, huggingface, kimi-code, llama-cpp, mistral, mlx-lm, openai, openrouter |
| Indlejringer | embedding | POST /api/ollama/embedGET /api/embeddings/models (kun registrering) | 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-egenskaber ignorerer den generiske Chat-endpoint og bruger opgavepayloads | huggingface |
| Billedgenerering | 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) — billedgenerering bruger den valgte udbyder og brugerafgrænsede OpenAI-indstillinger | comfyui, huggingface, openai, openrouter |
| Tale til tekst | 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 sender en OpenAI-kompatibel multipart-anmodning til valgt rutefrontend/e2e/stt.spec.ts (test:e2e) — udbyderens taleinput viser ruten og transskriberer optaget lyd | huggingface, openai |
| Tekst til tale | 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 dirigerer et fælles modelalias gennem valgt plugin og brugerventilfrontend/e2e/tts-playback.spec.ts (test:e2e) — batchoplæsning genbruger den valgte gemte stemme for hver batch | elevenlabs, huggingface, kyutai-tts-1.6b, kyutai-tts, longcat-audiodit, openai-tts, openai, openrouter, qwen-tts |
| Lydgenerering | 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-modeller med lydoutput streamer genererede lydbytes | openrouter |
| Videogenerering | 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) — videogenerering sender, forespørger og henter gennem udbyderendpointenscripts/test-openrouter-media-routing.mjs (test:package) — forberedte video- og genoptagelsespublikationer løser mistede commit-bekræftelser | openrouter |
Håndhævelse
Pakkekontrollen afviser ikke-deklarerede skemaer eller plugintyper, forældede katalogtilknytninger, registreringsruter præsenteret som kørsel, håndteringer uden matchende browsertransport, UI-handlinger uden kald og synlig udløser, dokumentation uden egenskabsspecifikke påstande, test uden adfærd i den navngivne sag, forældet genereret oversigt samt ugyldige manifestendpoints, modeltilknytninger og standardværdier.
Indlejringsgenerering kører gennem POST /api/ollama/embed og kan dirigeres til et valgt indlejringsplugin. GET /api/embeddings/models viser modeller; kontrollen registrerer ruten som ren registrering og accepterer den aldrig som bevis på, at genereringen virker.
Kildekontrakten identificerer hver fokuseret adfærdstest og dens kørsel. Backendscripts skal registreres i test:package; frontendspecifikationer skal kunne findes af det Playwright-baserede test:e2e-script. Liveregistrering kan indsnævre et modelkatalog, men opretter ingen ny eksekverbar egenskab.