Lewati ke konten utama

Kontrak Kapabilitas

Inventaris ini ditegakkan oleh scripts/test-capability-contracts.mjs. Sebuah kapabilitas penyedia belum lengkap sampai skema dan pemetaan katalognya, handler yang dapat dieksekusi, klien peramban yang sesuai, tindakan UI bernama, dokumentasi, pengujian perilaku terfokus, serta manifes yang disertakan semuanya selaras.

KapabilitasJenis pluginRute yang dapat dieksekusiKlien perambanTindakan UIDokumentasiPengujian perilaku terfokusDefinisi yang disertakan
Chat / pelengkapanchat, completionWS /ws (chat_stream)frontend/src/hooks/useChat.tsfrontend/src/pages/ChatPage.tsxhandleSendMessagedocs/08-PLUGIN_ARCHITECTURE.mdscripts/test-chat-provider-selection.mjs (test:package) — perutean plugin yang persis mencapai penyedia terpilih untuk permintaan biasa dan streaminganthropic, codex-oauth, gemini, github, groq, huggingface, kimi-code, llama-cpp, mistral, mlx-lm, openai, openrouter
EmbeddingembeddingPOST /api/ollama/embed
GET /api/embeddings/models (hanya penemuan)
frontend/src/utils/api/modelApi.tsfrontend/src/components/ModelManager.tsxhandleGenerateEmbeddingsdocs/09-RAG_FEATURE.mdscripts/test-plugin-capability-routing.mjs (test:package) — kapabilitas Hugging Face mengabaikan endpoint Chat generik dan menggunakan payload tugashuggingface
Pembuatan gambarimagePOST /api/image-gen/generatefrontend/src/utils/api/imageGenApi.tsfrontend/src/components/ImageGenerationPanel.tsxhandleGeneratedocs/38-MEDIA_GENERATION.mdscripts/test-image-generation-routing.mjs (test:package) — pembuatan gambar menggunakan penyedia yang dipilih dan pengaturan OpenAI yang dibatasi per penggunacomfyui, huggingface, openai, openrouter
Ucapan ke tekssttPOST /api/stt/transcribefrontend/src/utils/api/sttApi.tsfrontend/src/hooks/useDictation.tstoggledocs/42-SPEECH_TO_TEXT.mdscripts/test-stt-routing.mjs (test:package) — STT mengirim permintaan multipart kompatibel OpenAI ke rute terpilih
frontend/e2e/stt.spec.ts (test:e2e) — input ucapan penyedia mengungkapkan rutenya dan mentranskripsikan audio yang direkam
huggingface, openai
Teks ke ucapanttsPOST /api/tts/generatefrontend/src/utils/api/ttsApi.tsfrontend/src/components/TTSButton.tsxhandlePlaydocs/38-MEDIA_GENERATION.mdscripts/test-tts-routing.mjs (test:package) — TTS merutekan alias model bersama melalui plugin dan valve pengguna yang dipilih
frontend/e2e/tts-playback.spec.ts (test:e2e) — pembacaan nyaring berbentuk batch menggunakan ulang suara tersimpan yang dipilih untuk setiap batch
elevenlabs, huggingface, kyutai-tts-1.6b, kyutai-tts, longcat-audiodit, openai-tts, openai, openrouter, qwen-tts
Pembuatan 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) — model keluaran audio OpenRouter mengalirkan byte suara yang dihasilkanopenrouter
Pembuatan 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) — pembuatan video mengirim, melakukan polling, dan mengunduh melalui endpoint penyedia
scripts/test-openrouter-media-routing.mjs (test:package) — publikasi video yang disiapkan dan dilanjutkan menyelesaikan hilangnya konfirmasi commit
openrouter

Penegakan

Gerbang paket menolak skema atau jenis plugin yang tidak dideklarasikan, pemetaan katalog usang, rute yang hanya untuk penemuan tetapi disajikan sebagai eksekusi, handler tanpa transportasi peramban yang sesuai, tindakan UI tanpa pemanggilan dan pemicu yang terlihat, dokumentasi tanpa klaim khusus kapabilitas, pengujian tanpa perilaku di dalam kasus pengujian bernama, inventaris hasil pembuatan yang usang, serta endpoint manifes, peta model, atau nilai bawaan yang tidak valid.

Pembuatan embedding dieksekusi melalui POST /api/ollama/embed dan dapat dirutekan ke plugin embedding terpilih. GET /api/embeddings/models mencantumkan model; gerbang mencatatnya sebagai khusus penemuan dan tidak pernah menerimanya sebagai bukti bahwa pembuatan embedding berfungsi.

Kontrak sumber mengidentifikasi setiap pengujian perilaku terfokus beserta runner-nya. Skrip backend harus terdaftar di test:package; spesifikasi frontend harus dapat ditemukan oleh skrip test:e2e berbasis Playwright. Penemuan langsung dapat mempersempit katalog model, tetapi tidak menciptakan kapabilitas baru yang dapat dieksekusi.