Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .github/workflows/test_chat_sdk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,32 @@ jobs:
Write-Host "Found gaia at: $($gaiaPath.Source)"
python -m pip check

- name: Run Chat SDK Unit Tests (no server required)
shell: cmd
run: |
REM Activate conda environment
call "%GITHUB_WORKSPACE%\miniforge3\Scripts\activate.bat" gaiaenv

echo ================================================================
echo CHAT SDK UNIT TESTS (NO SERVER REQUIRED)
echo ================================================================
echo Running unit tests before starting Lemonade server...
echo.

set PYTHONIOENCODING=utf-8
python tests\unit\test_chat_sdk_unit.py
set unit_exit=%ERRORLEVEL%

echo.
echo ----------------------------------------------------------------
if %unit_exit% equ 0 (
echo [SUCCESS] Chat SDK unit tests passed
) else (
echo [FAILURE] Chat SDK unit tests failed with exit code %unit_exit%
exit /b 1
)
echo ----------------------------------------------------------------

- name: Start Lemonade Server for Integration Tests
timeout-minutes: 15
env:
Expand Down
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@
],
"rag": [
"pypdf",
"pymupdf",
"sentence-transformers",
"faiss-cpu>=1.7.0",
],
Expand Down
2 changes: 1 addition & 1 deletion src/gaia/agents/base/console.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
except ImportError:
RICH_AVAILABLE = False
print(
"Rich library not found. Install with 'pip install rich' for syntax highlighting."
"Rich library not found. Install with 'uv pip install rich' for syntax highlighting."
)

# Display configuration constants
Expand Down
6 changes: 3 additions & 3 deletions src/gaia/agents/chat/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ def __init__(self, config: Optional[ChatAgentConfig] = None):
elif self.rag_documents and not self.rag:
logger.warning(
"RAG dependencies not installed. Cannot index documents. "
"Install with: pip install gaia[rag]"
"Install with: uv pip install -e .[rag]"
)

# Start watching directories
Expand Down Expand Up @@ -847,9 +847,9 @@ def _watch_directory(self, directory: str) -> None:
"\n❌ Error: Missing required package 'watchdog'\n\n"
"File watching requires the watchdog package.\n"
"Please install the required dependencies:\n"
" pip install -e .[dev]\n\n"
" uv pip install -e .[dev]\n\n"
"Or install watchdog directly:\n"
" pip install watchdog>=2.1.0\n"
" uv pip install watchdog>=2.1.0\n"
)
logger.error(error_msg)
raise ImportError(error_msg)
Expand Down
14 changes: 14 additions & 0 deletions src/gaia/agents/chat/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,13 @@ def interactive_mode(agent: ChatAgent):
print(" /index /path/to/documents/")
continue

# Check if RAG is available
if agent.rag is None:
print("\n❌ RAG (document indexing) is not available.")
print(" Missing dependencies: pypdf, sentence-transformers, faiss-cpu")
print("\n Install with: uv pip install -e .[rag]")
continue

# Check if it's a directory or file
path = Path(arg)

Expand Down Expand Up @@ -999,6 +1006,13 @@ def main():
print(f"❌ File not found: {index_path}")
return 1

# Check if RAG is available
if agent.rag is None:
print("❌ RAG (document indexing) is not available.")
print(" Missing dependencies: pypdf, sentence-transformers, faiss-cpu")
print("\n Install with: uv pip install -e .[rag]")
return 1

print(f"📄 Indexing: {Path(index_path).name}")
print("=" * 60)

Expand Down
2 changes: 1 addition & 1 deletion src/gaia/agents/code/tools/code_formatting.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ def format_with_black(
except ImportError:
return {
"status": "error",
"error": "black is not installed. Install with: pip install black",
"error": "black is not installed. Install with: uv pip install black",
}
except Exception as e:
return {"status": "error", "error": str(e)}
Expand Down
2 changes: 1 addition & 1 deletion src/gaia/agents/code/tools/code_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -568,7 +568,7 @@ def analyze_with_pylint(
except ImportError:
return {
"status": "error",
"error": "pylint is not installed. Install with: pip install pylint",
"error": "pylint is not installed. Install with: uv pip install pylint",
}
except Exception as e:
return {"status": "error", "error": str(e)}
Expand Down
2 changes: 1 addition & 1 deletion src/gaia/apps/summarize/pdf_formatter.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class PDFFormatter:
def __init__(self):
if not HAS_REPORTLAB:
raise ImportError(
"PDF output requires reportlab. Install with: pip install reportlab"
"PDF output requires reportlab. Install with: uv pip install reportlab"
)

self.styles = getSampleStyleSheet()
Expand Down
4 changes: 2 additions & 2 deletions src/gaia/audio/audio_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ async def start_voice_chat(self, message_processor_callback):

except ImportError:
self.log.error(
"WhisperAsr not found. Please install voice support with: pip install .[talk]"
"WhisperAsr not found. Please install voice support with: uv pip install -e .[talk]"
)
raise
except Exception as e:
Expand Down Expand Up @@ -306,7 +306,7 @@ def initialize_tts(self):
self.log.debug("TTS initialized successfully")
except Exception as e:
raise RuntimeError(
f"Failed to initialize TTS:\n{e}\nInstall talk dependencies with: pip install .[talk]\nYou can also use --no-tts option to disable TTS"
f"Failed to initialize TTS:\n{e}\nInstall talk dependencies with: uv pip install -e .[talk]\nYou can also use --no-tts option to disable TTS"
)

async def speak_text(self, text: str) -> None:
Expand Down
4 changes: 2 additions & 2 deletions src/gaia/audio/kokoro_tts.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ def __init__(self):
error_msg = (
f"\n❌ Error: Missing required talk dependencies: {', '.join(missing)}\n\n"
f"Please install the talk dependencies:\n"
f" pip install -e .[talk]\n\n"
f" uv pip install -e .[talk]\n\n"
f"Or install packages directly:\n"
f" pip install {' '.join(missing)}\n"
f" uv pip install {' '.join(missing)}\n"
)
raise ImportError(error_msg)

Expand Down
4 changes: 2 additions & 2 deletions src/gaia/audio/whisper_asr.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ def __init__(
error_msg = (
f"\n❌ Error: Missing required talk dependencies: {', '.join(missing)}\n\n"
f"Please install the talk dependencies:\n"
f" pip install -e .[talk]\n\n"
f" uv pip install -e .[talk]\n\n"
f"Or install packages directly:\n"
f" pip install {' '.join(missing)}\n"
f" uv pip install {' '.join(missing)}\n"
)
raise ImportError(error_msg)

Expand Down
Loading
Loading