الانتقال إلى المحتوى الرئيسي

تعزيز إضافة Cron ومحاذاة المخططات

السياق

تُظهر سجلات Gateway الحديثة تكرار إخفاقات cron.add مع معاملات غير صالحة (غياب sessionTarget وwakeMode وpayload، وتشويه schedule). يشير ذلك إلى أن عميلًا واحدًا على الأقل (على الأرجح مسار استدعاء أداة الوكيل) يرسل حمولات مهام مُغلَّفة أو محددة جزئيًا. وبشكل منفصل، يوجد تباين بين تعداد مزوّد cron في TypeScript، ومخطط Gateway، وأعلام CLI، وأنواع نماذج واجهة المستخدم، إضافةً إلى عدم تطابق في واجهة المستخدم لـ cron.status (تتوقع jobCount بينما يعيد Gateway jobs).

الأهداف

  • إيقاف ضوضاء cron.add من نوع INVALID_REQUEST عبر توحيد أشكال التغليف الشائعة واستنتاج حقول kind المفقودة.
  • محاذاة قوائم مزوّدي cron عبر مخطط Gateway، وأنواع cron، ووثائق CLI، ونماذج واجهة المستخدم.
  • جعل مخطط أداة cron الخاصة بالوكيل صريحًا بحيث ينتج نموذج اللغة الكبير (LLM) حمولات مهام صحيحة.
  • إصلاح عرض عدد مهام حالة cron في واجهة التحكم.
  • إضافة اختبارات لتغطية التوحيد وسلوك الأداة.

غير الأهداف

  • تغيير دلالات جدولة cron أو سلوك تنفيذ المهام.
  • إضافة أنواع جداول جديدة أو تحليل تعابير cron.
  • إعادة تصميم واجهة المستخدم/التجربة لـ cron بما يتجاوز إصلاحات الحقول اللازمة.

النتائج (الفجوات الحالية)

  • يستبعد CronPayloadSchema في Gateway كلًا من signal + imessage، بينما تتضمنها أنواع TypeScript.
  • تتوقع CronStatus في واجهة التحكم jobCount، لكن Gateway يعيد jobs.
  • يسمح مخطط أداة cron الخاصة بالوكيل بكائنات job اعتباطية، ما يتيح مدخلات مشوّهة.
  • يتحقق Gateway بصرامة من cron.add دون توحيد، لذا تفشل الحمولات المُغلَّفة.

ما الذي تغيّر

  • يقوم cron.add وcron.update الآن بتوحيد أشكال التغليف الشائعة واستنتاج حقول kind المفقودة.
  • أصبح مخطط أداة cron الخاصة بالوكيل مطابقًا لمخطط Gateway، ما يقلل الحمولات غير الصالحة.
  • تمت محاذاة تعدادات المزوّدين عبر Gateway وCLI وواجهة المستخدم ومنتقي macOS.
  • تستخدم واجهة التحكم حقل عدد jobs من Gateway للحالة.

السلوك الحالي

  • التوحيد: يتم فك تغليف حمولات data/job؛ ويُستدل على schedule.kind وpayload.kind عندما يكون ذلك آمنًا.
  • القيم الافتراضية: تُطبَّق قيم افتراضية آمنة لـ wakeMode وsessionTarget عند الغياب.
  • المزوّدون: تُعرض Discord/Slack/Signal/iMessage الآن بشكل متسق عبر CLI/واجهة المستخدم.
راجع Cron jobs للشكل الموحّد والأمثلة.

التحقق

  • راقب سجلات Gateway لرصد انخفاض أخطاء INVALID_REQUEST من نوع cron.add.
  • أكّد أن حالة cron في واجهة التحكم تُظهر عدد المهام بعد التحديث.

متابعات اختيارية

  • اختبار يدوي لواجهة التحكم: إضافة مهمة cron لكل مزوّد + التحقق من عدد مهام الحالة.

أسئلة مفتوحة

  • هل ينبغي أن يقبل cron.add قيمة state صريحة من العملاء (مرفوضة حاليًا بواسطة المخطط)؟
  • هل ينبغي السماح بـ webchat كمزوّد تسليم صريح (مُرشَّح حاليًا في حلّ التسليم)؟