From 20bf70e238bf09fbd17f896872347f83c0aac7cd Mon Sep 17 00:00:00 2001
From: Martin Vogel
Date: Fri, 12 Jun 2026 00:02:30 +0200
Subject: [PATCH] Reword Hybrid LSP description; correct grammar count to 159
Describe the Hybrid LSP layer as a lightweight C implementation
structurally inspired by and compatible with major language servers,
rather than a clean-room re-implementation of their algorithms, across
README, site, and llms.txt. Drop intelephense from the reference list.
---
README.md | 6 +++---
docs/index.html | 9 +++++----
docs/llms.txt | 4 ++--
docs/sitemap.xml | 2 +-
4 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/README.md b/README.md
index 309c76bf0..8c4500db1 100644
--- a/README.md
+++ b/README.md
@@ -168,10 +168,10 @@ Removes all agent configs, skills, hooks, and instructions. Does not remove the
- `SEMANTICALLY_RELATED` (vocabulary-mismatch, same-language, score ≥ 0.80)
### Indexing pipeline
-- **157 vendored tree-sitter grammars** compiled into the binary
+- **159 vendored tree-sitter grammars** compiled into the binary
- **Generic package / module resolution** — bare specifiers like `@myorg/pkg`, `github.com/foo/bar`, `use my_crate::foo` resolved via manifest scanning (`package.json`, `go.mod`, `Cargo.toml`, `pyproject.toml`, `composer.json`, `pubspec.yaml`, `pom.xml`, `build.gradle`, `mix.exs`, `*.gemspec`)
- **Infrastructure-as-code indexing** — Dockerfiles, Kubernetes manifests, Kustomize overlays as graph nodes
-- **[Hybrid LSP semantic type resolution](#hybrid-lsp)** for Python, TypeScript / JavaScript / JSX / TSX, PHP, C#, Go, C, C++, Java, Kotlin, and Rust — a clean-room re-implementation of the type-resolution algorithms used by tsserver / typescript-go, pyright, gopls, intelephense, Roslyn, Eclipse JDT, and rust-analyzer (parameter binding, return-type inference, generic substitution, JSX component dispatch, JSDoc inference for plain JS files, namespace + trait + late-static-binding resolution for PHP, file-scoped namespaces + records + LINQ method syntax for C#, class-hierarchy + overload + lambda resolution for Java, extension-function + scope-function resolution for Kotlin, trait-method + UFCS resolution for Rust)
+- **[Hybrid LSP semantic type resolution](#hybrid-lsp)** for Python, TypeScript / JavaScript / JSX / TSX, PHP, C#, Go, C, C++, Java, Kotlin, and Rust — a lightweight C implementation of language type-resolution algorithms, structurally inspired by and compatible with major language servers including tsserver / typescript-go, pyright, gopls, Roslyn, Eclipse JDT, and rust-analyzer (parameter binding, return-type inference, generic substitution, JSX component dispatch, JSDoc inference for plain JS files, namespace + trait + late-static-binding resolution for PHP, file-scoped namespaces + records + LINQ method syntax for C#, class-hierarchy + overload + lambda resolution for Java, extension-function + scope-function resolution for Kotlin, trait-method + UFCS resolution for Rust)
- **RAM-first pipeline**: LZ4 compression, in-memory SQLite, single dump at end. Memory released after.
### Distribution & operation
@@ -490,7 +490,7 @@ SQLite databases stored at `~/.cache/codebase-memory-mcp/`. Persists across rest
Tree-sitter alone gives a syntactic AST. That handles naming, structure, and call sites well, but it can't tell you that `user.profile.display_name()` resolves to `Profile.display_name` declared three modules away — tree-sitter doesn't track imports, generics, inheritance, or stdlib types.
-codebase-memory-mcp ships a **clean-room re-implementation of the type-resolution algorithms used by real language servers** (tsserver / typescript-go, pyright, gopls, intelephense, Roslyn, Eclipse JDT, rust-analyzer), embedded directly into the static binary. No language server process, no per-project setup, no API key. We call this layer **Hybrid LSP**: it runs alongside tree-sitter on every parse and refines `CALLS`, `USAGE`, and `RESOLVED_CALLS` edges with type information, so the resulting graph mirrors what an IDE "Go to Definition" would resolve.
+codebase-memory-mcp ships a **lightweight C implementation of language type-resolution algorithms, structurally inspired by and compatible with major language servers** (tsserver / typescript-go, pyright, gopls, Roslyn, Eclipse JDT, rust-analyzer), embedded directly into the static binary. No language server process, no per-project setup, no API key. We call this layer **Hybrid LSP**: it runs alongside tree-sitter on every parse and refines `CALLS`, `USAGE`, and `RESOLVED_CALLS` edges with type information, so the resulting graph mirrors what an IDE "Go to Definition" would resolve.
**Languages with full Hybrid LSP:**
diff --git a/docs/index.html b/docs/index.html
index d2a0434a9..435edf5fa 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -149,7 +149,7 @@
"name": "What is Hybrid LSP?",
"acceptedAnswer": {
"@type": "Answer",
- "text": "Hybrid LSP is a clean-room re-implementation of the type-resolution algorithms used by real language servers (tsserver, pyright, gopls, intelephense, Roslyn), embedded directly into the binary. It runs alongside tree-sitter to resolve imports, generics, inheritance, and stdlib types — so call edges in the graph mirror what an IDE 'Go to Definition' would resolve, with no language-server process or per-project setup."
+ "text": "Hybrid LSP is a lightweight C implementation of language type-resolution algorithms, structurally inspired by and compatible with major language servers (tsserver, pyright, gopls, Roslyn), embedded directly into the binary. It runs alongside tree-sitter to resolve imports, generics, inheritance, and stdlib types — so call edges in the graph mirror what an IDE 'Go to Definition' would resolve, with no language-server process or per-project setup."
}
},
{
@@ -542,9 +542,10 @@
three modules away, because it does not track imports, generics, inheritance, or stdlib types.
- codebase-memory-mcp ships a clean-room re-implementation of the type-resolution algorithms
- used by real language servers — tsserver/typescript-go, pyright, gopls, intelephense, and
- Roslyn — embedded directly into the single static C binary. There is no language-server process, no
+ codebase-memory-mcp ships a lightweight C implementation of language type-resolution
+ algorithms, structurally inspired by and compatible with major language servers —
+ tsserver/typescript-go, pyright, gopls, Roslyn, Eclipse JDT, and rust-analyzer —
+ embedded directly into the single static C binary. There is no language-server process, no
per-project setup, and no API key. This layer runs alongside tree-sitter on every parse and refines
CALLS, USAGE, and RESOLVED_CALLS edges with type information,
so the graph mirrors what an IDE "Go to Definition" would resolve.
diff --git a/docs/llms.txt b/docs/llms.txt
index 9d9b9b041..91c64660e 100644
--- a/docs/llms.txt
+++ b/docs/llms.txt
@@ -5,8 +5,8 @@
## Key facts
- License: MIT, open source.
-- Languages: 159 (157 vendored tree-sitter grammars compiled into the binary).
-- Hybrid LSP type resolution: 9 language families (Python, TypeScript/JavaScript/JSX/TSX, PHP, C#, Go, C/C++, Java, Kotlin, Rust) — clean-room re-implementation of tsserver, pyright, gopls, intelephense, Roslyn, Eclipse JDT, and rust-analyzer algorithms.
+- Languages: 159 (159 vendored tree-sitter grammars compiled into the binary).
+- Hybrid LSP type resolution: 9 language families (Python, TypeScript/JavaScript/JSX/TSX, PHP, C#, Go, C/C++, Java, Kotlin, Rust) — a lightweight C implementation of language type-resolution algorithms, structurally inspired by and compatible with major language servers including tsserver, pyright, gopls, Roslyn, Eclipse JDT, and rust-analyzer.
- MCP tools: 14 (search_graph incl. semantic_query vector search, trace_path (alias: trace_call_path), query_graph (Cypher), detect_changes, get_architecture, get_code_snippet, manage_adr, and more).
- Semantic search: natural-language code discovery via bundled nomic-embed-code embeddings (768-dim, compiled into the binary); 11-signal combined scoring; fully local, no API key.
- Semantic & similarity edges: SEMANTICALLY_RELATED (vocabulary-mismatch matches) and SIMILAR_TO (MinHash + LSH near-clone / duplicate detection).
diff --git a/docs/sitemap.xml b/docs/sitemap.xml
index f35a69f49..086be8523 100644
--- a/docs/sitemap.xml
+++ b/docs/sitemap.xml
@@ -2,7 +2,7 @@
https://deusdata.github.io/codebase-memory-mcp/
- 2026-06-11
+ 2026-06-12
1.0