#!/usr/bin/env node /** * Pro Agent System Test Script * سكريبت اختبار نظام الوكيل المحترف */ const { spawn } = require('child_process'); const fs = require('fs'); const path = require('path'); console.log('🚀 بدء اختبار نظام Pro Agent...\n'); // التحقق من وجود الملفات المطلوبة const requiredFiles = [ 'lib/prompts.ts', 'types/index.ts', 'lib/ai-provider-handler.ts', 'app/api/pro-agent/route.ts', 'components/ai/pro-agent-progress.tsx', 'components/editor/ask-ai/index.tsx', 'components/editor/ask-ai/settings.tsx' ]; console.log('📁 فحص الملفات المطلوبة...'); let allFilesExist = true; requiredFiles.forEach(file => { if (fs.existsSync(file)) { console.log(`✅ ${file}`); } else { console.log(`❌ ${file} - مفقود!`); allFilesExist = false; } }); if (!allFilesExist) { console.log('\n❌ بعض الملفات مفقودة. يرجى التأكد من تطبيق جميع التغييرات.'); process.exit(1); } console.log('\n✅ جميع الملفات موجودة!\n'); // فحص البرومبتات console.log('🧠 فحص البرومبتات...'); try { const promptsContent = fs.readFileSync('lib/prompts.ts', 'utf8'); const requiredPrompts = [ 'PRO_AGENT_DESIGN_EXPERT_PROMPT', 'PRO_AGENT_ANIMATION_EXPERT_PROMPT', 'PRO_AGENT_INTEGRATION_EXPERT_PROMPT', 'PRO_AGENT_DEVELOPER_PROMPT' ]; requiredPrompts.forEach(prompt => { if (promptsContent.includes(prompt)) { console.log(`✅ ${prompt}`); } else { console.log(`❌ ${prompt} - مفقود!`); allFilesExist = false; } }); if (allFilesExist) { console.log('✅ جميع البرومبتات موجودة!'); } } catch (error) { console.log('❌ خطأ في قراءة ملف البرومبتات:', error.message); } // فحص Types console.log('\n🔧 فحص Types...'); try { const typesContent = fs.readFileSync('types/index.ts', 'utf8'); const requiredTypes = [ 'ProAgentStep', 'ProAgentWorkflow', 'ProAgentConfig', 'ProAgentStepResult' ]; requiredTypes.forEach(type => { if (typesContent.includes(type)) { console.log(`✅ ${type}`); } else { console.log(`❌ ${type} - مفقود!`); } }); } catch (error) { console.log('❌ خطأ في قراءة ملف Types:', error.message); } // فحص API console.log('\n🌐 فحص API...'); try { const apiContent = fs.readFileSync('app/api/pro-agent/route.ts', 'utf8'); if (apiContent.includes('runProAgentWorkflow')) { console.log('✅ Pro Agent API endpoint'); } else { console.log('❌ Pro Agent API endpoint - مفقود!'); } if (apiContent.includes('Server-Sent Events') || apiContent.includes('text/event-stream')) { console.log('✅ Server-Sent Events support'); } else { console.log('❌ Server-Sent Events support - مفقود!'); } } catch (error) { console.log('❌ خطأ في قراءة ملف API:', error.message); } // فحص المكونات console.log('\n🎨 فحص المكونات...'); try { const askAiContent = fs.readFileSync('components/editor/ask-ai/index.tsx', 'utf8'); if (askAiContent.includes('isProMode')) { console.log('✅ Pro Mode state في AskAI'); } else { console.log('❌ Pro Mode state في AskAI - مفقود!'); } if (askAiContent.includes('runProAgentWorkflow')) { console.log('✅ Pro Agent workflow function'); } else { console.log('❌ Pro Agent workflow function - مفقود!'); } if (askAiContent.includes('ProAgentProgress')) { console.log('✅ Pro Agent Progress component'); } else { console.log('❌ Pro Agent Progress component - مفقود!'); } } catch (error) { console.log('❌ خطأ في قراءة مكون AskAI:', error.message); } try { const settingsContent = fs.readFileSync('components/editor/ask-ai/settings.tsx', 'utf8'); if (settingsContent.includes('isProMode') && settingsContent.includes('onProModeChange')) { console.log('✅ Pro Mode toggle في Settings'); } else { console.log('❌ Pro Mode toggle في Settings - مفقود!'); } } catch (error) { console.log('❌ خطأ في قراءة مكون Settings:', error.message); } // اختبار TypeScript compilation console.log('\n🔍 اختبار TypeScript compilation...'); const tscProcess = spawn('npx', ['tsc', '--noEmit'], { stdio: 'pipe', shell: true }); let tscOutput = ''; tscProcess.stdout.on('data', (data) => { tscOutput += data.toString(); }); tscProcess.stderr.on('data', (data) => { tscOutput += data.toString(); }); tscProcess.on('close', (code) => { if (code === 0) { console.log('✅ TypeScript compilation successful!'); } else { console.log('❌ TypeScript compilation errors:'); console.log(tscOutput); } // تشغيل الاختبارات console.log('\n🧪 فحص إمكانية الاختبار...'); console.log('💡 يمكن إضافة اختبارات لاحقاً في مجلد tests/'); // النتيجة النهائية console.log('\n' + '='.repeat(50)); console.log('🎉 تم الانتهاء من فحص نظام Pro Agent!'); console.log('='.repeat(50)); if (allFilesExist && code === 0) { console.log('✅ النظام جاهز للاستخدام!'); console.log('\n📋 خطوات التشغيل:'); console.log('1. npm run dev'); console.log('2. افتح المتصفح على http://localhost:3000'); console.log('3. اذهب إلى الإعدادات وفعل "Pro Agent Mode"'); console.log('4. اكتب طلبك واستمتع بالنتائج الاستثنائية! 🚀'); } else { console.log('❌ يوجد مشاكل تحتاج إلى حل'); console.log('💡 راجع الأخطاء أعلاه وأصلحها'); } console.log('\n🔗 للمزيد من المعلومات: docs/PRO_AGENT_IMPLEMENTATION.md'); }); // معلومات إضافية console.log('\n📊 إحصائيات النظام:'); console.log(`📁 عدد الملفات المُضافة/المُعدلة: ${requiredFiles.length}`); console.log('🧠 عدد البرومبتات: 4'); console.log('🔧 عدد Types الجديدة: 4'); console.log('🎨 عدد المكونات الجديدة: 1'); console.log('🌐 عدد API endpoints الجديدة: 1'); console.log('\n💡 نصائح للاستخدام الأمثل:'); console.log('• استخدم Pro Mode للمشاريع المعقدة والمهمة'); console.log('• الوضع العادي أسرع للتعديلات البسيطة'); console.log('• راقب مؤشر التقدم لمتابعة العمل'); console.log('• في حالة الفشل، سيعود النظام للوضع العادي تلقائياً');