Auto-run queued session inputs
This commit is contained in:
@@ -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]:
|
||||
|
||||
Reference in New Issue
Block a user