Контракты возможностей
Перечень контролируется scripts/test-capability-contracts.mjs. Возможность полна только при согласовании схемы, каталога, handler, клиента, действия UI, документации, теста и манифестов.
| Возможность | Типы | Маршрут | Клиент | UI | Документация | Тесты | Определения |
|---|---|---|---|---|---|---|---|
| Chat/completion | 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 |
| Embeddings | 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) | 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) | comfyui, huggingface, openai, openrouter |
| STT | 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)frontend/e2e/stt.spec.ts (test:e2e) | huggingface, openai |
| TTS | 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)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 |
| Видео | 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) | openrouter |
Контроль
Проверка отклоняет незаявленные типы, старые сопоставления, discovery как выполнение, handler без клиента, действия без вызова, неполную документацию/тесты, старый перечень и неверные endpoint/map/default.
Embedding выполняется через POST /api/ollama/embed; GET /api/embeddings/models только перечисляет. Backend-тесты в test:package, frontend — test:e2e. Discovery не создаёт возможности.