rydlrKE commited on
Commit
678a5ca
·
verified ·
1 Parent(s): 4880a6e

feat: lightweight non-LFS Movimento app deployment

Browse files

Direct push to main is permission-restricted for this token; opening PR commit with app and README updates.

Files changed (2) hide show
  1. README.md +21 -7
  2. app.py +42 -4
README.md CHANGED
@@ -1,15 +1,29 @@
1
  ---
2
  title: Movimento
3
- emoji: 🏢
4
- colorFrom: yellow
5
- colorTo: yellow
6
  sdk: gradio
7
  sdk_version: 6.14.0
8
  python_version: '3.12'
9
  app_file: app.py
10
- pinned: false
11
- license: mit
12
- short_description: Agentic multi-character motion scripts
13
  ---
14
 
15
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  title: Movimento
3
+ emoji: 🎬
4
+ colorFrom: blue
5
+ colorTo: green
6
  sdk: gradio
7
  sdk_version: 6.14.0
8
  python_version: '3.12'
9
  app_file: app.py
10
+ pinned: true
11
+ license: apache-2.0
12
+ short_description: Text-driven multi-character motion planning workspace
13
  ---
14
 
15
+ Movimento is a hackathon Space for multi-character motion planning and orchestration.
16
+
17
+ This Space currently runs a lightweight planner UI while full model assets are prepared.
18
+
19
+ Implemented pipeline milestones:
20
+ - Card 0: environment readiness gate
21
+ - Card 1: scope lock
22
+ - Card 2: service contracts
23
+ - Card 3: shared state deterministic loop
24
+ - Card 4: Qwen planner adapter
25
+ - Card 5: BONES-SEED ingestion flow
26
+ - Card 6: script-to-Kimodo mapping
27
+
28
+ Next milestone:
29
+ - Card 7: blend quality guardrails with constraint-aware multi-character transition tuning
app.py CHANGED
@@ -1,7 +1,45 @@
 
 
1
  import gradio as gr
2
 
3
- def greet(name):
4
- return "Hello " + name + "!!"
5
 
6
- demo = gr.Interface(fn=greet, inputs="text", outputs="text")
7
- demo.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+
3
  import gradio as gr
4
 
 
 
5
 
6
+ def generate_plan(prompt: str, characters: int, transition: str) -> str:
7
+ cleaned = (prompt or "").strip() or "Two characters wave and then walk together"
8
+ return (
9
+ "Movimento deployment is live on Hugging Face Spaces.\n\n"
10
+ "Requested scene:\n"
11
+ f"- Prompt: {cleaned}\n"
12
+ f"- Characters: {characters}\n"
13
+ f"- Transition preference: {transition}\n\n"
14
+ "Card 0-6 status:\n"
15
+ "- Qwen planning adapter implemented\n"
16
+ "- Deterministic loop scheduler implemented\n"
17
+ "- BONES-SEED ingestion flow implemented\n"
18
+ "- Script-to-Kimodo mapping implemented\n\n"
19
+ "Next step: Card 7 blend quality guardrails with constraint-aware multi-character transitions."
20
+ )
21
+
22
+
23
+ with gr.Blocks(title="Movimento") as demo:
24
+ gr.Markdown("# Movimento")
25
+ gr.Markdown("Text-driven multi-character motion planning for the lablab.ai AMD hackathon.")
26
+
27
+ with gr.Row():
28
+ prompt = gr.Textbox(label="Scene Prompt", lines=3, placeholder="Two characters greet and sit down")
29
+
30
+ with gr.Row():
31
+ characters = gr.Slider(label="Characters", minimum=1, maximum=6, step=1, value=2)
32
+ transition = gr.Dropdown(
33
+ label="Transition Policy",
34
+ choices=["smooth", "overlap", "hold", "cut"],
35
+ value="smooth",
36
+ )
37
+
38
+ run = gr.Button("Generate Plan")
39
+ output = gr.Textbox(label="Planner Output", lines=16)
40
+
41
+ run.click(generate_plan, inputs=[prompt, characters, transition], outputs=output)
42
+
43
+
44
+ if __name__ == "__main__":
45
+ demo.launch(server_name="0.0.0.0", server_port=int(os.environ.get("PORT", "7860")))