Förmågekontrakt
Inventeringen upprätthålls av scripts/test-capability-contracts.mjs. En leverantörsförmåga är inte komplett förrän dess schema och katalogmappning, körbara hanterare, matchande webbläsarklient, namngivna UI-åtgärd, dokumentation, fokuserade beteendetest och medföljande manifest överensstämmer.
| Förmåga | Plugintyper | Körbar rutt | Webbläsarklient | UI-åtgärd | Dokumentation | Fokuserade beteendetest | Medföljande definitioner |
|---|---|---|---|---|---|---|---|
| Chatt/komplettering | 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) — exakt plugindirigering når vald leverantör för vanliga och strömmande begäranden | anthropic, codex-oauth, gemini, github, groq, huggingface, kimi-code, llama-cpp, mistral, mlx-lm, openai, openrouter |
| Inbäddningar | embedding | POST /api/ollama/embedGET /api/embeddings/models (endast identifiering) | 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-förmågor ignorerar den generiska Chatt-endpointen och använder uppgiftspayloads | huggingface |
| Bildgenerering | 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) — bildgenerering använder vald leverantör och användaravgränsade OpenAI-inställningar | comfyui, huggingface, openai, openrouter |
| Tal till 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 skickar en OpenAI-kompatibel multipartbegäran till vald ruttfrontend/e2e/stt.spec.ts (test:e2e) — leverantörens talindata visar rutten och transkriberar inspelat ljud | huggingface, openai |
| Text till tal | 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 dirigerar ett gemensamt modellalias genom valt plugin och användarventilfrontend/e2e/tts-playback.spec.ts (test:e2e) — batchad uppläsning återanvänder vald sparad röst för varje batch | elevenlabs, huggingface, kyutai-tts-1.6b, kyutai-tts, longcat-audiodit, openai-tts, openai, openrouter, qwen-tts |
| Ljudgenerering | 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 ljudutdata strömmar genererade ljudbyte | 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 skickar, avsöker och hämtar genom leverantörens endpointscripts/test-openrouter-media-routing.mjs (test:package) — förberedda video- och återupptagningspubliceringar löser förlorade commit-bekräftelser | openrouter |
Tillämpning
Paketgrinden avvisar odeklarerade scheman eller plugintyper, inaktuella katalogmappningar, rutter som endast identifierar men presenteras som körning, hanterare utan matchande webbläsartransport, UI-åtgärder utan anrop och synlig utlösare, dokumentation utan förmågespecifika påståenden, test utan beteende i det namngivna fallet, inaktuell genererad inventering samt ogiltiga manifestendpoints, modellmappningar och standardvärden.
Inbäddningsgenerering körs genom POST /api/ollama/embed och kan dirigeras till ett valt inbäddningsplugin. GET /api/embeddings/models listar modeller; grinden registrerar rutten som enbart identifiering och accepterar den aldrig som bevis på att genereringen fungerar.
Källkontraktet identifierar varje fokuserat beteendetest och dess körprogram. Backendskript måste registreras i test:package; frontendspecifikationer måste hittas av det Playwright-baserade test:e2e-skriptet. Liveidentifiering kan begränsa en modellkatalog men skapar ingen ny körbar förmåga.