From b14dc087b114281aef40b89aef4d6c3ace109b58 Mon Sep 17 00:00:00 2001 From: Rushil Patel Date: Tue, 19 Aug 2025 11:30:52 -0700 Subject: [PATCH 1/4] fix: safe import for create claude session method in startup hook --- .../cli/commands/claude/config/claude_session_hook.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/codegen/cli/commands/claude/config/claude_session_hook.py b/src/codegen/cli/commands/claude/config/claude_session_hook.py index 374ef0462..2f14f1542 100755 --- a/src/codegen/cli/commands/claude/config/claude_session_hook.py +++ b/src/codegen/cli/commands/claude/config/claude_session_hook.py @@ -11,7 +11,6 @@ import sys from pathlib import Path -from codegen.cli.commands.claude.claude_session_api import create_claude_session from codegen.cli.utils.org import resolve_org_id # Add the codegen CLI to the path so we can import from it @@ -19,6 +18,11 @@ codegen_cli_dir = script_dir.parent.parent.parent sys.path.insert(0, str(codegen_cli_dir)) +try: + from codegen.cli.commands.claude.claude_session_api import create_claude_session +except ImportError: + create_claude_session = None + def main(): """Main hook function called by Claude Code.""" From d79265c30d65a37604cda772b1c929f85be7e128 Mon Sep 17 00:00:00 2001 From: Rushil Patel Date: Tue, 19 Aug 2025 11:38:25 -0700 Subject: [PATCH 2/4] fix: safe import --- src/codegen/cli/commands/claude/config/claude_session_hook.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/codegen/cli/commands/claude/config/claude_session_hook.py b/src/codegen/cli/commands/claude/config/claude_session_hook.py index 2f14f1542..c5021de9e 100755 --- a/src/codegen/cli/commands/claude/config/claude_session_hook.py +++ b/src/codegen/cli/commands/claude/config/claude_session_hook.py @@ -11,8 +11,6 @@ import sys from pathlib import Path -from codegen.cli.utils.org import resolve_org_id - # Add the codegen CLI to the path so we can import from it script_dir = Path(__file__).parent codegen_cli_dir = script_dir.parent.parent.parent @@ -20,6 +18,7 @@ try: from codegen.cli.commands.claude.claude_session_api import create_claude_session + from codegen.cli.utils.org import resolve_org_id except ImportError: create_claude_session = None From 7ca521c39b174a281d9603f66e6c30e65e58eb73 Mon Sep 17 00:00:00 2001 From: Rushil Patel Date: Tue, 19 Aug 2025 11:55:13 -0700 Subject: [PATCH 3/4] fix: update path location for codegen pacakge --- .../cli/commands/claude/config/claude_session_active_hook.py | 2 +- src/codegen/cli/commands/claude/config/claude_session_hook.py | 2 +- .../cli/commands/claude/config/claude_session_stop_hook.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/codegen/cli/commands/claude/config/claude_session_active_hook.py b/src/codegen/cli/commands/claude/config/claude_session_active_hook.py index 7aea27662..f48767242 100644 --- a/src/codegen/cli/commands/claude/config/claude_session_active_hook.py +++ b/src/codegen/cli/commands/claude/config/claude_session_active_hook.py @@ -13,7 +13,7 @@ # Add the codegen CLI to the path so we can import from it script_dir = Path(__file__).parent -codegen_cli_dir = script_dir.parent.parent.parent +codegen_cli_dir = script_dir.parent.parent.parent.parent sys.path.insert(0, str(codegen_cli_dir)) try: diff --git a/src/codegen/cli/commands/claude/config/claude_session_hook.py b/src/codegen/cli/commands/claude/config/claude_session_hook.py index c5021de9e..e9a1f138d 100755 --- a/src/codegen/cli/commands/claude/config/claude_session_hook.py +++ b/src/codegen/cli/commands/claude/config/claude_session_hook.py @@ -13,7 +13,7 @@ # Add the codegen CLI to the path so we can import from it script_dir = Path(__file__).parent -codegen_cli_dir = script_dir.parent.parent.parent +codegen_cli_dir = script_dir.parent.parent.parent.parent sys.path.insert(0, str(codegen_cli_dir)) try: diff --git a/src/codegen/cli/commands/claude/config/claude_session_stop_hook.py b/src/codegen/cli/commands/claude/config/claude_session_stop_hook.py index 6e954d55c..48ea07ddf 100644 --- a/src/codegen/cli/commands/claude/config/claude_session_stop_hook.py +++ b/src/codegen/cli/commands/claude/config/claude_session_stop_hook.py @@ -13,7 +13,7 @@ # Add the codegen CLI to the path so we can import from it script_dir = Path(__file__).parent -codegen_cli_dir = script_dir.parent.parent.parent +codegen_cli_dir = script_dir.parent.parent.parent.parent sys.path.insert(0, str(codegen_cli_dir)) try: From 3b11b741c68b1b9a0d149f3c839e3e9e071a52c0 Mon Sep 17 00:00:00 2001 From: Rushil Patel Date: Tue, 19 Aug 2025 12:14:38 -0700 Subject: [PATCH 4/4] fix: create session before starting up claude code --- src/codegen/cli/commands/claude/main.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/codegen/cli/commands/claude/main.py b/src/codegen/cli/commands/claude/main.py index 693a6a712..ed3375963 100644 --- a/src/codegen/cli/commands/claude/main.py +++ b/src/codegen/cli/commands/claude/main.py @@ -14,7 +14,11 @@ from codegen.cli.api.endpoints import API_ENDPOINT from codegen.cli.auth.token_manager import get_current_token from codegen.cli.commands.claude.claude_log_watcher import ClaudeLogWatcherManager -from codegen.cli.commands.claude.claude_session_api import update_claude_session_status, generate_session_id +from codegen.cli.commands.claude.claude_session_api import ( + update_claude_session_status, + generate_session_id, + create_claude_session, +) from codegen.cli.commands.claude.config.mcp_setup import add_codegen_mcp_server, cleanup_codegen_mcp_server from codegen.cli.commands.claude.hooks import cleanup_claude_hook, ensure_claude_hook, get_codegen_url from codegen.cli.commands.claude.quiet_console import console @@ -86,6 +90,16 @@ def _run_claude_interactive(resolved_org_id: int, no_mcp: bool | None) -> None: os.environ["CODEGEN_CLAUDE_SESSION_ID"] = session_id os.environ["CODEGEN_CLAUDE_ORG_ID"] = str(resolved_org_id) + # Proactively create the backend session as a fallback in case hooks fail + try: + agent_run_id = create_claude_session(session_id, resolved_org_id) + if agent_run_id: + console.print("✅ Backend session created", style="green") + else: + console.print("⚠️ Could not create backend session at startup (will rely on hooks)", style="yellow") + except Exception as e: + console.print(f"⚠️ Session creation error at startup: {e}", style="yellow") + # Set up Claude hook for session tracking if not ensure_claude_hook(): console.print("⚠️ Failed to set up session tracking hook", style="yellow")