@lsp @capability Feature: LspCapability Enum Completeness As a developer integrating LSP servers I want the LspCapability enum to include all spec-defined capabilities So that the tool adapter generates correct tool specs # ── Enum completeness ────────────────────────────────────── Scenario: LspCapability enum has exactly 11 members Given the LspCapability enum for lsp_cap Then the lsp_cap enum should have 11 members Scenario Outline: LspCapability enum includes Given the LspCapability enum for lsp_cap Then the lsp_cap enum should include "" Examples: | member | | diagnostics | | hover | | completions | | definitions | | references | | rename | | code_actions | | formatting | | signature_help | | document_symbols | | workspace_symbols | # ── Tool adapter generates specs for all capabilities ────── Scenario: Tool adapter has mappings for all 11 capabilities Given the lsp_cap capability tool map Then the lsp_cap tool map should have 11 entries Scenario Outline: Tool adapter generates tool spec for Given an LspServerConfig with capability "" for lsp_cap When I generate tool specs for lsp_cap Then the lsp_cap generated specs should not be empty And the lsp_cap tool spec should have keys "name" and "input_schema" And the lsp_cap tool name should end with "" Examples: | capability | tool_suffix | | diagnostics | diagnostics | | hover | hover | | completions | completions | | definitions | definition | | references | references | | rename | rename | | code_actions | code-actions | | formatting | format | | signature_help | signature | | document_symbols | symbols | | workspace_symbols | workspace-symbols | # ── Input schemas per category ───────────────────────────── Scenario Outline: File-only capability has file_path schema Given the lsp_cap input schema for "" Then the lsp_cap schema should require "file_path" And the lsp_cap schema should not require "line" Examples: | cap | | diagnostics | | formatting | | document_symbols | Scenario Outline: Position capability has file+line+column schema Given the lsp_cap input schema for "" Then the lsp_cap schema should require "file_path" And the lsp_cap schema should require "line" And the lsp_cap schema should require "column" Examples: | cap | | hover | | completions | | definitions | | references | | code_actions | | signature_help | Scenario: Rename capability has file+line+column+new_name schema Given the lsp_cap input schema for "rename" Then the lsp_cap schema should require "file_path" And the lsp_cap schema should require "line" And the lsp_cap schema should require "column" And the lsp_cap schema should require "new_name" Scenario: Workspace symbols has query schema Given the lsp_cap input schema for "workspace_symbols" Then the lsp_cap schema should require "query" And the lsp_cap schema should not require "file_path" # ── Stubbed server capabilities include all keys ─────────── Scenario: Stubbed server capabilities include all LSP providers Given the lsp_cap stubbed server capabilities Then the lsp_cap stubbed caps should include "hoverProvider" And the lsp_cap stubbed caps should include "definitionProvider" And the lsp_cap stubbed caps should include "signatureHelpProvider" And the lsp_cap stubbed caps should include "documentSymbolProvider" And the lsp_cap stubbed caps should include "workspaceSymbolProvider" And the lsp_cap stubbed caps should include "completionProvider" And the lsp_cap stubbed caps should include "referencesProvider" And the lsp_cap stubbed caps should include "renameProvider" And the lsp_cap stubbed caps should include "codeActionProvider" And the lsp_cap stubbed caps should include "documentFormattingProvider" And the lsp_cap stubbed caps should include "diagnosticProvider" # ── Negative tests ───────────────────────────────────────── Scenario: Invalid capability value raises ValueError When I create an LspCapability with value "nonexistent" for lsp_cap Then the lsp_cap creation should raise a ValueError Scenario: _input_schema_for raises ValueError for unknown capability When I call _input_schema_for with a fake capability for lsp_cap Then the lsp_cap schema call should raise a ValueError