0.1.41 Release fixes (#889)

<!-- .github/pull_request_template.md -->

## Description
<!-- Provide a clear description of the changes in this PR -->

## DCO Affirmation
I affirm that all code in every commit of this pull request conforms to
the terms of the Topoteretes Developer Certificate of Origin.
This commit is contained in:
Boris 2025-05-30 22:06:14 +02:00 committed by GitHub
parent d8ef2903ba
commit d91602e24b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 5150 additions and 16 deletions

View file

@ -45,6 +45,10 @@ uv sync --extra debug --extra api --extra postgres --extra weaviate --extra qdra
FROM python:3.12-slim-bookworm
RUN apt-get update && apt-get install -y \
libpq5 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=uv /app /app
@ -57,5 +61,7 @@ RUN chmod +x /app/entrypoint.sh
ENV PATH="/app/.venv/bin:$PATH"
ENV PYTHONPATH=/app
# ENV LOG_LEVEL=ERROR
ENV PYTHONUNBUFFERED=1
ENTRYPOINT ["/app/entrypoint.sh"]

View file

@ -21,10 +21,7 @@ depends_on: Union[str, Sequence[str], None] = "8057ae7329c2"
def upgrade() -> None:
try:
await_only(create_default_user())
except Exception:
pass
await_only(create_default_user())
def downgrade() -> None:

View file

@ -48,6 +48,10 @@ RUN --mount=type=cache,target=/root/.cache/uv \
FROM python:3.12-slim-bookworm
RUN apt-get update && apt-get install -y \
libpq5 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=uv /root/.local /root/.local

View file

@ -13,17 +13,22 @@ echo "Environment: $ENVIRONMENT"
# inconsistencies and should cause the startup to fail. This check allows for
# smooth redeployments and container restarts while maintaining data integrity.
echo "Running database migrations..."
MIGRATION_OUTPUT=$(uv run alembic upgrade head 2>&1) || {
if [[ $MIGRATION_OUTPUT == *"UserAlreadyExists"* ]] || [[ $MIGRATION_OUTPUT == *"User default_user@example.com already exists"* ]]; then
MIGRATION_OUTPUT=$(alembic upgrade head 2>&1)
MIGRATION_EXIT_CODE=$?
if [[ $MIGRATION_EXIT_CODE -ne 0 ]]; then
if [[ "$MIGRATION_OUTPUT" == *"UserAlreadyExists"* ]] || [[ "$MIGRATION_OUTPUT" == *"User default_user@example.com already exists"* ]]; then
echo "Warning: Default user already exists, continuing startup..."
else
echo "Migration failed with unexpected error:"
echo "$MIGRATION_OUTPUT"
echo "Migration failed with unexpected error."
exit 1
fi
}
fi
echo "Starting Cognee MCP Server"
echo "Database migrations done."
echo "Starting Cognee MCP Server..."
# Add startup delay to ensure DB is ready
sleep 2

5083
cognee-mcp/uv.lock generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,2 +1,3 @@
from .config import get_graph_config
from .get_graph_engine import get_graph_engine
from .use_graph_adapter import use_graph_adapter

View file

@ -2,8 +2,10 @@
from functools import lru_cache
from .config import get_graph_config
from .graph_db_interface import GraphDBInterface
from .supported_databases import supported_databases
async def get_graph_engine() -> GraphDBInterface:
@ -74,6 +76,15 @@ def create_graph_engine(
specified.
"""
if graph_database_provider in supported_databases:
adapter = supported_databases[graph_database_provider]
return adapter(
graph_database_url=graph_database_url,
graph_database_username=graph_database_username,
graph_database_password=graph_database_password,
)
if graph_database_provider == "neo4j":
if not (graph_database_url and graph_database_username and graph_database_password):
raise EnvironmentError("Missing required Neo4j credentials.")

View file

@ -0,0 +1 @@
supported_databases = {}

View file

@ -0,0 +1,5 @@
from .supported_databases import supported_databases
def use_graph_adapter(vector_db_name, vector_db_adapter):
supported_databases[vector_db_name] = vector_db_adapter

View file

@ -3,3 +3,4 @@ from .models.CollectionConfig import CollectionConfig
from .vector_db_interface import VectorDBInterface
from .config import get_vectordb_config
from .get_vector_engine import get_vector_engine
from .use_vector_adapter import use_vector_adapter

View file

@ -1,3 +1,4 @@
from .supported_databases import supported_databases
from .embeddings import get_embedding_engine
from functools import lru_cache
@ -38,6 +39,15 @@ def create_vector_engine(
"""
embedding_engine = get_embedding_engine()
if vector_db_provider in supported_databases:
adapter = supported_databases[vector_db_provider]
return adapter(
utl=vector_db_url,
api_key=vector_db_key,
embedding_engine=embedding_engine,
)
if vector_db_provider == "weaviate":
from .weaviate_db import WeaviateAdapter

View file

@ -0,0 +1 @@
supported_databases = {}

View file

@ -0,0 +1,5 @@
from .supported_databases import supported_databases
def use_vector_adapter(vector_db_name, vector_db_adapter):
supported_databases[vector_db_name] = vector_db_adapter

View file

@ -13,7 +13,7 @@ services:
- DEBUG=false # Change to true if debugging
- HOST=0.0.0.0
- ENVIRONMENT=local
- PYTHONPATH=.
- LOG_LEVEL=ERROR
extra_hosts:
# Allows the container to reach your local machine using "host.docker.internal" instead of "localhost"
- "host.docker.internal:host-gateway"

View file

@ -13,15 +13,19 @@ echo "Environment: $ENVIRONMENT"
# inconsistencies and should cause the startup to fail. This check allows for
# smooth redeployments and container restarts while maintaining data integrity.
echo "Running database migrations..."
MIGRATION_OUTPUT=$(alembic upgrade head 2>&1) || {
if [[ $MIGRATION_OUTPUT == *"UserAlreadyExists"* ]] || [[ $MIGRATION_OUTPUT == *"User default_user@example.com already exists"* ]]; then
MIGRATION_OUTPUT=$(alembic upgrade head 2>&1)
MIGRATION_EXIT_CODE=$?
if [[ $MIGRATION_EXIT_CODE -ne 0 ]]; then
if [[ "$MIGRATION_OUTPUT" == *"UserAlreadyExists"* ]] || [[ "$MIGRATION_OUTPUT" == *"User default_user@example.com already exists"* ]]; then
echo "Warning: Default user already exists, continuing startup..."
else
echo "Migration failed with unexpected error:"
echo "$MIGRATION_OUTPUT"
echo "Migration failed with unexpected error."
exit 1
fi
}
fi
echo "Database migrations done."
echo "Starting server..."