الأدوار
يتصل كل عميل WebSocket في Gateway بدور واحد:operator: عملاء مستوى التحكم مثل CLI وواجهة التحكم والأتمتة وعمليات المساعدة الموثوقة.node: مضيفو القدرات (macOS وiOS وAndroid والأنظمة بلا واجهة رسومية) الذين يتيحون الأوامر عبرnode.invoke.
operator؛ وتتطلب الأساليب الصادرة من Node
الدور node.
مستويات النطاق
تتطلب نطاقات
operator.* المستقبلية غير المعروفة تطابقاً تاماً، ما لم يكن المستدعي
يحمل بالفعل operator.admin.
نطاق الأسلوب هو البوابة الأولى فقط
لكل استدعاء RPC في Gateway نطاق أسلوب بأقل امتياز يحدد ما إذا كان الطلب سيصل إلى معالجه. ثم تطبق بعض المعالجات فحوصاً أكثر صرامة بناءً على الشيء المحدد الذي تجري الموافقة عليه أو تعديله:- يمكن الوصول إلى
device.pair.approveباستخدامoperator.pairing، لكن الموافقة على جهاز مشغّل لا يمكنها إصدار نطاقات أو الاحتفاظ إلا بالنطاقات التي يحملها المستدعي بالفعل. - يمكن الوصول إلى
node.pair.approveباستخدامoperator.pairing، ثم يشتق نطاقات موافقة إضافية من قائمة الأوامر المعلنة لعقدة Node المعلّقة. chat.sendأسلوب ذو نطاق كتابة، لكن أمري الدردشة/config setو/config unsetيتطلبانoperator.adminبالإضافة إلى ذلك، بصرف النظر عن نطاق إرسال الدردشة لدى المستدعي.
موافقات إقران الأجهزة
سجلات إقران الأجهزة هي المصدر الدائم للأدوار والنطاقات المعتمدة. لا يحصل جهاز مقترن بالفعل على وصول أوسع ضمنياً: فإعادة الاتصال التي تطلب دوراً أو نطاقات أوسع تنشئ طلب ترقية معلّقاً جديداً. عند الموافقة على طلب جهاز:- لا يحتاج الطلب الذي لا يتضمن دور مشغّل إلى موافقة على نطاق المشغّل.
- يتطلب طلب دور جهاز غير مشغّل (مثل
node) النطاقoperator.admin، رغم أنdevice.pair.approveنفسه لا يحتاج إلا إلىoperator.pairing. - يتطلب طلب
operator.readأوoperator.writeأوoperator.approvalsأوoperator.pairingأوoperator.talk.secretsأن يكون المستدعي حاملاً لذلك النطاق بالفعل، أو لـoperator.admin. - يتطلب طلب
operator.adminالنطاقoperator.admin. - يمكن لطلب إصلاح لا يتضمن نطاقات صريحة أن يرث نطاقات رمز المشغّل
الحالي؛ وإذا كان ذلك الرمز ذا نطاق إداري، فستظل الموافقة تتطلب
operator.admin.
operator.pairing بخلاف ذلك.
بالنسبة إلى جلسات رموز الأجهزة المقترنة، تقتصر الإدارة على الذات ما لم يكن المستدعي
يحمل operator.admin: لا يرى المستدعي غير الإداري إلا إدخالات الإقران الخاصة به،
ولا يمكنه الموافقة أو الرفض أو التدوير أو الإبطال أو الإزالة إلا لإدخال جهازه.
موافقات إقران Node
تستخدم أساليبnode.pair.* القديمة مخزن إقران Node منفصلاً تملكه Gateway.
أما عُقد WS فتستخدم إقران الأجهزة (role: node) بدلاً منه، لكن مفردات الموافقة
نفسها تنطبق. راجع إقران Gateway لمعرفة العلاقة بين
المخزنين.
يشتق node.pair.approve نطاقات مطلوبة إضافية من قائمة أوامر
الطلب المعلّق:
لا تؤدي الموافقة على إعلان Node إلى تمكين الأوامر التي لها بوابة
قائمة سماح منفصلة وقت التشغيل. على سبيل المثال، تتطلب الموافقة على Node تعلن
computer.act الإقران ونطاق الكتابة، لكنها لا تسجل سوى السطح.
ويجب على مسؤول أو مالك أن يفعّل computer.act مع ذلك. وما دامت
مفعّلة، فإن استدعاءها عبر الأسلوب node.invoke ذي نطاق الكتابة لا
يتطلب نطاقاً إدارياً لكل إجراء.
يؤسس إقران Node الهوية والثقة؛ لكنه لا يحل محل سياسة موافقة التنفيذ
system.run الخاصة بـ Node.
مصادقة السر المشترك
تُعامل مصادقة رمز/كلمة مرور Gateway المشتركة بوصفها وصول مشغّل موثوقاً إلى Gateway تلك. وتستعيد أسطح HTTP المتوافقة مع OpenAI و/tools/invoke
ونقاط نهاية سجل الجلسات عبر HTTP مجموعة نطاقات المشغّل الافتراضية الكاملة
لمصادقة حامل السر المشترك، حتى إذا أرسل المستدعي نطاقات معلنة أضيق.
لا يزال بإمكان الأوضاع الحاملة للهوية، مثل مصادقة الوكيل الموثوق أو none للدخول الخاص،
احترام النطاقات المعلنة الصريحة. استخدم Gateways منفصلة لتحقيق فصل فعلي
لحدود الثقة.