diff --git a/.env.example b/.env.example index a6f0b47..f425171 100644 --- a/.env.example +++ b/.env.example @@ -1,13 +1,13 @@ -POSTGRES_DB=cerebro -POSTGRES_USER=cerebro -POSTGRES_PASSWORD=cerebro_dev_password -CEREBRO_APP_PORT=5117 -CEREBRO_WEB_PORT=5118 -CEREBRO_DB_PORT=54329 -CEREBRO_EMBEDDINGS_PORT=8088 +POSTGRES_DB=cortex +POSTGRES_USER=cortex +POSTGRES_PASSWORD=cortex_dev_password +CORTEX_APP_PORT=5117 +CORTEX_WEB_PORT=5118 +CORTEX_DB_PORT=54329 +CORTEX_EMBEDDINGS_PORT=8088 EMBEDDING_MODEL=BAAI/bge-small-en-v1.5 -CEREBRO_TEST_BASE_URL=http://localhost:5217 -CEREBRO_TEST_APP_PORT=5217 -CEREBRO_TEST_WEB_PORT=5218 -CEREBRO_TEST_DB_PORT=54339 -CEREBRO_TEST_EMBEDDINGS_PORT=8188 +CORTEX_TEST_BASE_URL=http://localhost:5217 +CORTEX_TEST_APP_PORT=5217 +CORTEX_TEST_WEB_PORT=5218 +CORTEX_TEST_DB_PORT=54339 +CORTEX_TEST_EMBEDDINGS_PORT=8188 diff --git a/Cerebro.slnx b/Cerebro.slnx deleted file mode 100644 index 12a86eb..0000000 --- a/Cerebro.slnx +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/Cortex.slnx b/Cortex.slnx new file mode 100644 index 0000000..5c8957f --- /dev/null +++ b/Cortex.slnx @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Dockerfile b/Dockerfile index a550969..f29395b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,14 +4,16 @@ WORKDIR /src COPY NuGet.Config ./ COPY Directory.Build.props ./ COPY Directory.Packages.props ./ -COPY src/Cerebro.Api/Cerebro.Api.csproj src/Cerebro.Api/ -RUN dotnet restore src/Cerebro.Api/Cerebro.Api.csproj --configfile NuGet.Config +COPY src/Cortex.Core/Cortex.Core.csproj src/Cortex.Core/ +COPY src/Cortex.Api/Cortex.Api.csproj src/Cortex.Api/ +RUN dotnet restore src/Cortex.Api/Cortex.Api.csproj --configfile NuGet.Config -COPY src/Cerebro.Api src/Cerebro.Api -RUN dotnet publish src/Cerebro.Api/Cerebro.Api.csproj -c Release -o /app/publish --no-restore +COPY src/Cortex.Core src/Cortex.Core +COPY src/Cortex.Api src/Cortex.Api +RUN dotnet publish src/Cortex.Api/Cortex.Api.csproj -c Release -o /app/publish --no-restore FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime WORKDIR /app COPY --from=build /app/publish . EXPOSE 8080 -ENTRYPOINT ["dotnet", "Cerebro.Api.dll"] +ENTRYPOINT ["dotnet", "Cortex.Api.dll"] diff --git a/Dockerfile.web b/Dockerfile.web index 4af6f16..6adde38 100644 --- a/Dockerfile.web +++ b/Dockerfile.web @@ -4,16 +4,16 @@ WORKDIR /src COPY NuGet.Config ./ COPY Directory.Build.props ./ COPY Directory.Packages.props ./ -COPY src/Cerebro.Api/Cerebro.Api.csproj src/Cerebro.Api/ -COPY src/Cerebro.Web/Cerebro.Web.csproj src/Cerebro.Web/ -RUN dotnet restore src/Cerebro.Web/Cerebro.Web.csproj --configfile NuGet.Config +COPY src/Cortex.Core/Cortex.Core.csproj src/Cortex.Core/ +COPY src/Cortex.Web/Cortex.Web.csproj src/Cortex.Web/ +RUN dotnet restore src/Cortex.Web/Cortex.Web.csproj --configfile NuGet.Config -COPY src/Cerebro.Api src/Cerebro.Api -COPY src/Cerebro.Web src/Cerebro.Web -RUN dotnet publish src/Cerebro.Web/Cerebro.Web.csproj -c Release -o /app/publish --no-restore +COPY src/Cortex.Core src/Cortex.Core +COPY src/Cortex.Web src/Cortex.Web +RUN dotnet publish src/Cortex.Web/Cortex.Web.csproj -c Release -o /app/publish FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime WORKDIR /app COPY --from=build /app/publish . EXPOSE 8080 -ENTRYPOINT ["dotnet", "Cerebro.Web.dll"] +ENTRYPOINT ["dotnet", "Cortex.Web.dll"] diff --git a/README.md b/README.md index a12073e..a6dc623 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# Cerebro +# Cortex -Cerebro is a local-first memory server exposed through the Model Context Protocol (MCP). It lets an MCP client store and recall project-scoped requirements, locations, todos, and notes. +Cortex is a local-first memory server exposed through the Model Context Protocol (MCP). It lets an MCP client store and recall project-scoped requirements, locations, todos, and notes. The project is intentionally small and operationally explicit: everything local is run through PowerShell scripts, the app runs in Docker, data lives in PostgreSQL with pgvector, and embeddings are produced by a local container. -## What Cerebro Does +## What Cortex Does - Stores memories inside explicit projects. - Supports four categories: `requirement`, `location`, `todo`, and `note`. @@ -32,7 +32,7 @@ The project is intentionally small and operationally explicit: everything local | Service | Dev instance | Test instance | | --- | ---: | ---: | -| Cerebro app | | | +| Cortex app | | | | Web UI | | | | MCP endpoint | | | | PostgreSQL | `localhost:54329` | `localhost:54339` | diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 2090ebf..ff89daa 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -1,77 +1,77 @@ -name: cerebro-test +name: cortex-test services: - cerebro-test-db: + cortex-test-db: image: pgvector/pgvector:pg17 - container_name: cerebro-test-db + container_name: cortex-test-db environment: - POSTGRES_DB: cerebro - POSTGRES_USER: cerebro - POSTGRES_PASSWORD: cerebro_dev_password + POSTGRES_DB: cortex + POSTGRES_USER: cortex + POSTGRES_PASSWORD: cortex_dev_password ports: - "54339:5432" volumes: - - cerebro-test-postgres-data:/var/lib/postgresql/data + - cortex-test-postgres-data:/var/lib/postgresql/data healthcheck: - test: ["CMD-SHELL", "pg_isready -U cerebro -d cerebro"] + test: ["CMD-SHELL", "pg_isready -U cortex -d cortex"] interval: 5s timeout: 5s retries: 20 - cerebro-test-embeddings: + cortex-test-embeddings: image: ghcr.io/huggingface/text-embeddings-inference:cpu-latest - container_name: cerebro-test-embeddings + container_name: cortex-test-embeddings command: ["--model-id", "BAAI/bge-small-en-v1.5", "--port", "80"] ports: - "8188:80" volumes: - - cerebro-test-embeddings-data:/data + - cortex-test-embeddings-data:/data - cerebro-test-app: + cortex-test-app: build: context: . dockerfile: Dockerfile - image: cerebro-app:test - container_name: cerebro-test-app + image: cortex-app:test + container_name: cortex-test-app depends_on: - cerebro-test-db: + cortex-test-db: condition: service_healthy - cerebro-test-embeddings: + cortex-test-embeddings: condition: service_started environment: ASPNETCORE_URLS: http://+:8080 ASPNETCORE_ENVIRONMENT: Development - ConnectionStrings__Cerebro: Host=cerebro-test-db;Port=5432;Database=cerebro;Username=cerebro;Password=cerebro_dev_password;GSS Encryption Mode=Disable - Embedding__BaseUrl: http://cerebro-test-embeddings + ConnectionStrings__Cortex: Host=cortex-test-db;Port=5432;Database=cortex;Username=cortex;Password=cortex_dev_password;GSS Encryption Mode=Disable + Embedding__BaseUrl: http://cortex-test-embeddings Embedding__Model: BAAI/bge-small-en-v1.5 - Cerebro__EmbeddingModel: BAAI/bge-small-en-v1.5 - Cerebro__EmbeddingDimensions: 384 + Cortex__EmbeddingModel: BAAI/bge-small-en-v1.5 + Cortex__EmbeddingDimensions: 384 ports: - "5217:8080" - cerebro-test-web: + cortex-test-web: profiles: ["ui"] build: context: . dockerfile: Dockerfile.web - image: cerebro-web:test - container_name: cerebro-test-web + image: cortex-web:test + container_name: cortex-test-web depends_on: - cerebro-test-db: + cortex-test-db: condition: service_healthy - cerebro-test-embeddings: + cortex-test-embeddings: condition: service_started environment: ASPNETCORE_URLS: http://+:8080 ASPNETCORE_ENVIRONMENT: Development - ConnectionStrings__Cerebro: Host=cerebro-test-db;Port=5432;Database=cerebro;Username=cerebro;Password=cerebro_dev_password;GSS Encryption Mode=Disable - Embedding__BaseUrl: http://cerebro-test-embeddings + ConnectionStrings__Cortex: Host=cortex-test-db;Port=5432;Database=cortex;Username=cortex;Password=cortex_dev_password;GSS Encryption Mode=Disable + Embedding__BaseUrl: http://cortex-test-embeddings Embedding__Model: BAAI/bge-small-en-v1.5 - Cerebro__EmbeddingModel: BAAI/bge-small-en-v1.5 - Cerebro__EmbeddingDimensions: 384 + Cortex__EmbeddingModel: BAAI/bge-small-en-v1.5 + Cortex__EmbeddingDimensions: 384 ports: - "5218:8080" volumes: - cerebro-test-postgres-data: - cerebro-test-embeddings-data: + cortex-test-postgres-data: + cortex-test-embeddings-data: diff --git a/docker-compose.yml b/docker-compose.yml index 28ad92a..1293ea7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,77 +1,77 @@ -name: cerebro +name: cortex services: - cerebro-db: + cortex-db: image: pgvector/pgvector:pg17 - container_name: cerebro-db + container_name: cortex-db environment: - POSTGRES_DB: cerebro - POSTGRES_USER: cerebro - POSTGRES_PASSWORD: cerebro_dev_password + POSTGRES_DB: cortex + POSTGRES_USER: cortex + POSTGRES_PASSWORD: cortex_dev_password ports: - "54329:5432" volumes: - - cerebro-postgres-data:/var/lib/postgresql/data + - cortex-postgres-data:/var/lib/postgresql/data healthcheck: - test: ["CMD-SHELL", "pg_isready -U cerebro -d cerebro"] + test: ["CMD-SHELL", "pg_isready -U cortex -d cortex"] interval: 5s timeout: 5s retries: 20 - cerebro-embeddings: + cortex-embeddings: image: ghcr.io/huggingface/text-embeddings-inference:cpu-latest - container_name: cerebro-embeddings + container_name: cortex-embeddings command: ["--model-id", "BAAI/bge-small-en-v1.5", "--port", "80"] ports: - "8088:80" volumes: - - cerebro-embeddings-data:/data + - cortex-embeddings-data:/data - cerebro-app: + cortex-app: build: context: . dockerfile: Dockerfile - image: cerebro-app:local - container_name: cerebro-app + image: cortex-app:local + container_name: cortex-app depends_on: - cerebro-db: + cortex-db: condition: service_healthy - cerebro-embeddings: + cortex-embeddings: condition: service_started environment: ASPNETCORE_URLS: http://+:8080 ASPNETCORE_ENVIRONMENT: Development - ConnectionStrings__Cerebro: Host=cerebro-db;Port=5432;Database=cerebro;Username=cerebro;Password=cerebro_dev_password;GSS Encryption Mode=Disable - Embedding__BaseUrl: http://cerebro-embeddings + ConnectionStrings__Cortex: Host=cortex-db;Port=5432;Database=cortex;Username=cortex;Password=cortex_dev_password;GSS Encryption Mode=Disable + Embedding__BaseUrl: http://cortex-embeddings Embedding__Model: BAAI/bge-small-en-v1.5 - Cerebro__EmbeddingModel: BAAI/bge-small-en-v1.5 - Cerebro__EmbeddingDimensions: 384 + Cortex__EmbeddingModel: BAAI/bge-small-en-v1.5 + Cortex__EmbeddingDimensions: 384 ports: - "5117:8080" - cerebro-web: + cortex-web: profiles: ["ui"] build: context: . dockerfile: Dockerfile.web - image: cerebro-web:local - container_name: cerebro-web + image: cortex-web:local + container_name: cortex-web depends_on: - cerebro-db: + cortex-db: condition: service_healthy - cerebro-embeddings: + cortex-embeddings: condition: service_started environment: ASPNETCORE_URLS: http://+:8080 ASPNETCORE_ENVIRONMENT: Development - ConnectionStrings__Cerebro: Host=cerebro-db;Port=5432;Database=cerebro;Username=cerebro;Password=cerebro_dev_password;GSS Encryption Mode=Disable - Embedding__BaseUrl: http://cerebro-embeddings + ConnectionStrings__Cortex: Host=cortex-db;Port=5432;Database=cortex;Username=cortex;Password=cortex_dev_password;GSS Encryption Mode=Disable + Embedding__BaseUrl: http://cortex-embeddings Embedding__Model: BAAI/bge-small-en-v1.5 - Cerebro__EmbeddingModel: BAAI/bge-small-en-v1.5 - Cerebro__EmbeddingDimensions: 384 + Cortex__EmbeddingModel: BAAI/bge-small-en-v1.5 + Cortex__EmbeddingDimensions: 384 ports: - "5118:8080" volumes: - cerebro-postgres-data: - cerebro-embeddings-data: + cortex-postgres-data: + cortex-embeddings-data: diff --git a/docs/architecture.md b/docs/architecture.md index f35818b..9b70180 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -1,11 +1,11 @@ # Architecture -Cerebro is a small domain-specific MCP server. +Cortex is a small domain-specific MCP server. ```mermaid flowchart LR - Client["MCP client"] -->|Streamable HTTP| App["Cerebro .NET 10 app"] - Browser["Browser"] --> Web["Cerebro Blazor web UI"] + Client["MCP client"] -->|Streamable HTTP| App["Cortex .NET 10 app"] + Browser["Browser"] --> Web["Cortex Blazor web UI"] Web --> Db Web --> Embed App --> Db["PostgreSQL + pgvector"] @@ -31,7 +31,7 @@ Health is exposed at: The web UI is a separate Blazor Server project and Docker container. It is optional and not needed for MCP clients. -The UI talks to the same PostgreSQL database and embedding service through the existing Cerebro service layer. It is intended for manual browsing, adding memories, searching, editing, and soft-deleting during local development. +The UI talks to the same PostgreSQL database and embedding service through the existing Cortex service layer. It is intended for manual browsing, adding memories, searching, editing, and soft-deleting during local development. Dev URL: diff --git a/docs/development.md b/docs/development.md index 872be5b..48139fa 100644 --- a/docs/development.md +++ b/docs/development.md @@ -4,7 +4,7 @@ ```text src/ - Cerebro.Api/ + Cortex.Api/ Contracts/ Data/ Domain/ @@ -12,11 +12,11 @@ src/ Options/ Services/ Tools/ - Cerebro.Web/ + Cortex.Web/ Components/ wwwroot/ tests/ - Cerebro.IntegrationTests/ + Cortex.IntegrationTests/ scripts/ docs/ ``` @@ -25,19 +25,19 @@ docs/ | File | Purpose | | --- | --- | -| `src/Cerebro.Api/Program.cs` | App startup, DI, MCP route, migration/seed modes. | -| `src/Cerebro.Api/Tools/CerebroTools.cs` | MCP tool surface. | -| `src/Cerebro.Api/Services/CerebroMemoryService.cs` | Project/item/search behavior. | -| `src/Cerebro.Api/Data/CerebroDbContext.cs` | EF Core model. | -| `src/Cerebro.Web/Components/Pages/Home.razor` | Optional Blazor web UI dashboard. | -| `src/Cerebro.Api/Migrations` | Database schema migrations. | +| `src/Cortex.Api/Program.cs` | App startup, DI, MCP route, migration/seed modes. | +| `src/Cortex.Api/Tools/CortexTools.cs` | MCP tool surface. | +| `src/Cortex.Api/Services/CortexMemoryService.cs` | Project/item/search behavior. | +| `src/Cortex.Api/Data/CortexDbContext.cs` | EF Core model. | +| `src/Cortex.Web/Components/Pages/Home.razor` | Optional Blazor web UI dashboard. | +| `src/Cortex.Api/Migrations` | Database schema migrations. | | `docker-compose.yml` | Dev stack. | | `docker-compose.test.yml` | Test stack. | ## Adding a Tool -1. Add a method to `CerebroTools`. -2. Add or update a service method in `CerebroMemoryService`. +1. Add a method to `CortexTools`. +2. Add or update a service method in `CortexMemoryService`. 3. Use `[McpServerTool]` with a stable `Name`. 4. Set `UseStructuredContent = true` when the tool returns structured data. 5. Add an integration test. @@ -58,7 +58,7 @@ docs/ The current model produces 384-dimensional vectors. If the new model has a different dimension, update: -- `Cerebro:EmbeddingDimensions` +- `Cortex:EmbeddingDimensions` - migration/schema for `vector(N)` - indexes - docs diff --git a/docs/examples/visual-studio-mcp-http.json b/docs/examples/visual-studio-mcp-http.json index cbb2340..53974a1 100644 --- a/docs/examples/visual-studio-mcp-http.json +++ b/docs/examples/visual-studio-mcp-http.json @@ -1,6 +1,6 @@ { "servers": { - "cerebro": { + "cortex": { "type": "http", "url": "http://localhost:5117/mcp" } diff --git a/docs/examples/vscode-mcp.dev.json b/docs/examples/vscode-mcp.dev.json index cbb2340..53974a1 100644 --- a/docs/examples/vscode-mcp.dev.json +++ b/docs/examples/vscode-mcp.dev.json @@ -1,6 +1,6 @@ { "servers": { - "cerebro": { + "cortex": { "type": "http", "url": "http://localhost:5117/mcp" } diff --git a/docs/examples/vscode-mcp.test.json b/docs/examples/vscode-mcp.test.json index b9b3d2a..1eaa03c 100644 --- a/docs/examples/vscode-mcp.test.json +++ b/docs/examples/vscode-mcp.test.json @@ -1,6 +1,6 @@ { "servers": { - "cerebro-test": { + "cortex-test": { "type": "http", "url": "http://localhost:5217/mcp" } diff --git a/docs/mcp-tools.md b/docs/mcp-tools.md index 51d0491..410f622 100644 --- a/docs/mcp-tools.md +++ b/docs/mcp-tools.md @@ -1,6 +1,6 @@ # MCP Tools -Cerebro exposes MCP tools over: +Cortex exposes MCP tools over: ```text http://localhost:5117/mcp @@ -27,8 +27,8 @@ Result: ```json { "id": "00000000-0000-0000-0000-000000000000", - "name": "Cerebro", - "slug": "cerebro", + "name": "Cortex", + "slug": "cortex", "createdAt": "2026-07-08T12:00:00Z" } ``` @@ -45,8 +45,8 @@ Result: [ { "id": "00000000-0000-0000-0000-000000000000", - "name": "Cerebro", - "slug": "cerebro", + "name": "Cortex", + "slug": "cortex", "createdAt": "2026-07-08T12:00:00Z" } ] @@ -72,7 +72,7 @@ Example: ```json { - "project": "cerebro", + "project": "cortex", "category": "location", "title": "USB-C charging brick", "content": "The USB-C charging brick is in the blue backpack.", @@ -108,7 +108,7 @@ Example: ## UpdateItem -Updates an existing item. If title, content, category, or tags change, Cerebro regenerates the embedding. +Updates an existing item. If title, content, category, or tags change, Cortex regenerates the embedding. Arguments: diff --git a/docs/operations.md b/docs/operations.md index 3907f78..a26c9ac 100644 --- a/docs/operations.md +++ b/docs/operations.md @@ -1,28 +1,28 @@ # Operations Guide -Cerebro local operations are PowerShell-only. +Cortex local operations are PowerShell-only. ## Dev Stack -The dev stack is named `cerebro`. +The dev stack is named `cortex`. | Container | Purpose | | --- | --- | -| `cerebro-db` | PostgreSQL with pgvector. | -| `cerebro-embeddings` | Local embedding service. | -| `cerebro-app` | .NET 10 MCP server. | -| `cerebro-web` | Optional Blazor web UI. | +| `cortex-db` | PostgreSQL with pgvector. | +| `cortex-embeddings` | Local embedding service. | +| `cortex-app` | .NET 10 MCP server. | +| `cortex-web` | Optional Blazor web UI. | ## Test Stack -The test stack is named `cerebro-test`. +The test stack is named `cortex-test`. | Container | Purpose | | --- | --- | -| `cerebro-test-db` | Isolated PostgreSQL with pgvector. | -| `cerebro-test-embeddings` | Isolated embedding service. | -| `cerebro-test-app` | Isolated MCP server under test. | -| `cerebro-test-web` | Optional isolated Blazor web UI. | +| `cortex-test-db` | Isolated PostgreSQL with pgvector. | +| `cortex-test-embeddings` | Isolated embedding service. | +| `cortex-test-app` | Isolated MCP server under test. | +| `cortex-test-web` | Optional isolated Blazor web UI. | The test stack uses different ports and a different database volume so it can run beside the dev stack. diff --git a/docs/setup.md b/docs/setup.md index 6ac3fc8..d90e3dd 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -1,6 +1,6 @@ # Setup Guide -This guide gets a local Cerebro dev instance running on Windows. +This guide gets a local Cortex dev instance running on Windows. ## Prerequisites @@ -25,7 +25,7 @@ This starts: - PostgreSQL with pgvector - Hugging Face Text Embeddings Inference -- Cerebro MCP server +- Cortex MCP server It also applies EF Core migrations before starting the app. @@ -41,7 +41,7 @@ Expected result: ```json { - "name": "Cerebro", + "name": "Cortex", "status": "ok" } ``` @@ -54,7 +54,7 @@ The timestamp will vary. .\scripts\seed-db.ps1 ``` -The seed creates a `Cerebro` project and a couple of starter memories. +The seed creates a `Cortex` project and a couple of starter memories. ## MCP Endpoint diff --git a/docs/testing.md b/docs/testing.md index 0a3aa64..151597e 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -1,6 +1,6 @@ # Testing Guide -Cerebro has two test modes: +Cortex has two test modes: - normal tests through `scripts\test.ps1` - local end-to-end integration tests through `scripts\test-integration.ps1` @@ -13,7 +13,7 @@ The test stack is isolated from the dev stack. | Service | Test value | | --- | --- | -| Compose project | `cerebro-test` | +| Compose project | `cortex-test` | | App | | | MCP endpoint | | | PostgreSQL | `localhost:54339` | @@ -58,7 +58,7 @@ Or deploy without running tests: ## Run Tests from Visual Studio -1. Open `Cerebro.slnx` in Visual Studio. +1. Open `Cortex.slnx` in Visual Studio. 2. Start the test stack: ```powershell @@ -66,12 +66,12 @@ Or deploy without running tests: ``` 3. Open Test Explorer. -4. Run any test in `Cerebro.IntegrationTests`. +4. Run any test in `Cortex.IntegrationTests`. The tests use: ```text -CEREBRO_TEST_BASE_URL +CORTEX_TEST_BASE_URL ``` If that environment variable is not set, they default to: diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 86149ed..338872e 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -54,7 +54,7 @@ Check logs: This is expected when the project does not exist. Create the project first with `CreateProject`. -Cerebro intentionally has no default project. +Cortex intentionally has no default project. ## Search Returns Nothing @@ -105,7 +105,7 @@ If restore fails: 3. Run restore from a normal PowerShell session: ```powershell - dotnet restore Cerebro.slnx --configfile NuGet.Config + dotnet restore Cortex.slnx --configfile NuGet.Config ``` ## Embedding Container Takes a Long Time diff --git a/docs/visual-studio.md b/docs/visual-studio.md index 2e00251..3ba7f09 100644 --- a/docs/visual-studio.md +++ b/docs/visual-studio.md @@ -2,8 +2,8 @@ This guide covers two related workflows: -1. Running Cerebro integration tests from Visual Studio Test Explorer. -2. Connecting an MCP-capable Copilot client to the Cerebro MCP server. +1. Running Cortex integration tests from Visual Studio Test Explorer. +2. Connecting an MCP-capable Copilot client to the Cortex MCP server. ## Visual Studio Test Explorer @@ -11,7 +11,7 @@ Visual Studio can run the integration tests because they are ordinary xUnit test ### Steps -1. Open `Cerebro.slnx`. +1. Open `Cortex.slnx`. 2. Start the isolated test stack: ```powershell @@ -19,7 +19,7 @@ Visual Studio can run the integration tests because they are ordinary xUnit test ``` 3. In Visual Studio, open Test Explorer. -4. Run tests under `Cerebro.IntegrationTests`. +4. Run tests under `Cortex.IntegrationTests`. The tests connect to: @@ -30,12 +30,12 @@ http://localhost:5217 Override that by setting: ```powershell -$env:CEREBRO_TEST_BASE_URL = "http://localhost:5217" +$env:CORTEX_TEST_BASE_URL = "http://localhost:5217" ``` ## Connecting a Copilot MCP Client -Cerebro uses Streamable HTTP MCP. +Cortex uses Streamable HTTP MCP. The Blazor web UI is not needed for this. It is only a browser-based helper for local testing and memory inspection. @@ -60,7 +60,7 @@ If your Visual Studio installation exposes MCP server configuration through GitH ```json { "servers": { - "cerebro": { + "cortex": { "type": "http", "url": "http://localhost:5117/mcp" } @@ -74,7 +74,7 @@ If Visual Studio asks for a URL directly, enter: http://localhost:5117/mcp ``` -If your Visual Studio build does not expose MCP server configuration, use Visual Studio for normal coding and Test Explorer, and use Visual Studio Code or another MCP-capable client for Cerebro tool calls. +If your Visual Studio build does not expose MCP server configuration, use Visual Studio for normal coding and Test Explorer, and use Visual Studio Code or another MCP-capable client for Cortex tool calls. ## Visual Studio Code MCP Setup @@ -91,7 +91,7 @@ Add: ```json { "servers": { - "cerebro": { + "cortex": { "type": "http", "url": "http://localhost:5117/mcp" } @@ -103,7 +103,7 @@ The same example is available at `docs/examples/vscode-mcp.dev.json`. Then: -1. Start Cerebro: +1. Start Cortex: ```powershell .\scripts\deploy-all.ps1 @@ -111,7 +111,7 @@ Then: 2. Open the VS Code command palette. 3. Run `MCP: List Servers`. -4. Start or enable `cerebro`. +4. Start or enable `cortex`. 5. Open Chat and select/configure tools. For the test instance: @@ -119,7 +119,7 @@ For the test instance: ```json { "servers": { - "cerebro-test": { + "cortex-test": { "type": "http", "url": "http://localhost:5217/mcp" } @@ -134,7 +134,7 @@ The same example is available at `docs/examples/vscode-mcp.test.json`. After connecting an MCP client: ```text -Create a Cerebro project named Home. +Create a Cortex project named Home. ``` ```text @@ -151,7 +151,7 @@ Add a todo in the Home project: buy a replacement USB-C cable. ## Trust and Safety -Cerebro is local and currently unauthenticated. Treat the endpoint as trusted-local only: +Cortex is local and currently unauthenticated. Treat the endpoint as trusted-local only: - Keep it bound to localhost for development. - Do not expose it to the public internet. diff --git a/docs/web-ui.md b/docs/web-ui.md index f7f7b81..1d38418 100644 --- a/docs/web-ui.md +++ b/docs/web-ui.md @@ -1,6 +1,6 @@ # Web UI -Cerebro includes an optional Blazor Server web UI for local browsing and testing. +Cortex includes an optional Blazor Server web UI for local browsing and testing. It is not required for: @@ -67,22 +67,22 @@ Stop: The web UI runs as its own Docker container: ```text -cerebro-web +cortex-web ``` It uses the same database and embedding service as the MCP server: ```text -cerebro-db -cerebro-embeddings +cortex-db +cortex-embeddings ``` The test web UI uses: ```text -cerebro-test-web -cerebro-test-db -cerebro-test-embeddings +cortex-test-web +cortex-test-db +cortex-test-embeddings ``` The web UI does not expose MCP. It is a browser interface over the same local memory system. @@ -100,5 +100,5 @@ The script handles the profile for you: Manual equivalent: ```powershell -docker compose --project-name cerebro --profile ui up -d --build cerebro-web +docker compose --project-name cortex --profile ui up -d --build cortex-web ``` diff --git a/scripts/build.ps1 b/scripts/build.ps1 index 1fbecc3..ef85ea7 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -1,15 +1,15 @@ . "$PSScriptRoot\lib\common.ps1" Write-Step "Restoring .NET packages" -Invoke-DotNet restore Cerebro.slnx --configfile NuGet.Config +Invoke-DotNet restore Cortex.slnx --configfile NuGet.Config -Write-Step "Building Cerebro" -Invoke-DotNet build Cerebro.slnx --configuration Release --no-restore +Write-Step "Building Cortex" +Invoke-DotNet build Cortex.slnx --configuration Release --no-restore Write-Step "Building local Docker image" Assert-Docker -Invoke-CerebroCompose build cerebro-app +Invoke-CortexCompose build cortex-app Write-Step "Building optional web UI Docker image" -$webBuildArgs = @("--profile", "ui", "build", "cerebro-web") -Invoke-CerebroCompose @webBuildArgs +$webBuildArgs = @("--profile", "ui", "build", "cortex-web") +Invoke-CortexCompose @webBuildArgs diff --git a/scripts/deploy-all.ps1 b/scripts/deploy-all.ps1 index dcf012a..156e810 100644 --- a/scripts/deploy-all.ps1 +++ b/scripts/deploy-all.ps1 @@ -1,17 +1,17 @@ . "$PSScriptRoot\lib\common.ps1" -Write-Step "Starting all Cerebro services" +Write-Step "Starting all Cortex services" Assert-Docker -Invoke-CerebroCompose up -d cerebro-db cerebro-embeddings +Invoke-CortexCompose up -d cortex-db cortex-embeddings Write-Step "Waiting for embedding model health" Wait-HttpOk "http://localhost:8088/health" 300 -Write-Step "Building Cerebro MCP server image" -Invoke-CerebroCompose build cerebro-app +Write-Step "Building Cortex MCP server image" +Invoke-CortexCompose build cortex-app Write-Step "Applying database migrations" -Invoke-CerebroCompose run --rm cerebro-app migrate +Invoke-CortexCompose run --rm cortex-app migrate -Write-Step "Starting Cerebro MCP server" -Invoke-CerebroCompose up -d cerebro-app +Write-Step "Starting Cortex MCP server" +Invoke-CortexCompose up -d cortex-app diff --git a/scripts/deploy-app.ps1 b/scripts/deploy-app.ps1 index 1d4f912..ab31d29 100644 --- a/scripts/deploy-app.ps1 +++ b/scripts/deploy-app.ps1 @@ -1,8 +1,8 @@ . "$PSScriptRoot\lib\common.ps1" -Write-Step "Starting Cerebro app" +Write-Step "Starting Cortex app" Assert-Docker -Invoke-CerebroCompose up -d cerebro-db cerebro-embeddings +Invoke-CortexCompose up -d cortex-db cortex-embeddings Write-Step "Waiting for embedding model health" Wait-HttpOk "http://localhost:8088/health" 300 -Invoke-CerebroCompose up -d --build cerebro-app +Invoke-CortexCompose up -d --build cortex-app diff --git a/scripts/deploy-db.ps1 b/scripts/deploy-db.ps1 index 618c9fa..ebf4d0d 100644 --- a/scripts/deploy-db.ps1 +++ b/scripts/deploy-db.ps1 @@ -2,4 +2,4 @@ Write-Step "Starting PostgreSQL with pgvector" Assert-Docker -Invoke-CerebroCompose up -d cerebro-db +Invoke-CortexCompose up -d cortex-db diff --git a/scripts/deploy-embeddings.ps1 b/scripts/deploy-embeddings.ps1 index ae1a618..fa62467 100644 --- a/scripts/deploy-embeddings.ps1 +++ b/scripts/deploy-embeddings.ps1 @@ -2,4 +2,4 @@ Write-Step "Starting local embedding model" Assert-Docker -Invoke-CerebroCompose up -d cerebro-embeddings +Invoke-CortexCompose up -d cortex-embeddings diff --git a/scripts/deploy-test-web.ps1 b/scripts/deploy-test-web.ps1 index d8f6da1..03dfc11 100644 --- a/scripts/deploy-test-web.ps1 +++ b/scripts/deploy-test-web.ps1 @@ -1,21 +1,21 @@ . "$PSScriptRoot\lib\common.ps1" -Write-Step "Starting Cerebro test dependencies for web UI" +Write-Step "Starting Cortex test dependencies for web UI" Assert-Docker -Invoke-CerebroTestCompose up -d cerebro-test-db cerebro-test-embeddings +Invoke-CortexTestCompose up -d cortex-test-db cortex-test-embeddings Write-Step "Waiting for test embedding model health" Wait-HttpOk "http://localhost:8188/health" 300 -Write-Step "Building Cerebro test app image for migrations" -Invoke-CerebroTestCompose build cerebro-test-app +Write-Step "Building Cortex test app image for migrations" +Invoke-CortexTestCompose build cortex-test-app Write-Step "Applying test database migrations" -Invoke-CerebroTestCompose run --rm cerebro-test-app migrate +Invoke-CortexTestCompose run --rm cortex-test-app migrate -Write-Step "Starting optional Cerebro test web UI" -$webUpArgs = @("--profile", "ui", "up", "-d", "--build", "cerebro-test-web") -Invoke-CerebroTestCompose @webUpArgs +Write-Step "Starting optional Cortex test web UI" +$webUpArgs = @("--profile", "ui", "up", "-d", "--build", "cortex-test-web") +Invoke-CortexTestCompose @webUpArgs Write-Step "Waiting for test web UI health" Wait-HttpOk "http://localhost:5218/health" 120 diff --git a/scripts/deploy-test.ps1 b/scripts/deploy-test.ps1 index 60be927..59817f9 100644 --- a/scripts/deploy-test.ps1 +++ b/scripts/deploy-test.ps1 @@ -1,20 +1,20 @@ . "$PSScriptRoot\lib\common.ps1" -Write-Step "Starting Cerebro test database and embedding model" +Write-Step "Starting Cortex test database and embedding model" Assert-Docker -Invoke-CerebroTestCompose up -d cerebro-test-db cerebro-test-embeddings +Invoke-CortexTestCompose up -d cortex-test-db cortex-test-embeddings Write-Step "Waiting for test embedding model health" Wait-HttpOk "http://localhost:8188/health" 300 -Write-Step "Building Cerebro test app image" -Invoke-CerebroTestCompose build cerebro-test-app +Write-Step "Building Cortex test app image" +Invoke-CortexTestCompose build cortex-test-app Write-Step "Applying test database migrations" -Invoke-CerebroTestCompose run --rm cerebro-test-app migrate +Invoke-CortexTestCompose run --rm cortex-test-app migrate -Write-Step "Starting Cerebro test MCP server" -Invoke-CerebroTestCompose up -d cerebro-test-app +Write-Step "Starting Cortex test MCP server" +Invoke-CortexTestCompose up -d cortex-test-app Write-Step "Waiting for test MCP server health" Wait-HttpOk "http://localhost:5217/health" 180 diff --git a/scripts/deploy-web.ps1 b/scripts/deploy-web.ps1 index 7f468db..88f3943 100644 --- a/scripts/deploy-web.ps1 +++ b/scripts/deploy-web.ps1 @@ -1,21 +1,21 @@ . "$PSScriptRoot\lib\common.ps1" -Write-Step "Starting Cerebro dependencies for web UI" +Write-Step "Starting Cortex dependencies for web UI" Assert-Docker -Invoke-CerebroCompose up -d cerebro-db cerebro-embeddings +Invoke-CortexCompose up -d cortex-db cortex-embeddings Write-Step "Waiting for embedding model health" Wait-HttpOk "http://localhost:8088/health" 300 -Write-Step "Building Cerebro app image for migrations" -Invoke-CerebroCompose build cerebro-app +Write-Step "Building Cortex app image for migrations" +Invoke-CortexCompose build cortex-app Write-Step "Applying database migrations" -Invoke-CerebroCompose run --rm cerebro-app migrate +Invoke-CortexCompose run --rm cortex-app migrate -Write-Step "Starting optional Cerebro web UI" -$webUpArgs = @("--profile", "ui", "up", "-d", "--build", "cerebro-web") -Invoke-CerebroCompose @webUpArgs +Write-Step "Starting optional Cortex web UI" +$webUpArgs = @("--profile", "ui", "up", "-d", "--build", "cortex-web") +Invoke-CortexCompose @webUpArgs Write-Step "Waiting for web UI health" Wait-HttpOk "http://localhost:5118/health" 120 diff --git a/scripts/lib/common.ps1 b/scripts/lib/common.ps1 index 073af0d..fa70f35 100644 --- a/scripts/lib/common.ps1 +++ b/scripts/lib/common.ps1 @@ -1,8 +1,8 @@ $ErrorActionPreference = "Stop" $Script:RepoRoot = Resolve-Path (Join-Path $PSScriptRoot "..\..") -$Script:ComposeProject = "cerebro" -$Script:TestComposeProject = "cerebro-test" +$Script:ComposeProject = "cortex" +$Script:TestComposeProject = "cortex-test" $Script:LocalDockerConfig = Join-Path $Script:RepoRoot ".docker" New-Item -ItemType Directory -Force $Script:LocalDockerConfig | Out-Null @@ -20,7 +20,7 @@ function Assert-Docker { } } -function Invoke-CerebroCompose { +function Invoke-CortexCompose { $composeArgs = $args Push-Location $Script:RepoRoot @@ -35,7 +35,7 @@ function Invoke-CerebroCompose { } } -function Invoke-CerebroTestCompose { +function Invoke-CortexTestCompose { $composeArgs = $args Push-Location $Script:RepoRoot diff --git a/scripts/logs.ps1 b/scripts/logs.ps1 index 4356e68..3b7123d 100644 --- a/scripts/logs.ps1 +++ b/scripts/logs.ps1 @@ -7,10 +7,10 @@ param( . "$PSScriptRoot\lib\common.ps1" $serviceName = switch ($Service) { - "app" { "cerebro-app" } - "web" { "cerebro-web" } - "db" { "cerebro-db" } - "embeddings" { "cerebro-embeddings" } + "app" { "cortex-app" } + "web" { "cortex-web" } + "db" { "cortex-db" } + "embeddings" { "cortex-embeddings" } default { $null } } @@ -23,4 +23,4 @@ if ($serviceName) { $args += $serviceName } -Invoke-CerebroCompose @args +Invoke-CortexCompose @args diff --git a/scripts/migrate-db.ps1 b/scripts/migrate-db.ps1 index d81a14d..0567399 100644 --- a/scripts/migrate-db.ps1 +++ b/scripts/migrate-db.ps1 @@ -1,4 +1,4 @@ . "$PSScriptRoot\lib\common.ps1" Write-Step "Applying EF Core migrations" -Invoke-DotNet run --project src/Cerebro.Api/Cerebro.Api.csproj -- migrate +Invoke-DotNet run --project src/Cortex.Api/Cortex.Api.csproj -- migrate diff --git a/scripts/reset-db.ps1 b/scripts/reset-db.ps1 index e356672..0a1abc7 100644 --- a/scripts/reset-db.ps1 +++ b/scripts/reset-db.ps1 @@ -3,15 +3,15 @@ param([switch]$Force) . "$PSScriptRoot\lib\common.ps1" if (-not $Force) { - throw "This deletes the local Cerebro database volume. Re-run with -Force to continue." + throw "This deletes the local Cortex database volume. Re-run with -Force to continue." } Write-Step "Resetting local PostgreSQL data" Assert-Docker -Invoke-CerebroCompose stop cerebro-app cerebro-db -Invoke-CerebroCompose rm -f cerebro-db +Invoke-CortexCompose stop cortex-app cortex-db +Invoke-CortexCompose rm -f cortex-db -$volumeName = "cerebro_cerebro-postgres-data" +$volumeName = "cortex_cortex-postgres-data" docker volume inspect $volumeName *> $null if ($LASTEXITCODE -eq 0) { docker volume rm $volumeName @@ -20,4 +20,4 @@ if ($LASTEXITCODE -eq 0) { } } -Invoke-CerebroCompose up -d cerebro-db +Invoke-CortexCompose up -d cortex-db diff --git a/scripts/reset-test.ps1 b/scripts/reset-test.ps1 index f8e7658..6de8c0b 100644 --- a/scripts/reset-test.ps1 +++ b/scripts/reset-test.ps1 @@ -3,15 +3,15 @@ param([switch]$Force) . "$PSScriptRoot\lib\common.ps1" if (-not $Force) { - throw "This deletes the local Cerebro test database volume. Re-run with -Force to continue." + throw "This deletes the local Cortex test database volume. Re-run with -Force to continue." } -Write-Step "Resetting local Cerebro test database" +Write-Step "Resetting local Cortex test database" Assert-Docker -Invoke-CerebroTestCompose stop cerebro-test-app cerebro-test-db -Invoke-CerebroTestCompose rm -f cerebro-test-db +Invoke-CortexTestCompose stop cortex-test-app cortex-test-db +Invoke-CortexTestCompose rm -f cortex-test-db -$volumeName = "cerebro-test_cerebro-test-postgres-data" +$volumeName = "cortex-test_cortex-test-postgres-data" docker volume inspect $volumeName *> $null if ($LASTEXITCODE -eq 0) { docker volume rm $volumeName @@ -20,4 +20,4 @@ if ($LASTEXITCODE -eq 0) { } } -Invoke-CerebroTestCompose up -d cerebro-test-db +Invoke-CortexTestCompose up -d cortex-test-db diff --git a/scripts/seed-db.ps1 b/scripts/seed-db.ps1 index 3389acf..c09d9d3 100644 --- a/scripts/seed-db.ps1 +++ b/scripts/seed-db.ps1 @@ -1,4 +1,4 @@ . "$PSScriptRoot\lib\common.ps1" Write-Step "Seeding sample data" -Invoke-DotNet run --project src/Cerebro.Api/Cerebro.Api.csproj -- seed +Invoke-DotNet run --project src/Cortex.Api/Cortex.Api.csproj -- seed diff --git a/scripts/stop-all.ps1 b/scripts/stop-all.ps1 index a2b1bc7..9737e43 100644 --- a/scripts/stop-all.ps1 +++ b/scripts/stop-all.ps1 @@ -1,5 +1,5 @@ . "$PSScriptRoot\lib\common.ps1" -Write-Step "Stopping Cerebro services" +Write-Step "Stopping Cortex services" Assert-Docker -Invoke-CerebroCompose stop +Invoke-CortexCompose stop diff --git a/scripts/stop-test-web.ps1 b/scripts/stop-test-web.ps1 index 29f4289..79a2232 100644 --- a/scripts/stop-test-web.ps1 +++ b/scripts/stop-test-web.ps1 @@ -1,6 +1,6 @@ . "$PSScriptRoot\lib\common.ps1" -Write-Step "Stopping optional Cerebro test web UI" +Write-Step "Stopping optional Cortex test web UI" Assert-Docker -$webStopArgs = @("--profile", "ui", "stop", "cerebro-test-web") -Invoke-CerebroTestCompose @webStopArgs +$webStopArgs = @("--profile", "ui", "stop", "cortex-test-web") +Invoke-CortexTestCompose @webStopArgs diff --git a/scripts/stop-test.ps1 b/scripts/stop-test.ps1 index ddaa86e..7cba49b 100644 --- a/scripts/stop-test.ps1 +++ b/scripts/stop-test.ps1 @@ -1,5 +1,5 @@ . "$PSScriptRoot\lib\common.ps1" -Write-Step "Stopping Cerebro test services" +Write-Step "Stopping Cortex test services" Assert-Docker -Invoke-CerebroTestCompose stop +Invoke-CortexTestCompose stop diff --git a/scripts/stop-web.ps1 b/scripts/stop-web.ps1 index d42abd1..8065383 100644 --- a/scripts/stop-web.ps1 +++ b/scripts/stop-web.ps1 @@ -1,6 +1,6 @@ . "$PSScriptRoot\lib\common.ps1" -Write-Step "Stopping optional Cerebro web UI" +Write-Step "Stopping optional Cortex web UI" Assert-Docker -$webStopArgs = @("--profile", "ui", "stop", "cerebro-web") -Invoke-CerebroCompose @webStopArgs +$webStopArgs = @("--profile", "ui", "stop", "cortex-web") +Invoke-CortexCompose @webStopArgs diff --git a/scripts/test-integration.ps1 b/scripts/test-integration.ps1 index d9b8085..81797cf 100644 --- a/scripts/test-integration.ps1 +++ b/scripts/test-integration.ps1 @@ -16,9 +16,9 @@ if (-not $NoReset) { try { Write-Step "Running integration tests" - $env:CEREBRO_TEST_BASE_URL = "http://localhost:5217" + $env:CORTEX_TEST_BASE_URL = "http://localhost:5217" - $args = @("test", "tests/Cerebro.IntegrationTests/Cerebro.IntegrationTests.csproj", "--configuration", "Release") + $args = @("test", "tests/Cortex.IntegrationTests/Cortex.IntegrationTests.csproj", "--configuration", "Release") if (-not [string]::IsNullOrWhiteSpace($Filter)) { $args += @("--filter", $Filter) } diff --git a/scripts/test.ps1 b/scripts/test.ps1 index b08715b..ffab70e 100644 --- a/scripts/test.ps1 +++ b/scripts/test.ps1 @@ -1,4 +1,4 @@ . "$PSScriptRoot\lib\common.ps1" Write-Step "Running tests" -Invoke-DotNet test Cerebro.slnx --configuration Release --filter "Category!=Integration" +Invoke-DotNet test Cortex.slnx --configuration Release --filter "Category!=Integration" diff --git a/src/Cerebro.Web/CerebroWebMarker.cs b/src/Cerebro.Web/CerebroWebMarker.cs deleted file mode 100644 index b31d1b0..0000000 --- a/src/Cerebro.Web/CerebroWebMarker.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace Cerebro.Web; - -public sealed class CerebroWebMarker; diff --git a/src/Cortex.Api/Cortex.Api.csproj b/src/Cortex.Api/Cortex.Api.csproj new file mode 100644 index 0000000..adcdbc9 --- /dev/null +++ b/src/Cortex.Api/Cortex.Api.csproj @@ -0,0 +1,15 @@ + + + net10.0 + enable + enable + Linux + + + + + + + + + diff --git a/src/Cerebro.Api/Program.cs b/src/Cortex.Api/Program.cs similarity index 77% rename from src/Cerebro.Api/Program.cs rename to src/Cortex.Api/Program.cs index 8978aed..d9888a2 100644 --- a/src/Cerebro.Api/Program.cs +++ b/src/Cortex.Api/Program.cs @@ -1,18 +1,18 @@ -using Cerebro.Api.Data; -using Cerebro.Api.Options; -using Cerebro.Api.Services; +using Cortex.Core.Data; +using Cortex.Core.Options; +using Cortex.Core.Services; using Microsoft.EntityFrameworkCore; using ModelContextProtocol.Server; var builder = WebApplication.CreateBuilder(args); -builder.Services.Configure(builder.Configuration.GetSection("Cerebro")); +builder.Services.Configure(builder.Configuration.GetSection("Cortex")); builder.Services.Configure(builder.Configuration.GetSection("Embedding")); builder.Services.AddSingleton(); -builder.Services.AddDbContext((services, options) => +builder.Services.AddDbContext((services, options) => { - var connectionString = builder.Configuration.GetConnectionString("Cerebro") - ?? throw new InvalidOperationException("Connection string 'Cerebro' is missing."); + var connectionString = builder.Configuration.GetConnectionString("Cortex") + ?? throw new InvalidOperationException("Connection string 'Cortex' is missing."); options.UseNpgsql(connectionString); options.AddInterceptors(services.GetRequiredService()); @@ -24,7 +24,7 @@ builder.Services.AddHttpClient((services, client.BaseAddress = new Uri(options.BaseUrl); }); -builder.Services.AddScoped(); +builder.Services.AddScoped(); builder.Services .AddMcpServer() @@ -39,7 +39,7 @@ var app = builder.Build(); if (args.Contains("migrate", StringComparer.OrdinalIgnoreCase)) { await using var scope = app.Services.CreateAsyncScope(); - var db = scope.ServiceProvider.GetRequiredService(); + var db = scope.ServiceProvider.GetRequiredService(); await db.Database.MigrateAsync(); return; } @@ -54,7 +54,7 @@ if (args.Contains("seed", StringComparer.OrdinalIgnoreCase)) app.MapGet("/", () => Results.Redirect("/health")); app.MapGet("/health", () => Results.Ok(new { - name = "Cerebro", + name = "Cortex", status = "ok", utc = DateTimeOffset.UtcNow })); diff --git a/src/Cerebro.Api/Properties/launchSettings.json b/src/Cortex.Api/Properties/launchSettings.json similarity index 100% rename from src/Cerebro.Api/Properties/launchSettings.json rename to src/Cortex.Api/Properties/launchSettings.json diff --git a/src/Cerebro.Api/Tools/CerebroTools.cs b/src/Cortex.Api/Tools/CortexTools.cs similarity index 89% rename from src/Cerebro.Api/Tools/CerebroTools.cs rename to src/Cortex.Api/Tools/CortexTools.cs index 0d6d429..3f73268 100644 --- a/src/Cerebro.Api/Tools/CerebroTools.cs +++ b/src/Cortex.Api/Tools/CortexTools.cs @@ -1,17 +1,17 @@ using System.ComponentModel; -using Cerebro.Api.Contracts; -using Cerebro.Api.Services; +using Cortex.Core.Contracts; +using Cortex.Core.Services; using ModelContextProtocol.Server; -namespace Cerebro.Api.Tools; +namespace Cortex.Api.Tools; [McpServerToolType] -public static class CerebroTools +public static class CortexTools { [McpServerTool(Name = "CreateProject", UseStructuredContent = true, Destructive = false)] - [Description("Create a new explicit Cerebro project. Items cannot be added until their project exists.")] + [Description("Create a new explicit Cortex project. Items cannot be added until their project exists.")] public static Task CreateProject( - ICerebroMemoryService memory, + ICortexMemoryService memory, [Description("Human-readable project name. The stable slug is derived from this name.")] string name, CancellationToken cancellationToken) { @@ -19,9 +19,9 @@ public static class CerebroTools } [McpServerTool(Name = "ListProjects", UseStructuredContent = true, ReadOnly = true, Destructive = false)] - [Description("List existing Cerebro projects.")] + [Description("List existing Cortex projects.")] public static Task> ListProjects( - ICerebroMemoryService memory, + ICortexMemoryService memory, CancellationToken cancellationToken) { return memory.ListProjectsAsync(cancellationToken); @@ -30,7 +30,7 @@ public static class CerebroTools [McpServerTool(Name = "AddItem", UseStructuredContent = true, Destructive = false)] [Description("Add a memory item to an existing explicit project.")] public static Task AddItem( - ICerebroMemoryService memory, + ICortexMemoryService memory, [Description("Existing project name or slug. The project must already exist.")] string project, [Description("One of: requirement, location, todo, note.")] string category, [Description("Short item title.")] string title, @@ -46,7 +46,7 @@ public static class CerebroTools [McpServerTool(Name = "FindItems", UseStructuredContent = true, ReadOnly = true, Destructive = false)] [Description("Find memory items with hybrid semantic and keyword search.")] public static Task> FindItems( - ICerebroMemoryService memory, + ICortexMemoryService memory, [Description("Natural language search query.")] string query, [Description("Project name or slug. Required unless searchAllProjects is true.")] string? project = null, [Description("Set true to search across all projects.")] bool searchAllProjects = false, @@ -60,7 +60,7 @@ public static class CerebroTools [McpServerTool(Name = "UpdateItem", UseStructuredContent = true, Destructive = true)] [Description("Update an existing memory item. Content-related changes automatically regenerate the embedding.")] public static Task UpdateItem( - ICerebroMemoryService memory, + ICortexMemoryService memory, [Description("Existing project name or slug.")] string project, [Description("Memory item id from find results.")] Guid id, [Description("Optional new category: requirement, location, todo, note.")] string? category = null, @@ -77,7 +77,7 @@ public static class CerebroTools [McpServerTool(Name = "DeleteItem", UseStructuredContent = true, Destructive = true)] [Description("Soft-delete an existing memory item from an explicit project.")] public static Task DeleteItem( - ICerebroMemoryService memory, + ICortexMemoryService memory, [Description("Existing project name or slug.")] string project, [Description("Memory item id from find results.")] Guid id, CancellationToken cancellationToken) diff --git a/src/Cerebro.Api/appsettings.Development.json b/src/Cortex.Api/appsettings.Development.json similarity index 100% rename from src/Cerebro.Api/appsettings.Development.json rename to src/Cortex.Api/appsettings.Development.json diff --git a/src/Cerebro.Api/appsettings.json b/src/Cortex.Api/appsettings.json similarity index 62% rename from src/Cerebro.Api/appsettings.json rename to src/Cortex.Api/appsettings.json index bc28e28..1021a2c 100644 --- a/src/Cerebro.Api/appsettings.json +++ b/src/Cortex.Api/appsettings.json @@ -1,9 +1,9 @@ { - "AllowedHosts": "localhost;127.0.0.1;cerebro-app", + "AllowedHosts": "localhost;127.0.0.1;cortex-app", "ConnectionStrings": { - "Cerebro": "Host=localhost;Port=54329;Database=cerebro;Username=cerebro;Password=cerebro_dev_password;GSS Encryption Mode=Disable" + "Cortex": "Host=localhost;Port=54329;Database=cortex;Username=cortex;Password=cortex_dev_password;GSS Encryption Mode=Disable" }, - "Cerebro": { + "Cortex": { "EmbeddingModel": "BAAI/bge-small-en-v1.5", "EmbeddingDimensions": 384 }, diff --git a/src/Cerebro.Api/Contracts/CerebroDtos.cs b/src/Cortex.Core/Contracts/CortexDtos.cs similarity index 91% rename from src/Cerebro.Api/Contracts/CerebroDtos.cs rename to src/Cortex.Core/Contracts/CortexDtos.cs index a75441d..c715a60 100644 --- a/src/Cerebro.Api/Contracts/CerebroDtos.cs +++ b/src/Cortex.Core/Contracts/CortexDtos.cs @@ -1,6 +1,6 @@ -using Cerebro.Api.Domain; +using Cortex.Core.Domain; -namespace Cerebro.Api.Contracts; +namespace Cortex.Core.Contracts; public sealed record ProjectDto(Guid Id, string Name, string Slug, DateTimeOffset CreatedAt); diff --git a/src/Cerebro.Api/Cerebro.Api.csproj b/src/Cortex.Core/Cortex.Core.csproj similarity index 75% rename from src/Cerebro.Api/Cerebro.Api.csproj rename to src/Cortex.Core/Cortex.Core.csproj index da06b3f..ec19290 100644 --- a/src/Cerebro.Api/Cerebro.Api.csproj +++ b/src/Cortex.Core/Cortex.Core.csproj @@ -1,16 +1,14 @@ - + net10.0 enable enable - Linux all runtime; build; native; contentfiles; analyzers; buildtransitive - diff --git a/src/Cerebro.Api/Data/CerebroDbContext.cs b/src/Cortex.Core/Data/CortexDbContext.cs similarity index 94% rename from src/Cerebro.Api/Data/CerebroDbContext.cs rename to src/Cortex.Core/Data/CortexDbContext.cs index 142ce79..277d623 100644 --- a/src/Cerebro.Api/Data/CerebroDbContext.cs +++ b/src/Cortex.Core/Data/CortexDbContext.cs @@ -1,9 +1,9 @@ -using Cerebro.Api.Domain; +using Cortex.Core.Domain; using Microsoft.EntityFrameworkCore; -namespace Cerebro.Api.Data; +namespace Cortex.Core.Data; -public sealed class CerebroDbContext(DbContextOptions options) : DbContext(options) +public sealed class CortexDbContext(DbContextOptions options) : DbContext(options) { public DbSet Projects => Set(); public DbSet MemoryItems => Set(); diff --git a/src/Cerebro.Api/Data/DbClockInterceptor.cs b/src/Cortex.Core/Data/DbClockInterceptor.cs similarity index 95% rename from src/Cerebro.Api/Data/DbClockInterceptor.cs rename to src/Cortex.Core/Data/DbClockInterceptor.cs index 212f921..854d044 100644 --- a/src/Cerebro.Api/Data/DbClockInterceptor.cs +++ b/src/Cortex.Core/Data/DbClockInterceptor.cs @@ -1,8 +1,8 @@ -using Cerebro.Api.Domain; +using Cortex.Core.Domain; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Diagnostics; -namespace Cerebro.Api.Data; +namespace Cortex.Core.Data; public sealed class DbClockInterceptor : SaveChangesInterceptor { diff --git a/src/Cerebro.Api/Data/SeedData.cs b/src/Cortex.Core/Data/SeedData.cs similarity index 62% rename from src/Cerebro.Api/Data/SeedData.cs rename to src/Cortex.Core/Data/SeedData.cs index 84adc3c..dc872ec 100644 --- a/src/Cerebro.Api/Data/SeedData.cs +++ b/src/Cortex.Core/Data/SeedData.cs @@ -1,25 +1,26 @@ -using Cerebro.Api.Services; +using Cortex.Core.Services; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; -namespace Cerebro.Api.Data; +namespace Cortex.Core.Data; public static class SeedData { public static async Task SeedAsync(IServiceProvider services, CancellationToken cancellationToken) { - var db = services.GetRequiredService(); + var db = services.GetRequiredService(); await db.Database.MigrateAsync(cancellationToken); - var memory = services.GetRequiredService(); + var memory = services.GetRequiredService(); var projects = await memory.ListProjectsAsync(cancellationToken); - if (projects.All(project => project.Slug != "cerebro")) + if (projects.All(project => project.Slug != "cortex")) { - await memory.CreateProjectAsync("Cerebro", cancellationToken); + await memory.CreateProjectAsync("Cortex", cancellationToken); } var existing = await memory.FindItemsAsync( - new FindMemoryItemsRequest("Cerebro MCP server", "cerebro", false, null, 1), + new FindMemoryItemsRequest("Cortex MCP server", "cortex", false, null, 1), cancellationToken); if (existing.Count > 0) @@ -29,10 +30,10 @@ public static class SeedData await memory.AddItemAsync( new AddMemoryItemRequest( - "cerebro", + "cortex", "requirement", - "Cerebro runs as an HTTP MCP server", - "The Cerebro MCP server is a .NET 10 ASP.NET Core app hosted by Kestrel and deployed locally with Docker.", + "Cortex runs as an HTTP MCP server", + "The Cortex MCP server is a .NET 10 ASP.NET Core app hosted by Kestrel and deployed locally with Docker.", ["mcp", "dotnet", "docker"], """{"source":"seed"}""", "active"), @@ -40,7 +41,7 @@ public static class SeedData await memory.AddItemAsync( new AddMemoryItemRequest( - "cerebro", + "cortex", "note", "Embedding model choice", "Use BAAI/bge-small-en-v1.5 through a local Hugging Face Text Embeddings Inference container. The vector size is 384.", diff --git a/src/Cerebro.Api/Domain/ITimestampedEntity.cs b/src/Cortex.Core/Domain/ITimestampedEntity.cs similarity index 80% rename from src/Cerebro.Api/Domain/ITimestampedEntity.cs rename to src/Cortex.Core/Domain/ITimestampedEntity.cs index 27c8caa..b999daa 100644 --- a/src/Cerebro.Api/Domain/ITimestampedEntity.cs +++ b/src/Cortex.Core/Domain/ITimestampedEntity.cs @@ -1,4 +1,4 @@ -namespace Cerebro.Api.Domain; +namespace Cortex.Core.Domain; public interface ITimestampedEntity { diff --git a/src/Cerebro.Api/Domain/MemoryCategory.cs b/src/Cortex.Core/Domain/MemoryCategory.cs similarity index 76% rename from src/Cerebro.Api/Domain/MemoryCategory.cs rename to src/Cortex.Core/Domain/MemoryCategory.cs index c9c14b1..63fe074 100644 --- a/src/Cerebro.Api/Domain/MemoryCategory.cs +++ b/src/Cortex.Core/Domain/MemoryCategory.cs @@ -1,4 +1,4 @@ -namespace Cerebro.Api.Domain; +namespace Cortex.Core.Domain; public enum MemoryCategory { diff --git a/src/Cerebro.Api/Domain/MemoryItem.cs b/src/Cortex.Core/Domain/MemoryItem.cs similarity index 95% rename from src/Cerebro.Api/Domain/MemoryItem.cs rename to src/Cortex.Core/Domain/MemoryItem.cs index 6cc61f1..2862580 100644 --- a/src/Cerebro.Api/Domain/MemoryItem.cs +++ b/src/Cortex.Core/Domain/MemoryItem.cs @@ -1,4 +1,4 @@ -namespace Cerebro.Api.Domain; +namespace Cortex.Core.Domain; public sealed class MemoryItem : ITimestampedEntity { diff --git a/src/Cerebro.Api/Domain/Project.cs b/src/Cortex.Core/Domain/Project.cs similarity index 91% rename from src/Cerebro.Api/Domain/Project.cs rename to src/Cortex.Core/Domain/Project.cs index 1339caa..984414d 100644 --- a/src/Cerebro.Api/Domain/Project.cs +++ b/src/Cortex.Core/Domain/Project.cs @@ -1,4 +1,4 @@ -namespace Cerebro.Api.Domain; +namespace Cortex.Core.Domain; public sealed class Project : ITimestampedEntity { diff --git a/src/Cerebro.Api/Migrations/20260708124000_InitialCreate.cs b/src/Cortex.Core/Migrations/20260708124000_InitialCreate.cs similarity index 97% rename from src/Cerebro.Api/Migrations/20260708124000_InitialCreate.cs rename to src/Cortex.Core/Migrations/20260708124000_InitialCreate.cs index fc88312..735bcb9 100644 --- a/src/Cerebro.Api/Migrations/20260708124000_InitialCreate.cs +++ b/src/Cortex.Core/Migrations/20260708124000_InitialCreate.cs @@ -1,12 +1,12 @@ -using Cerebro.Api.Data; +using Cortex.Core.Data; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace Cerebro.Api.Migrations; +namespace Cortex.Core.Migrations; -[DbContext(typeof(CerebroDbContext))] +[DbContext(typeof(CortexDbContext))] [Migration("20260708124000_InitialCreate")] public partial class InitialCreate : Migration { diff --git a/src/Cerebro.Api/Migrations/CerebroDbContextModelSnapshot.cs b/src/Cortex.Core/Migrations/CortexDbContextModelSnapshot.cs similarity index 87% rename from src/Cerebro.Api/Migrations/CerebroDbContextModelSnapshot.cs rename to src/Cortex.Core/Migrations/CortexDbContextModelSnapshot.cs index a655624..3437008 100644 --- a/src/Cerebro.Api/Migrations/CerebroDbContextModelSnapshot.cs +++ b/src/Cortex.Core/Migrations/CortexDbContextModelSnapshot.cs @@ -1,15 +1,15 @@ -using Cerebro.Api.Data; -using Cerebro.Api.Domain; +using Cortex.Core.Data; +using Cortex.Core.Domain; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Cerebro.Api.Migrations; +namespace Cortex.Core.Migrations; -[DbContext(typeof(CerebroDbContext))] -public sealed class CerebroDbContextModelSnapshot : ModelSnapshot +[DbContext(typeof(CortexDbContext))] +public sealed class CortexDbContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { @@ -17,7 +17,7 @@ public sealed class CerebroDbContextModelSnapshot : ModelSnapshot .HasAnnotation("ProductVersion", "10.0.0") .HasPostgresExtension("vector"); - modelBuilder.Entity("Cerebro.Api.Domain.Project", entity => + modelBuilder.Entity("Cortex.Core.Domain.Project", entity => { entity.Property("Id").HasColumnName("id").HasColumnType("uuid"); entity.Property("CreatedAt").HasColumnName("created_at").HasColumnType("timestamp with time zone"); @@ -29,7 +29,7 @@ public sealed class CerebroDbContextModelSnapshot : ModelSnapshot entity.ToTable("projects"); }); - modelBuilder.Entity("Cerebro.Api.Domain.MemoryItem", entity => + modelBuilder.Entity("Cortex.Core.Domain.MemoryItem", entity => { entity.Property("Id").HasColumnName("id").HasColumnType("uuid"); entity.Property("Category").HasColumnName("category").HasMaxLength(40).HasConversion(); @@ -46,12 +46,12 @@ public sealed class CerebroDbContextModelSnapshot : ModelSnapshot entity.HasKey("Id"); entity.HasIndex("DeletedAt"); entity.HasIndex("ProjectId", "Category"); - entity.HasOne("Cerebro.Api.Domain.Project", "Project").WithMany("Items").HasForeignKey("ProjectId").OnDelete(DeleteBehavior.Cascade).IsRequired(); + entity.HasOne("Cortex.Core.Domain.Project", "Project").WithMany("Items").HasForeignKey("ProjectId").OnDelete(DeleteBehavior.Cascade).IsRequired(); entity.Navigation("Project"); entity.ToTable("memory_items"); }); - modelBuilder.Entity("Cerebro.Api.Domain.Project", entity => + modelBuilder.Entity("Cortex.Core.Domain.Project", entity => { entity.Navigation("Items"); }); diff --git a/src/Cerebro.Api/Options/CerebroOptions.cs b/src/Cortex.Core/Options/CortexOptions.cs similarity index 67% rename from src/Cerebro.Api/Options/CerebroOptions.cs rename to src/Cortex.Core/Options/CortexOptions.cs index b0fd5f9..3251d48 100644 --- a/src/Cerebro.Api/Options/CerebroOptions.cs +++ b/src/Cortex.Core/Options/CortexOptions.cs @@ -1,6 +1,6 @@ -namespace Cerebro.Api.Options; +namespace Cortex.Core.Options; -public sealed class CerebroOptions +public sealed class CortexOptions { public string EmbeddingModel { get; set; } = "BAAI/bge-small-en-v1.5"; public int EmbeddingDimensions { get; set; } = 384; diff --git a/src/Cerebro.Api/Options/EmbeddingOptions.cs b/src/Cortex.Core/Options/EmbeddingOptions.cs similarity index 84% rename from src/Cerebro.Api/Options/EmbeddingOptions.cs rename to src/Cortex.Core/Options/EmbeddingOptions.cs index e7d5457..9c7a75b 100644 --- a/src/Cerebro.Api/Options/EmbeddingOptions.cs +++ b/src/Cortex.Core/Options/EmbeddingOptions.cs @@ -1,4 +1,4 @@ -namespace Cerebro.Api.Options; +namespace Cortex.Core.Options; public sealed class EmbeddingOptions { diff --git a/src/Cerebro.Api/Services/CerebroMemoryService.cs b/src/Cortex.Core/Services/CortexMemoryService.cs similarity index 96% rename from src/Cerebro.Api/Services/CerebroMemoryService.cs rename to src/Cortex.Core/Services/CortexMemoryService.cs index 082f40d..e33ec31 100644 --- a/src/Cerebro.Api/Services/CerebroMemoryService.cs +++ b/src/Cortex.Core/Services/CortexMemoryService.cs @@ -1,25 +1,26 @@ using System.Data; using System.Text.Json; -using Cerebro.Api.Contracts; -using Cerebro.Api.Data; -using Cerebro.Api.Domain; -using Cerebro.Api.Options; +using Cortex.Core.Contracts; +using Cortex.Core.Data; +using Cortex.Core.Domain; +using Cortex.Core.Options; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Options; using Npgsql; using NpgsqlTypes; -namespace Cerebro.Api.Services; +namespace Cortex.Core.Services; -public sealed class CerebroMemoryService( - CerebroDbContext db, +public sealed class CortexMemoryService( + CortexDbContext db, IEmbeddingClient embeddings, - IOptions options, - IConfiguration configuration) : ICerebroMemoryService + IOptions options, + IConfiguration configuration) : ICortexMemoryService { - private readonly CerebroOptions _options = options.Value; - private readonly string _connectionString = configuration.GetConnectionString("Cerebro") - ?? throw new InvalidOperationException("Connection string 'Cerebro' is missing."); + private readonly CortexOptions _options = options.Value; + private readonly string _connectionString = configuration.GetConnectionString("Cortex") + ?? throw new InvalidOperationException("Connection string 'Cortex' is missing."); public async Task CreateProjectAsync(string name, CancellationToken cancellationToken) { diff --git a/src/Cerebro.Api/Services/ICerebroMemoryService.cs b/src/Cortex.Core/Services/ICortexMemoryService.cs similarity index 92% rename from src/Cerebro.Api/Services/ICerebroMemoryService.cs rename to src/Cortex.Core/Services/ICortexMemoryService.cs index c9630e0..e289028 100644 --- a/src/Cerebro.Api/Services/ICerebroMemoryService.cs +++ b/src/Cortex.Core/Services/ICortexMemoryService.cs @@ -1,8 +1,8 @@ -using Cerebro.Api.Contracts; +using Cortex.Core.Contracts; -namespace Cerebro.Api.Services; +namespace Cortex.Core.Services; -public interface ICerebroMemoryService +public interface ICortexMemoryService { Task CreateProjectAsync(string name, CancellationToken cancellationToken); Task> ListProjectsAsync(CancellationToken cancellationToken); diff --git a/src/Cerebro.Api/Services/IEmbeddingClient.cs b/src/Cortex.Core/Services/IEmbeddingClient.cs similarity index 78% rename from src/Cerebro.Api/Services/IEmbeddingClient.cs rename to src/Cortex.Core/Services/IEmbeddingClient.cs index 73a3901..749e027 100644 --- a/src/Cerebro.Api/Services/IEmbeddingClient.cs +++ b/src/Cortex.Core/Services/IEmbeddingClient.cs @@ -1,4 +1,4 @@ -namespace Cerebro.Api.Services; +namespace Cortex.Core.Services; public interface IEmbeddingClient { diff --git a/src/Cerebro.Api/Services/Slug.cs b/src/Cortex.Core/Services/Slug.cs similarity index 95% rename from src/Cerebro.Api/Services/Slug.cs rename to src/Cortex.Core/Services/Slug.cs index 0e87dcf..d0c705d 100644 --- a/src/Cerebro.Api/Services/Slug.cs +++ b/src/Cortex.Core/Services/Slug.cs @@ -1,7 +1,7 @@ using System.Text; using System.Text.RegularExpressions; -namespace Cerebro.Api.Services; +namespace Cortex.Core.Services; public static partial class Slug { diff --git a/src/Cerebro.Api/Services/TeiEmbeddingClient.cs b/src/Cortex.Core/Services/TeiEmbeddingClient.cs similarity index 95% rename from src/Cerebro.Api/Services/TeiEmbeddingClient.cs rename to src/Cortex.Core/Services/TeiEmbeddingClient.cs index 8185d44..8223edb 100644 --- a/src/Cerebro.Api/Services/TeiEmbeddingClient.cs +++ b/src/Cortex.Core/Services/TeiEmbeddingClient.cs @@ -1,9 +1,9 @@ using System.Net.Http.Json; using System.Text.Json.Serialization; -using Cerebro.Api.Options; +using Cortex.Core.Options; using Microsoft.Extensions.Options; -namespace Cerebro.Api.Services; +namespace Cortex.Core.Services; public sealed class TeiEmbeddingClient(HttpClient httpClient, IOptions options) : IEmbeddingClient { diff --git a/src/Cerebro.Api/Services/VectorLiteral.cs b/src/Cortex.Core/Services/VectorLiteral.cs similarity index 88% rename from src/Cerebro.Api/Services/VectorLiteral.cs rename to src/Cortex.Core/Services/VectorLiteral.cs index cf567b1..8ebcab5 100644 --- a/src/Cerebro.Api/Services/VectorLiteral.cs +++ b/src/Cortex.Core/Services/VectorLiteral.cs @@ -1,6 +1,6 @@ using System.Globalization; -namespace Cerebro.Api.Services; +namespace Cortex.Core.Services; public static class VectorLiteral { diff --git a/src/Cerebro.Web/Components/App.razor b/src/Cortex.Web/Components/App.razor similarity index 100% rename from src/Cerebro.Web/Components/App.razor rename to src/Cortex.Web/Components/App.razor diff --git a/src/Cerebro.Web/Components/Layout/MainLayout.razor b/src/Cortex.Web/Components/Layout/MainLayout.razor similarity index 100% rename from src/Cerebro.Web/Components/Layout/MainLayout.razor rename to src/Cortex.Web/Components/Layout/MainLayout.razor diff --git a/src/Cerebro.Web/Components/Pages/Error.razor b/src/Cortex.Web/Components/Pages/Error.razor similarity index 52% rename from src/Cerebro.Web/Components/Pages/Error.razor rename to src/Cortex.Web/Components/Pages/Error.razor index b5b500f..8934594 100644 --- a/src/Cerebro.Web/Components/Pages/Error.razor +++ b/src/Cortex.Web/Components/Pages/Error.razor @@ -1,10 +1,10 @@ @page "/Error" -Error - Cerebro +Error - Cortex

Something went wrong

-

Check the Cerebro web container logs for details.

+

Check the Cortex web container logs for details.

diff --git a/src/Cerebro.Web/Components/Pages/Home.razor b/src/Cortex.Web/Components/Pages/Home.razor similarity index 98% rename from src/Cerebro.Web/Components/Pages/Home.razor rename to src/Cortex.Web/Components/Pages/Home.razor index 25f2e86..8f7d515 100644 --- a/src/Cerebro.Web/Components/Pages/Home.razor +++ b/src/Cortex.Web/Components/Pages/Home.razor @@ -1,19 +1,19 @@ @page "/" @rendermode InteractiveServer -@using Cerebro.Api.Contracts -@using Cerebro.Api.Domain -@using Cerebro.Api.Services -@inject ICerebroMemoryService Memory -@inject CerebroUiQueries Queries +@using Cortex.Core.Contracts +@using Cortex.Core.Domain +@using Cortex.Core.Services +@inject ICortexMemoryService Memory +@inject CortexUiQueries Queries -Cerebro +Cortex