Skip to content

Commit 8df2983

Browse files
committed
refactor: remove unused code and dependencies
1 parent d8cade5 commit 8df2983

19 files changed

Lines changed: 45 additions & 550 deletions

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
with:
1414
python-version: "3.11"
1515
- run: python -m compileall api
16-
- run: python -m pip install -r api/requirements.txt
16+
- run: python -m pip install -r api/requirements-dev.txt
1717
- run: python -m pytest api
1818

1919
mcp:

api/models/conversation.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,6 @@
1-
from datetime import datetime
2-
31
from pydantic import BaseModel, Field, UUID4
42

53

6-
class ConversationResponse(BaseModel):
7-
id: UUID4
8-
extraction_status: str
9-
memories_extracted: int
10-
created_at: datetime
11-
12-
134
class ConversationCaptureRequest(BaseModel):
145
user_message: str = Field(min_length=1, max_length=20000)
156
assistant_response: str = Field(min_length=1, max_length=20000)

api/models/log.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from datetime import datetime
22

3-
from pydantic import BaseModel, Field, UUID4
3+
from pydantic import BaseModel, UUID4
44

55

66
class RetrievedMemoryLog(BaseModel):
@@ -37,9 +37,3 @@ class ClientRegistryResponse(BaseModel):
3737

3838
class RetrievalLogDetailResponse(RetrievalLogResponse):
3939
query_embedding_dimensions: int | None
40-
41-
42-
class RetrievalLogListParams(BaseModel):
43-
limit: int = Field(default=20, ge=1, le=100)
44-
offset: int = Field(default=0, ge=0)
45-
conversation_id: UUID4 | None = None

api/requirements-dev.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
-r requirements.txt
2+
pytest==8.2.2
3+
pytest-asyncio==0.23.7

api/requirements.txt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,5 @@ pydantic==2.7.0
55
pydantic-settings==2.3.0
66
sentence-transformers==3.0.0
77
httpx==0.27.0
8-
python-multipart==0.0.9
9-
openai==1.35.0
10-
google-generativeai==0.7.0
11-
pytest==8.2.2
12-
pytest-asyncio==0.23.7
138
cryptography==43.0.0
149
stripe==15.3.0

api/services/memories.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -544,16 +544,6 @@ def build_memory_filters(
544544
return status_clause, category_clause, params
545545

546546

547-
def filter_memory_rows(rows: list[dict[str, object]], status: MemoryStatus | None, category: str | None) -> list[dict[str, object]]:
548-
normalized_category = normalize_category(category) if category else None
549-
return [
550-
row
551-
for row in rows
552-
if (status is None or row.get("status") == status)
553-
and (normalized_category is None or row.get("category") == normalized_category)
554-
]
555-
556-
557547
def normalize_category(category: str | None) -> str:
558548
if not category:
559549
return "general"

api/services/provider_keys.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,3 @@ def summarize_provider_for_response(
130130
"has_user_api_key": decrypted is not None,
131131
"user_api_key_preview": mask_provider_key(decrypted),
132132
}
133-
134-
135-
def supported_providers() -> list[dict[str, str]]:
136-
return [
137-
{"name": "openai", "supports_override_key": "true"},
138-
{"name": "gemini", "supports_override_key": "true"},
139-
{"name": "ollama", "supports_override_key": "false"},
140-
{"name": "anthropic", "supports_override_key": "true"},
141-
]

api/services/proxy.py

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -246,19 +246,9 @@ async def open_provider_stream(
246246
await client.aclose()
247247
raise RuntimeError(f"Provider request failed: {error}") from error
248248
return ProviderStream(client, response)
249-
250-
251-
def get_openai_compatible_url(provider: str) -> str:
252-
if provider == "openai":
253-
return build_chat_completions_url(settings.openai_base_url)
254-
if provider == "gemini":
255-
return build_chat_completions_url(settings.gemini_base_url)
256-
if provider == "ollama":
257-
return build_chat_completions_url(f"{settings.ollama_base_url.rstrip('/')}/v1")
258-
raise ValueError(f"Unsupported provider: {provider}")
259-
260-
261-
def build_provider_headers(resolved: ResolvedProvider, incoming_headers: Mapping[str, str]) -> dict[str, str]:
249+
250+
251+
def build_provider_headers(resolved: ResolvedProvider, incoming_headers: Mapping[str, str]) -> dict[str, str]:
262252
headers = sanitize_passthrough_headers(incoming_headers)
263253
headers["content-type"] = "application/json"
264254
if resolved.name in {"openai", "gemini"}:

api/services/retrieval.py

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,6 @@
2727
}
2828

2929

30-
def get_last_user_message(body: Mapping[str, object]) -> str:
31-
messages = body.get("messages")
32-
if not isinstance(messages, list):
33-
return ""
34-
for message in reversed(messages):
35-
if not isinstance(message, dict):
36-
continue
37-
if message.get("role") != "user":
38-
continue
39-
content = message.get("content")
40-
if isinstance(content, str):
41-
return content
42-
if isinstance(content, list):
43-
return extract_text_from_content_parts(content)
44-
return ""
45-
46-
4730
def get_retrieval_query(body: Mapping[str, object], max_user_messages: int = 6) -> str:
4831
messages = body.get("messages")
4932
if not isinstance(messages, list):

api/test_provider_keys.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import os
2-
from dataclasses import asdict
32
from pathlib import Path
43

54
import pytest

0 commit comments

Comments
 (0)