Passa al contenuto principale

Contratti delle capability

Questo inventario è imposto da scripts/test-capability-contracts.mjs. Una capability di un provider non è completa finché schema e mappatura del catalogo, handler eseguibile, client del browser corrispondente, azione UI nominata, documentazione, test comportamentale mirato e manifest inclusi non concordano.

CapabilityTipi di pluginRoute eseguibileClient del browserAzione UIDocumentazioneTest comportamentali miratiDefinizioni incluse
Chat/completamentochat, completionWS /ws (chat_stream)frontend/src/hooks/useChat.tsfrontend/src/pages/ChatPage.tsxhandleSendMessagedocs/08-PLUGIN_ARCHITECTURE.mdscripts/test-chat-provider-selection.mjs (test:package) — il routing esatto del plugin raggiunge il provider selezionato per richieste normali e in streaminganthropic, codex-oauth, gemini, github, groq, huggingface, kimi-code, llama-cpp, mistral, mlx-lm, openai, openrouter
EmbeddingembeddingPOST /api/ollama/embed
GET /api/embeddings/models (solo scoperta)
frontend/src/utils/api/modelApi.tsfrontend/src/components/ModelManager.tsxhandleGenerateEmbeddingsdocs/09-RAG_FEATURE.mdscripts/test-plugin-capability-routing.mjs (test:package) — le capability Hugging Face ignorano l'endpoint Chat generico e usano payload specifici dell'attivitàhuggingface
Generazione immaginiimagePOST /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 generazione usa il provider selezionato e le impostazioni OpenAI limitate all'utentecomfyui, huggingface, openai, openrouter
Da voce a testosttPOST /api/stt/transcribefrontend/src/utils/api/sttApi.tsfrontend/src/hooks/useDictation.tstoggledocs/42-SPEECH_TO_TEXT.mdscripts/test-stt-routing.mjs (test:package) — STT invia una richiesta multipart compatibile con OpenAI alla route selezionata
frontend/e2e/stt.spec.ts (test:e2e) — l'input vocale dichiara la destinazione e trascrive l'audio registrato
huggingface, openai
Da testo a vocettsPOST /api/tts/generatefrontend/src/utils/api/ttsApi.tsfrontend/src/components/TTSButton.tsxhandlePlaydocs/38-MEDIA_GENERATION.mdscripts/test-tts-routing.mjs (test:package) — TTS instrada un alias condiviso tramite il plugin selezionato e la Valve dell'utente
frontend/e2e/tts-playback.spec.ts (test:e2e) — la lettura in batch riutilizza la voce salvata selezionata per ogni batch
elevenlabs, huggingface, kyutai-tts-1.6b, kyutai-tts, longcat-audiodit, openai-tts, openai, openrouter, qwen-tts
Generazione 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) — i modelli OpenRouter con output audio trasmettono in streaming i byte sonori generatiopenrouter
Generazione videovideoPOST /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) — il video viene inviato, controllato e scaricato tramite l'endpoint del provider
scripts/test-openrouter-media-routing.mjs (test:package) — le pubblicazioni preparate e riprese risolvono le conferme di commit perse
openrouter

Applicazione

Il gate del pacchetto rifiuta tipi di schema o plugin non dichiarati, mappature di catalogo obsolete, route di sola scoperta presentate come esecuzione, handler senza un trasporto browser corrispondente, azioni UI senza invocazione e trigger visibile, documentazione priva di affermazioni specifiche, test senza comportamento nel caso nominato, inventari generati obsoleti ed endpoint, mappe di modelli o valori predefiniti non validi nei manifest.

La generazione degli embedding avviene tramite POST /api/ollama/embed e può essere instradata a un plugin di embedding selezionato. GET /api/embeddings/models elenca i modelli; il gate lo registra come sola scoperta e non lo accetta mai come prova del funzionamento della generazione.

Il contratto sorgente identifica ogni test comportamentale mirato e il relativo runner. Gli script backend devono essere registrati in test:package; le specifiche frontend devono essere rilevabili dallo script test:e2e basato su Playwright. La scoperta live può restringere il catalogo dei modelli, ma non crea una nuova capability eseguibile.