o
    B_i                     @  s^   d dl mZ d dlmZmZmZ ddlmZ ddlm	Z	m
Z
 dd
dZdddZdddZdS )    )annotations)AnyDictList   )build_registry)ZoneOperation	ParamSpecpr	   returnDict[str, Any]c                 C  s2   | j | j| j| j| jd}| jd ur| j|d< |S )N)nametyperequireddescriptionenumitems_schema)r   r   r   r   r   r   )r
   data r   M/var/www/html/flask_server/apps/aroflo_connector_app/services/capabilities.py_paramspec_to_dict
   s   
	
r   opr   fallback_categorystrc                 C  sH   | j | j| j| j| jdd | jD | j| j| jp|| j	| j
| j| jdS )zx
    Convierte un ZoneOperation en un dict serializable a JSON,
    incluyendo la metadata que definimos en Fase 1.
    c                 S  s   g | ]}t |qS r   )r   ).0r
   r   r   r   
<listcomp>&   s    z&_operation_to_dict.<locals>.<listcomp>codelabelr   http_methoddefault_paramsparamsside_effect
idempotentcategory	use_casesexamples
risk_levelrequires_confirmationr   )r   r   r   r   r   _operation_to_dict   s   r)   clientr   c                 C  sp   t | }g }| D ]%\}}|j|j|jg d}|jD ]}|d t||jd q|| q
dd|d}|S )z
    Construye un manifest de capacidades para TODAS las zonas registradas.

    Importante:
    - NO llama a la API de AroFlo.
    - Solo instancia las zonas y lee sus operaciones.
    - Es seguro ejecutarlo en cualquier entorno.
    )r   r   r   
operationsr+   )r   z1.0aroflo_connector_app)schema_versionappzones)r   itemsr   r   r   r+   appendr)   )r*   registryzones_payloadr   zone	zone_dictr   manifestr   r   r   build_capabilities_manifest2   s    	
r7   N)r
   r	   r   r   )r   r   r   r   r   r   )r*   r   r   r   )
__future__r   typingr   r   r   zones.registryr   
zones.baser   r	   r   r)   r7   r   r   r   r   <module>   s   

