main.cpython-312.pyc•36.6 kB
�
!{�g�x � � � d Z ddlmZmZ ddlmZ ddlmZ ddlZddl Z ddl
mZmZm
Z
mZmZ ddlZddlZddlmZ ddlZddlZddlmZmZ ddlZdd lmZ ddlmc mZ ddl Z ddl!Z"ddl#Z#dd
l$m%Z% ddl&Z&ddl'm'Z' dfd
�Z(de)fd�Z*de)fd�Z+dfd�Z,dfd�Z- e(� G d� de� Z. G d� de� Z/ G d� de� Z0 G d� de� Z1 G d� de� Z2 G d� de� Z3 G d� de� Z4 G d � d!e� Z5 ed"g d#�d$�%� Z6d&hh d'�d(�h d)�h d*�d(�h d+�h d,�d(�h d-�h d.�d(�d/�Z7g d0�d1d2gg d3�d4d2gd/�Z8dgd5e9d6ee. de9fd7�Z:dhd5e9d6ee. d8ee9 de9fd9�Z;did:e9d;e9de9fd<�Z<d=ee
e9e=f dee. fd>�Z>dgd?e9d@ee9 dAee9 dBee9 de9f
dC�Z?d?e9dee9ef fdD�Z@d?e9dee9ef fdE�ZAd?e9dee9ef fdF�ZBd?e9dee9eCf fdG�ZDdjdHee9eCf dIeCdee9 fdJ�ZEd?e9dKe9dee9ef fdL�ZFd?e9dee9ef fdM�ZGd?e9dee9ef fdN�ZHd?e9dee9ef fdO�ZIdPee9ef dee9ef fdQ�ZJe6j� � dddR�d5e9d6ee
e9e=f d8ee9 de9fdS�� ZLe6j� � dddR�d5e9dTee9 d6ee
e9e=f d8ee9 de=e9e9f f
dU�� ZMe6j� � ddV�d5e9d6ee
e9e=f dee9 fdW�� ZNe6j� � dddddX�d5e9d@ee9 dAee9 dBee9 d6ee
e9e=f de9fdY�� ZOe6j� � ddZdd[�d5e9d8ee9 d\ePd6ee
e9e=f dee= f
d]�� ZQe6j� � d2ddd^�d5e9d_e9d6ee
e9e=f d8ee9 dee9ef f
d`�� ZRe6j� � ddV�d5e9d6ee
e9e=f dee9ef fda�� ZSe6j� � dbe9de9fdc�� ZUe6j� � ddddd�d5e9dKee9 d6ee
e9e=f d8ee9 dee9ef f
de�� ZVy)kz2Repository analysis and security assessment tools.� )�FastMCP�server)�types)� BaseModelN)�List�Optional�Union�Dict�Any)�Path)�Repo�GitCommandError)�Enum)�Counter)�datetime�returnc �V � t � s
t � t � st � yy)z(Ensure all required tools are installed.N)�is_pmd_installed�install_pmd�is_trivy_installed�
install_trivy� � �U/Users/athapongkaewsalapoom/Development/experimental/mcp/argus/src/panopticon/main.py�ensure_dependenciesr I s! � � ���
� ���� r c �V � t j ddgd�� y# t $ r Y yw xY w)zCheck if PMD is installed.�pmd� --versionT��capture_outputF��
subprocess�run�FileNotFoundErrorr r r r r V s/ � ������{�+�D�A���� ���� � � (�(c �V � t j ddgd�� y# t $ r Y yw xY w)zCheck if Trivy is installed.�trivyr Tr Fr! r r r r r ^ s/ � �������-�d�C���� ���r% c �� � t j � j � } | dk( rt j g d�d�� y| dk( �r�d}d|� d|� d �}t
j j d
� }t j |d�� t j d d�
� 5 }t j j ||j � t j! |j d� 5 }|j# |� ddd� ddd� t
j j% |d|� d�� }t
j j% |d� }t j&