Those 13 U* were in the BOM (TPS22965, TPD2E007, TMP117, …) but never entered ic_mpns, so review skipped them as missing PDFs. Also try the BOM Datasheet URL first.
Co-authored-by: Cursor <cursoragent@cursor.com>
A docker rebuild left HubAudio status=running with no process, so the UI sat on a silent event stream. Persist the worker pid and disable proxy buffering on the SSE response.
Co-authored-by: Cursor <cursoragent@cursor.com>
content=null is rejected even when tool_calls is set, which 400d the U19 follow-up turn after the first graph query.
Co-authored-by: Cursor <cursoragent@cursor.com>
Resume reused the previous pipeline_complete, so the UI closed the stream and showed no live log while U19 was still reviewing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Empty assistant content is still treated as unset; replay a placeholder and retry once with thinking disabled.
Co-authored-by: Cursor <cursoragent@cursor.com>
Successful reviews are kept; skipped ICs such as a DeepSeek 400 are run again. Reprocess all re-reviews every IC while still using the library cache.
Co-authored-by: Cursor <cursoragent@cursor.com>
A thinking-only turn was replayed as content=null with no tool_calls, which the API rejects with 400 and skipped IC review.
Co-authored-by: Cursor <cursoragent@cursor.com>
Decode EIA/Yageo/AVX chip codes into library specs, and find datasheets when the file is stored under the orderable catalog name.
Co-authored-by: Cursor <cursoragent@cursor.com>
Store BOM MPN and orderable code on the same PDF blob, derive TI datasheet slugs from package/Q1 codes, and map LCSC/DigiKey R/C/L parameters to specs without a model call.
Co-authored-by: Cursor <cursoragent@cursor.com>
Auto-resolve of passives was 400ing because thinking mode cannot be combined with named tool_choice. Also strip BOM descriptions after an em dash before DigiKey search.
Co-authored-by: Cursor <cursoragent@cursor.com>
The lookup required an exact catalog string, so family codes like ESP32-S31-WROOM-3 never picked ESP32-S31-WROOM-3-N16R16V and underscore vs slash MPNs never hit DigiKey.
Co-authored-by: Cursor <cursoragent@cursor.com>
Based on manvalan/pinscope main. Default LLM is DeepSeek with local
skills and PDF ingest. Datasheets are fetched from LCSC/TI, stored in
the component library, and review extracts abs-max with a deeper
checklist. Adds scripts/update-pinscope.sh for the production host.
Agentic schematic validation: datasheet extraction via Claude Console
Skills, netlist/BOM design graph, per-IC direct datasheet review with
page citations, capacitor derating, Next.js report UI.
Extracted from the Pinscope cloud codebase. Auth and billing live in the
private gateway repo behind stable seams (billing_hook.py, adapter files
listed in CLAUDE.md).