Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix/fsm split #88

Merged
merged 15 commits into from
Sep 5, 2023
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ In order to run a local demo service based on the IEKit:
2. Fetch the IEKit.

```bash
autonomy fetch valory/impact_evaluator:0.1.0:bafybeibxdpqanic5yizhhu6v5bbapghyktschuouywiedgq5u2l5dyj634 --service
autonomy fetch valory/impact_evaluator:0.1.0:bafybeidtxoqpimts5erkcpuscojhmy3f7pyhr7ivbt7ynorro3zx7pmzwy --service
```

3. Build the Docker image of the service agents
Expand Down
12 changes: 6 additions & 6 deletions packages/packages.json
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
{
"dev": {
"agent/valory/impact_evaluator/0.1.0": "bafybeianmf6g3sq3bqdmlmyjzfad6xoo6fotmhgyribrej632ye3ybpuhq",
"agent/valory/impact_evaluator/0.1.0": "bafybeifcppzj5u5fgic5fjqliignzrc6dkejgjh7zfbgrumap42nx3lgqm",
"contract/valory/dynamic_contribution/0.1.0": "bafybeie76ynpueo3hh2ujzcfgpqcsbyqwa4pdcc6g44a4he6bueyb4tqiy",
"service/valory/impact_evaluator/0.1.0": "bafybeibxdpqanic5yizhhu6v5bbapghyktschuouywiedgq5u2l5dyj634",
"service/valory/impact_evaluator/0.1.0": "bafybeidtxoqpimts5erkcpuscojhmy3f7pyhr7ivbt7ynorro3zx7pmzwy",
"skill/valory/dynamic_nft_abci/0.1.0": "bafybeie5vfscnjpvuwqe5vk7i2rzzlqciojswdg7uh34fjnuk3bspca5zq",
"skill/valory/twitter_scoring_abci/0.1.0": "bafybeigsegi7iyftnwyte36z2wgf444z2yqifpxzrxkysmt6spc5qsmd7q",
"skill/valory/twitter_scoring_abci/0.1.0": "bafybeihplombdirefn37vtnugn55f2b4khcywtboi4w72iczxybf4x5pwm",
"skill/valory/ceramic_read_abci/0.1.0": "bafybeidruvxgpbggchuvlnssuswdxuoz2ep6sjvzzqjeyckybb6gpjx3ia",
"skill/valory/ceramic_write_abci/0.1.0": "bafybeigtkv57h5suaqqpjfknimfegbidovxna7cok7znsgzrfb4nftqvay",
"skill/valory/impact_evaluator_abci/0.1.0": "bafybeidtp3l5jzfqr5fjvwpyzk4tn7lb3m66rjomyqktfvxbwmd66bzthu",
"skill/valory/impact_evaluator_abci/0.1.0": "bafybeifjst43yn2bn6ibljwbfcjirc7yhbelwsugntpan4k666xin3ebom",
"skill/valory/generic_scoring_abci/0.1.0": "bafybeiemmcnduhdj427kgafkxcbn2rfhaihabtpda34yqnks7utm3g4xiq",
"protocol/valory/twitter/0.1.0": "bafybeib4eyf7qbs7kdntqzhwqsaaj4o2mzcokcztaza6qgwt7sbxgkqu2m",
"protocol/valory/llm/1.0.0": "bafybeigqybmg75vsxexmp57hkms7lkp7iwpf54r7wpygizxryvrhfqqpb4",
"connection/valory/twitter/0.1.0": "bafybeibndxp3l35osve5pj255waemunlzaacwtasyazjmcmrx7qo5wcrni",
"connection/valory/openai/0.1.0": "bafybeib5vnrxnbj3o2olle2n5tp6nzml4ghsghh2rnj2l2ilbvproj35jq",
"connection/valory/openai/0.1.0": "bafybeih7w2xmaecgznuhxpnbxcxjhfla6wlmx3umytindfgk6ibbwqq2lu",
"skill/valory/twitter_write_abci/0.1.0": "bafybeih662zzwew4egsm2m6mis5yjwfehhx2lciio5ngnbunolc6nkkyw4",
"skill/valory/llm_abci/0.1.0": "bafybeifvskttsumhsatvj24sx45u23zq57k56fnfgliq2csul53kjyhfhy",
"skill/valory/llm_abci/0.1.0": "bafybeictnqpioilfry2yxkwaaguam5zbo3ygw7slkpn3k36gfvo2cnnyam",
"skill/valory/decision_making_abci/0.1.0": "bafybeih5nquchsfisp5taaxrpz7j7ur2teymey5tihlw654wrzgpy57bvq"
},
"third_party": {
Expand Down
12 changes: 6 additions & 6 deletions packages/valory/agents/impact_evaluator/aea-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,18 @@ fingerprint:
tests/__init__.py: bafybeibknjewfed3d5ypi46ipuzfxdcps5ief2hfd3a2tfvm4gjtzzblme
tests/helpers/__init__.py: bafybeif7verbag26h6i35gr5rlatxl7veq4drup5ykwdvhgtussf2jreei
tests/helpers/constants.py: bafybeibbokz7gzdlubnjwxrmh4tqckc7j75hfy3ae6l5a63mrbd4hp6l7u
tests/helpers/data/json_server/data.json: bafybeif5wzdnb4qdo4mjxcn6f7m57n7p4jmr5lmfxlthrvewyi6mfczonq
tests/helpers/data/json_server/data.json: bafybeiapboptlarlpc2lboj4g2526vev7fwqpr267tb2qn6cevbblpnewe
tests/helpers/docker.py: bafybeihlg5thdrcaiuzyte5s7x25mikqfyxdjwuqvhmeddluyjdkzhuhqi
tests/helpers/fixtures.py: bafybeidfsamzdrqqkdra4ektollyfkhiyb2iqymy6djavgewon2cb23vwu
tests/test_impact_evaluator.py: bafybeicbhyvk4lbsckrywfhmd5lpqx76kbg4kszqpcsbd55n7letxolbae
tests/test_impact_evaluator.py: bafybeigo4mbjppcd24f47zykj7icq2vatfddskqrfpyylqqdphcfd5hbeu
fingerprint_ignore_patterns: []
connections:
- fetchai/http_server:0.22.0:bafybeihp5umafxzx45aad5pj7s3343se2wjkgnbirt4pybrape22swm6de
- valory/abci:0.1.0:bafybeicasheudousm2unmh5qmy5n3qdq5hmkg2j42fxfm2crxmgq3nzjkq
- valory/http_client:0.23.0:bafybeieoeuy4brzimtnubmokwirhrx27ezls6cdnl5qik4rkykfle3nn2y
- valory/ledger:0.19.0:bafybeigfoz7d7si7s4jehvloq2zmiiocpbxcaathl3bxkyarxoerxq7g3a
- valory/p2p_libp2p_client:0.1.0:bafybeihdnfdth3qgltefgrem7xyi4b3ejzaz67xglm2hbma2rfvpl2annq
- valory/openai:0.1.0:bafybeib5vnrxnbj3o2olle2n5tp6nzml4ghsghh2rnj2l2ilbvproj35jq
- valory/openai:0.1.0:bafybeih7w2xmaecgznuhxpnbxcxjhfla6wlmx3umytindfgk6ibbwqq2lu
- valory/twitter:0.1.0:bafybeibndxp3l35osve5pj255waemunlzaacwtasyazjmcmrx7qo5wcrni
contracts:
- valory/dynamic_contribution:0.1.0:bafybeie76ynpueo3hh2ujzcfgpqcsbyqwa4pdcc6g44a4he6bueyb4tqiy
Expand All @@ -42,9 +42,9 @@ protocols:
skills:
- valory/abstract_abci:0.1.0:bafybeicg7dv7cff34nv2k2z47c4yp4kddsxp3wozonzow6tnvfvwndz3cy
- valory/abstract_round_abci:0.1.0:bafybeigxjcci53vwytymzlhr37436yvenh7jup4astrn7dgyixo24aq2pq
- valory/impact_evaluator_abci:0.1.0:bafybeidtp3l5jzfqr5fjvwpyzk4tn7lb3m66rjomyqktfvxbwmd66bzthu
- valory/impact_evaluator_abci:0.1.0:bafybeifjst43yn2bn6ibljwbfcjirc7yhbelwsugntpan4k666xin3ebom
- valory/generic_scoring_abci:0.1.0:bafybeiemmcnduhdj427kgafkxcbn2rfhaihabtpda34yqnks7utm3g4xiq
- valory/twitter_scoring_abci:0.1.0:bafybeigsegi7iyftnwyte36z2wgf444z2yqifpxzrxkysmt6spc5qsmd7q
- valory/twitter_scoring_abci:0.1.0:bafybeihplombdirefn37vtnugn55f2b4khcywtboi4w72iczxybf4x5pwm
- valory/ceramic_read_abci:0.1.0:bafybeidruvxgpbggchuvlnssuswdxuoz2ep6sjvzzqjeyckybb6gpjx3ia
- valory/ceramic_write_abci:0.1.0:bafybeigtkv57h5suaqqpjfknimfegbidovxna7cok7znsgzrfb4nftqvay
- valory/dynamic_nft_abci:0.1.0:bafybeie5vfscnjpvuwqe5vk7i2rzzlqciojswdg7uh34fjnuk3bspca5zq
Expand All @@ -54,7 +54,7 @@ skills:
- valory/transaction_settlement_abci:0.1.0:bafybeidpsnguxizkpihtkqzojr3em7yy7c6qc7gxpbh5vglmwws5wke7bi
- valory/twitter_write_abci:0.1.0:bafybeih662zzwew4egsm2m6mis5yjwfehhx2lciio5ngnbunolc6nkkyw4
- valory/decision_making_abci:0.1.0:bafybeih5nquchsfisp5taaxrpz7j7ur2teymey5tihlw654wrzgpy57bvq
- valory/llm_abci:0.1.0:bafybeifvskttsumhsatvj24sx45u23zq57k56fnfgliq2csul53kjyhfhy
- valory/llm_abci:0.1.0:bafybeictnqpioilfry2yxkwaaguam5zbo3ygw7slkpn3k36gfvo2cnnyam
default_ledger: ethereum
required_ledgers:
- ethereum
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -65,15 +65,37 @@
from packages.valory.skills.generic_scoring_abci.rounds import GenericScoringRound
from packages.valory.skills.registration_abci.rounds import RegistrationStartupRound
from packages.valory.skills.reset_pause_abci.rounds import ResetAndPauseRound
from packages.valory.skills.twitter_scoring_abci.rounds import TwitterCollectionRound
from packages.valory.skills.twitter_scoring_abci.rounds import (
DBUpdateRound,
OpenAICallCheckRound,
TweetEvaluationRound,
TwitterDecisionMakingRound,
TwitterHashtagsCollectionRound,
TwitterMentionsCollectionRound,
)


HAPPY_PATH: Tuple[RoundChecks, ...] = (
RoundChecks(RegistrationStartupRound.auto_round_id(), n_periods=1),
RoundChecks(StreamReadRound.auto_round_id(), n_periods=3),
RoundChecks(GenericScoringRound.auto_round_id(), n_periods=2),
RoundChecks(TwitterCollectionRound.auto_round_id(), n_periods=2),
RoundChecks(TokenTrackRound.auto_round_id(), success_event="WRITE", n_periods=2),

RoundChecks(TwitterDecisionMakingRound.auto_round_id(), n_periods=2),
RoundChecks(OpenAICallCheckRound.auto_round_id(), n_periods=2),

RoundChecks(TwitterDecisionMakingRound.auto_round_id(), n_periods=2),
RoundChecks(TwitterMentionsCollectionRound.auto_round_id(), n_periods=2),

RoundChecks(TwitterDecisionMakingRound.auto_round_id(), n_periods=2),
RoundChecks(TwitterHashtagsCollectionRound.auto_round_id(), n_periods=2),

RoundChecks(TwitterDecisionMakingRound.auto_round_id(), n_periods=2),
RoundChecks(TweetEvaluationRound.auto_round_id(), n_periods=2),

RoundChecks(TwitterDecisionMakingRound.auto_round_id(), n_periods=2),
RoundChecks(DBUpdateRound.auto_round_id(), n_periods=2),

RoundChecks(TokenTrackRound.auto_round_id(), n_periods=2),
RoundChecks(RandomnessRound.auto_round_id(), n_periods=2),
RoundChecks(SelectKeeperRound.auto_round_id(), n_periods=2),
RoundChecks(StreamWriteRound.auto_round_id(), n_periods=2),
Expand All @@ -84,9 +106,8 @@
# strict check log messages of the happy path
STRICT_CHECK_STRINGS = (
"Got data from Ceramic API",
"Path switch:",
"Retrieved new mentions from Twitter",
"Retrieved recent registrations from Twitter",
"Retrieved new mentions",
"Retrieved new hashtags",
"Got token_id to address data up to block",
"Data verification successful",
"Period end",
Expand All @@ -107,12 +128,13 @@ class BaseTestEnd2EndImpactEvaluatorNormalExecution(BaseTestEnd2EndExecution):

agent_package = "valory/impact_evaluator:0.1.0"
skill_package = "valory/impact_evaluator_abci:0.1.0"
wait_to_finish = 180
wait_to_finish = 300
strict_check_strings = STRICT_CHECK_STRINGS
happy_path = HAPPY_PATH
package_registry_src_rel = PACKAGES_DIR

__param_args_prefix = f"vendor.valory.skills.{PublicId.from_str(skill_package).name}.models.params.args"
__param_args_prefix_openai_conn = f"vendor.valory.connections.{PublicId.from_str('valory/openai:0.1.0').name}.config"

extra_configs = [
{
Expand Down Expand Up @@ -147,6 +169,10 @@ class BaseTestEnd2EndImpactEvaluatorNormalExecution(BaseTestEnd2EndExecution):
"dotted_path": f"{__param_args_prefix}.centaurs_stream_id",
"value": "centaurs_stream_id",
},
{
"dotted_path": f"{__param_args_prefix_openai_conn}.openai_api_key",
"value": "dummy_api_key",
},
]

http_server_port_config = {
Expand Down
25 changes: 15 additions & 10 deletions packages/valory/connections/openai/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,17 +188,22 @@ def _get_response(self, prompt_template: str, prompt_values: Dict[str, str]):
formatted_prompt = prompt_template.format(**prompt_values) if prompt_values else prompt_template

# Call the OpenAI API
response = openai.Completion.create(
engine=self.openai_settings["engine"],
prompt=formatted_prompt,
max_tokens=self.openai_settings["max_tokens"],
n=1,
stop=None,
temperature=self.openai_settings["temperature"],
)
try:
response = openai.Completion.create(
engine=self.openai_settings["engine"],
prompt=formatted_prompt,
max_tokens=self.openai_settings["max_tokens"],
n=1,
stop=None,
temperature=self.openai_settings["temperature"],
)

# Extract the result from the API response
result = response.choices[0].text

# Extract the result from the API response
result = response.choices[0].text
except openai.error.AuthenticationError as e:
self.logger.error(e)
result = "OpenAI authentication error"

return result

Expand Down
2 changes: 1 addition & 1 deletion packages/valory/connections/openai/connection.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ license: Apache-2.0
aea_version: '>=1.0.0, <2.0.0'
fingerprint:
__init__.py: bafybeiagnziswj5tll4yzx63u4hvat4yieoaaqt5b67chvvqxg5th5mxz4
connection.py: bafybeihtj4rzhdc5f6yw6x6kx66h4ofjya5ojk4y3bjmcanofoxp6uohx4
connection.py: bafybeidyqthktvm6sicx6wndjxq7g73gogrjpq7hfv5l4eqfmut42gllvi
readme.md: bafybeibqbvpfn6i2w7vxk2m65gizd2hcofu7mdzp2yusx7uupelztme724
fingerprint_ignore_patterns: []
connections: []
Expand Down
30 changes: 13 additions & 17 deletions packages/valory/services/impact_evaluator/service.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ license: Apache-2.0
fingerprint:
README.md: bafybeign56hilwuoa6bgos3uqabss4gew4vadkik7vhj3ucpqw6nxtqtpe
fingerprint_ignore_patterns: []
agent: valory/impact_evaluator:0.1.0:bafybeianmf6g3sq3bqdmlmyjzfad6xoo6fotmhgyribrej632ye3ybpuhq
agent: valory/impact_evaluator:0.1.0:bafybeifcppzj5u5fgic5fjqliignzrc6dkejgjh7zfbgrumap42nx3lgqm
number_of_agents: 4
deployment:
agent:
Expand Down Expand Up @@ -103,11 +103,10 @@ extra:
twitter_api_base: ${TWITTER_API_BASE:str:https://api.twitter.com/}
twitter_api_bearer_token: ${TWITTER_API_BEARER_TOKEN:str:null}
twitter_mentions_endpoint: ${TWITTER_MENTIONS_ENDPOINT:str:2/users/1450081635559428107/mentions?}
twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id}}
twitter_max_pages: ${TWITTER_MAX_PAGES:int:1}
max_tweet_pulls_allowed: ${MAX_TWEET_PULLS_ALLOWED:int:80}
twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id&user.fields=name&expansions=author_id&max_results=10&since_id={since_id}}
twitter_max_pages: 10
twitter_search_endpoint: ${TWITTER_SEARCH_ENDPOINT:str:2/tweets/search/recent?}
twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query=%23olas&tweet.fields=author_id,created_at&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id}}
twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query=%23olas&tweet.fields=author_id,created_at&user.fields=name&expansions=author_id&max_results=10&since_id={since_id}}
tx_timeout: 10.0
use_termination: ${USE_TERMINATION:bool:false}
validate_timeout: 1205
Expand Down Expand Up @@ -170,11 +169,10 @@ extra:
twitter_api_base: ${TWITTER_API_BASE:str:https://api.twitter.com/}
twitter_api_bearer_token: ${TWITTER_API_BEARER_TOKEN:str:null}
twitter_mentions_endpoint: ${TWITTER_MENTIONS_ENDPOINT:str:2/users/1450081635559428107/mentions?}
twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id}}
twitter_max_pages: ${TWITTER_MAX_PAGES:int:1}
max_tweet_pulls_allowed: ${MAX_TWEET_PULLS_ALLOWED:int:80}
twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id&user.fields=name&expansions=author_id&max_results=10&since_id={since_id}}
twitter_max_pages: 10
twitter_search_endpoint: ${TWITTER_SEARCH_ENDPOINT:str:2/tweets/search/recent?}
twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query=%23olas&tweet.fields=author_id,created_at&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id}}
twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query=%23olas&tweet.fields=author_id,created_at&user.fields=name&expansions=author_id&max_results=10&since_id={since_id}}
tx_timeout: 10.0
use_termination: ${USE_TERMINATION:bool:false}
validate_timeout: 1205
Expand Down Expand Up @@ -237,11 +235,10 @@ extra:
twitter_api_base: ${TWITTER_API_BASE:str:https://api.twitter.com/}
twitter_api_bearer_token: ${TWITTER_API_BEARER_TOKEN:str:null}
twitter_mentions_endpoint: ${TWITTER_MENTIONS_ENDPOINT:str:2/users/1450081635559428107/mentions?}
twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id}}
twitter_max_pages: ${TWITTER_MAX_PAGES:int:1}
max_tweet_pulls_allowed: ${MAX_TWEET_PULLS_ALLOWED:int:80}
twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id&user.fields=name&expansions=author_id&max_results=10&since_id={since_id}}
twitter_max_pages: 10
twitter_search_endpoint: ${TWITTER_SEARCH_ENDPOINT:str:2/tweets/search/recent?}
twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query=%23olas&tweet.fields=author_id,created_at&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id}}
twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query=%23olas&tweet.fields=author_id,created_at&user.fields=name&expansions=author_id&max_results=10&since_id={since_id}}
tx_timeout: 10.0
use_termination: ${USE_TERMINATION:bool:false}
validate_timeout: 1205
Expand Down Expand Up @@ -306,11 +303,10 @@ extra:
twitter_api_base: ${TWITTER_API_BASE:str:https://api.twitter.com/}
twitter_api_bearer_token: ${TWITTER_API_BEARER_TOKEN:str:null}
twitter_mentions_endpoint: ${TWITTER_MENTIONS_ENDPOINT:str:2/users/1450081635559428107/mentions?}
twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id}}
twitter_max_pages: ${TWITTER_MAX_PAGES:int:1}
max_tweet_pulls_allowed: ${MAX_TWEET_PULLS_ALLOWED:int:80}
twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id&user.fields=name&expansions=author_id&max_results=10&since_id={since_id}}
twitter_max_pages: 10
twitter_search_endpoint: ${TWITTER_SEARCH_ENDPOINT:str:2/tweets/search/recent?}
twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query=%23olas&tweet.fields=author_id,created_at&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id}}
twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query=%23olas&tweet.fields=author_id,created_at&user.fields=name&expansions=author_id&max_results=10&since_id={since_id}}
tx_timeout: 10.0
use_termination: ${USE_TERMINATION:bool:false}
validate_timeout: 1205
Expand Down
3 changes: 1 addition & 2 deletions packages/valory/skills/impact_evaluator_abci/composition.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,8 @@
DecisionMakingAbci.FinishedDecisionMakingReadManualPointsRound: CeramicReadAbci.StreamReadRound,
DecisionMakingAbci.FinishedDecisionMakingScoreRound: GenericScoringAbci.GenericScoringRound,
DecisionMakingAbci.FinishedDecisionMakingDoneRound: ResetAndPauseAbci.ResetAndPauseRound,
GenericScoringAbci.FinishedGenericScoringRound: TwitterScoringAbci.OpenAICallCheckRound,
GenericScoringAbci.FinishedGenericScoringRound: TwitterScoringAbci.TwitterDecisionMakingRound,
TwitterScoringAbci.FinishedTwitterScoringRound: DynamicNFTAbci.TokenTrackRound,
TwitterScoringAbci.FinishedTwitterScoringWithAPIErrorRound: DynamicNFTAbci.TokenTrackRound,
DynamicNFTAbci.FinishedTokenTrackRound: DecisionMakingAbci.DecisionMakingRound,
LLMAbciApp.FinishedLLMRound: DecisionMakingAbci.DecisionMakingRound,
TwitterWriteAbciApp.FinishedTwitterWriteRound: DecisionMakingAbci.DecisionMakingRound,
Expand Down
Loading
Loading