Skip to content

Commit

Permalink
Merge pull request #267 from valory-xyz/feat/mech-quickstart-service
Browse files Browse the repository at this point in the history
added mech quickstart single agent service
  • Loading branch information
0xArdi authored Nov 21, 2024
2 parents 5f0fc42 + b65661b commit cd1cf45
Show file tree
Hide file tree
Showing 15 changed files with 651 additions and 799 deletions.
13 changes: 7 additions & 6 deletions packages/packages.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,14 @@
"contract/valory/mech_marketplace/0.1.0": "bafybeigulghv7bvx4evl6kmogvv6gjxovyt22tkwlbdmeretmop2crdmem",
"connection/valory/websocket_client/0.1.0": "bafybeic4ag3gqc7kd3k2o3pucddj2odck5yrfbgmwh5veqny7zao5qayli",
"skill/valory/contract_subscription/0.1.0": "bafybeiefuemlp75obgpxrp6iuleb3hn6vcviwh5oetk5djbuprf4xsmgjy",
"skill/valory/mech_abci/0.1.0": "bafybeibf5gxrngzn6j7qr5zvsshjoaxitt5e2bj6bybj73k6e3gdbggzge",
"skill/valory/task_submission_abci/0.1.0": "bafybeigrhzhk6qkmb5kaslkymsr3mnagoycl2kxqtiqfp6whkuyqc65lim",
"skill/valory/task_execution/0.1.0": "bafybeiafdhx4tyke5qao47cx5yuqnaivl47kuuu4xfdx3ndym6mvng3jve",
"skill/valory/mech_abci/0.1.0": "bafybeibqrc3k3f5ozjzoe46p3tpsuwifn44xhhxlcigtx6hv6ozkbfaaoi",
"skill/valory/task_submission_abci/0.1.0": "bafybeibecej5hkjzm4f2vteklafkxlb2h5ov7t7u6ydiuleljhe6slnz7e",
"skill/valory/task_execution/0.1.0": "bafybeigmps4dtqlvmrn42bt46cmsqoyvgtd7ltojm2t3ogf5rijxftmr5q",
"skill/valory/websocket_client/0.1.0": "bafybeif7rrvsu6z4evqkhblxj3u6wwv2eqou576hgkyoehxuj7cntw7o2m",
"skill/valory/subscription_abci/0.1.0": "bafybeicazs3nnrztew6j5vanmpb3lnhx4a2rclcqxjr7tmtu3adhn5dziy",
"agent/valory/mech/0.1.0": "bafybeigk33wlthqhriruwyv44gcx754xzlne3ywynxg6ezswabac7dcmmq",
"service/valory/mech/0.1.0": "bafybeihy67owel7dgyoaaugjqbcvk6x2edgw7ogsqn7qjvpu32rkjim4y4"
"skill/valory/subscription_abci/0.1.0": "bafybeifilanuxfvuypcccjku7nphurgp27i2iwncdmug3in6xuzfmslgaq",
"agent/valory/mech/0.1.0": "bafybeicg5ioivs2ryaim6uf3cws2ashc5ldxtrvxgbjbhv3y2ic63qx324",
"service/valory/mech/0.1.0": "bafybeifai4fbkcxrljyko4jqqibaetg7npc3etksntu4tnnwazifodghgu",
"service/valory/mech_quickstart/0.1.0": "bafybeig544gw6i7ahlwj6d64djlwfltjuznz3p66kmwk4m6bzqtn2bjfbq"
},
"third_party": {
"protocol/valory/default/1.0.0": "bafybeifqcqy5hfbnd7fjv4mqdjrtujh2vx3p2xhe33y67zoxa6ph7wdpaq",
Expand Down
10 changes: 4 additions & 6 deletions packages/valory/agents/mech/aea-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@ skills:
- valory/abstract_abci:0.1.0:bafybeieo7pe5wqjphs5izpz5aujjbubymlxub62b3rhx6yglu65ibalffu
- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti
- valory/contract_subscription:0.1.0:bafybeiefuemlp75obgpxrp6iuleb3hn6vcviwh5oetk5djbuprf4xsmgjy
- valory/mech_abci:0.1.0:bafybeibf5gxrngzn6j7qr5zvsshjoaxitt5e2bj6bybj73k6e3gdbggzge
- valory/mech_abci:0.1.0:bafybeibqrc3k3f5ozjzoe46p3tpsuwifn44xhhxlcigtx6hv6ozkbfaaoi
- valory/registration_abci:0.1.0:bafybeib3n6vqkfbrcubcbliebjnuwyywdinxkbzt76n6gbn2kg7ace47dq
- valory/reset_pause_abci:0.1.0:bafybeihkj6lmaypspyxe5qqrjgnolyck62pyvqoylr24ab6ue4steqcw7e
- valory/subscription_abci:0.1.0:bafybeicazs3nnrztew6j5vanmpb3lnhx4a2rclcqxjr7tmtu3adhn5dziy
- valory/task_execution:0.1.0:bafybeiafdhx4tyke5qao47cx5yuqnaivl47kuuu4xfdx3ndym6mvng3jve
- valory/task_submission_abci:0.1.0:bafybeigrhzhk6qkmb5kaslkymsr3mnagoycl2kxqtiqfp6whkuyqc65lim
- valory/subscription_abci:0.1.0:bafybeifilanuxfvuypcccjku7nphurgp27i2iwncdmug3in6xuzfmslgaq
- valory/task_execution:0.1.0:bafybeigmps4dtqlvmrn42bt46cmsqoyvgtd7ltojm2t3ogf5rijxftmr5q
- valory/task_submission_abci:0.1.0:bafybeibecej5hkjzm4f2vteklafkxlb2h5ov7t7u6ydiuleljhe6slnz7e
- valory/termination_abci:0.1.0:bafybeifi2uodnrjsrivj53g3sjutocmyusbx6mlsb6oanqdyt2mfbyvusy
- valory/transaction_settlement_abci:0.1.0:bafybeigh2vkt74jrad5gtsczrgqcuhcqe7jkgjy7jdw56yamlzwwnaymjy
- valory/websocket_client:0.1.0:bafybeif7rrvsu6z4evqkhblxj3u6wwv2eqou576hgkyoehxuj7cntw7o2m
Expand Down Expand Up @@ -84,8 +84,6 @@ dependencies:
version: ==6.21.6
open-aea-ledger-ethereum:
version: ==1.59.0
google-generativeai:
version: ==0.6.0
customs: []
default_connection: null
---
Expand Down
2 changes: 1 addition & 1 deletion 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:bafybeigk33wlthqhriruwyv44gcx754xzlne3ywynxg6ezswabac7dcmmq
agent: valory/mech:0.1.0:bafybeicg5ioivs2ryaim6uf3cws2ashc5ldxtrvxgbjbhv3y2ic63qx324
number_of_agents: 4
deployment:
agent:
Expand Down
1 change: 1 addition & 0 deletions packages/valory/services/mech_quickstart/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
## Mech Quickstart Single Agent Service
117 changes: 117 additions & 0 deletions packages/valory/services/mech_quickstart/service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
name: mech_quickstart
author: valory
version: 0.1.0
description: A decentralised task execution engine.
aea_version: '>=1.0.0, <2.0.0'
license: Apache-2.0
fingerprint:
README.md: bafybeiaqaedhfzjxxdfxtygjulorvd4x2h3cbwtiw3xgbigjgsc6qfn7zy
fingerprint_ignore_patterns: []
agent: valory/mech:0.1.0:bafybeicg5ioivs2ryaim6uf3cws2ashc5ldxtrvxgbjbhv3y2ic63qx324
number_of_agents: 1
deployment:
agent:
ports:
0:
8000: 8000
volumes:
./data: /data
---
public_id: valory/mech_abci:0.1.0
type: skill
0:
models:
params:
args:
multisend_address: ${MULTISEND_ADDRESS:str:0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761}
on_chain_service_id: ${ON_CHAIN_SERVICE_ID:int:null}
reset_pause_duration: ${RESET_PAUSE_DURATION:int:10}
round_timeout_seconds: ${ROUND_TIMEOUT:float:150.0}
use_polling: ${USE_POLLING:bool:false}
service_registry_address: ${SERVICE_REGISTRY_ADDRESS:str:0x0000000000000000000000000000000000000000}
setup:
all_participants: ${ALL_PARTICIPANTS:list:[]}
safe_contract_address: ${SAFE_CONTRACT_ADDRESS:str:0x0000000000000000000000000000000000000000}
consensus_threshold: ${CONSENSUS_THRESHOLD:int:null}
share_tm_config_on_startup: ${USE_ACN:bool:false}
tendermint_com_url: ${TENDERMINT_COM_URL:str:http://localhost:8080}
tendermint_url: ${TENDERMINT_URL:str:http://localhost:26657}
tendermint_p2p_url: ${TM_P2P_ENDPOINT_NODE_0:str:node0:26656}
termination_sleep: ${TERMINATION_SLEEP:int:900}
use_termination: ${USE_TERMINATION:bool:false}
manual_gas_limit: ${MANUAL_GAS_LIMIT:int:1000000}
reset_period_count: ${RESET_PERIOD_COUNT:int:1000}
service_endpoint_base: ${SERVICE_ENDPOINT_BASE:str:https://dummy_service.autonolas.tech/}
use_slashing: ${USE_SLASHING:bool:false}
termination_from_block: ${TERMINATION_FROM_BLOCK:int:0}
slash_cooldown_hours: ${SLASH_COOLDOWN_HOURS:int:3}
mech_marketplace_address: ${MECH_MARKETPLACE_ADDRESS:str:0x0000000000000000000000000000000000000000}
slash_threshold_amount: ${SLASH_THRESHOLD_AMOUNT:int:10000000000000000}
light_slash_unit_amount: ${LIGHT_SLASH_UNIT_AMOUNT:int:5000000000000000}
serious_slash_unit_amount: ${SERIOUS_SLASH_UNIT_AMOUNT:int:8000000000000000}
agent_registry_address: ${AGENT_REGISTRY_ADDRESS:str:0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA}
agent_id: ${AGENT_ID:int:3}
metadata_hash: ${METADATA_HASH:str:f01701220caa53607238e340da63b296acab232c18a48e954f0af6ff2b835b2d93f1962f0}
profit_split_freq: ${PROFIT_SPLIT_FREQ:int:100}
hash_checkpoint_address: ${CHECKPOINT_ADDRESS:str:0x0000000000000000000000000000000000000000}
mech_to_subscription: ${MECH_TO_SUBSCRIPTION:dict:{"0x77af31De935740567Cf4fF1986D04B2c964A786a":{"tokenAddress":"0x0000000000000000000000000000000000000000",
"tokenId":"1"},"0xA6bE7Ef2e2FbdA7fB2BfE60726b74A3B2206D67f":{"tokenAddress":"0x0000000000000000000000000000000000000001",
"tokenId":"2"}}}
agent_funding_amount: ${AGENT_FUNDING_AMOUNT:int:200000000000000000}
minimum_agent_balance: ${MINIMUM_AGENT_BALANCE:int:100000000000000000}
mech_staking_instance_address: ${MECH_STAKING_INSTANCE_ADDRESS:str:0x0000000000000000000000000000000000000000}
service_owner_share: ${SERVICE_SHARE:float:0}
---
public_id: valory/task_execution:0.1.0
type: skill
0:
models:
params:
args:
task_deadline: ${TASK_DEADLINE:float:240.0}
tools_to_package_hash: ${TOOLS_TO_PACKAGE_HASH:dict:{}}
api_keys: ${API_KEYS:dict:{}}
polling_interval: ${POLLING_INTERVAL:float:30.0}
agent_index: ${AGENT_INDEX_0:int:0}
num_agents: ${NUM_AGENTS:int:1}
mech_marketplace_address: ${MECH_MARKETPLACE_ADDRESS:str:0x0000000000000000000000000000000000000000}
timeout_limit: ${TIMEOUT_LIMIT:int:3}
mech_to_config: ${MECH_TO_CONFIG:dict:{"0xFf82123dFB52ab75C417195c5fDB87630145ae81":{"use_dynamic_pricing":false,"is_marketplace_mech":false},
"0x77af31De935740567Cf4fF1986D04B2c964A786a":{"use_dynamic_pricing":false,"is_marketplace_mech":false}}}
max_block_window: ${MAX_BLOCK_WINDOW:int:500}
---
public_id: valory/ledger:0.19.0
type: connection
config:
ledger_apis:
ethereum:
address: ${GNOSIS_RPC_0:str:http://host.docker.internal:8545}
chain_id: ${GNOSIS_LEDGER_IS_POA_CHAIN:int:100}
poa_chain: ${ETHEREUM_LEDGER_IS_POA_CHAIN:bool:false}
default_gas_price_strategy: ${GNOSIS_LEDGER_PRICING:str:eip1559}
gnosis:
address: ${GNOSIS_RPC_0:str:http://host.docker.internal:8545}
chain_id: ${GNOSIS_LEDGER_CHAIN_ID:int:100}
poa_chain: ${GNOSIS_LEDGER_IS_POA_CHAIN:bool:false}
default_gas_price_strategy: ${GNOSIS_LEDGER_PRICING:str:eip1559}
---
public_id: valory/p2p_libp2p_client:0.1.0
type: connection
config:
nodes:
- uri: ${ACN_URI:str:acn.staging.autonolas.tech:9005}
public_key: ${ACN_NODE_PUBLIC_KEY:str:02d3a830c9d6ea1ae91936951430dee11f4662f33118b02190693be835359a9d77}
cert_requests:
- identifier: acn
ledger_id: ethereum
message_format: '{public_key}'
not_after: '2023-01-01'
not_before: '2022-01-01'
public_key: ${ACN_NODE_PUBLIC_KEY:str:02d3a830c9d6ea1ae91936951430dee11f4662f33118b02190693be835359a9d77}
save_path: .certs/acn_cosmos_11000.txt
is_abstract: false
---
public_id: valory/websocket_client:0.1.0:bafybeiexove4oqyhoae5xmk2hilskthosov5imdp65olpgj3cfrepbouyy
type: connection
config:
endpoint: ${ETHEREUM_WEBSOCKET_RPC_0:str:wss://rpc.gnosischain.com/wss}
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 @@ -23,10 +23,10 @@ skills:
- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti
- valory/registration_abci:0.1.0:bafybeib3n6vqkfbrcubcbliebjnuwyywdinxkbzt76n6gbn2kg7ace47dq
- valory/reset_pause_abci:0.1.0:bafybeihkj6lmaypspyxe5qqrjgnolyck62pyvqoylr24ab6ue4steqcw7e
- valory/task_submission_abci:0.1.0:bafybeigrhzhk6qkmb5kaslkymsr3mnagoycl2kxqtiqfp6whkuyqc65lim
- valory/task_submission_abci:0.1.0:bafybeibecej5hkjzm4f2vteklafkxlb2h5ov7t7u6ydiuleljhe6slnz7e
- valory/termination_abci:0.1.0:bafybeifi2uodnrjsrivj53g3sjutocmyusbx6mlsb6oanqdyt2mfbyvusy
- valory/transaction_settlement_abci:0.1.0:bafybeigh2vkt74jrad5gtsczrgqcuhcqe7jkgjy7jdw56yamlzwwnaymjy
- valory/subscription_abci:0.1.0:bafybeicazs3nnrztew6j5vanmpb3lnhx4a2rclcqxjr7tmtu3adhn5dziy
- valory/subscription_abci:0.1.0:bafybeifilanuxfvuypcccjku7nphurgp27i2iwncdmug3in6xuzfmslgaq
behaviours:
main:
args: {}
Expand Down Expand Up @@ -144,6 +144,7 @@ models:
validate_timeout: 1205
task_wait_timeout: 15.0
use_slashing: false
default_chain_id: ethereum
manual_gas_limit: 1000000
mech_staking_instance_address: '0x0000000000000000000000000000000000000000'
mech_marketplace_address: '0x0000000000000000000000000000000000000000'
Expand Down
2 changes: 0 additions & 2 deletions packages/valory/skills/subscription_abci/behaviours.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@
from abc import ABC
from typing import Any, Dict, Generator, List, Optional, Set, Type, cast

import openai # noqa

from packages.valory.contracts.agent_mech.contract import (
AgentMechContract,
)
Expand Down
2 changes: 1 addition & 1 deletion packages/valory/skills/subscription_abci/skill.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ license: Apache-2.0
aea_version: '>=1.0.0, <2.0.0'
fingerprint:
__init__.py: bafybeih2y4s3vu6xleujurx5mihfmzaxubeubykopyftjgklbwtfn6m5yu
behaviours.py: bafybeiddq3b7vlxz5s4s7pcyfarc7grxgjhfq7hmdm53kd63bxfeaanye4
behaviours.py: bafybeihfiqkffiwn7ycpox36pt7asog6aawiuajdanaj3ivv5qcpcbhqom
dialogues.py: bafybeif2euu7wehnyr2r6efrbk6jh757dvbbnb3m7v5gxfdc4qzr3fnd74
fsm_specification.yaml: bafybeia77avtbeclmr4lil2hvjrxk4unstxb4fyvdmbpdgocn3ebs2hcdi
handlers.py: bafybeiegulbnno4efmaqmsuvjo4vrhcwcrg3faeryjjhwyabpywzty5m2u
Expand Down
6 changes: 3 additions & 3 deletions packages/valory/skills/task_execution/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"""This module contains the shared state for the abci skill of Mech."""
import dataclasses
from collections import defaultdict
from typing import Any, Callable, Dict, Optional
from typing import Any, Callable, Dict, Optional, List

from aea.exceptions import enforce
from aea.skills.base import Model
Expand Down Expand Up @@ -56,8 +56,8 @@ def __init__(self, *args: Any, **kwargs: Any) -> None:
self.in_flight_req: bool = False
self.from_block: Optional[int] = None
self.req_to_callback: Dict[str, Callable] = {}
self.api_keys: Dict[str, str] = self._ensure_get(
"api_keys", kwargs, Dict[str, str]
self.api_keys: Dict[str, List[str]] = self._ensure_get(
"api_keys", kwargs, Dict[str, List[str]]
)
self.tools_to_package_hash: Dict[str, str] = self._ensure_get(
"tools_to_package_hash", kwargs, Dict[str, str]
Expand Down
4 changes: 2 additions & 2 deletions packages/valory/skills/task_execution/skill.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ fingerprint:
behaviours.py: bafybeiexshowozpbzuomhezg3a5b2re77ikidjkiy3fov2tsfiqyk6dmwe
dialogues.py: bafybeid4zxalqdlo5mw4yfbuf34hx4jp5ay5z6chm4zviwu4cj7fudtwca
handlers.py: bafybeidbt5ezj74cgfogk3w4uw4si2grlnk5g54veyumw7g5yh6gdscywu
models.py: bafybeigszq73slogvebsaxh32p325fxthyuuwwtot7qxj3bdyho7x7spuq
models.py: bafybeibsnirbekd7ondvm2lkrabm5wxzwsl6xkf2ccmrbfugkz4cola77u
utils/__init__.py: bafybeiccdijaigu6e5p2iruwo5mkk224o7ywedc7nr6xeu5fpmhjqgk24e
utils/apis.py: bafybeidqt5nqcymlpwlycnvpsheeeexk3tb3yboceeeizwpd6miqewtr7u
utils/apis.py: bafybeigu73lfz3g3mc6iupisrvlsp3fyl4du3oqlyajgdpfvtqypddh3w4
utils/benchmarks.py: bafybeiafnee7iay6dyjnatyqyzjov5c4ibl3ojamjmgfjri7cyghl7qayq
utils/cost_calculation.py: bafybeighafxied73w3mcmgziwfp3u2x6t4qlztw4kyekyq2ddgyhdge74q
utils/ipfs.py: bafybeicp6d2y4aguetcod2yzxrbiqqwkzarzccyf2iajuwvrcfckmn6jm4
Expand Down
4 changes: 2 additions & 2 deletions packages/valory/skills/task_execution/utils/apis.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@
#
# ------------------------------------------------------------------------------
"""Utils for API integrations."""
from typing import Dict
from typing import Dict, List


class KeyChain:
"""Class for managing API keys."""

def __init__(self, services: Dict[str, str]) -> None:
def __init__(self, services: Dict[str, List[str]]) -> None:
"""Initialize the KeyChain with a dictionary of service names and corresponding lists of API keys."""
if not isinstance(services, dict):
raise ValueError(
Expand Down
21 changes: 20 additions & 1 deletion packages/valory/skills/task_submission_abci/behaviours.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
from copy import deepcopy
from typing import Any, Dict, Generator, List, Optional, Set, Type, cast

import openai # noqa
from aea.helpers.cid import CID, to_v1
from multibase import multibase
from multicodec import multicodec
Expand Down Expand Up @@ -146,6 +145,26 @@ def to_multihash(hash_string: str) -> str:
hex_multihash = multihash_bytes.hex()
return hex_multihash[6:]

def get_contract_api_response(
self,
performative: ContractApiMessage.Performative,
contract_address: Optional[str],
contract_id: str,
contract_callable: str,
ledger_id: Optional[str] = None,
**kwargs: Any,
) -> Generator[None, None, ContractApiMessage]:
"""Get the contract api response."""
return super().get_contract_api_response(
performative=performative,
contract_address=contract_address,
contract_id=contract_id,
contract_callable=contract_callable,
ledger_id=ledger_id,
chain_id=self.params.default_chain_id,
**kwargs,
)


class TaskPoolingBehaviour(TaskExecutionBaseBehaviour, ABC):
"""TaskPoolingBehaviour"""
Expand Down
4 changes: 2 additions & 2 deletions packages/valory/skills/task_submission_abci/skill.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ license: Apache-2.0
aea_version: '>=1.0.0, <2.0.0'
fingerprint:
__init__.py: bafybeiholqak7ltw6bbmn2c5tn3j7xgzkdlfzp3kcskiqsvmxoih6m4muq
behaviours.py: bafybeidd4roeiq3qtr65ewu7qwwmlkm7g6j5g66o4b3uec6n5ucgpbrsei
behaviours.py: bafybeicq6246kgnfbbk4gyp4ptje4u56bc5mkwsi7eln6bnmrtg7cdlepq
dialogues.py: bafybeibmac3m5u5h6ucoyjr4dazay72dyga656wvjl6z6saapluvjo54ne
fsm_specification.yaml: bafybeidtmsmpunr3t77pshd3k2s6dd6hlvhze6inu3gj7xyvlg4wi3tnuu
handlers.py: bafybeibe5n7my2vd2wlwo73sbma65epjqc7kxgtittewlylcmvnmoxtxzq
Expand All @@ -32,7 +32,7 @@ protocols:
skills:
- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti
- valory/transaction_settlement_abci:0.1.0:bafybeigh2vkt74jrad5gtsczrgqcuhcqe7jkgjy7jdw56yamlzwwnaymjy
- valory/task_execution:0.1.0:bafybeiafdhx4tyke5qao47cx5yuqnaivl47kuuu4xfdx3ndym6mvng3jve
- valory/task_execution:0.1.0:bafybeigmps4dtqlvmrn42bt46cmsqoyvgtd7ltojm2t3ogf5rijxftmr5q
behaviours:
main:
args: {}
Expand Down
Loading

0 comments on commit cd1cf45

Please sign in to comment.