Назначение

generated/typescript содержит TypeScript-представление контрактов из proto/wraithbound, а sdk/typescript добавляет небольшой публичный клиент LauncherService. Оба каталога входят в корневой Bun workspace и используют одинаковые закреплённые версии protobuf-инструментов. SDK предназначен для Electron main process и web composition layer. Renderer не должен самостоятельно хранить access token или обращаться к admin API.

Генерация

После изменения любого .proto выполните:
Конфигурация находится в корневом buf.gen.yaml. Генератор создаёт ES-модули в generated/typescript/src; результат коммитится вместе с исходным контрактом. Сгенерированные файлы вручную не редактируются.

Использование

Клиент нормализует base URL, запрещает URL со встроенными credentials и добавляет ClientContext к каждому запросу. Методы возвращают подписанный manifest envelope без попытки считать его доверенным.

Граница доверия

TypeScript SDK не проверяет Ed25519-подпись и не превращает envelope в план установки. Полученные bytes передаются в Rust/main boundary, где выполняются:
  1. проверка ключа и подписи;
  2. проверка версии и срока действия envelope;
  3. построение scanner/downloader plan;
  4. подготовка команды запуска Minecraft.
Admin bearer token не входит в публичный SDK. Операции публикации и обслуживания используют отдельный Node-only пакет @wraithbound/launcher-admin-sdk из sdk/typescript-admin и никогда не проходят через renderer state. Он подключается к приватному HTTP/2 gRPC listener, добавляет bearer credential через interceptor и не предоставляет доступа к самому значению token после создания клиента.

Совместимость

Добавление поля с новым field number совместимо со старыми клиентами. Номер удалённого поля не переиспользуется, а несовместимое изменение выпускается в новом protobuf package version.