graphiti-core 0.21.0rc7__tar.gz → 0.21.0rc8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of graphiti-core might be problematic. Click here for more details.
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/PKG-INFO +1 -1
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/utils/bulk_utils.py +4 -3
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/utils/maintenance/edge_operations.py +17 -1
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/pyproject.toml +1 -1
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/utils/maintenance/test_bulk_utils.py +98 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/utils/maintenance/test_edge_operations.py +219 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/uv.lock +1 -1
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.env.example +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.github/dependabot.yml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.github/pull_request_template.md +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.github/secret_scanning.yml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.github/workflows/ai-moderator.yml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.github/workflows/cla.yml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.github/workflows/claude-code-review.yml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.github/workflows/claude.yml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.github/workflows/codeql.yml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.github/workflows/lint.yml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.github/workflows/mcp-server-docker.yml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.github/workflows/release-graphiti-core.yml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.github/workflows/typecheck.yml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.github/workflows/unit_tests.yml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.gitignore +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/AGENTS.md +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/CLAUDE.md +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/CODE_OF_CONDUCT.md +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/CONTRIBUTING.md +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/Dockerfile +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/LICENSE +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/Makefile +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/README.md +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/SECURITY.md +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/Zep-CLA.md +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/conftest.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/depot.json +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/docker-compose.test.yml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/docker-compose.yml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/ellipsis.yaml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/data/manybirds_products.json +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/ecommerce/runner.ipynb +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/ecommerce/runner.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/langgraph-agent/agent.ipynb +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/langgraph-agent/tinybirds-jess.png +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/podcast/podcast_runner.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/podcast/podcast_transcript.txt +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/podcast/transcript_parser.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/quickstart/README.md +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/quickstart/quickstart_falkordb.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/quickstart/quickstart_neo4j.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/quickstart/quickstart_neptune.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/quickstart/requirements.txt +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/wizard_of_oz/parser.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/wizard_of_oz/runner.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/wizard_of_oz/woo.txt +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/cross_encoder/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/cross_encoder/bge_reranker_client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/cross_encoder/client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/cross_encoder/gemini_reranker_client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/cross_encoder/openai_reranker_client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/driver/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/driver/driver.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/driver/falkordb_driver.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/driver/kuzu_driver.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/driver/neo4j_driver.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/driver/neptune_driver.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/edges.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/embedder/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/embedder/azure_openai.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/embedder/client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/embedder/gemini.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/embedder/openai.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/embedder/voyage.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/errors.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/graph_queries.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/graphiti.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/graphiti_types.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/helpers.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/anthropic_client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/azure_openai_client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/config.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/errors.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/gemini_client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/groq_client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/openai_base_client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/openai_client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/openai_generic_client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/utils.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/migrations/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/models/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/models/edges/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/models/edges/edge_db_queries.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/models/nodes/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/models/nodes/node_db_queries.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/nodes.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/prompts/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/prompts/dedupe_edges.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/prompts/dedupe_nodes.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/prompts/eval.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/prompts/extract_edge_dates.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/prompts/extract_edges.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/prompts/extract_nodes.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/prompts/invalidate_edges.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/prompts/lib.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/prompts/models.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/prompts/prompt_helpers.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/prompts/summarize_nodes.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/py.typed +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/search/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/search/search.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/search/search_config.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/search/search_config_recipes.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/search/search_filters.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/search/search_helpers.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/search/search_utils.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/telemetry/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/telemetry/telemetry.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/utils/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/utils/datetime_utils.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/utils/maintenance/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/utils/maintenance/community_operations.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/utils/maintenance/dedup_helpers.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/utils/maintenance/graph_data_operations.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/utils/maintenance/node_operations.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/utils/maintenance/temporal_operations.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/utils/maintenance/utils.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/utils/ontology_utils/entity_types_utils.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/images/arxiv-screenshot.png +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/images/graphiti-graph-intro.gif +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/images/graphiti-intro-slides-stock-2.gif +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/images/simple_graph.svg +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/mcp_server/.env.example +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/mcp_server/.python-version +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/mcp_server/Dockerfile +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/mcp_server/README.md +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/mcp_server/cursor_rules.md +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/mcp_server/docker-compose.yml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/mcp_server/graphiti_mcp_server.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/mcp_server/mcp_config_sse_example.json +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/mcp_server/mcp_config_stdio_example.json +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/mcp_server/pyproject.toml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/mcp_server/uv.lock +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/py.typed +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/pytest.ini +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/.env.example +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/Makefile +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/README.md +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/graph_service/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/graph_service/config.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/graph_service/dto/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/graph_service/dto/common.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/graph_service/dto/ingest.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/graph_service/dto/retrieve.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/graph_service/main.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/graph_service/routers/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/graph_service/routers/ingest.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/graph_service/routers/retrieve.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/graph_service/zep_graphiti.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/pyproject.toml +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/uv.lock +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/signatures/version1/cla.json +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/cross_encoder/test_bge_reranker_client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/cross_encoder/test_gemini_reranker_client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/driver/__init__.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/driver/test_falkordb_driver.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/embedder/embedder_fixtures.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/embedder/test_gemini.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/embedder/test_openai.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/embedder/test_voyage.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/evals/data/longmemeval_data/README.md +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/evals/data/longmemeval_data/longmemeval_oracle.json +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/evals/eval_cli.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/evals/eval_e2e_graph_building.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/evals/pytest.ini +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/evals/utils.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/helpers_test.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/llm_client/test_anthropic_client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/llm_client/test_anthropic_client_int.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/llm_client/test_client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/llm_client/test_errors.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/llm_client/test_gemini_client.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/test_edge_int.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/test_entity_exclusion_int.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/test_graphiti_int.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/test_graphiti_mock.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/test_node_int.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/utils/maintenance/test_node_operations.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/utils/maintenance/test_temporal_operations_int.py +0 -0
- {graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/utils/search/search_utils_test.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: graphiti-core
|
|
3
|
-
Version: 0.21.
|
|
3
|
+
Version: 0.21.0rc8
|
|
4
4
|
Summary: A temporal graph building library
|
|
5
5
|
Project-URL: Homepage, https://help.getzep.com/graphiti/graphiti/overview
|
|
6
6
|
Project-URL: Repository, https://github.com/getzep/graphiti
|
|
@@ -433,14 +433,15 @@ async def dedupe_edges_bulk(
|
|
|
433
433
|
dedupe_tuples: list[tuple[EpisodicNode, EntityEdge, list[EntityEdge]]] = []
|
|
434
434
|
for i, edges_i in enumerate(extracted_edges):
|
|
435
435
|
existing_edges: list[EntityEdge] = []
|
|
436
|
-
for
|
|
437
|
-
if i == j:
|
|
438
|
-
continue
|
|
436
|
+
for edges_j in extracted_edges:
|
|
439
437
|
existing_edges += edges_j
|
|
440
438
|
|
|
441
439
|
for edge in edges_i:
|
|
442
440
|
candidates: list[EntityEdge] = []
|
|
443
441
|
for existing_edge in existing_edges:
|
|
442
|
+
# Skip self-comparison
|
|
443
|
+
if edge.uuid == existing_edge.uuid:
|
|
444
|
+
continue
|
|
444
445
|
# Approximate BM25 by checking for word overlaps (this is faster than creating many in-memory indices)
|
|
445
446
|
# This approach will cast a wider net than BM25, which is ideal for this use case
|
|
446
447
|
if (
|
|
@@ -232,6 +232,22 @@ async def resolve_extracted_edges(
|
|
|
232
232
|
edge_types: dict[str, type[BaseModel]],
|
|
233
233
|
edge_type_map: dict[tuple[str, str], list[str]],
|
|
234
234
|
) -> tuple[list[EntityEdge], list[EntityEdge]]:
|
|
235
|
+
# Fast path: deduplicate exact matches within the extracted edges before parallel processing
|
|
236
|
+
seen: dict[tuple[str, str, str], EntityEdge] = {}
|
|
237
|
+
deduplicated_edges: list[EntityEdge] = []
|
|
238
|
+
|
|
239
|
+
for edge in extracted_edges:
|
|
240
|
+
key = (
|
|
241
|
+
edge.source_node_uuid,
|
|
242
|
+
edge.target_node_uuid,
|
|
243
|
+
_normalize_string_exact(edge.fact),
|
|
244
|
+
)
|
|
245
|
+
if key not in seen:
|
|
246
|
+
seen[key] = edge
|
|
247
|
+
deduplicated_edges.append(edge)
|
|
248
|
+
|
|
249
|
+
extracted_edges = deduplicated_edges
|
|
250
|
+
|
|
235
251
|
driver = clients.driver
|
|
236
252
|
llm_client = clients.llm_client
|
|
237
253
|
embedder = clients.embedder
|
|
@@ -465,7 +481,7 @@ async def resolve_extracted_edge(
|
|
|
465
481
|
|
|
466
482
|
# Prepare context for LLM
|
|
467
483
|
related_edges_context = [
|
|
468
|
-
{'id':
|
|
484
|
+
{'id': i, 'fact': edge.fact} for i, edge in enumerate(related_edges)
|
|
469
485
|
]
|
|
470
486
|
|
|
471
487
|
invalidation_edge_candidates_context = [
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "graphiti-core"
|
|
3
3
|
description = "A temporal graph building library"
|
|
4
|
-
version = "0.21.
|
|
4
|
+
version = "0.21.0pre8"
|
|
5
5
|
authors = [
|
|
6
6
|
{ name = "Paul Paliychuk", email = "paul@getzep.com" },
|
|
7
7
|
{ name = "Preston Rasmussen", email = "preston@getzep.com" },
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/utils/maintenance/test_bulk_utils.py
RENAMED
|
@@ -230,3 +230,101 @@ def test_resolve_edge_pointers_updates_sources():
|
|
|
230
230
|
|
|
231
231
|
assert edge.source_node_uuid == 'canonical'
|
|
232
232
|
assert edge.target_node_uuid == 'target'
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
@pytest.mark.asyncio
|
|
236
|
+
async def test_dedupe_edges_bulk_deduplicates_within_episode(monkeypatch):
|
|
237
|
+
"""Test that dedupe_edges_bulk correctly compares edges within the same episode.
|
|
238
|
+
|
|
239
|
+
This test verifies the fix that removed the `if i == j: continue` check,
|
|
240
|
+
which was preventing edges from the same episode from being compared against each other.
|
|
241
|
+
"""
|
|
242
|
+
clients = _make_clients()
|
|
243
|
+
|
|
244
|
+
# Track which edges are compared
|
|
245
|
+
comparisons_made = []
|
|
246
|
+
|
|
247
|
+
# Create mock embedder that sets embedding values
|
|
248
|
+
async def mock_create_embeddings(embedder, edges):
|
|
249
|
+
for edge in edges:
|
|
250
|
+
edge.fact_embedding = [0.1, 0.2, 0.3]
|
|
251
|
+
|
|
252
|
+
monkeypatch.setattr(bulk_utils, 'create_entity_edge_embeddings', mock_create_embeddings)
|
|
253
|
+
|
|
254
|
+
# Mock resolve_extracted_edge to track comparisons and mark duplicates
|
|
255
|
+
async def mock_resolve_extracted_edge(
|
|
256
|
+
llm_client,
|
|
257
|
+
extracted_edge,
|
|
258
|
+
related_edges,
|
|
259
|
+
existing_edges,
|
|
260
|
+
episode,
|
|
261
|
+
edge_type_candidates=None,
|
|
262
|
+
custom_edge_type_names=None,
|
|
263
|
+
ensure_ascii=False,
|
|
264
|
+
):
|
|
265
|
+
# Track that this edge was compared against the related_edges
|
|
266
|
+
comparisons_made.append((extracted_edge.uuid, [r.uuid for r in related_edges]))
|
|
267
|
+
|
|
268
|
+
# If there are related edges with same source/target/fact, mark as duplicate
|
|
269
|
+
for related in related_edges:
|
|
270
|
+
if (
|
|
271
|
+
related.uuid != extracted_edge.uuid # Can't be duplicate of self
|
|
272
|
+
and related.source_node_uuid == extracted_edge.source_node_uuid
|
|
273
|
+
and related.target_node_uuid == extracted_edge.target_node_uuid
|
|
274
|
+
and related.fact.strip().lower() == extracted_edge.fact.strip().lower()
|
|
275
|
+
):
|
|
276
|
+
# Return the related edge and mark extracted_edge as duplicate
|
|
277
|
+
return related, [], [related]
|
|
278
|
+
# Otherwise return the extracted edge as-is
|
|
279
|
+
return extracted_edge, [], []
|
|
280
|
+
|
|
281
|
+
monkeypatch.setattr(bulk_utils, 'resolve_extracted_edge', mock_resolve_extracted_edge)
|
|
282
|
+
|
|
283
|
+
episode = _make_episode('1')
|
|
284
|
+
source_uuid = 'source-uuid'
|
|
285
|
+
target_uuid = 'target-uuid'
|
|
286
|
+
|
|
287
|
+
# Create 3 identical edges within the same episode
|
|
288
|
+
edge1 = EntityEdge(
|
|
289
|
+
name='recommends',
|
|
290
|
+
fact='assistant recommends yoga poses',
|
|
291
|
+
group_id='group',
|
|
292
|
+
source_node_uuid=source_uuid,
|
|
293
|
+
target_node_uuid=target_uuid,
|
|
294
|
+
created_at=utc_now(),
|
|
295
|
+
episodes=[episode.uuid],
|
|
296
|
+
)
|
|
297
|
+
edge2 = EntityEdge(
|
|
298
|
+
name='recommends',
|
|
299
|
+
fact='assistant recommends yoga poses',
|
|
300
|
+
group_id='group',
|
|
301
|
+
source_node_uuid=source_uuid,
|
|
302
|
+
target_node_uuid=target_uuid,
|
|
303
|
+
created_at=utc_now(),
|
|
304
|
+
episodes=[episode.uuid],
|
|
305
|
+
)
|
|
306
|
+
edge3 = EntityEdge(
|
|
307
|
+
name='recommends',
|
|
308
|
+
fact='assistant recommends yoga poses',
|
|
309
|
+
group_id='group',
|
|
310
|
+
source_node_uuid=source_uuid,
|
|
311
|
+
target_node_uuid=target_uuid,
|
|
312
|
+
created_at=utc_now(),
|
|
313
|
+
episodes=[episode.uuid],
|
|
314
|
+
)
|
|
315
|
+
|
|
316
|
+
await bulk_utils.dedupe_edges_bulk(
|
|
317
|
+
clients,
|
|
318
|
+
[[edge1, edge2, edge3]],
|
|
319
|
+
[(episode, [])],
|
|
320
|
+
[],
|
|
321
|
+
{},
|
|
322
|
+
{},
|
|
323
|
+
)
|
|
324
|
+
|
|
325
|
+
# Verify that edges were compared against each other (within same episode)
|
|
326
|
+
# Each edge should have been compared against all 3 edges (including itself, which gets filtered)
|
|
327
|
+
assert len(comparisons_made) == 3
|
|
328
|
+
for _, compared_against in comparisons_made:
|
|
329
|
+
# Each edge should have access to all 3 edges as candidates
|
|
330
|
+
assert len(compared_against) >= 2 # At least 2 others (self is filtered out)
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/utils/maintenance/test_edge_operations.py
RENAMED
|
@@ -434,3 +434,222 @@ async def test_resolve_extracted_edge_accepts_unknown_fact_type(mock_llm_client)
|
|
|
434
434
|
assert resolved_edge.attributes == {}
|
|
435
435
|
assert duplicates == []
|
|
436
436
|
assert invalidated == []
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
@pytest.mark.asyncio
|
|
440
|
+
async def test_resolve_extracted_edge_uses_integer_indices_for_duplicates(mock_llm_client):
|
|
441
|
+
"""Test that resolve_extracted_edge correctly uses integer indices for LLM duplicate detection."""
|
|
442
|
+
# Mock LLM to return duplicate_facts with integer indices
|
|
443
|
+
mock_llm_client.generate_response.return_value = {
|
|
444
|
+
'duplicate_facts': [0, 1], # LLM identifies first two related edges as duplicates
|
|
445
|
+
'contradicted_facts': [],
|
|
446
|
+
'fact_type': 'DEFAULT',
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
extracted_edge = EntityEdge(
|
|
450
|
+
source_node_uuid='source_uuid',
|
|
451
|
+
target_node_uuid='target_uuid',
|
|
452
|
+
name='test_edge',
|
|
453
|
+
group_id='group_1',
|
|
454
|
+
fact='User likes yoga',
|
|
455
|
+
episodes=[],
|
|
456
|
+
created_at=datetime.now(timezone.utc),
|
|
457
|
+
valid_at=None,
|
|
458
|
+
invalid_at=None,
|
|
459
|
+
)
|
|
460
|
+
|
|
461
|
+
episode = EpisodicNode(
|
|
462
|
+
uuid='episode_uuid',
|
|
463
|
+
name='Episode',
|
|
464
|
+
group_id='group_1',
|
|
465
|
+
source='message',
|
|
466
|
+
source_description='desc',
|
|
467
|
+
content='Episode content',
|
|
468
|
+
valid_at=datetime.now(timezone.utc),
|
|
469
|
+
)
|
|
470
|
+
|
|
471
|
+
# Create multiple related edges - LLM should receive these with integer indices
|
|
472
|
+
related_edge_0 = EntityEdge(
|
|
473
|
+
source_node_uuid='source_uuid',
|
|
474
|
+
target_node_uuid='target_uuid',
|
|
475
|
+
name='test_edge',
|
|
476
|
+
group_id='group_1',
|
|
477
|
+
fact='User enjoys yoga',
|
|
478
|
+
episodes=['episode_1'],
|
|
479
|
+
created_at=datetime.now(timezone.utc) - timedelta(days=1),
|
|
480
|
+
valid_at=None,
|
|
481
|
+
invalid_at=None,
|
|
482
|
+
)
|
|
483
|
+
|
|
484
|
+
related_edge_1 = EntityEdge(
|
|
485
|
+
source_node_uuid='source_uuid',
|
|
486
|
+
target_node_uuid='target_uuid',
|
|
487
|
+
name='test_edge',
|
|
488
|
+
group_id='group_1',
|
|
489
|
+
fact='User practices yoga',
|
|
490
|
+
episodes=['episode_2'],
|
|
491
|
+
created_at=datetime.now(timezone.utc) - timedelta(days=2),
|
|
492
|
+
valid_at=None,
|
|
493
|
+
invalid_at=None,
|
|
494
|
+
)
|
|
495
|
+
|
|
496
|
+
related_edge_2 = EntityEdge(
|
|
497
|
+
source_node_uuid='source_uuid',
|
|
498
|
+
target_node_uuid='target_uuid',
|
|
499
|
+
name='test_edge',
|
|
500
|
+
group_id='group_1',
|
|
501
|
+
fact='User loves swimming',
|
|
502
|
+
episodes=['episode_3'],
|
|
503
|
+
created_at=datetime.now(timezone.utc) - timedelta(days=3),
|
|
504
|
+
valid_at=None,
|
|
505
|
+
invalid_at=None,
|
|
506
|
+
)
|
|
507
|
+
|
|
508
|
+
related_edges = [related_edge_0, related_edge_1, related_edge_2]
|
|
509
|
+
|
|
510
|
+
resolved_edge, invalidated, duplicates = await resolve_extracted_edge(
|
|
511
|
+
mock_llm_client,
|
|
512
|
+
extracted_edge,
|
|
513
|
+
related_edges,
|
|
514
|
+
[],
|
|
515
|
+
episode,
|
|
516
|
+
edge_type_candidates=None,
|
|
517
|
+
custom_edge_type_names=set(),
|
|
518
|
+
ensure_ascii=True,
|
|
519
|
+
)
|
|
520
|
+
|
|
521
|
+
# Verify LLM was called
|
|
522
|
+
mock_llm_client.generate_response.assert_called_once()
|
|
523
|
+
|
|
524
|
+
# Verify the system correctly identified duplicates using integer indices
|
|
525
|
+
# The LLM returned [0, 1], so related_edge_0 and related_edge_1 should be marked as duplicates
|
|
526
|
+
assert len(duplicates) == 2
|
|
527
|
+
assert related_edge_0 in duplicates
|
|
528
|
+
assert related_edge_1 in duplicates
|
|
529
|
+
assert invalidated == []
|
|
530
|
+
|
|
531
|
+
# Verify that the resolved edge is one of the duplicates (the first one found)
|
|
532
|
+
# Check UUID since the episode list gets modified
|
|
533
|
+
assert resolved_edge.uuid == related_edge_0.uuid
|
|
534
|
+
assert episode.uuid in resolved_edge.episodes
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
@pytest.mark.asyncio
|
|
538
|
+
async def test_resolve_extracted_edges_fast_path_deduplication(monkeypatch):
|
|
539
|
+
"""Test that resolve_extracted_edges deduplicates exact matches before parallel processing."""
|
|
540
|
+
from graphiti_core.utils.maintenance import edge_operations as edge_ops
|
|
541
|
+
|
|
542
|
+
monkeypatch.setattr(edge_ops, 'create_entity_edge_embeddings', AsyncMock(return_value=None))
|
|
543
|
+
monkeypatch.setattr(EntityEdge, 'get_between_nodes', AsyncMock(return_value=[]))
|
|
544
|
+
|
|
545
|
+
# Track how many times resolve_extracted_edge is called
|
|
546
|
+
resolve_call_count = 0
|
|
547
|
+
|
|
548
|
+
async def mock_resolve_extracted_edge(
|
|
549
|
+
llm_client,
|
|
550
|
+
extracted_edge,
|
|
551
|
+
related_edges,
|
|
552
|
+
existing_edges,
|
|
553
|
+
episode,
|
|
554
|
+
edge_type_candidates=None,
|
|
555
|
+
custom_edge_type_names=None,
|
|
556
|
+
ensure_ascii=False,
|
|
557
|
+
):
|
|
558
|
+
nonlocal resolve_call_count
|
|
559
|
+
resolve_call_count += 1
|
|
560
|
+
return extracted_edge, [], []
|
|
561
|
+
|
|
562
|
+
# Mock semaphore_gather to execute awaitable immediately
|
|
563
|
+
async def immediate_gather(*aws, max_coroutines=None):
|
|
564
|
+
results = []
|
|
565
|
+
for aw in aws:
|
|
566
|
+
results.append(await aw)
|
|
567
|
+
return results
|
|
568
|
+
|
|
569
|
+
monkeypatch.setattr(edge_ops, 'semaphore_gather', immediate_gather)
|
|
570
|
+
monkeypatch.setattr(edge_ops, 'search', AsyncMock(return_value=SearchResults()))
|
|
571
|
+
monkeypatch.setattr(edge_ops, 'resolve_extracted_edge', mock_resolve_extracted_edge)
|
|
572
|
+
|
|
573
|
+
llm_client = MagicMock()
|
|
574
|
+
clients = SimpleNamespace(
|
|
575
|
+
driver=MagicMock(),
|
|
576
|
+
llm_client=llm_client,
|
|
577
|
+
embedder=MagicMock(),
|
|
578
|
+
cross_encoder=MagicMock(),
|
|
579
|
+
ensure_ascii=True,
|
|
580
|
+
)
|
|
581
|
+
|
|
582
|
+
source_node = EntityNode(
|
|
583
|
+
uuid='source_uuid',
|
|
584
|
+
name='Assistant',
|
|
585
|
+
group_id='group_1',
|
|
586
|
+
labels=['Entity'],
|
|
587
|
+
)
|
|
588
|
+
target_node = EntityNode(
|
|
589
|
+
uuid='target_uuid',
|
|
590
|
+
name='User',
|
|
591
|
+
group_id='group_1',
|
|
592
|
+
labels=['Entity'],
|
|
593
|
+
)
|
|
594
|
+
|
|
595
|
+
# Create 3 identical edges
|
|
596
|
+
edge1 = EntityEdge(
|
|
597
|
+
source_node_uuid=source_node.uuid,
|
|
598
|
+
target_node_uuid=target_node.uuid,
|
|
599
|
+
name='recommends',
|
|
600
|
+
group_id='group_1',
|
|
601
|
+
fact='assistant recommends yoga poses',
|
|
602
|
+
episodes=[],
|
|
603
|
+
created_at=datetime.now(timezone.utc),
|
|
604
|
+
valid_at=None,
|
|
605
|
+
invalid_at=None,
|
|
606
|
+
)
|
|
607
|
+
|
|
608
|
+
edge2 = EntityEdge(
|
|
609
|
+
source_node_uuid=source_node.uuid,
|
|
610
|
+
target_node_uuid=target_node.uuid,
|
|
611
|
+
name='recommends',
|
|
612
|
+
group_id='group_1',
|
|
613
|
+
fact=' Assistant Recommends YOGA Poses ', # Different whitespace/case
|
|
614
|
+
episodes=[],
|
|
615
|
+
created_at=datetime.now(timezone.utc),
|
|
616
|
+
valid_at=None,
|
|
617
|
+
invalid_at=None,
|
|
618
|
+
)
|
|
619
|
+
|
|
620
|
+
edge3 = EntityEdge(
|
|
621
|
+
source_node_uuid=source_node.uuid,
|
|
622
|
+
target_node_uuid=target_node.uuid,
|
|
623
|
+
name='recommends',
|
|
624
|
+
group_id='group_1',
|
|
625
|
+
fact='assistant recommends yoga poses',
|
|
626
|
+
episodes=[],
|
|
627
|
+
created_at=datetime.now(timezone.utc),
|
|
628
|
+
valid_at=None,
|
|
629
|
+
invalid_at=None,
|
|
630
|
+
)
|
|
631
|
+
|
|
632
|
+
episode = EpisodicNode(
|
|
633
|
+
uuid='episode_uuid',
|
|
634
|
+
name='Episode',
|
|
635
|
+
group_id='group_1',
|
|
636
|
+
source='message',
|
|
637
|
+
source_description='desc',
|
|
638
|
+
content='Episode content',
|
|
639
|
+
valid_at=datetime.now(timezone.utc),
|
|
640
|
+
)
|
|
641
|
+
|
|
642
|
+
resolved_edges, invalidated_edges = await resolve_extracted_edges(
|
|
643
|
+
clients,
|
|
644
|
+
[edge1, edge2, edge3],
|
|
645
|
+
episode,
|
|
646
|
+
[source_node, target_node],
|
|
647
|
+
{},
|
|
648
|
+
{},
|
|
649
|
+
)
|
|
650
|
+
|
|
651
|
+
# Fast path should have deduplicated the 3 identical edges to 1
|
|
652
|
+
# So resolve_extracted_edge should only be called once
|
|
653
|
+
assert resolve_call_count == 1
|
|
654
|
+
assert len(resolved_edges) == 1
|
|
655
|
+
assert invalidated_edges == []
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.github/workflows/claude-code-review.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/.github/workflows/release-graphiti-core.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/langgraph-agent/tinybirds-jess.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/quickstart/quickstart_falkordb.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/examples/quickstart/quickstart_neptune.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/anthropic_client.py
RENAMED
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/azure_openai_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/gemini_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/openai_base_client.py
RENAMED
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/llm_client/openai_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/models/edges/edge_db_queries.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/models/nodes/node_db_queries.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/prompts/extract_edge_dates.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/prompts/invalidate_edges.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/prompts/summarize_nodes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/search/search_config_recipes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/utils/maintenance/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/utils/maintenance/dedup_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/graphiti_core/utils/maintenance/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/images/graphiti-intro-slides-stock-2.gif
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/mcp_server/mcp_config_stdio_example.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/graph_service/routers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/server/graph_service/routers/retrieve.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/cross_encoder/test_bge_reranker_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/evals/data/longmemeval_data/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/llm_client/test_anthropic_client.py
RENAMED
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/llm_client/test_anthropic_client_int.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.21.0rc7 → graphiti_core-0.21.0rc8}/tests/utils/maintenance/test_node_operations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|