Aethero_github / memory_viewer.py
xvadur's picture
Migrated Aethero Orchestra to unified repo
2913244
import os
import gradio as gr
def get_agents():
files = os.listdir("memory")
agents = set()
for f in files:
if f.endswith(".txt") and "_output_" in f:
agents.add(f.split("_output_")[0])
return sorted(list(agents))
def get_logs_for_agent(agent):
files = os.listdir("memory")
logs = [f for f in files if f.startswith(agent.lower()) and f.endswith(".txt")]
logs.sort(reverse=True)
return logs
def read_log(filename):
with open(os.path.join("memory", filename), "r") as f:
return f.read()
def export_log(filename, export_type):
content = read_log(filename)
export_dir = "memory"
base = filename.rsplit(".txt", 1)[0]
if export_type == "Markdown":
out_path = os.path.join(export_dir, base + ".md")
with open(out_path, "w") as f:
f.write(f"# Log: {filename}\n\n" + content)
return f"Exportované do {out_path}"
elif export_type == "JSON":
import json
out_path = os.path.join(export_dir, base + ".json")
with open(out_path, "w") as f:
json.dump({"log": content}, f, ensure_ascii=False, indent=2)
return f"Exportované do {out_path}"
return "Neznámy formát"
def ui():
agents = get_agents()
with gr.Blocks() as demo:
gr.Markdown("# Aethero Memory Viewer")
agent = gr.Dropdown(choices=agents, label="Vyber agenta")
log_file = gr.Dropdown(choices=[], label="Vyber log")
log_content = gr.Textbox(label="Obsah logu", lines=20)
export_type = gr.Radio(["Markdown", "JSON"], label="Exportovať ako")
export_btn = gr.Button("Exportovať log")
export_result = gr.Textbox(label="Export stav")
def update_logs(agent):
logs = get_logs_for_agent(agent)
return gr.Dropdown.update(choices=logs, value=logs[0] if logs else None)
def show_log(log_file):
if log_file:
return read_log(log_file)
return ""
agent.change(update_logs, agent, log_file)
log_file.change(show_log, log_file, log_content)
export_btn.click(lambda f, t: export_log(f, t), [log_file, export_type], export_result)
return demo
if __name__ == "__main__":
ui().launch()