diff --git a/SovereignAI-Starter/ROADMAP.md b/SovereignAI-Starter/ROADMAP.md index 2131623..4e74955 100644 --- a/SovereignAI-Starter/ROADMAP.md +++ b/SovereignAI-Starter/ROADMAP.md @@ -4,7 +4,7 @@ ## الحالة الحالية — 2026-10-07 -- 2026-10-07 — إصلاح تذبذب معاينة تعديل ملفات الوكيل والتحقق من مهلة الاتصال: إعادة محاولة تعديل الملف أصبحت ترسل طلب المستخدم الأصلي وأداة `propose_file_change` وحدها بدل قائمة الأدوات والسياق الكامل، وتعيد HTTP 502 واضحًا إذا لم ينتج النموذج نداء أداة بدل أن تعرض ردًا نصيًا يوحي بالإنجاز. اجتازت اختبارات الوكيل 27/27، واجتاز smoke test حي على FastAPI معزول وGemma 4 تسجيل المشروع والقراءة ومعاينة diff مع بقاء الملف الأصلي دون تغيير. فحص شكوى الانقطاع: مهلة completion للوكيل 600 ثانية، SSE heartbeat كل 15 ثانية، وقراءة العميل 10 دقائق؛ لا توجد مهلة 4–5 دقائق في هذا المسار. اختبارات المهلة والنبضات والإلغاء اجتازت 5/5. جرد آخر 200 حدث تدقيق على API 8000 لم يجد إغلاق عميل `499`؛ أطول بث محفوظ أكمل بـHTTP 200 خلال 386,998ms (2026-10-04)، وأطول طلب في الأحداث الأحدث يوم 2026-10-07 استغرق 99,677ms وانتهى بـ200. هذا لا يعيد إنتاج انقطاع المستخدم؛ اختبار Flutter التفاعلي المطوّل باقٍ لعزل السبب من الواجهة أو التشغيل. +- 2026-10-07 — إصلاح تذبذب معاينة تعديل ملفات الوكيل والتحقق من مهلة الاتصال: إعادة محاولة تعديل الملف أصبحت ترسل طلب المستخدم الأصلي وأداة `propose_file_change` وحدها بدل قائمة الأدوات والسياق الكامل، وتعيد HTTP 502 واضحًا إذا لم ينتج النموذج نداء أداة بدل أن تعرض ردًا نصيًا يوحي بالإنجاز. اجتازت اختبارات الوكيل 27/27، واجتاز smoke test حي على FastAPI معزول وGemma 4 تسجيل المشروع والقراءة ومعاينة diff مع بقاء الملف الأصلي دون تغيير. فحص شكوى الانقطاع: مهلة completion للوكيل 600 ثانية، SSE heartbeat كل 15 ثانية، وقراءة العميل 10 دقائق؛ لا توجد مهلة 4–5 دقائق في هذا المسار. اختبارات المهلة والنبضات والإلغاء اجتازت 5/5. جرد آخر 200 حدث تدقيق على API 8000 لم يجد إغلاق عميل `499`؛ أطول بث محفوظ أكمل بـHTTP 200 خلال 386,998ms (2026-10-04)، وأطول طلب في الأحداث الأحدث يوم 2026-10-07 استغرق 99,677ms وانتهى بـ200. بعد التجربة اكتُشف أن API 8000 القديمة لم تحمل الإصلاح؛ حُفظت قاعدة SQLite في AppData بنسخة اتساقية محلية، ثم أُعيد تشغيل `start-api.ps1` على قاعدة البيانات نفسها. نجح verifier كاملًا بعد التحديث على 8000، وأظهرت إعادة تحميل واجهة 5303 حالة اتصال Gemma 4 وبقاء المحادثات السابقة ظاهرة. لا يزال اختبار Flutter التفاعلي المطوّل لمدة 4–5 دقائق باقٍ لإعادة إنتاج بلاغ المستخدم وعزل السبب من الواجهة أو التشغيل. - 2026-10-07 — تحسين تحمل انقطاع تحميل مهارات الوكيل: فحص واجهة الويب على `127.0.0.1:5303` كشف أن أول تحميل عرض خطأً مؤقتًا، ثم عادت الواجهة بعد إعادة التحميل واتصلت بـGemma 4 وأظهرت المحادثات المحفوظة. تحققت خدمة API بـ200، وأعادت `/v1/agent/skills` المهارات الثلاث مع CORS صحيحًا؛ أُلغيت جلسة الفحص المحلية. أضيفت ثلاث محاولات تحميل إجمالًا مع تراجع 300/750ms ومنع الطلبات المتزامنة؛ يزول خطأ المهارات عند النجاح ويبقى ظاهرًا إذا فشلت المحاولات كلها. اجتازت اختبارات Flutter الكاملة 29/29، و`flutter analyze --no-pub` بلا ملاحظات. فحص widget الآلي يمر بمسار اختيار المشروع ومعاينة التعديل؛ بقي التحقق اليدوي من نافذة Windows، لذلك لم يُغلق بندها. - 2026-10-07 — تشغيل Flutter Web Debug من نسخة مصدر معزولة في `%LOCALAPPDATA%\SovereignAI-Starter\web-debug-20261007`: `flutter run -d web-server --web-hostname 127.0.0.1 --web-port 5305 --no-pub` ما زال يعمل وطلب HTTP أعاد 200 بعنوان `Mithqal AI`. تعثر التشغيل أولًا لأن OneDrive جعل `build/flutter_assets` نقطة reparse للقراءة فقط؛ كما فشل استدعاء Flutter snapshot المباشر لغياب إعداد `Isolate.packageConfig`، ثم نجح عبر `flutter.bat` بعد مزامنة المشروع واستعادة الاعتماديات محليًا. أُوقف خادم 5304 الثابت المؤقت. طلب فتح تبويب 5305 في لوحة Codex أُرسل، لكن أداة المتصفح انتهت بمهلة ولم تؤكد العرض المرئي أو تدفق المشروع؛ بند Windows اليدوي ما زال مفتوحًا. - 2026-10-07 — بناء وتشغيل Windows Debug للمصدر الحالي: بُنيت نسخة معزولة في `%LOCALAPPDATA%\SovereignAI-Starter\windows-debug-20261007` بنجاح خلال 363.7 ثانية؛ `flutter run -d windows --no-pub` أعاد البناء خلال 132.4 ثانية، وأعلن VM Service على 63785. PID `7232` يعمل و`Responding=True` والـAPI `/health` تعرض Gemma 4؛ لكن فحص العملية أظهر `MainWindowHandle=0` وعنوان نافذة فارغًا، لذا لم يُثبت أن نافذة سطح المكتب ظاهرة أو قابلة للاستهداف، ولم يُنفذ مسار المشروع يدويًا. جلسة `flutter run` باقية للتشخيص. @@ -248,7 +248,7 @@ 4. [x] إضافة طبقة مزود النموذج واكتشاف النماذج (2026-10-01): عقد موحد للطلب الكامل والبث والقائمة، واستخدامه في المحادثة والوكيل وقراءة مساحة العمل والويب؛ Ollama هو المزوّد المنفذ حاليًا. تحقق حي من `/health` و`/v1/models` وطلب محادثة باستخدام Gemma. 5. [x] إكمال Markdown للمرحلة 1: جداول قابلة للتمرير، قوائم متداخلة، ومربعات مهام GFM؛ التحليل واختبارات الواجهة الثلاثة ناجحة وبناء Windows Debug نجح. 6. [x] تشغيل جلسة Windows Debug بعد إصلاح مجلدي روابط إضافات `record` المؤقتة. بناء OneDrive يفشل عند cloud placeholders وMSBuild `FTK1011`. في 2026-10-04 نجح بناء وتشغيل نسخة `%TEMP%` (PID 33624) مع API/Gemma؛ ثم أضيف `scripts/run_windows_debug_local.ps1` لمسار ثابت خارج OneDrive. `-BuildOnly` في `%LOCALAPPDATA%\SovereignAI-Starter\windows-dev\flutter_app` نجح أول مرة في 336 ثانية، وإعادة البناء بالـcache نجحت في 55 ثانية. وفي 2026-10-04 شُغلت أيضًا نسخة Debug الأحدث التي تتضمن زر إنشاء المشروع (PID 35400) وأعادت API `/health` حالة `ok` مع Gemma 4 وSQLite والوكيل. في محاولة 2026-10-04 لبناء تغييرات heartbeat/فهرسة PDF لم يكتمل البناء: إضافة `flutter_secure_storage_windows` لم تجد الرأس C++ عبر مسار الرابط الرمزي؛ ترجمت الإضافة منفردة بعد توجيه MSBuild إلى مسار الكاش الحقيقي، لكن البناء الكامل اصطدم بصلاحيات سجلات MSBuild في النسخة المؤقتة. كانت المحاولة السابقة غير ناجحة؛ لكن بناء لاحق من SDK معزول نجح، ونافذة التطبيق استجابت واتصلت بالخدمة كما هو مسجل أعلاه. تفاعل الأزرار ما زال مفتوحًا. - - [ ] تحقق مرئي ووظيفي كامل من زر فتح/إنشاء المشروع، ثم تسجيل مجلد وقراءة ملف وطلب معاينة تعديل من داخل نافذة Windows. أدلة الواجهة الآلية: اختبارات Flutter على أحدث مصدر بعد مزامنته إلى نسخة LocalAppData نجحت 22/22، واختبار `widget_test.dart` المستهدف نجح 7/7 بعد إضافة تأكيدات أن إرسال المستخدم يمرر مسار المشروع و`src/hello.py` للوكيل، وأن معاينة التعديل لا تطبق دون موافقة؛ وتشمل الاختبارات ظهور إجراء المشروع على المقاسات الضيقة والواسعة، واستمرار تسجيل المجلدات، وإنشاء مجلد مشروع آمن، ومعاينة diff؛ `flutter analyze --no-pub` بلا ملاحظات. أعيدت مزامنة أحدث المصدر وبناؤه في `LocalAppData\SovereignAI-Starter\windows-dev\ui-verify-20261004` باستخدام SDK معزول؛ نجح Windows Debug خلال 389.6 ثانية. اجتازت النسخة نفسها `flutter test --no-pub` 22/22 و`flutter analyze --no-pub` بلا ملاحظات (146 ثانية). شُغّل exe الحالي PID 55860، HWND 182911482، و`Responding=True`؛ أكد `/health` API 8000 الحالة `ok` مع Gemma 4 وSQLite. لم أتحقق بصريًا: `Computer Use list_windows` لم يعرض نافذة PID 55860، وأظهر نوافذ من مسار Debug قديم؛ التقاط النافذة القديمة انتهى بمهلة مرتين. في 2026-10-04 أضيف Widget Test يحاكي استجابة `file_selector` ثم ينقر تسجيل المشروع، يختار `src/hello.py`، ويرسل السياق للوكيل حتى معاينة diff مع تأكيد عدم التطبيق دون موافقة؛ الاختبارات الكاملة صارت 23/23 و`flutter analyze --no-pub` بلا ملاحظات. في متابعة 2026-10-04 الحالية، قائمة Computer Use ما زالت تعرض أربع نوافذ `Mithqal AI` من المسار القديم `SovereignAI-run-20260930` فقط، ولا تعرض نافذة PID 55860 من نسخة LocalAppData؛ فتح مجلد المشروع من تبويب Flutter Web 5301 لم يُظهر منتقي ملفات أو تغييرًا مرئيًا. لذلك لم أرسل إدخالًا إلى نافذة غير مؤكدة. هذا لا يغني عن اختبار النافذة الأصلية؛ ما زال فتح/تسجيل/قراءة/معاينة المشروع يدويًا على Windows مطلوبًا. تحقق API حي 2026-10-07: اجتاز `scripts/verify_agent_workspace_live.ps1` دورة مصطنعة كاملة على FastAPI 8000 وGemma 4؛ سجل المشروع المؤقت، أظهر `README.md` و`src/hello.py`، قرأ الوكيل الملف واستشهد به، ثم أعاد `propose_file_change` معاينة تحديث لـ`README.md` مع بقاء الملف دون تغيير؛ ألغيت الجلسة والتسجيل وحُذف المجلد. أداة Computer Use الحالية لم تعرض أي تطبيق Windows أصلي؛ PID 1328 من مسار البناء الحالي بلا HWND، والتقاط تبويب الويب 5303 انتهى بمهلة بينما 5305 ظهر أبيض. إعادة تشغيل نفس verifier بتاريخ 2026-10-07 أكدت صحة /health، التسجيل، قائمة الملفات، والقراءة مع نجاحها حتى مرحلة المعاينة، لكنها فشلت عندها: Gemma أعادت `tool=local-llm` بدل `propose_file_change` رغم retry بـ`tool_choice` القسري؛ السكريبت نظّف تسجيل المشروع والجلسة والملفات التجريبية. تحديث 2026-10-07: قصّرت retry ليعرض أداة المعاينة وحدها مع طلب المستخدم الأصلي، وأضفت خطأ 502 واضحًا بدل إرجاع إجابة نصية على أنها إنجاز. نجحت 27/27 اختبارات الوكيل، ثم نجح verifier كاملًا على FastAPI معزول 8101 وGemma 4: تسجيل المجلد، إظهار الملفين، قراءة `src/hello.py`، ومعاينة تحديث `README.md` عبر `propose_file_change` (8 أسطر diff) وبقاء الملف دون تعديل. أُوقف خادم الاختبار وحُذفت بياناته المؤقتة. يبقى اختبار فتح المشروع والتفاعل اليدوي داخل نافذة Windows غير منجز. + - [ ] تحقق مرئي ووظيفي كامل من زر فتح/إنشاء المشروع، ثم تسجيل مجلد وقراءة ملف وطلب معاينة تعديل من داخل نافذة Windows. أدلة الواجهة الآلية: اختبارات Flutter على أحدث مصدر بعد مزامنته إلى نسخة LocalAppData نجحت 22/22، واختبار `widget_test.dart` المستهدف نجح 7/7 بعد إضافة تأكيدات أن إرسال المستخدم يمرر مسار المشروع و`src/hello.py` للوكيل، وأن معاينة التعديل لا تطبق دون موافقة؛ وتشمل الاختبارات ظهور إجراء المشروع على المقاسات الضيقة والواسعة، واستمرار تسجيل المجلدات، وإنشاء مجلد مشروع آمن، ومعاينة diff؛ `flutter analyze --no-pub` بلا ملاحظات. أعيدت مزامنة أحدث المصدر وبناؤه في `LocalAppData\SovereignAI-Starter\windows-dev\ui-verify-20261004` باستخدام SDK معزول؛ نجح Windows Debug خلال 389.6 ثانية. اجتازت النسخة نفسها `flutter test --no-pub` 22/22 و`flutter analyze --no-pub` بلا ملاحظات (146 ثانية). شُغّل exe الحالي PID 55860، HWND 182911482، و`Responding=True`؛ أكد `/health` API 8000 الحالة `ok` مع Gemma 4 وSQLite. لم أتحقق بصريًا: `Computer Use list_windows` لم يعرض نافذة PID 55860، وأظهر نوافذ من مسار Debug قديم؛ التقاط النافذة القديمة انتهى بمهلة مرتين. في 2026-10-04 أضيف Widget Test يحاكي استجابة `file_selector` ثم ينقر تسجيل المشروع، يختار `src/hello.py`، ويرسل السياق للوكيل حتى معاينة diff مع تأكيد عدم التطبيق دون موافقة؛ الاختبارات الكاملة صارت 23/23 و`flutter analyze --no-pub` بلا ملاحظات. في متابعة 2026-10-04 الحالية، قائمة Computer Use ما زالت تعرض أربع نوافذ `Mithqal AI` من المسار القديم `SovereignAI-run-20260930` فقط، ولا تعرض نافذة PID 55860 من نسخة LocalAppData؛ فتح مجلد المشروع من تبويب Flutter Web 5301 لم يُظهر منتقي ملفات أو تغييرًا مرئيًا. لذلك لم أرسل إدخالًا إلى نافذة غير مؤكدة. هذا لا يغني عن اختبار النافذة الأصلية؛ ما زال فتح/تسجيل/قراءة/معاينة المشروع يدويًا على Windows مطلوبًا. تحقق API حي 2026-10-07: اجتاز `scripts/verify_agent_workspace_live.ps1` دورة مصطنعة كاملة على FastAPI 8000 وGemma 4؛ سجل المشروع المؤقت، أظهر `README.md` و`src/hello.py`، قرأ الوكيل الملف واستشهد به، ثم أعاد `propose_file_change` معاينة تحديث لـ`README.md` مع بقاء الملف دون تغيير؛ ألغيت الجلسة والتسجيل وحُذف المجلد. أداة Computer Use الحالية لم تعرض أي تطبيق Windows أصلي؛ PID 1328 من مسار البناء الحالي بلا HWND، والتقاط تبويب الويب 5303 انتهى بمهلة بينما 5305 ظهر أبيض. إعادة تشغيل نفس verifier بتاريخ 2026-10-07 أكدت صحة /health، التسجيل، قائمة الملفات، والقراءة مع نجاحها حتى مرحلة المعاينة، لكنها فشلت عندها: Gemma أعادت `tool=local-llm` بدل `propose_file_change` رغم retry بـ`tool_choice` القسري؛ السكريبت نظّف تسجيل المشروع والجلسة والملفات التجريبية. تحديث 2026-10-07: قصّرت retry ليعرض أداة المعاينة وحدها مع طلب المستخدم الأصلي، وأضفت خطأ 502 واضحًا بدل إرجاع إجابة نصية على أنها إنجاز. نجحت 27/27 اختبارات الوكيل، ثم نجح verifier كاملًا على FastAPI معزول 8101 وGemma 4: تسجيل المجلد، إظهار الملفين، قراءة `src/hello.py`، ومعاينة تحديث `README.md` عبر `propose_file_change` (8 أسطر diff) وبقاء الملف دون تعديل. أُوقف خادم الاختبار وحُذفت بياناته المؤقتة. بعد إعادة تشغيل FastAPI المحدّث على 8000 مع قاعدة البيانات نفسها، نجح scripts/verify_agent_workspace_live.ps1 مرة أخرى: عُرضت معاينة diff من 7 أسطر وبقي الملف كما هو قبل الموافقة. أُعيد تحميل واجهة الويب 5303 وأظهرت Gemma 4 متصلة والمحادثات السابقة محفوظة. ما زال اختبار تفاعل فتح المشروع يدويًا من نافذة Windows، وطلب حي مطوّل 4–5 دقائق من Flutter، غير منجز. - [ ] تجربة `flutter run` التفاعلية عبر السكريبت المحلي ما زالت معلقة. أعيد بناء Debug بنجاح باستخدام SDK معزول، لكن توجد عدة عمليات `flutter_app` من جلسات ومسارات مختلفة؛ لم أغلقها، والسكريبت يرفض `flutter run` عندما تكون هذه النسخ مفتوحة. البناء والتحليل واختبارات Flutter ليست بديلًا عن التشغيل التفاعلي؛ يلزم إغلاق جلسات Debug بعد حفظ ما يلزم ثم تشغيل السكريبت. فحص 2026-10-07: لا يظهر في جرد Computer Use تطبيق أصلي قابل للتحديد، وتعذر التقاط نافذة Windows؛ لا أعد تشغيل API/الوكيل الحي بديلًا عن تجربة Flutter التفاعلية. رفضت محاولة `run_windows_debug_local.ps1` بتاريخ 2026-10-07 التشغيل قبل البناء/الفتح لأن تسع عمليات `flutter_app` كانت قائمة (1328، 7232، 12352، 33624، 35400، 39440، 43856، 44280، 55860)؛ بقيت دون إغلاق. أظهر جرد CUA صفر تطبيقات Windows أصلية قابلة للتحديد، لذا لا يوجد تحقق يدوي للواجهة بعد. 7. [x] اختيار مساحة عمل وعرض الملفات المدعومة وتحديد ملفات للسؤال؛ التحقق من المجلدات والملفات على الخادم. 8. [x] إظهار انتقالات تقدم الوكيل أثناء العمل وربطها بحالات التنفيذ الفعلية عبر SSE؛ اختبار API حي لمسار الحاسبة. (2026-10-03: عبر FastAPI على 8100 وجلسة loopback، اختار Gemma 4 أداة `calculator` لمهمة 17×23، سجّل خطوة واحدة `completed` وأعاد 391.)