Separate mode-specific steps, show product code with name in chips, validate against mistaken video paths, and load label_id from labels.yaml via server.py.
Co-authored-by: Cursor <cursoragent@cursor.com>
Route live recording through ffmpeg MP4 segments and the 5.15 batch subprocess, remove simulated RTSP chain 2, purge expired slices on startup and hourly, and expose TTL settings to the demo client.
Co-authored-by: Cursor <cursoragent@cursor.com>
Unify result 503 to RESULT_NOT_READY, restore resolve ASR failures as HTTP 422, accept label_id-only candidate_consumables, and document the changelog for integrators.
Co-authored-by: Cursor <cursoragent@cursor.com>
uv.lock uses uv.agentsmirror.com paths that the old sed rules never matched,
which could install corrupted wheels from cache. Rewrite to Tsinghua mirrors,
force-refresh numpy/mediapipe, and verify numpy imports during the image build.
Co-authored-by: Cursor <cursoragent@cursor.com>
MediaMTX v1.18+ requires ?session= on sub-playlists; the API proxy was
dropping query params and causing 401 on video1_stream.m3u8 fetches.
Co-authored-by: Cursor <cursoragent@cursor.com>
MediaMTX pulls site-config RTSP into HLS with API proxying for hls.js on the demo client; simulated realtime keeps local file previews only. Also add optional JPEG frame capture and document Docker HLS host settings.
Co-authored-by: Cursor <cursoragent@cursor.com>
Return specific codes when results are unavailable (not started vs in progress vs ended empty), block duplicate starts with SURGERY_ALREADY_RECORDING, and show text/video/total durations in the demo client.
Co-authored-by: Cursor <cursoragent@cursor.com>
Install Mesa/GLVND GLES/EGL runtime libraries and verify mediapipe import at image build time so headless doctor pose inference no longer fails on libGLESv2.so.2.
Co-authored-by: Cursor <cursoragent@cursor.com>
Run visualization from pipeline/result paths without vis_pending copies, publish labeled MP4 for browser only after visualize_result_video completes, and purge batch cache after the background labeling task finishes.
Co-authored-by: Cursor <cursoragent@cursor.com>