Go to file
Henrik Jess Nielsen fc40157a77
All checks were successful
Build and Deploy iLSP / test (push) Successful in 22s
Build and Deploy iLSP / build-and-deploy (push) Successful in 57s
add lsp_bridge.py: proper LSP-aware WebSocket bridge replacing websocat
websocat reads stdin line-by-line and waits for \n before sending each chunk.
LSP JSON bodies have no trailing \n, causing a deadlock: websocat holds the
body, the server waits for the body, LSP4IJ waits for the response.

lsp_bridge.py reads complete Content-Length-framed messages before sending,
then sends each as a single binary WebSocket frame. This fixes autocomplete
in IntelliJ IDEA via LSP4IJ.
2026-05-11 12:29:33 +02:00

iLSP — Internal LSP Proxy

Self-hosted Language Server Protocol proxy for LRU's internal tooling. Runs at https://ilsp.i80.dk (Nomad/Docker, autobox.i80.dk).

Provides smart autocomplete on top of standard LSPs:

Language Endpoint Extra completions
Bicep wss://ilsp.i80.dk/bicep Internal ACR modules, versions, params
YAML wss://ilsp.i80.dk/yaml AzDO pipeline templates, GHA reusable workflows
Python wss://ilsp.i80.dk/python Jedi (standard)

→ See EDITOR_SETUP.md for editor configuration and a full feature overview.

Quick start

# Check service health
curl https://ilsp.i80.dk/health

# Run smoke tests
python3 scripts/smoke_test_completions.py

# Local dev
make run        # build + start + health check
make run-quick  # start without rebuilding
make logs       # tail container logs
make health     # curl health endpoint

Updating catalogs

python3 scripts/sync_pipeline_templates.py  # scan AzDO + GHA template repos
bash scripts/push_catalogs.sh               # scp to server + /reload

Deploy

Push to main → Gitea Actions builds image → Nomad deploys automatically.

# Manual deploy (if CI is down)
git push
ssh autobox.i80.dk 'nomad job run /opt/nomad/jobs/ilsp.nomad'
Description
No description provided
Readme 374 KiB
Languages
Python 89.8%
Shell 4.2%
Makefile 2.8%
HCL 1.7%
Dockerfile 1.5%