mezoAgent 0.1.1__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ Metadata-Version: 2.1
2
+ Name: mezoAgent
3
+ Version: 0.1.1
4
+ Summary: A LangChain tool for sending BTC and mUSD transactions on Mezo Matsnet.
5
+ Home-page: https://github.com/yourusername/mezoTransactionTool
6
+ Author: Dreadwulf
7
+ Author-email: dreadwul@wtf.com
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.7
12
+ Requires-Dist: web3
13
+ Requires-Dist: langchain
14
+ Requires-Dist: langchain-openai
15
+ Requires-Dist: python-dotenv
@@ -0,0 +1,6 @@
1
+ # MezoTransactionTool 🚀🔥
2
+ A LangChain tool for sending BTC and mUSD transactions on Mezo Matsnet. Major degen swag.
3
+
4
+ ## Installation
5
+ ```bash
6
+ pip install mezoTransactionTool
@@ -0,0 +1,15 @@
1
+ Metadata-Version: 2.1
2
+ Name: mezoAgent
3
+ Version: 0.1.1
4
+ Summary: A LangChain tool for sending BTC and mUSD transactions on Mezo Matsnet.
5
+ Home-page: https://github.com/yourusername/mezoTransactionTool
6
+ Author: Dreadwulf
7
+ Author-email: dreadwul@wtf.com
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.7
12
+ Requires-Dist: web3
13
+ Requires-Dist: langchain
14
+ Requires-Dist: langchain-openai
15
+ Requires-Dist: python-dotenv
@@ -0,0 +1,9 @@
1
+ README.md
2
+ setup.py
3
+ mezoAgent.egg-info/PKG-INFO
4
+ mezoAgent.egg-info/SOURCES.txt
5
+ mezoAgent.egg-info/dependency_links.txt
6
+ mezoAgent.egg-info/requires.txt
7
+ mezoAgent.egg-info/top_level.txt
8
+ mezoTransactionTool/__init__.py
9
+ mezoTransactionTool/transaction_tools.py
@@ -0,0 +1,4 @@
1
+ web3
2
+ langchain
3
+ langchain-openai
4
+ python-dotenv
@@ -0,0 +1 @@
1
+ mezoTransactionTool
@@ -0,0 +1,3 @@
1
+ from .transaction_tools import mezo_agent_transaction_btc, mezo_agent_transaction_musd
2
+
3
+ __all__ = ["mezo_agent_transaction_btc", "mezo_agent_transaction_musd"]
@@ -0,0 +1,167 @@
1
+ import os
2
+ import json
3
+ from dotenv import load_dotenv
4
+ from web3 import Web3
5
+ from web3.exceptions import Web3Exception
6
+ from langchain.tools import tool
7
+ from langchain_openai import ChatOpenAI
8
+ from langchain.output_parsers import StructuredOutputParser, ResponseSchema
9
+ from langchain.prompts import PromptTemplate
10
+
11
+ # ✅ Load environment variables
12
+ USER_PROJECT_DIR = os.getcwd() # Get the directory where the script is run
13
+ USER_ENV_PATH = os.path.join(USER_PROJECT_DIR, ".env")
14
+
15
+ if os.path.exists(USER_ENV_PATH):
16
+ load_dotenv(USER_ENV_PATH)
17
+ else:
18
+ print("⚠️ Warning: No `.env` file found in your project directory! Transactions requiring signing may fail.")
19
+
20
+ # ✅ Load Private Key from User's `.env`
21
+ PRIVATE_KEY = os.getenv("PRIVATE_KEY")
22
+ if not PRIVATE_KEY:
23
+ print("⚠️ Warning: PRIVATE_KEY not set. Please create a `.env` file in your project with your keys.")
24
+ PRIVATE_KEY = None # Allow package to be installed but prevent transactions
25
+
26
+ # ✅ Create Account Object
27
+ account = Web3.eth.account.from_key(PRIVATE_KEY)
28
+ sender_address = account.address
29
+
30
+ MUSD_ADDRESS = "0x637e22A1EBbca50EA2d34027c238317fD10003eB"
31
+ ERC20_ABI = json.loads('[{"constant": false, "inputs": [{"name": "recipient", "type": "address"},{"name": "amount", "type": "uint256"}],"name": "transfer","outputs": [{"name": "", "type": "bool"}],"stateMutability": "nonpayable","type":"function"}]')
32
+ musd_contract = Web3.eth.contract(address=MUSD_ADDRESS, abi=ERC20_ABI)
33
+
34
+ # ✅ Define Structured Output Parser for Transaction Details
35
+ response_schemas = [
36
+ ResponseSchema(name="amount", description="The amount of cryptocurrency to transfer."),
37
+ ResponseSchema(name="currency", description="The cryptocurrency (BTC or mUSD)."),
38
+ ResponseSchema(name="recipient", description="The recipient's wallet address."),
39
+ ]
40
+
41
+ output_parser = StructuredOutputParser.from_response_schemas(response_schemas)
42
+
43
+ # ✅ Define LLM Prompt for Parsing Transactions
44
+ llm = ChatOpenAI(temperature=0, openai_api_key=os.getenv("OPENAI_API_KEY"))
45
+
46
+ prompt_template = PromptTemplate(
47
+ template="Extract transaction details from this request:\n{input}\n{format_instructions}",
48
+ input_variables=["input"],
49
+ partial_variables={"format_instructions": output_parser.get_format_instructions()},
50
+ )
51
+
52
+ def extract_transaction_details(prompt: str):
53
+ """
54
+ Uses LLM to extract structured transaction details from user input.
55
+ """
56
+ formatted_prompt = prompt_template.format(input=prompt)
57
+ response = llm.invoke(formatted_prompt)
58
+
59
+ try:
60
+ return output_parser.parse(response.content)
61
+ except Exception as e:
62
+ return f"❌ Failed to extract transaction details: {str(e)}"
63
+
64
+ @tool
65
+ def mezo_agent_transaction_btc(transaction_prompt: str) -> str:
66
+ """
67
+ Sends BTC on Mezo Matsnet. Parses a transaction request and executes the transfer.
68
+
69
+ Example usage:
70
+ ```
71
+ mezo_agent_transaction_btc("Send 0.05 BTC to 0x93a1Eadb069A791d23aAeDF3C272E2905bb63240")
72
+ ```
73
+
74
+ :param transaction_prompt: Natural language transaction request.
75
+ :return: Transaction hash or failure message.
76
+ """
77
+ transaction_details = extract_transaction_details(transaction_prompt)
78
+
79
+ if isinstance(transaction_details, str): # Handle errors
80
+ return transaction_details
81
+
82
+ amount = float(transaction_details["amount"])
83
+ currency = transaction_details["currency"].lower()
84
+ recipient = transaction_details["recipient"]
85
+
86
+ if currency != "btc":
87
+ return "❌ This function only supports BTC transactions."
88
+
89
+ # ✅ Convert amount to Wei (BTC uses 18 decimals on Mezo Matsnet)
90
+ amount_wei = Web3.to_wei(amount, "ether")
91
+
92
+ # ✅ Check sender's BTC balance
93
+ sender_balance = Web3.eth.get_balance(sender_address)
94
+ sender_balance_btc = Web3.from_wei(sender_balance, "ether")
95
+
96
+ if sender_balance < amount_wei:
97
+ return f"❌ Insufficient BTC balance! You have {sender_balance_btc} BTC but need {amount} BTC."
98
+
99
+ # ✅ Fetch nonce and gas price
100
+ nonce = Web3.eth.get_transaction_count(sender_address)
101
+ gas_price = Web3.eth.gas_price
102
+ gas_limit = Web3.eth.estimate_gas({"to": recipient, "value": amount_wei, "from": sender_address})
103
+
104
+ tx = {
105
+ "to": recipient,
106
+ "value": amount_wei,
107
+ "gas": gas_limit,
108
+ "gasPrice": gas_price,
109
+ "nonce": nonce,
110
+ "chainId": 31611, # Mezo Testnet Chain ID
111
+ }
112
+
113
+ try:
114
+ # ✅ Sign and send the transaction
115
+ signed_tx = account.sign_transaction(tx)
116
+ tx_hash = Web3.eth.send_raw_transaction(signed_tx.raw_transaction)
117
+ return f"✅ BTC Transaction Successful! Hash: {tx_hash.hex()}"
118
+
119
+ except Web3Exception as e:
120
+ return f"❌ BTC Transaction Failed: {str(e)}"
121
+
122
+ @tool
123
+ def mezo_agent_transaction_musd(transaction_prompt: str) -> str:
124
+ """
125
+ Sends mUSD on Mezo Matsnet. Parses a transaction request and executes the transfer.
126
+
127
+ Example usage:
128
+ ```
129
+ mezo_agent_transaction_musd("Transfer 100 mUSD to 0xABC123...")
130
+ ```
131
+
132
+ :param transaction_prompt: Natural language transaction request.
133
+ :return: Transaction hash or failure message.
134
+ """
135
+ transaction_details = extract_transaction_details(transaction_prompt)
136
+
137
+ if isinstance(transaction_details, str): # Handle errors
138
+ return transaction_details
139
+
140
+ amount = float(transaction_details["amount"])
141
+ currency = transaction_details["currency"].lower()
142
+ recipient = transaction_details["recipient"]
143
+
144
+ if currency != "musd":
145
+ return "❌ This function only supports mUSD transactions."
146
+
147
+ # ✅ Convert amount to Wei (mUSD uses 18 decimals)
148
+ amount_musd_wei = int(amount * 10**18)
149
+ nonce = Web3.eth.get_transaction_count(sender_address)
150
+ gas_price = Web3.eth.gas_price
151
+
152
+ try:
153
+ # ✅ Build the transaction for mUSD transfer
154
+ txn = musd_contract.functions.transfer(recipient, amount_musd_wei).build_transaction({
155
+ "from": sender_address,
156
+ "nonce": nonce,
157
+ "gas": 50000,
158
+ "gasPrice": gas_price,
159
+ })
160
+
161
+ signed_txn = Web3.eth.account.sign_transaction(txn, PRIVATE_KEY)
162
+ tx_hash = Web3.eth.send_raw_transaction(signed_txn.raw_transaction)
163
+
164
+ return f"✅ mUSD Transaction Successful! Hash: {tx_hash.hex()}"
165
+
166
+ except Web3Exception as e:
167
+ return f"❌ mUSD Transaction Failed: {str(e)}"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,23 @@
1
+ from setuptools import setup, find_packages
2
+
3
+ setup(
4
+ name="mezoAgent",
5
+ version="0.1.1",
6
+ packages=find_packages(),
7
+ install_requires=[
8
+ "web3",
9
+ "langchain",
10
+ "langchain-openai",
11
+ "python-dotenv"
12
+ ],
13
+ description="A LangChain tool for sending BTC and mUSD transactions on Mezo Matsnet.",
14
+ author="Dreadwulf",
15
+ author_email="dreadwul@wtf.com",
16
+ url="https://github.com/yourusername/mezoTransactionTool", # Replace with your repo URL
17
+ classifiers=[
18
+ "Programming Language :: Python :: 3",
19
+ "License :: OSI Approved :: MIT License",
20
+ "Operating System :: OS Independent",
21
+ ],
22
+ python_requires=">=3.7",
23
+ )