Skip to content

Commit

Permalink
Merge pull request #127 from valory-xyz/feat/multiple-mechs
Browse files Browse the repository at this point in the history
feat: add support for multiple mechs
  • Loading branch information
0xArdi authored Oct 30, 2023
2 parents 8cb1f5f + 4ba04eb commit 744f4f8
Show file tree
Hide file tree
Showing 11 changed files with 69 additions and 41 deletions.
18 changes: 12 additions & 6 deletions packages/valory/agents/mech/aea-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ connections:
- valory/p2p_libp2p_client:0.1.0:bafybeihge56dn3xep2dzomu7rtvbgo4uc2qqh7ljl3fubqdi2lq44gs5lq
- valory/websocket_client:0.1.0:bafybeidxgkpajanybyjrmdnor4au4ttghzyp2ulgm7rttjgopxrjoaszzi
contracts:
- valory/agent_mech:0.1.0:bafybeihl5bhzztik6iylqyuzbci2nxvlj6f7hybspxgrvlrik7szrlsxfa
- valory/agent_mech:0.1.0:bafybeic7l75wn3nrjf24lddqngpolalbhjh7su6mttmuebqxgh4veqegia
- valory/gnosis_safe:0.1.0:bafybeibt7arvjzz4ah24omst74f4sfjpzrdef76yti6ml7dopsauhdzeci
- valory/gnosis_safe_proxy_factory:0.1.0:bafybeigxqwbd6wds57ecsfkl2hf4z4vbz5gokex6nutu5zcdpw6irh573y
- valory/multisend:0.1.0:bafybeig5byt5urg2d2bsecufxe5ql7f4mezg3mekfleeh32nmuusx66p4y
Expand All @@ -35,11 +35,11 @@ skills:
- valory/abstract_abci:0.1.0:bafybeihgemn2gwjc2wyxuh7rttg5pk5gec7dxhet3ih2tmg75vsdbgad7a
- valory/abstract_round_abci:0.1.0:bafybeic3xbxh74qaufevlmuwj64hhzyvp6ne24ffmbdauset52z7app2cu
- valory/contract_subscription:0.1.0:bafybeiedubkfhzjrg2wpuseham25ml54dmpcfc3vuaha6cl3fvar4b3qai
- valory/mech_abci:0.1.0:bafybeiezaqnzlkcqa3ezycg72go7bpphlreror65nyrx2cc3n4bx4tbumi
- valory/task_execution:0.1.0:bafybeibbchr6ibv3asncoatmrr46jxfsf6kr4whlfxfxqpmnl57enb6r2a
- valory/mech_abci:0.1.0:bafybeifyj7mpoupexuw5ozwucstooznwzjqei5xh3x6aqbahmhsfxock2y
- valory/task_execution:0.1.0:bafybeiaomsbxkugiplv76cjwbkqnbsoq4nw2pmq5ywgxmsxy7o52zz3rzq
- valory/registration_abci:0.1.0:bafybeigqxnmblvehj4cbhywmjbvivf44ru23xyizf7gx4wfkygkubwex24
- valory/reset_pause_abci:0.1.0:bafybeifdul36ucwer665cljtb4233fzedxkxfgi7fwflhmlsr2efhu4eiq
- valory/task_submission_abci:0.1.0:bafybeia7mbsfyupjioyyn3zsarlp337ln463jhhozowagdbugaytk77u2y
- valory/task_submission_abci:0.1.0:bafybeif3iq7a424o4uldemtlfzsbohewlktb65mllwxgg5t4q5mieuew34
- valory/termination_abci:0.1.0:bafybeihnp324qgyypecaol4tqt7bugbvpbut4hw5brbckbhpovenfiw3zu
- valory/transaction_settlement_abci:0.1.0:bafybeidbodazeikfo24pug3ir44ub265ltmepm752mzkuic4qfhkdcckmm
default_ledger: ethereum
Expand Down Expand Up @@ -92,6 +92,12 @@ dependencies:
version: ==2.1.1
hypothesis:
version: ==6.21.6
spacy:
version: ==3.7.2
tiktoken:
version: ==0.5.1
python-dateutil:
version: ==2.8.2
default_connection: null
---
public_id: valory/websocket_client:0.1.0:bafybeiexove4oqyhoae5xmk2hilskthosov5imdp65olpgj3cfrepbouyy
Expand Down Expand Up @@ -154,7 +160,7 @@ models:
tendermint_max_retries: ${int:5}
tendermint_url: ${str:http://localhost:26657}
use_termination: ${bool:false}
agent_mech_contract_address: ${str:0xFf82123dFB52ab75C417195c5fDB87630145ae81}
agent_mech_contract_addresses: ${list:["0xFf82123dFB52ab75C417195c5fDB87630145ae81"]}
round_timeout_seconds: ${float:30.0}
reset_period_count: ${int:1000}
on_chain_service_id: ${int:1}
Expand All @@ -174,7 +180,7 @@ type: skill
models:
params:
args:
agent_mech_contract_address: ${str:0xFf82123dFB52ab75C417195c5fDB87630145ae81}
agent_mech_contract_addresses: ${list:["0xFf82123dFB52ab75C417195c5fDB87630145ae81"]}
task_deadline: ${float:240.0}
file_hash_to_tools_json: ${list:[["bafybeibi34bhbvesmvd6o24jxvuldrwen4wj62na3lhva7k4afkg2shinu",["openai-text-davinci-002","openai-text-davinci-003","openai-gpt-3.5-turbo","openai-gpt-4"]],["bafybeiafdm3jctiz6wwo3rmo3vdubk7j7l5tumoxi5n5rc3x452mtkgyua",["stabilityai-stable-diffusion-v1-5","stabilityai-stable-diffusion-xl-beta-v2-2-2","stabilityai-stable-diffusion-512-v2-1","stabilityai-stable-diffusion-768-v2-1"]],["bafybeidpbnqbruzqlq424qt3i5dcvyqmcimshjilftabnrroujmjhdmteu",["transfer-native"]],["bafybeiglhy5epaytvt5qqdx77ld23ekouli53qrf2hjyebd5xghlunidfi",["prediction-online","prediction-offline"]]]}
api_keys_json: ${list:[["openai", "dummy_api_key"],["stabilityai", "dummy_api_key"],["google_api_key",
Expand Down
21 changes: 21 additions & 0 deletions packages/valory/contracts/agent_mech/contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ def get_request_events(
{
"tx_hash": entry.transactionHash.hex(),
"block_number": entry.blockNumber,
"contract_address": contract_address,
**entry["args"],
}
for entry in entries
Expand Down Expand Up @@ -183,3 +184,23 @@ def get_undelivered_reqs(
# store each requests in the pending_tasks list, make sure each req is stored once
pending_tasks.append(request)
return {"data": pending_tasks}

@classmethod
def get_multiple_undelivered_reqs(
cls,
ledger_api: LedgerApi,
contract_address: str,
contract_addresses: List[str],
from_block: BlockIdentifier = "earliest",
**kwargs: Any,
) -> JSONLike:
"""Get the requests that are not delivered."""
pending_tasks: List[Dict[str, Any]] = []
# ensure we get the same range on all contracts
to_block = ledger_api.api.eth.block_number
for contract_address in contract_addresses:
pending_tasks_batch = cls.get_undelivered_reqs(
ledger_api, contract_address, from_block, to_block
).get("data")
pending_tasks.extend(pending_tasks_batch)
return {"data": pending_tasks}
2 changes: 1 addition & 1 deletion packages/valory/contracts/agent_mech/contract.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ aea_version: '>=1.0.0, <2.0.0'
fingerprint:
__init__.py: bafybeigpq5lxfj2aza6ok3fjuywtdafelkbvoqwaits7regfbgu4oynmku
build/AgentMech.json: bafybeidrlu7vpusp2tzovyf5rbnqy2jicuq3e6czizfkzswjq4rjusu72i
contract.py: bafybeia4e7nbxuqoqbtxolapvn5z35ryfjnoldrd4zr2cbv5ewa44tohme
contract.py: bafybeibexkfobufuooyzton3up7nq7alr2wlinkflegpsa7tnvafcdzk34
fingerprint_ignore_patterns: []
class_name: AgentMechContract
contract_interface_paths:
Expand Down
18 changes: 9 additions & 9 deletions packages/valory/services/mech/service.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ license: Apache-2.0
fingerprint:
README.md: bafybeif7ia4jdlazy6745ke2k2x5yoqlwsgwr6sbztbgqtwvs3ndm2p7ba
fingerprint_ignore_patterns: []
agent: valory/mech:0.1.0:bafybeiah5xgb7fpzln6sqqbj4leqsdunh6jxes3ripum7a22csuiw5miy4
agent: valory/mech:0.1.0:bafybeig23wynkrigqg4jbxzpgejotrcbbj6obfzpzqqs6zpcewcml5dxn4
number_of_agents: 4
deployment:
agent:
Expand Down Expand Up @@ -43,7 +43,7 @@ type: skill
tendermint_p2p_url: ${TM_P2P_ENDPOINT_NODE_0:str:node0:26656}
termination_sleep: ${TERMINATION_SLEEP:int:900}
use_termination: ${USE_TERMINATION:bool:false}
agent_mech_contract_address: ${AGENT_MECH_CONTRACT_ADDRESS:str:0xFf82123dFB52ab75C417195c5fDB87630145ae81}
agent_mech_contract_address: ${AGENT_MECH_CONTRACT_ADDRESSES:list:["0xFf82123dFB52ab75C417195c5fDB87630145ae81","0x77af31De935740567Cf4fF1986D04B2c964A786a"]}
reset_period_count: ${RESET_PERIOD_COUNT:int:1000}
use_slashing: ${USE_SLASHING:bool:false}
slash_cooldown_hours: ${SLASH_COOLDOWN_HOURS:int:3}
Expand All @@ -70,7 +70,7 @@ type: skill
tendermint_p2p_url: ${TM_P2P_ENDPOINT_NODE_0:str:node0:26656}
termination_sleep: ${TERMINATION_SLEEP:int:900}
use_termination: ${USE_TERMINATION:bool:false}
agent_mech_contract_address: ${AGENT_MECH_CONTRACT_ADDRESS:str:0xFf82123dFB52ab75C417195c5fDB87630145ae81}
agent_mech_contract_address: ${AGENT_MECH_CONTRACT_ADDRESSES:list:["0xFf82123dFB52ab75C417195c5fDB87630145ae81","0x77af31De935740567Cf4fF1986D04B2c964A786a"]}
reset_period_count: ${RESET_PERIOD_COUNT:int:1000}
use_slashing: ${USE_SLASHING:bool:false}
slash_cooldown_hours: ${SLASH_COOLDOWN_HOURS:int:3}
Expand All @@ -97,7 +97,7 @@ type: skill
tendermint_p2p_url: ${TM_P2P_ENDPOINT_NODE_0:str:node0:26656}
termination_sleep: ${TERMINATION_SLEEP:int:900}
use_termination: ${USE_TERMINATION:bool:false}
agent_mech_contract_address: ${AGENT_MECH_CONTRACT_ADDRESS:str:0xFf82123dFB52ab75C417195c5fDB87630145ae81}
agent_mech_contract_address: ${AGENT_MECH_CONTRACT_ADDRESSES:list:["0xFf82123dFB52ab75C417195c5fDB87630145ae81","0x77af31De935740567Cf4fF1986D04B2c964A786a"]}
reset_period_count: ${RESET_PERIOD_COUNT:int:1000}
use_slashing: ${USE_SLASHING:bool:false}
slash_cooldown_hours: ${SLASH_COOLDOWN_HOURS:int:3}
Expand All @@ -124,7 +124,7 @@ type: skill
tendermint_p2p_url: ${TM_P2P_ENDPOINT_NODE_0:str:node0:26656}
termination_sleep: ${TERMINATION_SLEEP:int:900}
use_termination: ${USE_TERMINATION:bool:false}
agent_mech_contract_address: ${AGENT_MECH_CONTRACT_ADDRESS:str:0xFf82123dFB52ab75C417195c5fDB87630145ae81}
agent_mech_contract_address: ${AGENT_MECH_CONTRACT_ADDRESSES:list:["0xFf82123dFB52ab75C417195c5fDB87630145ae81","0x77af31De935740567Cf4fF1986D04B2c964A786a"]}
reset_period_count: ${RESET_PERIOD_COUNT:int:1000}
use_slashing: ${USE_SLASHING:bool:false}
slash_cooldown_hours: ${SLASH_COOLDOWN_HOURS:int:3}
Expand All @@ -141,7 +141,7 @@ type: skill
models:
params:
args:
agent_mech_contract_address: ${AGENT_MECH_CONTRACT_ADDRESS:str:0xFf82123dFB52ab75C417195c5fDB87630145ae81}
agent_mech_contract_address: ${AGENT_MECH_CONTRACT_ADDRESSES:list:["0xFf82123dFB52ab75C417195c5fDB87630145ae81","0x77af31De935740567Cf4fF1986D04B2c964A786a"]}
task_deadline: ${TASK_DEADLINE:float:240.0}
file_hash_to_tools_json: ${FILE_HASH_TO_TOOLS:list:[]}
api_keys_json: ${API_KEYS:list:[]}
Expand All @@ -152,7 +152,7 @@ type: skill
models:
params:
args:
agent_mech_contract_address: ${AGENT_MECH_CONTRACT_ADDRESS:str:0xFf82123dFB52ab75C417195c5fDB87630145ae81}
agent_mech_contract_address: ${AGENT_MECH_CONTRACT_ADDRESSES:list:["0xFf82123dFB52ab75C417195c5fDB87630145ae81","0x77af31De935740567Cf4fF1986D04B2c964A786a"]}
task_deadline: ${TASK_DEADLINE:float:240.0}
file_hash_to_tools_json: ${FILE_HASH_TO_TOOLS:list:[]}
api_keys_json: ${API_KEYS:list:[]}
Expand All @@ -163,7 +163,7 @@ type: skill
models:
params:
args:
agent_mech_contract_address: ${AGENT_MECH_CONTRACT_ADDRESS:str:0xFf82123dFB52ab75C417195c5fDB87630145ae81}
agent_mech_contract_address: ${AGENT_MECH_CONTRACT_ADDRESSES:list:["0xFf82123dFB52ab75C417195c5fDB87630145ae81","0x77af31De935740567Cf4fF1986D04B2c964A786a"]}
task_deadline: ${TASK_DEADLINE:float:240.0}
file_hash_to_tools_json: ${FILE_HASH_TO_TOOLS:list:[]}
api_keys_json: ${API_KEYS:list:[]}
Expand All @@ -174,7 +174,7 @@ type: skill
models:
params:
args:
agent_mech_contract_address: ${AGENT_MECH_CONTRACT_ADDRESS:str:0xFf82123dFB52ab75C417195c5fDB87630145ae81}
agent_mech_contract_address: ${AGENT_MECH_CONTRACT_ADDRESSES:list:["0xFf82123dFB52ab75C417195c5fDB87630145ae81","0x77af31De935740567Cf4fF1986D04B2c964A786a"]}
task_deadline: ${TASK_DEADLINE:float:240.0}
file_hash_to_tools_json: ${FILE_HASH_TO_TOOLS:list:[]}
api_keys_json: ${API_KEYS:list:[]}
Expand Down
5 changes: 3 additions & 2 deletions packages/valory/skills/mech_abci/skill.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ skills:
- valory/abstract_round_abci:0.1.0:bafybeic3xbxh74qaufevlmuwj64hhzyvp6ne24ffmbdauset52z7app2cu
- valory/registration_abci:0.1.0:bafybeigqxnmblvehj4cbhywmjbvivf44ru23xyizf7gx4wfkygkubwex24
- valory/reset_pause_abci:0.1.0:bafybeifdul36ucwer665cljtb4233fzedxkxfgi7fwflhmlsr2efhu4eiq
- valory/task_submission_abci:0.1.0:bafybeia7mbsfyupjioyyn3zsarlp337ln463jhhozowagdbugaytk77u2y
- valory/task_submission_abci:0.1.0:bafybeif3iq7a424o4uldemtlfzsbohewlktb65mllwxgg5t4q5mieuew34
- valory/termination_abci:0.1.0:bafybeihnp324qgyypecaol4tqt7bugbvpbut4hw5brbckbhpovenfiw3zu
- valory/transaction_settlement_abci:0.1.0:bafybeidbodazeikfo24pug3ir44ub265ltmepm752mzkuic4qfhkdcckmm
behaviours:
Expand Down Expand Up @@ -75,7 +75,8 @@ models:
class_name: LedgerApiDialogues
params:
args:
agent_mech_contract_address: '0xFf82123dFB52ab75C417195c5fDB87630145ae81'
agent_mech_contract_addresses:
- '0xFf82123dFB52ab75C417195c5fDB87630145ae81'
api_keys_json:
- - openai
- dummy_api_key
Expand Down
14 changes: 9 additions & 5 deletions packages/valory/skills/task_execution/behaviours.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,14 +199,17 @@ def _check_for_new_reqs(self) -> None:
# set the initial from block
self._populate_from_block()
return

contract_api_msg, _ = self.context.contract_dialogues.create(
performative=ContractApiMessage.Performative.GET_STATE,
contract_address=self.params.agent_mech_contract_address,
contract_address=self.params.agent_mech_contract_addresses[0],
contract_id=str(AgentMechContract.contract_id),
callable="get_undelivered_reqs",
callable="get_multiple_undelivered_reqs",
kwargs=ContractApiMessage.Kwargs(
dict(from_block=self.params.from_block, chain_id=GNOSIS_CHAIN)
dict(
from_block=self.params.from_block,
chain_id=GNOSIS_CHAIN,
contract_addresses=self.params.agent_mech_contract_addresses,
)
),
counterparty=LEDGER_API_ADDRESS,
ledger_id=self.context.default_ledger_id,
Expand Down Expand Up @@ -256,9 +259,10 @@ def _handle_done_task(self) -> None:
"""Handle done tasks"""
executing_task = cast(Dict[str, Any], self._executing_task)
req_id = executing_task.get("requestId", None)
mech_address = executing_task.get("contract_address", None)
task_result = self._get_executing_task_result()
response = {"requestId": req_id, "result": "Invalid response"}
self._done_task = {"request_id": req_id}
self._done_task = {"request_id": req_id, "mech_address": mech_address}
if task_result is not None:
# task succeeded
deliver_msg, prompt, transaction = task_result
Expand Down
8 changes: 4 additions & 4 deletions packages/valory/skills/task_execution/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ class Params(Model):

def __init__(self, *args: Any, **kwargs: Any) -> None:
"""Initialize the parameters object."""
self.agent_mech_contract_address = kwargs.get(
"agent_mech_contract_address", None
self.agent_mech_contract_addresses = kwargs.get(
"agent_mech_contract_addresses", None
)
enforce(
self.agent_mech_contract_address is not None,
"agent_mech_contract_address must be set!",
self.agent_mech_contract_addresses is not None,
"agent_mech_contract_addresses must be set!",
)

self.in_flight_req: bool = False
Expand Down
9 changes: 5 additions & 4 deletions packages/valory/skills/task_execution/skill.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ license: Apache-2.0
aea_version: '>=1.0.0, <2.0.0'
fingerprint:
__init__.py: bafybeidqhvvlnthkbnmrdkdeyjyx2f2ab6z4xdgmagh7welqnh2v6wczx4
behaviours.py: bafybeiaxbc7esaphfdc3pgmvwghqloouwk45k3sg5xdhaa7mnadms4ivve
behaviours.py: bafybeibrvfpdvcdtel3juuxjcbtvrwazgdg3na5h4fzh2akfldk2eipudq
dialogues.py: bafybeid4zxalqdlo5mw4yfbuf34hx4jp5ay5z6chm4zviwu4cj7fudtwca
handlers.py: bafybeidbt5ezj74cgfogk3w4uw4si2grlnk5g54veyumw7g5yh6gdscywu
models.py: bafybeibfaxjdlwlpmv4ursoyfvo4k6lp442fyzxxvl7vsw5pyssgxartbm
models.py: bafybeiavbz7un34qpxbmi3bmvk7yogc4w7d5wd3eymonelsqep5li222y4
utils/__init__.py: bafybeiccdijaigu6e5p2iruwo5mkk224o7ywedc7nr6xeu5fpmhjqgk24e
utils/ipfs.py: bafybeicuaj23qrcdv6ly4j7yo6il2r5plozhd6mwvcp5acwqbjxb2t3u2i
utils/task.py: bafybeiakokty64m5cqp72drrpvfckhruldlwcge5hcc2bsy2ujk6nnrazq
Expand All @@ -20,7 +20,7 @@ connections:
- valory/ipfs:0.1.0:bafybeigkn27u7m5atju6a724clycyfshbgcbwheztil2bky7krfa46ub2a
- valory/p2p_libp2p_client:0.1.0:bafybeihge56dn3xep2dzomu7rtvbgo4uc2qqh7ljl3fubqdi2lq44gs5lq
contracts:
- valory/agent_mech:0.1.0:bafybeihl5bhzztik6iylqyuzbci2nxvlj6f7hybspxgrvlrik7szrlsxfa
- valory/agent_mech:0.1.0:bafybeic7l75wn3nrjf24lddqngpolalbhjh7su6mttmuebqxgh4veqegia
protocols:
- valory/acn_data_share:0.1.0:bafybeieyixetwvz767zekhvg7r6etumyanzys6xbalx2brrfswybinnlhi
- valory/contract_api:1.0.0:bafybeialhbjvwiwcnqq3ysxcyemobcbie7xza66gaofcvla5njezkvhcka
Expand Down Expand Up @@ -64,7 +64,8 @@ models:
params:
args:
agent_index: 0
agent_mech_contract_address: '0x9A676e781A523b5d0C0e43731313A708CB607508'
agent_mech_contract_addresses:
- '0x9A676e781A523b5d0C0e43731313A708CB607508'
api_keys_json:
- - openai
- dummy_api_key
Expand Down
4 changes: 2 additions & 2 deletions packages/valory/skills/task_submission_abci/behaviours.py
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ def _get_deliver_tx(
"""Get the deliver tx."""
contract_api_msg = yield from self.get_contract_api_response(
performative=ContractApiMessage.Performative.GET_STATE, # type: ignore
contract_address=self.params.agent_mech_contract_address,
contract_address=task_data["mech_address"],
contract_id=str(AgentMechContract.contract_id),
contract_callable="get_deliver_data",
request_id=task_data["request_id"],
Expand All @@ -313,7 +313,7 @@ def _get_deliver_tx(

data = cast(bytes, contract_api_msg.state.body["data"])
return {
"to": self.params.agent_mech_contract_address,
"to": task_data["mech_address"],
"value": ZERO_ETHER_VALUE,
"data": data,
}
Expand Down
5 changes: 0 additions & 5 deletions packages/valory/skills/task_submission_abci/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,6 @@ def __init__(self, *args: Any, **kwargs: Any) -> None:
self.multisend_address = kwargs.get("multisend_address", None)
if self.multisend_address is None:
raise ValueError("No multisend_address specified!")
self.agent_mech_contract_address = kwargs.get(
"agent_mech_contract_address", None
)
if self.agent_mech_contract_address is None:
raise ValueError("agent_mech_contract_address is required")
self.agent_registry_address = self._ensure(
"agent_registry_address", kwargs, str
)
Expand Down
6 changes: 3 additions & 3 deletions packages/valory/skills/task_submission_abci/skill.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,18 @@ license: Apache-2.0
aea_version: '>=1.0.0, <2.0.0'
fingerprint:
__init__.py: bafybeiholqak7ltw6bbmn2c5tn3j7xgzkdlfzp3kcskiqsvmxoih6m4muq
behaviours.py: bafybeicqny46ccyh5tr7wfiplld4o5wp6ibqn5afkp3e3po353vwua255e
behaviours.py: bafybeicl5hj7pvoj3tmyj4hvvlmliktbmrvrhfl2sljccj7socrpoiegje
dialogues.py: bafybeibmac3m5u5h6ucoyjr4dazay72dyga656wvjl6z6saapluvjo54ne
fsm_specification.yaml: bafybeig6bhn554qyou7kef5bstnlv54zke32avyti63uu4hvsol3lzqkoi
handlers.py: bafybeibe5n7my2vd2wlwo73sbma65epjqc7kxgtittewlylcmvnmoxtxzq
models.py: bafybeibwa7xffrsi6np4o2gvin5a7a6arlbpkizazoq4fjb2b4kdrja5si
models.py: bafybeib4sgwtutuj6dydoi6q5rrfoj5nvvkb7cyzsipxk2yrmrhuocuoni
payloads.py: bafybeia2yorri2u5rwh6vukb6iwdrbn53ygsuuhthns2txptvjipyb6f4e
rounds.py: bafybeicstmau4vlzpxz3kjgiwwsetwmotdk4un4iucmdddzvot5dgdkg2a
tasks.py: bafybeicu5t5cvfhbndgpxbbtmp4vbmtyb6fba6vsnlewftvuderxp5lwcy
fingerprint_ignore_patterns: []
connections: []
contracts:
- valory/agent_mech:0.1.0:bafybeihl5bhzztik6iylqyuzbci2nxvlj6f7hybspxgrvlrik7szrlsxfa
- valory/agent_mech:0.1.0:bafybeic7l75wn3nrjf24lddqngpolalbhjh7su6mttmuebqxgh4veqegia
- valory/agent_registry:0.1.0:bafybeiargayav6yiztdnwzejoejstcx4idssch2h4f5arlgtzj3tgsgfmu
- valory/gnosis_safe:0.1.0:bafybeibt7arvjzz4ah24omst74f4sfjpzrdef76yti6ml7dopsauhdzeci
- valory/multisend:0.1.0:bafybeig5byt5urg2d2bsecufxe5ql7f4mezg3mekfleeh32nmuusx66p4y
Expand Down

0 comments on commit 744f4f8

Please sign in to comment.