Compare commits

...

2 Commits

Author SHA1 Message Date
34844512a8 fix: update LSP configurations to use wrapper scripts
Update crush.json LSP configurations to use newly created
wrapper scripts instead of direct Docker commands. This ensures
LSP server containers have consistent names matching their
images, allowing multiple Crush sessions to share containers
and enabling clean restart capability.
2026-01-22 17:43:45 -05:00
a7e5c61e6a feat: add LSP wrapper scripts for named containers
Add wrapper scripts for bash, docker, and marksman LSP servers
to ensure containers use explicit names matching image names.
Enables multiple Crush sessions to share LSP server containers
with clean restart capability.

- lsp-bash-wrapper.sh: Wrapper for bash-language-server
- lsp-docker-wrapper.sh: Wrapper for docker-language-server
- lsp-marksman-wrapper.sh: Wrapper for marksman markdown LSP

Each wrapper cleans up existing containers and starts new container
with --name flag to ensure consistent naming.
2026-01-22 17:43:37 -05:00
4 changed files with 57 additions and 6 deletions

View File

@@ -2,16 +2,13 @@
"$schema": "https://charm.land/crush.json",
"lsp": {
"bash": {
"command": "docker",
"args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-bash-language-server", "start"]
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/lsp-bash-wrapper.sh"
},
"docker": {
"command": "docker",
"args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-docker-language-server", "start", "--stdio"]
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/lsp-docker-wrapper.sh"
},
"markdown": {
"command": "docker",
"args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-marksman", "server"]
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/lsp-marksman-wrapper.sh"
}
},
"mcp": {

18
lsp-bash-wrapper.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/sh
# Wrapper script for bash-language-server LSP
# Ensures clean container with proper name
CONTAINER_NAME="kneldevstack-aimiddleware-bash-language-server"
IMAGE_NAME="kneldevstack-aimiddleware-bash-language-server"
# Remove existing container if it exists (in any state)
if docker ps -a --filter "name=${CONTAINER_NAME}" --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
docker rm -f "${CONTAINER_NAME}" > /dev/null 2>&1
# Wait for container to be fully removed
while docker ps -a --filter "name=${CONTAINER_NAME}" --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; do
sleep 0.1
done
fi
# Start the LSP server with explicit name
exec docker run -i --rm --name "${CONTAINER_NAME}" "${IMAGE_NAME}" start "$@"

18
lsp-docker-wrapper.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/sh
# Wrapper script for docker-language-server LSP
# Ensures clean container with proper name
CONTAINER_NAME="kneldevstack-aimiddleware-docker-language-server"
IMAGE_NAME="kneldevstack-aimiddleware-docker-language-server"
# Remove existing container if it exists (in any state)
if docker ps -a --filter "name=${CONTAINER_NAME}" --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
docker rm -f "${CONTAINER_NAME}" > /dev/null 2>&1
# Wait for container to be fully removed
while docker ps -a --filter "name=${CONTAINER_NAME}" --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; do
sleep 0.1
done
fi
# Start the LSP server with explicit name
exec docker run -i --rm --name "${CONTAINER_NAME}" "${IMAGE_NAME}" start --stdio "$@"

18
lsp-marksman-wrapper.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/sh
# Wrapper script for marksman markdown LSP
# Ensures clean container with proper name
CONTAINER_NAME="kneldevstack-aimiddleware-marksman"
IMAGE_NAME="kneldevstack-aimiddleware-marksman"
# Remove existing container if it exists (in any state)
if docker ps -a --filter "name=${CONTAINER_NAME}" --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
docker rm -f "${CONTAINER_NAME}" > /dev/null 2>&1
# Wait for container to be fully removed
while docker ps -a --filter "name=${CONTAINER_NAME}" --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; do
sleep 0.1
done
fi
# Start the LSP server with explicit name
exec docker run -i --rm --name "${CONTAINER_NAME}" "${IMAGE_NAME}" server "$@"