Commit graph

819 commits

Author SHA1 Message Date
Daniel Chalef
a8ae6e16d0 fix: Use service config instead of global config in status endpoint
- Changed status check to use graphiti_service.config.database.provider
- Ensures status reports the actual running database, not potentially stale global
- Fixes issue where status always reported falkordb regardless of config
2025-10-30 21:44:29 -07:00
Daniel Chalef
224f167b3f conductor-checkpoint-msg_01WLjwygBwfvbJcVoUMDV3h6 2025-10-30 21:43:53 -07:00
Daniel Chalef
57ad247666 fix: Remove obsolete KuzuDB check from status endpoint
- Remove dead code checking for 'kuzu' provider (was removed)
- Simplify status check to use configured database provider directly
- Status now correctly reports neo4j or falkordb based on config
2025-10-30 21:41:35 -07:00
Daniel Chalef
9c1572bdfa conductor-checkpoint-msg_01XgbmgFaUMPopni4Q8EhG23 2025-10-30 21:40:26 -07:00
Daniel Chalef
c3f6862761 feat: Add specific Neo4j connection error message with startup instructions 2025-10-30 21:29:21 -07:00
Daniel Chalef
cec8a27f68 conductor-checkpoint-msg_01Cd9u1z7pqmX1EG7vXXo4GA 2025-10-30 21:29:00 -07:00
Daniel Chalef
6b716d57d2 feat: Add helpful error message for database connection failures
- Catch Redis/database connection errors during initialization
- Provide clear, formatted error messages with startup instructions
- Include provider-specific guidance (FalkorDB vs Neo4j)
- Improves developer experience when database is not running
2025-10-30 21:28:34 -07:00
Daniel Chalef
008678dc49 conductor-checkpoint-msg_01CXVkHJC8gp5i395MQMhp6D 2025-10-30 21:27:31 -07:00
Daniel Chalef
8bab5db837 fix: Allow None for episode_id_prefix and convert to empty string
- Change episode_id_prefix type to str | None to accept None from YAML
- Add model_post_init to convert None to empty string for backward compatibility
2025-10-30 21:26:20 -07:00
Daniel Chalef
5f0685cd72 conductor-checkpoint-msg_01Bx1BqH3BaBxHMrnsbUQXww 2025-10-30 21:25:47 -07:00
Daniel Chalef
526150d4ca fix: Handle default config path and empty env vars correctly
- Change default config path from 'config.yaml' to 'config/config.yaml'
- Fix env var expansion to return None for empty strings instead of False
- Prevents validation errors when optional string fields have unset env vars
2025-10-30 21:24:54 -07:00
Daniel Chalef
7ffe9859ee conductor-checkpoint-msg_013ZGKfZjdDsqiCkAjAiuEk7 2025-10-30 21:24:09 -07:00
Daniel Chalef
41c661b2b6 conductor-checkpoint-msg_01S2mYUmqLohxEmoZaNqsm2f 2025-10-30 21:23:18 -07:00
Daniel Chalef
e6549e9a61 conductor-checkpoint-msg_019W9KoNBmkobBguViYUj18s 2025-10-30 21:21:50 -07:00
Daniel Chalef
ef8507a9df conductor-checkpoint-msg_01AVxUgejEA9piS6narw4omz 2025-10-30 17:30:36 -07:00
Daniel Chalef
8e44bec395 conductor-checkpoint-msg_01S3x8oHkFTM2x4ZiT81QetV 2025-10-30 17:18:27 -07:00
Daniel Chalef
4f1ea25c57 fix: Change default transport to http, mark SSE as deprecated 2025-10-30 17:11:06 -07:00
Daniel Chalef
2beab1b432 conductor-checkpoint-msg_014fda5sUsvofb537BvqkuBY 2025-10-30 17:10:21 -07:00
Daniel Chalef
89a2dc6941 conductor-checkpoint-msg_018YAxG5GsLq1dBMuGE6kwEJ 2025-10-30 17:08:50 -07:00
Daniel Chalef
c928baa1c6 conductor-checkpoint-msg_015oLk8qck3TbfaCryY9gngJ 2025-10-30 17:08:14 -07:00
Daniel Chalef
5cd3415a33 refactor: Remove duplicate is_reasoning_model calculation in factories.py 2025-10-30 17:03:12 -07:00
Daniel Chalef
d582fb99e9 conductor-checkpoint-msg_01R1zsLmxvwjZ9SwKNhSnQAv 2025-10-30 17:02:57 -07:00
Daniel Chalef
6542645790 conductor-checkpoint-msg_01EnQy5A9dMFD8F11hWKvzGo 2025-10-30 17:02:21 -07:00
Daniel Chalef
ba7a525e9c conductor-checkpoint-msg_01T2cR1aXUjNSegqzXQcW2jC 2025-10-30 17:02:08 -07:00
Daniel Chalef
66aa787729 conductor-checkpoint-msg_01SbjZ9mm9YwqeJHTDUDoKU8 2025-10-30 17:01:34 -07:00
Daniel Chalef
a1f324f6e0 conductor-checkpoint-msg_01WfmUCwXhWxEFtV7R3zJLwT 2025-10-30 16:59:02 -07:00
Daniel Chalef
857e639d32 conductor-checkpoint-msg_013ooHLBEhPccaSY4cFse8vK 2025-10-30 16:58:47 -07:00
Daniel Chalef
2229301fbe conductor-checkpoint-msg_014JsovjGyTM1mGwR1nVWLvX 2025-10-30 16:57:40 -07:00
Daniel Chalef
6cb1930f6d docs: Add current LLM model reference to CLAUDE.md
Added comprehensive model reference section documenting valid model names for OpenAI, Anthropic, and Google Gemini as of January 2025.

OpenAI Models:
- GPT-5 family (reasoning models): gpt-5-mini, gpt-5-nano
- GPT-4.1 family (standard models): gpt-4.1, gpt-4.1-mini, gpt-4.1-nano
- Legacy models: gpt-4o, gpt-4o-mini

Anthropic Models:
- Claude 3.7 family (latest)
- Claude 3.5 family
- Legacy Claude 3 models

Google Gemini Models:
- Gemini 2.5 family (latest)
- Gemini 2.0 family (experimental)
- Gemini 1.5 family (stable)

This documents that model names like gpt-5-mini, gpt-4.1, and gpt-4.1-mini used throughout the codebase are valid OpenAI model identifiers, not errors.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 16:55:51 -07:00
Daniel Chalef
f9ee06700b conductor-checkpoint-msg_014w5iHAnv7mVkKfTroeNkuM 2025-10-30 16:55:13 -07:00
Daniel Chalef
825bc5f5ce conductor-checkpoint-msg_01C3AxzcQQSNZxJcuVxAMYpG 2025-10-30 16:51:26 -07:00
Daniel Chalef
67c6adba31 conductor-checkpoint-msg_018ZD567wd4skoiAz7oML7WX 2025-10-30 16:50:33 -07:00
Daniel Chalef
a75f617823 conductor-checkpoint-msg_01GC2fQiu9gLGPGf8SvG5VW8 2025-10-30 16:49:27 -07:00
Daniel Chalef
51d23e6eaf conductor-checkpoint-msg_01884eN3wprtCkrEgEaRDzko 2025-10-30 16:48:26 -07:00
Daniel Chalef
c6321a65e7 conductor-checkpoint-msg_01UU5jQcfrW5btRJB3zy5KQZ 2025-10-30 16:46:31 -07:00
Daniel Chalef
6e401b07ef conductor-checkpoint-msg_01QPZK2pa2vUMpURRFmX93Jt 2025-10-30 16:45:56 -07:00
Daniel Chalef
f7e5ac2af0 conductor-checkpoint-start 2025-10-30 16:45:33 -07:00
Daniel Chalef
eaea30c914 conductor-checkpoint-msg_01Xe46bzgCGV4c8g4piPtSMQ 2025-10-30 16:43:37 -07:00
Daniel Chalef
d27b210f60 conductor-checkpoint-msg_012B8ESfBFcMeG3tFimpjbce 2025-10-30 16:39:02 -07:00
Daniel Chalef
6b3097599a conductor-checkpoint-msg_017netxNYzmam5Cu8PM2uQXW 2025-10-30 16:36:42 -07:00
Daniel Chalef
d0f494039a Add comprehensive SEMAPHORE_LIMIT documentation
Added detailed documentation for SEMAPHORE_LIMIT configuration to help users optimize episode processing concurrency based on their LLM provider's rate limits.

Changes:

1. **graphiti_mcp_server.py**
   - Expanded inline comments from 3 lines to 26 lines
   - Added provider-specific tuning guidelines (OpenAI, Anthropic, Azure, Ollama)
   - Documented symptoms of too-high/too-low settings
   - Added monitoring recommendations

2. **README.md**
   - Expanded "Concurrency and LLM Provider 429 Rate Limit Errors" section
   - Added tier-specific recommendations for each provider
   - Explained relationship between episode concurrency and LLM request rates
   - Added troubleshooting symptoms and monitoring guidance
   - Included example .env configuration

3. **config.yaml**
   - Added header comment referencing detailed documentation
   - Noted default value and suitable use case

4. **.env.example**
   - Added SEMAPHORE_LIMIT with inline tuning guidelines
   - Quick reference for all major LLM provider tiers
   - Cross-reference to README for full details

Benefits:
- Users can now make informed decisions about concurrency settings
- Reduces likelihood of 429 rate limit errors from misconfiguration
- Helps users maximize throughput within their rate limits
- Provides clear troubleshooting guidance

Addresses PR #1024 review comment about magic number documentation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 16:35:29 -07:00
Daniel Chalef
eb1c603944 conductor-checkpoint-msg_013aEa7tUV8rEmfw38BzJatc 2025-10-30 16:33:48 -07:00
Daniel Chalef
7520c8f8d7 Fix critical PR review issues
Fixed high-impact issues from PR #1024 code review:

1. **Boolean conversion bug (schema.py)**
   - Fixed _expand_env_vars returning strings 'true'/'false' instead of booleans
   - Now properly converts boolean-like strings (true/false/1/0/yes/no/on/off) to actual booleans
   - Simplified logic by removing redundant string-to-string conversions
   - Added support for common boolean string variations

2. **Dependency management (pyproject.toml)**
   - Removed pytest from main dependencies (now only in dev dependencies)
   - Moved azure-identity to optional dependencies under new [azure] group
   - Prevents forcing Azure and testing dependencies on all users

3. **Conditional Azure imports (utils.py)**
   - Made azure-identity import conditional in create_azure_credential_token_provider()
   - Raises helpful ImportError with installation instructions if not available
   - Follows lazy-import pattern for optional dependencies

4. **Documentation fix (graphiti_mcp_server.py)**
   - Fixed confusing JSON escaping in add_memory docstring example
   - Changed from triple-backslash escaping to standard JSON string
   - Updated comment to clarify standard JSON escaping is used

Issues verified as already fixed:
- Docker build context (all docker-compose files use context: ..)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 16:25:34 -07:00
Daniel Chalef
ec1066c4f0 conductor-checkpoint-msg_01KEuAQucnvsH94BwFgCAQXg 2025-10-30 16:22:20 -07:00
Daniel Chalef
7e267b95f8 Fix Anthropic client temperature type error
Fixed pyright type error where temperature parameter (float | None) was being passed directly to Anthropic's messages.create() method which expects (float | Omit).

Changes:
- Build message creation parameters as a dictionary
- Conditionally include temperature only when not None
- Use dictionary unpacking to pass parameters

This allows temperature to be properly omitted when None, rather than passing None as a value.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 16:22:06 -07:00
Daniel Chalef
2326e30263 conductor-checkpoint-msg_01FAgmoDFBPETezbBr18Bpir 2025-10-30 16:20:44 -07:00
Daniel Chalef
7f6b835839 Complete Kuzu removal from MCP server
Removed all remaining Kuzu references from:
- Test fixtures (test_fixtures.py): Changed default database to falkordb, removed kuzu configuration
- Test runner (run_tests.py): Removed kuzu from database choices, checks, and markers
- Integration tests (test_comprehensive_integration.py): Removed kuzu from parameterized tests and environment setup
- Test README: Updated all examples and documentation to reflect falkordb as default
- Docker README: Completely rewrote to remove KuzuDB section, updated with FalkorDB combined image as default

All Kuzu support has been completely removed from the MCP server codebase. FalkorDB (via combined container) is now the default database backend.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 14:13:56 -07:00
Daniel Chalef
1f171f2858 conductor-checkpoint-msg_014wBY9WG9GRXP7cUZ2JiqGz 2025-10-30 14:05:18 -07:00
Daniel Chalef
b9ac3efb69 Replace Kuzu with FalkorDB as default database
BREAKING CHANGE: Kuzu is no longer supported. FalkorDB is now the default.

- Renamed Dockerfile.falkordb-combined to Dockerfile (default)
- Renamed docker-compose-falkordb-combined.yml to docker-compose.yml (default)
- Updated config.yaml to use FalkorDB with localhost:6379 as default
- Removed Kuzu from pyproject.toml dependencies (now only falkordb extra)
- Updated Dockerfile to use graphiti-core[falkordb] instead of [kuzu,falkordb]
- Completely removed all Kuzu references from README
- Updated README to document FalkorDB combined container as default
- Docker Compose now starts single container with FalkorDB + MCP server
- Prerequisites now require Docker instead of Python for default setup
- Removed old Kuzu docker-compose files

Running from command line now requires external FalkorDB instance at localhost:6379
2025-10-30 13:57:07 -07:00
Daniel Chalef
d1bb8554a6 conductor-checkpoint-msg_01KWBc5S8vWzyovUTWLvPYNw 2025-10-30 13:50:35 -07:00