Skip to content
CAI
Software that uses CAICheck a score

ionide/LanguageServerProtocol

55.5

Adequate · 3 October 2026

11.3k

lines of production code

F#

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is an F\# library that provides core abstractions for implementing Language Server Protocol (LSP) clients and servers. It utilizes StreamJsonRpc for asynchronous communication and includes a code generation tool to create type definitions and interfaces from the LSP meta model. The project also features a comprehensive test suite for validating serialization roundtrips, server startup stability, and performance benchmarks.

Features

Initial repository structure and build configuration

This change establishes the foundational project structure, introducing the solution file, F\# project files, and a Directory.Build.targets file that integrates Fantomas for automatic code formatting during the build process. It also adds configuration files including .editorconfig for consistent coding styles, .gitattributes and .gitignore for repository hygiene, and a global.json pinning the .NET SDK version. Documentation is updated with a CONTRIBUTING guide detailing the release process and a README providing build instructions and examples of language servers built with the library.

(repo-wide) · high confidence

Introduce core LSP client and server abstractions with StreamJsonRpc transport

This change introduces the foundational \LspClient\ and \LspServer\ abstract classes, along with the \ILspClient\ and \ILspServer\ interfaces, which define the contract for Language Server Protocol communication. It replaces the previous transport mechanism with \StreamJsonRpc\, enabling asynchronous request and notification handling via \AsyncLspResult\. The update includes a comprehensive logging infrastructure (\FsLibLog\) and custom JSON serialization utilities (such as \OptionConverter\ and strict type converters) to ensure robust data exchange between the client and server.

src · high confidence

New MetaModelGenerator tool for LSP code generation

A new command-line tool, MetaModelGenerator, has been added to the tools directory to generate F\# source code from the LSP meta model. The tool provides two commands: 'Types' to generate type definitions and 'ClientServer' to generate client and server interfaces, utilizing System.Text.Json for deserialization and Fantomas for code formatting.

tools · high confidence

Test coverage

Added test suite for LSP type serialization and server startup

Added a new test suite in the \tests\ directory that validates the Language Server Protocol implementation. This includes \Shotgun.fs\ for property-based roundtrip serialization tests of all LSP types using FsCheck, \Tests.fs\ for detailed unit tests on JSON serialization behaviors (such as mutable fields and extension data), \Benchmarks.fs\ for performance testing of type checking logic, and \StartWithSetup.fs\ for verifying server startup stability and graceful handling of JSON parse errors.

tests · high confidence

Dependencies

Initial project structure and dependency configuration for LSP library

This change introduces the core project files for the Language Server Protocol library, establishing the build and dependency baseline. The main library (Ionide.LanguageServerProtocol) targets .NET Standard 2.0 and relies on Newtonsoft.Json (13.0.1), System.Text.Json (10.0.8), and StreamJsonRpc (2.16.36), while also pinning FSharp.Core to 6.0.0. A new MetaModelGenerator tool is added, targeting .NET 10.0 and using Fabulous.AST (1.2.0) to generate types from the LSP meta model. Additionally, a test project is created targeting .NET 8.0 and 10.0, utilizing Expecto (10.2.1), FsCheck (2.16.5), and BenchmarkDotNet (0.13.1) for validation and performance testing.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 57 → 56 (-1.1)
  • Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 88 → 88 (+0.0)
  • Architecture 100 → 100 (+0.1)
  • Maturity 38 → 38 (+0.0)
  • Readiness 62 → 62 (+0.0)
  • Security 78 → 73 (-4.5)
  • Performance 75 (new)

Resolved (4)

  • Documentation: no contributor guidance (README.md)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Off-boarding risk: anonymized user #1

New (1)

  • Off-boarding risk: anonymized user #1

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

ionide/LanguageServerProtocol was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 3f074b25368408321105fa33a53789b1f71075c7 — the exact code this score is about.
  • Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-4f4226d619ea.