Keeby-smilyai commited on
Commit
7a9f16f
Β·
verified Β·
1 Parent(s): a1e146d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +53 -13
app.py CHANGED
@@ -6,15 +6,12 @@ from backend import (
6
  create_project,
7
  get_user_projects,
8
  search_projects,
9
- queue_job
 
10
  )
11
- import os
12
 
13
- # ------------------------------ STATE ------------------------------
14
  user_state = {"user_id": None, "username": ""}
15
 
16
- # ------------------------------ PAGES ------------------------------
17
-
18
  def page_login(username, password):
19
  user = get_user_by_username(username)
20
  if user and verify_password(password, user[1]):
@@ -22,7 +19,6 @@ def page_login(username, password):
22
  user_state["username"] = username
23
  return gr.update(visible=False), gr.update(visible=True), f"Welcome back, {username}! πŸ‘¨β€πŸ’»"
24
  else:
25
- # Try to create new user
26
  user_id = create_user(username, password)
27
  if user_id:
28
  user_state["user_id"] = user_id
@@ -46,17 +42,16 @@ def page_projects():
46
 
47
  def start_new_project(prompt):
48
  if not user_state["user_id"]:
49
- return "❌ Please login first.", "", ""
50
 
51
- # Check project limit (max 3)
52
  projects = get_user_projects(user_state["user_id"])
53
  if len(projects) >= 3:
54
- return "⚠️ You can only have 3 projects. Delete one to create another.", "", ""
55
 
56
  project_id = create_project(user_state["user_id"], "New Project", prompt)
57
  queue_job(project_id, user_state["user_id"], prompt)
58
 
59
- return f"βœ… Project #{project_id} started! You can leave this page β€” we'll notify you when it's ready.", "", ""
60
 
61
  def search_projects_ui(query):
62
  if not user_state["user_id"]:
@@ -69,7 +64,16 @@ def search_projects_ui(query):
69
  for p in results
70
  ])
71
 
72
- # ------------------------------ UI ------------------------------
 
 
 
 
 
 
 
 
 
73
 
74
  with gr.Blocks(title="Code Agents Pro") as demo:
75
  gr.Markdown("# πŸ€– Code Agents Pro β€” AI Software Team, Fully Automated")
@@ -82,7 +86,7 @@ with gr.Blocks(title="Code Agents Pro") as demo:
82
  login_btn = gr.Button("Login / Sign Up", variant="primary")
83
  login_msg = gr.Markdown()
84
 
85
- # ---- PAGE 2: PROJECTS ----
86
  with gr.Group(visible=False) as page_main_ui:
87
  gr.Markdown("### πŸ“ Your Projects (Max 3)")
88
  refresh_btn = gr.Button("Refresh Projects")
@@ -100,6 +104,29 @@ with gr.Blocks(title="Code Agents Pro") as demo:
100
  start_btn = gr.Button("πŸš€ Start AI Team Work", variant="primary")
101
  status_msg = gr.Markdown()
102
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  # ------------------------------ EVENTS ------------------------------
104
 
105
  login_btn.click(
@@ -122,10 +149,23 @@ with gr.Blocks(title="Code Agents Pro") as demo:
122
  start_btn.click(
123
  start_new_project,
124
  inputs=project_prompt,
125
- outputs=[status_msg, projects_display, search_results]
126
  ).then(
127
  page_projects,
128
  outputs=[projects_display, search_results]
129
  )
130
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  demo.queue().launch(server_name="0.0.0.0", server_port=7860)
 
6
  create_project,
7
  get_user_projects,
8
  search_projects,
9
+ queue_job,
10
+ get_project
11
  )
 
12
 
 
13
  user_state = {"user_id": None, "username": ""}
14
 
 
 
15
  def page_login(username, password):
16
  user = get_user_by_username(username)
17
  if user and verify_password(password, user[1]):
 
19
  user_state["username"] = username
20
  return gr.update(visible=False), gr.update(visible=True), f"Welcome back, {username}! πŸ‘¨β€πŸ’»"
21
  else:
 
22
  user_id = create_user(username, password)
23
  if user_id:
24
  user_state["user_id"] = user_id
 
42
 
43
  def start_new_project(prompt):
44
  if not user_state["user_id"]:
45
+ return "❌ Please login first.", "", "", ""
46
 
 
47
  projects = get_user_projects(user_state["user_id"])
48
  if len(projects) >= 3:
49
+ return "⚠️ You can only have 3 projects. Delete one to create another.", "", "", ""
50
 
51
  project_id = create_project(user_state["user_id"], "New Project", prompt)
52
  queue_job(project_id, user_state["user_id"], prompt)
53
 
54
+ return f"βœ… Project #{project_id} started! You can leave this page β€” we'll notify you when it's ready.", "", "", ""
55
 
56
  def search_projects_ui(query):
57
  if not user_state["user_id"]:
 
64
  for p in results
65
  ])
66
 
67
+ def show_agent_logs(project_id):
68
+ if not project_id:
69
+ return "No project selected."
70
+ project = get_project(project_id)
71
+ if not project:
72
+ return "Project not found."
73
+ logs = project[6] # logs field
74
+ if not logs:
75
+ return "No logs yet. Still running..."
76
+ return logs
77
 
78
  with gr.Blocks(title="Code Agents Pro") as demo:
79
  gr.Markdown("# πŸ€– Code Agents Pro β€” AI Software Team, Fully Automated")
 
86
  login_btn = gr.Button("Login / Sign Up", variant="primary")
87
  login_msg = gr.Markdown()
88
 
89
+ # ---- PAGE 2: PROJECTS & NEW PROJECT ----
90
  with gr.Group(visible=False) as page_main_ui:
91
  gr.Markdown("### πŸ“ Your Projects (Max 3)")
92
  refresh_btn = gr.Button("Refresh Projects")
 
104
  start_btn = gr.Button("πŸš€ Start AI Team Work", variant="primary")
105
  status_msg = gr.Markdown()
106
 
107
+ # RAM/VRAM monitor
108
+ ram_monitor = gr.Markdown(value=f"πŸ“Š System: RAM {round(psutil.virtual_memory().used / (1024**3), 2)}GB / 18GB | VRAM {round(torch.cuda.memory_reserved() / (1024**3) if torch.cuda.is_available() else 0, 2)}GB")
109
+
110
+ # ---- PAGE 3: AGENT CONVERSATION LOGS ----
111
+ with gr.Group(visible=False) as page_logs_ui:
112
+ gr.Markdown("### 🧠 Agent Conversation Logs")
113
+ project_selector = gr.Dropdown(label="Select Project", choices=[])
114
+ view_logs_btn = gr.Button("πŸ‘οΈ View Full Conversation")
115
+ logs_display = gr.Markdown(label="Agent Messages", value="", lines=30)
116
+ refresh_logs_btn = gr.Button("πŸ”„ Refresh Logs")
117
+
118
+ # Update dropdown on page load
119
+ def update_dropdown():
120
+ if not user_state["user_id"]:
121
+ return []
122
+ projects = get_user_projects(user_state["user_id"], limit=10)
123
+ return [(f"[{p[0]}] {p[1]}", p[0]) for p in projects]
124
+
125
+ demo.load(update_dropdown, outputs=project_selector)
126
+ project_selector.change(fn=show_agent_logs, inputs=project_selector, outputs=logs_display)
127
+ view_logs_btn.click(fn=show_agent_logs, inputs=project_selector, outputs=logs_display)
128
+ refresh_logs_btn.click(fn=show_agent_logs, inputs=project_selector, outputs=logs_display)
129
+
130
  # ------------------------------ EVENTS ------------------------------
131
 
132
  login_btn.click(
 
149
  start_btn.click(
150
  start_new_project,
151
  inputs=project_prompt,
152
+ outputs=[status_msg, projects_display, search_results, ram_monitor]
153
  ).then(
154
  page_projects,
155
  outputs=[projects_display, search_results]
156
  )
157
 
158
+ # Switch to logs tab when project starts
159
+ start_btn.click(
160
+ lambda: (gr.update(visible=True), gr.update(visible=False)),
161
+ outputs=[page_logs_ui, page_main_ui]
162
+ )
163
+
164
+ # Back button
165
+ back_btn = gr.Button("⬅️ Back to Projects", visible=False)
166
+ back_btn.click(
167
+ lambda: (gr.update(visible=False), gr.update(visible=True)),
168
+ outputs=[page_logs_ui, page_main_ui]
169
+ )
170
+
171
  demo.queue().launch(server_name="0.0.0.0", server_port=7860)