Контракти можливостей
Цей перелік перевіряє scripts/test-capability-contracts.mjs. Можливість провайдера не вважається завершеною, доки не узгоджено її схему й відповідність каталогу, виконуваний обробник, клієнт браузера, названу дію інтерфейсу, документацію, цільовий поведінковий тест і вбудовані маніфести.
| Можливість | Типи плагінів | Виконуваний маршрут | Клієнт браузера | Дія інтерфейсу | Документація | Цільові поведінкові тести | Вбудовані визначення |
|---|---|---|---|---|---|---|---|
| Чат / доповнення | 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) — точний маршрут плагіна досягає вибраного провайдера для звичайних і потокових запитів | anthropic, codex-oauth, gemini, github, groq, huggingface, kimi-code, llama-cpp, mistral, mlx-lm, openai, openrouter |
| Векторні подання | embedding | POST /api/ollama/embedGET /api/embeddings/models (лише виявлення) | 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 ігнорують загальну кінцеву точку Chat і використовують дані завдання | huggingface |
| Генерування зображень | 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) — генерування використовує вибраного провайдера та налаштування OpenAI користувача | comfyui, huggingface, openai, openrouter |
| Мова в текст | 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 надсилає сумісний з OpenAI multipart-запит вибраним маршрутомfrontend/e2e/stt.spec.ts (test:e2e) — голосове введення провайдера розкриває маршрут і транскрибує запис | huggingface, openai |
| Текст у мовлення | 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 спрямовує спільний псевдонім моделі через вибраний плагін і клапан користувачаfrontend/e2e/tts-playback.spec.ts (test:e2e) — пакетне читання повторно використовує вибраний збережений голос | elevenlabs, huggingface, kyutai-tts-1.6b, kyutai-tts, longcat-audiodit, openai-tts, openai, openrouter, qwen-tts |
| Генерування звуку | 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 передають створені звукові байти потоком | openrouter |
| Генерування відео | 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) — відео надсилається, опитується й завантажується через кінцеву точку провайдераscripts/test-openrouter-media-routing.mjs (test:package) — підготовлені публікації відновлення долають утрачені підтвердження commit | openrouter |
Застосування контракту
Перевірка пакета відхиляє неоголошені типи схем або плагінів, застарілі відповідності каталогу, маршрути лише для виявлення, представлені як виконувані, обробники без браузерного транспорту, дії інтерфейсу без виклику та видимого елемента, документацію без тверджень про конкретну можливість, тести без поведінки в названому випадку, застарілий перелік і неправильні кінцеві точки, карти моделей або типові значення маніфестів.
Векторні подання генеруються через POST /api/ollama/embed і можуть спрямовуватися до вибраного плагіна. GET /api/embeddings/models перелічує моделі; перевірка вважає його лише маршрутом виявлення й ніколи не приймає як доказ роботи генерації.
Вихідний контракт визначає кожен цільовий поведінковий тест і його засіб запуску. Сценарії сервера мають бути зареєстровані в test:package, а специфікації фронтенду — виявлятися сценарієм test:e2e на основі Playwright. Поточне виявлення може звузити каталог, але не створює нової виконуваної можливості.