Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
"""Todo snapshots bypass optional tool-progress display settings."""
|
||||
|
||||
import json
|
||||
|
||||
import tui_gateway.server as server
|
||||
|
||||
|
||||
def test_todo_completion_always_emits_snapshot_and_compat_event(monkeypatch):
|
||||
sid = "todo-state-test"
|
||||
events = []
|
||||
session = {
|
||||
"agent": None,
|
||||
"edit_snapshots": {},
|
||||
"tool_started_at": {},
|
||||
"tool_progress_mode": "off",
|
||||
}
|
||||
monkeypatch.setitem(server._sessions, sid, session)
|
||||
monkeypatch.setattr(server, "_tool_progress_enabled", lambda _sid: False)
|
||||
monkeypatch.setattr(server, "_tool_lifecycle_required_for_ui", lambda _name: False)
|
||||
monkeypatch.setattr(
|
||||
server,
|
||||
"_emit",
|
||||
lambda event, event_sid, payload=None: events.append(
|
||||
(event, event_sid, payload)
|
||||
),
|
||||
)
|
||||
|
||||
state = {
|
||||
"todos": [{"id": "1", "content": "Work", "status": "in_progress"}],
|
||||
"revision": 9,
|
||||
}
|
||||
server._on_tool_complete(sid, "call-1", "todo", {}, json.dumps(state))
|
||||
|
||||
assert [event[0] for event in events] == ["tool.complete", "todo.updated"]
|
||||
assert events[-1] == ("todo.updated", sid, state)
|
||||
assert session["todo_state"] == state
|
||||
|
||||
|
||||
def test_non_todo_completion_stays_suppressed_when_progress_is_off(monkeypatch):
|
||||
sid = "ordinary-tool-test"
|
||||
events = []
|
||||
monkeypatch.setitem(
|
||||
server._sessions,
|
||||
sid,
|
||||
{
|
||||
"agent": None,
|
||||
"edit_snapshots": {},
|
||||
"tool_started_at": {},
|
||||
"tool_progress_mode": "off",
|
||||
},
|
||||
)
|
||||
monkeypatch.setattr(server, "_tool_progress_enabled", lambda _sid: False)
|
||||
monkeypatch.setattr(server, "_tool_lifecycle_required_for_ui", lambda _name: False)
|
||||
monkeypatch.setattr(server, "_emit", lambda *args: events.append(args))
|
||||
|
||||
server._on_tool_complete(sid, "call-1", "terminal", {}, "ok")
|
||||
|
||||
assert events == []
|
||||
|
||||
|
||||
def test_live_snapshot_prefers_the_highest_revision():
|
||||
class Store:
|
||||
@staticmethod
|
||||
def snapshot():
|
||||
return {"todos": [], "revision": 4}
|
||||
|
||||
class Agent:
|
||||
_todo_store = Store()
|
||||
|
||||
session = {
|
||||
"agent": Agent(),
|
||||
"todo_state": {
|
||||
"todos": [{"id": "1", "content": "Current", "status": "pending"}],
|
||||
"revision": 5,
|
||||
},
|
||||
}
|
||||
|
||||
payload = server._attach_todo_state({}, session)
|
||||
|
||||
assert payload["todo_state"]["revision"] == 5
|
||||
|
||||
|
||||
def test_unused_store_is_not_attached():
|
||||
class Store:
|
||||
@staticmethod
|
||||
def snapshot():
|
||||
return {"todos": [], "revision": 0}
|
||||
|
||||
class Agent:
|
||||
_todo_store = Store()
|
||||
|
||||
payload = server._attach_todo_state({}, {"agent": Agent()})
|
||||
|
||||
assert "todo_state" not in payload
|
||||
|
||||
|
||||
def test_empty_list_at_nonzero_revision_is_a_real_clear():
|
||||
state = server._normalize_todo_state({"todos": [], "revision": 2})
|
||||
|
||||
assert state == {"todos": [], "revision": 2}
|
||||
Reference in New Issue
Block a user