allow و deny و instruct التي تستخدمها السياسات المدمجة.
مثال سريع
طريقتان لتحميل السياسات المخصصة
الخيار 1: المستند على الاتفاقية (موصى به)
ضع ملفات*policies.{js,mjs,ts} في .failproofai/policies/ وسيتم تحميلها تلقائياً — لا تحتاج إلى أعلام أو تغييرات إعدادات. يعمل هذا مثل git hooks: ضع ملفاً وبالتالي يعمل.
- يتم فحص كلا المديرين (الدمج — وليس first-scope-wins)
- يتم تحميل الملفات أبجدياً ضمن كل دليل. استخدم البادئة
01-و02-للتحكم في الترتيب - يتم تحميل الملفات التي تطابق
*policies.{js,mjs,ts}فقط؛ يتم تجاهل الملفات الأخرى - يتم تحميل كل ملف بشكل مستقل (fail-open لكل ملف)
- يعمل جنباً إلى جنب مع السياسات الصريحة
--customوالسياسات المدمجة
الخيار 2: مسار الملف الصريح
policies-config.json باسم customPoliciesPath. يتم تحميل الملف بشكل جديد في كل حدث خطاف - لا يوجد caching بين الأحداث.
استخدام كليهما معاً
يمكن للسياسات المستندة على الاتفاقية والملف الصريح--custom أن يتعايشا. ترتيب التحميل:
- ملف
customPoliciesPathالصريح (إن تم تكوينه) - ملفات اتفاقية المشروع (
{cwd}/.failproofai/policies/، أبجدي) - ملفات اتفاقية المستخدم (
~/.failproofai/policies/، أبجدي)
API
الاستيراد
customPolicies.add(hook)
تسجيل سياسة. استدعِ هذا عدة مرات حسب الحاجة لسياسات متعددة في نفس الملف.
مساعدات القرار
deny(message) - تظهر الرسالة أمام Claude مع البادئة Blocked by failproofai:. رفض واحد يختصر كل التقييم الإضافي.
instruct(message) - يتم إلحاق الرسالة بسياق Claude لاستدعاء الأداة الحالي. يتم تجميع جميع رسائل instruct وتسليمها معاً.
رسائل السماح المعلوماتية
allow(message) يسمح بالعملية و يرسل رسالة معلوماتية مرة أخرى إلى Claude. يتم تسليم الرسالة كـ additionalContext في استجابة stdout معالج الخطاف — نفس الآلية المستخدمة من قبل instruct، لكن بشكل معنوي مختلف: إنها تحديث حالة، وليس تحذيراً.
حالات الاستخدام:
- تأكيدات الحالة:
allow("All CI checks passed.")— أخبر Claude أن كل شيء أخضر - شروحات fail-open:
allow("GitHub CLI not installed, skipping CI check.")— أخبر Claude لماذا تم تخطي فحص حتى يكون لديه السياق الكامل - تراكم الرسائل المتعددة: إذا أرجعت عدة سياسات
allow(message)، يتم دمج جميع الرسائل بأسطر جديدة وتسليمها معاً
حقول PolicyContext
حقول SessionMetadata
أنواع الأحداث
ترتيب التقييم
يتم تقييم السياسات بهذا الترتيب:- السياسات المدمجة (بترتيب التعريف)
- السياسات المخصصة الصريحة من
customPoliciesPath(بترتيب.add()) - سياسات الاتفاقية من
.failproofai/policies/للمشروع (الملفات أبجدياً، بترتيب.add()بداخلها) - سياسات الاتفاقية من
~/.failproofai/policies/للمستخدم (الملفات أبجدياً، بترتيب.add()بداخلها)
أول رفض
deny يختصر جميع السياسات اللاحقة. يتم تجميع جميع رسائل instruct وتسليمها معاً.الاستيرادات المتعدية
يمكن لملفات السياسات المخصصة استيراد وحدات محلية باستخدام مسارات نسبية:from "failproofai" إلى مسار dist الفعلي وإنشاء ملفات .mjs مؤقتة لضمان التوافقية ESM.
تصفية نوع الحدث
استخدمmatch.events لتحديد متى يتم تشغيل السياسة:
match بالكامل للتشغيل على كل نوع حدث.
معالجة الأخطاء وأنماط الفشل
السياسات المخصصة fail-open: الأخطاء لا تحظر السياسات المدمجة أو تعطل معالج الخطاف.مثال كامل: سياسات متعددة
أمثلة
يحتوي دليلexamples/ على ملفات سياسات جاهزة للتشغيل:

