From 22820b85cd257f0fc8da83dfcc18a58029e1691f Mon Sep 17 00:00:00 2001 From: yumoqing Date: Fri, 8 May 2026 14:49:17 +0800 Subject: [PATCH] fix: DBPools(config.databases) instead of DBPools() for subprocess context --- harnessed_agent/core.py | 41 +++++++++++++++++++++++++-------- harnessed_agent/orchestrator.py | 25 ++++++++++++++++---- 2 files changed, 52 insertions(+), 14 deletions(-) diff --git a/harnessed_agent/core.py b/harnessed_agent/core.py index b8bbf93..30cdec1 100644 --- a/harnessed_agent/core.py +++ b/harnessed_agent/core.py @@ -38,6 +38,11 @@ except ImportError: def __init__(self): pass + def getConfig(): + class Config: + databases = None + return Config() + @dataclass class HermesConfig: """Configuration for Hermes Agent module""" @@ -356,7 +361,9 @@ class HermesAgent: selected_memories = [] try: - db = DBPools() + config = getConfig() + + db = DBPools(config.databases) async with db.sqlorContext('harnessed_agent') as sor: # High priority memories ns = {'user_id': user_id, 'priority__gte': self.config.high_priority_threshold, 'sort': 'priority desc,last_accessed desc'} @@ -409,7 +416,9 @@ class HermesAgent: async def _update_memory_access_stats(self, user_id: str, memory_id: str): """Update memory access statistics""" try: - db = DBPools() + config = getConfig() + + db = DBPools(config.databases) async with db.sqlorContext('harnessed_agent') as sor: memories = await sor.R('hermes_memory', {'id': memory_id, 'user_id': user_id}) if memories: @@ -431,7 +440,9 @@ class HermesAgent: return try: - db = DBPools() + config = getConfig() + + db = DBPools(config.databases) async with db.sqlorContext('harnessed_agent') as sor: # Calculate cutoff date cutoff_date = datetime.now().replace( @@ -536,7 +547,9 @@ class HermesAgent: user_id = self._get_current_user_id(context) if context else "anonymous" try: - db = DBPools() + config = getConfig() + + db = DBPools(config.databases) async with db.sqlorContext('harnessed_agent') as sor: if action == "add": memory_id = str(uuid.uuid4()) @@ -650,7 +663,9 @@ class HermesAgent: user_id = self._get_current_user_id(context) if context else "anonymous" try: - db = DBPools() + config = getConfig() + + db = DBPools(config.databases) async with db.sqlorContext('harnessed_agent') as sor: filters = {'user_id': user_id} if query: @@ -693,7 +708,9 @@ class HermesAgent: return {"success": False, "error": "Invalid skill name", "user_id": user_id} try: - db = DBPools() + config = getConfig() + + db = DBPools(config.databases) async with db.sqlorContext('harnessed_agent') as sor: if action == "view": filters = {'user_id': user_id, 'name': name} @@ -778,7 +795,9 @@ class HermesAgent: user_id = self._get_current_user_id(context) if context else "anonymous" try: - db = DBPools() + config = getConfig() + + db = DBPools(config.databases) async with db.sqlorContext('harnessed_agent') as sor: if action == "create": # Create new remote skill configuration @@ -1184,7 +1203,9 @@ class HermesAgent: """List workflows for current user""" user_id = self._get_current_user_id(context) if context else "anonymous" try: - db = DBPools() + config = getConfig() + + db = DBPools(config.databases) async with db.sqlorContext('harnessed_agent') as sor: workflows = await sor.R('hermes_workflows', {'sort': 'created_at desc', 'user_id': user_id}) return {"success": True, "workflows": workflows or [], "user_id": user_id} @@ -1197,7 +1218,9 @@ class HermesAgent: """List executions for current user (optionally filtered by workflow)""" user_id = self._get_current_user_id(context) if context else "anonymous" try: - db = DBPools() + config = getConfig() + + db = DBPools(config.databases) async with db.sqlorContext('harnessed_agent') as sor: filters = {'user_id': user_id} if workflow_id: diff --git a/harnessed_agent/orchestrator.py b/harnessed_agent/orchestrator.py index 6c1a835..4b0600c 100644 --- a/harnessed_agent/orchestrator.py +++ b/harnessed_agent/orchestrator.py @@ -30,6 +30,11 @@ except ImportError: def __init__(self): pass + def getConfig(): + class Config: + databases = None + return Config() + @dataclass class TaskDefinition: """Task definition structure for workflow execution""" @@ -81,7 +86,9 @@ class HermesOrchestrator: try: workflow_id = str(uuid.uuid4()) - db = DBPools() + config = getConfig() + + db = DBPools(config.databases) async with db.sqlorContext('harnessed_agent') as sor: data = { 'id': workflow_id, @@ -114,7 +121,9 @@ class HermesOrchestrator: try: # Verify workflow exists and belongs to user - db = DBPools() + config = getConfig() + + db = DBPools(config.databases) async with db.sqlorContext('harnessed_agent') as sor: workflows = await sor.R('hermes_workflows', { 'id': workflow_id, @@ -178,7 +187,9 @@ class HermesOrchestrator: async def _load_workflow_definition(self, workflow_id: str, user_id: str) -> Dict[str, Any]: """Load complete workflow definition with all tasks""" try: - db = DBPools() + config = getConfig() + + db = DBPools(config.databases) async with db.sqlorContext('harnessed_agent') as sor: # Load workflow workflows = await sor.R('hermes_workflows', { @@ -473,7 +484,9 @@ class HermesOrchestrator: task: TaskDefinition, context: Dict[str, Any]): """Record execution start in database""" try: - db = DBPools() + config = getConfig() + + db = DBPools(config.databases) async with db.sqlorContext('harnessed_agent') as sor: data = { 'id': execution_id, @@ -494,7 +507,9 @@ class HermesOrchestrator: result: Dict[str, Any], error: str, retry_count: int): """Record execution end in database""" try: - db = DBPools() + config = getConfig() + + db = DBPools(config.databases) async with db.sqlorContext('harnessed_agent') as sor: end_time = datetime.now() data = {