0.163.0

Added

  • MCP: sandbox stdio + lazy-search (BM25) + протокольные handlers (ADR Фаза 4b+5, ). Три набора улучшений для завершения покрытия MCP: sandbox для stdio-процессов, BM25-поиск по инструментам, и Roots/Sampling/Elicitation/Capabilities (завершение ADR 2026-06-30-mcp-protocol-coverage).

Фаза 4b — Sandbox stdio:

  • security.WrapCommandArgs(argv0, args, workDir, config) — argv-based sandbox (bwrap/sandbox-exec). В отличие от shell-based WrapCommand, сохраняет argv-структуру для MCP stdio. bwrap: условный --unshare-net по AllowNetwork (раньше захардкожен).
  • Интеграция через transport.WithCommandFunc в MCPSession.createStdioClient — sandbox spawn с minimal env (security.BuildMinimalEnv(), не наследует полный родительский env).
  • Manager.SetSandboxConfig + MCPSession.SetSandboxConfig — auto-detect backend (security.DetectSandboxBackend()), AllowNetwork=true (MCP-серверы обычно проксируют API).

Фаза 4b — Lazy-search (BM25):

  • internal/mcp/bm25_index.go — лёгкий BM25-индекс (без внешних зависимостей): tokenize name+description, IDF over corpus, score с k1=1.2/b=0.75. AddDoc/Search(query, k) — top-k tool names.
  • Готов для интеграции в registerMCPTools при >40 tools (полная интеграция с deferred registry — отдельная задача UI/UX).

Фаза 5 — Протокольные handlers (завершение ADR 2026-06-30):

  • internal/mcp/roots.goAgentRootsHandler (workspace агента как root URI). client.WithRootsHandler → capabilities.roots декларируется.
  • internal/mcp/sampling.goAgentSamplingHandler (LLM-делегирование с max_tokens cap 4096, no tool-calling). client.WithSamplingHandler → capabilities.sampling.
  • internal/mcp/elicitation.goDeclineElicitationHandler (decline для non-interactive sessions). client.WithElicitationHandler → capabilities.elicitation.
  • internal/mcp/completion.go — stub (empty completion values).
  • MCPSession.clientOptions() — собирает handler-опции и передаёт в NewClient для всех 3 транспортов (stdio/SSE/streamable_http). Библиотека автоматически добавляет capabilities в Initialize.

Фаза 6 — UI/DX (API client):

  • web/src/lib/api/endpoints.tsoauthStatus, oauthRevoke, listGrants, upsertGrant, deleteGrant методы.
  • web/src/lib/api/types.ts — тип MCPGrant, расширенный OAuthAuthorizeResult (completed/status).
  • npm run check — 0/0.

Проверки: go test ./internal/... — 0 FAIL; новые тесты: TestBM25Index_{Search,SearchGitHub,EmptyQuery,NoMatch,Len} (ранжирование, edge cases), TestContainsTool_WildcardPrefix, TestSandboxSpawn_NoSandbox (fallback); go vet + golangci-lint — 0 issues; make build-cross — проходит; npm run check — 0/0.