diff --git a/docs/uk/plugins/sdk-subpaths.md b/docs/uk/plugins/sdk-subpaths.md index a3cfe1e60..12ce374de 100644 --- a/docs/uk/plugins/sdk-subpaths.md +++ b/docs/uk/plugins/sdk-subpaths.md @@ -1,14 +1,14 @@ --- read_when: - - Вибір правильного підшляху plugin-sdk для імпорту плагіна + - Вибір правильного підшляху plugin-sdk для імпорту Plugin - Аудит підшляхів bundled-plugin і допоміжних поверхонь -summary: 'Каталог підшляхів Plugin SDK: які імпорти де розміщені, згруповано за областями' +summary: 'Каталог підшляхів Plugin SDK: які імпорти де знаходяться, згруповано за областями' title: Підшляхи Plugin SDK x-i18n: - generated_at: "2026-04-28T02:07:53Z" + generated_at: "2026-04-28T02:31:40Z" model: gpt-5.4 provider: openai - source_hash: c56a83c4cf89a40286328bd58079af21a1f5fcf2392c5f6a1e08f873c65e49d6 + source_hash: ff81bf9044554635d0b139da2dc0dd6b5e25912ccda1e35fd3c6739d35046369 source_path: plugins/sdk-subpaths.md workflow: 15 --- @@ -16,312 +16,314 @@ x-i18n: Plugin SDK представлено як набір вузьких підшляхів у `openclaw/plugin-sdk/`. На цій сторінці наведено каталог найуживаніших підшляхів, згрупованих за призначенням. Згенерований повний список із понад 200 підшляхів міститься в `scripts/lib/plugin-sdk-entrypoints.json`; - зарезервовані допоміжні підшляхи bundled-plugin також наведено там, але вони є деталями - реалізації, якщо тільки окрема сторінка документації явно не рекомендує їх. + зарезервовані допоміжні підшляхи bundled-plugin також з’являються там, але є + деталями реалізації, якщо лише сторінка документації явно не просуває їх. - Посібник зі створення плагінів дивіться в [Огляд Plugin SDK](/uk/plugins/sdk-overview). + Посібник з розробки Plugin див. у [Огляд Plugin SDK](/uk/plugins/sdk-overview). - ## Вхід плагіна + ## Точка входу Plugin - | Підшлях | Основні експорти | - | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | - | `plugin-sdk/plugin-entry` | `definePluginEntry` | - | `plugin-sdk/core` | `defineChannelPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase`, `defineSetupPluginEntry`, `buildChannelConfigSchema` | - | `plugin-sdk/config-schema` | `OpenClawSchema` | - | `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` | - | `plugin-sdk/testing` | Широкий сумісний barrel для застарілих тестів плагінів; для нових тестів розширень віддавайте перевагу цільовим тестовим підшляхам | - | `plugin-sdk/plugin-test-api` | Мінімальний побудовник моку `OpenClawPluginApi` для модульних тестів прямої реєстрації плагінів | - | `plugin-sdk/channel-test-helpers` | Допоміжні засоби для тестів життєвого циклу облікових записів каналу, каталогів, конфігурації надсилання, моку runtime, hook і загального контракту каналу | - | `plugin-sdk/channel-target-testing` | Спільний набір тестів для випадків помилок під час визначення цілі каналу | - | `plugin-sdk/plugin-test-contracts` | Допоміжні засоби для контрактів реєстрації плагіна, маніфесту пакета, публічного артефакту, runtime API, побічних ефектів імпорту та прямого імпорту | - | `plugin-sdk/plugin-test-runtime` | Фікстури для тестів runtime плагіна, реєстру, реєстрації провайдера, майстра налаштування та runtime TaskFlow | - | `plugin-sdk/provider-test-contracts` | Допоміжні засоби для контрактів runtime провайдера, автентифікації, виявлення, онбордингу, каталогу, мультимедійних можливостей, web-search/fetch і майстра | - | `plugin-sdk/provider-http-test-mocks` | Опціональні моки HTTP/автентифікації Vitest для тестів провайдера, які використовують `plugin-sdk/provider-http` | - | `plugin-sdk/test-env` | Фікстури середовища тестування, fetch/мережі, live-тестів, тимчасової файлової системи та керування часом | - | `plugin-sdk/test-fixtures` | Загальні тестові фікстури CLI, sandbox, skill, повідомлень агента, системних подій, термінала, chunking, токенів автентифікації та типізованих випадків | - | `plugin-sdk/migration` | Допоміжні засоби для елементів провайдера міграції, такі як `createMigrationItem`, константи причин, маркери статусу елементів, засоби редагування та `summarizeMigrationItems` | - | `plugin-sdk/migration-runtime` | Допоміжні засоби для runtime міграції, такі як `copyMigrationFileItem` і `writeMigrationReport` | + | Підшлях | Ключові експорти | + | ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | `plugin-sdk/plugin-entry` | `definePluginEntry` | + | `plugin-sdk/core` | `defineChannelPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase`, `defineSetupPluginEntry`, `buildChannelConfigSchema` | + | `plugin-sdk/config-schema` | `OpenClawSchema` | + | `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` | + | `plugin-sdk/testing` | Широкий сумісний barrel для застарілих тестів Plugin; для нових тестів розширень віддавайте перевагу спеціалізованим тестовим підшляхам | + | `plugin-sdk/plugin-test-api` | Мінімальний конструктор моків `OpenClawPluginApi` для прямих unit-тестів реєстрації Plugin | + | `plugin-sdk/channel-test-helpers` | Життєвий цикл облікового запису каналу, каталог, send-config, мок runtime, hook, bundled channel entry, часова позначка envelope, відповідь pairing та допоміжні засоби тестування загального контракту каналу | + | `plugin-sdk/channel-target-testing` | Спільний набір тестів для випадків помилок під час визначення цілі каналу | + | `plugin-sdk/plugin-test-contracts` | Допоміжні засоби контрактів для реєстрації Plugin, package manifest, публічного артефакту, runtime API, побічних ефектів імпорту та прямого імпорту | + | `plugin-sdk/plugin-test-runtime` | Фікстури runtime Plugin, registry, реєстрації provider, setup wizard і runtime TaskFlow для тестів | + | `plugin-sdk/provider-test-contracts` | Допоміжні засоби контрактів для runtime provider, auth, discovery, onboard, catalog, можливостей медіа, політики replay, realtime STT live-audio, web-search/fetch і wizard | + | `plugin-sdk/provider-http-test-mocks` | Opt-in моки HTTP/auth для Vitest у тестах provider, що використовують `plugin-sdk/provider-http` | + | `plugin-sdk/test-env` | Фікстури тестового середовища, fetch/network, тимчасового HTTP-сервера, вхідного запиту, live-test, тимчасової файлової системи та керування часом | + | `plugin-sdk/test-fixtures` | Загальні тестові фікстури для CLI, sandbox, skill, agent-message, system-event, перезавантаження модуля, шляху bundled plugin, terminal, chunking, auth-token і typed-case | + | `plugin-sdk/test-node-mocks` | Спеціалізовані допоміжні засоби моків вбудованих модулів Node для використання всередині фабрик Vitest `vi.mock("node:*")` | + | `plugin-sdk/migration` | Допоміжні засоби елементів migration provider, такі як `createMigrationItem`, константи причин, маркери статусу елемента, допоміжні засоби редагування та `summarizeMigrationItems` | + | `plugin-sdk/migration-runtime` | Допоміжні засоби runtime migration, такі як `copyMigrationFileItem` і `writeMigrationReport` | - | Підшлях | Основні експорти | + | Підшлях | Ключові експорти | | --- | --- | | `plugin-sdk/channel-core` | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` | | `plugin-sdk/config-schema` | Експорт кореневої Zod-схеми `openclaw.json` (`OpenClawSchema`) | | `plugin-sdk/channel-setup` | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, а також `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` | - | `plugin-sdk/setup` | Спільні допоміжні засоби майстра налаштування, запити allowlist, побудовники статусу налаштування | + | `plugin-sdk/setup` | Спільні допоміжні засоби setup wizard, підказки allowlist, конструктори статусу setup | | `plugin-sdk/setup-runtime` | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` | | `plugin-sdk/setup-adapter-runtime` | `createEnvPatchedAccountSetupAdapter` | | `plugin-sdk/setup-tools` | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` | - | `plugin-sdk/account-core` | Допоміжні засоби для конфігурації/гейтів дій багатьох облікових записів і резервного використання облікового запису за замовчуванням | - | `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, допоміжні засоби нормалізації ідентифікатора облікового запису | - | `plugin-sdk/account-resolution` | Допоміжні засоби пошуку облікового запису + резервного використання облікового запису за замовчуванням | - | `plugin-sdk/account-helpers` | Вузькі допоміжні засоби для списків облікових записів/дій з обліковими записами | + | `plugin-sdk/account-core` | Допоміжні засоби для конфігурації кількох облікових записів/керування шлюзами дій, допоміжні засоби резервного використання облікового запису за замовчуванням | + | `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, допоміжні засоби нормалізації ID облікового запису | + | `plugin-sdk/account-resolution` | Допоміжні засоби пошуку облікового запису + резервного використання значення за замовчуванням | + | `plugin-sdk/account-helpers` | Вузькі допоміжні засоби для списку облікових записів/дій з обліковими записами | | `plugin-sdk/channel-pairing` | `createChannelPairingController` | | `plugin-sdk/channel-reply-pipeline` | `createChannelReplyPipeline` | | `plugin-sdk/channel-config-helpers` | `createHybridChannelConfigAdapter` | - | `plugin-sdk/channel-config-schema` | Спільні примітиви схеми конфігурації каналу та загальний побудовник | - | `plugin-sdk/bundled-channel-config-schema` | Схеми конфігурації каналів bundled OpenClaw лише для підтримуваних bundled-плагінів | - | `plugin-sdk/channel-config-schema-legacy` | Застарілий псевдонім сумісності для bundled-схем конфігурації каналів | - | `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації/валідації користувацьких команд Telegram із резервним bundled-контрактом | - | `plugin-sdk/command-gating` | Вузькі допоміжні засоби для шлюзування авторизації команд | + | `plugin-sdk/channel-config-schema` | Спільні примітиви схеми конфігурації каналу та універсальний конструктор | + | `plugin-sdk/bundled-channel-config-schema` | Bundled схеми конфігурації каналів OpenClaw лише для підтримуваних bundled Plugin | + | `plugin-sdk/channel-config-schema-legacy` | Застарілий сумісний псевдонім для bundled схем конфігурації каналів | + | `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації/валідації користувацьких команд Telegram із резервним bundled-contract | + | `plugin-sdk/command-gating` | Вузькі допоміжні засоби шлюзування авторизації команд | | `plugin-sdk/channel-policy` | `resolveChannelGroupRequireMention` | - | `plugin-sdk/channel-lifecycle` | `createAccountStatusSink`, допоміжні засоби життєвого циклу/завершення чернеткових потоків | - | `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби для побудови вхідних маршрутів і envelope | - | `plugin-sdk/inbound-reply-dispatch` | Спільні допоміжні засоби для запису та диспетчеризації вхідних даних | - | `plugin-sdk/messaging-targets` | Допоміжні засоби для розбору/зіставлення цілей | + | `plugin-sdk/channel-lifecycle` | `createAccountStatusSink`, допоміжні засоби життєвого циклу/фіналізації draft stream | + | `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби для маршрутизації вхідних даних + конструктора envelope | + | `plugin-sdk/inbound-reply-dispatch` | Спільні допоміжні засоби для запису й диспетчеризації вхідних відповідей | + | `plugin-sdk/messaging-targets` | Допоміжні засоби розбору/зіставлення цілей | | `plugin-sdk/outbound-media` | Спільні допоміжні засоби завантаження вихідних медіа | | `plugin-sdk/outbound-send-deps` | Полегшений пошук залежностей вихідного надсилання для адаптерів каналів | - | `plugin-sdk/outbound-runtime` | Допоміжні засоби вихідної доставки, ідентичності, делегата надсилання, сесії, форматування та планування payload | - | `plugin-sdk/poll-runtime` | Вузькі допоміжні засоби нормалізації опитувань | - | `plugin-sdk/thread-bindings-runtime` | Допоміжні засоби життєвого циклу thread-binding і адаптерів | - | `plugin-sdk/agent-media-payload` | Застарілий побудовник мультимедійного payload агента | - | `plugin-sdk/conversation-runtime` | Допоміжні засоби для binding розмов/потоків, pairing та налаштованих binding | + | `plugin-sdk/outbound-runtime` | Допоміжні засоби для вихідної доставки, ідентичності, делегата надсилання, сесії, форматування та планування payload | + | `plugin-sdk/poll-runtime` | Вузькі допоміжні засоби нормалізації poll | + | `plugin-sdk/thread-bindings-runtime` | Допоміжні засоби життєвого циклу прив’язок thread та адаптерів | + | `plugin-sdk/agent-media-payload` | Застарілий конструктор payload медіа агента | + | `plugin-sdk/conversation-runtime` | Допоміжні засоби для conversation/thread binding, pairing і configured-binding | | `plugin-sdk/runtime-config-snapshot` | Допоміжний засіб знімка конфігурації runtime | - | `plugin-sdk/runtime-group-policy` | Допоміжні засоби визначення групової політики runtime | - | `plugin-sdk/channel-status` | Спільні допоміжні засоби знімка/підсумку стану каналу | + | `plugin-sdk/runtime-group-policy` | Допоміжні засоби визначення group-policy у runtime | + | `plugin-sdk/channel-status` | Спільні допоміжні засоби знімка/зведення статусу каналу | | `plugin-sdk/channel-config-primitives` | Вузькі примітиви схеми конфігурації каналу | | `plugin-sdk/channel-config-writes` | Допоміжні засоби авторизації запису конфігурації каналу | - | `plugin-sdk/channel-plugin-common` | Спільні prelude-експорти плагіна каналу | + | `plugin-sdk/channel-plugin-common` | Спільні prelude-експорти Plugin каналу | | `plugin-sdk/allowlist-config-edit` | Допоміжні засоби редагування/читання конфігурації allowlist | - | `plugin-sdk/group-access` | Спільні допоміжні засоби рішень щодо групового доступу | - | `plugin-sdk/direct-dm` | Спільні допоміжні засоби автентифікації/захисту direct-DM | - | `plugin-sdk/interactive-runtime` | Семантичне представлення повідомлень, доставка та застарілі допоміжні засоби інтерактивних відповідей. Див. [Представлення повідомлень](/uk/plugins/message-presentation) | - | `plugin-sdk/channel-inbound` | Сумісний barrel для debounce вхідних даних, зіставлення згадок, допоміжних засобів політики згадок і envelope | + | `plugin-sdk/group-access` | Спільні допоміжні засоби для рішень щодо group-access | + | `plugin-sdk/direct-dm` | Спільні допоміжні засоби auth/guard для direct-DM | + | `plugin-sdk/interactive-runtime` | Допоміжні засоби семантичного представлення повідомлень, доставки та застарілих інтерактивних відповідей. Див. [Представлення повідомлень](/uk/plugins/message-presentation) | + | `plugin-sdk/channel-inbound` | Compatibility barrel для допоміжних засобів debounce вхідних даних, зіставлення згадок, політики згадок і envelope | | `plugin-sdk/channel-inbound-debounce` | Вузькі допоміжні засоби debounce вхідних даних | - | `plugin-sdk/channel-mention-gating` | Вузькі допоміжні засоби політики згадок, маркерів згадок і тексту згадок без ширшої поверхні runtime вхідних даних | + | `plugin-sdk/channel-mention-gating` | Вузькі допоміжні засоби для політики згадок, маркерів згадок і тексту згадок без ширшої поверхні inbound runtime | | `plugin-sdk/channel-envelope` | Вузькі допоміжні засоби форматування вхідного envelope | | `plugin-sdk/channel-location` | Допоміжні засоби контексту та форматування розташування каналу | | `plugin-sdk/channel-logging` | Допоміжні засоби логування каналу для відкидання вхідних даних і збоїв typing/ack | - | `plugin-sdk/channel-send-result` | Типи результатів відповідей | - | `plugin-sdk/channel-actions` | Допоміжні засоби дій із повідомленнями каналу, а також застарілі допоміжні засоби нативної схеми, збережені для сумісності плагінів | - | `plugin-sdk/channel-route` | Спільні допоміжні засоби нормалізації маршрутів, визначення цілей на основі парсера, перетворення thread-id у рядок, dedupe/compact ключів маршрутів, типів parsed-target і порівняння маршрутів/цілей | + | `plugin-sdk/channel-send-result` | Типи результатів відповіді | + | `plugin-sdk/channel-actions` | Допоміжні засоби дій із повідомленнями каналу, а також застарілі допоміжні засоби native schema, збережені для сумісності Plugin | + | `plugin-sdk/channel-route` | Спільні допоміжні засоби нормалізації маршрутів, визначення цілі на основі parser, перетворення thread-id на рядок, dedupe/compact ключів маршрутів, типів parsed-target і порівняння route/target | | `plugin-sdk/channel-targets` | Допоміжні засоби розбору цілей; виклики порівняння маршрутів мають використовувати `plugin-sdk/channel-route` | - | `plugin-sdk/channel-contract` | Типи контрактів каналів | + | `plugin-sdk/channel-contract` | Типи контракту каналу | | `plugin-sdk/channel-feedback` | Підключення feedback/reaction | - | `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби secret-контрактів, такі як `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, і типи secret-цілей | + | `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби secret-contract, такі як `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, і типи цілей секретів | - - | Підшлях | Основні експорти | + + | Підшлях | Ключові експорти | | --- | --- | | `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` | - | `plugin-sdk/lmstudio` | Підтримуваний фасад провайдера LM Studio для налаштування, виявлення каталогу та підготовки моделей у runtime | - | `plugin-sdk/lmstudio-runtime` | Підтримуваний фасад runtime LM Studio для локальних серверних значень за замовчуванням, виявлення моделей, заголовків запитів і допоміжних засобів для завантажених моделей | - | `plugin-sdk/provider-setup` | Кураторські допоміжні засоби налаштування локальних/self-hosted провайдерів | - | `plugin-sdk/self-hosted-provider-setup` | Сфокусовані допоміжні засоби налаштування self-hosted провайдерів, сумісних з OpenAI | - | `plugin-sdk/cli-backend` | Значення за замовчуванням для бекенду CLI + константи watchdog | - | `plugin-sdk/provider-auth-runtime` | Допоміжні засоби визначення API-ключа в runtime для плагінів провайдерів | - | `plugin-sdk/provider-auth-api-key` | Допоміжні засоби онбордингу API-ключа/запису профілю, такі як `upsertApiKeyProfile` | - | `plugin-sdk/provider-auth-result` | Стандартний побудовник результату OAuth-автентифікації | - | `plugin-sdk/provider-auth-login` | Спільні допоміжні засоби інтерактивного входу для плагінів провайдерів | - | `plugin-sdk/provider-env-vars` | Допоміжні засоби пошуку змінних середовища автентифікації провайдера | + | `plugin-sdk/lmstudio` | Підтримуваний фасад provider LM Studio для setup, виявлення catalog і підготовки моделі runtime | + | `plugin-sdk/lmstudio-runtime` | Підтримуваний фасад runtime LM Studio для локальних значень сервера за замовчуванням, виявлення моделей, заголовків запитів і допоміжних засобів loaded-model | + | `plugin-sdk/provider-setup` | Кураторські допоміжні засоби setup для локальних/self-hosted provider | + | `plugin-sdk/self-hosted-provider-setup` | Спеціалізовані допоміжні засоби setup self-hosted provider, сумісного з OpenAI | + | `plugin-sdk/cli-backend` | Значення за замовчуванням для backend CLI + константи watchdog | + | `plugin-sdk/provider-auth-runtime` | Допоміжні засоби визначення API-ключа в runtime для Plugin provider | + | `plugin-sdk/provider-auth-api-key` | Допоміжні засоби onboarding/profile-write для API-ключів, такі як `upsertApiKeyProfile` | + | `plugin-sdk/provider-auth-result` | Стандартний конструктор auth-result OAuth | + | `plugin-sdk/provider-auth-login` | Спільні інтерактивні допоміжні засоби входу для Plugin provider | + | `plugin-sdk/provider-env-vars` | Допоміжні засоби пошуку env var для auth provider | | `plugin-sdk/provider-auth` | `createProviderApiKeyAuthMethod`, `ensureApiKeyFromOptionEnvOrPrompt`, `upsertAuthProfile`, `upsertApiKeyProfile`, `writeOAuthCredentials` | - | `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні побудовники політик replay, допоміжні засоби endpoint провайдерів і нормалізації model-id, такі як `normalizeNativeXaiModelId` | - | `plugin-sdk/provider-catalog-runtime` | Hook runtime для розширення каталогу провайдерів і seams реєстру plugin-provider для контрактних тестів | + | `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні конструктори replay-policy, допоміжні засоби endpoint provider та допоміжні засоби нормалізації model-id, такі як `normalizeNativeXaiModelId` | + | `plugin-sdk/provider-catalog-runtime` | Хук runtime для розширення catalog provider і шви registry plugin-provider для контрактних тестів | | `plugin-sdk/provider-catalog-shared` | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` | - | `plugin-sdk/provider-http` | Загальні допоміжні засоби HTTP/можливостей endpoint провайдера, HTTP-помилки провайдера та допоміжні засоби multipart form для транскрибування аудіо | - | `plugin-sdk/provider-web-fetch-contract` | Вузькі допоміжні засоби контракту конфігурації/вибору web-fetch, такі як `enablePluginInConfig` і `WebFetchProviderPlugin` | - | `plugin-sdk/provider-web-fetch` | Допоміжні засоби реєстрації/кешування провайдера web-fetch | - | `plugin-sdk/provider-web-search-config-contract` | Вузькі допоміжні засоби конфігурації/облікових даних web-search для провайдерів, яким не потрібне підключення увімкнення плагіна | - | `plugin-sdk/provider-web-search-contract` | Вузькі допоміжні засоби контракту конфігурації/облікових даних web-search, такі як `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig`, а також scoped-сетери/гетери облікових даних | - | `plugin-sdk/provider-web-search` | Допоміжні засоби реєстрації/кешування/runtime провайдера web-search | + | `plugin-sdk/provider-http` | Загальні допоміжні засоби HTTP/можливостей endpoint provider, помилки HTTP provider і допоміжні засоби multipart form для транскрипції аудіо | + | `plugin-sdk/provider-web-fetch-contract` | Вузькі допоміжні засоби контракту config/selection для web-fetch, такі як `enablePluginInConfig` і `WebFetchProviderPlugin` | + | `plugin-sdk/provider-web-fetch` | Допоміжні засоби реєстрації/кешу provider web-fetch | + | `plugin-sdk/provider-web-search-config-contract` | Вузькі допоміжні засоби config/облікових даних для web-search для provider, яким не потрібне підключення enable Plugin | + | `plugin-sdk/provider-web-search-contract` | Вузькі допоміжні засоби контракту config/облікових даних для web-search, такі як `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і scoped setters/getters облікових даних | + | `plugin-sdk/provider-web-search` | Допоміжні засоби реєстрації/кешу/runtime provider web-search | | `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, очищення схеми Gemini + діагностика та допоміжні засоби сумісності xAI, такі як `resolveXaiModelCompatPatch` / `applyXaiModelCompat` | | `plugin-sdk/provider-usage` | `fetchClaudeUsage` та подібні | - | `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, типи stream wrapper і спільні допоміжні засоби wrapper для Anthropic/Bedrock/DeepSeek V4/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot | - | `plugin-sdk/provider-transport-runtime` | Допоміжні засоби нативного транспорту провайдера, такі як guarded fetch, трансформації transport message і доступні для запису потоки transport event | - | `plugin-sdk/provider-onboard` | Допоміжні засоби патчингу конфігурації онбордингу | + | `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, типи обгорток stream і спільні допоміжні засоби обгорток Anthropic/Bedrock/DeepSeek V4/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot | + | `plugin-sdk/provider-transport-runtime` | Власні допоміжні засоби транспорту provider, такі як guarded fetch, перетворення transport message і writable event stream транспорту | + | `plugin-sdk/provider-onboard` | Допоміжні засоби patch конфігурації onboarding | | `plugin-sdk/global-singleton` | Допоміжні засоби process-local singleton/map/cache | | `plugin-sdk/group-activation` | Вузькі допоміжні засоби режиму активації групи та розбору команд | - - | Підшлях | Основні експорти | + + | Підшлях | Ключові експорти | | --- | --- | - | `plugin-sdk/command-auth` | `resolveControlCommandGate`, допоміжні засоби реєстру команд, включно з форматуванням меню динамічних аргументів, допоміжні засоби авторизації відправника | - | `plugin-sdk/command-status` | Побудовники повідомлень команд/довідки, такі як `buildCommandsMessagePaginated` і `buildHelpMessage` | - | `plugin-sdk/approval-auth-runtime` | Допоміжні засоби визначення затверджувача та автентифікації дій у межах того самого чату | - | `plugin-sdk/approval-client-runtime` | Допоміжні засоби профілю/фільтра нативного exec approval | - | `plugin-sdk/approval-delivery-runtime` | Адаптери можливостей/доставки нативного approval | - | `plugin-sdk/approval-gateway-runtime` | Спільний допоміжний засіб визначення gateway approval | - | `plugin-sdk/approval-handler-adapter-runtime` | Полегшені допоміжні засоби завантаження адаптера нативного approval handler для гарячих точок входу каналів | - | `plugin-sdk/approval-handler-runtime` | Ширші допоміжні засоби runtime для approval handler; віддавайте перевагу вужчим seams адаптера/gateway, якщо їх достатньо | - | `plugin-sdk/approval-native-runtime` | Допоміжні засоби цілі нативного approval + binding облікового запису | - | `plugin-sdk/approval-reply-runtime` | Допоміжні засоби payload відповіді exec/plugin approval | - | `plugin-sdk/approval-runtime` | Допоміжні засоби payload exec/plugin approval, допоміжні засоби маршрутизації/runtime нативного approval і допоміжні засоби структурованого відображення approval, такі як `formatApprovalDisplayPath` | - | `plugin-sdk/reply-dedupe` | Вузькі допоміжні засоби скидання dedupe для вхідних відповідей | - | `plugin-sdk/channel-contract-testing` | Вузькі допоміжні засоби тестування контрактів каналів без широкого testing barrel | - | `plugin-sdk/command-auth-native` | Нативна автентифікація команд, форматування меню динамічних аргументів і допоміжні засоби native session-target | + | `plugin-sdk/command-auth` | `resolveControlCommandGate`, допоміжні засоби registry команд, включно з форматуванням меню динамічних аргументів, допоміжні засоби авторизації відправника | + | `plugin-sdk/command-status` | Конструктори повідомлень команд/довідки, такі як `buildCommandsMessagePaginated` і `buildHelpMessage` | + | `plugin-sdk/approval-auth-runtime` | Допоміжні засоби визначення approver і auth дій у тому самому чаті | + | `plugin-sdk/approval-client-runtime` | Власні допоміжні засоби профілю/фільтра approval exec | + | `plugin-sdk/approval-delivery-runtime` | Власні адаптери можливостей/доставки approval | + | `plugin-sdk/approval-gateway-runtime` | Спільний допоміжний засіб визначення Gateway approval | + | `plugin-sdk/approval-handler-adapter-runtime` | Полегшені допоміжні засоби завантаження власного адаптера approval для hot channel entrypoint | + | `plugin-sdk/approval-handler-runtime` | Ширші допоміжні засоби runtime handler approval; віддавайте перевагу вужчим швам adapter/gateway, коли їх достатньо | + | `plugin-sdk/approval-native-runtime` | Власні допоміжні засоби для цілі approval + прив’язки облікового запису | + | `plugin-sdk/approval-reply-runtime` | Допоміжні засоби payload відповіді на approval exec/plugin | + | `plugin-sdk/approval-runtime` | Допоміжні засоби payload approval exec/plugin, власні допоміжні засоби маршрутизації/runtime approval і допоміжні засоби структурованого відображення approval, такі як `formatApprovalDisplayPath` | + | `plugin-sdk/reply-dedupe` | Вузькі допоміжні засоби скидання dedupe вхідних відповідей | + | `plugin-sdk/channel-contract-testing` | Вузькі допоміжні засоби тестування контракту каналу без широкого testing barrel | + | `plugin-sdk/command-auth-native` | Власні допоміжні засоби auth команд, форматування меню динамічних аргументів і цілі сесії native | | `plugin-sdk/command-detection` | Спільні допоміжні засоби виявлення команд | - | `plugin-sdk/command-primitives-runtime` | Полегшені предикати тексту команд для гарячих шляхів каналів | - | `plugin-sdk/command-surface` | Нормалізація тіла команди та допоміжні засоби command-surface | + | `plugin-sdk/command-primitives-runtime` | Полегшені предикати тексту команд для hot channel path | + | `plugin-sdk/command-surface` | Допоміжні засоби нормалізації body команди та command-surface | | `plugin-sdk/allow-from` | `formatAllowFromLowercase` | - | `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби збирання secret-контрактів для поверхонь секретів каналів/плагінів | - | `plugin-sdk/secret-ref-runtime` | Вузькі допоміжні засоби `coerceSecretRef` і типізації SecretRef для розбору secret-контрактів/конфігурації | - | `plugin-sdk/security-runtime` | Спільні допоміжні засоби довіри, DM gating, зовнішнього вмісту, редагування чутливого тексту, порівняння секретів у сталий час і збирання секретів | + | `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби збору secret-contract для поверхонь секретів channel/plugin | + | `plugin-sdk/secret-ref-runtime` | Вузькі допоміжні засоби `coerceSecretRef` і типізації SecretRef для розбору secret-contract/config | + | `plugin-sdk/security-runtime` | Спільні допоміжні засоби довіри, шлюзування DM, зовнішнього вмісту, редагування чутливого тексту, порівняння секретів за constant-time і збору секретів | | `plugin-sdk/ssrf-policy` | Допоміжні засоби політики SSRF для allowlist хостів і приватних мереж | | `plugin-sdk/ssrf-dispatcher` | Вузькі допоміжні засоби pinned-dispatcher без широкої поверхні infra runtime | - | `plugin-sdk/ssrf-runtime` | pinned-dispatcher, fetch із захистом від SSRF, помилка SSRF і допоміжні засоби політики SSRF | - | `plugin-sdk/secret-input` | Допоміжні засоби розбору секретного вводу | + | `plugin-sdk/ssrf-runtime` | Допоміжні засоби pinned-dispatcher, fetch із захистом SSRF, помилка SSRF і політика SSRF | + | `plugin-sdk/secret-input` | Допоміжні засоби розбору secret input | | `plugin-sdk/webhook-ingress` | Допоміжні засоби запиту/цілі Webhook і приведення raw websocket/body | - | `plugin-sdk/webhook-request-guards` | Допоміжні засоби для розміру тіла запиту/тайм-ауту | + | `plugin-sdk/webhook-request-guards` | Допоміжні засоби розміру body/timeout запиту | - | Підшлях | Основні експорти | + | Підшлях | Ключові експорти | | --- | --- | - | `plugin-sdk/runtime` | Широкі допоміжні засоби runtime/logging/backup/встановлення плагінів | + | `plugin-sdk/runtime` | Широкі допоміжні засоби runtime/logging/backup/встановлення Plugin | | `plugin-sdk/runtime-env` | Вузькі допоміжні засоби env runtime, logger, timeout, retry і backoff | - | `plugin-sdk/browser-config` | Підтримуваний фасад конфігурації браузера для нормалізованого профілю/значень за замовчуванням, розбору URL CDP і допоміжних засобів автентифікації browser-control | - | `plugin-sdk/channel-runtime-context` | Загальні допоміжні засоби реєстрації та пошуку runtime-context каналу | + | `plugin-sdk/browser-config` | Підтримуваний фасад конфігурації браузера для нормалізованого профілю/значень за замовчуванням, розбору URL CDP і допоміжних засобів auth browser-control | + | `plugin-sdk/channel-runtime-context` | Загальні допоміжні засоби реєстрації та пошуку channel runtime-context | | `plugin-sdk/runtime-store` | `createPluginRuntimeStore` | - | `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби команд/hook/http/interactive плагіна | - | `plugin-sdk/hook-runtime` | Спільні допоміжні засоби pipeline webhook/internal hook | - | `plugin-sdk/lazy-runtime` | Допоміжні засоби lazy імпорту/binding runtime, такі як `createLazyRuntimeModule`, `createLazyRuntimeMethod` і `createLazyRuntimeSurface` | + | `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби команд/hook/http/interactive для Plugin | + | `plugin-sdk/hook-runtime` | Спільні допоміжні засоби pipeline для Webhook/внутрішніх hook | + | `plugin-sdk/lazy-runtime` | Допоміжні засоби lazy runtime import/binding, такі як `createLazyRuntimeModule`, `createLazyRuntimeMethod` і `createLazyRuntimeSurface` | | `plugin-sdk/process-runtime` | Допоміжні засоби exec процесів | | `plugin-sdk/cli-runtime` | Допоміжні засоби форматування CLI, очікування, версій, виклику аргументів і lazy command-group | - | `plugin-sdk/gateway-runtime` | Клієнт Gateway, CLI RPC Gateway, помилки протоколу Gateway і допоміжні засоби patch стану каналу | - | `plugin-sdk/config-types` | Поверхня конфігурації лише для типів для форм конфігурації плагінів, таких як `OpenClawConfig`, і типів конфігурації каналів/провайдерів | - | `plugin-sdk/plugin-config-runtime` | Допоміжні засоби пошуку конфігурації плагіна в runtime, такі як `requireRuntimeConfig`, `resolvePluginConfigObject` і `resolveLivePluginConfigObject` | + | `plugin-sdk/gateway-runtime` | Допоміжні засоби клієнта Gateway, Gateway CLI RPC, помилок протоколу Gateway і patch статусу каналу | + | `plugin-sdk/config-types` | Поверхня конфігурації лише для типів для форм конфігурації Plugin, таких як `OpenClawConfig` і типи конфігурації channel/provider | + | `plugin-sdk/plugin-config-runtime` | Допоміжні засоби пошуку plugin-config у runtime, такі як `requireRuntimeConfig`, `resolvePluginConfigObject` і `resolveLivePluginConfigObject` | | `plugin-sdk/config-mutation` | Допоміжні засоби транзакційної мутації конфігурації, такі як `mutateConfigFile`, `replaceConfigFile` і `logConfigUpdated` | - | `plugin-sdk/runtime-config-snapshot` | Допоміжні засоби знімка конфігурації поточного процесу, такі як `getRuntimeConfig`, `getRuntimeConfigSnapshot` і сетери тестового знімка | - | `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації назв/описів команд Telegram і перевірки дублікатів/конфліктів, навіть коли bundled-поверхня контракту Telegram недоступна | - | `plugin-sdk/text-autolink-runtime` | Виявлення автопосилань на файлові посилання без широкого barrel text-runtime | - | `plugin-sdk/approval-runtime` | Допоміжні засоби approval exec/plugin, побудовники можливостей approval, допоміжні засоби auth/profile, допоміжні засоби нативної маршрутизації/runtime і форматування шляхів структурованого відображення approval | - | `plugin-sdk/reply-runtime` | Спільні допоміжні засоби runtime вхідних даних/відповідей, chunking, dispatch, Heartbeat, планувальник відповідей | - | `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні засоби dispatch/finalize відповідей і міток розмов | - | `plugin-sdk/reply-history` | Спільні допоміжні засоби та маркери історії відповідей короткого вікна, такі як `buildHistoryContext`, `HISTORY_CONTEXT_MARKER`, `recordPendingHistoryEntry` і `clearHistoryEntriesIfEnabled` | + | `plugin-sdk/runtime-config-snapshot` | Допоміжні засоби знімка конфігурації поточного процесу, такі як `getRuntimeConfig`, `getRuntimeConfigSnapshot` і setters тестових знімків | + | `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації назв/описів команд Telegram і перевірки дублікатів/конфліктів, навіть коли поверхня bundled контракту Telegram недоступна | + | `plugin-sdk/text-autolink-runtime` | Виявлення автопосилань на посилання на файли без широкого barrel `text-runtime` | + | `plugin-sdk/approval-runtime` | Допоміжні засоби approval exec/plugin, конструктори можливостей approval, допоміжні засоби auth/profile, власні допоміжні засоби routing/runtime і форматування шляху структурованого відображення approval | + | `plugin-sdk/reply-runtime` | Спільні допоміжні засоби runtime для inbound/reply, chunking, dispatch, Heartbeat, планувальник reply | + | `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні засоби dispatch/finalize reply і допоміжні засоби міток conversation | + | `plugin-sdk/reply-history` | Спільні допоміжні засоби коротковіконної історії reply і маркери, такі як `buildHistoryContext`, `HISTORY_CONTEXT_MARKER`, `recordPendingHistoryEntry` і `clearHistoryEntriesIfEnabled` | | `plugin-sdk/reply-reference` | `createReplyReferencePlanner` | - | `plugin-sdk/reply-chunking` | Вузькі допоміжні засоби chunking тексту/Markdown | + | `plugin-sdk/reply-chunking` | Вузькі допоміжні засоби chunking тексту/markdown | | `plugin-sdk/session-store-runtime` | Допоміжні засоби шляху сховища сесій, ключа сесії, updated-at і мутації сховища | - | `plugin-sdk/cron-store-runtime` | Допоміжні засоби шляху/завантаження/збереження сховища Cron | - | `plugin-sdk/state-paths` | Допоміжні засоби шляхів каталогів стану/OAuth | - | `plugin-sdk/routing` | Допоміжні засоби маршруту/ключа сесії/binding облікового запису, такі як `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` | - | `plugin-sdk/status-helpers` | Спільні допоміжні засоби підсумку стану каналу/облікового запису, значень стану runtime за замовчуванням і метаданих проблем | - | `plugin-sdk/target-resolver-runtime` | Спільні допоміжні засоби визначення цілі | + | `plugin-sdk/cron-store-runtime` | Допоміжні засоби шляху/load/save для сховища Cron | + | `plugin-sdk/state-paths` | Допоміжні засоби шляхів каталогів state/OAuth | + | `plugin-sdk/routing` | Допоміжні засоби маршруту/ключа сесії/прив’язки облікового запису, такі як `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` | + | `plugin-sdk/status-helpers` | Спільні допоміжні засоби зведення статусу каналу/облікового запису, значень runtime-state за замовчуванням і метаданих issue | + | `plugin-sdk/target-resolver-runtime` | Спільні допоміжні засоби resolver цілей | | `plugin-sdk/string-normalization-runtime` | Допоміжні засоби нормалізації slug/рядків | - | `plugin-sdk/request-url` | Витягування рядкових URL із входів на кшталт fetch/request | - | `plugin-sdk/run-command` | Виконавець команд із тайм-лімітом і нормалізованими результатами stdout/stderr | - | `plugin-sdk/param-readers` | Поширені читачі параметрів tool/CLI | - | `plugin-sdk/tool-payload` | Витягування нормалізованих payload з об’єктів результатів tool | - | `plugin-sdk/tool-send` | Витягування канонічних полів цілі надсилання з аргументів tool | - | `plugin-sdk/temp-path` | Спільні допоміжні засоби шляхів тимчасових завантажень | + | `plugin-sdk/request-url` | Витяг рядкових URL із вхідних даних, подібних до fetch/request | + | `plugin-sdk/run-command` | Runner команд із таймером і нормалізованими результатами stdout/stderr | + | `plugin-sdk/param-readers` | Поширені зчитувачі параметрів tool/CLI | + | `plugin-sdk/tool-payload` | Витяг нормалізованих payload з об’єктів результатів tool | + | `plugin-sdk/tool-send` | Витяг канонічних полів цілі надсилання з аргументів tool | + | `plugin-sdk/temp-path` | Спільні допоміжні засоби шляхів тимчасового завантаження | | `plugin-sdk/logging-core` | Допоміжні засоби logger підсистеми та редагування | | `plugin-sdk/markdown-table-runtime` | Допоміжні засоби режиму таблиць Markdown і перетворення | | `plugin-sdk/model-session-runtime` | Допоміжні засоби перевизначення моделі/сесії, такі як `applyModelOverrideToSessionEntry` і `resolveAgentMaxConcurrent` | - | `plugin-sdk/talk-config-runtime` | Допоміжні засоби визначення конфігурації talk-провайдера | + | `plugin-sdk/talk-config-runtime` | Допоміжні засоби визначення конфігурації talk provider | | `plugin-sdk/json-store` | Невеликі допоміжні засоби читання/запису стану JSON | - | `plugin-sdk/file-lock` | Повторно вхідні допоміжні засоби file-lock | - | `plugin-sdk/persistent-dedupe` | Допоміжні засоби кешу dedupe з дисковою підтримкою | - | `plugin-sdk/acp-runtime` | Допоміжні засоби runtime/сесії ACP і dispatch відповідей | - | `plugin-sdk/acp-binding-resolve-runtime` | Визначення binding ACP лише для читання без імпортів запуску життєвого циклу | - | `plugin-sdk/agent-config-primitives` | Вузькі примітиви схеми конфігурації runtime агента | - | `plugin-sdk/boolean-param` | Читач параметрів логічних значень із м’яким приведенням | + | `plugin-sdk/file-lock` | Допоміжні засоби реентрантного file-lock | + | `plugin-sdk/persistent-dedupe` | Допоміжні засоби dedupe-кешу зберігання на диску | + | `plugin-sdk/acp-runtime` | Допоміжні засоби runtime/сесії ACP і dispatch reply | + | `plugin-sdk/acp-binding-resolve-runtime` | Визначення прив’язок ACP лише для читання без import запуску життєвого циклу | + | `plugin-sdk/agent-config-primitives` | Вузькі примітиви config-schema runtime агента | + | `plugin-sdk/boolean-param` | Гнучкий зчитувач boolean-параметрів | | `plugin-sdk/dangerous-name-runtime` | Допоміжні засоби визначення збігів небезпечних назв | - | `plugin-sdk/device-bootstrap` | Допоміжні засоби bootstrap пристрою та токенів pairing | + | `plugin-sdk/device-bootstrap` | Допоміжні засоби bootstrap пристрою і токенів pairing | | `plugin-sdk/extension-shared` | Спільні примітиви допоміжних засобів passive-channel, status і ambient proxy | - | `plugin-sdk/models-provider-runtime` | Допоміжні засоби відповідей команди `/models`/провайдера | - | `plugin-sdk/skill-commands-runtime` | Допоміжні засоби виведення списку команд skill | - | `plugin-sdk/native-command-registry` | Допоміжні засоби реєстру/побудови/серіалізації нативних команд | - | `plugin-sdk/agent-harness` | Експериментальна поверхня trusted-plugin для низькорівневих harness агента: типи harness, допоміжні засоби steer/abort активного запуску, допоміжні засоби bridge tool OpenClaw, допоміжні засоби політики tool плану runtime, класифікація результатів terminal, допоміжні засоби форматування/деталізації прогресу tool і утиліти результатів спроб | - | `plugin-sdk/provider-zai-endpoint` | Допоміжні засоби виявлення endpoint Z.AI | + | `plugin-sdk/models-provider-runtime` | Допоміжні засоби reply для команди `/models`/provider | + | `plugin-sdk/skill-commands-runtime` | Допоміжні засоби переліку команд skill | + | `plugin-sdk/native-command-registry` | Допоміжні засоби registry/build/serialize власних команд | + | `plugin-sdk/agent-harness` | Експериментальна поверхня trusted-plugin для низькорівневих harness агента: типи harness, допоміжні засоби steer/abort для active-run, допоміжні засоби мосту tool OpenClaw, допоміжні засоби політики runtime-plan tool, класифікація результатів terminal, допоміжні засоби форматування/деталізації прогресу tool і утиліти результатів спроб | + | `plugin-sdk/provider-zai-endpoint` | Допоміжні засоби виявлення endpoint Z.A.I | | `plugin-sdk/async-lock-runtime` | Допоміжний засіб process-local async lock для невеликих файлів стану runtime | | `plugin-sdk/channel-activity-runtime` | Допоміжний засіб телеметрії активності каналу | | `plugin-sdk/concurrency-runtime` | Допоміжний засіб обмеженої конкурентності async-задач | - | `plugin-sdk/dedupe-runtime` | Допоміжні засоби кешу dedupe в пам’яті | + | `plugin-sdk/dedupe-runtime` | Допоміжні засоби dedupe-кешу в пам’яті | | `plugin-sdk/delivery-queue-runtime` | Допоміжний засіб спорожнення черги очікуваної вихідної доставки | - | `plugin-sdk/file-access-runtime` | Допоміжні засоби безпечних шляхів до локальних файлів і джерел медіа | + | `plugin-sdk/file-access-runtime` | Допоміжні засоби безпечних шляхів локальних файлів і джерел медіа | | `plugin-sdk/heartbeat-runtime` | Допоміжні засоби подій і видимості Heartbeat | - | `plugin-sdk/number-runtime` | Допоміжний засіб числового приведення | + | `plugin-sdk/number-runtime` | Допоміжний засіб приведення чисел | | `plugin-sdk/secure-random-runtime` | Допоміжні засоби безпечних токенів/UUID | | `plugin-sdk/system-event-runtime` | Допоміжні засоби черги системних подій | | `plugin-sdk/transport-ready-runtime` | Допоміжний засіб очікування готовності транспорту | - | `plugin-sdk/infra-runtime` | Застарілий shim сумісності; використовуйте наведені вище сфокусовані підшляхи runtime | + | `plugin-sdk/infra-runtime` | Застарілий compatibility shim; використовуйте спеціалізовані підшляхи runtime вище | | `plugin-sdk/collection-runtime` | Невеликі допоміжні засоби обмеженого кешу | - | `plugin-sdk/diagnostic-runtime` | Допоміжні засоби діагностичних прапорців, подій і trace-context | + | `plugin-sdk/diagnostic-runtime` | Допоміжні засоби прапорців, подій і trace-context діагностики | | `plugin-sdk/error-runtime` | Допоміжні засоби графа помилок, форматування, спільної класифікації помилок, `isApprovalNotFoundError` | | `plugin-sdk/fetch-runtime` | Допоміжні засоби обгорнутого fetch, proxy і pinned lookup | - | `plugin-sdk/runtime-fetch` | runtime fetch з урахуванням dispatcher без імпортів proxy/guarded-fetch | - | `plugin-sdk/response-limit-runtime` | Читач обмеженого тіла відповіді без широкої поверхні media runtime | - | `plugin-sdk/session-binding-runtime` | Поточний стан binding розмови без маршрутизації налаштованого binding або сховищ pairing | - | `plugin-sdk/session-store-runtime` | Допоміжні засоби session-store без широких імпортів запису/обслуговування конфігурації | - | `plugin-sdk/context-visibility-runtime` | Визначення видимості контексту й фільтрація додаткового контексту без широких імпортів config/security | - | `plugin-sdk/string-coerce-runtime` | Вузькі допоміжні засоби приведення та нормалізації примітивних записів/рядків без імпортів markdown/logging | - | `plugin-sdk/host-runtime` | Допоміжні засоби нормалізації hostname і хостів SCP | - | `plugin-sdk/retry-runtime` | Допоміжні засоби конфігурації retry і виконавця retry | - | `plugin-sdk/agent-runtime` | Допоміжні засоби каталогу/ідентичності/робочого простору агента | - | `plugin-sdk/directory-runtime` | Запит/усунення дублікатів каталогів із підтримкою конфігурації | + | `plugin-sdk/runtime-fetch` | Runtime fetch з урахуванням dispatcher без import proxy/guarded-fetch | + | `plugin-sdk/response-limit-runtime` | Зчитувач обмеженого body відповіді без широкої поверхні media runtime | + | `plugin-sdk/session-binding-runtime` | Поточний стан прив’язки conversation без routing налаштованої прив’язки або сховищ pairing | + | `plugin-sdk/session-store-runtime` | Допоміжні засоби сховища сесій без широких import запису/обслуговування конфігурації | + | `plugin-sdk/context-visibility-runtime` | Допоміжні засоби визначення видимості контексту та фільтрації додаткового контексту без широких import конфігурації/безпеки | + | `plugin-sdk/string-coerce-runtime` | Вузькі допоміжні засоби приведення й нормалізації primitive record/string без import markdown/logging | + | `plugin-sdk/host-runtime` | Допоміжні засоби нормалізації імені хоста і хоста SCP | + | `plugin-sdk/retry-runtime` | Допоміжні засоби конфігурації retry і runner retry | + | `plugin-sdk/agent-runtime` | Допоміжні засоби каталогу/ідентичності/workspace агента | + | `plugin-sdk/directory-runtime` | Запит/dedup каталогу на основі конфігурації | | `plugin-sdk/keyed-async-queue` | `KeyedAsyncQueue` | - | Підшлях | Основні експорти | + | Підшлях | Ключові експорти | | --- | --- | - | `plugin-sdk/media-runtime` | Спільні допоміжні засоби fetch/transform/store для медіа, а також побудовники media payload | + | `plugin-sdk/media-runtime` | Спільні допоміжні засоби fetch/transform/store для медіа, а також конструктори payload медіа | | `plugin-sdk/media-store` | Вузькі допоміжні засоби сховища медіа, такі як `saveMediaBuffer` | - | `plugin-sdk/media-generation-runtime` | Спільні допоміжні засоби failover для генерації медіа, вибору кандидатів і повідомлень про відсутню модель | - | `plugin-sdk/media-understanding` | Типи провайдерів розуміння медіа, а також експорти допоміжних засобів для зображень/аудіо, орієнтованих на провайдерів | - | `plugin-sdk/text-runtime` | Спільні допоміжні засоби text/markdown/logging, такі як вилучення видимого асистенту тексту, допоміжні засоби рендерингу/chunking/таблиць Markdown, допоміжні засоби редагування, допоміжні засоби тегів директив і утиліти безпечного тексту | + | `plugin-sdk/media-generation-runtime` | Спільні допоміжні засоби failover для генерації медіа, вибір кандидатів і повідомлення про відсутню модель | + | `plugin-sdk/media-understanding` | Типи provider для розуміння медіа, а також експорти допоміжних засобів для зображень/аудіо, орієнтовані на provider | + | `plugin-sdk/text-runtime` | Спільні допоміжні засоби text/markdown/logging, такі як видалення тексту, видимого асистенту, допоміжні засоби render/chunking/table для markdown, допоміжні засоби редагування, допоміжні засоби тегів директив і утиліти безпечного тексту | | `plugin-sdk/text-chunking` | Допоміжний засіб chunking вихідного тексту | - | `plugin-sdk/speech` | Типи провайдерів мовлення, а також експорти директив, реєстру, валідації, сумісного з OpenAI побудовника TTS і допоміжних засобів мовлення, орієнтованих на провайдерів | - | `plugin-sdk/speech-core` | Спільні експорти типів провайдерів мовлення, реєстру, директив, нормалізації та допоміжних засобів мовлення | - | `plugin-sdk/realtime-transcription` | Типи провайдерів транскрипції в реальному часі, допоміжні засоби реєстру та спільний допоміжний засіб сесії WebSocket | - | `plugin-sdk/realtime-voice` | Типи провайдерів голосу в реальному часі та допоміжні засоби реєстру | - | `plugin-sdk/image-generation` | Типи провайдерів генерації зображень, а також допоміжні засоби ресурсів зображень/data URL | - | `plugin-sdk/image-generation-core` | Спільні допоміжні засоби типів, failover, auth і реєстру генерації зображень | - | `plugin-sdk/music-generation` | Типи провайдерів/запитів/результатів генерації музики | - | `plugin-sdk/music-generation-core` | Спільні допоміжні засоби типів, failover, пошуку провайдера та розбору model-ref для генерації музики | - | `plugin-sdk/video-generation` | Типи провайдерів/запитів/результатів генерації відео | - | `plugin-sdk/video-generation-core` | Спільні допоміжні засоби типів, failover, пошуку провайдера та розбору model-ref для генерації відео | - | `plugin-sdk/webhook-targets` | Допоміжні засоби реєстру цілей Webhook і встановлення маршрутів | + | `plugin-sdk/speech` | Типи provider мовлення, а також експорти допоміжних засобів директив, registry, валідації, TTS-конструктора, сумісного з OpenAI, і мовлення, орієнтованих на provider | + | `plugin-sdk/speech-core` | Спільні типи provider мовлення, експорти допоміжних засобів registry, директив, нормалізації та мовлення | + | `plugin-sdk/realtime-transcription` | Типи provider транскрипції в реальному часі, допоміжні засоби registry і спільний допоміжний засіб сесії WebSocket | + | `plugin-sdk/realtime-voice` | Типи provider голосу в реальному часі та допоміжні засоби registry | + | `plugin-sdk/image-generation` | Типи provider генерації зображень, а також допоміжні засоби ресурсів зображень/URL даних | + | `plugin-sdk/image-generation-core` | Спільні типи генерації зображень, допоміжні засоби failover, auth і registry | + | `plugin-sdk/music-generation` | Типи provider/request/result для генерації музики | + | `plugin-sdk/music-generation-core` | Спільні типи генерації музики, допоміжні засоби failover, пошук provider і розбір model-ref | + | `plugin-sdk/video-generation` | Типи provider/request/result для генерації відео | + | `plugin-sdk/video-generation-core` | Спільні типи генерації відео, допоміжні засоби failover, пошук provider і розбір model-ref | + | `plugin-sdk/webhook-targets` | Допоміжні засоби registry цілей Webhook і встановлення маршрутів | | `plugin-sdk/webhook-path` | Допоміжні засоби нормалізації шляху Webhook | | `plugin-sdk/web-media` | Спільні допоміжні засоби завантаження віддалених/локальних медіа | | `plugin-sdk/zod` | Повторно експортований `zod` для споживачів Plugin SDK | - | `plugin-sdk/testing` | Широкий сумісний barrel для застарілих тестів плагінів. Нові тести розширень мають натомість імпортувати сфокусовані підшляхи SDK, такі як `plugin-sdk/plugin-test-runtime`, `plugin-sdk/channel-test-helpers`, `plugin-sdk/test-env` або `plugin-sdk/test-fixtures` | - | `plugin-sdk/plugin-test-api` | Мінімальний допоміжний засіб `createTestPluginApi` для модульних тестів прямої реєстрації плагінів без імпорту bridge допоміжних засобів тестування репозиторію | - | `plugin-sdk/channel-test-helpers` | Допоміжні засоби тестування, орієнтовані на канали, для загальних контрактів дій/налаштування/стану, перевірок каталогів, життєвого циклу запуску облікового запису, thread-ing конфігурації надсилання, моків runtime, проблем стану, вихідної доставки та реєстрації hook | - | `plugin-sdk/channel-target-testing` | Спільний набір перевірок випадків помилок визначення цілі для тестів каналів | - | `plugin-sdk/plugin-test-contracts` | Допоміжні засоби контрактів пакета плагіна, реєстрації, публічного артефакту, прямого імпорту, runtime API та побічних ефектів імпорту | - | `plugin-sdk/provider-test-contracts` | Допоміжні засоби контрактів runtime провайдера, auth, discovery, onboard, каталогу, майстра, мультимедійних можливостей, web-search/fetch і stream | - | `plugin-sdk/provider-http-test-mocks` | Опціональні моки HTTP/auth для Vitest для тестів провайдера, які використовують `plugin-sdk/provider-http` | - | `plugin-sdk/test-fixtures` | Загальні фікстури захоплення runtime CLI, контексту sandbox, writer для Skills, повідомлень агента, системних подій, тексту термінала, chunking, auth-token і типізованих випадків | + | `plugin-sdk/testing` | Широкий compatibility barrel для застарілих тестів Plugin. Нові тести розширень мають натомість імпортувати спеціалізовані підшляхи SDK, такі як `plugin-sdk/plugin-test-runtime`, `plugin-sdk/channel-test-helpers`, `plugin-sdk/test-env` або `plugin-sdk/test-fixtures` | + | `plugin-sdk/plugin-test-api` | Мінімальний допоміжний засіб `createTestPluginApi` для прямих unit-тестів реєстрації Plugin без імпорту мостів допоміжних засобів тестування репозиторію | + | `plugin-sdk/channel-test-helpers` | Допоміжні засоби тестування, орієнтовані на канал, для загальних контрактів actions/setup/status, перевірок каталогу, життєвого циклу запуску облікового запису, threading send-config, моків runtime, issues статусу, вихідної доставки та реєстрації hook | + | `plugin-sdk/channel-target-testing` | Спільний набір випадків помилок визначення цілі для тестів каналів | + | `plugin-sdk/plugin-test-contracts` | Допоміжні засоби контрактів для package Plugin, реєстрації, публічного артефакту, прямого імпорту, runtime API та побічних ефектів імпорту | + | `plugin-sdk/provider-test-contracts` | Допоміжні засоби контрактів для runtime provider, auth, discovery, onboard, catalog, wizard, можливостей медіа, політики replay, realtime STT live-audio, web-search/fetch і stream | + | `plugin-sdk/provider-http-test-mocks` | Opt-in моки HTTP/auth для Vitest у тестах provider, що використовують `plugin-sdk/provider-http` | + | `plugin-sdk/test-fixtures` | Загальні фікстури захоплення runtime CLI, контексту sandbox, записувача skill, agent-message, system-event, перезавантаження модуля, шляху bundled plugin, terminal-text, chunking, auth-token і typed-case | + | `plugin-sdk/test-node-mocks` | Спеціалізовані допоміжні засоби моків вбудованих модулів Node для використання всередині фабрик Vitest `vi.mock("node:*")` | - | Підшлях | Основні експорти | + | Підшлях | Ключові експорти | | --- | --- | - | `plugin-sdk/memory-core` | Поверхня допоміжних засобів bundled memory-core для manager/config/file/CLI helpers | + | `plugin-sdk/memory-core` | Поверхня допоміжних засобів bundled memory-core для менеджера/конфігурації/файлів/допоміжних засобів CLI | | `plugin-sdk/memory-core-engine-runtime` | Фасад runtime індексації/пошуку пам’яті | | `plugin-sdk/memory-core-host-engine-foundation` | Експорти foundation engine хоста пам’яті | - | `plugin-sdk/memory-core-host-engine-embeddings` | Контракти embedding хоста пам’яті, доступ до реєстру, локальний провайдер і загальні batch/remote helper-и | - | `plugin-sdk/memory-core-host-engine-qmd` | Експорти QMD engine хоста пам’яті | - | `plugin-sdk/memory-core-host-engine-storage` | Експорти storage engine хоста пам’яті | + | `plugin-sdk/memory-core-host-engine-embeddings` | Контракти embedding хоста пам’яті, доступ до registry, локальний provider і загальні допоміжні засоби batch/remote | + | `plugin-sdk/memory-core-host-engine-qmd` | Експорти engine QMD хоста пам’яті | + | `plugin-sdk/memory-core-host-engine-storage` | Експорти engine зберігання хоста пам’яті | | `plugin-sdk/memory-core-host-multimodal` | Мультимодальні допоміжні засоби хоста пам’яті | | `plugin-sdk/memory-core-host-query` | Допоміжні засоби запитів хоста пам’яті | | `plugin-sdk/memory-core-host-secret` | Допоміжні засоби секретів хоста пам’яті | | `plugin-sdk/memory-core-host-events` | Допоміжні засоби журналу подій хоста пам’яті | - | `plugin-sdk/memory-core-host-status` | Допоміжні засоби стану хоста пам’яті | + | `plugin-sdk/memory-core-host-status` | Допоміжні засоби статусу хоста пам’яті | | `plugin-sdk/memory-core-host-runtime-cli` | Допоміжні засоби runtime CLI хоста пам’яті | - | `plugin-sdk/memory-core-host-runtime-core` | Допоміжні засоби core runtime хоста пам’яті | + | `plugin-sdk/memory-core-host-runtime-core` | Основні допоміжні засоби runtime хоста пам’яті | | `plugin-sdk/memory-core-host-runtime-files` | Допоміжні засоби файлів/runtime хоста пам’яті | - | `plugin-sdk/memory-host-core` | Нейтральний до постачальника псевдонім для допоміжних засобів core runtime хоста пам’яті | - | `plugin-sdk/memory-host-events` | Нейтральний до постачальника псевдонім для допоміжних засобів журналу подій хоста пам’яті | - | `plugin-sdk/memory-host-files` | Нейтральний до постачальника псевдонім для допоміжних засобів файлів/runtime хоста пам’яті | - | `plugin-sdk/memory-host-markdown` | Спільні допоміжні засоби керованого Markdown для плагінів, суміжних із пам’яттю | - | `plugin-sdk/memory-host-search` | Фасад runtime Active Memory для доступу до search-manager | - | `plugin-sdk/memory-host-status` | Нейтральний до постачальника псевдонім для допоміжних засобів стану хоста пам’яті | + | `plugin-sdk/memory-host-core` | Нейтральний до вендора псевдонім для основних допоміжних засобів runtime хоста пам’яті | + | `plugin-sdk/memory-host-events` | Нейтральний до вендора псевдонім для допоміжних засобів журналу подій хоста пам’яті | + | `plugin-sdk/memory-host-files` | Нейтральний до вендора псевдонім для допоміжних засобів файлів/runtime хоста пам’яті | + | `plugin-sdk/memory-host-markdown` | Спільні допоміжні засоби керованого markdown для Plugin, суміжних із пам’яттю | + | `plugin-sdk/memory-host-search` | Фасад runtime Active Memory для доступу до менеджера пошуку | + | `plugin-sdk/memory-host-status` | Нейтральний до вендора псевдонім для допоміжних засобів статусу хоста пам’яті | | `plugin-sdk/memory-lancedb` | Поверхня допоміжних засобів bundled memory-lancedb | | Сімейство | Поточні підшляхи | Призначення | | --- | --- | --- | - | Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Допоміжні засоби підтримки bundled browser plugin. `browser-profiles` експортує `resolveBrowserConfig`, `resolveProfile`, `ResolvedBrowserConfig`, `ResolvedBrowserProfile` і `ResolvedBrowserTabCleanupConfig` для нормалізованої форми `browser.tabCleanup`. `browser-support` залишається barrel сумісності. | + | Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Допоміжні засоби підтримки Plugin bundled browser. `browser-profiles` експортує `resolveBrowserConfig`, `resolveProfile`, `ResolvedBrowserConfig`, `ResolvedBrowserProfile` і `ResolvedBrowserTabCleanupConfig` для нормалізованої форми `browser.tabCleanup`. `browser-support` залишається compatibility barrel. | | Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Поверхня допоміжних засобів/runtime bundled Matrix | | Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Поверхня допоміжних засобів/runtime bundled LINE | | IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Поверхня допоміжних засобів bundled IRC | - | Допоміжні засоби, специфічні для каналів | `plugin-sdk/googlechat`, `plugin-sdk/googlechat-runtime-shared`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu`, `plugin-sdk/feishu-conversation`, `plugin-sdk/feishu-setup`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/telegram-command-ui`, `plugin-sdk/tlon`, `plugin-sdk/twitch`, `plugin-sdk/zalo`, `plugin-sdk/zalo-setup` | Застарілі seams сумісності/допоміжних засобів bundled channel. Нові плагіни мають імпортувати загальні підшляхи SDK або локальні barrel-и плагіна. | - | Допоміжні засоби, специфічні для auth/плагінів | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diagnostics-prometheus`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/memory-core`, `plugin-sdk/memory-lancedb`, `plugin-sdk/opencode`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Допоміжні seams bundled feature/plugin; `plugin-sdk/github-copilot-token` наразі експортує `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` і `resolveCopilotApiToken` | + | Допоміжні засоби, специфічні для каналу | `plugin-sdk/googlechat`, `plugin-sdk/googlechat-runtime-shared`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu`, `plugin-sdk/feishu-conversation`, `plugin-sdk/feishu-setup`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/telegram-command-ui`, `plugin-sdk/tlon`, `plugin-sdk/twitch`, `plugin-sdk/zalo`, `plugin-sdk/zalo-setup` | Застарілі шви сумісності/допоміжних засобів bundled каналів. Нові Plugin мають імпортувати загальні підшляхи SDK або локальні barrel Plugin. | + | Допоміжні засоби, специфічні для auth/plugin | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diagnostics-prometheus`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/memory-core`, `plugin-sdk/memory-lancedb`, `plugin-sdk/opencode`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Шви допоміжних засобів bundled можливостей/Plugin; `plugin-sdk/github-copilot-token` наразі експортує `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` і `resolveCopilotApiToken` | @@ -329,4 +331,4 @@ x-i18n: - [Огляд Plugin SDK](/uk/plugins/sdk-overview) - [Налаштування Plugin SDK](/uk/plugins/sdk-setup) -- [Створення плагінів](/uk/plugins/building-plugins) +- [Створення Plugin](/uk/plugins/building-plugins) diff --git a/docs/uk/plugins/sdk-testing.md b/docs/uk/plugins/sdk-testing.md index 43c5cd4a9..a5d8554a1 100644 --- a/docs/uk/plugins/sdk-testing.md +++ b/docs/uk/plugins/sdk-testing.md @@ -7,46 +7,47 @@ sidebarTitle: Testing summary: Утиліти та шаблони тестування для плагінів OpenClaw title: Тестування Plugin x-i18n: - generated_at: "2026-04-28T02:07:58Z" + generated_at: "2026-04-28T02:31:35Z" model: gpt-5.4 provider: openai - source_hash: 264c652d0a857a4e5b570d177011b04318757d30c5169bbcf432c038e6b8b7d5 + source_hash: 624b0ea8c50cdb8deaf275654a3ea9211fc8b1b520b596ebebc791e22453689a source_path: plugins/sdk-testing.md workflow: 15 --- -Довідник з утиліт тестування, шаблонів і lint-контролю для плагінів OpenClaw. +Довідник з утиліт тестування, шаблонів і примусового застосування lint для плагінів OpenClaw. - **Шукаєте приклади тестів?** Практичні посібники містять готові приклади тестів: + **Шукаєте приклади тестів?** Посібники how-to містять готові приклади тестів: [Тести плагінів каналів](/uk/plugins/sdk-channel-plugins#step-6-test) і [Тести плагінів провайдерів](/uk/plugins/sdk-provider-plugins#step-6-test). ## Утиліти тестування -**Імпорт мока API Plugin:** `openclaw/plugin-sdk/plugin-test-api` +**Імпорт макета API Plugin:** `openclaw/plugin-sdk/plugin-test-api` -**Імпорт контрактів каналів:** `openclaw/plugin-sdk/channel-contract-testing` +**Імпорт контракту каналу:** `openclaw/plugin-sdk/channel-contract-testing` -**Імпорт допоміжних засобів тестування каналів:** `openclaw/plugin-sdk/channel-test-helpers` +**Імпорт допоміжних засобів тестування каналу:** `openclaw/plugin-sdk/channel-test-helpers` -**Імпорт тестування цілей каналу:** `openclaw/plugin-sdk/channel-target-testing` +**Імпорт тестування цілі каналу:** `openclaw/plugin-sdk/channel-target-testing` -**Імпорт контрактів Plugin:** `openclaw/plugin-sdk/plugin-test-contracts` +**Імпорт контракту Plugin:** `openclaw/plugin-sdk/plugin-test-contracts` **Імпорт тестування середовища виконання Plugin:** `openclaw/plugin-sdk/plugin-test-runtime` -**Імпорт контрактів провайдерів:** `openclaw/plugin-sdk/provider-test-contracts` +**Імпорт контракту провайдера:** `openclaw/plugin-sdk/provider-test-contracts` -**Імпорт HTTP-моків провайдерів:** `openclaw/plugin-sdk/provider-http-test-mocks` +**Імпорт HTTP-макета провайдера:** `openclaw/plugin-sdk/provider-http-test-mocks` **Імпорт тестування середовища/мережі:** `openclaw/plugin-sdk/test-env` **Імпорт загальних фікстур:** `openclaw/plugin-sdk/test-fixtures` -Для нових тестів плагінів віддавайте перевагу наведеним нижче спеціалізованим підшляхам. Широкий -barrel `openclaw/plugin-sdk/testing` підтримується лише для сумісності зі застарілим кодом. +**Імпорт макета вбудованого модуля Node:** `openclaw/plugin-sdk/test-node-mocks` + +Для нових тестів плагінів віддавайте перевагу наведеним нижче сфокусованим підшляхам. Широкий barrel `openclaw/plugin-sdk/testing` призначений лише для сумісності зі застарілими рішеннями. ```typescript import { @@ -61,76 +62,92 @@ import { describePluginRegistrationContract } from "openclaw/plugin-sdk/plugin-t import { registerSingleProviderPlugin } from "openclaw/plugin-sdk/plugin-test-runtime"; import { describeOpenAIProviderRuntimeContract } from "openclaw/plugin-sdk/provider-test-contracts"; import { getProviderHttpMocks } from "openclaw/plugin-sdk/provider-http-test-mocks"; -import { withEnv, withFetchPreconnect } from "openclaw/plugin-sdk/test-env"; -import { createCliRuntimeCapture, typedCases } from "openclaw/plugin-sdk/test-fixtures"; +import { withEnv, withFetchPreconnect, withServer } from "openclaw/plugin-sdk/test-env"; +import { + bundledPluginRoot, + createCliRuntimeCapture, + typedCases, +} from "openclaw/plugin-sdk/test-fixtures"; +import { mockNodeBuiltinModule } from "openclaw/plugin-sdk/test-node-mocks"; ``` ### Доступні експорти -| Export | Призначення | -| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| `createTestPluginApi` | Створює мінімальний мок API Plugin для прямих модульних тестів реєстрації. Імпортуйте з `plugin-sdk/plugin-test-api` | -| `expectChannelInboundContextContract` | Перевіряє форму вхідного контексту каналу. Імпортуйте з `plugin-sdk/channel-contract-testing` | -| `installChannelOutboundPayloadContractSuite` | Підключає набір контрактних тестів для вихідного payload каналу. Імпортуйте з `plugin-sdk/channel-contract-testing` | -| `createStartAccountContext` | Створює контексти життєвого циклу облікового запису каналу. Імпортуйте з `plugin-sdk/channel-test-helpers` | -| `installChannelActionsContractSuite` | Підключає загальний набір контрактних тестів для дій із повідомленнями каналу. Імпортуйте з `plugin-sdk/channel-test-helpers` | -| `installChannelSetupContractSuite` | Підключає загальний набір контрактних тестів для налаштування каналу. Імпортуйте з `plugin-sdk/channel-test-helpers` | -| `installChannelStatusContractSuite` | Підключає загальний набір контрактних тестів для статусу каналу. Імпортуйте з `plugin-sdk/channel-test-helpers` | -| `expectDirectoryIds` | Перевіряє id директорій із функції списку директорій. Імпортуйте з `plugin-sdk/channel-test-helpers` | -| `describePluginRegistrationContract` | Підключає перевірки контракту реєстрації Plugin. Імпортуйте з `plugin-sdk/plugin-test-contracts` | -| `registerSingleProviderPlugin` | Реєструє один Plugin провайдера в smoke-тестах завантажувача. Імпортуйте з `plugin-sdk/plugin-test-runtime` | -| `registerProviderPlugin` | Захоплює всі типи провайдерів з одного Plugin. Імпортуйте з `plugin-sdk/plugin-test-runtime` | -| `registerProviderPlugins` | Захоплює реєстрації провайдерів у кількох Plugin. Імпортуйте з `plugin-sdk/plugin-test-runtime` | -| `requireRegisteredProvider` | Перевіряє, що колекція провайдерів містить id. Імпортуйте з `plugin-sdk/plugin-test-runtime` | -| `createRuntimeEnv` | Створює змокане середовище виконання CLI/Plugin. Імпортуйте з `plugin-sdk/plugin-test-runtime` | -| `createPluginSetupWizardStatus` | Створює допоміжні засоби статусу налаштування для плагінів каналів. Імпортуйте з `plugin-sdk/plugin-test-runtime` | -| `describeOpenAIProviderRuntimeContract` | Підключає перевірки контракту середовища виконання для сімейства провайдерів. Імпортуйте з `plugin-sdk/provider-test-contracts` | -| `expectExplicitVideoGenerationCapabilities` | Перевіряє, що відеопровайдери явно оголошують можливості режиму генерації. Імпортуйте з `plugin-sdk/provider-test-contracts` | -| `expectExplicitMusicGenerationCapabilities` | Перевіряє, що музичні провайдери явно оголошують можливості генерації/редагування. Імпортуйте з `plugin-sdk/provider-test-contracts` | -| `mockSuccessfulDashscopeVideoTask` | Підключає успішну відповідь для відеозавдання, сумісного з DashScope. Імпортуйте з `plugin-sdk/provider-test-contracts` | -| `getProviderHttpMocks` | Надає доступ до опційних Vitest-моків HTTP/auth провайдерів. Імпортуйте з `plugin-sdk/provider-http-test-mocks` | -| `installProviderHttpMockCleanup` | Скидає HTTP/auth-моки провайдерів після кожного тесту. Імпортуйте з `plugin-sdk/provider-http-test-mocks` | -| `installCommonResolveTargetErrorCases` | Спільні тестові сценарії для обробки помилок розв’язання цілей. Імпортуйте з `plugin-sdk/channel-target-testing` | -| `shouldAckReaction` | Перевіряє, чи повинен канал додати ack-реакцію. Імпортуйте з `plugin-sdk/channel-feedback` | -| `removeAckReactionAfterReply` | Видаляє ack-реакцію після доставки відповіді. Імпортуйте з `plugin-sdk/channel-feedback` | -| `createTestRegistry` | Створює фікстуру реєстру плагінів каналів. Імпортуйте з `plugin-sdk/plugin-test-runtime` або `plugin-sdk/channel-test-helpers` | -| `createEmptyPluginRegistry` | Створює порожню фікстуру реєстру плагінів. Імпортуйте з `plugin-sdk/plugin-test-runtime` або `plugin-sdk/channel-test-helpers` | -| `setActivePluginRegistry` | Встановлює фікстуру реєстру для тестів середовища виконання Plugin. Імпортуйте з `plugin-sdk/plugin-test-runtime` або `plugin-sdk/channel-test-helpers` | -| `createRequestCaptureJsonFetch` | Захоплює JSON fetch-запити в тестах допоміжних медіафункцій. Імпортуйте з `plugin-sdk/test-env` | -| `withFetchPreconnect` | Запускає fetch-тести з установленими preconnect-хуками. Імпортуйте з `plugin-sdk/test-env` | -| `withEnv` / `withEnvAsync` | Тимчасово змінює змінні середовища. Імпортуйте з `plugin-sdk/test-env` | -| `createTempHomeEnv` / `withTempDir` | Створює ізольовані файлові фікстури для тестів. Імпортуйте з `plugin-sdk/test-env` | -| `createMockServerResponse` | Створює мінімальний мок відповіді HTTP-сервера. Імпортуйте з `plugin-sdk/test-env` | -| `createCliRuntimeCapture` | Захоплює вивід середовища виконання CLI у тестах. Імпортуйте з `plugin-sdk/test-fixtures` | -| `createSandboxTestContext` | Створює тестові контексти sandbox. Імпортуйте з `plugin-sdk/test-fixtures` | -| `writeSkill` | Записує фікстури Skills. Імпортуйте з `plugin-sdk/test-fixtures` | -| `makeAgentAssistantMessage` | Створює фікстури повідомлень стенограми агента. Імпортуйте з `plugin-sdk/test-fixtures` | -| `peekSystemEvents` / `resetSystemEventsForTest` | Переглядає та скидає фікстури системних подій. Імпортуйте з `plugin-sdk/test-fixtures` | -| `sanitizeTerminalText` | Очищає вивід термінала для перевірок. Імпортуйте з `plugin-sdk/test-fixtures` | -| `countLines` / `hasBalancedFences` | Перевіряє форму chunking-виводу. Імпортуйте з `plugin-sdk/test-fixtures` | -| `runProviderCatalog` | Виконує хук каталогу провайдерів із тестовими залежностями | -| `resolveProviderWizardOptions` | Розв’язує варіанти майстра налаштування провайдера в контрактних тестах | -| `resolveProviderModelPickerEntries` | Розв’язує елементи вибору моделей провайдера в контрактних тестах | -| `buildProviderPluginMethodChoice` | Створює id варіантів майстра провайдера для перевірок | -| `setProviderWizardProvidersResolverForTest` | Впроваджує провайдерів майстра для ізольованих тестів | -| `createProviderUsageFetch` | Створює фікстури fetch для використання провайдера | -| `useFrozenTime` / `useRealTime` | Заморожує та відновлює таймери для тестів, чутливих до часу. Імпортуйте з `plugin-sdk/test-env` | -| `createTestWizardPrompter` | Створює змоканий prompter майстра налаштування | -| `createRuntimeTaskFlow` | Створює ізольований стан runtime TaskFlow | -| `typedCases` | Зберігає літеральні типи для таблично-орієнтованих тестів. Імпортуйте з `plugin-sdk/test-fixtures` | +| Експорт | Призначення | +| ---------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `createTestPluginApi` | Створює мінімальний макет API плагіна для прямих unit-тестів реєстрації. Імпорт із `plugin-sdk/plugin-test-api` | +| `expectChannelInboundContextContract` | Перевіряє форму вхідного контексту каналу. Імпорт із `plugin-sdk/channel-contract-testing` | +| `installChannelOutboundPayloadContractSuite` | Додає набір контрактних тестів для вихідного payload каналу. Імпорт із `plugin-sdk/channel-contract-testing` | +| `createStartAccountContext` | Створює контексти життєвого циклу облікового запису каналу. Імпорт із `plugin-sdk/channel-test-helpers` | +| `installChannelActionsContractSuite` | Додає загальний набір контрактних тестів для дій із повідомленнями каналу. Імпорт із `plugin-sdk/channel-test-helpers` | +| `installChannelSetupContractSuite` | Додає загальний набір контрактних тестів для налаштування каналу. Імпорт із `plugin-sdk/channel-test-helpers` | +| `installChannelStatusContractSuite` | Додає загальний набір контрактних тестів для стану каналу. Імпорт із `plugin-sdk/channel-test-helpers` | +| `expectDirectoryIds` | Перевіряє id каталогу з функції списку каталогів. Імпорт із `plugin-sdk/channel-test-helpers` | +| `assertBundledChannelEntries` | Перевіряє, що точки входу вбудованого каналу надають очікуваний публічний контракт. Імпорт із `plugin-sdk/channel-test-helpers` | +| `formatEnvelopeTimestamp` | Форматує детерміновані часові мітки envelope. Імпорт із `plugin-sdk/channel-test-helpers` | +| `expectPairingReplyText` | Перевіряє текст відповіді для pairing каналу та витягує його код. Імпорт із `plugin-sdk/channel-test-helpers` | +| `describePluginRegistrationContract` | Додає перевірки контракту реєстрації Plugin. Імпорт із `plugin-sdk/plugin-test-contracts` | +| `registerSingleProviderPlugin` | Реєструє один плагін провайдера в smoke-тестах завантажувача. Імпорт із `plugin-sdk/plugin-test-runtime` | +| `registerProviderPlugin` | Захоплює всі типи провайдерів з одного плагіна. Імпорт із `plugin-sdk/plugin-test-runtime` | +| `registerProviderPlugins` | Захоплює реєстрації провайдерів у кількох плагінах. Імпорт із `plugin-sdk/plugin-test-runtime` | +| `requireRegisteredProvider` | Перевіряє, що колекція провайдерів містить id. Імпорт із `plugin-sdk/plugin-test-runtime` | +| `createRuntimeEnv` | Створює макетоване середовище виконання CLI/плагіна. Імпорт із `plugin-sdk/plugin-test-runtime` | +| `createPluginSetupWizardStatus` | Створює допоміжні засоби стану майстра налаштування для плагінів каналів. Імпорт із `plugin-sdk/plugin-test-runtime` | +| `describeOpenAIProviderRuntimeContract` | Додає перевірки контракту середовища виконання для сімейства провайдерів. Імпорт із `plugin-sdk/provider-test-contracts` | +| `expectPassthroughReplayPolicy` | Перевіряє, що політики повторного відтворення провайдера пропускають інструменти та метадані, які належать провайдеру. Імпорт із `plugin-sdk/provider-test-contracts` | +| `runRealtimeSttLiveTest` | Запускає live-тест провайдера realtime STT зі спільними аудіофікстурами. Імпорт із `plugin-sdk/provider-test-contracts` | +| `normalizeTranscriptForMatch` | Нормалізує вивід live-транскрипту перед нечіткими перевірками. Імпорт із `plugin-sdk/provider-test-contracts` | +| `expectExplicitVideoGenerationCapabilities` | Перевіряє, що відеопровайдери явно оголошують можливості режиму генерації. Імпорт із `plugin-sdk/provider-test-contracts` | +| `expectExplicitMusicGenerationCapabilities` | Перевіряє, що музичні провайдери явно оголошують можливості генерації/редагування. Імпорт із `plugin-sdk/provider-test-contracts` | +| `mockSuccessfulDashscopeVideoTask` | Додає відповідь успішного відеозавдання, сумісного з DashScope. Імпорт із `plugin-sdk/provider-test-contracts` | +| `getProviderHttpMocks` | Надає доступ до opt-in макетів Vitest для HTTP/auth провайдера. Імпорт із `plugin-sdk/provider-http-test-mocks` | +| `installProviderHttpMockCleanup` | Скидає HTTP/auth-макети провайдера після кожного тесту. Імпорт із `plugin-sdk/provider-http-test-mocks` | +| `installCommonResolveTargetErrorCases` | Спільні тестові випадки для обробки помилок розв’язання цілі. Імпорт із `plugin-sdk/channel-target-testing` | +| `shouldAckReaction` | Перевіряє, чи має канал додати ack-реакцію. Імпорт із `plugin-sdk/channel-feedback` | +| `removeAckReactionAfterReply` | Видаляє ack-реакцію після доставки відповіді. Імпорт із `plugin-sdk/channel-feedback` | +| `createTestRegistry` | Створює фікстуру реєстру плагінів каналу. Імпорт із `plugin-sdk/plugin-test-runtime` або `plugin-sdk/channel-test-helpers` | +| `createEmptyPluginRegistry` | Створює порожню фікстуру реєстру плагінів. Імпорт із `plugin-sdk/plugin-test-runtime` або `plugin-sdk/channel-test-helpers` | +| `setActivePluginRegistry` | Встановлює фікстуру реєстру для runtime-тестів плагіна. Імпорт із `plugin-sdk/plugin-test-runtime` або `plugin-sdk/channel-test-helpers` | +| `createRequestCaptureJsonFetch` | Захоплює JSON-запити fetch у тестах медіадопоміжних засобів. Імпорт із `plugin-sdk/test-env` | +| `withServer` | Запускає тести з тимчасовим локальним HTTP-сервером. Імпорт із `plugin-sdk/test-env` | +| `createMockIncomingRequest` | Створює мінімальний об’єкт вхідного HTTP-запиту. Імпорт із `plugin-sdk/test-env` | +| `withFetchPreconnect` | Запускає fetch-тести зі встановленими preconnect-хуками. Імпорт із `plugin-sdk/test-env` | +| `withEnv` / `withEnvAsync` | Тимчасово змінює змінні середовища. Імпорт із `plugin-sdk/test-env` | +| `createTempHomeEnv` / `withTempHome` / `withTempDir` | Створює ізольовані фікстури файлової системи для тестів. Імпорт із `plugin-sdk/test-env` | +| `createMockServerResponse` | Створює мінімальний макет відповіді HTTP-сервера. Імпорт із `plugin-sdk/test-env` | +| `createCliRuntimeCapture` | Захоплює вивід середовища виконання CLI у тестах. Імпорт із `plugin-sdk/test-fixtures` | +| `importFreshModule` | Імпортує модуль ESM зі свіжим query-token, щоб обійти кеш модуля. Імпорт із `plugin-sdk/test-fixtures` | +| `bundledPluginRoot` / `bundledPluginFile` | Визначає шляхи до фікстур вихідного коду або dist вбудованого плагіна. Імпорт із `plugin-sdk/test-fixtures` | +| `mockNodeBuiltinModule` | Встановлює вузькі макети Vitest для вбудованих модулів Node. Імпорт із `plugin-sdk/test-node-mocks` | +| `createSandboxTestContext` | Створює тестові контексти sandbox. Імпорт із `plugin-sdk/test-fixtures` | +| `writeSkill` | Записує фікстури Skills. Імпорт із `plugin-sdk/test-fixtures` | +| `makeAgentAssistantMessage` | Створює фікстури повідомлень транскрипту агента. Імпорт із `plugin-sdk/test-fixtures` | +| `peekSystemEvents` / `resetSystemEventsForTest` | Переглядає та скидає фікстури системних подій. Імпорт із `plugin-sdk/test-fixtures` | +| `sanitizeTerminalText` | Очищає текст термінала для перевірок. Імпорт із `plugin-sdk/test-fixtures` | +| `countLines` / `hasBalancedFences` | Перевіряє форму chunking-виводу. Імпорт із `plugin-sdk/test-fixtures` | +| `runProviderCatalog` | Виконує хук каталогу провайдера з тестовими залежностями | +| `resolveProviderWizardOptions` | Визначає варіанти майстра налаштування провайдера в контрактних тестах | +| `resolveProviderModelPickerEntries` | Визначає елементи вибору моделей провайдера в контрактних тестах | +| `buildProviderPluginMethodChoice` | Створює id варіантів майстра провайдера для перевірок | +| `setProviderWizardProvidersResolverForTest` | Інжектує провайдери майстра для ізольованих тестів | +| `createProviderUsageFetch` | Створює фікстури fetch використання провайдера | +| `useFrozenTime` / `useRealTime` | Заморожує та відновлює таймери для чутливих до часу тестів. Імпорт із `plugin-sdk/test-env` | +| `createTestWizardPrompter` | Створює макетований prompter майстра налаштування | +| `createRuntimeTaskFlow` | Створює ізольований стан runtime TaskFlow | +| `typedCases` | Зберігає літеральні типи для таблично-керованих тестів. Імпорт із `plugin-sdk/test-fixtures` | -Набори контрактних тестів для вбудованих плагінів також використовують підшляхи SDK для тестування для допоміжних засобів тестових фікстур реєстру, маніфесту, публічних артефактів і runtime. Набори лише для core, які залежать від вбудованого інвентаря OpenClaw, залишаються в `src/plugins/contracts`. -Нові тести розширень тримайте на документованому спеціалізованому підшляху SDK, наприклад +Набори контрактних тестів для вбудованих плагінів також використовують підшляхи тестування SDK для допоміжних засобів тестування лише для тестів: реєстру, маніфесту, публічних артефактів і runtime-фікстур. Набори, призначені лише для core і залежні від вбудованого inventory OpenClaw, залишаються в `src/plugins/contracts`. +Тримайте нові тести розширень на задокументованому сфокусованому підшляху SDK, наприклад `plugin-sdk/plugin-test-api`, `plugin-sdk/channel-contract-testing`, `plugin-sdk/channel-test-helpers`, `plugin-sdk/plugin-test-contracts`, `plugin-sdk/plugin-test-runtime`, `plugin-sdk/provider-test-contracts`, `plugin-sdk/provider-http-test-mocks`, `plugin-sdk/test-env` або -`plugin-sdk/test-fixtures`, замість імпортування широкого суміснісного barrel `plugin-sdk/testing`, -файлів репозиторію `src/**` або напряму мостів репозиторію `test/helpers/plugins/*`. +`plugin-sdk/test-fixtures`, замість імпорту широкого compatibility barrel +`plugin-sdk/testing`, файлів репозиторію `src/**` або напряму мостів репозиторію `test/helpers/plugins/*`. ### Типи -Спеціалізовані підшляхи тестування також повторно експортують типи, корисні у тестових файлах: +Сфокусовані підшляхи тестування також повторно експортують типи, корисні у файлах тестів: ```typescript import type { @@ -141,10 +158,9 @@ import type { OpenClawConfig } from "openclaw/plugin-sdk/config-types"; import type { MockFn, PluginRuntime, RuntimeEnv } from "openclaw/plugin-sdk/plugin-test-runtime"; ``` -## Тестування розв’язання цілей +## Тестування розв’язання цілі -Використовуйте `installCommonResolveTargetErrorCases`, щоб додати стандартні сценарії помилок для -розв’язання цілей каналу: +Використовуйте `installCommonResolveTargetErrorCases`, щоб додати стандартні випадки помилок для розв’язання цілі каналу: ```typescript import { describe } from "vitest"; @@ -153,13 +169,13 @@ import { installCommonResolveTargetErrorCases } from "openclaw/plugin-sdk/channe describe("my-channel target resolution", () => { installCommonResolveTargetErrorCases({ resolveTarget: ({ to, mode, allowFrom }) => { - // Your channel's target resolution logic + // Логіка розв’язання цілі вашого каналу return myChannelResolveTarget({ to, mode, allowFrom }); }, implicitAllowFrom: ["user1", "user2"], }); - // Add channel-specific test cases + // Додайте специфічні для каналу тестові випадки it("should resolve @username targets", () => { // ... }); @@ -170,26 +186,20 @@ describe("my-channel target resolution", () => { ### Тестування контрактів реєстрації -Модульні тести, які передають вручну написаний мок `api` до `register(api)`, не перевіряють -ворота прийняття завантажувача OpenClaw. Додайте принаймні один smoke-тест на основі завантажувача -для кожної поверхні реєстрації, від якої залежить ваш Plugin, особливо для хуків і -ексклюзивних можливостей, таких як пам’ять. +Unit-тести, які передають власноруч написаний макет `api` до `register(api)`, не перевіряють acceptance gates завантажувача OpenClaw. Додайте щонайменше один smoke-тест із підтримкою завантажувача для кожної поверхні реєстрації, від якої залежить ваш плагін, особливо для хуків і ексклюзивних можливостей, таких як пам’ять. -Справжній завантажувач відхиляє реєстрацію Plugin, якщо бракує потрібних метаданих або якщо -Plugin викликає API можливості, якою він не володіє. Наприклад, -`api.registerHook(...)` вимагає назву хука, а -`api.registerMemoryCapability(...)` вимагає, щоб маніфест Plugin або експортований запис -оголошував `kind: "memory"`. +Реальний завантажувач відхиляє реєстрацію плагіна, якщо бракує обов’язкових метаданих або якщо плагін викликає API можливості, якою він не володіє. Наприклад, +`api.registerHook(...)` вимагає ім’я хука, а +`api.registerMemoryCapability(...)` вимагає, щоб маніфест плагіна або експортована точка входу оголошували `kind: "memory"`. -### Тестування доступу до runtime-конфігурації +### Тестування доступу до конфігурації runtime -Віддавайте перевагу спільному моку runtime Plugin з `openclaw/plugin-sdk/channel-test-helpers` -під час тестування вбудованих плагінів каналів. Його застарілі моки `runtime.config.loadConfig()` і -`runtime.config.writeConfigFile(...)` за замовчуванням викидають помилку, щоб тести виявляли нове -використання API сумісності. Перевизначайте ці моки лише тоді, коли тест -явно покриває застарілу поведінку сумісності. +Під час тестування вбудованих плагінів каналів віддавайте перевагу спільному макету runtime плагіна з `openclaw/plugin-sdk/channel-test-helpers`. +Його застарілі макети `runtime.config.loadConfig()` і +`runtime.config.writeConfigFile(...)` за замовчуванням генерують помилку, щоб тести виявляли нове використання compatibility API. Перевизначайте ці макети лише тоді, коли тест +явно покриває застарілу behavior сумісності. -### Модульне тестування плагіна каналу +### Unit-тестування плагіна каналу ```typescript import { describe, it, expect, vi } from "vitest"; @@ -219,13 +229,13 @@ describe("my-channel plugin", () => { const inspection = myPlugin.setup.inspectAccount(cfg, undefined); expect(inspection.configured).toBe(true); expect(inspection.tokenStatus).toBe("available"); - // No token value exposed + // Значення токена не розкривається expect(inspection).not.toHaveProperty("token"); }); }); ``` -### Модульне тестування плагіна провайдера +### Unit-тестування плагіна провайдера ```typescript import { describe, it, expect } from "vitest"; @@ -234,7 +244,7 @@ describe("my-provider plugin", () => { it("should resolve dynamic models", () => { const model = myProvider.resolveDynamicModel({ modelId: "custom-model-v2", - // ... context + // ... контекст }); expect(model.id).toBe("custom-model-v2"); @@ -245,7 +255,7 @@ describe("my-provider plugin", () => { it("should return catalog when API key is available", async () => { const result = await myProvider.catalog.run({ resolveProviderApiKey: () => ({ apiKey: "test-key" }), - // ... context + // ... контекст }); expect(result?.provider?.models).toHaveLength(2); @@ -253,9 +263,9 @@ describe("my-provider plugin", () => { }); ``` -### Мокування runtime Plugin +### Макетування runtime плагіна -Для коду, який використовує `createPluginRuntimeStore`, мокуйте runtime у тестах: +Для коду, який використовує `createPluginRuntimeStore`, макетуйте runtime у тестах: ```typescript import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store"; @@ -266,42 +276,42 @@ const store = createPluginRuntimeStore({ errorMessage: "test runtime not set", }); -// In test setup +// У налаштуванні тесту const mockRuntime = { agent: { resolveAgentDir: vi.fn().mockReturnValue("/tmp/agent"), - // ... other mocks + // ... інші макети }, config: { current: vi.fn(() => ({}) as const), mutateConfigFile: vi.fn(), replaceConfigFile: vi.fn(), }, - // ... other namespaces + // ... інші простори імен } as unknown as PluginRuntime; store.setRuntime(mockRuntime); -// After tests +// Після тестів store.clearRuntime(); ``` -### Тестування з per-instance stub +### Тестування з per-instance stubs -Віддавайте перевагу per-instance stub замість мутації прототипу: +Віддавайте перевагу per-instance stubs замість мутації прототипу: ```typescript -// Preferred: per-instance stub +// Рекомендовано: per-instance stub const client = new MyChannelClient(); client.sendMessage = vi.fn().mockResolvedValue({ id: "msg-1" }); -// Avoid: prototype mutation +// Уникайте: мутація прототипу // MyChannelClient.prototype.sendMessage = vi.fn(); ``` ## Контрактні тести (плагіни в репозиторії) -Вбудовані плагіни мають контрактні тести, які перевіряють належність реєстрації: +Вбудовані плагіни мають контрактні тести, які перевіряють право власності на реєстрацію: ```bash pnpm test -- src/plugins/contracts/ @@ -310,9 +320,9 @@ pnpm test -- src/plugins/contracts/ Ці тести перевіряють: - Які плагіни реєструють які провайдери -- Які плагіни реєструють які мовленнєві провайдери +- Які плагіни реєструють які speech-провайдери - Коректність форми реєстрації -- Відповідність runtime-контракту +- Відповідність контракту runtime ### Запуск scoped-тестів @@ -330,36 +340,36 @@ pnpm test -- src/plugins/contracts/auth.contract.test.ts pnpm test -- src/plugins/contracts/runtime.contract.test.ts ``` -## Lint-контроль (плагіни в репозиторії) +## Примусове застосування lint (плагіни в репозиторії) -Три правила перевіряються через `pnpm check` для плагінів у репозиторії: +Три правила примусово перевіряються через `pnpm check` для плагінів у репозиторії: -1. **Без монолітних імпортів із кореня** -- кореневий barrel `openclaw/plugin-sdk` відхиляється -2. **Без прямих імпортів `src/`** -- плагіни не можуть напряму імпортувати `../../src/` -3. **Без самоімпортів** -- плагіни не можуть імпортувати власний підшлях `plugin-sdk/` +1. **Без монолітних імпортів із root** -- root barrel `openclaw/plugin-sdk` відхиляється +2. **Без прямих імпортів із `src/`** -- плагіни не можуть напряму імпортувати `../../src/` +3. **Без self-imports** -- плагіни не можуть імпортувати власний підшлях `plugin-sdk/` -Зовнішні плагіни не підпадають під ці lint-правила, але дотримуватися тих самих +На зовнішні плагіни ці правила lint не поширюються, але дотримуватися тих самих шаблонів рекомендується. -## Конфігурація тестування +## Конфігурація тестів OpenClaw використовує Vitest із порогами покриття V8. Для тестів плагінів: ```bash -# Run all tests +# Запустити всі тести pnpm test -# Run specific plugin tests +# Запустити тести конкретного плагіна pnpm test -- /my-channel/src/channel.test.ts -# Run with a specific test name filter +# Запустити з фільтром за конкретною назвою тесту pnpm test -- /my-channel/ -t "resolves account" -# Run with coverage +# Запустити з покриттям pnpm test:coverage ``` -Якщо локальні запуски спричиняють тиск на пам’ять: +Якщо локальні запуски створюють тиск на пам’ять: ```bash OPENCLAW_VITEST_MAX_WORKERS=1 pnpm test @@ -368,6 +378,6 @@ OPENCLAW_VITEST_MAX_WORKERS=1 pnpm test ## Пов’язане - [Огляд SDK](/uk/plugins/sdk-overview) -- правила імпорту -- [Плагіни каналів SDK](/uk/plugins/sdk-channel-plugins) -- інтерфейс плагінів каналів -- [Плагіни провайдерів SDK](/uk/plugins/sdk-provider-plugins) -- хуки плагінів провайдерів +- [Плагіни каналів SDK](/uk/plugins/sdk-channel-plugins) -- інтерфейс плагіна каналу +- [Плагіни провайдерів SDK](/uk/plugins/sdk-provider-plugins) -- хуки плагіна провайдера - [Створення плагінів](/uk/plugins/building-plugins) -- посібник для початку роботи