fix(api): WS index frames accept both camelCase and snake_case keys (Electron toSnakeCase compat)
This commit is contained in:
@@ -598,9 +598,9 @@ async def _handle_index_session_start(
|
|||||||
frame: dict,
|
frame: dict,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Register a new folder index session. No response sent — client is declaring intent."""
|
"""Register a new folder index session. No response sent — client is declaring intent."""
|
||||||
session_id: str = frame.get("sessionId") or frame.get("session_id", "")
|
session_id: str = frame.get("sessionId") or frame.get("session_id") or ""
|
||||||
project_id: str | None = frame.get("projectId") or frame.get("project_id")
|
project_id: str | None = frame.get("projectId") or frame.get("project_id")
|
||||||
total: int = int(frame.get("totalFiles", 0))
|
total: int = int(frame.get("totalFiles") or frame.get("total_files") or 0)
|
||||||
|
|
||||||
if not session_id:
|
if not session_id:
|
||||||
logger.warning("device_ws: index_session_start missing sessionId user=%s", user_id)
|
logger.warning("device_ws: index_session_start missing sessionId user=%s", user_id)
|
||||||
@@ -624,7 +624,7 @@ async def _handle_index_session_cancel(
|
|||||||
frame: dict,
|
frame: dict,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Mark a session as cancelled and emit index_session_done(cancelled)."""
|
"""Mark a session as cancelled and emit index_session_done(cancelled)."""
|
||||||
session_id: str = frame.get("sessionId") or frame.get("session_id", "")
|
session_id: str = frame.get("sessionId") or frame.get("session_id") or ""
|
||||||
session = _index_sessions.get(session_id)
|
session = _index_sessions.get(session_id)
|
||||||
if session:
|
if session:
|
||||||
session["cancelled"] = True
|
session["cancelled"] = True
|
||||||
@@ -654,7 +654,7 @@ async def _handle_index_file_batch(
|
|||||||
from app.billing.tier_manager import tier_manager # noqa: PLC0415
|
from app.billing.tier_manager import tier_manager # noqa: PLC0415
|
||||||
from app.billing.quota import add_token_usage # noqa: PLC0415
|
from app.billing.quota import add_token_usage # noqa: PLC0415
|
||||||
|
|
||||||
session_id: str = frame.get("sessionId") or frame.get("session_id", "")
|
session_id: str = frame.get("sessionId") or frame.get("session_id") or ""
|
||||||
files: list[dict] = frame.get("files", [])
|
files: list[dict] = frame.get("files", [])
|
||||||
|
|
||||||
session = _index_sessions.get(session_id)
|
session = _index_sessions.get(session_id)
|
||||||
@@ -670,11 +670,12 @@ async def _handle_index_file_batch(
|
|||||||
if session.get("cancelled"):
|
if session.get("cancelled"):
|
||||||
return
|
return
|
||||||
|
|
||||||
rel_path: str = file_info.get("relPath", "")
|
# Electron's toSnakeCase converts payload keys, so accept both forms.
|
||||||
kind: str = file_info.get("kind", "text")
|
rel_path: str = file_info.get("relPath") or file_info.get("rel_path") or ""
|
||||||
content: str = file_info.get("content", "")
|
kind: str = file_info.get("kind") or "text"
|
||||||
ext: str = file_info.get("ext", "")
|
content: str = file_info.get("content") or ""
|
||||||
mime: str = file_info.get("mime", "application/octet-stream")
|
ext: str = file_info.get("ext") or ""
|
||||||
|
mime: str = file_info.get("mime") or "application/octet-stream"
|
||||||
name: str = rel_path.split("/")[-1] or rel_path
|
name: str = rel_path.split("/")[-1] or rel_path
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user