Skip to content

Commit

Permalink
Merge pull request #103 from valory-xyz/feat/add-parallel-exec
Browse files Browse the repository at this point in the history
Feat/add parallel exec
  • Loading branch information
DavidMinarsch authored Sep 5, 2023
2 parents d6fd860 + 85c619a commit ece7bf4
Show file tree
Hide file tree
Showing 44 changed files with 1,722 additions and 1,718 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/common_checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ jobs:
run: |
tox -e check-abci-docstrings
tox -e check-abciapp-specs
tox -e check-handlers
# tox -e check-handlers
# ignore for now due to https://github.com/valory-xyz/open-autonomy/issues/1988
# tox -e analyse-service
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,4 @@ keys.json
leak_report

agent/
mech/
backup_mech/
14 changes: 7 additions & 7 deletions packages/packages.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
"dev": {
"connection/valory/websocket_client/0.1.0": "bafybeicz53kzs5uvyiod2azntl76zwgmpgr22ven4wl5fnwt2m546j3wsu",
"skill/valory/contract_subscription/0.1.0": "bafybeifbgzfrhtdtendqzwmh3o436nyexwkif6mbvsouvk2ktdfk5lhe7y",
"agent/valory/mech/0.1.0": "bafybeiafuo66iikppev3f5u4veky5ouytrzwjtc3bjupdmbvlnamu7fjnu",
"skill/valory/multiplexer_abci/0.1.0": "bafybeihs5fotoof627iqg2h5tsarbrvsla73agrmtqv2lnekinkrqypp2q",
"skill/valory/task_execution_abci/0.1.0": "bafybeiapixlxbnln52cgv6ibuxnei2yikbxgmsf2jtmrvane7s6fqidhwe",
"skill/valory/mech_abci/0.1.0": "bafybeiarmkauku6kv3ejt4l3derkgec6hfii7jr7eekrrfe36o6hycag5u",
"contract/valory/agent_mech/0.1.0": "bafybeigzl5sjks2tqszum6axrkwjlmybsgp54om5auybbdp3uyfx3zef7q",
"service/valory/mech/0.1.0": "bafybeigxdspczjnjiutd4olv2jcbqh6by4sbqpmxyvkz6irbgzc6fptipm",
"agent/valory/mech/0.1.0": "bafybeigfkzy7beir3tasc7ndcgfj3vcg6vrsjptojerum3ajccwuglczg4",
"skill/valory/mech_abci/0.1.0": "bafybeigzfa5pr647fg4nflzgie3xla4araotperomibfp2totzpaxwgmje",
"contract/valory/agent_mech/0.1.0": "bafybeidl6kwc3sgcxiphgb3osjqlqwylhqetv2nyv2fu6zxcgn5qctv2ju",
"service/valory/mech/0.1.0": "bafybeibulanqkh6hvo4cofquwtyvveala2bh7xtmembuq5zdzhgxdeet7a",
"protocol/valory/acn_data_share/0.1.0": "bafybeieyixetwvz767zekhvg7r6etumyanzys6xbalx2brrfswybinnlhi",
"protocol/valory/default/1.0.0": "bafybeiecmut3235aen7wxukllv424f3dysvvlgfmn562kzdunc5hdj3hxu"
"protocol/valory/default/1.0.0": "bafybeiecmut3235aen7wxukllv424f3dysvvlgfmn562kzdunc5hdj3hxu",
"skill/valory/task_submission_abci/0.1.0": "bafybeidcjfmhtgwh24sgf3gmk6soiyr2fmaebjvphhz6xob6d5m6aeguce",
"skill/valory/task_execution/0.1.0": "bafybeih6caazog2vq34dupe4cbkv2v3zrffsmfztuvvshtku7tnhmvxcrq"
},
"third_party": {
"protocol/open_aea/signing/1.0.0": "bafybeifuxs7gdg2okbn7uofymenjlmnih2wxwkym44lsgwmklgwuckxm2m",
Expand Down
41 changes: 27 additions & 14 deletions packages/valory/agents/mech/aea-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,31 +14,31 @@ connections:
- valory/p2p_libp2p_client:0.1.0:bafybeihdnfdth3qgltefgrem7xyi4b3ejzaz67xglm2hbma2rfvpl2annq
- valory/websocket_client:0.1.0:bafybeicz53kzs5uvyiod2azntl76zwgmpgr22ven4wl5fnwt2m546j3wsu
contracts:
- valory/agent_mech:0.1.0:bafybeigzl5sjks2tqszum6axrkwjlmybsgp54om5auybbdp3uyfx3zef7q
- valory/agent_mech:0.1.0:bafybeidl6kwc3sgcxiphgb3osjqlqwylhqetv2nyv2fu6zxcgn5qctv2ju
- valory/gnosis_safe:0.1.0:bafybeigvqg4lapdaa23dpc3pv67rdptdhey6e435mxqsw2gb2u74yw4yei
- valory/gnosis_safe_proxy_factory:0.1.0:bafybeie4iivrxcd5dcwzj3y2t66mc5mdvtsuqu426gk2kcdc6fxbki6neu
- valory/multisend:0.1.0:bafybeie7m7pjbnw7cccpbvmbgkut24dtlt4cgvug3tbac7gej37xvwbv3a
- valory/service_registry:0.1.0:bafybeif6x4zvsokwcetbrjdb4uyv4l3pqx756cg2ohv2zgcky5yuiwuqvi
protocols:
- valory/default:1.0.0:bafybeiecmut3235aen7wxukllv424f3dysvvlgfmn562kzdunc5hdj3hxu
- open_aea/signing:1.0.0:bafybeifuxs7gdg2okbn7uofymenjlmnih2wxwkym44lsgwmklgwuckxm2m
- valory/abci:0.1.0:bafybeigootsvqpk6th5xpdtzanxum3earifrrezfyhylfrit7yvqdrtgpe
- valory/acn:1.1.0:bafybeiapa5ilsobggnspoqhspftwolrx52udrwmaxdxgrk26heuvl4oooa
- valory/acn_data_share:0.1.0:bafybeieyixetwvz767zekhvg7r6etumyanzys6xbalx2brrfswybinnlhi
- valory/contract_api:1.0.0:bafybeiasywsvax45qmugus5kxogejj66c5taen27h4voriodz7rgushtqa
- valory/default:1.0.0:bafybeiecmut3235aen7wxukllv424f3dysvvlgfmn562kzdunc5hdj3hxu
- valory/http:1.0.0:bafybeia5bxdua2i6chw6pg47bvoljzcpuqxzy4rdrorbdmcbnwmnfdobtu
- valory/ipfs:0.1.0:bafybeibjzhsengtxfofqpxy6syamplevp35obemwfp4c5lhag3v2bvgysa
- valory/ledger_api:1.0.0:bafybeigsvceac33asd6ecbqev34meyyjwu3rangenv6xp5rkxyz4krvcby
- valory/tendermint:0.1.0:bafybeidjqmwvgi4rqgp65tbkhmi45fwn2odr5ecezw6q47hwitsgyw4jpa
- valory/acn_data_share:0.1.0:bafybeieyixetwvz767zekhvg7r6etumyanzys6xbalx2brrfswybinnlhi
skills:
- valory/abstract_abci:0.1.0:bafybeicg7dv7cff34nv2k2z47c4yp4kddsxp3wozonzow6tnvfvwndz3cy
- valory/abstract_round_abci:0.1.0:bafybeigxjcci53vwytymzlhr37436yvenh7jup4astrn7dgyixo24aq2pq
- valory/contract_subscription:0.1.0:bafybeifbgzfrhtdtendqzwmh3o436nyexwkif6mbvsouvk2ktdfk5lhe7y
- valory/mech_abci:0.1.0:bafybeiarmkauku6kv3ejt4l3derkgec6hfii7jr7eekrrfe36o6hycag5u
- valory/multiplexer_abci:0.1.0:bafybeihs5fotoof627iqg2h5tsarbrvsla73agrmtqv2lnekinkrqypp2q
- valory/mech_abci:0.1.0:bafybeigzfa5pr647fg4nflzgie3xla4araotperomibfp2totzpaxwgmje
- valory/task_execution:0.1.0:bafybeih6caazog2vq34dupe4cbkv2v3zrffsmfztuvvshtku7tnhmvxcrq
- valory/registration_abci:0.1.0:bafybeibc4kczqbh23sc6tufrzn3axmhp3vjav7fa3u6cnpvolrbbc2fd7i
- valory/reset_pause_abci:0.1.0:bafybeid445uy6wwvugf3byzl7r73c7teu6xr5ezxb4h7cxbenghg3copvy
- valory/task_execution_abci:0.1.0:bafybeiapixlxbnln52cgv6ibuxnei2yikbxgmsf2jtmrvane7s6fqidhwe
- valory/task_submission_abci:0.1.0:bafybeidcjfmhtgwh24sgf3gmk6soiyr2fmaebjvphhz6xob6d5m6aeguce
- valory/termination_abci:0.1.0:bafybeiguy7pkrcptg6c754ioig4mlkr7truccym3fpv6jwpjx2tmpdbzhi
- valory/transaction_settlement_abci:0.1.0:bafybeidpsnguxizkpihtkqzojr3em7yy7c6qc7gxpbh5vglmwws5wke7bi
default_ledger: ethereum
Expand Down Expand Up @@ -85,6 +85,7 @@ type: connection
config:
endpoint: ${str:wss://rpc.gnosischain.com/wss}
target_skill_id: valory/contract_subscription:0.1.0
is_abstract: true
---
public_id: valory/contract_subscription:0.1.0:bafybeiby5ajjc7a3m2uq73d2pprx6enqt4ghfcq2gkmrtsr75e4d4napi4
type: skill
Expand All @@ -101,6 +102,7 @@ models:
params:
args:
use_polling: ${bool:false}
is_abstract: true
---
public_id: valory/abci:0.1.0
type: connection
Expand Down Expand Up @@ -131,35 +133,46 @@ type: skill
models:
params:
args:
sleep_time: 1
sleep_time: ${int:1}
ipfs_fetch_timeout: ${float:15.0}
tendermint_check_sleep_delay: 3
tendermint_check_sleep_delay: ${int:3}
tendermint_p2p_url: ${str:localhost:26656}
tendermint_com_url: ${str:http://localhost:8080}
tendermint_max_retries: 5
tendermint_max_retries: ${int:5}
tendermint_url: ${str:http://localhost:26657}
use_termination: ${bool:false}
agent_mech_contract_address: ${str:0xFf82123dFB52ab75C417195c5fDB87630145ae81}
round_timeout_seconds: ${float:30.0}
reset_period_count: ${int:1000}
on_chain_service_id: ${int:1}
share_tm_config_on_startup: ${bool:false}
multisend_address: ${str:0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761}
service_registry_address: ${str:0x9338b5153AE39BB89f50468E608eD9d764B755fD}
setup:
all_participants: ${list:["0x10E867Ac2Fb0Aa156ca81eF440a5cdf373bE1AaC"]}
safe_contract_address: ${str:0x5e1D1eb61E1164D5a50b28C575dA73A29595dFf7}
consensus_threshold: ${int:null}
---
public_id: valory/task_execution:0.1.0
type: skill
models:
params:
args:
agent_mech_contract_address: ${str: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",
"dummy_api_key"],["google_engine_id", "dummy_api_key"]]}
use_polling: ${bool:false}
polling_interval: ${int:25}
polling_interval: ${float:30.0}
agent_index: ${int:0}
num_agents: ${int:4}
---
public_id: valory/ledger:0.19.0
type: connection
config:
ledger_apis:
ethereum:
address: ${str:https://rpc.gnosischain.com/}
chain_id: 100
poa_chain: false
default_gas_price_strategy: eip1559
chain_id: ${int:100}
poa_chain: ${bool:false}
default_gas_price_strategy: ${str:eip1559}
36 changes: 31 additions & 5 deletions packages/valory/contracts/agent_mech/contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

"""This module contains the dynamic_contribution contract definition."""

from typing import Any, cast
from typing import Any, Dict, List, cast

from aea.common import JSONLike
from aea.configurations.base import PublicId
Expand Down Expand Up @@ -87,7 +87,7 @@ def get_state(

@classmethod
def get_deliver_data(
cls, ledger_api: LedgerApi, contract_address: str, request_id: int, data: bytes
cls, ledger_api: LedgerApi, contract_address: str, request_id: int, data: str
) -> JSONLike:
"""
Deliver a response to a request.
Expand All @@ -104,7 +104,9 @@ def get_deliver_data(
raise ValueError(f"Only EthereumApi is supported, got {type(ledger_api)}")

contract_instance = cls.get_instance(ledger_api, contract_address)
data = contract_instance.encodeABI(fn_name="deliver", args=[request_id, data])
data = contract_instance.encodeABI(
fn_name="deliver", args=[request_id, bytes.fromhex(data)]
)
return {"data": bytes.fromhex(data[2:])} # type: ignore

@classmethod
Expand All @@ -118,7 +120,7 @@ def get_request_events(
"""Get the Request events emitted by the contract."""
ledger_api = cast(EthereumApi, ledger_api)
contract_instance = cls.get_instance(ledger_api, contract_address)
entries = contract_instance.events.Request.createFilter(
entries = contract_instance.events.Request.create_filter(
fromBlock=from_block,
toBlock=to_block,
).get_all_entries()
Expand All @@ -143,7 +145,7 @@ def get_deliver_events(
"""Get the Deliver events emitted by the contract."""
ledger_api = cast(EthereumApi, ledger_api)
contract_instance = cls.get_instance(ledger_api, contract_address)
entries = contract_instance.events.Deliver.createFilter(
entries = contract_instance.events.Deliver.create_filter(
fromBlock=from_block,
toBlock=to_block,
).get_all_entries()
Expand All @@ -156,3 +158,27 @@ def get_deliver_events(
for entry in entries
)
return {"data": deliver_events}

@classmethod
def get_undelivered_reqs(
cls,
ledger_api: LedgerApi,
contract_address: str,
from_block: BlockIdentifier = "earliest",
to_block: BlockIdentifier = "latest",
) -> JSONLike:
"""Get the requests that are not delivered."""
requests: List[Dict[str, Any]] = cls.get_request_events(
ledger_api, contract_address, from_block, to_block
)["data"]
delivers: List[Dict[str, Any]] = cls.get_deliver_events(
ledger_api, contract_address, from_block, to_block
)["data"]
pending_tasks: List[Dict[str, Any]] = []
for request in requests:
if request["requestId"] not in [
deliver["requestId"] for deliver in delivers
]:
# store each requests in the pending_tasks list, make sure each req is stored once
pending_tasks.append(request)
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: bafybeibexz4fzky74iss323khhvpqx2phetekwxdhx34o6darplliwfjxy
contract.py: bafybeidyh53cztzwsjndfgepmx57fc6swjk5qjzed24qavppjmruteny7q
fingerprint_ignore_patterns: []
class_name: AgentMechContract
contract_interface_paths:
Expand Down
Loading

0 comments on commit ece7bf4

Please sign in to comment.