Run compose api as HOST_UID/GID with cache under /tmp, poll slice files for
ready_event when ffmpeg stderr is silent, invoke batch via venv python, exclude
logs from build context, and document Docker cache/VLC troubleshooting.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reserve camera ownership under registry lock before spawning ffmpeg, return 409 for conflicts without retry, and transcode slices to 1080p H.264 for more stable playback.
Co-authored-by: Cursor <cursoragent@cursor.com>
Background ffmpeg pull on all site cameras reduces cold-start latency on start_surgery; timing logs record connect and ready phases. Enable via RTSP_PREWARM_ENABLED in the committed env.
Co-authored-by: Cursor <cursoragent@cursor.com>
uv treats a set UV_COMPILE_BYTECODE (even "0") as compile-bytecode, which conflicts with --no-compile on sync.
Co-authored-by: Cursor <cursoragent@cursor.com>
Parse OpenCV rtsp_transport options correctly, use -timeout instead of removed -stimeout, map only the first video stream with -an, tighten ready detection, and disable uv bytecode compile during Docker build.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>