Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
26a4cce
WIP - add mcp example
yuval-qf Oct 13, 2025
bbaac20
Merge branch 'main' into feature/FIRE-800-mcp-support
yuval-qf Oct 19, 2025
da4e592
Fix mcp agent
yuval-qf Oct 19, 2025
40048a1
Fix mcp agent
yuval-qf Oct 19, 2025
a830b10
typing
yuval-qf Oct 19, 2025
442bb83
Add docs
yuval-qf Oct 19, 2025
2d7d54f
Add base logic to support different transports
yuval-qf Oct 19, 2025
c8c086b
Use local sdk for github action tests
yuval-qf Oct 19, 2025
d926a5b
Add TransportType to sdk __init__/__all__
yuval-qf Oct 19, 2025
ae56669
fix gh tests
yuval-qf Oct 19, 2025
d34d404
Fix cyclical import
yuval-qf Oct 19, 2025
3d06933
Add missing files
yuval-qf Oct 19, 2025
8b2cf93
Fix missing kwarg
yuval-qf Oct 20, 2025
ee76845
cicd fix
yuval-qf Oct 20, 2025
54fe40d
Fix import
yuval-qf Oct 20, 2025
81cec81
Merge branch 'main' into feature/FIRE-831-mcp-transport-support
yuval-qf Oct 20, 2025
43e0f56
Merge branch 'main' into feature/FIRE-800-mcp-support
yuval-qf Oct 20, 2025
67b11eb
Merge branch 'feature/FIRE-800-mcp-support' into feature/FIRE-831-mcp…
yuval-qf Oct 20, 2025
69e064a
Add mcp transport
yuval-qf Oct 20, 2025
8b80718
formatting
yuval-qf Oct 20, 2025
0430690
transport -> protocol
yuval-qf Oct 20, 2025
2692157
Merge branch 'main' into feature/FIRE-800-mcp-support
yuval-qf Oct 20, 2025
09e8181
formatting
yuval-qf Oct 20, 2025
f25ff97
Merge branch 'feature/FIRE-800-mcp-support' into feature/FIRE-831-mcp…
yuval-qf Oct 20, 2025
1524c80
Fix session id
yuval-qf Oct 20, 2025
eddf17a
Improve import time
yuval-qf Oct 20, 2025
84acb33
Rename example folder
yuval-qf Oct 20, 2025
0f313cc
Merge branch 'feature/FIRE-800-mcp-support' into feature/FIRE-831-mcp…
yuval-qf Oct 20, 2025
a7fb351
Merge branch 'main' into feature/FIRE-831-mcp-transport-support
yuval-qf Oct 20, 2025
ff31cb7
revert unreleated changes
yuval-qf Oct 20, 2025
712b93c
Rabbit cr
yuval-qf Oct 20, 2025
67ed649
Add transport support
yuval-qf Oct 21, 2025
23e8b6c
Improve import time
yuval-qf Oct 21, 2025
ebdf875
Rabbit cr
yuval-qf Oct 21, 2025
fde7111
Add mcp support to gradio
yuval-qf Oct 21, 2025
dfbb5ff
Update launch.json path
yuval-qf Oct 21, 2025
3623c88
Merge branch 'feature/FIRE-831-mcp-transport-support' into feature/FI…
yuval-qf Oct 21, 2025
dd87e37
Add transport to a2a to create a clean convention
yuval-qf Oct 21, 2025
e206779
Merge branch 'feature/FIRE-831-mcp-transport-support' into feature/FI…
yuval-qf Oct 22, 2025
7372b36
Add transport to a2a in gradio
yuval-qf Oct 22, 2025
2f6be8e
Load protocol and transport on start
yuval-qf Oct 22, 2025
e67b99e
CR
yuval-qf Oct 22, 2025
c36e371
Fix partial import
yuval-qf Oct 22, 2025
6d18a8e
Run mcp example from maing
yuval-qf Oct 22, 2025
f669cd1
Merge branch 'main' into feature/FIRE-831-mcp-transport-support
yuval-qf Oct 22, 2025
473e0bb
Fix typo
yuval-qf Oct 22, 2025
5df5a21
Merge branch 'feature/FIRE-831-mcp-transport-support' into feature/FI…
yuval-qf Oct 22, 2025
f28b81b
Rabbit cr - Add click options to mcp examples
yuval-qf Oct 22, 2025
254d81e
Merge branch 'feature/FIRE-831-mcp-transport-support' into feature/FI…
yuval-qf Oct 22, 2025
24f1e74
Merge branch 'main' into feature/FIRE-831-mcp-transport-support
yuval-qf Oct 22, 2025
3bfb035
Merge branch 'feature/FIRE-831-mcp-transport-support' into feature/FI…
yuval-qf Oct 22, 2025
46f713e
Merge branch 'main' into feature/FIRE-813-mcp-gradio
yuval-qf Oct 22, 2025
ff77b8f
Update rogue/ui/app.py
yuval-qf Oct 22, 2025
10484f0
rabbit cr
yuval-qf Oct 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .rogue/user_config.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
{
"protocol": "mcp",
"transport": "streamable_http",
"evaluated_agent_url": "http://localhost:10001/",
"evaluated_agent_auth_type": "no_auth",
"evaluated_agent_credentials": "",
Expand Down
22 changes: 21 additions & 1 deletion rogue/ui/app.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import json
from pathlib import Path

from rogue_sdk.types import AuthType
from rogue_sdk.types import AuthType, Protocol, Transport

from ..common.workdir_utils import load_config
from .components.config_screen import create_config_screen
Expand Down Expand Up @@ -35,6 +35,8 @@ def get_app(workdir: Path, rogue_server_url: str):
with gr.TabItem("1. Config", id="config"):
(
agent_url,
protocol,
transport,
interview_mode,
auth_type,
auth_credentials,
Expand Down Expand Up @@ -115,11 +117,27 @@ def load_and_update_ui():
"evaluated_agent_auth_type",
AuthType.NO_AUTH.value,
)
# Safe enum parsing with sensible fallbacks
raw_protocol = config.get("protocol", Protocol.A2A.value)
raw_transport = config.get("transport", Transport.HTTP.value)
try:
protocol_val = Protocol(raw_protocol)
except (ValueError, KeyError):
protocol_val = Protocol.A2A
try:
transport_val = Transport(raw_transport)
except (ValueError, KeyError):
transport_val = Transport.HTTP

if not transport_val.is_valid_for_protocol(protocol_val):
transport_val = protocol_val.get_default_transport()
return {
shared_state: state,
agent_url: gr.update(
value=config.get("evaluated_agent_url", "http://localhost:10001"),
),
protocol: gr.update(value=protocol_val.value),
transport: gr.update(value=transport_val.value),
interview_mode: gr.update(value=config.get("interview_mode", True)),
deep_test_mode: gr.update(value=config.get("deep_test_mode", False)),
parallel_runs: gr.update(value=config.get("parallel_runs", 1)),
Expand All @@ -144,6 +162,8 @@ def load_and_update_ui():
outputs=[
shared_state,
agent_url,
protocol,
transport,
interview_mode,
auth_type,
auth_credentials,
Expand Down
56 changes: 55 additions & 1 deletion rogue/ui/components/config_screen.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from loguru import logger
from pydantic import ValidationError
from rogue_sdk.types import AgentConfig, AuthType
from rogue_sdk.types import PROTOCOL_TO_TRANSPORTS, AgentConfig, AuthType, Protocol

from ...common.workdir_utils import dump_config

Expand Down Expand Up @@ -33,6 +33,37 @@ def create_config_screen(
)
agent_url_error = gr.Markdown(visible=False, elem_classes=["error-label"])

gr.Markdown("**Protocol**")
protocol = gr.Dropdown(
label="Protocol",
choices=[p.value for p in Protocol],
value=config_data.get(
"protocol",
Protocol.A2A.value,
),
)

# Get initial transport choices based on current protocol
initial_protocol = Protocol(
config_data.get("protocol", Protocol.A2A.value),
)
initial_transport_choices = [
t.value for t in PROTOCOL_TO_TRANSPORTS[initial_protocol]
]
initial_transport_value = config_data.get(
"transport",
initial_protocol.get_default_transport().value,
)
if initial_transport_value not in initial_transport_choices:
initial_transport_value = initial_protocol.get_default_transport().value

gr.Markdown("**Transport**")
transport = gr.Dropdown(
label="Transport",
choices=initial_transport_choices,
value=initial_transport_value,
)

gr.Markdown("**Interview Mode**")
interview_mode = gr.Checkbox(
label="Enable AI-powered business context interview",
Expand Down Expand Up @@ -153,6 +184,8 @@ def update_state(state, key, value):

for component, key in [
(agent_url, "agent_url"),
(protocol, "protocol"),
(transport, "transport"),
(interview_mode, "interview_mode"),
(auth_type, "auth_type"),
(auth_credentials, "auth_credentials"),
Expand All @@ -179,9 +212,24 @@ def toggle_auth_credentials(auth_t):
outputs=[auth_credentials],
)

def update_transport_choices(protocol_val):
"""Update transport choices based on selected protocol."""
selected_protocol = Protocol(protocol_val)
transport_choices = [t.value for t in PROTOCOL_TO_TRANSPORTS[selected_protocol]]
default_transport = selected_protocol.get_default_transport().value
return gr.update(choices=transport_choices, value=default_transport)

protocol.change(
fn=update_transport_choices,
inputs=[protocol],
outputs=[transport],
)

def save_config(
state,
url,
protocol_val,
transport_val,
interview_mode_val,
deep_test_mode_val,
parallel_runs_val,
Expand All @@ -207,6 +255,8 @@ def save_config(
judge_llm=llm,
judge_llm_api_key=llm_key,
deep_test_mode=deep_test_mode_val,
protocol=protocol_val,
transport=transport_val,
interview_mode=interview_mode_val,
parallel_runs=parallel_runs_val,
business_context="",
Expand Down Expand Up @@ -252,6 +302,8 @@ def save_config(
inputs=[
shared_state,
agent_url,
protocol,
transport,
interview_mode,
deep_test_mode,
parallel_runs,
Expand All @@ -272,6 +324,8 @@ def save_config(

return (
agent_url,
protocol,
transport,
interview_mode,
auth_type,
auth_credentials,
Expand Down
Loading