agentlaunch-templates 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"genesis.d.ts","sourceRoot":"","sources":["../../src/templates/genesis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAQpD,eAAO,MAAM,QAAQ,EAAE,aAipCtB,CAAC"}
1
+ {"version":3,"file":"genesis.d.ts","sourceRoot":"","sources":["../../src/templates/genesis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAQpD,eAAO,MAAM,QAAQ,EAAE,aAiwCtB,CAAC"}
@@ -200,17 +200,23 @@ BUSINESS = {
200
200
  "max_input_length": 5000,
201
201
  }
202
202
 
203
- # Bonding curve contract ABI (approve + buyTokens + sellTokens)
204
- BONDING_CURVE_ABI = [
203
+ # FETAgentCoin contract ABI the token IS the bonding curve
204
+ TOKEN_ABI = [
205
205
  {"name": "buyTokens", "type": "function",
206
- "inputs": [{"name": "tokenAddress", "type": "address"},
207
- {"name": "minTokensOut", "type": "uint256"}],
208
- "outputs": [], "stateMutability": "payable"},
206
+ "inputs": [{"name": "buyer", "type": "address"},
207
+ {"name": "slippageAmount", "type": "uint256"},
208
+ {"name": "_buyAmount", "type": "uint256"}],
209
+ "outputs": [], "stateMutability": "nonpayable"},
209
210
  {"name": "sellTokens", "type": "function",
210
- "inputs": [{"name": "tokenAddress", "type": "address"},
211
- {"name": "tokenAmount", "type": "uint256"},
212
- {"name": "minFetOut", "type": "uint256"}],
211
+ "inputs": [{"name": "tokenAmount", "type": "uint256"}],
213
212
  "outputs": [], "stateMutability": "nonpayable"},
213
+ {"name": "FET_TOKEN", "type": "function",
214
+ "inputs": [], "outputs": [{"name": "", "type": "address"}],
215
+ "stateMutability": "view"},
216
+ {"name": "calculateTokensReceived", "type": "function",
217
+ "inputs": [{"name": "fetAmount", "type": "uint256"}],
218
+ "outputs": [{"name": "", "type": "uint256"}],
219
+ "stateMutability": "view"},
214
220
  ]
215
221
 
216
222
  ERC20_ABI = [
@@ -218,6 +224,10 @@ ERC20_ABI = [
218
224
  "inputs": [{"name": "spender", "type": "address"},
219
225
  {"name": "amount", "type": "uint256"}],
220
226
  "outputs": [{"name": "", "type": "bool"}], "stateMutability": "nonpayable"},
227
+ {"name": "allowance", "type": "function",
228
+ "inputs": [{"name": "owner", "type": "address"},
229
+ {"name": "spender", "type": "address"}],
230
+ "outputs": [{"name": "", "type": "uint256"}], "stateMutability": "view"},
221
231
  {"name": "balanceOf", "type": "function",
222
232
  "inputs": [{"name": "account", "type": "address"}],
223
233
  "outputs": [{"name": "", "type": "uint256"}], "stateMutability": "view"},
@@ -230,6 +240,9 @@ ERC20_ABI = [
230
240
  "outputs": [{"name": "", "type": "bool"}], "stateMutability": "nonpayable"},
231
241
  ]
232
242
 
243
+ # Default TFET address on BSC Testnet
244
+ TFET_ADDRESS = "0x304ddf3eE068c53514f782e2341B71A80c8aE3C7"
245
+
233
246
 
234
247
  # ==========================================================================
235
248
  # LAYER 1: LOGGER — structured logging with audit trail
@@ -691,8 +704,13 @@ class HoldingsManager:
691
704
 
692
705
  def buy_via_web3(
693
706
  self, ctx: Context, token_address: str, fet_amount_wei: int,
694
- bonding_curve_address: str = "",
707
+ slippage_percent: int = 5,
695
708
  ) -> Tuple[bool, str]:
709
+ """
710
+ Buy tokens on the bonding curve. The token IS the bonding curve.
711
+
712
+ Flow: approve FET -> call buyTokens(buyer, minTokens, fetAmount) on token.
713
+ """
696
714
  try:
697
715
  from web3 import Web3
698
716
 
@@ -705,32 +723,76 @@ class HoldingsManager:
705
723
  return False, "Cannot connect to BSC RPC."
706
724
 
707
725
  account = w3.eth.account.from_key(private_key)
708
- nonce = w3.eth.get_transaction_count(account.address)
726
+ token_addr = Web3.to_checksum_address(token_address)
709
727
 
710
- if not bonding_curve_address:
711
- return False, self.generate_buy_link(token_address, fet_amount_wei)
728
+ token_contract = w3.eth.contract(address=token_addr, abi=TOKEN_ABI)
712
729
 
713
- # Approve FET spend on bonding curve
714
- # Then call buyTokens
715
- curve = w3.eth.contract(
716
- address=Web3.to_checksum_address(bonding_curve_address),
717
- abi=BONDING_CURVE_ABI,
730
+ # 1. Resolve FET token address from contract (fallback to testnet TFET)
731
+ try:
732
+ fet_addr = token_contract.functions.FET_TOKEN().call()
733
+ except Exception:
734
+ fet_addr = TFET_ADDRESS
735
+ fet_contract = w3.eth.contract(
736
+ address=Web3.to_checksum_address(fet_addr), abi=ERC20_ABI,
718
737
  )
719
- tx = curve.functions.buyTokens(
720
- Web3.to_checksum_address(token_address), 0
738
+
739
+ # 2. Check FET balance
740
+ balance = fet_contract.functions.balanceOf(account.address).call()
741
+ if balance < fet_amount_wei:
742
+ return False, (
743
+ f"Insufficient FET. Have {balance}, need {fet_amount_wei}. "
744
+ f"Deficit: {fet_amount_wei - balance}"
745
+ )
746
+
747
+ nonce = w3.eth.get_transaction_count(account.address)
748
+ gas_price = w3.eth.gas_price
749
+ chain_id = w3.eth.chain_id
750
+
751
+ # 3. Approve FET spend on the token contract (if needed)
752
+ allowance = fet_contract.functions.allowance(
753
+ account.address, token_addr,
754
+ ).call()
755
+ if allowance < fet_amount_wei:
756
+ approve_tx = fet_contract.functions.approve(
757
+ token_addr, fet_amount_wei,
758
+ ).build_transaction({
759
+ "from": account.address, "nonce": nonce,
760
+ "gas": 100000, "gasPrice": gas_price, "chainId": chain_id,
761
+ })
762
+ signed_approve = w3.eth.account.sign_transaction(approve_tx, private_key)
763
+ approve_hash = w3.eth.send_raw_transaction(signed_approve.raw_transaction)
764
+ w3.eth.wait_for_transaction_receipt(approve_hash, timeout=60)
765
+ nonce += 1
766
+ Logger.info(ctx, "FET_APPROVED", {
767
+ "spender": token_address[:12], "amount": fet_amount_wei,
768
+ })
769
+
770
+ # 4. Calculate expected tokens and apply slippage
771
+ expected_tokens = token_contract.functions.calculateTokensReceived(
772
+ fet_amount_wei,
773
+ ).call()
774
+ min_tokens = expected_tokens * (100 - slippage_percent) // 100
775
+
776
+ # 5. Buy: buyTokens(buyer, slippageAmount, _buyAmount)
777
+ buy_tx = token_contract.functions.buyTokens(
778
+ account.address, min_tokens, fet_amount_wei,
721
779
  ).build_transaction({
722
- "from": account.address,
723
- "value": fet_amount_wei,
724
- "nonce": nonce,
725
- "gas": 300000,
726
- "gasPrice": w3.eth.gas_price,
727
- "chainId": w3.eth.chain_id,
780
+ "from": account.address, "nonce": nonce,
781
+ "gas": 300000, "gasPrice": gas_price, "chainId": chain_id,
728
782
  })
729
- signed = w3.eth.account.sign_transaction(tx, private_key)
730
- tx_hash = w3.eth.send_raw_transaction(signed.raw_transaction)
783
+ signed_buy = w3.eth.account.sign_transaction(buy_tx, private_key)
784
+ tx_hash = w3.eth.send_raw_transaction(signed_buy.raw_transaction)
785
+
786
+ # 6. Wait for confirmation
787
+ receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=60)
788
+ if receipt.status != 1:
789
+ return False, f"Buy transaction reverted: {tx_hash.hex()}"
790
+
731
791
  Logger.info(ctx, "BUY_VIA_WEB3", {
732
792
  "token": token_address[:12],
733
- "amount": fet_amount_wei,
793
+ "fet_spent": fet_amount_wei,
794
+ "expected_tokens": expected_tokens,
795
+ "min_tokens": min_tokens,
734
796
  "tx": tx_hash.hex(),
735
797
  })
736
798
  return True, f"0x{tx_hash.hex()}"
@@ -738,12 +800,18 @@ class HoldingsManager:
738
800
  except ImportError:
739
801
  return False, self.generate_buy_link(token_address, fet_amount_wei)
740
802
  except Exception as e:
803
+ Logger.error(ctx, "BUY_ERROR", str(e))
741
804
  return False, str(e)
742
805
 
743
806
  def sell_via_web3(
744
807
  self, ctx: Context, token_address: str, token_amount: int,
745
- bonding_curve_address: str = "",
746
808
  ) -> Tuple[bool, str]:
809
+ """
810
+ Sell tokens back to the bonding curve. No approval needed — the token
811
+ contract burns from msg.sender directly.
812
+
813
+ Flow: call sellTokens(tokenAmount) on the token contract.
814
+ """
747
815
  try:
748
816
  from web3 import Web3
749
817
 
@@ -756,44 +824,33 @@ class HoldingsManager:
756
824
  return False, "Cannot connect to BSC RPC."
757
825
 
758
826
  account = w3.eth.account.from_key(private_key)
759
- nonce = w3.eth.get_transaction_count(account.address)
760
-
761
- if not bonding_curve_address:
762
- return False, self.generate_sell_link(token_address, token_amount)
827
+ token_addr = Web3.to_checksum_address(token_address)
763
828
 
764
- # Approve token spend on bonding curve, then sell
765
- token_contract = w3.eth.contract(
766
- address=Web3.to_checksum_address(token_address),
767
- abi=ERC20_ABI,
768
- )
769
- approve_tx = token_contract.functions.approve(
770
- Web3.to_checksum_address(bonding_curve_address), token_amount
771
- ).build_transaction({
772
- "from": account.address,
773
- "nonce": nonce,
774
- "gas": 100000,
775
- "gasPrice": w3.eth.gas_price,
776
- "chainId": w3.eth.chain_id,
777
- })
778
- signed_approve = w3.eth.account.sign_transaction(approve_tx, private_key)
779
- w3.eth.send_raw_transaction(signed_approve.raw_transaction)
829
+ # 1. Check token balance
830
+ token_contract = w3.eth.contract(address=token_addr, abi=TOKEN_ABI + ERC20_ABI)
831
+ balance = token_contract.functions.balanceOf(account.address).call()
832
+ if balance < token_amount:
833
+ return False, (
834
+ f"Insufficient tokens. Have {balance}, want to sell {token_amount}."
835
+ )
780
836
 
781
- nonce += 1
782
- curve = w3.eth.contract(
783
- address=Web3.to_checksum_address(bonding_curve_address),
784
- abi=BONDING_CURVE_ABI,
785
- )
786
- sell_tx = curve.functions.sellTokens(
787
- Web3.to_checksum_address(token_address), token_amount, 0
837
+ # 2. Sell: sellTokens(tokenAmount) — no approval needed
838
+ nonce = w3.eth.get_transaction_count(account.address)
839
+ sell_tx = token_contract.functions.sellTokens(
840
+ token_amount,
788
841
  ).build_transaction({
789
- "from": account.address,
790
- "nonce": nonce,
791
- "gas": 300000,
792
- "gasPrice": w3.eth.gas_price,
842
+ "from": account.address, "nonce": nonce,
843
+ "gas": 300000, "gasPrice": w3.eth.gas_price,
793
844
  "chainId": w3.eth.chain_id,
794
845
  })
795
846
  signed_sell = w3.eth.account.sign_transaction(sell_tx, private_key)
796
847
  tx_hash = w3.eth.send_raw_transaction(signed_sell.raw_transaction)
848
+
849
+ # 3. Wait for confirmation
850
+ receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=60)
851
+ if receipt.status != 1:
852
+ return False, f"Sell transaction reverted: {tx_hash.hex()}"
853
+
797
854
  Logger.info(ctx, "SELL_VIA_WEB3", {
798
855
  "token": token_address[:12],
799
856
  "amount": token_amount,
@@ -804,8 +861,63 @@ class HoldingsManager:
804
861
  except ImportError:
805
862
  return False, self.generate_sell_link(token_address, token_amount)
806
863
  except Exception as e:
864
+ Logger.error(ctx, "SELL_ERROR", str(e))
807
865
  return False, str(e)
808
866
 
867
+ def get_balances(
868
+ self, ctx: Context, token_address: str = "",
869
+ ) -> Dict[str, Any]:
870
+ """Check wallet BNB, FET, and (optionally) token balances."""
871
+ result: Dict[str, Any] = {"bnb": 0, "fet": 0, "token": 0, "wallet": ""}
872
+ try:
873
+ from web3 import Web3
874
+
875
+ private_key = os.environ.get("BSC_PRIVATE_KEY", "")
876
+ if not private_key:
877
+ return result
878
+
879
+ w3 = Web3(Web3.HTTPProvider(self.BSC_RPC))
880
+ if not w3.is_connected():
881
+ return result
882
+
883
+ account = w3.eth.account.from_key(private_key)
884
+ result["wallet"] = account.address
885
+
886
+ # BNB balance
887
+ result["bnb"] = w3.eth.get_balance(account.address)
888
+
889
+ # FET balance
890
+ try:
891
+ if token_address:
892
+ tc = w3.eth.contract(
893
+ address=Web3.to_checksum_address(token_address), abi=TOKEN_ABI,
894
+ )
895
+ fet_addr = tc.functions.FET_TOKEN().call()
896
+ else:
897
+ fet_addr = TFET_ADDRESS
898
+ fet_contract = w3.eth.contract(
899
+ address=Web3.to_checksum_address(fet_addr), abi=ERC20_ABI,
900
+ )
901
+ result["fet"] = fet_contract.functions.balanceOf(account.address).call()
902
+ except Exception:
903
+ pass
904
+
905
+ # Token balance (if address provided)
906
+ if token_address:
907
+ try:
908
+ token_contract = w3.eth.contract(
909
+ address=Web3.to_checksum_address(token_address), abi=ERC20_ABI,
910
+ )
911
+ result["token"] = token_contract.functions.balanceOf(account.address).call()
912
+ except Exception:
913
+ pass
914
+
915
+ except ImportError:
916
+ pass
917
+ except Exception:
918
+ pass
919
+ return result
920
+
809
921
  def get_holdings_summary(self, ctx: Context, token_addresses: List[str]) -> List[Dict]:
810
922
  results = []
811
923
  for addr in token_addresses:
@@ -934,7 +1046,7 @@ async def handle_business(
934
1046
  wallet — WalletManager: get_balance(), get_address(), fund_check()
935
1047
  revenue — RevenueTracker: record_income/expense(), get_summary()
936
1048
  self_aware — SelfAwareMixin: update(), get_effort_mode(), get_token_summary()
937
- holdings — HoldingsManager: buy_via_web3(), sell_via_web3(), get_holdings_summary()
1049
+ holdings — HoldingsManager: buy_via_web3(), sell_via_web3(), get_balances(), get_holdings_summary()
938
1050
  cache — Cache: get(), set()
939
1051
 
940
1052
  Args:
@@ -1 +1 @@
1
- {"version":3,"file":"genesis.js","sourceRoot":"","sources":["../../src/templates/genesis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,6FAA6F;AAC7F,MAAM,YAAY,GAAG,6BAA6B,CAAC;AACnD,MAAM,WAAW,GAAG,iEAAiE,CAAC;AACtF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB;IACvD,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,QAAQ,GAAkB;IACrC,IAAI,EAAE,SAAS;IACf,WAAW,EACT,iGAAiG;IACnG,QAAQ,EAAE,iBAAiB;IAC3B,SAAS,EAAE;QACT,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;QACxE;YACE,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,yBAAyB;YAClC,WAAW,EAAE,2CAA2C;SACzD;QACD;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,QAAQ;YACjB,WAAW,EACT,uFAAuF;SAC1F;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,kBAAkB;YAC3B,WAAW,EAAE,wDAAwD;SACtE;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,qCAAqC;SACnD;QACD;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,kEAAkE;SAChF;QACD;YACE,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,uCAAuC;SACrD;QACD;YACE,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,QAAQ;YACjB,WAAW,EAAE,iDAAiD;SAC/D;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,kCAAkC;SAChD;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,+BAA+B;SAC7C;KACF;IACD,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC;IAClC,OAAO,EAAE;QACP,oBAAoB;QACpB,qBAAqB;QACrB,eAAe;QACf,qBAAqB;QACrB,iBAAiB;KAClB;IACD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uDAgG+C,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAk/BtE;CACA,CAAC"}
1
+ {"version":3,"file":"genesis.js","sourceRoot":"","sources":["../../src/templates/genesis.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentlaunch-templates",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Agent code templates for the AgentLaunch platform",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",