Metadata-Version: 2.4
Name: agent-lsp-real-inspect-mcp
Version: 0.1.6
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Rust
Classifier: Topic :: Software Development :: Libraries
Requires-Dist: fastmcp[tasks]>=2.0
Requires-Dist: pydantic>=2.12
Requires-Dist: agent-lsp-state==0.1.6
Requires-Dist: agent-lsp-git==0.1.6
Requires-Dist: agent-lsp-docker==0.1.6
Requires-Dist: pytest>=8 ; extra == 'dev'
Requires-Dist: pytest-cov>=6 ; extra == 'dev'
Requires-Dist: ruff>=0.12 ; extra == 'dev'
Requires-Dist: mypy>=1.16 ; extra == 'dev'
Requires-Dist: maturin>=1.8,<2 ; extra == 'dev'
Provides-Extra: dev
License-File: LICENSE
Summary: Scout LSP MCP — FastMCP + Rust/PyO3 (tasks, sessions, worktrees, blast_radius)
Keywords: mcp,lsp,fastmcp,scout,agent
Author: hewimetall
License-Expression: MIT
Requires-Python: >=3.12
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Documentation, https://github.com/hewimetall/agent-lsp-real-inspect/tree/main/docs
Project-URL: Homepage, https://github.com/hewimetall/agent-lsp-real-inspect
Project-URL: Issues, https://github.com/hewimetall/agent-lsp-real-inspect/issues
Project-URL: Repository, https://github.com/hewimetall/agent-lsp-real-inspect

# agent-lsp

Scout LSP MCP-сервер: **FastMCP + Rust/PyO3** + **обязательный task support**.

Стек как в [mcp-presentation](https://github.com/hewimetall/mcp-presentation).

## Пакеты

| Пакет | Роль |
|-------|------|
| **`agent-lsp`** | FastMCP + **TaskStore** + scout tools + ScoutWorker |
| **`agent-lsp-state`** | sessions / workspaces / container bindings |
| **`agent-lsp-git`** | gix bare + worktree + clone |
| **`agent-lsp-docker`** | bollard — контейнеры в сессии |

## Task support (обязательно)

`import_project` / `ensure_runtime` / `install_workspace_deps` /
`install_apt_packages` / `warm_index` → `TaskConfig(mode="required")`.

Клиент **должен** вызывать с `task=True`. Очередь — SQLite `state/tasks.db`,
не Docket. Docs: [`docs/guide/tasks.md`](docs/guide/tasks.md) ·
[`docs/guide/workspace-deps.md`](docs/guide/workspace-deps.md) ·
ADL: [`docs/adr/`](docs/adr/README.md).

## Happy path

```text
create_session
  → import_project(source=<git|path>, task=True)
  → checkout_workspace
  → ensure_runtime(language, language_version="3.11", task=True)
  → install_apt_packages([...], task=True)          # optional, no allowlist
  → install_workspace_deps(packages=[...], task=True)  # venv / node_modules / go mod
  → warm_index(..., task=True)
  → blast_radius / explore_symbol   # python → site-packages
  → close_session
```

## Runbooks

| Doc | When |
|-----|------|
| [`docs/guide/runbook-solo.md`](docs/guide/runbook-solo.md) | Поднять agent-lsp **самостоятельно** |
| [`docs/guide/runbook-with-vmcp.md`](docs/guide/runbook-with-vmcp.md) | Поднять **вместе с vmcp** (GraphQL aliases) |
| [`docs/guide/workspace-deps-validation.md`](docs/guide/workspace-deps-validation.md) | Зафиксированный validation-отчёт |
| [`infra/vmcp/`](infra/vmcp/) | Пример `registry.json` + sidecar |

```bash
./scripts/verify_runbook.sh solo
./scripts/verify_runbook.sh with-vmcp   # + checks vmcp source / optional :8765 health
```

## Install (PyPI / uv)

Published on tags `v*` as **`agent-lsp-real-inspect-mcp`**
(upstream already owns the PyPI name `agent-lsp`).

```bash
uvx agent-lsp-real-inspect-mcp
# or
uv tool install agent-lsp-real-inspect-mcp
agent-lsp
```

Cut a release: `git tag -a v0.1.6 -m v0.1.6 && git push origin v0.1.6`  
Setup (Trusted Publisher + env `pypi`): [`docs/guide/pypi-release.md`](docs/guide/pypi-release.md).

## Coverage

Python ≠ Rust. Gate = **медиана ≥ 93%** (не среднее).

```bash
make cov-py
make cov-rust
```

## Dev

```bash
uv sync --extra dev
maturin develop                              # TaskStore (core)
(cd packages/agent-lsp-state && maturin develop)
(cd packages/agent-lsp-git && maturin develop)
(cd packages/agent-lsp-docker && maturin develop)
pytest -q
make cov
```

## LSP container images

Languages from `agent_lsp.runtimes`: **go / python / typescript / rust / cpp**
(clangd + `compile_commands.json` for C/C++).

```bash
make docker-lsp
# or: (cd infra/docker/lsp && ./build.sh)
```

See [`infra/docker/lsp/README.md`](infra/docker/lsp/README.md).

## Runtime health

Dead Docker LSP containers are demoted to `stale` by
`agent-lsp-runtime-worker` (ADR-0012); the hub also checks `is_running`
before reuse so scout tools do not hit `Broken pipe`.

