allow, deny, instruct निर्णयों का उपयोग करते हैं।
त्वरित उदाहरण
कस्टम पॉलिसीज लोड करने के दो तरीके
विकल्प 1: सम्मेलन-आधारित (अनुशंसित)
.failproofai/policies/ में *policies.{js,mjs,ts} फाइलें डालें और वे स्वचालित रूप से लोड हो जाती हैं — कोई फ्लैग या कॉन्फ़िग परिवर्तन की आवश्यकता नहीं। यह git हुक्स की तरह काम करता है: एक फाइल डालें, यह बस काम करता है।
- दोनों प्रोजेक्ट और यूजर डायरेक्ट्रीज को स्कैन किया जाता है (यूनियन — पहली-स्कोप-जीत नहीं)
- फाइलें प्रत्येक डायरेक्ट्री में वर्णानुक्रम में लोड होती हैं। ऑर्डर को नियंत्रित करने के लिए
01-,02-के साथ प्रीफिक्स करें - केवल
*policies.{js,mjs,ts}से मेल खाने वाली फाइलें लोड होती हैं; अन्य फाइलें अनदेखी की जाती हैं - प्रत्येक फाइल स्वतंत्र रूप से लोड होती है (फाइल प्रति फेल-ओपन)
- स्पष्ट
--customऔर बिल्ट-इन पॉलिसीज के साथ काम करता है
विकल्प 2: स्पष्ट फाइल पाथ
policies-config.json में customPoliciesPath के रूप में संग्रहीत होता है। फाइल हर हुक ईवेंट पर ताजा लोड होती है - ईवेंट्स के बीच कोई कैशिंग नहीं होती है।
दोनों को एक साथ उपयोग करना
सम्मेलन पॉलिसीज और स्पष्ट--custom फाइल सह-अस्तित्व में रह सकते हैं। लोड क्रम:
- स्पष्ट
customPoliciesPathफाइल (यदि कॉन्फ़िगर की गई हो) - प्रोजेक्ट सम्मेलन फाइलें (
{cwd}/.failproofai/policies/, वर्णानुक्रम) - यूजर सम्मेलन फाइलें (
~/.failproofai/policies/, वर्णानुक्रम)
API
आयात
customPolicies.add(hook)
एक पॉलिसी को रजिस्टर करता है। एक ही फाइल में कई पॉलिसीज के लिए जितनी बार चाहें इसे कॉल करें।
निर्णय सहायक
deny(message) - संदेश Claude को "Blocked by failproofai:" प्रीफिक्स के साथ प्रकट होता है। एक एकल deny सभी आगे के मूल्यांकन को शॉर्ट-सर्किट करता है।
instruct(message) - संदेश वर्तमान टूल कॉल के लिए Claude के संदर्भ में जोड़ा जाता है। सभी instruct संदेश जमा किए जाते हैं और एक साथ दिए जाते हैं।
सूचनात्मक allow संदेश
allow(message) संचालन की अनुमति देता है और Claude को एक सूचनात्मक संदेश वापस भेजता है। संदेश हुक हैंडलर के stdout प्रतिक्रिया में additionalContext के रूप में दिया जाता है — instruct द्वारा उपयोग की जाने वाली समान तंत्र, लेकिन शब्दार्थ में भिन्न: यह एक चेतावनी नहीं, बल्कि एक स्थिति अपडेट है।
उपयोग के मामले:
- स्थिति पुष्टिकरण:
allow("All CI checks passed.")— Claude को बताता है कि सब कुछ हरा है - फेल-ओपन स्पष्टीकरण:
allow("GitHub CLI not installed, skipping CI check.")— Claude को बताता है कि एक जांच क्यों छोड़ी गई ताकि इसे पूरा संदर्भ हो - कई संदेश जमा होते हैं: यदि कई पॉलिसीज प्रत्येक
allow(message)लौटाती हैं, सभी संदेश नई लाइनों के साथ जुड़ते हैं और एक साथ दिए जाते हैं
PolicyContext फील्ड्स
SessionMetadata फील्ड्स
ईवेंट प्रकार
मूल्यांकन क्रम
पॉलिसीज को इस क्रम में मूल्यांकन किया जाता है:- बिल्ट-इन पॉलिसीज (परिभाषा क्रम में)
customPoliciesPathसे स्पष्ट कस्टम पॉलिसीज (.add()क्रम में)- प्रोजेक्ट
.failproofai/policies/से सम्मेलन पॉलिसीज (फाइलें वर्णानुक्रम में,.add()क्रम में) - यूजर
~/.failproofai/policies/से सम्मेलन पॉलिसीज (फाइलें वर्णानुक्रम में,.add()क्रम में)
पहला
deny सभी बाद की पॉलिसीज को शॉर्ट-सर्किट करता है। सभी instruct संदेश जमा किए जाते हैं और एक साथ दिए जाते हैं।ट्रांजिटिव आयात
कस्टम पॉलिसी फाइलें सापेक्ष पाथों का उपयोग करके स्थानीय मॉड्यूल को आयात कर सकती हैं:failproofai आयातों को वास्तविक dist पाथ में फिर से लिखकर और ESM संगतता सुनिश्चित करने के लिए अस्थायी .mjs फाइलें बनाकर लागू किया जाता है।
ईवेंट प्रकार फ़िल्टरिंग
यह सीमित करने के लिएmatch.events का उपयोग करें कि पॉलिसी कब फायर होती है:
match को पूरी तरह छोड़ दें।
त्रुटि हैंडलिंग और विफलता मोड
कस्टम पॉलिसीज फेल-ओपन हैं: त्रुटियां कभी भी बिल्ट-इन पॉलिसीज को ब्लॉक नहीं करती या हुक हैंडलर को क्रैश नहीं करती हैं।पूर्ण उदाहरण: कई पॉलिसीज
उदाहरण
examples/ डायरेक्ट्री में तैयार-से-चलाने योग्य पॉलिसी फाइलें हैं:

