Spaces:
Build error
Build error
| """ | |
| Configuration CLI Tool for AI Agent | |
| Provides command-line interface for managing integration configuration, | |
| validation, and file operations. | |
| """ | |
| import click | |
| import json | |
| from pathlib import Path | |
| from typing import Dict, Any | |
| import logging | |
| try: | |
| from .config.integrations import integration_config | |
| except ImportError: | |
| try: | |
| from config.integrations import integration_config | |
| except ImportError: | |
| # Fallback for when running as standalone script | |
| integration_config = None | |
| logging.warning("Could not import integration_config - using defaults") | |
| def cli(): | |
| """Integration configuration management""" | |
| pass | |
| def validate(): | |
| """Validate current configuration""" | |
| is_valid, issues = integration_config.validate() | |
| if is_valid: | |
| click.echo("✅ Configuration is valid!") | |
| else: | |
| click.echo("❌ Configuration issues found:") | |
| for issue in issues: | |
| click.echo(f" - {issue}") | |
| def show(): | |
| """Show current configuration (without sensitive data)""" | |
| config_dict = integration_config.to_dict() | |
| click.echo("Current Configuration:") | |
| click.echo(json.dumps(config_dict, indent=2)) | |
| def save(file_path): | |
| """Save configuration to file""" | |
| if integration_config.save_to_file(file_path): | |
| click.echo(f"✅ Configuration saved to {file_path}") | |
| else: | |
| click.echo("❌ Failed to save configuration") | |
| def load(file_path): | |
| """Load configuration from file""" | |
| if integration_config.load_from_file(file_path): | |
| click.echo(f"✅ Configuration loaded from {file_path}") | |
| else: | |
| click.echo("❌ Failed to load configuration") | |
| def env(): | |
| """Show environment variables for configuration""" | |
| click.echo("Environment Variables for Configuration:") | |
| click.echo("=" * 50) | |
| env_vars = { | |
| "SUPABASE_URL": "Supabase project URL", | |
| "SUPABASE_KEY": "Supabase anon key", | |
| "SUPABASE_SERVICE_KEY": "Supabase service role key", | |
| "SUPABASE_DB_PASSWORD": "Database password", | |
| "OPENAI_API_KEY": "OpenAI API key", | |
| "ANTHROPIC_API_KEY": "Anthropic API key", | |
| "GROQ_API_KEY": "Groq API key", | |
| "LANGSMITH_TRACING": "Enable LangSmith tracing (true/false)", | |
| "LANGSMITH_PROJECT": "LangSmith project name", | |
| "LANGSMITH_API_KEY": "LangSmith API key", | |
| "CREWAI_ENABLED": "Enable CrewAI (true/false)", | |
| "CREWAI_MAX_AGENTS": "Maximum number of CrewAI agents", | |
| "LLAMAINDEX_STORAGE_PATH": "LlamaIndex storage path", | |
| "LLAMAINDEX_CHUNK_SIZE": "LlamaIndex chunk size", | |
| "GAIA_TOOLS_ENABLED": "Enable GAIA tools (true/false)", | |
| "GAIA_TIMEOUT": "GAIA timeout in seconds" | |
| } | |
| for var, description in env_vars.items(): | |
| value = "***" if "KEY" in var or "PASSWORD" in var else "not set" | |
| click.echo(f"{var}: {description}") | |
| click.echo(f" Current value: {value}") | |
| click.echo() | |
| def update(section, key, value): | |
| """Update configuration values""" | |
| if not all([section, key, value]): | |
| click.echo("❌ Please provide section, key, and value") | |
| return | |
| updates = {section: {key: value}} | |
| if integration_config.update_config(updates): | |
| click.echo(f"✅ Updated {section}.{key} = {value}") | |
| else: | |
| click.echo("❌ Failed to update configuration") | |
| def test(): | |
| """Test all integrations""" | |
| click.echo("Testing integrations...") | |
| # Test Supabase | |
| if integration_config.supabase.is_configured(): | |
| click.echo("✅ Supabase configured") | |
| else: | |
| click.echo("⚠️ Supabase not configured") | |
| # Test API keys | |
| api_keys = { | |
| "OpenAI": "OPENAI_API_KEY", | |
| "Anthropic": "ANTHROPIC_API_KEY", | |
| "Groq": "GROQ_API_KEY" | |
| } | |
| for name, env_var in api_keys.items(): | |
| if integration_config._load_from_environment.__globals__['os'].getenv(env_var): | |
| click.echo(f"✅ {name} API key available") | |
| else: | |
| click.echo(f"⚠️ {name} API key not available") | |
| # Validate config | |
| is_valid, issues = integration_config.validate() | |
| if is_valid: | |
| click.echo("✅ Configuration validation passed") | |
| else: | |
| click.echo("❌ Configuration validation failed:") | |
| for issue in issues: | |
| click.echo(f" - {issue}") | |
| if __name__ == "__main__": | |
| cli() |