Commit graph

823 commits

Author SHA1 Message Date
Daniel Chalef
549ee43fa0 feat: Add standalone Dockerfile for external database deployments
- Create Dockerfile.standalone for MCP server without embedded FalkorDB
- Supports both Neo4j and FalkorDB via DATABASE_PROVIDER build arg
- Update docker-compose-neo4j.yml to use standalone Dockerfile
- Update docker-compose-falkordb.yml to use standalone Dockerfile
- Fixes issue where Neo4j compose was starting embedded FalkorDB
- Separate images: standalone-neo4j and standalone-falkordb
2025-10-30 21:52:07 -07:00
Daniel Chalef
aff583c400 conductor-checkpoint-msg_01LqYK6nj1ZFfRNBRP15FMLo 2025-10-30 21:51:16 -07:00
Daniel Chalef
69af780be9 conductor-checkpoint-msg_01EUW7ArnNM6kHCgFDrQZrro 2025-10-30 21:50:11 -07:00
Daniel Chalef
def23863f2 conductor-checkpoint-msg_01DoLD51xqrrdFvq3AgkYuQi 2025-10-30 21:47:11 -07:00
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