Referencia de Acción de AssetCore
Generado a partir de Operations Manifest v1.0.0 (API 0.1.0)
Generado automáticamente a partir del manifiesto de operaciones el 2026-01-22
AssetCore es un sustrato de memoria determinista. Los contenedores son regiones de memoria persistente. Las operaciones son transformaciones de memoria atómicas. Las transacciones son compromisos de memoria reproducibles.
Las siguientes operaciones modifican regiones de memoria estructurada de una manera independiente del dominio.
Esta referencia proporciona puntos de entrada directos y orientados a la acción para todas las 24 operaciones de AssetCore. Cada acción se mapea 1:1 a una operación de commit; cambie entre las pestañas de llamada de SDK y carga de operación según sea necesario. El preflight es opcional a través de ActionOptions(preflight=True).
Resumen
Las acciones de AssetCore son envolturas delgadas que construyen una única operación y la envían a través del punto final de commit. Si necesita transacciones de múltiples operaciones, utilice directamente los ayudantes de commit.
Prevuelo
Los métodos de acción aceptan un objeto opcional ActionOptions. Establezca preflight=True para ejecutar la canalización de preflight antes de confirmar. Las llamadas solo de preflight están disponibles a través de los ayudantes de preflight de acción o los ayudantes de preflight del cliente.
Operaciones
CrearContenedor
Crea un contenedor (región de memoria estructurada) con el tipo solicitado.
crear contenedor único dirigido
Crea un contenedor persistente del tipo solicitado (balance, cuadrícula, espacios, continuo 1D/2D). Proporciona external_id para reclamar un identificador externo estable; los IDs internos son densos, auto-asignados y nunca se exponen. Los IDs externos están limitados por el espacio de nombres y no deben existir ya.
Errores:
- ContainerAlreadyExists: Ya existe un contenedor con ese ID.
Comentario:
- Asigne un contenedor de balance con una precisión de 0.01 (quantization_inv=100).
- Proporcione un external_id que el sistema mapea a un ID de contenedor interno.
Ejemplos:
await client.actions.create_container(
external_id="container-1000",
kind={"quantization_inv": 100, "type": "balance"},
){
"op": "CreateContainer",
"args": {
"external_id": "container-1000",
"kind": {
"quantization_inv": 100,
"type": "balance"
}
}
}RemoveContainer
Elimina un contenedor después de drenar su contenido.
contenedor destruir único cascada
Elimina un contenedor después de que la transacción drene cualquier saldo, instancia y contenido de ranura. Esto es irreversible para el identificador del contenedor y preserva las regiones de memoria circundantes.
Errores:
- ContainerNotFound: El contenedor especificado no existe.
Comentario:
- Eliminar un contenedor después de drenar sus saldos, instancias y ranuras.
Ejemplos:
await client.actions.remove_container(
container_id="container-1001",
){
"op": "RemoveContainer",
"args": {
"container_id": "container-1001"
}
}AddFungible
Agrega una cantidad fungible a un saldo o a una celda de cuadrícula explícita.
balance crear único dirigido
Aumenta la cantidad fungible para un par de clase/clave. Al dirigirse a un contenedor de saldo, la cantidad se añade al saldo agregado. Al dirigirse a una celda de la cuadrícula, la operación crea o aumenta una pila en el ancla especificada, aplicando formas y rotaciones registradas para la colocación.
Errores:
- InvalidQuantity: La cantidad debe ser mayor que cero.
- WrongContainerKind: Los contenedores de slots no pueden contener activos fungibles.
- ContainerNotFound: El contenedor de destino no existe.
- UnregisteredClass: La clase no está registrada en el espacio de nombres.
- UnregisteredClassShape: Las adiciones de cuadrícula requieren una forma registrada para la clase y la clave.
- PositionOccupied: El ancla de cuadrícula solicitada se superpone a una colocación existente.
Comentario:
- Agregar 500 unidades de clase 100 a una pila de celdas de la cuadrícula en el ancla 5.
- La rotación se aplica a la forma de clase registrada.
Ejemplos:
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",
){
"op": "AddFungible",
"args": {
"class_id": "class-100",
"key": 1,
"location": {
"container_id": "container-2001",
"kind": "grid_cell",
"position": 5,
"rotation": "none"
},
"quantity": "500"
}
}Ejemplos avanzados: Ejemplo: recarga de saldo
- Agregar cantidad directamente al contenedor de saldo agregado.
await client.actions.add_fungible(
class_id="class-100",
key=1,
location={"container_id": "container-1001", "kind": "balance"},
quantity="1000",
)
RemoveFungible
Elimina una cantidad fungible de un saldo o de una celda de cuadrícula explícita.
balance destruir único dirigido
Disminuye la cantidad fungible para un par de clase/clave dentro de un contenedor. Soporta la quema desde saldos o la limpieza de una pila de cuadrícula en un ancla específica. Cuando una pila alcanza cero, puede ser eliminada, manteniendo el sustrato determinista.
Errores:
- InvalidQuantity: La cantidad debe ser mayor que cero.
- WrongContainerKind: Los contenedores de slots no pueden contener activos fungibles.
- ContainerNotFound: El contenedor de destino no existe.
- UnregisteredClass: La clase no está registrada en el espacio de nombres.
- InsufficientBalance: La cantidad solicitada excede el saldo disponible.
- PositionEmpty: No existe una pila en el ancla de cuadrícula solicitada.
Comentario:
- Eliminar 100 unidades de un contenedor de saldo para el par clase/clave.
Ejemplos:
await client.actions.remove_fungible(
class_id="class-100",
from_={"container_id": "container-1001", "kind": "balance"},
key=1,
quantity="100",
){
"op": "RemoveFungible",
"args": {
"class_id": "class-100",
"from": {
"container_id": "container-1001",
"kind": "balance"
},
"key": 1,
"quantity": "100"
}
}MoverFungible
Mueve una cantidad fungible entre saldos o celdas de la cuadrícula.
movimiento de balance multi objetivo
Transfiere una cantidad fungible de un lugar a otro. Soporta movimientos balance<->balance, balance<->grid y grid<->grid mientras hace cumplir las formas registradas para destinos de grid y asegura que las cantidades de origen sean suficientes.
Errores:
- InvalidQuantity: La cantidad debe ser mayor que cero.
- WrongContainerKind: Los contenedores de slots no pueden participar en movimientos fungibles.
- ContainerNotFound: Uno de los contenedores no existe.
- UnregisteredClass: La clase no está registrada en el espacio de nombres.
- InsufficientBalance: La ubicación de origen carece de la cantidad solicitada.
- PositionEmpty: No existe una pila en el ancla de cuadrícula solicitada.
- PositionOccupied: El ancla de la cuadrícula de destino se superpone a una colocación existente.
- UnregisteredClassShape: Los destinos de cuadrícula requieren una forma registrada para la clase y la clave.
Comentario:
- Mover la cantidad de un contenedor de saldo a una colocación en la cuadrícula.
- Los destinos de la cuadrícula imponen la forma y rotación registradas.
Ejemplos:
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",
},
){
"op": "MoveFungible",
"args": {
"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"
}
}
}Ejemplos avanzados: Ejemplo: de cuadrícula a cuadrícula
- Mover una pequeña cantidad entre dos anclajes de cuadrícula en el mismo contenedor.
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",
},
)
TransferirFungible
Transfiere una cantidad fungible entre contenedores estructurados.
movimiento de balance multi objetivo
Mueve una cantidad fungible de un contenedor a otro en una sola transacción. Ambos contenedores deben existir, soportar saldos para la clase/par de claves, y la fuente debe contener la cantidad solicitada. El registro de forma se aplica cuando se requiere la colocación en la cuadrícula.
Errores:
- InvalidQuantity: La cantidad debe ser mayor que cero.
- InvalidOperation: Las transferencias de identidad o el desbordamiento aritmético son inválidos.
- ContainerNotFound: Uno de los contenedores no existe.
- WrongContainerKind: Los contenedores de ranuras no pueden participar en transferencias fungibles.
- UnregisteredClass: La clase no está registrada en el espacio de nombres.
- InsufficientBalance: El contenedor de origen carece de la cantidad solicitada.
- UnregisteredClassShape: Los destinos de cuadrícula requieren una forma registrada para la clase y la clave.
Comentario:
- Transferir 250 unidades entre dos contenedores de saldo.
Ejemplos:
await client.actions.transfer_fungible(
class_id="class-100",
from_container="container-1001",
key=1,
quantity="250",
to_container="container-1002",
){
"op": "TransferFungible",
"args": {
"class_id": "class-100",
"from_container": "container-1001",
"key": 1,
"quantity": "250",
"to_container": "container-1002"
}
}TransferirMuchos
Transfiere múltiples cantidades fungibles entre contenedores en un solo lote.
balance movimiento multi fanout
Ejecuta un lote ordenado de transferencias de contenedor a contenedor con semántica atómica de todo o nada. Cada entrada valida los tipos de contenedor, el registro de clases y los saldos suficientes antes de que ocurran mutaciones.
Errores:
- InvalidQuantity: La cantidad debe ser mayor que cero.
- InvalidOperation: Las transferencias de identidad o la estructura de lote inválida fueron rechazadas.
- ContainerNotFound: Uno de los contenedores no existe.
- WrongContainerKind: Los contenedores de ranuras no pueden participar en transferencias fungibles.
- UnregisteredClass: La clase no está registrada en el espacio de nombres.
- InsufficientBalance: El contenedor de origen carece de la cantidad solicitada.
- UnregisteredClassShape: Los destinos de cuadrícula requieren una forma registrada para la clase y la clave.
Comentario:
- Agrupar múltiples transferencias de saldo en una única transacción atómica.
Ejemplos:
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",
},
],
){
"op": "TransferMany",
"args": {
"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"
}
]
}
}Ejemplo: transferencia de tres vías
- Reequilibrar múltiples contenedores en una sola transacción.
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",
},
],
)
Distribuir
Distribuye una cantidad fungible de una fuente a múltiples destinos.
balance movimiento multi fanout
Divide una única cantidad de origen entre múltiples contenedores de destino en un solo lote atómico. La fuente debe contener la cantidad total solicitada en todas las entradas de distribución.
Errores:
- InvalidQuantity: Cada cantidad de distribución debe ser mayor que cero.
- InvalidOperation: Los totales deben ajustarse dentro de los límites de saldo para la fuente.
- ContainerNotFound: Uno de los contenedores no existe.
- WrongContainerKind: Los contenedores de ranuras no pueden participar en la distribución fungible.
- UnregisteredClass: La clase no está registrada en el espacio de nombres.
- InsufficientBalance: El contenedor de origen carece de la cantidad total solicitada.
- UnregisteredClassShape: Los destinos de cuadrícula requieren una forma registrada para la clase y la clave.
Comentario:
- Dividir un saldo en múltiples contenedores de destino en un solo compromiso.
Ejemplos:
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,
){
"op": "Distribute",
"args": {
"class_id": "class-100",
"distributions": [
{
"quantity": "10",
"to_container": "container-2001"
},
{
"quantity": "15",
"to_container": "container-2002"
}
],
"from_container": "container-1001",
"key": 1
}
}MergeStacks
Fusiona una pila fungible en otra dentro de un contenedor.
balance consolidar multi dirigido
Combina la pila de origen en la pila de destino en el mismo contenedor de cuadrícula. Las pilas deben compartir la identidad de clase y clave. Las cantidades se suman de manera determinista y la pila de origen se elimina.
Errores:
- InvalidOperation: Las auto-fusiones, fusiones entre contenedores o desbordamientos son rechazados.
- ContainerNotFound: El contenedor de la cuadrícula desapareció antes de que se completara la fusión.
- WrongContainerKind: Solo los contenedores de cuadrícula contienen entidades de pila.
- StackNotFound: Uno de los stacks referenciados ya no exists.
- IncompatibleStacks: Las pilas deben compartir la misma clase y clave para fusionarse.
Comentario:
- Fusionar la pila de origen en la pila de destino.
Ejemplos:
await client.actions.merge_stacks(
dst_stack="stack-5001",
src_stack="stack-5002",
){
"op": "MergeStacks",
"args": {
"dst_stack": "stack-5001",
"src_stack": "stack-5002"
}
}ConsolidarPilas
Consolida todos los montones fungibles coincidentes dentro de un contenedor.
balance consolidar multi fanout
Encuentra cada pila en un contenedor que coincida con el par de clase/clave y las colapsa en una sola pila. Normaliza los saldos fragmentados que se acumularon a través de múltiples operaciones mientras preserva los totales.
Errores:
- ContainerNotFound: El contenedor especificado no existe.
- WrongContainerKind: Solo los contenedores de cuadrícula pueden contener pilas para consolidación.
- UnregisteredClass: La clase no está registrada en el espacio de nombres.
- InvalidOperation: No se encontraron pilas o la cantidad total desbordó u64.
- StackNotFound: Una pila desapareció durante la consolidación.
Comentario:
- Combina pilas con la misma clase/clave dentro de un contenedor.
Ejemplos:
await client.actions.consolidate_stacks(
class_id="class-100",
container_id="container-1001",
key=1,
){
"op": "ConsolidateStacks",
"args": {
"class_id": "class-100",
"container_id": "container-1001",
"key": 1
}
}MoverMuchos
Mueve múltiples pilas entre contenedores de cuadrícula en un solo lote.
balance movimiento multi fanout
Ejecuta un lote de movimientos de pilas a través de contenedores de Grid. Cada entrada especifica un identificador de pila, contenedor de destino y cantidad; los movimientos parciales dividen las pilas mientras que los movimientos completos las reubican.
Errores:
- InvalidQuantity: La cantidad de movimiento debe ser mayor que cero.
- InvalidOperation: Se rechazaron pilas duplicadas o destinos inválidos.
- ContainerNotFound: Uno de los contenedores no existe.
- WrongContainerKind: Las pilas solo pueden moverse entre contenedores de cuadrícula.
- StackNotFound: Uno de los stacks referenciados ya no exists.
- InsufficientBalance: Una pila carece de la cantidad solicitada para el movimiento.
- StackLimitExceeded: El contenedor de destino excede los límites de pila.
Comentario:
- Mover múltiples pilas en una operación para minimizar la sobrecarga de confirmación.
Ejemplos:
await client.actions.move_many(
moves=[
{"quantity": "3", "stack": "stack-5001", "to_container": "container-2001"},
{"quantity": "5", "stack": "stack-5002", "to_container": "container-2002"},
],
){
"op": "MoveMany",
"args": {
"moves": [
{
"quantity": "3",
"stack": "stack-5001",
"to_container": "container-2001"
},
{
"quantity": "5",
"stack": "stack-5002",
"to_container": "container-2002"
}
]
}
}Ejemplo: reubicación multicontenedor
- Reubicar múltiples pilas sin múltiples llamadas de confirmación.
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
Crea una nueva instancia y la coloca en una ubicación objetivo.
instancia crear única dirigida
Crea una instancia única para la clase/variante especificada y la coloca en un espacio, ancla de cuadrícula o coordenada continua. Valida el tipo de contenedor, las reglas de forma/rotación y la colisión antes de la colocación.
Errores:
- ContainerNotFound: El contenedor de destino no existe.
- UnregisteredClass: La clase no está registrada en el espacio de nombres.
- WrongContainerKind: Las ubicaciones de cuadrícula requieren contenedores de cuadrícula; las ubicaciones de ranura requieren contenedores de ranuras; las ubicaciones continuas requieren contenedores continuos.
- SlotOutOfBounds: El índice de ranura excede la capacidad del contenedor.
- SlotOccupied: El slot solicitado ya está ocupado.
- PositionOccupied: El ancla de la cuadrícula se superpone a una colocación existente.
- PositionOutOfBounds: La colocación excedería los límites de la cuadrícula.
- ContinuousPlacementOutOfBounds: La colocación continua se extiende más allá de los límites del contenedor.
- UnregisteredClassShape: Las ubicaciones en la cuadrícula requieren una forma registrada para la clase/clave.
Comentario:
- Crear una nueva instancia y colocarla en un espacio.
Ejemplos:
await client.actions.add_instance(
class_id="class-200",
key=1,
location={"container_id": "container-500", "kind": "slot", "slot_index": 1},
){
"op": "AddInstance",
"args": {
"class_id": "class-200",
"key": 1,
"location": {
"container_id": "container-500",
"kind": "slot",
"slot_index": 1
}
}
}Ejemplo: colocación en cuadrícula
- Menta y coloca una instancia directamente en un contenedor de cuadrícula.
await client.actions.add_instance(
class_id="class-200",
key=1,
location={
"container_id": "container-2001",
"kind": "grid_cell",
"position": 8,
"rotation": "none",
},
)
MoveInstance
Mueve una instancia existente a una nueva ubicación.
instancia mover único dirigido
Reubica una instancia previamente acuñada en un espacio, ancla de cuadrícula o coordenada continua. Valida las reglas de forma/rotación y previene la superposición en contenedores de cuadrícula y continuos.
Errores:
- InstanceNotFound: La instancia no existe.
- WrongContainerKind: El tipo de contenedor de destino no admite el movimiento solicitado.
- SlotOutOfBounds: El índice de ranura excede la capacidad del contenedor.
- SlotOccupied: El slot de destino ya está ocupado.
- PositionOccupied: El ancla de la cuadrícula de destino se superpone a una colocación existente.
- PositionOutOfBounds: El ancla de la cuadrícula de destino excede los límites.
- ContinuousPlacementOutOfBounds: La colocación continua se extiende más allá de los límites del contenedor.
- UnregisteredClassShape: Los destinos de cuadrícula requieren una forma registrada para la clase/clave de instancia.
- ContinuousPlacementOverlap: El destino continuo se superpone a una colocación existente.
Comentario:
- Mover una instancia existente a una celda de la cuadrícula.
Ejemplos:
await client.actions.move_instance(
instance="instance-9001",
to={
"container_id": "container-2001",
"kind": "grid_cell",
"position": 5,
"rotation": "none",
},
){
"op": "MoveInstance",
"args": {
"instance": "instance-9001",
"to": {
"container_id": "container-2001",
"kind": "grid_cell",
"position": 5,
"rotation": "none"
}
}
}RemoveInstance
Quema una instancia del mundo.
instancia destruir único dirigido
Elimina una instancia independientemente de su ubicación actual. La instancia no puede tener hijos adjuntos. Las referencias de cuadrícula o de ranura se borran como parte de la eliminación.
Errores:
- InstanceNotFound: El ID de instancia objetivo no existe.
- HasChildren: Los hijos deben ser separados antes de quemar la instancia.
Comentario:
- Eliminar una instancia y limpiar cualquier colocación.
Ejemplos:
await client.actions.remove_instance(
instance="instance-9001",
){
"op": "RemoveInstance",
"args": {
"instance": "instance-9001"
}
}BurnInstance
Elimina una instancia única permanentemente del sustrato.
instancia destruir único dirigido
Elimina permanentemente una instancia única. La instancia no debe estar adjunta a otras instancias ni colocada en un slot. El identificador nunca se reutiliza una vez quemado.
Errores:
- InstanceNotFound: El ID de instancia objetivo no existe.
- HasChildren: Los hijos deben ser separados antes de quemar la instancia.
Comentario:
- Eliminar permanentemente un id de instancia; nunca será reutilizado.
Ejemplos:
await client.actions.burn_instance(
instance_id="instance-9001",
){
"op": "BurnInstance",
"args": {
"instance_id": "instance-9001"
}
}Adjuntar
Adjunta una instancia hija a un padre para movimiento vinculado.
enlace de instancia multi dirigido
Crea una relación de padre-hijo entre dos instancias para que se muevan juntas. El hijo solo puede tener un padre, y se rechazan los ciclos para mantener el grafo de instancias acíclico.
Errores:
- InvalidOperation: El hijo y el padre deben ser diferentes y se rechazan los ciclos.
- InstanceNotFound: La instancia hija o padre no existe.
- AlreadyAttached: El niño ya tiene un padre.
- WouldCreateCycle: El adjunto crearía un ciclo en la jerarquía.
Comentario:
- Adjuntar una instancia hija a una instancia padre.
Ejemplos:
await client.actions.attach(
child_instance="instance-9002",
parent_instance="instance-9001",
){
"op": "Attach",
"args": {
"child_instance": "instance-9002",
"parent_instance": "instance-9001"
}
}Desconectar
Desvincula una instancia hija de su instancia padre.
enlace de instancia único dirigido
Elimina la relación de padre-hijo para que el hijo se vuelva independiente mientras permanece en el sustrato de memoria. El hijo retiene su ID y puede ser reanexado en otro lugar.
Errores:
- InstanceNotFound: La instancia especificada no existe.
- NotAttached: La instancia no tiene un padre del cual desasociarse.
Comentario:
- Desvincular una instancia hija de su instancia padre.
Ejemplos:
await client.actions.detach(
child_instance="instance-9002",
){
"op": "Detach",
"args": {
"child_instance": "instance-9002"
}
}PlaceInSlot
Posiciona una instancia en un espacio direccionable dentro de un contenedor.
movimiento de ranura único dirigido
Coloca una instancia única en una ranura específica en un contenedor que admite diseños de ranuras. La ranura debe estar vacía y el tipo de contenedor debe permitir la colocación de ranuras, preservando la posición determinista.
Errores:
- ContainerNotFound: El contenedor de destino no existe.
- WrongContainerKind: Solo los contenedores de Slots admiten la colocación de slots.
- SlotOutOfBounds: El índice de ranura excede la capacidad del contenedor.
- InstanceNotFound: La instancia que se está colocando no existe.
- SlotOccupied: El slot solicitado ya está ocupado.
Comentario:
- Colocar una instancia en un índice de ranura específico.
Ejemplos:
await client.actions.place_in_slot(
container_id="container-1001",
instance_id="instance-9001",
slot_index=1,
){
"op": "PlaceInSlot",
"args": {
"container_id": "container-1001",
"instance_id": "instance-9001",
"slot_index": 1
}
}RemoveFromSlot
Elimina una instancia de una ranura de contenedor.
movimiento de ranura único dirigido
Limpia un espacio y deja la instancia sin colocar. La instancia permanece en el sustrato de memoria, pero ya no ocupa ese enlace posicional, lo que permite el reubicado.
Errores:
- ContainerNotFound: El contenedor no existe.
- WrongContainerKind: Solo los contenedores de Slots admiten la eliminación de slots.
- SlotOutOfBounds: El índice de ranura excede la capacidad del contenedor.
- SlotEmpty: El slot no contiene una instancia para eliminar.
Comentario:
- Liberar un espacio sin destruir la instancia en sí misma.
Ejemplos:
await client.actions.remove_from_slot(
container_id="container-1001",
slot_index=1,
){
"op": "RemoveFromSlot",
"args": {
"container_id": "container-1001",
"slot_index": 1
}
}SwapSlots
Intercambia el contenido de dos ranuras ocupadas de manera atómica.
movimiento de ranura multi objetivo
Intercambia atómicamente el contenido de dos espacios, que pueden residir en el mismo o en diferentes contenedores. Ambos espacios deben existir y estar ocupados. El intercambio preserva los invariantes posicionales a través de los contenedores.
Errores:
- InvalidOperation: No se puede intercambiar un espacio con sí mismo en el mismo contenedor.
- ContainerNotFound: Uno de los contenedores no existe.
- WrongContainerKind: Ambos contenedores deben ser del tipo Slots.
- SlotOutOfBounds: Uno de los índices de ranura excede la capacidad del contenedor.
- SlotEmpty: Un slot está vacío y no se puede intercambiar.
Comentario:
- Intercambiar el contenido de dos espacios en una única operación atómica.
Ejemplos:
await client.actions.swap_slots(
container_a="container-1001",
container_b="container-1001",
slot_a=1,
slot_b=5,
){
"op": "SwapSlots",
"args": {
"container_a": "container-1001",
"container_b": "container-1001",
"slot_a": 1,
"slot_b": 5
}
}RegisterClass
Registra una definición de clase para que las operaciones futuras puedan hacer referencia a ella.
crear esquema único dirigido
Registra un ID externo de clase y un nombre para que las transacciones puedan hacer referencia a la clase y aplicar sus reglas de validación. Los IDs externos son de ámbito de espacio de nombres e inmutables una vez registrados; los IDs internos se asignan automáticamente y nunca se exponen.
Errores:
- ClassAlreadyExists: El class_id proporcionado (identificador externo) ya está en uso.
- ClassCapacityExceeded: El registro global de clases ha alcanzado su límite configurado.
Comentario:
- Registrar un id de clase con banderas y un nombre legible para humanos.
Ejemplos:
await client.actions.register_class(
request={"class_id": "class-100", "flags": 2, "name": "ExampleClass"},
){
"op": "RegisterClass",
"args": {
"request": {
"class_id": "class-100",
"flags": 2,
"name": "ExampleClass"
}
}
}RegisterClassShape
Registra una huella de forma de cuadrícula para una clase o variante de clase.
crear esquema único dirigido
Define la forma de ancho/alto para un class_id (identificador externo) y un stack_key opcional para que las ubicaciones en la cuadrícula puedan validar la ocupación y la rotación. Las formas son necesarias antes de colocar instancias o pilas en contenedores de cuadrícula para esa clase. Volver a registrar una forma idéntica se considera una operación sin efecto.
Errores:
- ClassNotFound: La clase con el class_id (identificador externo) referenciado no ha sido registrada.
- ShapeAlreadyDefined: El shape_id ya existe para la clase.
Comentario:
- Registrar una forma de cuadrícula para una clase y una clave de pila opcional.
Ejemplos:
await client.actions.register_class_shape(
request={"class_id": "class-200", "shape": {"height": 3, "width": 2}},
){
"op": "RegisterClassShape",
"args": {
"request": {
"class_id": "class-200",
"shape": {
"height": 3,
"width": 2
}
}
}
}RegisterClassContinuousShape2d
Registra un rectángulo 2D continuo para una clase o variante de clase.
crear esquema único dirigido
Define el rectángulo de punto fijo para un class_id (identificador externo) y un stack_key opcional para que las colocaciones continuas en 2D puedan validar colisiones y rotaciones. Requerido antes de colocar en contenedores continuous_grid_2d para esa clase. Volver a registrar un rectángulo idéntico se trata como una operación sin efecto.
Errores:
- ClassNotFound: La clase con el class_id (identificador externo) referenciado no ha sido registrada.
- ContinuousShapeAlreadyDefined: La forma continua ya está registrada para la clase/clave.
Comentario:
- Registre una forma rectangular 2D continua para las ubicaciones.
Ejemplos:
await client.actions.register_class_continuous_shape2d(
request={"class_id": "class-200", "rect": {"height": 8, "width": 10}},
){
"op": "RegisterClassContinuousShape2d",
"args": {
"request": {
"class_id": "class-200",
"rect": {
"height": 8,
"width": 10
}
}
}
}RegisterClassContinuousShape1d
Registra un rango continuo 1D para una clase o variante de clase.
crear esquema único dirigido
Define la longitud del rango de punto fijo para un class_id (identificador externo) y un stack_key opcional para que las colocaciones continuas 1D puedan validar colisiones. Requerido antes de colocar en contenedores continuous_line_1d para esa clase. Volver a registrar un rango idéntico se trata como una operación sin efecto.
Errores:
- ClassNotFound: La clase con el class_id (identificador externo) referenciado no ha sido registrada.
- ContinuousShapeAlreadyDefined: La forma continua ya está registrada para la clase/clave.
Comentario:
- Registrar una forma de intervalo 1D continua para colocaciones.
Ejemplos:
await client.actions.register_class_continuous_shape1d(
request={"class_id": "class-200", "span": {"length": 10}},
){
"op": "RegisterClassContinuousShape1d",
"args": {
"request": {
"class_id": "class-200",
"span": {
"length": 10
}
}
}
}