From 9d21d5d2e5af3aab57b4c04e4213e72aaef7f4af Mon Sep 17 00:00:00 2001 From: daniel Date: Fri, 8 May 2026 11:32:21 -0500 Subject: [PATCH] =?UTF-8?q?Fix:=20import=20main=20in=20=5Factor=5Fid()=20c?= =?UTF-8?q?auses=20app.run()=20hang=20=E2=80=94=20use=20module-level=20var?= =?UTF-8?q?=20instead?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- agentclaw/app/agent_claw_main/main.py | 5 +++++ agentclaw/app/agent_claw_main/tools/google_workspace.py | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/agentclaw/app/agent_claw_main/main.py b/agentclaw/app/agent_claw_main/main.py index d80026e..2320094 100644 --- a/agentclaw/app/agent_claw_main/main.py +++ b/agentclaw/app/agent_claw_main/main.py @@ -17,6 +17,7 @@ from tools.scheduler import schedule_reminder, list_reminders, cancel_reminder import tools.scheduler as _scheduler_module from tools.home_assistant import home_assistant, set_ha_config from tools.google_workspace import list_calendars, get_calendar_events, list_gmail_messages, get_gmail_message +import tools.google_workspace as _gws import httpx import botocore.auth import botocore.awsrequest @@ -190,6 +191,10 @@ async def main(payload: dict, context): adapter_config = payload.get('channel_adapter', {}) channel_type = adapter_config.get('type', 'telegram') + actor_id_early = payload.get('actor_id', adapter_config.get('target_id', 'default')) + _current_actor_id = actor_id_early + _gws._current_actor_id = actor_id_early # sync to google_workspace module + if channel_type == 'telegram': adapter = TelegramAdapter( chat_id=adapter_config.get('target_id', ''), diff --git a/agentclaw/app/agent_claw_main/tools/google_workspace.py b/agentclaw/app/agent_claw_main/tools/google_workspace.py index ab261bb..d66d806 100644 --- a/agentclaw/app/agent_claw_main/tools/google_workspace.py +++ b/agentclaw/app/agent_claw_main/tools/google_workspace.py @@ -48,8 +48,13 @@ def _get_creds(actor_id: str) -> Credentials: def _actor_id(): - import main as _main - return _main._current_actor_id + # Read from module-level var set by main.py per invocation + # DO NOT use 'import main as _main' — it re-runs main.py including app.run() which hangs + return _current_actor_id + + +# Set per-invocation by main.py before any tool call +_current_actor_id: str = '' def _svc(api: str, version: str, creds: Credentials):