Add feature: Users can load their own downloaded agents or workflows from the myai directory.
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user