Add feature: Users can load their own downloaded agents or workflows from the myai directory.

This commit is contained in:
Liu Zhicong
2023-09-20 22:47:52 -07:00
parent bde91771a8
commit 080a8918fe
7 changed files with 45 additions and 15 deletions
+11 -2
View File
@@ -8,6 +8,10 @@ from package_manager import PackageEnv,PackageEnvManager,PackageMediaInfo,Packag
logger = logging.getLogger(__name__)
default_agent_cfg = """
main = "./"
cache = "./.agents"
"""
class AgentManager:
_instance = None
@@ -24,12 +28,17 @@ class AgentManager:
self.db_path : str = None
self.loaded_agent_instance : Dict[str,AIAgent] = None
def initial(self) -> None:
async def initial(self) -> None:
system_app_dir = AIStorage.get_instance().get_system_app_dir()
user_data_dir = AIStorage.get_instance().get_myai_dir()
self.agent_templete_env : PackageEnv = PackageEnvManager().get_env(f"{system_app_dir}/templates/templetes.cfg")
self.agent_env : PackageEnv = PackageEnvManager().get_env(f"{system_app_dir}/agents/agents.cfg")
sys_agent_env : PackageEnv = PackageEnvManager().get_env(f"{system_app_dir}/agents/agents.cfg")
user_agent_config_path = f"{user_data_dir}/agents/agents.cfg"
await AIStorage.get_instance().try_create_file_with_default_value(user_agent_config_path,default_agent_cfg)
self.agent_env : PackageEnv = PackageEnvManager().get_env(user_agent_config_path)
self.agent_env.parent_envs.append(sys_agent_env)
self.db_path = f"{user_data_dir}/messages.db"
self.loaded_agent_instance = {}
if self.agent_templete_env is None:
+2 -2
View File
@@ -16,7 +16,7 @@ class PackageEnv:
self.locked_index : str = "./pkg.lock"
self.is_strict : bool = True
self.parent_envs : list[PackageEnv] = None
self.parent_envs : list[PackageEnv] = []
self.index_dbs = None
self.env_dir = None
@@ -56,7 +56,7 @@ class PackageEnv:
if media_info is None:
if search_parent is True and self.parent_envs is not None:
for parent_env in self.parent_envs:
media_info = parent_env.load(pkg_id,cid,False)
media_info = parent_env.load(pkg_id,False)
if media_info is not None:
return media_info
@@ -7,6 +7,11 @@ from package_manager import PackageEnv,PackageEnvManager,PackageMediaInfo,Packag
from agent_manager import AgentManager
logger = logging.getLogger(__name__)
default_workflow_cfg = """
main = "./"
cache = "./.agents"
"""
class WorkflowManager:
_instance = None
@@ -17,12 +22,18 @@ class WorkflowManager:
return cls._instance
def initial(self) -> None:
async def initial(self) -> None:
self.loaded_workflow = {}
system_app_dir = AIStorage.get_instance().get_system_app_dir()
user_data_dir = AIStorage.get_instance().get_myai_dir()
self.workflow_env = PackageEnvManager().get_env(f"{system_app_dir}/workflows/workflows.cfg")
sys_workflow_env = PackageEnvManager().get_env(f"{system_app_dir}/workflows/workflows.cfg")
user_workflow_config_path = f"{user_data_dir}/workflows/workflows.cfg"
await AIStorage.get_instance().try_create_file_with_default_value(user_workflow_config_path,default_workflow_cfg)
self.workflow_env = PackageEnvManager().get_env(f"{user_data_dir}/workflows/workflows.cfg")
self.workflow_env.parent_envs.append(sys_workflow_env)
self.db_file = os.path.abspath(f"{user_data_dir}/messages.db")
if self.workflow_env is None:
raise Exception("WorkflowManager initial failed")