Bind chat agent sessions to individual devices

This commit is contained in:
showtan001
2026-08-30 21:48:39 +08:00
parent fdaca7539b
commit 697e54427b
3 changed files with 37 additions and 4 deletions
+8 -1
View File
@@ -427,6 +427,11 @@ def create_console_app(
if conversation_agent is None:
raise HTTPException(status_code=503, detail="chat agent is not configured")
payload = await request.json()
device_id = payload.get("device_id") if isinstance(payload, dict) else None
if not isinstance(device_id, str) or not device_id.strip():
raise HTTPException(status_code=400, detail="device_id is required")
if device_id not in {device.id for device in manager.list_devices()}:
raise HTTPException(status_code=404, detail="unknown device")
raw_messages = payload.get("messages") if isinstance(payload, dict) else None
if not isinstance(raw_messages, list) or not raw_messages:
raise HTTPException(status_code=400, detail="messages must be a non-empty list")
@@ -439,7 +444,9 @@ def create_console_app(
]
if not messages:
raise HTTPException(status_code=400, detail="messages are invalid")
result = await asyncio.to_thread(conversation_agent.chat, messages)
result = await asyncio.to_thread(
conversation_agent.chat_for_device, device_id.strip(), messages
)
return JSONResponse(
{"content": result.content, "tool_calls": result.tool_calls}
)