Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions src/codebase_rag/api/memory_routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@
from pydantic import BaseModel, Field
from typing import Optional, List, Dict, Any, Literal

from codebase_rag.services.memory_store import memory_store
from codebase_rag.services.memory_extractor import memory_extractor
from codebase_rag.services.memory import memory_store, memory_extractor
from loguru import logger


Expand Down
2 changes: 1 addition & 1 deletion src/codebase_rag/api/neo4j_routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import tempfile
import os

from codebase_rag.services.neo4j_knowledge_service import neo4j_knowledge_service
from codebase_rag.services.knowledge import neo4j_knowledge_service

router = APIRouter(prefix="/neo4j-knowledge", tags=["Neo4j Knowledge Graph"])

Expand Down
15 changes: 5 additions & 10 deletions src/codebase_rag/api/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,11 @@
import uuid
from datetime import datetime

from codebase_rag.services.sql_parser import sql_analyzer
from codebase_rag.services.graph_service import graph_service
from codebase_rag.services.neo4j_knowledge_service import Neo4jKnowledgeService
from codebase_rag.services.universal_sql_schema_parser import parse_sql_schema_smart
from codebase_rag.services.task_queue import task_queue
from codebase_rag.services.code_ingestor import get_code_ingestor
from codebase_rag.services.git_utils import git_utils
from codebase_rag.services.ranker import ranker
from codebase_rag.services.pack_builder import pack_builder
from codebase_rag.services.metrics import metrics_service
from codebase_rag.services.sql import sql_analyzer, parse_sql_schema_smart
from codebase_rag.services.code import graph_service, get_code_ingestor, pack_builder
from codebase_rag.services.knowledge import Neo4jKnowledgeService
from codebase_rag.services.tasks import task_queue
from codebase_rag.services.utils import git_utils, ranker, metrics_service
from codebase_rag.config import settings
from loguru import logger

Expand Down
2 changes: 1 addition & 1 deletion src/codebase_rag/api/sse_routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from fastapi.responses import StreamingResponse
from loguru import logger

from codebase_rag.services.task_queue import task_queue, TaskStatus
from codebase_rag.services.tasks import task_queue, TaskStatus

router = APIRouter(prefix="/sse", tags=["SSE"])

Expand Down
3 changes: 1 addition & 2 deletions src/codebase_rag/api/task_routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@
from pydantic import BaseModel
from datetime import datetime

from codebase_rag.services.task_queue import task_queue, TaskStatus
from codebase_rag.services.task_storage import TaskType
from codebase_rag.services.tasks import task_queue, TaskStatus, TaskType
from loguru import logger
from codebase_rag.config import settings

Expand Down
2 changes: 1 addition & 1 deletion src/codebase_rag/api/websocket_routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import json
from loguru import logger

from codebase_rag.services.task_queue import task_queue
from codebase_rag.services.tasks import task_queue

router = APIRouter()

Expand Down
7 changes: 3 additions & 4 deletions src/codebase_rag/core/lifespan.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,9 @@
from fastapi import FastAPI
from loguru import logger

from codebase_rag.services.neo4j_knowledge_service import neo4j_knowledge_service
from codebase_rag.services.task_queue import task_queue
from codebase_rag.services.task_processors import processor_registry
from codebase_rag.services.memory_store import memory_store
from codebase_rag.services.knowledge import neo4j_knowledge_service
from codebase_rag.services.tasks import task_queue, processor_registry
from codebase_rag.services.memory import memory_store


@asynccontextmanager
Expand Down
77 changes: 1 addition & 76 deletions src/codebase_rag/mcp/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -366,84 +366,9 @@ async def main():
notification_options=None,
experimental_capabilities={}
)

if search_results:
ranked = ranker.rank_files(
files=search_results,
query=keyword,
limit=10
)

for file in ranked:
all_nodes.append({
"type": "file",
"path": file["path"],
"lang": file["lang"],
"score": file["score"],
"ref": ranker.generate_ref_handle(path=file["path"])
})

# Add focus files with high priority
if focus_list:
for focus_path in focus_list:
all_nodes.append({
"type": "file",
"path": focus_path,
"lang": "unknown",
"score": 10.0, # High priority
"ref": ranker.generate_ref_handle(path=focus_path)
})

# Build context pack
if ctx:
await ctx.info(f"Packing {len(all_nodes)} candidate files into context...")

context_result = pack_builder.build_context_pack(
nodes=all_nodes,
budget=budget,
stage=stage,
repo_id=repo_id,
file_limit=8,
symbol_limit=12,
enable_deduplication=True
)
)

# Format items
items = []
for item in context_result.get("items", []):
items.append({
"kind": item.get("kind", "file"),
"title": item.get("title", "Unknown"),
"summary": item.get("summary", ""),
"ref": item.get("ref", ""),
"extra": {
"lang": item.get("extra", {}).get("lang"),
"score": item.get("extra", {}).get("score", 0.0)
}
})

if ctx:
await ctx.info(f"Context pack built: {len(items)} items, {context_result.get('budget_used', 0)} tokens")

return {
"success": True,
"items": items,
"budget_used": context_result.get("budget_used", 0),
"budget_limit": budget,
"stage": stage,
"repo_id": repo_id,
"category_counts": context_result.get("category_counts", {})
}

except Exception as e:
error_msg = f"Context pack generation failed: {str(e)}"
logger.error(error_msg)
if ctx:
await ctx.error(error_msg)
return {
"success": False,
"error": error_msg
}

# ===================================
# MCP Resources
Expand Down
6 changes: 3 additions & 3 deletions src/codebase_rag/services/code/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Code analysis and ingestion services."""

from codebase_rag.services.code.code_ingestor import CodeIngestor, get_code_ingestor
from codebase_rag.services.code.graph_service import Neo4jGraphService
from codebase_rag.services.code.pack_builder import PackBuilder
from codebase_rag.services.code.graph_service import Neo4jGraphService, graph_service
from codebase_rag.services.code.pack_builder import PackBuilder, pack_builder

__all__ = ["CodeIngestor", "get_code_ingestor", "Neo4jGraphService", "PackBuilder"]
__all__ = ["CodeIngestor", "get_code_ingestor", "Neo4jGraphService", "PackBuilder", "graph_service", "pack_builder"]
3 changes: 2 additions & 1 deletion src/codebase_rag/services/knowledge/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from codebase_rag.services.knowledge.neo4j_knowledge_service import (
Neo4jKnowledgeService,
neo4j_knowledge_service,
)

__all__ = ["Neo4jKnowledgeService"]
__all__ = ["Neo4jKnowledgeService", "neo4j_knowledge_service"]
6 changes: 3 additions & 3 deletions src/codebase_rag/services/memory/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Memory services for conversation memory and extraction."""

from codebase_rag.services.memory.memory_store import MemoryStore
from codebase_rag.services.memory.memory_extractor import MemoryExtractor
from codebase_rag.services.memory.memory_store import MemoryStore, memory_store
from codebase_rag.services.memory.memory_extractor import MemoryExtractor, memory_extractor

__all__ = ["MemoryStore", "MemoryExtractor"]
__all__ = ["MemoryStore", "MemoryExtractor", "memory_store", "memory_extractor"]
2 changes: 1 addition & 1 deletion src/codebase_rag/services/memory/memory_extractor.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
from llama_index.core import Settings
from loguru import logger

from codebase_rag.services.memory_store import memory_store
from .memory_store import memory_store


class MemoryExtractor:
Expand Down
5 changes: 3 additions & 2 deletions src/codebase_rag/services/sql/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
"""SQL parsing and schema analysis services."""

from codebase_rag.services.sql.sql_parser import SQLParser
from codebase_rag.services.sql.sql_parser import SQLParser, sql_analyzer
from codebase_rag.services.sql.sql_schema_parser import SQLSchemaParser
from codebase_rag.services.sql.universal_sql_schema_parser import (
UniversalSQLSchemaParser,
parse_sql_schema_smart,
)

__all__ = ["SQLParser", "SQLSchemaParser", "UniversalSQLSchemaParser"]
__all__ = ["SQLParser", "SQLSchemaParser", "UniversalSQLSchemaParser", "sql_analyzer", "parse_sql_schema_smart"]
8 changes: 4 additions & 4 deletions src/codebase_rag/services/tasks/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Task queue and processing services."""

from codebase_rag.services.tasks.task_queue import TaskQueue
from codebase_rag.services.tasks.task_storage import TaskStorage
from codebase_rag.services.tasks.task_processors import TaskProcessor
from codebase_rag.services.tasks.task_queue import TaskQueue, task_queue, TaskStatus
from codebase_rag.services.tasks.task_storage import TaskStorage, TaskType
from codebase_rag.services.tasks.task_processors import TaskProcessor, processor_registry

__all__ = ["TaskQueue", "TaskStorage", "TaskProcessor"]
__all__ = ["TaskQueue", "TaskStorage", "TaskProcessor", "task_queue", "TaskStatus", "TaskType", "processor_registry"]
8 changes: 4 additions & 4 deletions src/codebase_rag/services/utils/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Utility services for git, ranking, and metrics."""

from codebase_rag.services.utils.git_utils import GitUtils
from codebase_rag.services.utils.ranker import Ranker
from codebase_rag.services.utils.metrics import MetricsCollector
from codebase_rag.services.utils.git_utils import GitUtils, git_utils
from codebase_rag.services.utils.ranker import Ranker, ranker
from codebase_rag.services.utils.metrics import MetricsCollector, metrics_service

__all__ = ["GitUtils", "Ranker", "MetricsCollector"]
__all__ = ["GitUtils", "Ranker", "MetricsCollector", "git_utils", "ranker", "metrics_service"]