Skip to content

Добавить гибридную поддержку macOS для локального VS Code с Docker-backed XP tools#235

Open
g4n8g wants to merge 15 commits into
Security-Experts-Community:developfrom
g4n8g:develop
Open

Добавить гибридную поддержку macOS для локального VS Code с Docker-backed XP tools#235
g4n8g wants to merge 15 commits into
Security-Experts-Community:developfrom
g4n8g:develop

Conversation

@g4n8g

@g4n8g g4n8g commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Кратко

Этот PR добавляет гибридную архитектуру для SecurityExpertsCommunity.xp на macOS.

В локальном VS Code на macOS:

  • само расширение работает локально;
  • knowledgebase открывается с файловой системы хоста;
  • tree view, редакторы, webview, команды VS Code и работа с файлами остаются локальными;
  • только операции, которым нужны xp-kbt, siemj, normalizer-cli, evt-tests и связанные build tools, выполняются через Docker.

Для Linux и Windows локальное поведение по возможности сохранено максимально близким к существующему.

Что изменилось

Абстракция запуска внешних утилит

  • введён общий слой запуска tools:
    • runTool(command, args, options)
    • runKbt(args, options)
    • runSiemj(args, options)
    • runNormalizer(args, options)
  • добавлены реализации:
    • LocalToolRunner
    • DockerToolRunner
  • прямые вызовы XP toolchain переведены на общий runner-слой

Docker-backed режим для macOS

  • на локальной macOS режим auto теперь по умолчанию использует Docker для XP toolchain
  • добавлен path mapping между путями хоста и контейнера
  • добавлены discovery и валидация контейнера
  • улучшена нормализация ошибок Docker/container backend и сообщения пользователю

Настройка backend на macOS

  • добавлен setup prompt при запуске расширения на локальной macOS
  • добавлена команда XP: Configure macOS Container Backend
  • добавлен wizard, который умеет:
    • выбрать локальный путь к knowledgebase
    • найти или выбрать запущенный контейнер
    • создать новый контейнер для XP tools
    • определить mount path внутри контейнера
    • определить путь к KBT
    • установить xp-kbt в контейнер
    • сохранить настройки расширения

Нативный LSP и formatter для macOS

  • для локальной macOS можно использовать:
    • нативный evt-xp-language-server через xpConfig.lspServerExecutablePath
    • нативный evt-xp-formatter через xpConfig.formatterExecutablePath
  • если путь к нативному formatter не указан, в Docker-режиме используется formatter из контейнера
  • legacy LSP, встроенный в расширение, на локальной macOS отключён
  • обновлена логика инициализации taxonomy/schema для LSP в гибридном режиме

Output и пути

  • выходные артефакты по умолчанию складываются в tmp/xp-output внутри локальной knowledgebase
  • path mapping применяется к:
    • аргументам команд
    • cwd
    • генерируемым config-файлам
    • output paths

Попутные исправления тестовых и editor-сценариев

  • улучшено поведение модульных и интеграционных тестов, когда Docker backend недоступен
  • добавлены действия Show Output / Configure для ошибок backend
  • восстановлена более корректная обработка failing modular tests при non-zero exit code у evt-tests
  • удалён подтверждённый мёртвый код, включая старый LSP proxy и неиспользуемые хвосты вокруг test formatting

Новые настройки

  • xpConfig.toolExecutionMode
  • xpConfig.docker.containerName
  • xpConfig.docker.composeFile
  • xpConfig.docker.serviceName
  • xpConfig.docker.workspaceHostPath
  • xpConfig.docker.workspaceContainerPath
  • xpConfig.docker.kbtBaseDirectory
  • xpConfig.docker.outputDirectoryPath
  • xpConfig.macos.showContainerSetupPrompt
  • xpConfig.lspServerExecutablePath
  • xpConfig.formatterExecutablePath

Поведение на macOS

В локальном VS Code на macOS:

  • desktop VS Code остаётся локальным
  • XP tools выполняются в Docker
  • native LSP/formatter являются опциональными
  • если native LSP не настроен, расширение всё равно может использоваться для Docker-backed build/test сценариев без LSP-функций

Документация

  • обновлены README.en.md
  • обновлён readme.md
  • добавлено описание:
    • гибридного режима macOS
    • требований к Docker
    • использования нативных LSP/formatter на macOS
    • поведения schema.json
    • troubleshooting

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant