diff --git a/plugins/acp/acp_plugin_gamesdk/acp_plugin.py b/plugins/acp/acp_plugin_gamesdk/acp_plugin.py index 1540d1e..709967a 100644 --- a/plugins/acp/acp_plugin_gamesdk/acp_plugin.py +++ b/plugins/acp/acp_plugin_gamesdk/acp_plugin.py @@ -10,6 +10,7 @@ from game_sdk.game.custom_types import Argument, Function, FunctionResultStatus from twitter_plugin_gamesdk.twitter_plugin import TwitterPlugin from virtuals_acp import IDeliverable +from virtuals_acp.models import ACPGraduationStatus, ACPOnlineStatus from acp_plugin_gamesdk.interface import AcpJobPhasesDesc, IInventory, ACP_JOB_PHASE_MAP from virtuals_acp.client import VirtualsACP @@ -22,7 +23,8 @@ class AcpPluginOptions: twitter_plugin: TwitterPlugin | None = None cluster: Optional[str] = None evaluator_cluster: Optional[str] = None - graduated: Optional[bool] = True + graduation_status: Optional[ACPGraduationStatus] = None + online_status: Optional[ACPOnlineStatus] = None job_expiry_duration_mins: Optional[int] = None keep_completed_jobs: Optional[int] = None keep_cancelled_jobs: Optional[int] = None @@ -51,7 +53,8 @@ def __init__(self, options: AcpPluginOptions): """ self.cluster = options.cluster self.evaluator_cluster = options.evaluator_cluster - self.graduated = options.graduated + self.graduation_status = options.graduation_status + self.online_status = options.online_status self.twitter_plugin = None if options.twitter_plugin is not None: self.twitter_plugin = options.twitter_plugin @@ -220,7 +223,7 @@ def _search_agents_executable(self, reasoning: str, keyword: str) -> Tuple[Funct if not reasoning: return FunctionResultStatus.FAILED, "Reasoning for the search must be provided. This helps track your decision-making process for future reference.", {} - agents = self.acp_client.browse_agents(keyword, self.cluster, graduated=self.graduated) + agents = self.acp_client.browse_agents(keyword, self.cluster, graduation_status=self.graduation_status, online_status=self.online_status) if not agents: return FunctionResultStatus.FAILED, "No other trading agents found in the system. Please try again later when more agents are available.", {} @@ -355,7 +358,7 @@ def _initiate_job_executable(self, seller_wallet_address: str, price: str, reaso evaluator_address = self.acp_client.agent_address if require_evaluation: - validators = self.acp_client.browse_agents(evaluator_keyword, self.evaluator_cluster, graduated=self.graduated) + validators = self.acp_client.browse_agents(evaluator_keyword, self.evaluator_cluster, graduation_status=self.graduation_status, online_status=self.online_status) if len(validators) == 0: return FunctionResultStatus.FAILED, "No evaluator found - try a different keyword", {} diff --git a/plugins/acp/examples/agentic/buyer.py b/plugins/acp/examples/agentic/buyer.py index d45afb4..b19d4c2 100644 --- a/plugins/acp/examples/agentic/buyer.py +++ b/plugins/acp/examples/agentic/buyer.py @@ -10,6 +10,7 @@ from acp_plugin_gamesdk.acp_plugin import AcpPlugin, AcpPluginOptions from virtuals_acp.client import VirtualsACP from acp_plugin_gamesdk.env import PluginEnvSettings +from virtuals_acp.models import ACPGraduationStatus, ACPOnlineStatus from virtuals_acp import ACPJob, ACPJobPhase from acp_plugin_gamesdk.interface import AcpState, AcpJobPhasesDesc from dotenv import load_dotenv @@ -68,8 +69,9 @@ def buyer(): entity_id=env.BUYER_ENTITY_ID ), twitter_plugin=TwitterPlugin(options), - cluster="", # example cluster - graduated=True, + cluster="", # example cluster + graduation_status=ACPGraduationStatus.ALL, # Options: GRADUATED / NOT_GRADUATED / ALL + online_status=ACPOnlineStatus.ALL # Options: ONLINE / OFFLINE / ALL ) ) diff --git a/plugins/acp/examples/reactive/buyer.py b/plugins/acp/examples/reactive/buyer.py index 732b9bb..de2f5c9 100644 --- a/plugins/acp/examples/reactive/buyer.py +++ b/plugins/acp/examples/reactive/buyer.py @@ -9,6 +9,7 @@ from acp_plugin_gamesdk.env import PluginEnvSettings from virtuals_acp.client import VirtualsACP from virtuals_acp import ACPJob, ACPJobPhase +from virtuals_acp.models import ACPGraduationStatus, ACPOnlineStatus from rich import print, box from rich.panel import Panel from dotenv import load_dotenv @@ -154,8 +155,9 @@ def process_job(job: ACPJob): entity_id=env.BUYER_ENTITY_ID ), twitter_plugin=TwitterPlugin(options), - cluster="", #example cluster - graduated=True, + cluster="", #example cluster + graduation_status=ACPGraduationStatus.ALL, # Options: GRADUATED / NOT_GRADUATED / ALL + online_status=ACPOnlineStatus.ALL # Options: ONLINE / OFFLINE / ALL ) ) @@ -210,7 +212,7 @@ def post_tweet(content: str, reasoning: str) -> Tuple[FunctionResultStatus, str, agent = Agent( api_key=env.GAME_API_KEY, name="Virtuals", - agent_goal="Finding the best meme to do tweet posting", + agent_goal="Finding agent to do tweet posting", agent_description=f""" Agent that gain market traction by posting meme. Your interest are in cats and AI. You can head to acp to look for agents to help you generating meme. diff --git a/plugins/acp/pyproject.toml b/plugins/acp/pyproject.toml index bd6f99a..3b43a5f 100644 --- a/plugins/acp/pyproject.toml +++ b/plugins/acp/pyproject.toml @@ -12,7 +12,7 @@ game-sdk = ">=0.1.5" python-dotenv = "^1.1.0" dacite = "^1.9.2" rich = ">=13.9.4,<15.0.0" -virtuals-acp = "^0.1.21" +virtuals-acp = "^0.1.22" [build-system] requires = ["poetry-core"]