Files
cleveragents-core/robot/lsp_functional_runtime.robot
T
hamza.khyari 4ff075e0da
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 18s
CI / quality (pull_request) Successful in 32s
CI / typecheck (pull_request) Successful in 56s
CI / security (pull_request) Successful in 57s
CI / lint (pull_request) Successful in 3m19s
CI / integration_tests (pull_request) Successful in 3m44s
CI / unit_tests (pull_request) Successful in 6m39s
CI / docker (pull_request) Successful in 1m9s
CI / e2e_tests (pull_request) Successful in 9m38s
CI / coverage (pull_request) Successful in 11m19s
CI / status-check (pull_request) Successful in 1s
CI / benchmark-regression (pull_request) Failing after 1h13m38s
feat(lsp): implement functional LSP runtime
Replace local-mode stubs with real LSP protocol support:

- StdioTransport: subprocess management with JSON-RPC framing
- LspClient: LSP protocol (initialize/shutdown/diagnostics/completions)
- LspLifecycleManager: reference-counted instances, health checks, crash restart
- LspRuntime: registry-based server lookup, auto-restart on crash
- LspToolAdapter: runtime-delegating handlers with local-mode fallback
- LanguageDiscovery: 4-layer detection (extension, shebang, UKO, project)
- activate_bindings/deactivate_bindings: actor compiler LSP binding wiring

Tests: 27 Behave scenarios, 6 Robot integration tests, 250 existing pass.

ISSUES CLOSED: #826
2026-03-24 13:01:12 +00:00

48 lines
2.4 KiB
Plaintext

*** Settings ***
Documentation Integration tests for LSP functional runtime
Resource ${CURDIR}/common.resource
Suite Setup Setup Test Environment
Suite Teardown Cleanup Test Environment
*** Variables ***
${HELPER} ${CURDIR}/helper_lsp_functional_runtime.py
*** Test Cases ***
Transport Lifecycle Start And Stop
[Documentation] StdioTransport can start and stop a process
${result}= Run Process ${PYTHON} ${HELPER} transport-lifecycle cwd=${WORKSPACE} on_timeout=kill timeout=30s
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} transport-lifecycle-ok
Transport Rejects Empty Command
[Documentation] StdioTransport rejects empty command
${result}= Run Process ${PYTHON} ${HELPER} transport-empty-command cwd=${WORKSPACE} on_timeout=kill timeout=30s
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} transport-empty-command-ok
Lifecycle Manager Empty State
[Documentation] LspLifecycleManager starts with no servers
${result}= Run Process ${PYTHON} ${HELPER} lifecycle-manager-empty cwd=${WORKSPACE} on_timeout=kill timeout=30s
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} lifecycle-manager-empty-ok
Runtime Input Validation
[Documentation] LspRuntime validates inputs correctly
${result}= Run Process ${PYTHON} ${HELPER} runtime-validation cwd=${WORKSPACE} on_timeout=kill timeout=30s
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} runtime-validation-ok
Language Discovery
[Documentation] LanguageDiscovery detects languages from extensions
${result}= Run Process ${PYTHON} ${HELPER} discovery cwd=${WORKSPACE} on_timeout=kill timeout=30s
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} discovery-ok
Tool Adapter Modes
[Documentation] LspToolAdapter generates specs in both modes
${result}= Run Process ${PYTHON} ${HELPER} tool-adapter-modes cwd=${WORKSPACE} on_timeout=kill timeout=30s
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} tool-adapter-modes-ok