Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| """ | |
| Codette Web Interface | |
| Flask-based web server for the Codette AI framework | |
| """ | |
| from flask import Flask, render_template, request, jsonify, session | |
| from flask_cors import CORS | |
| import asyncio | |
| import json | |
| import logging | |
| from datetime import datetime | |
| from typing import Dict, Any | |
| # Import main application | |
| from main import get_app, CodetteWebApplication | |
| # Configure logging | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| # Create Flask app | |
| web_app = Flask(__name__) | |
| web_app.secret_key = "codette_secret_key_2025" | |
| CORS(web_app) | |
| # Global Codette application instance | |
| codette_app: CodetteWebApplication = None | |
| def initialize_codette(): | |
| """Initialize Codette systems before first request""" | |
| global codette_app | |
| try: | |
| codette_app = get_app() | |
| logger.info("Codette systems initialized for web interface") | |
| except Exception as e: | |
| logger.error(f"Failed to initialize Codette: {e}") | |
| def index(): | |
| """Main dashboard page""" | |
| return render_template('index.html') | |
| def api_query(): | |
| """API endpoint for processing queries""" | |
| try: | |
| data = request.get_json() | |
| query = data.get('query', '') | |
| user_id = data.get('user_id', 'web_user') | |
| if not query: | |
| return jsonify({"error": "Query is required"}), 400 | |
| # Process query asynchronously | |
| loop = asyncio.new_event_loop() | |
| asyncio.set_event_loop(loop) | |
| try: | |
| response = loop.run_until_complete( | |
| codette_app.process_query(query, user_id) | |
| ) | |
| return jsonify(response) | |
| finally: | |
| loop.close() | |
| except Exception as e: | |
| logger.error(f"Query processing error: {e}") | |
| return jsonify({"error": str(e)}), 500 | |
| def api_quantum_simulation(): | |
| """API endpoint for running quantum simulations""" | |
| try: | |
| data = request.get_json() | |
| cores = data.get('cores', 4) | |
| if cores > 16: # Safety limit | |
| cores = 16 | |
| results = codette_app.run_quantum_simulation(cores) | |
| return jsonify({ | |
| "status": "success", | |
| "cores_used": cores, | |
| "results": results, | |
| "timestamp": datetime.now().isoformat() | |
| }) | |
| except Exception as e: | |
| logger.error(f"Quantum simulation error: {e}") | |
| return jsonify({"error": str(e)}), 500 | |
| def api_health(): | |
| """Health check endpoint""" | |
| try: | |
| loop = asyncio.new_event_loop() | |
| asyncio.set_event_loop(loop) | |
| try: | |
| health = loop.run_until_complete( | |
| codette_app.health_monitor.check_status() | |
| ) | |
| return jsonify({ | |
| "status": "healthy", | |
| "metrics": health, | |
| "timestamp": datetime.now().isoformat() | |
| }) | |
| finally: | |
| loop.close() | |
| except Exception as e: | |
| logger.error(f"Health check error: {e}") | |
| return jsonify({"error": str(e)}), 500 | |
| def api_analyze_identity(): | |
| """API endpoint for fractal identity analysis""" | |
| try: | |
| data = request.get_json() | |
| # Default example data if not provided | |
| micro_generations = data.get('micro_generations', [ | |
| {"update": "Initial state", "timestamp": "2025-01-01T00:00:00Z"}, | |
| {"update": "State change 1", "timestamp": "2025-01-02T00:00:00Z"} | |
| ]) | |
| informational_states = data.get('informational_states', [ | |
| {"state_id": "state_1", "data": "Sample data 1"}, | |
| {"state_id": "state_2", "data": "Sample data 2"} | |
| ]) | |
| perspectives = data.get('perspectives', ["Quantum", "Classical", "Ethical"]) | |
| results = codette_app.analyze_identity_fractal( | |
| micro_generations, | |
| informational_states, | |
| perspectives | |
| ) | |
| return jsonify(results) | |
| except Exception as e: | |
| logger.error(f"Identity analysis error: {e}") | |
| return jsonify({"error": str(e)}), 500 | |
| def dashboard(): | |
| """Codette dashboard page""" | |
| return render_template('dashboard.html') | |
| def quantum(): | |
| """Quantum simulation interface""" | |
| return render_template('quantum.html') | |
| def cognitive(): | |
| """Cognitive processing interface""" | |
| return render_template('cognitive.html') | |
| if __name__ == "__main__": | |
| # Initialize Codette systems | |
| initialize_codette() | |
| # Run the web application | |
| web_app.run( | |
| host='0.0.0.0', | |
| port=5000, | |
| debug=True | |
| ) |