|
|
| """
|
| 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
|
|
|
|
|
| from main import get_app, CodetteWebApplication
|
|
|
|
|
| logging.basicConfig(level=logging.INFO)
|
| logger = logging.getLogger(__name__)
|
|
|
|
|
| web_app = Flask(__name__)
|
| web_app.secret_key = "codette_secret_key_2025"
|
| CORS(web_app)
|
|
|
|
|
| codette_app: CodetteWebApplication = None
|
|
|
| @web_app.before_first_request
|
| 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}")
|
|
|
| @web_app.route('/')
|
| def index():
|
| """Main dashboard page"""
|
| return render_template('index.html')
|
|
|
| @web_app.route('/api/query', methods=['POST'])
|
| 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
|
|
|
|
|
| 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
|
|
|
| @web_app.route('/api/quantum-simulation', methods=['POST'])
|
| def api_quantum_simulation():
|
| """API endpoint for running quantum simulations"""
|
| try:
|
| data = request.get_json()
|
| cores = data.get('cores', 4)
|
|
|
| if cores > 16:
|
| 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
|
|
|
| @web_app.route('/api/health', methods=['GET'])
|
| 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
|
|
|
| @web_app.route('/api/analyze-identity', methods=['POST'])
|
| def api_analyze_identity():
|
| """API endpoint for fractal identity analysis"""
|
| try:
|
| data = request.get_json()
|
|
|
|
|
| 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
|
|
|
| @web_app.route('/dashboard')
|
| def dashboard():
|
| """Codette dashboard page"""
|
| return render_template('dashboard.html')
|
|
|
| @web_app.route('/quantum')
|
| def quantum():
|
| """Quantum simulation interface"""
|
| return render_template('quantum.html')
|
|
|
| @web_app.route('/cognitive')
|
| def cognitive():
|
| """Cognitive processing interface"""
|
| return render_template('cognitive.html')
|
|
|
| if __name__ == "__main__":
|
|
|
| initialize_codette()
|
|
|
|
|
| web_app.run(
|
| host='0.0.0.0',
|
| port=5000,
|
| debug=True
|
| ) |