/ debug_session.exs
debug_session.exs
 1  #!/usr/bin/env elixir
 2  
 3  # Quick debug script to test session persistence
 4  Application.ensure_all_started(:echo_shared)
 5  
 6  alias EchoShared.LLM.{Session, DecisionHelper}
 7  
 8  IO.puts("=== Session Debug Test ===\n")
 9  
10  # Test 1: Create session directly via Session module
11  IO.puts("Test 1: Direct Session.query with nil session_id")
12  result1 = Session.query(nil, "What is my role?", agent_role: :ceo)
13  
14  case result1 do
15    {:ok, r1} ->
16      IO.puts("✓ Session created: #{r1.session_id}")
17      IO.puts("  Turn count: #{r1.turn_count}")
18      IO.puts("  Tokens: #{r1.total_tokens}")
19  
20      # Immediately check if session exists in ETS
21      IO.puts("\nChecking ETS immediately after creation...")
22      case Session.get_session(r1.session_id) do
23        nil ->
24          IO.puts("✗ ERROR: Session not found in ETS!")
25  
26        session ->
27          IO.puts("✓ Session found in ETS")
28          IO.puts("  Agent: #{session.agent_role}")
29          IO.puts("  Turn count: #{session.turn_count}")
30      end
31  
32      # Test 2: Continue conversation
33      IO.puts("\nTest 2: Continue conversation with session_id")
34      result2 = Session.query(r1.session_id, "What are my priorities?", [])
35  
36      case result2 do
37        {:ok, r2} ->
38          IO.puts("✓ Continuation succeeded")
39          IO.puts("  Session: #{r2.session_id}")
40          IO.puts("  Turn count: #{r2.turn_count}")
41          IO.puts("  Tokens: #{r2.total_tokens}")
42  
43        {:error, :session_not_found} ->
44          IO.puts("✗ ERROR: Session not found!")
45          IO.puts("  Looking for: #{r1.session_id}")
46  
47          # Debug: List all sessions
48          IO.puts("\n  All sessions in ETS:")
49          sessions = Session.list_sessions()
50          if Enum.empty?(sessions) do
51            IO.puts("  (none)")
52          else
53            Enum.each(sessions, fn s ->
54              IO.puts("    - #{s.session_id}")
55            end)
56          end
57  
58        {:error, reason} ->
59          IO.puts("✗ ERROR: #{inspect(reason)}")
60      end
61  
62    {:error, reason} ->
63      IO.puts("✗ Failed to create session: #{inspect(reason)}")
64  end
65  
66  IO.puts("\n=== End Debug Test ===")