startup_event was registered as a Hypercorn startup hook AND called
manually in run_server_with_startup(), causing it to execute twice.
The second execution blocked the server from accepting connections
until vector init completed again.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Server now starts serving vector-only queries in ~1-2 minutes instead of
30-60 minutes. GraphRAG initializes in a background task and its tool is
dynamically added to the agent when ready.
- Cache extracted triples to disk (neo4j_triples.pickle) so Neo4j can be
repopulated without expensive LLM re-extraction
- Split initialize_global_index() into initialize_vector_index() (fast) and
initialize_graphrag_components() (background)
- Add graphrag_ready/graphrag_initializing status flags to shared_state
- Launch GraphRAG init as asyncio background task in main.py
- Report GraphRAG status in /status endpoint for frontend awareness
- Add comprehensive migration guide for applying to other projects
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The metadata parameter was removed from ToolOutput in recent
llama_index versions. Moved metadata fields into raw_input and
use is_error flag for error cases.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Pinned to neo4j:5 to match the Python driver. Uses named volumes
and restart policy for production use.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>