Skip to content

Commit 58b966e

Browse files
add step navigation buttons
1 parent 67e434f commit 58b966e

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
@@ -302,6 +302,11 @@ def run_gradio(results_dir: Path):
302302
action_info = gr.Markdown(label="Action Info", elem_classes="my-markdown")
303303
state_error = gr.Markdown(label="Next Step Error", elem_classes="my-markdown")
304304

305+
with gr.Row(variant="panel"):
306+
prev_btn = gr.Button("◀ Previous", size="md", scale=0)
307+
next_btn = gr.Button("Next ▶", size="md", scale=0)
308+
step_indicator = gr.Markdown("**Step 0/0**")
309+
305310
profiling_gr = gr.Image(
306311
label="Profiling", show_label=False, interactive=False, show_download_button=False
307312
)
@@ -537,13 +542,38 @@ def run_gradio(results_dir: Path):
537542
outputs=[hidden_key_input, step_id],
538543
)
539544

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

542571
do_share = os.getenv("AGENTXRAY_SHARE_GRADIO", "false").lower() == "true"
543572
port = os.getenv("AGENTXRAY_APP_PORT", None)
573+
server_name = "0.0.0.0" if os.getenv("AGENTXRAY_PUBLIC", "false") == "true" else "127.0.0.1"
544574
if isinstance(port, str):
545575
port = int(port)
546-
demo.launch(server_port=port, share=do_share)
576+
demo.launch(server_name=server_name, server_port=port, share=do_share)
547577

548578

549579
def handle_key_event(key_event, step_id: StepId):
@@ -947,7 +977,7 @@ def get_episode_info(info: Info):
947977

948978
info = f"""\
949979
### {env_args.task_name} (seed: {env_args.task_seed})
950-
### Step {info.step} / {len(steps_info) - 1} (Reward: {cum_reward:.1f})
980+
### (Reward: {cum_reward:.1f})
951981
952982
**Goal:**
953983

0 commit comments

Comments
 (0)