Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "uipath-dev"
version = "0.0.49"
version = "0.0.50"
description = "UiPath Developer Console"
readme = { file = "README.md", content-type = "text/markdown" }
requires-python = ">=3.11"
Expand Down
4 changes: 2 additions & 2 deletions src/uipath/dev/services/debug_bridge.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ class TextualDebugBridge:
def __init__(self, mode: ExecutionMode = ExecutionMode.DEBUG):
"""Initialize the debug bridge."""
self._mode = mode
self._auto_resume = mode == ExecutionMode.RUN
self._auto_resume = mode != ExecutionMode.DEBUG
self._connected = False
self._resume_event = asyncio.Event()
self._resume_data: dict[str, Any] | None = None
self._terminate_event = asyncio.Event()
self._breakpoints: list[str] | Literal["*"] = (
[] if mode == ExecutionMode.RUN else "*"
"*" if mode == ExecutionMode.DEBUG else []
)

# Callbacks to UI
Expand Down
32 changes: 31 additions & 1 deletion tests/e2e/test_textual_run.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import asyncio
import json

from textual.widgets import Footer, Select
from textual.widgets import Footer, Input, Select

from tests.conftest import ENTRYPOINT_NUMBERS
from uipath.dev.ui.panels import NewRunPanel, RunDetailsPanel, RunHistoryPanel
Expand Down Expand Up @@ -171,3 +171,33 @@ async def test_new_run_button(app):

assert "hidden" not in new_panel.classes
assert "hidden" in details.classes


async def test_chat_mode_greeting(app):
"""Start a chat run, send a message, verify it completes without timeout."""
async with app.run_test() as pilot:
await _wait_for_entrypoint(app)
await pilot.pause()

# Set valid JSON input (required for run creation)
json_input = app.query_one("#json-input", JsonInput)
json_input.text = json.dumps({"name": "Tester"})
await pilot.pause()

# Click the Chat button to start a chat-mode run
await pilot.click("#chat-btn")
await pilot.pause()

# Details panel should be visible with chat input focused
details_panel = app.query_one("#details-panel", RunDetailsPanel)
chat_input = details_panel.query_one("#chat-input", Input)

# Type a message and submit
chat_input.value = "Hello there"
await pilot.press("enter")

# Wait for the run to complete (would timeout at 60s if auto-resume is broken)
run = await _wait_for_status(app, "completed")

assert run.output_data is not None
assert "greeting" in run.output_data
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.