عقود القدرات
يفرض 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 إلى المسار المحدد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) — تحل عمليات تجهيز الفيديو واستئناف النشر فقدان إقرارات التثبيت | openrouter |
الإنفاذ
ترفض بوابة الحزمة المخططات أو أنواع المكونات غير المعلنة، وربط الكتالوج القديم، ومسارات الاكتشاف المقدمة كتنفيذ، والمعالجات التي لا يقابلها نقل في المتصفح، وإجراءات الواجهة التي تفتقر إلى استدعاء ومشغّل ظاهر، والوثائق التي لا تتضمن ادعاءات خاصة بالقدرة، والاختبارات التي لا تختبر سلوك الحالة المسماة، والقائمة المولدة القديمة، ونقاط النهاية أو خرائط النماذج أو القيم الافتراضية غير الصالحة في البيانات الوصفية.
يُنفذ إنشاء التضمينات عبر POST /api/ollama/embed ويمكن توجيهه إلى مكوّن تضمين محدد. يسرد GET /api/embeddings/models النماذج؛ وتسجله البوابة كمسار اكتشاف فقط ولا تقبله أبدًا دليلًا على عمل إنشاء التضمينات.
يحدد عقد المصدر كل اختبار سلوكي مركز ومشغله. يجب تسجيل برامج الخادم الخلفي في test:package، ويجب أن تكون مواصفات الواجهة قابلة للاكتشاف بواسطة برنامج test:e2e المستند إلى Playwright. وقد يضيّق الاكتشاف المباشر كتالوج النماذج، لكنه لا ينشئ قدرة تنفيذ جديدة.