وثائق أصول Core

توثيق محرك حالة العالم الحتمي ومراجع API.

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

مرجع إجراءات AssetCore

تم إنشاؤه من Operations Manifest v1.0.0 (API 0.1.0)

تم إنشاؤه تلقائيًا من بيان العمليات في 2026-01-22

AssetCore هو قاعدة ذاكرة حتمية. الحاويات هي مناطق ذاكرة دائمة. العمليات هي تحويلات ذاكرة ذرية. المعاملات هي التزامات ذاكرة قابلة لإعادة التشغيل.

تعدل العمليات التالية مناطق الذاكرة المهيكلة بطريقة غير مرتبطة بالنطاق.

هذا المرجع يوفر نقاط دخول مباشرة، تركز على الإجراءات، لجميع عمليات AssetCore الـ 24. كل إجراء يتطابق 1:1 مع عملية الالتزام؛ قم بالتبديل بين علامات تبويب استدعاء SDK وحمولة العملية حسب الحاجة. الإجراء المسبق هو اختيار اختياري عبر ActionOptions(preflight=True).

نظرة عامة

إجراءات AssetCore هي أغلفة رقيقة تبني عملية واحدة وتقدمها من خلال نقطة نهاية الالتزام. إذا كنت بحاجة إلى معاملات متعددة العمليات، استخدم مساعدي الالتزام مباشرة.

ما قبل الطيران

تقبل طرق العمل كائن ActionOptions اختياري. قم بتعيين preflight=True لتشغيل خط أنابيب الفحص المسبق قبل الالتزام. تتوفر المكالمات الخاصة بالفحص المسبق فقط من خلال مساعدي الفحص المسبق للعمل أو مساعدي الفحص المسبق للعميل.


العمليات

إنشاء الحاوية

ينشئ حاوية (منطقة ذاكرة منظمة) بالنوع المطلوب.

إنشاء حاوية مستهدفة واحدة

ينشئ حاوية دائمة من النوع المطلوب (رصيد، شبكة، فتحات، مستمر 1D/2D). قدم external_id للمطالبة بمعرف خارجي ثابت؛ المعرفات الداخلية كثيفة، مخصصة تلقائيًا، ولا يتم الكشف عنها أبدًا. المعرفات الخارجية محددة بنطاق الاسم ويجب ألا توجد بالفعل.

أخطاء:

  • ContainerAlreadyExists: حاوية بهذا المعرف موجودة بالفعل.

تعليق:

  • تخصيص حاوية توازن بدقة 0.01 (quantization_inv=100).
  • قدم external_id الذي يقوم النظام بربطه بمعرف الحاوية الداخلي.

أمثلة:

await client.actions.create_container(
    external_id="container-1000",
    kind={"quantization_inv": 100, "type": "balance"},
)

إزالة الحاوية

يحذف الحاوية بعد تصريف محتوياتها.

تدمير حاوية واحدة بالتتابع

يتم إزالة الحاوية بعد أن تقوم المعاملة بتفريغ أي أرصدة، أو حالات، أو محتويات الفتحات. هذا غير قابل للتراجع بالنسبة لمعرف الحاوية ويحافظ على مناطق الذاكرة المحيطة.

أخطاء:

  • ContainerNotFound: الحاوية المحددة غير موجودة.

تعليق:

  • حذف حاوية بعد تصريف أرصدتها، مثيلاتها، وفتحاتها.

أمثلة:

await client.actions.remove_container(
    container_id="container-1001",
)

أضف قابل للتبادل

يضيف كمية قابلة للتبادل إلى رصيد أو خلية شبكة محددة.

توازن إنشاء مستهدف فردي

يزيد الكمية القابلة للتبادل لفئة/زوج مفاتيح. عند استهداف حاوية الرصيد، تتم إضافة الكمية إلى الرصيد الإجمالي. عند استهداف خلية الشبكة، تنشئ العملية أو تنمي كومة عند النقطة المحددة، مما يفرض الأشكال المسجلة والدوران للت placement.

أخطاء:

  • InvalidQuantity: يجب أن تكون الكمية أكبر من صفر.
  • WrongContainerKind: لا يمكن لحاويات الفتحات الاحتفاظ بالأصول القابلة للتبادل.
  • ContainerNotFound: الحاوية المستهدفة غير موجودة.
  • UnregisteredClass: الفئة غير مسجلة في مساحة الأسماء.
  • UnregisteredClassShape: تتطلب إضافات الشبكة شكلًا مسجلاً للفئة والمفتاح.
  • POSITION_OCCUPIED: نقطة التثبيت المطلوبة تتداخل مع موضع موجود.

تعليق:

  • أضف 500 وحدة من الفئة 100 إلى كومة خلية الشبكة عند النقطة 5.
  • يتم تطبيق الدوران على شكل الفئة المسجلة.

أمثلة:

await client.actions.add_fungible(
    class_id="class-100",
    key=1,
    location={
        "container_id": "container-2001",
        "kind": "grid_cell",
        "position": 5,
        "rotation": "none",
    },
    quantity="500",
)

أمثلة متقدمة: مثال: تعبئة الرصيد

  • أضف الكمية مباشرة إلى تجميع حاوية الرصيد.
await client.actions.add_fungible(
    class_id="class-100",
    key=1,
    location={"container_id": "container-1001", "kind": "balance"},
    quantity="1000",
)

إزالة القابلية للتبادل

يتم إزالة الكمية القابلة للتبادل من الرصيد أو خلية الشبكة المحددة.

توازن دمر هدف واحد

يقلل من الكمية القابلة للتداول لفئة/زوج مفاتيح داخل حاوية. يدعم الحرق من الأرصدة أو مسح كومة الشبكة عند نقطة ربط محددة. عندما تصل الكومة إلى الصفر، يمكن إزالتها، مما يحافظ على تحديد الركيزة.

أخطاء:

  • InvalidQuantity: يجب أن تكون الكمية أكبر من صفر.
  • WrongContainerKind: لا يمكن لحاويات الفتحات الاحتفاظ بالأصول القابلة للتبادل.
  • ContainerNotFound: الحاوية المستهدفة غير موجودة.
  • UnregisteredClass: الفئة غير مسجلة في مساحة الأسماء.
  • InsufficientBalance: الكمية المطلوبة تتجاوز الرصيد المتاح.
  • PositionEmpty: لا يوجد مكدس عند نقطة الشبكة المطلوبة.

تعليق:

  • إزالة 100 وحدة من حاوية الرصيد لزوج الفئة/المفتاح.

أمثلة:

await client.actions.remove_fungible(
    class_id="class-100",
    from_={"container_id": "container-1001", "kind": "balance"},
    key=1,
    quantity="100",
)

تحريك القابل للتداول

ينقل الكمية القابلة للتبادل بين الأرصدة أو خلايا الشبكة.

تحرك التوازن متعدد الأهداف

ينقل كمية قابلة للتبادل من موقع إلى آخر. يدعم التحركات بين الرصيد<->الرصيد، الرصيد<->الشبكة، والشبكة<->الشبكة مع فرض الأشكال المسجلة لوجهات الشبكة وضمان كفاية الكميات المصدرية.

أخطاء:

  • InvalidQuantity: يجب أن تكون الكمية أكبر من صفر.
  • WrongContainerKind: لا يمكن لحاويات الفتحات المشاركة في الحركات القابلة للتبادل.
  • ContainerNotFound: أحد الحاويات غير موجود.
  • UnregisteredClass: الفئة غير مسجلة في مساحة الأسماء.
  • InsufficientBalance: موقع المصدر يفتقر إلى الكمية المطلوبة.
  • PositionEmpty: لا يوجد مكدس عند نقطة الشبكة المطلوبة.
  • PositionOccupied: تتداخل نقطة ربط الشبكة الوجهة مع موضع موجود.
  • UnregisteredClassShape: تتطلب وجهات الشبكة شكلًا مسجلاً للفئة والمفتاح.

تعليق:

  • نقل الكمية من حاوية الرصيد إلى موضع الشبكة.
  • تفرض وجهات الشبكة الشكل المسجل + الدوران.

أمثلة:

await client.actions.move_fungible(
    class_id="class-100",
    from_={"container_id": "container-1001", "kind": "balance"},
    key=1,
    quantity="50",
    to={
        "container_id": "container-2001",
        "kind": "grid_cell",
        "position": 4,
        "rotation": "clockwise90",
    },
)

أمثلة متقدمة: مثال: من شبكة إلى شبكة

  • نقل كمية صغيرة بين نقطتين ثابتتين في نفس الحاوية.
await client.actions.move_fungible(
    class_id="class-100",
    from_={
        "container_id": "container-2001",
        "kind": "grid_cell",
        "position": 5,
        "rotation": "none",
    },
    key=1,
    quantity="5",
    to={
        "container_id": "container-2001",
        "kind": "grid_cell",
        "position": 6,
        "rotation": "none",
    },
)

نقل القابل للتحويل

ينقل كمية قابلة للتبادل بين حاويات منظمة.

تحرك التوازن متعدد الأهداف

ينقل الكمية القابلة للتبادل من حاوية إلى أخرى في معاملة واحدة. يجب أن توجد كلتا الحاويتين، وتدعم الأرصدة لزوج الفئة/المفتاح، ويجب أن تحتوي المصدر على الكمية المطلوبة. يتم تطبيق تسجيل الشكل عندما يكون وضع الشبكة مطلوبًا.

أخطاء:

  • InvalidQuantity: يجب أن تكون الكمية أكبر من صفر.
  • InvalidOperation: تحويل الهوية أو تجاوز الحساب غير صالح.
  • ContainerNotFound: أحد الحاويات غير موجود.
  • WrongContainerKind: لا يمكن لحاويات الفتحات المشاركة في التحويلات القابلة للتبادل.
  • UnregisteredClass: الفئة غير مسجلة في مساحة الأسماء.
  • InsufficientBalance: حاوية المصدر تفتقر إلى الكمية المطلوبة.
  • UnregisteredClassShape: تتطلب وجهات الشبكة شكلًا مسجلاً للفئة والمفتاح.

تعليق:

  • نقل 250 وحدة بين حاويتين رصيد.

أمثلة:

await client.actions.transfer_fungible(
    class_id="class-100",
    from_container="container-1001",
    key=1,
    quantity="250",
    to_container="container-1002",
)

نقل العديد

ينقل كميات متعددة قابلة للتبادل بين الحاويات في دفعة واحدة.

تحويل رصيد متعدد التوزيع

ينفذ دفعة مرتبة من عمليات النقل من حاوية إلى حاوية مع دلالات ذرية “كل شيء أو لا شيء”. يتحقق كل إدخال من أنواع الحاويات، تسجيل الفئة، والأرصدة الكافية قبل حدوث أي تغييرات.

أخطاء:

  • InvalidQuantity: يجب أن تكون الكمية أكبر من صفر.
  • InvalidOperation: تم رفض تحويل الهوية أو هيكل الدفعة غير الصالح.
  • ContainerNotFound: أحد الحاويات غير موجود.
  • WrongContainerKind: لا يمكن لحاويات الفتحات المشاركة في التحويلات القابلة للتبادل.
  • UnregisteredClass: الفئة غير مسجلة في مساحة الأسماء.
  • InsufficientBalance: حاوية المصدر تفتقر إلى الكمية المطلوبة.
  • UnregisteredClassShape: تتطلب وجهات الشبكة شكلًا مسجلاً للفئة والمفتاح.

تعليق:

  • تجميع عدة تحويلات رصيد في معاملة ذرية واحدة.

أمثلة:

await client.actions.transfer_many(
    transfers=[
        {
            "class_id": "class-100",
            "from_container": "container-1001",
            "key": 1,
            "quantity": "25",
            "to_container": "container-1002",
        },
        {
            "class_id": "class-101",
            "from_container": "container-1002",
            "quantity": "10",
            "to_container": "container-1003",
        },
    ],
)

أمثلة متقدمة: مثال: نقل ثلاثي الاتجاهات

  • إعادة توازن حاويات متعددة في معاملة واحدة.
await client.actions.transfer_many(
    transfers=[
        {
            "class_id": "class-100",
            "from_container": "container-1001",
            "key": 1,
            "quantity": "5",
            "to_container": "container-1002",
        },
        {
            "class_id": "class-100",
            "from_container": "container-1002",
            "key": 1,
            "quantity": "7",
            "to_container": "container-1003",
        },
        {
            "class_id": "class-101",
            "from_container": "container-1003",
            "quantity": "2",
            "to_container": "container-1001",
        },
    ],
)

توزيع

يوزع كمية قابلة للتبادل من مصدر واحد إلى وجهات متعددة.

تحويل رصيد متعدد التوزيع

يقوم بتقسيم كمية مصدر واحدة عبر عدة حاويات وجهة في دفعة ذرية واحدة. يجب أن تحتوي المصدر على الكمية الإجمالية المطلوبة عبر جميع إدخالات التوزيع.

أخطاء:

  • InvalidQuantity: يجب أن تكون كل كمية توزيع أكبر من الصفر.
  • InvalidOperation: يجب أن تتناسب الإجماليات ضمن حدود الرصيد للمصدر.
  • ContainerNotFound: أحد الحاويات غير موجود.
  • WrongContainerKind: لا يمكن لحاويات الفتحات المشاركة في التوزيع القابل للتبادل.
  • UnregisteredClass: الفئة غير مسجلة في مساحة الأسماء.
  • InsufficientBalance: حاوية المصدر تفتقر إلى الكمية الإجمالية المطلوبة.
  • UnregisteredClassShape: تتطلب وجهات الشبكة شكلًا مسجلاً للفئة والمفتاح.

تعليق:

  • تقسيم الرصيد إلى حاويات وجهة متعددة في عملية واحدة.

أمثلة:

await client.actions.distribute(
    class_id="class-100",
    distributions=[
        {"quantity": "10", "to_container": "container-2001"},
        {"quantity": "15", "to_container": "container-2002"},
    ],
    from_container="container-1001",
    key=1,
)

دمج المكدسات

يتم دمج كومة قابلة للتبادل في أخرى داخل حاوية.

توازن دمج متعدد مستهدف

يجمع المكدس المصدر في المكدس الوجهة داخل نفس حاوية الشبكة. يجب أن تتشارك المكدسات في الهوية الصفية والمفتاحية. يتم جمع الكميات بشكل حتمي ويتم إزالة المكدس المصدر.

أخطاء:

  • InvalidOperation: عمليات الدمج الذاتية، وعمليات الدمج عبر الحاويات، أو الفيضانات مرفوضة.
  • ContainerNotFound: اختفى حاوية الشبكة قبل أن يكتمل الدمج.
  • WrongContainerKind: تحتوي حاويات الشبكة فقط على كائنات المكدس.
  • StackNotFound: واحدة من المكدسات المشار إليها لم تعد موجودة.
  • IncompatibleStacks: يجب أن تتشارك المكدسات نفس الفئة والمفتاح للدمج.

تعليق:

  • دمج المكدس المصدر في مكدس الوجهة.

أمثلة:

await client.actions.merge_stacks(
    dst_stack="stack-5001",
    src_stack="stack-5002",
)

ConsolidateStacks

يجمع جميع الكتل القابلة للتبادل المتطابقة داخل حاوية.

توازن دمج متعدد توزيع

يجد كل مكدس في حاوية يتطابق مع زوج الفئة/المفتاح ويجمعها في مكدس واحد. يقوم بتطبيع الأرصدة المجزأة التي تراكمت عبر عمليات متعددة مع الحفاظ على الإجماليات.

أخطاء:

  • ContainerNotFound: الحاوية المحددة غير موجودة.
  • WrongContainerKind: يمكن فقط لحاويات الشبكة الاحتفاظ بالمكدسات للتوحيد.
  • UnregisteredClass: الفئة غير مسجلة في مساحة الأسماء.
  • InvalidOperation: لم يتم العثور على أي مكدسات أو أن الكمية الإجمالية تجاوزت u64.
  • StackNotFound: اختفى مكدس أثناء الدمج.

تعليق:

  • دمج المكدسات ذات نفس الفئة/المفتاح داخل حاوية.

أمثلة:

await client.actions.consolidate_stacks(
    class_id="class-100",
    container_id="container-1001",
    key=1,
)

تحريك العديد

ينقل عدة أكوام بين حاويات الشبكة في دفعة واحدة.

تحويل رصيد متعدد التوزيع

ينفذ دفعة من حركات المكدس عبر حاويات الشبكة. يحدد كل إدخال معرف المكدس، وحاوية الوجهة، والكمية؛ حيث تقوم الحركات الجزئية بتقسيم المكدسات بينما تقوم الحركات الكاملة بنقلها.

أخطاء:

  • InvalidQuantity: يجب أن تكون كمية النقل أكبر من صفر.
  • InvalidOperation: تم رفض المكدسات المكررة أو الوجهات غير الصالحة.
  • ContainerNotFound: أحد الحاويات غير موجود.
  • WrongContainerKind: يمكن أن تتحرك المكدسات فقط بين حاويات الشبكة.
  • StackNotFound: واحدة من المكدسات المشار إليها لم تعد موجودة.
  • InsufficientBalance: لا يحتوي المكدس على الكمية المطلوبة للحركة.
  • StackLimitExceeded: حاوية الوجهة تتجاوز حدود المكدس.

تعليق:

  • نقل عدة مكدسات في عملية واحدة لتقليل عبء الالتزام.

أمثلة:

await client.actions.move_many(
    moves=[
        {"quantity": "3", "stack": "stack-5001", "to_container": "container-2001"},
        {"quantity": "5", "stack": "stack-5002", "to_container": "container-2002"},
    ],
)

أمثلة متقدمة: مثال: نقل حاويات متعددة

  • نقل عدة مكدسات دون الحاجة إلى عدة استدعاءات للتأكيد.
await client.actions.move_many(
    moves=[
        {"quantity": "1", "stack": "stack-5003", "to_container": "container-2003"},
        {"quantity": "2", "stack": "stack-5004", "to_container": "container-2004"},
    ],
)

AddInstance

ينشئ مثيلاً جديدًا ويضعه في موقع مستهدف.

إنشاء مثيل مستهدف واحد

ينشئ مثيلاً فريداً للفئة/النوع المحدد ويضعه في فتحة أو ركيزة شبكة أو إحداثيات مستمرة. يتحقق من نوع الحاوية، وقواعد الشكل/الدوران، والتصادم قبل التثبيت.

أخطاء:

  • ContainerNotFound: الحاوية المستهدفة غير موجودة.
  • UnregisteredClass: الفئة غير مسجلة في مساحة الأسماء.
  • WrongContainerKind: تتطلب مواضع الشبكة حاويات الشبكة؛ تتطلب مواضع الفتحات حاويات الفتحات؛ تتطلب المواضع المستمرة حاويات مستمرة.
  • SlotOutOfBounds: فهرس الفتحة يتجاوز سعة الحاوية.
  • SlotOccupied: المكان المطلوب مشغول بالفعل.
  • PositionOccupied: نقطة الشبكة تتداخل مع موضع موجود.
  • PositionOutOfBounds: سيكون الموضع خارج حدود الشبكة.
  • ContinuousPlacementOutOfBounds: التوزيع المستمر يتجاوز حدود الحاوية.
  • UnregisteredClassShape: تتطلب مواضع الشبكة شكلًا مسجلاً للفئة/المفتاح.

تعليق:

  • قم بإنشاء مثيل جديد وضعه في فتحة.

أمثلة:

await client.actions.add_instance(
    class_id="class-200",
    key=1,
    location={"container_id": "container-500", "kind": "slot", "slot_index": 1},
)

أمثلة متقدمة: مثال: وضع الشبكة

  • قم بإنشاء وتعيين مثيل مباشرة في حاوية الشبكة.
await client.actions.add_instance(
    class_id="class-200",
    key=1,
    location={
        "container_id": "container-2001",
        "kind": "grid_cell",
        "position": 8,
        "rotation": "none",
    },
)

MoveInstance

ينقل مثيلاً موجودًا إلى موقع جديد.

مثال نقل مستهدف فردي

يعيد وضع مثيل تم سكّه مسبقًا في فتحة أو ركيزة شبكة أو إحداثيات مستمرة. يتحقق من قواعد الشكل/الدوران ويمنع التداخل في الشبكة والحاويات المستمرة.

أخطاء:

  • InstanceNotFound: المثيل غير موجود.
  • WrongContainerKind: نوع حاوية الوجهة لا يدعم النقل المطلوب.
  • SlotOutOfBounds: فهرس الفتحة يتجاوز سعة الحاوية.
  • SlotOccupied: فتحة الوجهة مشغولة بالفعل.
  • PositionOccupied: تتداخل نقطة ربط الشبكة الوجهة مع موضع موجود.
  • PositionOutOfBounds: نقطة ربط الشبكة الوجهة تتجاوز الحدود.
  • ContinuousPlacementOutOfBounds: التوزيع المستمر يتجاوز حدود الحاوية.
  • UnregisteredClassShape: تتطلب وجهات الشبكة شكلًا مسجلاً لفئة/مفتاح الحالة.
  • ContinuousPlacementOverlap: الوجهة المستمرة تتداخل مع موضع موجود.

تعليق:

  • نقل مثيل موجود إلى موضع خلية الشبكة.

أمثلة:

await client.actions.move_instance(
    instance="instance-9001",
    to={
        "container_id": "container-2001",
        "kind": "grid_cell",
        "position": 5,
        "rotation": "none",
    },
)

إزالة المثيل

يحرق مثيلاً من العالم.

تدمير مثيل مستهدف واحد

يتم إزالة الحالة بغض النظر عن موضعها الحالي. لا يمكن أن تحتوي الحالة على أطفال ملحقين. يتم مسح مراجع الشبكة أو الفتحة كجزء من عملية الحرق.

أخطاء:

  • InstanceNotFound: معرف المثيل المستهدف غير موجود.
  • HasChildren: يجب فصل الأطفال قبل حرق النسخة.

تعليق:

  • إزالة مثيل ومسح أي مواضع.

أمثلة:

await client.actions.remove_instance(
    instance="instance-9001",
)

حرق الحالة

يتم إزالة حالة فريدة بشكل دائم من الركيزة.

تدمير مثيل مستهدف واحد

يحذف بشكل دائم مثيلًا فريدًا. يجب ألا يكون المثيل مرتبطًا بمثيلات أخرى أو موضوعًا في فتحة. لا يتم إعادة استخدام المعرف مرة أخرى بعد حرقه.

أخطاء:

  • InstanceNotFound: معرف المثيل المستهدف غير موجود.
  • HasChildren: يجب فصل الأطفال قبل حرق النسخة.

تعليق:

  • حذف معرف الحالة بشكل دائم؛ لن يتم إعادة استخدامه أبداً.

أمثلة:

await client.actions.burn_instance(
    instance_id="instance-9001",
)

أرفق

يُرفق مثيل طفل بمثيل أب للحركة المرتبطة.

رابط الحالة متعدد الأهداف

ينشئ علاقة أبوية-طفولية بين حالتين بحيث تتحركان معًا. يمكن أن يكون للطفل والد واحد فقط، ويتم رفض الدورات للحفاظ على رسم الحالة خاليًا من الدورات.

أخطاء:

  • InvalidOperation: يجب أن يختلف الطفل عن الوالد ويتم رفض الدورات.
  • InstanceNotFound: لا توجد نسخة فرعية أو أصلية.
  • AlreadyAttached: الطفل لديه والد بالفعل.
  • WouldCreateCycle: الإرفاق سيؤدي إلى إنشاء دورة في الهيكل التنظيمي.

تعليق:

  • إرفاق مثيل طفل بمثيل والد.

أمثلة:

await client.actions.attach(
    child_instance="instance-9002",
    parent_instance="instance-9001",
)

فصل

يفصل مثيل الطفل عن مثيله الأب.

رابط الحالة مستهدف فردي

يتم إزالة علاقة الأب والطفل بحيث يصبح الطفل مستقلاً مع البقاء في مادة الذاكرة. يحتفظ الطفل بمعرفه ويمكن إعادة توصيله في مكان آخر.

أخطاء:

  • InstanceNotFound: المثيل المحدد غير موجود.
  • NotAttached: لا توجد مثيل رئيسي للتفكيك منه.

تعليق:

  • فصل مثيل فرعي عن مثيله الرئيسي.

أمثلة:

await client.actions.detach(
    child_instance="instance-9002",
)

PlaceInSlot

يضع مثيلاً في فتحة قابلة للعناوين داخل حاوية.

تحريك فتحة واحدة مستهدفة

يضع مثيلًا فريدًا في فتحة محددة داخل حاوية تدعم تخطيطات الفتحات. يجب أن تكون الفتحة فارغة ويجب أن يسمح نوع الحاوية بوضع الفتحات، مع الحفاظ على الترتيب المحدد.

أخطاء:

  • ContainerNotFound: الحاوية الوجهة غير موجودة.
  • WrongContainerKind: فقط حاويات Slots تدعم وضع الفتحات.
  • SlotOutOfBounds: فهرس الفتحة يتجاوز سعة الحاوية.
  • InstanceNotFound: الكائن الذي يتم وضعه غير موجود.
  • SlotOccupied: المكان المطلوب مشغول بالفعل.

تعليق:

  • ضع مثيلاً في فهرس فتحة محددة.

أمثلة:

await client.actions.place_in_slot(
    container_id="container-1001",
    instance_id="instance-9001",
    slot_index=1,
)

RemoveFromSlot

يُزيل مثيلاً من فتحة الحاوية.

تحريك فتحة واحدة مستهدفة

يمسح فتحة ويترك الحالة غير موضوعة. تبقى الحالة في ركيزة الذاكرة ولكنها لم تعد تشغل تلك الربط الموضعية، مما يتيح إعادة التمركز.

أخطاء:

  • ContainerNotFound: الحاوية غير موجودة.
  • WrongContainerKind: فقط حاويات Slots تدعم إزالة الفتحات.
  • SlotOutOfBounds: فهرس الفتحة يتجاوز سعة الحاوية.
  • SlotEmpty: الفتحة لا تحتوي على مثيل لإزالته.

تعليق:

  • قم بإفراغ فتحة دون تدمير المثيل نفسه.

أمثلة:

await client.actions.remove_from_slot(
    container_id="container-1001",
    slot_index=1,
)

SwapSlots

يبدل محتويات فتحتين مشغولتين بشكل ذري.

تحريك فتحة متعددة الأهداف

يتم تبادل محتويات فتحتين بشكل ذري، يمكن أن تكونا في نفس الحاوية أو في حاويات مختلفة. يجب أن توجد الفتحتان وأن تكونا مشغولتين. يحافظ التبادل على الثوابت الموضعية عبر الحاويات.

أخطاء:

  • InvalidOperation: لا يمكن تبديل فتحة بنفسها في نفس الحاوية.
  • ContainerNotFound: أحد الحاويات غير موجود.
  • WrongContainerKind: يجب أن يكون كلا الحاويتين من نوع Slots.
  • SlotOutOfBounds: أحد مؤشرات الفتحة يتجاوز سعة الحاوية.
  • SlotEmpty: الفتحة فارغة ولا يمكن تبديلها.

تعليق:

  • تبادل محتويات فتحتين في عملية ذرية واحدة.

أمثلة:

await client.actions.swap_slots(
    container_a="container-1001",
    container_b="container-1001",
    slot_a=1,
    slot_b=5,
)

RegisterClass

يسجل تعريف الفئة حتى يمكن للعمليات المستقبلية الإشارة إليه.

إنشاء مخطط مستهدف واحد

يسجل معرف خارجي واسم الفئة بحيث يمكن للمعاملات الإشارة إلى الفئة وتطبيق قواعد التحقق الخاصة بها. المعرفات الخارجية محددة بنطاق الفضاء الاسمي وغير قابلة للتغيير بمجرد تسجيلها؛ بينما يتم تعيين المعرفات الداخلية تلقائيًا ولا يتم الكشف عنها أبدًا.

أخطاء:

  • ClassAlreadyExists: المعرف المقدم class_id (المعرف الخارجي) قيد الاستخدام بالفعل.
  • ClassCapacityExceeded: سجل الفصول العالمي قد وصل إلى حدوده المكونة.

تعليق:

  • تسجيل معرف الفئة مع العلامات واسم قابل للقراءة البشرية.

أمثلة:

await client.actions.register_class(
    request={"class_id": "class-100", "flags": 2, "name": "ExampleClass"},
)

RegisterClassShape

يسجل بصمة شكل الشبكة لفئة أو نوع فئة.

إنشاء مخطط مستهدف واحد

يحدد شكل العرض/الارتفاع لـ class_id (معرف خارجي) و stack_key اختياري حتى تتمكن مواضع الشبكة من التحقق من الشغور والدوران. الأشكال مطلوبة قبل وضع الحالات أو المجموعات في حاويات الشبكة لتلك الفئة. يُعتبر إعادة تسجيل شكل مطابق كعملية لا تفعل شيئًا.

أخطاء:

  • ClassNotFound: لم يتم تسجيل معرف الفئة (معرف خارجي) المشار إليه.
  • ShapeAlreadyDefined: الـ shape_id موجود بالفعل لهذه الفئة.

تعليق:

  • تسجيل شكل شبكة لفئة ومفتاح مكدس اختياري.

أمثلة:

await client.actions.register_class_shape(
    request={"class_id": "class-200", "shape": {"height": 3, "width": 2}},
)

RegisterClassContinuousShape2d

يسجل مستطيلًا ثنائي الأبعاد مستمرًا لفئة أو نوع فئة.

إنشاء مخطط مستهدف واحد

يحدد المستطيل الثابت لنوع class_id (معرف خارجي) و stack_key اختياري بحيث يمكن أن تتحقق التوزيعات المستمرة ثنائية الأبعاد من التصادمات والدورات. مطلوب قبل وضعه في حاويات continuous_grid_2d لذلك النوع. يُعتبر إعادة تسجيل مستطيل متطابق كعملية لا تفعل شيئًا.

أخطاء:

  • ClassNotFound: لم يتم تسجيل معرف الفئة (معرف خارجي) المشار إليه.
  • ContinuousShapeAlreadyDefined: الشكل المستمر مسجل بالفعل للفئة/المفتاح.

تعليق:

  • تسجيل شكل مستطيل ثنائي الأبعاد مستمر للتوزيعات.

أمثلة:

await client.actions.register_class_continuous_shape2d(
    request={"class_id": "class-200", "rect": {"height": 8, "width": 10}},
)

RegisterClassContinuousShape1d

يسجل مدى مستمر 1D لفئة أو نوع فئة.

إنشاء مخطط مستهدف واحد

يحدد طول مدى النقطة الثابتة لـ class_id (معرف خارجي) و stack_key اختياري حتى يمكن التحقق من التصادمات في التوزيعات المستمرة 1D. مطلوب قبل وضعها في حاويات continuous_line_1d لذلك الصنف. يُعتبر إعادة تسجيل مدى مطابق كعملية لا تفعل شيئًا.

أخطاء:

  • ClassNotFound: لم يتم تسجيل معرف الفئة (معرف خارجي) المشار إليه.
  • ContinuousShapeAlreadyDefined: الشكل المستمر مسجل بالفعل للفئة/المفتاح.

تعليق:

  • تسجيل شكل نطاق مستمر 1D للتوزيعات.

أمثلة:

await client.actions.register_class_continuous_shape1d(
    request={"class_id": "class-200", "span": {"length": 10}},
)