Перейти к содержимому

Хост-воркеры

Хост-воркер выполняет ваш код на Node на зарегистрированной машине, предоставляя доступ к файлам, wake lock и процессам. В примере ниже описан один обработчик, а из того же артефакта реэкспортируется мост провайдера.

// examples/plugins/echo-provider/host.ts — one artifact, both halves
import { experimental_defineHostEntry } from "@get-bb/plugin-sdk/host";
export { experimental_providerBridge } from "./src/provider-bridge.js"; // the bridge rides along
export 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 на строку).