from __future__ import annotations import gradio as gr from agent.runner import ( export_agent_traces, export_agent_traces_hf_dataset, run_agent_loop, run_paper_to_code_loop, save_agent_trace, ) from ui.progress import CLICK_PROGRESS def build_agent_tab() -> None: gr.Markdown("Agent mode drafts a local research -> plan -> implement -> verify trace.") task = gr.Textbox(label="Agent task", lines=5, placeholder="Example: improve field-note export") plan = gr.Button("Draft agent trace", variant="primary") gr.Markdown("### Paper-to-code trace") paper_title = gr.Textbox(label="Paper title", placeholder="Optional paper or technique name") paper_notes = gr.Textbox( label="Paper notes", lines=5, placeholder="Paste key claims or abstract", ) paper_goal = gr.Textbox( label="Implementation goal", lines=3, placeholder="Example: reproduce the evaluation loop locally", ) paper_plan = gr.Button("Draft paper-to-code trace") export = gr.Button("Export traces") export_dataset = gr.Button("Export traces dataset") output = gr.Textbox(label="Plan", lines=10) trace = gr.JSON(label="Trace") def draft_plan(task_text: str) -> tuple[str, dict]: session = run_agent_loop(task_text) save_agent_trace(session) return session.as_markdown(), session.as_dict() def draft_paper_plan(title: str, notes: str, goal: str) -> tuple[str, dict]: session = run_paper_to_code_loop(title, notes, goal) save_agent_trace(session) return session.as_markdown(), session.as_dict() def export_trace_file() -> dict: path = export_agent_traces() return {"exported_to": str(path)} def export_trace_dataset() -> dict: path = export_agent_traces_hf_dataset() return {"exported_to": str(path)} plan.click(draft_plan, task, [output, trace], show_progress=CLICK_PROGRESS) paper_plan.click( draft_paper_plan, [paper_title, paper_notes, paper_goal], [output, trace], show_progress=CLICK_PROGRESS, ) export.click(export_trace_file, outputs=trace, show_progress=CLICK_PROGRESS) export_dataset.click( export_trace_dataset, outputs=trace, show_progress=CLICK_PROGRESS, )