# tools-lsp

Статус: отключен по умолчанию. Старый regex/file-scan helper удален, потому что он не был настоящим Language Server Protocol surface.

## Назначение

`tools-lsp` должен стать OMP-based code intelligence plugin: diagnostics, definition, references, hover, symbols, rename, rename_file, code_actions, status, reload, capabilities и raw request должны идти через настоящие language servers, а не через локальный regex lookup.

## Почему он есть в проекте

LSP нужен для symbol-aware изменений и навигации: language server знает shadowing, imports, re-exports, diagnostics, workspace edits и code actions лучше, чем текстовый поиск. OMP уже содержит эту functionality, поэтому `miloc-pi` должен портировать или тонко упаковать OMP LSP stack, а не поддерживать второй слабый helper.

## Пользовательская поверхность

- Агент может вызвать tool `lsp` с OMP-shaped `action`.
- Сейчас любой action возвращает `isError=true` и объясняет, что OMP LSP backend еще не портирован.
- Схема принимает read actions (`diagnostics`, `definition`, `references`, `hover`, `symbols`, `implementation`, `type_definition`, `status`, `capabilities`) и write/discovery actions (`rename`, `rename_file`, `code_actions`, `reload`, `request`), чтобы будущий порт не ломал публичный контракт.

## Как работает по коду

Entrypoint `extensions/tools-lsp/index.ts` регистрирует только tool `lsp`. Tool валидирует OMP-shaped параметры и возвращает fail-closed error result с details `owner: "omp-lsp"`, `ported: false`, `requestedAction` и списком поддерживаемых будущих actions. Он больше не читает файлы, не сканирует regex, не пишет dev events и не заявляет subprocess permission.

- Entrypoint: `./extensions/tools-lsp/index.ts`
- Manifest: `extensions/tools-lsp/manifest.json`
- Commands: none
- Tools: `lsp`
- Hooks: none
- Permissions: fs.read=none, fs.write=none, subprocess=none, network=none, browser=false, models=false, ui=none
- State: none
- Review: status=reviewed, source=wrapper-first, reviewedBy=pi-dev-extensions, reviewedAt=2026-06-01, risk=medium

## Ограничения и риски

Этот extension пока не запускает LSP servers, не читает OMP config, не держит client lifecycle, не получает diagnostics, не применяет workspace edits и не выполняет code actions. Он полезен только как disabled contract shell до настоящего порта.

## Решение

Решение: `OMP-port-backlog`, fail-closed locally. Следующий шаг — портировать или тонко упаковать OMP `lsp` stack: server config/defaults, client lifecycle, diagnostics wait, symbols/references/definition, rename/code_actions, workspace edit application, status/capabilities/reload и approval tier separation.
