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()
|