|
|
|
|
|
"""
|
|
|
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
|
|
|
) |