/ scripts / testing / quick_session_test.sh
quick_session_test.sh
 1  #!/bin/bash
 2  # Quick Session Consult Test - Fast verification across all agents
 3  # Tests basic functionality without full LLM queries
 4  
 5  set -euo pipefail
 6  
 7  GREEN='\033[0;32m'
 8  RED='\033[0;31m'
 9  BLUE='\033[0;34m'
10  CYAN='\033[0;36m'
11  NC='\033[0m'
12  
13  PROJECT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
14  
15  echo -e "${CYAN}════════════════════════════════════════════════${NC}"
16  echo -e "${CYAN}  Quick Session Consult Test${NC}"
17  echo -e "${CYAN}════════════════════════════════════════════════${NC}"
18  echo ""
19  
20  PASSED=0
21  FAILED=0
22  
23  # Test CEO in detail (full LLM test)
24  echo -e "${BLUE}[1/9] Testing CEO (full LLM test)...${NC}"
25  RESULT=$(cd "$PROJECT_ROOT/apps/ceo" && timeout 60 mix run -e '
26    alias EchoShared.LLM.DecisionHelper
27  
28    # Test 1: Create session
29    case DecisionHelper.consult_session(:ceo, nil, "What is my role?") do
30      {:ok, r1} ->
31        # Test 2: Continue
32        case DecisionHelper.consult_session(:ceo, r1.session_id, "What are my priorities?") do
33          {:ok, r2} ->
34            IO.puts("SUCCESS:session=#{r2.session_id},turns=#{r2.turn_count},tokens=#{r2.total_tokens}")
35            EchoShared.LLM.Session.end_session(r2.session_id)
36          _ -> IO.puts("FAIL:continuation")
37        end
38      _ -> IO.puts("FAIL:creation")
39    end
40  ' 2>&1 | grep -E "(SUCCESS|FAIL)")
41  
42  if echo "$RESULT" | grep -q "SUCCESS"; then
43      echo -e "  ${GREEN}✓ CEO passed${NC}"
44      SESSION_ID=$(echo "$RESULT" | grep -oP 'session=\K[^,]+')
45      TURNS=$(echo "$RESULT" | grep -oP 'turns=\K[^,]+')
46      TOKENS=$(echo "$RESULT" | grep -oP 'tokens=\K[^,]+')
47      echo -e "    Session: $SESSION_ID"
48      echo -e "    Turns: $TURNS, Tokens: $TOKENS"
49      PASSED=$((PASSED + 1))
50  else
51      echo -e "  ${RED}✗ CEO failed${NC}"
52      FAILED=$((FAILED + 1))
53  fi
54  echo ""
55  
56  # Test other agents (compilation + basic API test)
57  for agent in cto chro operations_head product_manager senior_architect uiux_engineer senior_developer test_lead; do
58      AGENT_NUM=$((PASSED + FAILED + 1))
59      echo -e "${BLUE}[$AGENT_NUM/9] Testing $agent (API test)...${NC}"
60  
61      # Just verify the tool exists and API works (no LLM call)
62      RESULT=$(cd "$PROJECT_ROOT/apps/$agent" && timeout 30 mix run -e "
63        alias EchoShared.LLM.{Config, Session}
64  
65        # Verify model configured
66        model = Config.get_model(:$agent)
67        IO.puts(\"MODEL:#{model}\")
68  
69        # Verify Session module accessible
70        sessions = Session.list_sessions()
71        IO.puts(\"SESSIONS:#{length(sessions)}\")
72  
73        IO.puts(\"SUCCESS\")
74      " 2>&1 | grep -E "(SUCCESS|MODEL|ERROR)")
75  
76      if echo "$RESULT" | grep -q "SUCCESS"; then
77          echo -e "  ${GREEN}✓ $agent passed${NC}"
78          MODEL=$(echo "$RESULT" | grep "MODEL:" | cut -d: -f2-)
79          echo -e "    Model: $MODEL"
80          PASSED=$((PASSED + 1))
81      else
82          echo -e "  ${RED}✗ $agent failed${NC}"
83          FAILED=$((FAILED + 1))
84      fi
85      echo ""
86  done
87  
88  # Summary
89  echo -e "${CYAN}════════════════════════════════════════════════${NC}"
90  echo -e "${BLUE}Results: ${GREEN}$PASSED passed${NC} | ${RED}$FAILED failed${NC}"
91  echo -e "${CYAN}════════════════════════════════════════════════${NC}"
92  
93  if [ $FAILED -eq 0 ]; then
94      echo -e "${GREEN}🎉 All tests passed!${NC}"
95      exit 0
96  else
97      echo -e "${RED}⚠️  Some tests failed.${NC}"
98      exit 1
99  fi