Team Ai
Apppublic

Tribh/devops-copilot

sourceHugging Faceupdated 8mo agoView on Hugging Face
0likes
api.cpython-311.pyc58 linesDownload Raw Back to __pycache__
1�

2њi�����dZddlmZmZddlmZddlmZddlm	Z	ddl3mZddlm
Z
ddlmZdd	lZed4dd�
��Zejdd���dd��Zee���Ze�d��d���ZGd�de��ZGd�de��Ze�d��d���Ze�d��d���Ze�d��defd���Ze�d ��e��fded!efd"���Z e�d#��e��fded!efd$���Z!d	S)%u�5api.py — FastAPI server exposing DevOps Copilot control plane.6 7Endpoints:8  POST /sessions/{session_id}/approve   — Grant human approval (unblocks engine)9  POST /sessions/{session_id}/reject    — Reject proposed action (marks false positive)10  GET  /sessions/{session_id}           — Inspect current session state11  GET  /sessions                        — List all active sessions12  GET  /health                          — Liveness probe13�)�FastAPI�
HTTPException)�JSONResponse)�	BaseModel)�Optional)�PersistenceLayer)�FALSE_POSITIVE_TOTAL)�loggerNzAgentNexus DevOps Copilot APIuIControl plane for the AI DevOps Copilot — approve/reject agent actions.z1.0.0)�title�description�version�DATABASE_URLzagentnexus_state.dbzsqlite:///./�)�db_path�startupc��pK�t����d{V��tjd��dS)NzAPI server started.)�persistence�setupr14�info���H/Users/tribhangind/Documents/GitHub/devops-copilot/devops_copilot/api.py�_startuprsA����15�16�17�18�19��������20�K�%�&�&�&�&�&rc�*�eZdZUdZeeed<dS)�ApproveRequestzApproved via API�reasonN��__name__�21__module__�__qualname__rr�str�__annotations__rrrrr's&�������.�F�H�S�M�.�.�.�.�.rrc�*�eZdZUdZeeed<dS)�
RejectRequestuRejected — false positiverNrrrrr$r$+s&�������9�F�H�S�M�9�9�9�9�9rr$z/healthc��K�ddiS)N�status�okrrrr�healthr(1s�����d��rz	/sessionsc��hK�t����d{V��}|t|��d�S)N)�sessions�count)r�
list_sessions�len)r*s rr,r,6s=���� �.�.�0�0�0�0�0�0�0�0�H� �3�x�=�=�9�9�9rz/sessions/{session_id}�22session_idc��xK�t�|���d{V��}|�tdd|�d�����|S)N��	Session '�' not found.��status_code�detail)r�load_sessionr)r.�states  r�get_sessionr8<sT�����*�*�:�6�6�6�6�6�6�6�6�E��}���4X�23�4X�4X�4X�Y�Y�Y�Y��Lrz/sessions/{session_id}/approve�bodyc���K�	t�|���d{V��n0#t$r#}tdt	|������d}~wwxYwtjd|�d|j����|d|jd�S)u�24    Grant human approval for a PENDING_APPROVAL action.25    The engine polls session state — setting human_approved=True unblocks it.26    Nr0r3zApproved session �: �approved�r.r&r)r�set_approved�KeyErrorrr!r27rr)r.r9�es   r�approve_actionrADs�����<��&�&�z�2�2�2�2�2�2�2�2�2�2���<�<�<���C��F�F�;�;�;�;�����<����28�K�?�J�?�?�$�+�?�?�@�@�@�$�29�d�k�R�R�Rs� %�30A�A
�
Az/sessions/{session_id}/rejectc��xK�t�|���d{V��}|�tdd|�d�����tj��d|�di��d<d	|dd31<t�||���d{V��tjd|�d|j	����|d32|j	d
�S)zQ33    Reject a pending action and track it as a false positive in Prometheus.34    Nr0r1r2r3F�metadata�human_approvedT�rejectedzRejected session r;r=)35rr6rr	�inc�36setdefault�save_sessionr37�warningr)r.r9r7s   r�
reject_actionrJRs�����38�*�*�:�6�6�6�6�6�6�6�6�E��}���4X�39�4X�4X�4X�Y�Y�Y�Y������:?�E���Z��$�$�%5�6�$(�E�*��j�!�40�41"�42"�:�u�435�445�5�5�5�5�5�5�5�45�N�B�z�B�B�T�[�B�B�C�C�C�$�46�d�k�R�R�Rr)"�__doc__�fastapirr�fastapi.responsesr�pydanticr�typingr�devops_copilot.core.persistencer�!devops_copilot.core.observabilityr	�devops_copilot.utils.loggerr47�os�app�getenv�replace�_db_pathr�on_eventrrr$�getr(r,r!r8�postrArJrrr�<module>r[s���	�	�+�*�*�*�*�*�*�*�*�*�*�*�*�*�������������<�<�<�<�<�<�B�B�B�B�B�B�.�.�.�.�.�.�	�	�	�	�
�g�48)�[�������2�9�^�%:�;�;�C�C�N�TV�W�W����x�0�0�0�����i���'�'���'�/�/�/�/�/�Y�/�/�/�:�:�:�:�:�I�:�:�:������������������:�:���:�49���	!�"�"��#����#�"�����50*�+�+�AO��AQ�AQ�51S�52S�S�53S��54S�55S�56S�,�+�57S����58)�*�*�?L�}���S�S�C�S�}�S�S�S�+�*�S�S�Sr