- llm_client: SSE-aware streaming calls, empty-content retry, and
bulletproof truncated-JSON recovery (handles unterminated strings,
trailing comma/colon, BOM) so a truncated LLM response no longer 500s
- ontology_generator: raise max_tokens 4096->16384 (JSON was being
truncated) and cap edge source_targets to 10 (Zep API limit) to
fix 400 'source_targets cannot contain more than 10 items'
- graph: log the real exception on 500 for easier diagnosis
- frontend api: surface the backend's actual error message instead of
just 'status code 500'
Background threads (graph building, simulation prep, report generation,
profile generation) now inherit the requesting user's locale preference.
Previously these fell back to 'zh' because Flask request context was
unavailable in spawned threads.
- Updated README.md to reflect the removal of the project creation endpoint, adjusting the workflow steps accordingly.
- Removed the `create_project` function from graph.py, streamlining the project management API by eliminating deprecated functionality.