File size: 1,830 Bytes
67f9d7b
 
660b656
67f9d7b
0c77c4b
67f9d7b
 
 
 
f69fdac
67f9d7b
 
 
 
 
 
 
 
 
 
f69fdac
 
67f9d7b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f4f0212
0180e60
67f9d7b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import os
import asyncio
import gradio as gr
from deployer.gradio_generator import deploy_callback, robot_behavior
from deployer.gradio_generator import launch_gradio_app

# Wrapper to run deploy_callback asynchronously
async def _deploy_async(idea: str):
    return deploy_callback(idea)

# Synchronous Gradio callback for app generation
def generate_app(idea: str):
    status, zip_path = asyncio.run(_deploy_async(idea))
    return status, zip_path

# Build and launch the Gradio interface
def main():
    with gr.Blocks(css=".gradio-container { max-width: 900px; margin: auto; }
                     .section { padding: 1rem; }") as demo:
        gr.Markdown("# 🚀 RoboSage\nGenerate your custom robot app and test it live.")

        with gr.Row():
            with gr.Column(scale=1):
                gr.Markdown("## 1️⃣ Generate & Download App")
                idea_input = gr.Textbox(label="Your Robot Idea", placeholder="e.g. A friendly greeting robot.", lines=2)
                gen_btn = gr.Button("Generate App")
                status_out = gr.Textbox(label="Status", interactive=False)
                zip_out = gr.File(label="Download App ZIP")

                gen_btn.click(fn=generate_app, inputs=[idea_input], outputs=[status_out, zip_out])

            with gr.Column(scale=1):
                gr.Markdown("## 2️⃣ Robot Simulator")
                cmd_input = gr.Textbox(label="Command", placeholder="hello or say You rock!", lines=1)
                sim_btn = gr.Button("Send Command")
                sim_out = gr.Textbox(label="Robot Response", interactive=False)

                sim_btn.click(fn=robot_behavior, inputs=[cmd_input], outputs=[sim_out])

        demo.launch(server_name="0.0.0.0", server_port=int(os.environ.get("PORT", 7860)), share=False)

if __name__ == "__main__":
    main()