- yaml-language-server: rewrite to stdio per WebSocket (fixes crash loop)
vscode-jsonrpc v9 createServerSocketTransport is a TCP client, not server
now spawns yaml-language-server --stdio per connection via asyncio subprocess
- bicep/modules.py: add /iac_source_catalog.json as first path in _IAC_SOURCE_PATHS
Dockerfile copies to /iac_source_catalog.json but path wasn't listed
- server.py: remove YAML_LSP_PORT daemon (no longer needed with stdio mode)
- Makefile: add -e HTTP_PORT=$(HEALTH_PORT) to all docker run commands
server defaulted to :8000 but Makefile exposed :2089 with no override
Dockerfile:
- Final stage now FROM mcr.microsoft.com/dotnet/runtime:8.0 instead of python:3.12-slim
+ MS apt repo. Reason: packages.microsoft.com GPG key uses SHA1 which Debian trixie
rejects since 2026-02-01. The official MS container image has no signing issue.
- Add python3 + pip3 + wget on top of dotnet base (bookworm)
- pip3 install --break-system-packages for debian bookworm compatibility
Makefile targets:
make build - build image locally
make rebuild - force no-cache build
make run - build + start container with port mappings
make run-quick - start without rebuilding
make stop/restart - container lifecycle
make logs - follow logs
make shell - bash into running container
make health - curl health endpoint
make smoke - end-to-end TCP + health test (scripts/smoke_test.sh)
make test - unit tests (pytest, no Docker)
make ps/ports - status helpers
make clean - stop + remove image