Хост-воркеры
Хост-воркер выполняет ваш код на Node на зарегистрированной машине, предоставляя доступ к файлам, wake lock и процессам. В примере ниже описан один обработчик, а из того же артефакта реэкспортируется мост провайдера.
// examples/plugins/echo-provider/host.ts — one artifact, both halvesimport { experimental_defineHostEntry } from "@get-bb/plugin-sdk/host";export { experimental_providerBridge } from "./src/provider-bridge.js"; // the bridge rides alongexport default experimental_defineHostEntry({ contract: echoProviderHostContract, handlers: { hostGreeting: (_input, context) => ({ platform: process.platform, dataDir: context.experimental_paths.dataDir, }), },});Контекст обработчика. Доступны signal (прерывается при отмене запроса или на шаге dispose воркера), lifecycle.signal (прерывается один раз за всё время жизни процесса воркера), пути experimental_paths.{dataDir,tempDir}, функции experimental_emitSignal(name, payload) и experimental_watch(options, listener) поверх нативного вотчера демона, а также experimental_retainWorker() с disposable lease.
watch. Поддерживает события {kind:"changed", changes}, {kind:"rescan-required"} и {kind:"watch-error", message}. Значения по умолчанию: debounceMs 75 и maxWaitMs 500. Лимиты: 4096 изменённых путей и 1 MiB на батч, 4096 записей игнорирования, максимальная длина пути — 16 KiB.
Также в /host. Контракт native-roots (experimental_nativeRootsHostContract, experimental_filterResolvedNativeRoots), функции для чтения корней вендорных плагинов (experimental_resolveClaudePluginRoots, experimental_resolveVendorPluginRoots), experimental_killProcessesWithCwdUnder (шлёт SIGTERM, а затем SIGKILL всем процессам, чей cwd лежит внутри указанной директории), experimental_sanitizeInheritedChildProcessEnv и experimental_spawnPortableOutputProcess.
Паттерн прогресса. Сервер передаёт хосту operationId вида create#${pathKey}#${attempt}, хост помечает им свои сигналы, а сервер маршрутизирует каждый сигнал в нужный report и удаляет запись в блоке finally.
Окружение. Хост-воркер получает «a normalized user PATH without the daemon-owned BB_* variables». Это вопрос гигиены, а не граница безопасности. Для stdin и stdout задано ignore, наружу выходит только stderr — через warn-логи демона с ограничением частоты (не более 1000 строк, до 16 KiB на строку).