وثائق بوابة القرار

تقييم بوابة حتمي وقابل لإعادة التشغيل مع قرارات قابلة للتدقيق.

وثائق Asset Core

إعدادات decision-gate.toml

نظرة عامة

decision-gate.toml يقوم بتكوين خادم MCP، سياسات الثقة، إعدادات إفشاء الأدلة، وسجل المزودين. يتم التحقق من جميع المدخلات وتفشل في حالة حدوث أخطاء.

أقسام المستوى الأعلى

[الخادم]

إعدادات نقل الخادم، المصادقة، الحدود، والتدقيق.

الحقلالنوعالافتراضيالملاحظات
transport”stdio” | “http” | “sse”stdioبروتوكول النقل لـ MCP.
mode”strict” | “dev_permissive”strictوضع التشغيل لـ MCP (dev_permissive هو قديم).
tls_termination”server” | “upstream”serverحيث يتم إنهاء TLS لنقل HTTP/SSE.
bindسلسلةnullعنوان الربط لنقل HTTP/SSE.
max_body_bytesعدد صحيح1048576الحد الأقصى لحجم طلب JSON-RPC بالبايت.
limitsجدول{ max_inflight = 256 }حدود الطلبات لخادم MCP.
authجدولnullإعدادات المصادقة الواردة لاستدعاءات أدوات MCP.
tlsجدولnullإعدادات TLS لنقل HTTP/SSE.
auditجدول{ enabled = true }إعدادات تسجيل التدقيق المنظم.
feedbackجدولn/aإعدادات الإفصاح عن الملاحظات لاستجابات الأدوات.
toolsجدول{ mode = “filter”, allowlist = [], denylist = [] }إعدادات رؤية الأدوات لقوائم أدوات MCP.

يتطلب HTTP/SSE bind؛ يتطلب الاتصال غير الدائري اختيارًا صريحًا من واجهة سطر الأوامر بالإضافة إلى TLS أو tls_termination = "upstream" + مصادقة غير محلية.

[server.auth]

مصادقة/تفويض الوارد لاستدعاءات أدوات MCP.

الحقلالنوعالافتراضيالملاحظات
mode”local_only” | “bearer_token” | “mtls”local_onlyوضع المصادقة الوارد لاستدعاءات أدوات MCP.
bearer_tokensمصفوفة[]رموز الحامل المسموح بها.
mtls_subjectsمصفوفة[]الموضوعات المسموح بها في mTLS (عبر رأس الوكيل الموثوق).
allowed_toolsمصفوفة[]قائمة أدوات اختيارية للمكالمات الواردة.
principalsمصفوفة[]تعيينات اختيارية من المبدأ إلى الدور.

مثال على رمز الحامل:

[server.auth]
mode = "bearer_token"
bearer_tokens = ["token-1", "token-2"]
allowed_tools = ["scenario_define", "scenario_start", "scenario_next"]

مثال على موضوع mTLS (عبر رأس الوكيل الموثوق):

[server.auth]
mode = "mtls"
mtls_subjects = ["CN=decision-gate-client,O=Example Corp"]

عند استخدام وضع mtls، يتوقع الخادم رأس x-decision-gate-client-subject من وكيل موثوق ينهي TLS.

مثال على رسم الخرائط الرئيسي (ACL السجل):

[[server.auth.principals]]
subject = "loopback"
policy_class = "prod"

[[server.auth.principals.roles]]
name = "TenantAdmin"
tenant_id = 1
namespace_id = 1

يتوقع ACL السجل المدمج قيم policy_class مثل prod أو project أو scratch (غير حساسة لحالة الأحرف). يتم التعامل مع القيم غير المعروفة على أنها prod.

[server.audit]

إعدادات تسجيل التدقيق الهيكلي.

الحقلالنوعالافتراضيالملاحظات
enabledbooltrueتمكين تسجيل تدقيق منظم (خطوط JSON).
pathstringnullمسار سجل التدقيق (خطوط JSON).
log_precheck_payloadsboolfalseتسجيل الحمولة الخام لفحص ما قبل (اختيار صريح).

[server.feedback]

ضوابط الكشف عن التعليقات لردود الأدوات.

الحقلالنوعالافتراضيالملاحظات
scenario_nextجدول{ الافتراضي = “ملخص”, الافتراضي_المحلي = “تتبع”, الحد_الأقصى = “تتبع” }سياسة التغذية الراجعة لاستجابات scenario_next.

مستويات التعليقات: summary (البوابات غير الملباة فقط)، trace (حالة البوابة + الحالة الشرطية)، evidence (تشمل سجلات الأدلة، خاضعة لسياسة الإفصاح).

[server.feedback.scenario_next]

سياسة التعليقات لردود السيناريو_next.

الحقلالنوعالافتراضيالملاحظات
default”ملخص” | “تتبع” | “أدلة”ملخصمستوى التغذية الراجعة الافتراضي للطلبات غير المحلية.
local_only_default”ملخص” | “تتبع” | “أدلة”تتبعمستوى التغذية الراجعة الافتراضي للطلبات المحلية فقط.
max”ملخص” | “تتبع” | “أدلة”تتبعالحد الأقصى لمستوى التغذية الراجعة المسموح به.
trace_subjectsمصفوفة[“loopback”, “stdio”]معرفات الموضوعات المسموح بها لطلب تغذية راجعة تتبع.
trace_rolesمصفوفة[]أسماء الأدوار المسموح بها لطلب تغذية راجعة تتبع.
evidence_subjectsمصفوفة[]معرفات الموضوعات المسموح بها لطلب تغذية راجعة أدلة.
evidence_rolesمصفوفة[]أسماء الأدوار المسموح بها لطلب تغذية راجعة أدلة.

تطبق الإعدادات الافتراضية المحلية فقط على loopback/stdio. يتم حل الموضوعات والأدوار من server.auth.principals.

[server.tools]

إعدادات رؤية الأدوات لمخرجات الأدوات/القائمة.

الحقلالنوعالافتراضيالملاحظات
mode”filter” | “passthrough”filterوضع الرؤية لأدوات/مخرجات القائمة.
allowlistمصفوفة[]
denylistمصفوفة[]

الرؤية منفصلة عن المصادقة: يتم استبعاد الأدوات المخفية من tools/list وتُعتبر غير معروفة عند استدعائها.

[server.limits]

طلب التزامن وحدود المعدل.

الحقلالنوعالافتراضيالملاحظات
max_inflightعدد صحيح256الحد الأقصى لطلبات MCP المتزامنة.
rate_limitجدولnullتكوين حد معدل اختياري.

[server.limits.rate_limit]

تكوين حد معدل بأسلوب دلو الاختياري.

الحقلالنوعالافتراضيالملاحظات
max_requestsعدد صحيح1000الحد الأقصى لعدد الطلبات في نافذة حد المعدل.
window_msعدد صحيح1000نافذة حد المعدل بالمللي ثانية.
max_entriesعدد صحيح4096الحد الأقصى لمدخلات حد المعدل المميزة.

[server.tls]

تكوين TLS لنقل HTTP/SSE.

الحقلالنوعالافتراضيالملاحظات
cert_pathسلسلةغير متوفرشهادة TLS للخادم (PEM).
key_pathسلسلةغير متوفرالمفتاح الخاص لـ TLS للخادم (PEM).
client_ca_pathسلسلةnullحزمة CA للعميل الاختيارية لـ mTLS.
require_client_certبوليانيtrueيتطلب شهادة العميل لـ mTLS.

[dev]

تجاوزات مطلوبة صريحة (اختياري فقط).

الحقلالنوعالافتراضيالملاحظات
permissiveboolfalseتفعيل وضع المطور المتساهل (اختيار صريح).
permissive_scope”asserted_evidence_only”asserted_evidence_onlyاختيار نطاق المطور المتساهل.
permissive_ttl_daysintegernullTTL اختياري للتحذيرات المتعلقة بالمطور المتساهل (بالأيام).
permissive_warnbooltrueإصدار تحذيرات عند تفعيل/انتهاء صلاحية المطور المتساهل.
permissive_exempt_providersarray[“assetcore_read”, “assetcore”]مقدمو الخدمات المعفيون من تخفيفات المطور المتساهل.

يتم رفض dev-permissive عندما يكون namespace.authority.mode = "assetcore_http".

[namespace]

قائمة السماح بالمساحة واختيار السلطة.

الحقلالنوعالافتراضيالملاحظات
allow_defaultboolfalseالسماح بمعرف مساحة الاسم الافتراضية (1).
default_tenantsarray[]قائمة السماح بالمستأجرين المطلوبة عند كون allow_default صحيحًا.
authoritytable{ mode = “none” }اختيار خلفية سلطة مساحة الاسم.

[namespace.authority]

تكوين خلفية سلطة مساحة الأسماء.

الحقلالنوعالافتراضيالملاحظات
mode”none” | “assetcore_http”noneاختيار خلفية سلطة النطاق.
assetcoreجدولnullإعدادات سلطة نطاق Asset Core.

[namespace.authority.assetcore]

إعدادات سلطة مساحة الأسماء لـ Asset Core.

الحقلالنوعالافتراضيالملاحظات
base_urlسلسلةغير متاحعنوان URL الأساسي لكتابة خادم Asset Core.
auth_tokenسلسلةnullرمز حاملي اختياري للبحث في مساحة الأسماء.
connect_timeout_msعدد صحيح500مهلة الاتصال HTTP (مللي ثانية).
request_timeout_msعدد صحيح2000مهلة طلب HTTP (مللي ثانية).

مثال على سلطة Asset Core:

[namespace.authority]
mode = "assetcore_http"

[namespace.authority.assetcore]
base_url = "http://127.0.0.1:9001"
auth_token = "token"
connect_timeout_ms = 500
request_timeout_ms = 2000

[الثقة]

تعيينات مسار الثقة وإنفاذ توقيع المزود.

الحقلالنوعالافتراضيالملاحظات
default_policy”audit”auditسياسة الثقة الافتراضية لمقدمي الخدمة.
min_lane”verified” | “asserted”verifiedالحد الأدنى من دليل الثقة المقبول.

require_signature نموذج:

[trust]
default_policy = { require_signature = { keys = ["key1.pub"] } }

[evidence]

سياسة الكشف عن الأدلة الافتراضية.

الحقلالنوعالافتراضيالملاحظات
allow_raw_valuesboolfalseالسماح بالكشف عن قيم الأدلة الخام.
require_provider_opt_inbooltrueيتطلب موافقة المزود للكشف الخام.

[provider_discovery]

ضوابط الإفصاح عن عقد/مخطط المزود.

الحقلالنوعالافتراضيالملاحظات
allowlistمصفوفة[]قائمة السماح الاختيارية للإفصاح عن المزود.
denylistمصفوفة[]معرفات المزود المرفوضة للإفصاح.
max_response_bytesعدد صحيح1048576الحد الأقصى لحجم الاستجابة لأدوات اكتشاف المزود.

[anchors]

إعداد سياسة تثبيت الأدلة.

الحقلالنوعالافتراضيالملاحظات
providersمصفوفة[]متطلبات محددة لمقدمي الخدمة.

[[anchors.providers]]

متطلبات محددة لمقدمي الخدمة.

الحقلالنوعمطلوبالافتراضيالملاحظات
provider_idسلسلةنعمغير متوفرمعرف المزود الذي يتطلب المراسي.
anchor_typeسلسلةنعمغير متوفرمعرف نوع المرساة المتوقع في النتائج.
required_fieldsمصفوفةنعمغير متوفرالحقول المطلوبة في anchor_value.

مثال على سياسة الربط (Asset Core):

[anchors]
[[anchors.providers]]
provider_id = "assetcore_read"
anchor_type = "assetcore.anchor_set"
required_fields = ["assetcore.namespace_id", "assetcore.commit_id", "assetcore.world_seq"]

[policy]

اختيار محرك سياسة الإرسال.

الحقلالنوعالافتراضيالملاحظات
engine”permit_all” | “deny_all” | “static”permit_allاختيار محرك سياسة التوزيع.
staticجدولnullقواعد سياسة التوزيع الثابتة.

مثال على سياسة ثابتة:

[policy]
engine = "static"

[policy.static]
default = "deny"

[[policy.static.rules]]
effect = "permit"
target_kinds = ["agent"]
require_labels = ["public"]

[policy.static]

قواعد سياسة الإرسال الثابت.

الحقلالنوعالافتراضيالملاحظات
default”إذن” | “رفض”رفضالقرار الافتراضي عندما لا تتطابق أي قواعد.
rulesمصفوفة[]قائمة مرتبة من قواعد السياسة الثابتة.

[[policy.static.rules]]

حقول قاعدة السياسة الثابتة.

الحقلالنوعالافتراضيالملاحظات
effect”permit” | “deny” | “error”n/aتأثير القاعدة.
error_messageسلسلةnullرسالة الخطأ عندما يكون التأثير ‘error’.
target_kindsمصفوفة[]أنواع الأهداف التي قد تستقبل الحزمة.
targetsمصفوفة[]محددات الأهداف المحددة.
require_labelsمصفوفة[]تسميات الرؤية المطلوبة للمطابقة.
forbid_labelsمصفوفة[]تسميات الرؤية التي تمنع المطابقة.
require_policy_tagsمصفوفة[]تسميات السياسة المطلوبة للمطابقة.
forbid_policy_tagsمصفوفة[]تسميات السياسة التي تمنع المطابقة.
content_typesمصفوفة[]أنواع المحتوى المسموح بها.
schema_idsمصفوفة[]معرفات المخطط المسموح بها.
packet_idsمصفوفة[]معرفات الحزمة المسموح بها.
stage_idsمصفوفة[]معرفات المرحلة المسموح بها.
scenario_idsمصفوفة[]معرفات السيناريو المسموح بها.

حقول محدد الهدف (policy.static.rules.targets):

الحقلالنوعالملاحظات
target_kind”عميل” | “جلسة” | “خارجي” | “قناة”نوع الهدف.
target_idسلسلة نصيةمعرف العميل/الجلسة/القناة.
systemسلسلة نصيةاسم النظام الخارجي (خارجي فقط).
targetسلسلة نصيةمعرف الهدف الخارجي (خارجي فقط).

[التحقق]

سياسة التحقق من صحة المقارنات للسيناريوهات والفحوصات المسبقة.

الحقلالنوعالافتراضيالملاحظات
strictbooltrueفرض التحقق من المقارنات الصارمة.
profile”strict_core_v1”strict_core_v1معرف ملف تعريف المقارنات الصارمة.
allow_permissiveboolfalseخيار صريح للتأكيد على التحقق المتساهل.
enable_lexicographicboolfalseتمكين المقارنات المعجمية (خيار حسب المخطط).
enable_deep_equalsboolfalseتمكين المقارنات العميقة للتساوي (خيار حسب المخطط).

التحقق الصارم (افتراضي):

[validation]
strict = true
profile = "strict_core_v1"

التحقق المرن (الاختيار الصريح):

[validation]
strict = false
allow_permissive = true

عائلات المقارنات الاختيارية:

[validation]
enable_lexicographic = true
enable_deep_equals = true

[runpack_storage]

تكوين تخزين Runpack.

الحقلالنوعمطلوبالافتراضيالملاحظات
type”object_store”نعمغير متوفراختيار واجهة تخزين Runpack.
provider”s3”نعمغير متوفرمزود واجهة التخزين.
bucketسلسلة نصيةنعمغير متوفراسم الدلو لتخزين Runpack.
regionسلسلة نصيةلاnullتجاوز المنطقة الاختيارية لـ S3.
endpointسلسلة نصيةلاnullنقطة النهاية الاختيارية المتوافقة مع S3.
prefixسلسلة نصيةلاnullبادئة المفتاح الاختيارية داخل الدلو.
force_path_styleبوليانيلاfalseفرض استخدام أسلوب العنوان بالطريق (متوافق مع S3).
allow_httpبوليانيلاfalseالسماح بنقاط النهاية غير المشفرة (اختيار صريح).

[runstatestore]

إعدادات استمرارية حالة التشغيل.

الحقلالنوعالافتراضيالملاحظات
type”memory” | “sqlite”memoryاختيار واجهة تخزين حالة التشغيل.
pathسلسلة نصيةnullمسار قاعدة بيانات SQLite.
busy_timeout_msعدد صحيح5000مهلة انشغال SQLite (مللي ثانية).
journal_mode”wal” | “delete”walوضع سجل SQLite.
sync_mode”full” | “normal”fullوضع مزامنة SQLite.
max_versionsعدد صحيحnullالحد الأقصى الاختياري للإصدارات المحتفظ بها لكل تشغيل.

مثال على SQLite:

[run_state_store]
type = "sqlite"
path = "decision-gate.db"
journal_mode = "wal"
sync_mode = "full"
busy_timeout_ms = 5000
max_versions = 1000

[schema_registry]

استمرارية سجل المخططات والحدود.

الحقلالنوعالافتراضيالملاحظات
type”memory” | “sqlite”memoryاختيار خلفية سجل المخطط.
pathسلسلةnullمسار قاعدة بيانات SQLite.
busy_timeout_msعدد صحيح5000مهلة انشغال SQLite (مللي ثانية).
journal_mode”wal” | “delete”walوضع سجل SQLite.
sync_mode”full” | “normal”fullوضع مزامنة SQLite.
max_schema_bytesعدد صحيح1048576الحد الأقصى لحجم الحمولة في المخطط بالبايت.
max_entriesعدد صحيحnullالحد الأقصى الاختياري للمخططات لكل مستأجر + مساحة اسم.
aclجدول{ mode = “builtin” }تكوين ACL لسجل المخطط.

[schema_registry.acl]

تكوين ACL لسجل المخطط.

الحقلالنوعالافتراضيالملاحظات
mode”builtin” | “custom”builtinقواعد الأدوار المدمجة أو قواعد ACL المخصصة.
default”deny” | “allow”denyالقرار الافتراضي عندما لا تتطابق أي قواعد (مخصص فقط).
allow_local_onlyboolfalseالسماح للمواضيع المحلية فقط بالوصول إلى السجل عند استخدام ACL المدمجة.
require_signingboolfalseيتطلب بيانات التعريف لتوقيع المخطط عند الكتابة.
rulesarray[]قواعد ACL المخصصة (الوضع = مخصص).

تستند قائمة التحكم في الوصول المدمجة إلى server.auth.principals لحل الأدوار وفئة السياسة. بدون المبدأ، يكون الوصول إلى السجل افتراضيًا مرفوضًا ما لم يتم تمكين allow_local_only (للمستخدمين المحليين فقط). قم بتمكين allow_local_only لتسهيل الاستخدام في بيئة التطوير فقط؛ حيث يتجاوز تعيين المبدأ للمتصلين المحليين فقط.

مثال على ACL مخصص:

[schema_registry.acl]
mode = "custom"
default = "deny"

[[schema_registry.acl.rules]]
effect = "allow"
actions = ["register", "list", "get"]
tenants = [1]
namespaces = [1]
roles = ["TenantAdmin", "NamespaceAdmin"]

[[schema_registry.acl.rules]]

حقول قاعدة ACL المخصصة.

الحقلالنوعالافتراضيالملاحظات
effect”allow” | “deny”n/aتأثير القاعدة.
actionsمصفوفة[]إجراءات السجل المغطاة بواسطة القاعدة.
tenantsمصفوفة[]نطاق معرف المستأجر.
namespacesمصفوفة[]نطاق معرف مساحة الأسماء.
subjectsمصفوفة[]الموضوعات الرئيسية في النطاق.
rolesمصفوفة[]أسماء الأدوار في النطاق.
policy_classesمصفوفة[]تسميات فئات السياسة في النطاق.

[المستندات]

بحث الوثائق وتكوين الموارد.

الحقلالنوعالافتراضيالملاحظات
enabledbooltrueتمكين واجهات الوثائق عالمياً.
enable_searchbooltrueتمكين أداة بحث الوثائق.
enable_resourcesbooltrueتمكين قائمة/قراءة موارد MCP.
include_default_docsbooltrueتضمين مجموعة الوثائق الافتراضية المدمجة.
extra_pathsarray[]مسارات وثائق إضافية للاستيراد (ملفات أو دلائل).
max_doc_bytesinteger262144الحد الأقصى لحجم إدخال وثيقة واحدة بالبايت.
max_total_bytesinteger1048576الحد الأقصى لإجمالي بايت الوثائق في الكتالوج.
max_docsinteger32الحد الأقصى لعدد الوثائق في الكتالوج.
max_sectionsinteger10الحد الأقصى للأقسام التي يتم إرجاعها بواسطة بحث الوثائق.

بحث الوثائق والموارد محدد ومحلي فقط بشكل افتراضي. استخدم extra_paths لاستيراد ملفات أو دلائل Markdown المحلية.

[[providers]]

تسجل إدخالات المزودين مزودي الخدمة المدمجين أو مزودي MCP.

الحقلالنوعمطلوبالافتراضيالملاحظات
nameسلسلةنعمغير متوفرمعرف المزود.
type”مضمن” | “مركز التحكم”نعمغير متوفرنوع المزود.
commandمصفوفةلا[]
urlسلسلةلاnullعنوان URL HTTP للمزود.
allow_insecure_httpبوليانيلاخطأالسماح بعناوين URL http:// لمزودي مركز التحكم.
capabilities_pathسلسلةلاnullالمسار إلى عقدة قدرات المزود بصيغة JSON.
authجدوللاnull
trustغير معروفلاnullسياسة الثقة الافتراضية للمزودين.
allow_rawبوليانيلاخطأالسماح بالكشف عن الأدلة الخام لهذا المزود.
timeoutsجدوللا{ connect_timeout_ms = 2000, request_timeout_ms = 10000 }تجاوزات مهلة HTTP لمزودي مركز التحكم.
configJSONلاnullكتلة إعدادات خاصة بالمزود.

auth form:

auth = { bearer_token = "token" }

trust نموذج تجاوز:

trust = { require_signature = { keys = ["provider.pub"] } }

مثال على capabilities_path لمزودي MCP:

[[providers]]
name = "mongo"
type = "mcp"
command = ["mongo-provider", "--stdio"]
capabilities_path = "contracts/mongo_provider.json"

timeouts form (HTTP MCP providers):

timeouts = { connect_timeout_ms = 2000, request_timeout_ms = 10000 }

مثال لمزود HTTP مع مهلات:

[[providers]]
name = "ci"
type = "mcp"
url = "https://ci.example.com/rpc"
capabilities_path = "contracts/ci_provider.json"
timeouts = { connect_timeout_ms = 2000, request_timeout_ms = 10000 }

قيود المهلة:

  • connect_timeout_ms يجب أن يكون بين 100 و 10000.
  • request_timeout_ms يجب أن يكون بين 500 و 30000 و >= connect_timeout_ms.

[providers.timeouts]

تجاوزات المهلة لمزودي HTTP MCP.

الحقلالنوعالافتراضيالملاحظات
connect_timeout_msعدد صحيح2000مهلة الاتصال TCP/TLS (مللي ثانية).
request_timeout_msعدد صحيح10000إجمالي مهلة الطلب (مللي ثانية).

تكوين المزود المدمج

تقبل الموفرون المدمجون كتل config اختيارية:

  • time:
    • allow_logical (bool, الافتراضي true)
  • env:
    • قائمة السماح (array)
    • denylist (array)
    • max_value_bytes (عدد صحيح)
    • max_key_bytes (عدد صحيح)
    • الاستبدالات (جدول)
  • json:
    • جذر (string)
    • root_id (سلسلة)
    • max_bytes (عدد صحيح)
    • allow_yaml (bool)
  • http:
    • allow_http (bool)
    • timeout_ms (عدد صحيح)
    • max_response_bytes (عدد صحيح)
    • allowed_hosts (array)
    • user_agent (سلسلة)
    • خوارزمية_التجزئة (string)