ams-core-api / engines /code_engine.py
Amssou's picture
Update engines/code_engine.py
d89bf53 verified
Raw
History Blame Contribute Delete
4.02 kB
import logging
import os
logger = logging.getLogger("ONYX")
class CodeEngine:
def __init__(self):
self.supported_languages = [
"python",
"kotlin",
"javascript"
]
# dossier où ONYX génère les projets
self.projects_folder = "generated_apps"
# =========================
# GENERATE PROJECT
# =========================
def generate_project(self, request):
request = request.lower()
# créer le dossier principal si nécessaire
os.makedirs(self.projects_folder, exist_ok=True)
project_name = "generated_project"
if "api" in request or "fastapi" in request:
project_name = "api_project"
if "android" in request:
project_name = "android_project"
project_path = os.path.join(self.projects_folder, project_name)
os.makedirs(project_path, exist_ok=True)
code_data = self.generate_code(request)
file_path = os.path.join(project_path, "main.py")
with open(file_path, "w", encoding="utf-8") as f:
f.write(code_data["code"])
# requirements pour API
if code_data["type"] == "api":
req_path = os.path.join(project_path, "requirements.txt")
with open(req_path, "w", encoding="utf-8") as f:
f.write("fastapi\nuvicorn\n")
logger.info(f"Project generated: {project_path}")
return {
"path": project_path,
"type": code_data["type"],
"language": code_data["language"]
}
# =========================
# GENERATE CODE
# =========================
def generate_code(self, request):
request = request.lower()
# =========================
# FASTAPI TEMPLATE
# =========================
if "api" in request or "fastapi" in request:
code = """
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"message": "API running"}
"""
return {
"type": "api",
"language": "python",
"code": code
}
# =========================
# PYTHON SCRIPT TEMPLATE
# =========================
if "python" in request or "script" in request:
code = """
def main():
print("Application démarrée")
if __name__ == "__main__":
main()
"""
return {
"type": "script",
"language": "python",
"code": code
}
# =========================
# ANDROID TEMPLATE
# =========================
if "android" in request:
code = """
package com.example.app
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
println("Application Android démarrée")
}
}
"""
return {
"type": "android",
"language": "kotlin",
"code": code
}
# =========================
# DEFAULT
# =========================
code = """
# Code généré par ONYX
print("Hello from ONYX")
"""
return {
"type": "generic",
"language": "python",
"code": code
}
# =========================
# ANALYZE CODE
# =========================
def analyze_code(self, code):
lines = code.split("\n")
analysis = {
"lines": len(lines),
"contains_functions": "def " in code,
"contains_classes": "class " in code
}
return analysis
# =========================
# IMPROVE CODE
# =========================
def improve_code(self, code):
improved = code + "\n# Improved by ONYX"
return improved