File size: 2,225 Bytes
67f9d7b
38c7720
 
660b656
f69fdac
67f9d7b
4e2e4a9
38c7720
 
4e2e4a9
38c7720
 
67f9d7b
 
 
38c7720
 
 
 
 
f69fdac
 
38c7720
 
4e2e4a9
 
 
 
 
38c7720
67f9d7b
38c7720
67f9d7b
4e2e4a9
 
 
 
 
67f9d7b
38c7720
 
4e2e4a9
 
 
 
 
67f9d7b
38c7720
67f9d7b
4e2e4a9
 
 
 
 
67f9d7b
38c7720
 
 
 
 
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import os
import shutil
from deployer.gradio_generator import deploy_and_package, robot_behavior
import gradio as gr

def generate_app(idea: str):
    """
    Runs the pipeline, packages the app into a zip, and returns
    (status_message, zip_file_path) for Gradio to serve.
    """
    status, zip_path = deploy_and_package(idea)
    # Gradio File component needs a Path or file-like
    return status, zip_path

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 download it, then test it live.")

        with gr.Row():
            with gr.Column(elem_id="generate-section"):
                gr.Markdown("## 1️⃣ Generate & Download App", elem_classes="section")
                idea_input = gr.Textbox(
                    label="Your Robot Idea",
                    placeholder="e.g. A friendly greeting robot.",
                    lines=2
                )
                gen_btn = gr.Button("Generate App & ZIP")
                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(elem_id="simulate-section"):
                gr.Markdown("## 2️⃣ Robot Simulator", elem_classes="section")
                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()