Keeby-smilyai commited on
Commit
7c1ca6d
·
verified ·
1 Parent(s): c835712

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +83 -0
app.py ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from backend import verify_hf_token, get_user_projects, run_code_agents
3
+
4
+ user_state = {"user_id": None, "hf_token": "", "current_project": None}
5
+
6
+ def page_login(hf_token):
7
+ user_id, msg = verify_hf_token(hf_token)
8
+ if user_id:
9
+ user_state["user_id"] = user_id
10
+ user_state["hf_token"] = hf_token
11
+ return gr.update(visible=False), gr.update(visible=True), msg
12
+ else:
13
+ return gr.update(), gr.update(), msg
14
+
15
+ def page_projects():
16
+ if not user_state["user_id"]:
17
+ return "Please login first."
18
+ projects = get_user_projects(user_state["user_id"])
19
+ if not projects:
20
+ return "No projects yet. Describe your idea below!"
21
+ return "\n".join([
22
+ f"Project #{p[0]}: {p[1]} ({p[4]}) | [Download]({p[3]})"
23
+ for p in projects
24
+ ])
25
+
26
+ def start_code_agents(project_description):
27
+ if not user_state["user_id"]:
28
+ return "Please login first.", None, []
29
+ logs, zip_path, timeline = run_code_agents(user_state["user_id"], project_description)
30
+ return logs, zip_path, timeline
31
+
32
+ with gr.Blocks(title="Code Agents") as demo:
33
+ gr.Markdown("# Code Agents — AI Teams That Build Software From Prompts")
34
+
35
+ with gr.Group() as page_login_ui:
36
+ gr.Markdown("### Step 1: Login with Hugging Face Token")
37
+ token_input = gr.Textbox(label="HF Token (starts with 'hf_')", type="password")
38
+ login_btn = gr.Button("Login to Code Agents", variant="primary")
39
+ login_msg = gr.Markdown()
40
+
41
+ with gr.Group(visible=False) as page_main_ui:
42
+ gr.Markdown("### Your Projects")
43
+ refresh_btn = gr.Button("Refresh Projects")
44
+ projects_display = gr.Markdown(label="Your Projects", value="Loading...")
45
+ gr.Markdown("### Describe Your Project")
46
+ project_input = gr.Textbox(
47
+ label="What do you want to build?",
48
+ placeholder="Example: A Python CLI tool that downloads YouTube videos as MP3. Use yt-dlp and saves them to ./downloads/",
49
+ lines=5
50
+ )
51
+ start_btn = gr.Button("Start AI Team Work", variant="primary")
52
+ agent_logs = gr.Markdown("Waiting for agents to begin...")
53
+ timeline = gr.JSON(label="Timeline", visible=False)
54
+
55
+ with gr.Group(visible=False) as page_download_ui:
56
+ gr.Markdown("### Download Project")
57
+ zip_download = gr.File(label="Download Complete Project (.zip)")
58
+ gr.Markdown("This project is saved under your account. Refresh to see it in 'Your Projects'.")
59
+
60
+ login_btn.click(
61
+ page_login,
62
+ inputs=token_input,
63
+ outputs=[page_login_ui, page_main_ui, login_msg]
64
+ )
65
+
66
+ refresh_btn.click(
67
+ page_projects,
68
+ outputs=projects_display
69
+ )
70
+
71
+ start_btn.click(
72
+ start_code_agents,
73
+ inputs=project_input,
74
+ outputs=[agent_logs, zip_download, timeline]
75
+ ).then(
76
+ lambda: (gr.update(visible=True), gr.update(visible=False)),
77
+ outputs=[page_download_ui, page_main_ui]
78
+ ).then(
79
+ lambda: (gr.update(visible=True), gr.update(visible=False)),
80
+ outputs=[page_main_ui, page_download_ui]
81
+ )
82
+
83
+ demo.queue().launch(server_name="0.0.0.0", server_port=7860)