Skip to main content
Glama
routes_simple.cpython-311.pyc20.6 kB
� Em�h�A���ddlmZmZmZddlmZmZddlmZmZm Z m Z m Z ddl Z ddl m Z e je��Z ddlmZddlmZddlmZdd lmZdd lmZdd lmZe��Ze��Ze��Ze��Z e��Ze��Z!n6#e"$r.Z#e�$d e#����dZdZdZdZ dZdZ!YdZ#[#ndZ#[#wwxYwej%d ��d���Z&ej%d��d���Z'ej%d��d���Z(ej%d��d���Z)ej%d��d���Z*ej%ddg���d���Z+ej%ddg���d���Z,ej%ddg���d���Z-ej%dd g���d!���Z.ej%d"d g���d#���Z/ej%d$d g���d%���Z0ej%d&dg���d'���Z1ej%d(dg���d)���Z2ej%d*dg���d+���Z3ej%d,dg���d-���Z4ed.krej5d/�0��dSdS)1�)�render_template�request�jsonify)�app�db)�User�Wallet� Transaction� Portfolio�ProtocolPositionN)�datetime)� DEXOperations)�LendingOperations)�YieldFarmingOperations)�PortfolioManager)� DeFiAIAgent)�PortfolioAnalyticsz$Could not import necessary modules: �/c� �td��S)z Landing pagez index.html�r���'/home/runner/workspace/routes_simple.py�indexr$s�� �<� (� (�(rz /dashboardc� �td��S)zDashboard pagezdashboard.htmlrrrr� dashboardr)s�� �+� ,� ,�,rz /api-docsc� �td��S)zAPI documentation pagez api_docs.htmlrrrr�api_docsr.��� �?� +� +�+rz /ai-agentc� �td��S)zAI Agent interface pagez ai_agent.htmlrrrr� ai_agent_uir!3rrz /ai-featuresc� �td��S)zAI Features showcase pagezai_features.htmlrrrr� ai_featuresr#8s�� �-� .� .�.rz /api/v1/swap�POST)�methodsc �r� tj��}gd�}|D]}||vrtdd|��i��dfcS�tr� t�|d|d|d|d|d |�d d ��|�d d �����}t|��S#t $rI}t�d|����tddt|��d���dfcYd}~Sd}~wwxYwtdddd� dgdz����|d|�d d ��d���S#t $rU}t�dt|������tdt|��d���dfcYd}~Sd}~wwxYw)zExecute DEX swap operation)�wallet_address� blockchain�token_in� token_out� amount_in�error�Missing required field: �r(r'r)r*r+�slippageg�?�protocol�uniswap)r(r'r)r*r+r/r0zSwap execution failed: FzSwap execution failed��successr,�details��NTz!Demo mode: Swap would be executed�0x��0�@�r3�message�tx_hashr(r0zSwap operation failed: �Internal server error�r,r4) r�get_jsonr�dex_ops� execute_swap�get� Exception�loggerr,�str�join��data�required_fields�field�result�es r�api_swaprM?sG��)S���!�!��a�`�`��$� S� S�E��D� � ���)K�E�)K�)K�L�M�M�s�R�R�R�R�!� � � � �-�-�#�L�1�#'�(8�#9�!�*�-�"�;�/�"�;�/�!�X�X�j�#�6�6�!�X�X�j�)�<�<�.�����v���&��� � � �� � �:�q�:�:�;�;�;��$�4�"�1�v�v� � ���� ����������� ������>�5������� � 3� 3�5�5�"�<�0� �H�H�Z��;�;� ���� �� �S�S�S�� � �7�s�1�v�v�7�7�8�8�8��!8�S��V�V�L�L�M�M�s�R�R�R�R�R�R�R�����S���sO�6E�E�A5B8�8 D �>D�D �E�D � A E� F6�!A F1�+F6�1F6z /api/v1/lendc �� tj��}gd�}|D]}||vrtdd|��i��dfcS�tr� t�|d|d|d|d|d � ��}t|��S#t $rI}t �d |����td d t|��d���dfcYd}~Sd}~wwxYwtdddd� dgdz����|d|dd���S#t $rU}t �dt|������tdt|��d���dfcYd}~Sd}~wwxYw)zExecute lending operation)r'r(r0�token�amountr,r-r.r(r0r'rOrP)r(r0r'rOrPzLending execution failed: FzLending execution failedr2r5NTz$Demo mode: Lending would be executedr6r7r8r9r:zLending operation failed: r=r>) rr?r� lending_ops�lendrCrDr,rErFrGs r�api_lendrSms��&S���!�!��Z�Y�Y��$� S� S�E��D� � ���)K�E�)K�)K�L�M�M�s�R�R�R�R�!� � � �$�)�)�#�L�1�!�*�-�#'�(8�#9��w�-���>� *�����v���&��� � � �� � �=�!�=�=�>�>�>��$�7�"�1�v�v� � ���� ����������� ������A�5������� � 3� 3�5�5�"�<�0� ��,� ���� �� �S�S�S�� � �:�#�a�&�&�:�:�;�;�;��!8�S��V�V�L�L�M�M�s�R�R�R�R�R�R�R�����S���sN�6D�D�A B� C!�>C�C!�D�C!�!=D� E>�)A E9�3E>�9E>z /api/v1/farmc�L� tj��}gd�}|D]}||vrtdd|��i��dfcS�|d}|d}|d}|d}t�d |�d |����d d t j���d ����d|�d|��|ddddgd�d�}t|��S#t$rU}t� dt|������tdt|��d���dfcYd}~Sd}~wwxYw)zFarm tokens for yield)r'r(� pool_addressrPr,r-r.r'r(rUrPzFarming request: z on T�0xfarmz %Y%m%d%H%M%SzSuccessfully farmed z tokens in pool z12.5%z$2.5M�COMP�SUSHI)�address�apy�tvl�rewards)r3r<r;� pool_infozFarming operation failed: r=r>r5N) rr?rrD�infor �utcnow�strftimerCr,rE) rHrIrJr'r(rUrP�responserLs r� farm_tokensrb�s���#S���!�!��U�T�T��$� S� S�E��D� � ���)K�E�)K�)K�L�M�M�s�R�R�R�R�!��.�/���,�'� ��N�+� ��h���� � �H��H�H�J�H�H�I�I�I� �L��� 1� 1� :� :�>� J� J�L�L�T�f�T�T�l�T�T�'���"�G�,� ��  �  ���x� � � �� �S�S�S�� � �:�#�a�&�&�:�:�;�;�;��!8�S��V�V�L�L�M�M�s�R�R�R�R�R�R�R�����S���s$�6C�B C� D#�A D�D#�D#z"/api/v1/portfolio/<wallet_address>�GETc �� tr� t�|��}td|i��S#t$rI}t�d|����tddt |��d���dfcYd}~Sd}~wwxYwtd|ddd d d �d d dd �gdd�i��S#t$rU}t�dt |������tdt |��d���dfcYd}~Sd}~wwxYw)zGet portfolio information� portfoliozPortfolio fetch failed: NzFailed to fetch portfolio)rer,r4r5�`L�@�ETH�������@�@��@��symbolrP� value_usd�USDC�'� ��@�2025-01-01T00:00:00Z�r'�total_value_usd�tokens� last_updatedzPortfolio operation failed: r=r>)� portfolio_mgr� get_portfoliorrCrDr,rE)r'rerLs r� api_portfoliorw�s���S� � � �)�7�7��G�G� �� �Y�7�8�8�8��� � � �� � �;��;�;�<�<�<��!%�8�"�1�v�v� � ���� ����������� ������&4�'/�#(�C�h�O�O�#)�U��R�R��%;��� � � � �� �S�S�S�� � �<�C��F�F�<�<�=�=�=��!8�S��V�V�L�L�M�M�s�R�R�R�R�R�R�R�����S���sD�B+�*5� B�>B�=B�>B+�B�"B+�+ D �5A D�?D �D z"/api/v1/positions/<wallet_address>c� � dddddd�ddd d d d�g}td |i��S#t$rU}t�d t |������tdt |��d���dfcYd}~Sd}~wwxYw)zGet DeFi positions�Aave�Lendingrm�10000z3.5%)r0�typerOrPrZ�Uniswap�LPzETH-USDC�5z8.2%� positionszPositions operation failed: r=r>r5N)rrCrDr,rE)r'�mock_positionsrLs r� api_positionsr��s��� S� ��V�w�_e� f� f�"�D�:�QT�]c� d� d� ��� �^�4�5�5�5�� �S�S�S�� � �<�C��F�F�<�<�=�=�=��!8�S��V�V�L�L�M�M�s�R�R�R�R�R�R�R�����S���s� #� B�A A=�7B�=Bz%/api/v1/transactions/<wallet_address>c��� tj�ddt���}t tj�ddt���d��}ddd d d d d �ddd ddd�g}t |||t |��d���S#t$rU}t� dt|������t dt|��d���dfcYd}~Sd}~wwxYw)zGet transaction history�page�)r|�per_page�2�dz0x123...�Swaprgrmz1.5z2024-01-15T10:00:00Z)r<r|� from_token�to_tokenrP� timestampz0x456...�Lend�5000z2024-01-14T11:30:00Z)r<r|rOrPr�)� transactionsr�r��totalzTransactions operation failed: r=r>r5N) r�argsrB�int�minr�lenrCrDr,rE)r'r�r��mock_transactionsrLs r�api_transactionsr��s0��S��|�������4�4���w�|�'�'� �B�S�'�A�A�3�G�G�� #�F�%�U[�gl�|R� S� S�"�F�V�v�dz� {� {� ���-�� ��*�+�+�  � � � � �� �S�S�S�� � �?�s�1�v�v�?�?�@�@�@��!8�S��V�V�L�L�M�M�s�R�R�R�R�R�R�R�����S���s�B B� C/�A C*�$C/�*C/z/api/v1/ai/portfolio-healthc� � tj��}|�d��}|�dd��}|stddi��dfStr\t�||��}|r|�d��stddi��dfS|�d i��}n+|d d d d d�dddd�gdd�}t �d��tr1tj � |��}td|d���Stddi��dfS#t$rU}t � dt|������tdt|��d���dfcYd}~Sd}~wwxYw)z!Get AI portfolio health diagnosisr'r(�ethereumr,zwallet_address is requiredr.r3zFailed to fetch portfolio datarerfrgrhrirjrmrnrorprqzGPortfolioAnalytics not available, using mock data for portfolio health.T)r3� diagnosis�AI Agent not availabler5zPortfolio health check failed: r=r>N)rr?rBr�portfolio_analyzerrvrD�warn�ai_agent�portfolio_doctor�diagnose_portfoliorCr,rE)rHr'r(�portfolio_result�portfolio_datar�rLs r�ai_portfolio_healthr� s���)S���!�!�����"2�3�3���X�X�l�J�7�7� �� I��G�%A�B�C�C�S�H� H� � c�1�?�?��PZ�[�[� �#� Q�+;�+?�+?� �+J�+J� Q���)I�J�K�K�S�P�P�-�1�1�+�r�B�B�N�N�#1�#+�$��(�K�K�%��X�N�N��!7���N� �K�K�a� b� b� b� � E� �1�D�D�^�T�T�I���&����� � �G�%=�>�?�?��D� D�� �S�S�S�� � �?�s�1�v�v�?�?�@�@�@��!8�S��V�V�L�L�M�M�s�R�R�R�R�R�R�R�����S���s3�AD.�A D.�!A9D.�D.�. F �8A F�F �F z/api/v1/ai/create-strategyc�0� tj��}|�dd��}|�d��}|�dd��}|stddi��dfSd }|r{trIt�||��}|r+|�d ��r|�d i��}n+|d d ddd�dddd�gdd�}t �d��tr2tj � ||��}td|d���Stddi��dfS#t$rU}t � dt|������tdt|��d���dfcYd }~Sd }~wwxYw)z%Create AI-powered investment strategy�goalsr7r'r(r�r,zUser goals are requiredr.Nr3rerfrgrhrirjrmrnrorprqzHPortfolioAnalytics not available, using mock data for strategy creation.T)r3�strategyr�r5zStrategy creation failed: r=r>)rr?rBrr�rvrDr�r��strategy_sommelier�create_strategyrCr,rE)rH� user_goalsr'r(r�r�r�rLs r�ai_create_strategyr�9s���*S���!�!���X�X�g�r�*�*� ����"2�3�3���X�X�l�J�7�7� �� F��G�%>�?�@�@�#�E� E��� � h�!� h�#5�#C�#C�N�T^�#_�#_� �#�K�(8�(<�(<�Y�(G�(G�K�%5�%9�%9�+�r�%J�%J�N��'5�'/�#(�C�h�O�O�#)�U��R�R��%;�"�"��� � �f�g�g�g� � E��2�B�B�:�~�^�^�H���$����� � �G�%=�>�?�?��D� D�� �S�S�S�� � �:�#�a�&�&�:�:�;�;�;��!8�S��V�V�L�L�M�M�s�R�R�R�R�R�R�R�����S���s,�A(D6�+B7D6�#D6�6 F�A F� F�Fz/api/v1/ai/chatc�N� tj��}|�dd��}|�d��}|�dd��}|stddi��dfSd }d }|r�trIt�||��}|r+|�d ��r|�d i��}n+|d d ddd�dddd�gdd�}t �d��dddd�dddd�g}tr3tj � |||��}td|d���Stdd i��d!fS#t$rU}t � d"t|������td#t|��d$���d!fcYd }~Sd }~wwxYw)%zChat with AI assistantr;r7r'r(r�r,zMessage is requiredr.Nr3rerfrgrhrirjrmrnrorprqz;PortfolioAnalytics not available, using mock data for chat.�swapz100 USDCz 2024-01-01)r|rPr�rRz500 USDCz 2024-01-02T)r3rar�r5zAI chat failed: r=r>)rr?rBrr�rvrDr�r��chat_assistant�chatrCr,rE) rHr;r'r(r��transaction_historyr�rarLs r�ai_chatr�hs$��2S���!�!���(�(�9�b�)�)�����"2�3�3���X�X�l�J�7�7� �� B��G�%:�;�<�<�c�A� A���"�� � �!� [�#5�#C�#C�N�T^�#_�#_� �#�K�(8�(<�(<�Y�(G�(G�K�%5�%9�%9�+�r�%J�%J�N��'5�'/�#(�C�h�O�O�#)�U��R�R��%;�"�"��� � �Y�Z�Z�Z� �:�L�Q�Q��:�L�Q�Q�#� � � E��.�3�3�G�^�M`�a�a�H���$����� � �G�%=�>�?�?��D� D�� �S�S�S�� � �0��A���0�0�1�1�1��!8�S��V�V�L�L�M�M�s�R�R�R�R�R�R�R�����S���s,�A(E�+CE�2E� F$�A F�F$�F$z/mcpc ��� tj��}d|�d��dd|�d��|�d��d�d�}t|��S#t$r}t �d t|������tdd t��vr|�d��nd d d t|��d�d���dfcYd }~Sd }~wwxYw)zMCP JSON-RPC endpointz2.0�idTzMCP endpoint available�method�params)r3r;r�r�)�jsonrpcr�rKzMCP operation failed: � request_dataNi����zInternal error)�coder;rH)r�r�r,r5) rr?rBrrCrDr,rE�locals)r�rarLs r� mcp_endpointr��s8����'�)�)� ���"�"�4�(�(��3�&�*�*�8�4�4�&�*�*�8�4�4� ��  �  ���x� � � �� � � � �� � �6�c�!�f�f�6�6�7�7�7���,:�f�h�h�,F�,F�,�"�"�4�(�(�(�D��+��A����� � � � � �� � � � � � ����� ���s�A%A(�( C1�2A4C,�&C1�,C1�__main__T)�debug)6�flaskrrrrr�modelsrr r r r �loggingr � getLogger�__name__rD�defi_tools.dex_operationsr�defi_tools.lendingr�defi_tools.yield_farmingr�defi_tools.portfoliorr�r�portfolio_analyticsrr@rQ� farming_opsrur�� ImportErrorrL�warning�routerrrr!r#rMrSrbrwr�r�r�r�r�r��runrrr�<module>r�s���3�3�3�3�3�3�3�3�3�3���������I�I�I�I�I�I�I�I�I�I�I�I�I�I����������� �� �8� $� $���7�7�7�7�7�7�4�4�4�4�4�4�?�?�?�?�?�?�5�5�5�5�5�5�$�$�$�$�$�$�6�6�6�6�6�6��m�o�o�G�#�#�%�%�K�(�(�*�*�K�$�$�&�&�M��{�}�}�H�+�+�-�-�������� �N�N�=�!�=�=�>�>�>��G��K��K��M��H���������������� ���3���)�)���)� ���<���-�-���-� ���;���,�,���,� ���;���,�,���,� ���>���/�/���/�  ���>�F�8�,�,�,�+S�+S�-�,�+S�Z ���>�F�8�,�,�,�(S�(S�-�,�(S�T ���>�F�8�,�,�,�%S�%S�-�,�%S�N ��� /�%��A�A�A�S�S�B�A�S�@ ��� /�%��A�A�A� S� S�B�A� S� ��� 2�U�G�D�D�D�S�S�E�D�S�2 ��� (�6�(�;�;�;�+S�+S�<�;�+S�Z ��� '�&��:�:�:�,S�,S�;�:�,S�\ ��� �v�h�/�/�/�4S�4S�0�/�4S�n ���6�F�8�$�$�$���%�$��> �z��� �C�G�$��������s�A B�C�"$C � C

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JMadhan1/OneDefi-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server