Merge branch 'main' into graphid-isolation

This commit is contained in:
Naseem Ali 2025-10-27 17:16:00 +02:00 committed by GitHub
commit e809bfdc94
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 22 additions and 16 deletions

View file

@ -14,8 +14,8 @@ See the License for the specific language governing permissions and
limitations under the License.
"""
import datetime
import asyncio
import datetime
import logging
from typing import TYPE_CHECKING, Any
@ -262,17 +262,17 @@ class FalkorDriver(GraphDriver):
# Create a new instance of FalkorDriver with the same connection but a different database
cloned = FalkorDriver(falkor_db=self.client, database=database)
return cloned
return cloned
async def health_check(self) -> None:
"""Check FalkorDB connectivity by running a simple query."""
try:
await self.execute_query("MATCH (n) RETURN 1 LIMIT 1")
await self.execute_query('MATCH (n) RETURN 1 LIMIT 1')
return None
except Exception as e:
print(f"FalkorDB health check failed: {e}")
print(f'FalkorDB health check failed: {e}')
raise
@staticmethod
def convert_datetimes_to_strings(obj):
if isinstance(obj, dict):

View file

@ -113,5 +113,5 @@ class Neo4jDriver(GraphDriver):
await self.client.verify_connectivity()
return None
except Exception as e:
print(f"Neo4j health check failed: {e}")
print(f'Neo4j health check failed: {e}')
raise

View file

@ -214,12 +214,10 @@ async def add_nodes_and_edges_bulk_tx(
edges.append(edge_data)
if driver.graph_operations_interface:
await driver.graph_operations_interface.episodic_node_save_bulk(
None, driver, tx, episodic_nodes
)
await driver.graph_operations_interface.episodic_node_save_bulk(None, driver, tx, episodes)
await driver.graph_operations_interface.node_save_bulk(None, driver, tx, nodes)
await driver.graph_operations_interface.episodic_edge_save_bulk(
None, driver, tx, episodic_edges
None, driver, tx, [edge.model_dump() for edge in episodic_edges]
)
await driver.graph_operations_interface.edge_save_bulk(None, driver, tx, edges)

View file

@ -467,6 +467,7 @@ class Neo4jConfig(BaseModel):
password=os.environ.get('NEO4J_PASSWORD', 'password'),
)
class FalkorConfig(BaseModel):
"""Configuration for FalkorDB database connection."""
@ -483,6 +484,7 @@ class FalkorConfig(BaseModel):
password = os.environ.get('FALKORDB_PASSWORD', '')
return cls(host=host, port=port, user=user, password=password)
class GraphitiConfig(BaseModel):
"""Configuration for Graphiti client.
@ -504,7 +506,9 @@ class GraphitiConfig(BaseModel):
"""Create a configuration instance from environment variables."""
db_type = os.environ.get('DATABASE_TYPE')
if not db_type:
raise ValueError('DATABASE_TYPE environment variable must be set (e.g., "neo4j" or "falkordb")')
raise ValueError(
'DATABASE_TYPE environment variable must be set (e.g., "neo4j" or "falkordb")'
)
if db_type == 'neo4j':
return cls(
llm=GraphitiLLMConfig.from_env(),
@ -622,7 +626,9 @@ async def initialize_graphiti():
raise ValueError('NEO4J_URI, NEO4J_USER, and NEO4J_PASSWORD must be set')
# Validate FalkorDB configuration
if config.database_type == 'falkordb' and (not config.falkordb.host or not config.falkordb.port):
if config.database_type == 'falkordb' and (
not config.falkordb.host or not config.falkordb.port
):
raise ValueError('FALKORDB_HOST and FALKORDB_PORT must be set for FalkorDB')
embedder_client = config.embedder.create_client()
@ -637,6 +643,7 @@ async def initialize_graphiti():
)
elif config.database_type == 'falkordb':
from graphiti_core.driver.falkordb_driver import FalkorDriver
host = config.falkordb.host if hasattr(config.falkordb, 'host') else 'localhost'
port = int(config.falkordb.port) if hasattr(config.falkordb, 'port') else 6379
username = config.falkordb.user or None
@ -1205,10 +1212,11 @@ async def get_status() -> StatusResponse:
client = cast(Graphiti, graphiti_client)
# Test database connection
await client.driver.health_check() # type: ignore # type: ignore
await client.driver.health_check() # type: ignore # type: ignore
return StatusResponse(
status='ok', message=f'Graphiti MCP server is running and connected to {config.database_type}'
status='ok',
message=f'Graphiti MCP server is running and connected to {config.database_type}',
)
except Exception as e:
error_msg = str(e)

View file

@ -1,7 +1,7 @@
[project]
name = "graphiti-core"
description = "A temporal graph building library"
version = "0.22.0"
version = "0.22.1pre1"
authors = [
{ name = "Paul Paliychuk", email = "paul@getzep.com" },
{ name = "Preston Rasmussen", email = "preston@getzep.com" },

2
uv.lock generated
View file

@ -783,7 +783,7 @@ wheels = [
[[package]]
name = "graphiti-core"
version = "0.22.0"
version = "0.22.1rc1"
source = { editable = "." }
dependencies = [
{ name = "diskcache" },