Auto-run queued session inputs

This commit is contained in:
wuyang6
2026-06-12 20:17:20 +08:00
parent c3caa4a1e3
commit 7422931290
3 changed files with 139 additions and 2 deletions
+42
View File
@@ -74,6 +74,7 @@ from src.session_store import (
append_agent_display_message,
agent_session_delta,
cancel_session_input_queue,
consume_next_session_input,
consume_session_guidance,
delete_agent_session,
deserialize_runtime_config,
@@ -2538,6 +2539,41 @@ def create_app(state: AgentState) -> FastAPI:
'cancelled_input_queue_items': queue_cancelled,
}
def _schedule_next_queued_turn(
*,
account_id: str | None,
session_id: str,
directory: Path,
) -> dict[str, Any] | None:
item = consume_next_session_input(session_id, directory=directory)
if item is None:
return None
content = str(item.get('content') or '').strip()
if not content:
return None
try:
return _start_chat_run(
ChatRequest(
prompt=content,
account_id=account_id,
session_id=session_id,
resume_session_id=session_id,
)
)
except Exception as exc: # noqa: BLE001
update_session_input_queue_item(
session_id,
int(item.get('id') or 0),
directory=directory,
status='pending',
)
print(
f'[input-queue] failed to schedule queued turn '
f'session={session_id} item={item.get("id")}: {exc}',
flush=True,
)
return None
def _run_chat_payload(
request: ChatRequest,
event_sink: Any | None = None,
@@ -2845,6 +2881,12 @@ def create_app(state: AgentState) -> FastAPI:
result.session_id,
status='cancelled',
)
if not run_record.cancel_event.is_set() and result.session_id:
_schedule_next_queued_turn(
account_id=request.account_id,
session_id=result.session_id,
directory=session_directory,
)
return payload
def _start_chat_run(request: ChatRequest) -> dict[str, Any]: