Skip to content

Commit f19c800

Browse files
add step navigation buttons
1 parent 5ff585f commit f19c800

File tree

1 file changed

+32
-2
lines changed

1 file changed

+32
-2
lines changed

src/agentlab/analyze/agent_xray.py

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,11 @@ def run_gradio(results_dir: Path):
298298
action_info = gr.Markdown(label="Action Info", elem_classes="my-markdown")
299299
state_error = gr.Markdown(label="Next Step Error", elem_classes="my-markdown")
300300

301+
with gr.Row(variant="panel"):
302+
prev_btn = gr.Button("◀ Previous", size="md", scale=0)
303+
next_btn = gr.Button("Next ▶", size="md", scale=0)
304+
step_indicator = gr.Markdown("**Step 0/0**")
305+
301306
profiling_gr = gr.Image(
302307
label="Profiling", show_label=False, interactive=False, show_download_button=False
303308
)
@@ -533,13 +538,38 @@ def run_gradio(results_dir: Path):
533538
outputs=[hidden_key_input, step_id],
534539
)
535540

541+
# Simple navigation button events - reuse keyboard logic
542+
prev_btn.click(
543+
lambda step_id: handle_key_event("Cmd+Left", step_id)[1],
544+
inputs=[step_id],
545+
outputs=[step_id],
546+
)
547+
next_btn.click(
548+
lambda step_id: handle_key_event("Cmd+Right", step_id)[1],
549+
inputs=[step_id],
550+
outputs=[step_id],
551+
)
552+
553+
# Update step indicator display
554+
def format_step_indicator(step_id):
555+
global info
556+
if not step_id or not info.exp_result or not info.exp_result.steps_info:
557+
return "Step 0/0"
558+
# 1-based for user, total steps is len-1 (last is terminal)
559+
current = (step_id.step + 1) if step_id.step is not None else 0
560+
total = max(len(info.exp_result.steps_info) - 1, 0)
561+
return f"Step {current}/{total}"
562+
563+
step_id.change(format_step_indicator, inputs=[step_id], outputs=[step_indicator])
564+
536565
demo.queue()
537566

538567
do_share = os.getenv("AGENTXRAY_SHARE_GRADIO", "false").lower() == "true"
539568
port = os.getenv("AGENTXRAY_APP_PORT", None)
569+
server_name = "0.0.0.0" if os.getenv("AGENTXRAY_PUBLIC", "false") == "true" else "127.0.0.1"
540570
if isinstance(port, str):
541571
port = int(port)
542-
demo.launch(server_port=port, share=do_share)
572+
demo.launch(server_name=server_name, server_port=port, share=do_share)
543573

544574

545575
def handle_key_event(key_event, step_id: StepId):
@@ -941,7 +971,7 @@ def get_episode_info(info: Info):
941971

942972
info = f"""\
943973
### {env_args.task_name} (seed: {env_args.task_seed})
944-
### Step {info.step} / {len(steps_info) - 1} (Reward: {cum_reward:.1f})
974+
### (Reward: {cum_reward:.1f})
945975
946976
**Goal:**
947977

0 commit comments

Comments
 (0)