diff --git a/docs/uk/plugins/building-plugins.md b/docs/uk/plugins/building-plugins.md index b666d1650..9b9411e4b 100644 --- a/docs/uk/plugins/building-plugins.md +++ b/docs/uk/plugins/building-plugins.md @@ -1,31 +1,31 @@ --- read_when: - Ви хочете створити новий Plugin для OpenClaw - - Вам потрібен швидкий старт для розробки Plugin-ів - - Ви додаєте до OpenClaw новий канал, провайдера, інструмент або іншу можливість + - Вам потрібен короткий посібник зі швидкого старту для розробки Plugin-ів + - Ви додаєте новий канал, провайдера, інструмент або іншу можливість до OpenClaw sidebarTitle: Getting Started summary: Створіть свій перший Plugin для OpenClaw за лічені хвилини title: Створення Plugin-ів x-i18n: - generated_at: "2026-04-22T07:00:23Z" + generated_at: "2026-04-22T17:55:47Z" model: gpt-5.4 provider: openai - source_hash: 67368be311537f984f14bea9239b88c3eccf72a76c9dd1347bb041e02697ae24 + source_hash: 35faa4e2722a58aa12330103b42d2dd6e14e56ee46720883d0945a984d991f79 source_path: plugins/building-plugins.md workflow: 15 --- # Створення Plugin-ів -Plugin-и розширюють OpenClaw новими можливостями: каналами, провайдерами моделей, -мовленням, транскрибуванням у реальному часі, голосом у реальному часі, розумінням медіа, генерацією зображень, -генерацією відео, веб-отриманням, веб-пошуком, інструментами агентів або будь-якою -комбінацією. +Plugin-и розширюють OpenClaw новими можливостями: канали, провайдери моделей, +мовлення, транскрипція в реальному часі, голос у реальному часі, розуміння медіа, генерація +зображень, генерація відео, веб-отримання, веб-пошук, інструменти агента або будь-яка +комбінація. Вам не потрібно додавати свій Plugin до репозиторію OpenClaw. Опублікуйте його в [ClawHub](/uk/tools/clawhub) або npm, і користувачі встановлять його за допомогою -`openclaw plugins install `. OpenClaw спочатку намагається використати ClawHub і -автоматично переходить до npm, якщо це потрібно. +`openclaw plugins install `. OpenClaw спочатку намагається використати ClawHub, а +потім автоматично переходить до npm. ## Передумови @@ -36,27 +36,27 @@ Plugin-и розширюють OpenClaw новими можливостями: ## Який тип Plugin-а? - - Підключає OpenClaw до платформи обміну повідомленнями (Discord, IRC тощо) + + Підключіть OpenClaw до платформи обміну повідомленнями (Discord, IRC тощо) - - Додає провайдера моделей (LLM, проксі або власну кінцеву точку) + + Додайте провайдера моделей (LLM, проксі або користувацьку кінцеву точку) - - Реєструє інструменти агента, хуки подій або сервіси — продовжуйте нижче + + Зареєструйте інструменти агента, хуки подій або сервіси — продовження нижче -Якщо Plugin каналу є необов’язковим і може бути не встановлений під час виконання -онбордингу/налаштування, використовуйте `createOptionalChannelSetupSurface(...)` з -`openclaw/plugin-sdk/channel-setup`. Це створює пару адаптера налаштування та майстра, -яка повідомляє про вимогу встановлення та безпечно відхиляє реальні записи конфігурації, -доки Plugin не буде встановлено. +Якщо Channel plugin є необов’язковим і може бути не встановлений, коли виконується +onboarding/налаштування, використовуйте `createOptionalChannelSetupSurface(...)` з +`openclaw/plugin-sdk/channel-setup`. Він створює пару адаптера налаштування + майстра, +яка повідомляє про вимогу встановлення і блокує реальні записи конфігурації +до встановлення Plugin-а. -## Швидкий старт: Plugin інструменту +## Швидкий старт: Tool plugin -У цьому прикладі створюється мінімальний Plugin, який реєструє інструмент агента. Для Plugin-ів -каналів і провайдерів є окремі посібники за посиланнями вище. +У цьому прикладі створюється мінімальний Plugin, який реєструє інструмент агента. Для Channel +plugin-ів і Provider plugin-ів є окремі посібники за посиланнями вище. @@ -93,8 +93,8 @@ Plugin-и розширюють OpenClaw новими можливостями: ``` - Кожному Plugin-у потрібен маніфест, навіть без конфігурації. Повну схему дивіться в - [Manifest](/uk/plugins/manifest). Канонічні фрагменти для публікації в ClawHub + Кожному Plugin-у потрібен маніфест, навіть без конфігурації. Див. + [Manifest](/uk/plugins/manifest) для повної схеми. Канонічні фрагменти публікації ClawHub розміщені в `docs/snippets/plugin-publish/`. @@ -123,15 +123,15 @@ Plugin-и розширюють OpenClaw новими можливостями: }); ``` - `definePluginEntry` призначений для Plugin-ів, що не є каналами. Для каналів використовуйте + `definePluginEntry` призначений для Plugin-ів, які не є каналами. Для каналів використовуйте `defineChannelPluginEntry` — див. [Channel Plugins](/uk/plugins/sdk-channel-plugins). - Повний перелік параметрів точки входу дивіться в [Entry Points](/uk/plugins/sdk-entrypoints). + Повний перелік параметрів точки входу див. у [Entry Points](/uk/plugins/sdk-entrypoints). - + - **Зовнішні Plugin-и:** перевірте й опублікуйте в ClawHub, а потім встановіть: + **Зовнішні Plugin-и:** виконайте перевірку та опублікуйте в ClawHub, потім встановіть: ```bash clawhub package publish your-org/your-plugin --dry-run @@ -139,10 +139,10 @@ Plugin-и розширюють OpenClaw новими можливостями: openclaw plugins install clawhub:@myorg/openclaw-my-plugin ``` - OpenClaw також перевіряє ClawHub перед npm для звичайних специфікацій пакетів, таких як + OpenClaw також перевіряє ClawHub перед npm для простих специфікацій пакетів, як-от `@myorg/openclaw-my-plugin`. - **Plugin-и в репозиторії:** розмістіть їх у дереві робочого простору вбудованих Plugin-ів — вони будуть виявлені автоматично. + **Plugin-и в репозиторії:** розміщуйте в дереві робочого простору bundled Plugin-ів — вони виявляються автоматично. ```bash pnpm test -- /my-plugin/ @@ -155,61 +155,63 @@ Plugin-и розширюють OpenClaw новими можливостями: Один Plugin може зареєструвати будь-яку кількість можливостей через об’єкт `api`: -| Можливість | Метод реєстрації | Детальний посібник | -| --------------------- | ----------------------------------------------- | ----------------------------------------------------------------------------- | -| Текстовий inference (LLM) | `api.registerProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins) | -| Backend CLI для inference | `api.registerCliBackend(...)` | [CLI Backends](/uk/gateway/cli-backends) | -| Канал / повідомлення | `api.registerChannel(...)` | [Channel Plugins](/uk/plugins/sdk-channel-plugins) | -| Мовлення (TTS/STT) | `api.registerSpeechProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | -| Транскрибування в реальному часі | `api.registerRealtimeTranscriptionProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | -| Голос у реальному часі | `api.registerRealtimeVoiceProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | -| Розуміння медіа | `api.registerMediaUnderstandingProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | -| Генерація зображень | `api.registerImageGenerationProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | -| Генерація музики | `api.registerMusicGenerationProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | -| Генерація відео | `api.registerVideoGenerationProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | -| Веб-отримання | `api.registerWebFetchProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | -| Веб-пошук | `api.registerWebSearchProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | -| Вбудоване розширення Pi | `api.registerEmbeddedExtensionFactory(...)` | [SDK Overview](/uk/plugins/sdk-overview#registration-api) | -| Інструменти агентів | `api.registerTool(...)` | Нижче | -| Користувацькі команди | `api.registerCommand(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) | -| Хуки подій | `api.registerHook(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) | -| HTTP-маршрути | `api.registerHttpRoute(...)` | [Internals](/uk/plugins/architecture#gateway-http-routes) | -| Підкоманди CLI | `api.registerCli(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) | +| Можливість | Метод реєстрації | Докладний посібник | +| ---------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------- | +| Текстова інференція (LLM) | `api.registerProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins) | +| Бекенд інференції CLI | `api.registerCliBackend(...)` | [CLI Backends](/uk/gateway/cli-backends) | +| Канал / обмін повідомленнями | `api.registerChannel(...)` | [Channel Plugins](/uk/plugins/sdk-channel-plugins) | +| Мовлення (TTS/STT) | `api.registerSpeechProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | +| Транскрипція в реальному часі | `api.registerRealtimeTranscriptionProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | +| Голос у реальному часі | `api.registerRealtimeVoiceProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | +| Розуміння медіа | `api.registerMediaUnderstandingProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | +| Генерація зображень | `api.registerImageGenerationProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | +| Генерація музики | `api.registerMusicGenerationProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | +| Генерація відео | `api.registerVideoGenerationProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | +| Веб-отримання | `api.registerWebFetchProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | +| Веб-пошук | `api.registerWebSearchProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | +| Вбудоване розширення Pi | `api.registerEmbeddedExtensionFactory(...)` | [SDK Overview](/uk/plugins/sdk-overview#registration-api) | +| Інструменти агента | `api.registerTool(...)` | Нижче | +| Користувацькі команди | `api.registerCommand(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) | +| Хуки подій | `api.registerHook(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) | +| HTTP-маршрути | `api.registerHttpRoute(...)` | [Internals](/uk/plugins/architecture#gateway-http-routes) | +| Підкоманди CLI | `api.registerCli(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) | -Повний API реєстрації дивіться в [SDK Overview](/uk/plugins/sdk-overview#registration-api). +Повний API реєстрації див. у [SDK Overview](/uk/plugins/sdk-overview#registration-api). -Використовуйте `api.registerEmbeddedExtensionFactory(...)`, коли Plugin-у потрібні -Pi-native хуки embedded-runner, наприклад асинхронне переписування `tool_result` перед тим, як буде надіслано -остаточне повідомлення з результатом інструменту. Віддавайте перевагу звичайним хукам Plugin-ів OpenClaw, якщо +Використовуйте `api.registerEmbeddedExtensionFactory(...)`, коли Plugin потребує +Pi-native hook-ів embedded-runner, наприклад асинхронного переписування `tool_result` +перед тим, як буде надіслано фінальне повідомлення з результатом інструмента. Віддавайте перевагу звичайним хукам Plugin-ів OpenClaw, коли робота не потребує таймінгу розширення Pi. -Якщо ваш Plugin реєструє власні RPC-методи Gateway, використовуйте для них +Якщо ваш Plugin реєструє користувацькі Gateway RPC-методи, використовуйте для них префікс, специфічний для Plugin-а. Простори імен адміністрування ядра (`config.*`, `exec.approvals.*`, `wizard.*`, `update.*`) залишаються зарезервованими і завжди зіставляються з `operator.admin`, навіть якщо Plugin запитує вужчу область дії. -Семантика захисту хуків, яку варто пам’ятати: +Семантика guard-хуків, про яку варто пам’ятати: - `before_tool_call`: `{ block: true }` є термінальним результатом і зупиняє обробники з нижчим пріоритетом. -- `before_tool_call`: `{ block: false }` вважається відсутністю рішення. -- `before_tool_call`: `{ requireApproval: true }` призупиняє виконання агента й запитує підтвердження користувача через оверлей exec approval, кнопки Telegram, інтеракції Discord або команду `/approve` в будь-якому каналі. +- `before_tool_call`: `{ block: false }` розглядається як відсутність рішення. +- `before_tool_call`: `{ requireApproval: true }` призупиняє виконання агента і запитує в користувача схвалення через overlay схвалення exec, кнопки Telegram, взаємодії Discord або команду `/approve` у будь-якому каналі. - `before_install`: `{ block: true }` є термінальним результатом і зупиняє обробники з нижчим пріоритетом. -- `before_install`: `{ block: false }` вважається відсутністю рішення. +- `before_install`: `{ block: false }` розглядається як відсутність рішення. - `message_sending`: `{ cancel: true }` є термінальним результатом і зупиняє обробники з нижчим пріоритетом. -- `message_sending`: `{ cancel: false }` вважається відсутністю рішення. +- `message_sending`: `{ cancel: false }` розглядається як відсутність рішення. +- `message_received`: надавайте перевагу типізованому полю `threadId`, коли вам потрібна маршрутизація вхідних потоків/тем. `metadata` залишайте для специфічних для каналу доповнень. +- `message_sending`: надавайте перевагу типізованим полям маршрутизації `replyToId` / `threadId` замість специфічних для каналу ключів metadata. -Команда `/approve` обробляє як підтвердження exec, так і підтвердження Plugin-ів із обмеженим fallback: якщо ідентифікатор підтвердження exec не знайдено, OpenClaw повторно пробує той самий ідентифікатор через підтвердження Plugin-ів. Переспрямування підтверджень Plugin-ів можна налаштувати окремо через `approvals.plugin` у конфігурації. +Команда `/approve` обробляє як схвалення exec, так і схвалення Plugin-ів, із обмеженим резервним сценарієм: коли ідентифікатор схвалення exec не знайдено, OpenClaw повторно пробує той самий ідентифікатор через схвалення Plugin-ів. Переспрямування схвалення Plugin-ів можна налаштувати окремо через `approvals.plugin` у конфігурації. -Якщо користувацькі механізми підтвердження мають виявляти той самий випадок -обмеженого fallback, надавайте перевагу `isApprovalNotFoundError` з `openclaw/plugin-sdk/error-runtime` -замість ручного зіставлення рядків завершення строку дії підтвердження. +Якщо для користувацької логіки схвалення потрібно виявити той самий обмежений резервний сценарій, +використовуйте `isApprovalNotFoundError` з `openclaw/plugin-sdk/error-runtime` +замість ручного зіставлення рядків про завершення строку дії схвалення. -Докладніше дивіться в [SDK Overview hook decision semantics](/uk/plugins/sdk-overview#hook-decision-semantics). +Докладніше див. у [SDK Overview hook decision semantics](/uk/plugins/sdk-overview#hook-decision-semantics). -## Реєстрація інструментів агентів +## Реєстрація інструментів агента Інструменти — це типізовані функції, які може викликати LLM. Вони можуть бути обов’язковими (завжди -доступними) або необов’язковими (користувач сам вмикає їх): +доступними) або необов’язковими (користувач вмикає їх самостійно): ```typescript register(api) { @@ -250,7 +252,7 @@ register(api) { - Використовуйте `optional: true` для інструментів із побічними ефектами або додатковими вимогами до бінарних файлів - Користувачі можуть увімкнути всі інструменти з Plugin-а, додавши ідентифікатор Plugin-а до `tools.allow` -## Правила імпорту +## Угоди щодо імпортів Завжди імпортуйте з цільових шляхів `openclaw/plugin-sdk/`: @@ -262,29 +264,29 @@ import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store"; import { ... } from "openclaw/plugin-sdk"; ``` -Повний довідник підшляхів дивіться в [SDK Overview](/uk/plugins/sdk-overview). +Повний довідник щодо підшляхів див. у [SDK Overview](/uk/plugins/sdk-overview). У межах вашого Plugin-а використовуйте локальні barrel-файли (`api.ts`, `runtime-api.ts`) для внутрішніх імпортів — ніколи не імпортуйте власний Plugin через його шлях SDK. -Для Plugin-ів провайдерів зберігайте допоміжні засоби, специфічні для провайдера, у цих barrel-файлах -на рівні кореня пакета, якщо лише цей інтерфейс не є справді універсальним. Поточні вбудовані приклади: +Для Provider plugin-ів зберігайте специфічні для провайдера допоміжні функції в цих barrel-файлах кореня пакета, +якщо тільки межа не є справді загальною. Поточні bundled-приклади: -- Anthropic: обгортки потоків Claude та допоміжні засоби `service_tier` / beta -- OpenAI: конструктори провайдерів, допоміжні засоби моделей за замовчуванням, провайдери реального часу -- OpenRouter: конструктор провайдера плюс допоміжні засоби онбордингу/конфігурації +- Anthropic: обгортки потоків Claude і допоміжні функції `service_tier` / beta +- OpenAI: конструктори провайдерів, допоміжні функції моделей за замовчуванням, провайдери реального часу +- OpenRouter: конструктор провайдера плюс допоміжні функції onboarding/конфігурації -Якщо допоміжний засіб корисний лише всередині одного вбудованого пакета провайдера, залишайте його на -цьому інтерфейсі кореня пакета замість того, щоб переносити його до `openclaw/plugin-sdk/*`. +Якщо допоміжна функція корисна лише всередині одного bundled-пакета провайдера, залишайте її на +цьому package-root seam замість перенесення до `openclaw/plugin-sdk/*`. -Деякі згенеровані інтерфейси допоміжних засобів `openclaw/plugin-sdk/` усе ще існують для -підтримки й сумісності вбудованих Plugin-ів, наприклад -`plugin-sdk/feishu-setup` або `plugin-sdk/zalo-setup`. Розглядайте їх як зарезервовані -поверхні, а не як типовий шаблон для нових сторонніх Plugin-ів. +Деякі згенеровані helper seam-и `openclaw/plugin-sdk/` усе ще існують для +підтримки bundled Plugin-ів і сумісності, наприклад +`plugin-sdk/feishu-setup` або `plugin-sdk/zalo-setup`. Ставтеся до них як до зарезервованих +поверхонь, а не як до типової моделі для нових сторонніх Plugin-ів. ## Контрольний список перед поданням -У **package.json** вказано правильні метадані `openclaw` +**package.json** має коректні метадані `openclaw` Маніфест **openclaw.plugin.json** присутній і валідний Точка входу використовує `defineChannelPluginEntry` або `definePluginEntry` Усі імпорти використовують цільові шляхи `plugin-sdk/` @@ -292,14 +294,14 @@ import { ... } from "openclaw/plugin-sdk"; Тести проходять (`pnpm test -- /my-plugin/`) `pnpm check` проходить (для Plugin-ів у репозиторії) -## Тестування бета-релізів +## Тестування бета-релізу -1. Стежте за тегами релізів GitHub у [openclaw/openclaw](https://github.com/openclaw/openclaw/releases) і підпишіться через `Watch` > `Releases`. Бета-теги мають вигляд `v2026.3.N-beta.1`. Ви також можете ввімкнути сповіщення для офіційного акаунта OpenClaw у X [@openclaw](https://x.com/openclaw) про анонси релізів. -2. Протестуйте свій Plugin на бета-тезі, щойно він з’явиться. Вікно до стабільного релізу зазвичай триває лише кілька годин. -3. Після тестування напишіть у треді вашого Plugin-а в Discord-каналі `plugin-forum`: `all good` або що саме зламалося. Якщо у вас ще немає треду, створіть його. -4. Якщо щось зламалося, створіть або оновіть issue з назвою `Beta blocker: - ` і застосуйте мітку `beta-blocker`. Додайте посилання на issue у свій тред. -5. Відкрийте PR до `main` з назвою `fix(): beta blocker - ` і додайте посилання на issue і в PR, і у свій Discord-тред. Учасники не можуть додавати мітки до PR, тому назва є сигналом на боці PR для мейнтейнерів та автоматизації. Блокери з PR будуть злиті; блокери без PR можуть усе одно потрапити в реліз. Мейнтейнери стежать за цими тредами під час бета-тестування. -6. Відсутність повідомлень означає, що все гаразд. Якщо ви пропустите це вікно, ваше виправлення, найімовірніше, потрапить до наступного циклу. +1. Стежте за тегами релізів GitHub у [openclaw/openclaw](https://github.com/openclaw/openclaw/releases) і підпишіться через `Watch` > `Releases`. Бета-теги мають вигляд `v2026.3.N-beta.1`. Ви також можете ввімкнути сповіщення для офіційного акаунта OpenClaw у X [@openclaw](https://x.com/openclaw) для анонсів релізів. +2. Протестуйте свій Plugin на бета-тегу, щойно він з’явиться. Вікно до стабільного релізу зазвичай триває лише кілька годин. +3. Після тестування напишіть у гілці вашого Plugin-а в каналі Discord `plugin-forum`: або `all good`, або що саме зламалося. Якщо у вас ще немає гілки, створіть її. +4. Якщо щось зламалося, відкрийте або оновіть issue з назвою `Beta blocker: - ` і застосуйте мітку `beta-blocker`. Додайте посилання на issue у вашу гілку. +5. Відкрийте PR до `main` з назвою `fix(): beta blocker - ` і додайте посилання на issue як у PR, так і у вашій гілці Discord. Учасники не можуть додавати мітки до PR, тому назва — це сигнал на боці PR для супроводжувачів і автоматизації. Блокери з PR будуть злиті; блокери без нього можуть усе одно потрапити в реліз. Супроводжувачі стежать за цими гілками під час бета-тестування. +6. Відсутність повідомлень означає, що все гаразд. Якщо ви пропустите вікно, ваш виправлений код, імовірно, потрапить у наступний цикл. ## Наступні кроки @@ -317,7 +319,7 @@ import { ... } from "openclaw/plugin-sdk"; TTS, пошук, subagent через api.runtime - Утиліти й шаблони тестування + Утиліти та шаблони тестування Повний довідник схеми маніфесту @@ -326,8 +328,8 @@ import { ... } from "openclaw/plugin-sdk"; ## Пов’язане -- [Plugin Architecture](/uk/plugins/architecture) — поглиблений огляд внутрішньої архітектури -- [SDK Overview](/uk/plugins/sdk-overview) — довідник Plugin SDK +- [Plugin Architecture](/uk/plugins/architecture) — глибоке занурення у внутрішню архітектуру +- [SDK Overview](/uk/plugins/sdk-overview) — довідник SDK Plugin-ів - [Manifest](/uk/plugins/manifest) — формат маніфесту plugin-а -- [Channel Plugins](/uk/plugins/sdk-channel-plugins) — створення Plugin-ів каналів -- [Provider Plugins](/uk/plugins/sdk-provider-plugins) — створення Plugin-ів провайдерів +- [Channel Plugins](/uk/plugins/sdk-channel-plugins) — створення channel plugin-ів +- [Provider Plugins](/uk/plugins/sdk-provider-plugins) — створення provider plugin-ів diff --git a/docs/uk/plugins/sdk-overview.md b/docs/uk/plugins/sdk-overview.md index 074ab02f2..f0fe1435d 100644 --- a/docs/uk/plugins/sdk-overview.md +++ b/docs/uk/plugins/sdk-overview.md @@ -1,16 +1,16 @@ --- read_when: - - Потрібно знати, з якого підшляху SDK імпортувати + - Вам потрібно знати, з якого підшляху SDK імпортувати - Вам потрібен довідник для всіх методів реєстрації в OpenClawPluginApi - Ви шукаєте конкретний експорт SDK sidebarTitle: SDK Overview summary: Карта імпортів, довідник API реєстрації та архітектура SDK title: Огляд Plugin SDK x-i18n: - generated_at: "2026-04-22T07:00:23Z" + generated_at: "2026-04-22T17:55:48Z" model: gpt-5.4 provider: openai - source_hash: e57019e6f9a7fed7842ac575e025b6db41d125f5fa9d0d1de03923fdb1f6bcc3 + source_hash: d010d8c8df684325b481e9e7b0709a079be4db10452fe64d29e2a2ccbbbf10e8 source_path: plugins/sdk-overview.md workflow: 15 --- @@ -18,13 +18,13 @@ x-i18n: # Огляд Plugin SDK Plugin SDK — це типізований контракт між plugins і ядром. Ця сторінка є -довідником щодо **що імпортувати** і **що можна реєструвати**. +довідником для **що імпортувати** і **що можна реєструвати**. - **Шукаєте покроковий посібник?** + **Шукаєте практичний посібник?** - Перший plugin? Почніть із [Getting Started](/uk/plugins/building-plugins) - - Channel plugin? Дивіться [Channel Plugins](/uk/plugins/sdk-channel-plugins) - - Provider plugin? Дивіться [Provider Plugins](/uk/plugins/sdk-provider-plugins) + - Plugin каналу? Дивіться [Channel Plugins](/uk/plugins/sdk-channel-plugins) + - Plugin провайдера? Дивіться [Provider Plugins](/uk/plugins/sdk-provider-plugins) ## Угода щодо імпорту @@ -36,35 +36,35 @@ import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry"; import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core"; ``` -Кожен підшлях — це невеликий самодостатній модуль. Це забезпечує швидкий -запуск і запобігає проблемам із циклічними залежностями. Для специфічних для channel -допоміжних засобів entry/build віддавайте перевагу `openclaw/plugin-sdk/channel-core`; `openclaw/plugin-sdk/core` -залишайте для ширшої поверхні-парасолі та спільних допоміжних засобів, таких як +Кожен підшлях — це невеликий самодостатній модуль. Це зберігає швидкий запуск і +запобігає проблемам із циклічними залежностями. Для специфічних для каналу +допоміжних засобів entry/build надавайте перевагу `openclaw/plugin-sdk/channel-core`; `openclaw/plugin-sdk/core` залишайте для +ширшої узагальненої поверхні та спільних допоміжних засобів, таких як `buildChannelConfigSchema`. -Не додавайте і не використовуйте зручні шви з назвами provider, такі як +Не додавайте й не покладайтеся на зручні шляхи, названі за провайдерами, такі як `openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`, `openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`, або -допоміжні шви з брендингом channel. Вбудовані plugins мають компонувати узагальнені -підшляхи SDK у власних barrel-файлах `api.ts` або `runtime-api.ts`, а ядро -має або використовувати ці локальні для plugin barrel-файли, або додавати вузький узагальнений SDK +допоміжні шляхи, брендовані каналами. Вбудовані plugins мають компонувати +узагальнені підшляхи SDK усередині власних barrel-файлів `api.ts` або `runtime-api.ts`, а ядро +має або використовувати ці локальні barrel-файли plugin, або додавати вузький узагальнений SDK контракт, коли потреба справді є міжканальною. -Згенерована карта експортів усе ще містить невеликий набір допоміжних -швів вбудованих plugins, таких як `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`, +Згенерована карта експортів усе ще містить невеликий набір допоміжних шляхів +вбудованих plugins, таких як `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`, `plugin-sdk/zalo`, `plugin-sdk/zalo-setup` і `plugin-sdk/matrix*`. Ці -підшляхи існують лише для супроводу вбудованих plugins і сумісності; вони -навмисно пропущені в загальній таблиці нижче і не є рекомендованим +підшляхи існують лише для підтримки та сумісності вбудованих plugins; вони +навмисно не включені до поширеної таблиці нижче і не є рекомендованим шляхом імпорту для нових сторонніх plugins. ## Довідник підшляхів -Найуживаніші підшляхи, згруповані за призначенням. Згенерований повний список -із понад 200 підшляхів міститься в `scripts/lib/plugin-sdk-entrypoints.json`. +Найуживаніші підшляхи, згруповані за призначенням. Згенерований повний список із +понад 200 підшляхів знаходиться в `scripts/lib/plugin-sdk-entrypoints.json`. Зарезервовані допоміжні підшляхи вбудованих plugins усе ще з’являються в цьому згенерованому списку. -Ставтеся до них як до поверхонь деталей реалізації/сумісності, якщо тільки сторінка документації -явно не позначає одну з них як публічну. +Розглядайте їх як поверхні деталей реалізації/сумісності, якщо лише сторінка документації +не просуває якийсь із них явно як публічний. ### Точка входу plugin @@ -76,85 +76,85 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core"; | `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` | - + | Subpath | Ключові експорти | | --- | --- | | `plugin-sdk/channel-core` | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` | - | `plugin-sdk/config-schema` | Експорт кореневої Zod-схеми `openclaw.json` (`OpenClawSchema`) | + | `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` | Спільні допоміжні засоби майстра налаштування, allowlist-підказки, побудовники статусу налаштування | | `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-core` | Допоміжні засоби для мультиакаунтної конфігурації/action-gate, допоміжні засоби fallback для акаунта за замовчуванням | | `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, допоміжні засоби нормалізації account-id | - | `plugin-sdk/account-resolution` | Пошук облікового запису + допоміжні засоби запасного використання значення за замовчуванням | - | `plugin-sdk/account-helpers` | Вузькі допоміжні засоби для списку облікових записів/дій з обліковими записами | + | `plugin-sdk/account-resolution` | Пошук акаунта + допоміжні засоби fallback до значення за замовчуванням | + | `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` | Типи схеми конфігурації channel | - | `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації/валідації користувацьких команд Telegram із запасним використанням контракту вбудованого plugin | - | `plugin-sdk/command-gating` | Вузькі допоміжні засоби шлюзування авторизації команд | + | `plugin-sdk/channel-config-schema` | Типи схеми конфігурації каналу | + | `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації/валідації користувацьких команд Telegram із fallback на вбудований контракт | + | `plugin-sdk/command-gating` | Вузькі допоміжні засоби шлюзу авторизації команд | | `plugin-sdk/channel-policy` | `resolveChannelGroupRequireMention` | - | `plugin-sdk/channel-lifecycle` | `createAccountStatusSink`, допоміжні засоби життєвого циклу/фіналізації чернетки потоку | - | `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби маршрутизації вхідних даних + побудови envelope | + | `plugin-sdk/channel-lifecycle` | `createAccountStatusSink`, допоміжні засоби життєвого циклу/фіналізації чернеток потоків | + | `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби маршрутизації вхідних повідомлень + побудови envelope | | `plugin-sdk/inbound-reply-dispatch` | Спільні допоміжні засоби запису та диспетчеризації вхідних відповідей | - | `plugin-sdk/messaging-targets` | Допоміжні засоби розбору/зіставлення target | - | `plugin-sdk/outbound-media` | Спільні допоміжні засоби завантаження вихідних медіа | - | `plugin-sdk/outbound-runtime` | Допоміжні засоби вихідної ідентичності, делегата надсилання та планування payload | + | `plugin-sdk/messaging-targets` | Допоміжні засоби розбору/зіставлення цілей | + | `plugin-sdk/outbound-media` | Спільні допоміжні засоби завантаження вихідного медіа | + | `plugin-sdk/outbound-runtime` | Допоміжні засоби вихідної ідентичності, send delegate і планування 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/thread-bindings-runtime` | Допоміжні засоби життєвого циклу прив’язок потоків і adapter | + | `plugin-sdk/agent-media-payload` | Застарілий побудовник медіа payload агента | + | `plugin-sdk/conversation-runtime` | Допоміжні засоби прив’язки conversation/thread, pairing і configured-binding | | `plugin-sdk/runtime-config-snapshot` | Допоміжний засіб знімка конфігурації runtime | - | `plugin-sdk/runtime-group-policy` | Допоміжні засоби розв’язання групових політик runtime | - | `plugin-sdk/channel-status` | Спільні допоміжні засоби знімка/підсумку статусу channel | - | `plugin-sdk/channel-config-primitives` | Вузькі примітиви схеми конфігурації channel | - | `plugin-sdk/channel-config-writes` | Допоміжні засоби авторизації запису конфігурації channel | - | `plugin-sdk/channel-plugin-common` | Спільні prelude-експорти channel plugin | + | `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 каналу | | `plugin-sdk/allowlist-config-edit` | Допоміжні засоби редагування/читання конфігурації allowlist | - | `plugin-sdk/group-access` | Спільні допоміжні засоби ухвалення рішень щодо доступу груп | + | `plugin-sdk/group-access` | Спільні допоміжні засоби визначення group-access | | `plugin-sdk/direct-dm` | Спільні допоміжні засоби auth/guard для прямих DM | - | `plugin-sdk/interactive-runtime` | Допоміжні засоби семантичного подання повідомлень, доставки та застарілих інтерактивних відповідей. Дивіться [Message Presentation](/uk/plugins/message-presentation) | - | `plugin-sdk/channel-inbound` | Barrel сумісності для debounce вхідних даних, зіставлення згадок, допоміжних засобів політики згадок і допоміжних засобів envelope | - | `plugin-sdk/channel-mention-gating` | Вузькі допоміжні засоби політики згадок без ширшої поверхні runtime вхідних даних | - | `plugin-sdk/channel-location` | Допоміжні засоби контексту й форматування розташування channel | - | `plugin-sdk/channel-logging` | Допоміжні засоби логування channel для відкидання вхідних даних і збоїв typing/ack | - | `plugin-sdk/channel-send-result` | Типи результату відповіді | - | `plugin-sdk/channel-actions` | Допоміжні засоби дій із повідомленнями channel, а також застарілі допоміжні засоби нативної схеми, збережені для сумісності plugin | - | `plugin-sdk/channel-targets` | Допоміжні засоби розбору/зіставлення target | - | `plugin-sdk/channel-contract` | Типи контракту channel | - | `plugin-sdk/channel-feedback` | Підключення feedback/reaction | - | `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби контракту секретів, такі як `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, і типи target секретів | + | `plugin-sdk/interactive-runtime` | Семантичне представлення повідомлень, доставка та застарілі допоміжні засоби interactive reply. Див. [Message Presentation](/uk/plugins/message-presentation) | + | `plugin-sdk/channel-inbound` | Compatibility barrel для debounce вхідних повідомлень, зіставлення згадок, допоміжних засобів mention-policy і допоміжних засобів envelope | + | `plugin-sdk/channel-mention-gating` | Вузькі допоміжні засоби mention-policy без ширшої поверхні inbound runtime | + | `plugin-sdk/channel-location` | Допоміжні засоби контексту місцезнаходження каналу та форматування | + | `plugin-sdk/channel-logging` | Допоміжні засоби логування каналу для відкинутих вхідних повідомлень і збоїв typing/ack | + | `plugin-sdk/channel-send-result` | Типи результатів відповіді | + | `plugin-sdk/channel-actions` | Допоміжні засоби message-action каналу, а також застарілі власні допоміжні засоби схем, збережені для сумісності plugins | + | `plugin-sdk/channel-targets` | Допоміжні засоби розбору/зіставлення цілей | + | `plugin-sdk/channel-contract` | Типи контракту каналу | + | `plugin-sdk/channel-feedback` | Зв’язування feedback/reaction | + | `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби secret-контракту, такі як `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, і типи цілей секретів | - + | Subpath | Ключові експорти | | --- | --- | | `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` | - | `plugin-sdk/provider-setup` | Кураторські допоміжні засоби налаштування локального/self-hosted provider | - | `plugin-sdk/self-hosted-provider-setup` | Сфокусовані допоміжні засоби налаштування self-hosted provider, сумісного з OpenAI | - | `plugin-sdk/cli-backend` | Значення за замовчуванням для бекенда CLI + константи watchdog | - | `plugin-sdk/provider-auth-runtime` | Допоміжні засоби runtime для розв’язання API-key для provider plugins | - | `plugin-sdk/provider-auth-api-key` | Допоміжні засоби onboarding/profile-write для API-key, такі як `upsertApiKeyProfile` | - | `plugin-sdk/provider-auth-result` | Стандартний побудовник результату auth OAuth | - | `plugin-sdk/provider-auth-login` | Спільні допоміжні засоби інтерактивного входу для provider plugins | - | `plugin-sdk/provider-env-vars` | Допоміжні засоби пошуку env var auth provider | + | `plugin-sdk/provider-setup` | Кураторські допоміжні засоби налаштування локальних/self-hosted провайдерів | + | `plugin-sdk/self-hosted-provider-setup` | Сфокусовані допоміжні засоби налаштування self-hosted провайдерів, сумісних з OpenAI | + | `plugin-sdk/cli-backend` | Значення за замовчуванням для CLI backend + константи watchdog | + | `plugin-sdk/provider-auth-runtime` | Допоміжні засоби визначення API-ключа в runtime для plugins провайдерів | + | `plugin-sdk/provider-auth-api-key` | Допоміжні засоби онбордингу/запису профілю API-ключа, такі як `upsertApiKeyProfile` | + | `plugin-sdk/provider-auth-result` | Стандартний побудовник результату OAuth auth | + | `plugin-sdk/provider-auth-login` | Спільні допоміжні засоби інтерактивного входу для plugins провайдерів | + | `plugin-sdk/provider-env-vars` | Допоміжні засоби пошуку auth env-var для провайдерів | | `plugin-sdk/provider-auth` | `createProviderApiKeyAuthMethod`, `ensureApiKeyFromOptionEnvOrPrompt`, `upsertAuthProfile`, `upsertApiKeyProfile`, `writeOAuthCredentials` | - | `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні побудовники політик replay, допоміжні засоби endpoint provider і допоміжні засоби нормалізації model-id, такі як `normalizeNativeXaiModelId` | + | `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні побудовники replay-policy, допоміжні засоби endpoint провайдера та допоміжні засоби нормалізації model-id, такі як `normalizeNativeXaiModelId` | | `plugin-sdk/provider-catalog-shared` | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` | - | `plugin-sdk/provider-http` | Узагальнені допоміжні засоби HTTP/можливостей endpoint provider | + | `plugin-sdk/provider-http` | Узагальнені допоміжні засоби HTTP/можливостей endpoint провайдера | | `plugin-sdk/provider-web-fetch-contract` | Вузькі допоміжні засоби контракту конфігурації/вибору web-fetch, такі як `enablePluginInConfig` і `WebFetchProviderPlugin` | - | `plugin-sdk/provider-web-fetch` | Допоміжні засоби реєстрації/кешу provider web-fetch | - | `plugin-sdk/provider-web-search-config-contract` | Вузькі допоміжні засоби конфігурації/облікових даних web-search для provider, яким не потрібне підключення enable plugin | - | `plugin-sdk/provider-web-search-contract` | Вузькі допоміжні засоби контракту конфігурації/облікових даних web-search, такі як `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і scoped setter/getter облікових даних | - | `plugin-sdk/provider-web-search` | Допоміжні засоби реєстрації/кешу/runtime provider web-search | + | `plugin-sdk/provider-web-fetch` | Допоміжні засоби реєстрації/кешування web-fetch провайдерів | + | `plugin-sdk/provider-web-search-config-contract` | Вузькі допоміжні засоби конфігурації/облікових даних web-search для провайдерів, яким не потрібне зв’язування увімкнення plugin | + | `plugin-sdk/provider-web-search-contract` | Вузькі допоміжні засоби контракту конфігурації/облікових даних web-search, такі як `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і setter/getter облікових даних з обмеженою областю дії | + | `plugin-sdk/provider-web-search` | Допоміжні засоби реєстрації/кешування/runtime для 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 і спільні допоміжні засоби обгорток для Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot | - | `plugin-sdk/provider-transport-runtime` | Допоміжні засоби нативного транспорту provider, такі як guarded fetch, перетворення транспортних повідомлень і потоки подій транспорту з можливістю запису | - | `plugin-sdk/provider-onboard` | Допоміжні засоби виправлення конфігурації onboarding | + | `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, типи stream wrapper і спільні допоміжні засоби wrapper для Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot | + | `plugin-sdk/provider-transport-runtime` | Допоміжні засоби нативного транспортного рівня провайдера, такі як guarded fetch, перетворення транспортних повідомлень і записувані потоки транспортних подій | + | `plugin-sdk/provider-onboard` | Допоміжні засоби patch конфігурації онбордингу | | `plugin-sdk/global-singleton` | Допоміжні засоби process-local singleton/map/cache | @@ -163,119 +163,119 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core"; | --- | --- | | `plugin-sdk/command-auth` | `resolveControlCommandGate`, допоміжні засоби реєстру команд, допоміжні засоби авторизації відправника | | `plugin-sdk/command-status` | Побудовники повідомлень команд/довідки, такі як `buildCommandsMessagePaginated` і `buildHelpMessage` | - | `plugin-sdk/approval-auth-runtime` | Допоміжні засоби розв’язання approver і auth дій у тому самому chat | + | `plugin-sdk/approval-auth-runtime` | Визначення approver і допоміжні засоби action-auth для того самого чату | | `plugin-sdk/approval-client-runtime` | Допоміжні засоби профілю/фільтра native exec approval | - | `plugin-sdk/approval-delivery-runtime` | Адаптери можливостей/доставки native approval | - | `plugin-sdk/approval-gateway-runtime` | Спільний допоміжний засіб розв’язання gateway approval | - | `plugin-sdk/approval-handler-adapter-runtime` | Полегшені допоміжні засоби завантаження адаптера native approval для гарячих точок входу channel | - | `plugin-sdk/approval-handler-runtime` | Ширші допоміжні засоби runtime для обробника approval; віддавайте перевагу вужчим швам adapter/gateway, коли їх достатньо | - | `plugin-sdk/approval-native-runtime` | Допоміжні засоби target native approval + прив’язки облікового запису | - | `plugin-sdk/approval-reply-runtime` | Допоміжні засоби payload відповіді на exec/plugin approval | - | `plugin-sdk/command-auth-native` | Native command auth + допоміжні засоби target native session | + | `plugin-sdk/approval-delivery-runtime` | Native adapter можливостей/доставки approval | + | `plugin-sdk/approval-gateway-runtime` | Спільний допоміжний засіб визначення approval gateway | + | `plugin-sdk/approval-handler-adapter-runtime` | Легковагові допоміжні засоби завантаження native adapter approval для гарячих channel entrypoint | + | `plugin-sdk/approval-handler-runtime` | Ширші допоміжні засоби approval handler runtime; надавайте перевагу вужчим adapter/gateway seams, коли їх достатньо | + | `plugin-sdk/approval-native-runtime` | Допоміжні засоби native approval target + прив’язки акаунта | + | `plugin-sdk/approval-reply-runtime` | Допоміжні засоби payload відповіді exec/plugin approval | + | `plugin-sdk/command-auth-native` | Native command auth + native допоміжні засоби session-target | | `plugin-sdk/command-detection` | Спільні допоміжні засоби виявлення команд | - | `plugin-sdk/command-surface` | Допоміжні засоби нормалізації тіла команди та surface команди | + | `plugin-sdk/command-surface` | Нормалізація command-body і допоміжні засоби command-surface | | `plugin-sdk/allow-from` | `formatAllowFromLowercase` | - | `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби збирання secret-contract для поверхонь secret channel/plugin | - | `plugin-sdk/secret-ref-runtime` | Вузькі допоміжні засоби типізації `coerceSecretRef` і SecretRef для розбору secret-contract/config | - | `plugin-sdk/security-runtime` | Спільні допоміжні засоби довіри, DM gating, зовнішнього вмісту та збирання секретів | - | `plugin-sdk/ssrf-policy` | Допоміжні засоби політики SSRF для allowlist хостів і приватної мережі | - | `plugin-sdk/ssrf-dispatcher` | Вузькі допоміжні засоби pinned-dispatcher без широкої поверхні runtime інфраструктури | - | `plugin-sdk/ssrf-runtime` | Pinned-dispatcher, fetch із захистом SSRF і допоміжні засоби політики SSRF | - | `plugin-sdk/secret-input` | Допоміжні засоби розбору secret input | - | `plugin-sdk/webhook-ingress` | Допоміжні засоби запиту/target Webhook | - | `plugin-sdk/webhook-request-guards` | Допоміжні засоби розміру тіла запиту/тайм-ауту | + | `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби збирання secret-контракту для поверхонь секретів channel/plugin | + | `plugin-sdk/secret-ref-runtime` | Вузькі допоміжні засоби `coerceSecretRef` і типізації SecretRef для парсингу secret-контракту/конфігурації | + | `plugin-sdk/security-runtime` | Спільні допоміжні засоби trust, DM gating, external-content і збирання секретів | + | `plugin-sdk/ssrf-policy` | Допоміжні засоби політики SSRF для host allowlist і приватних мереж | + | `plugin-sdk/ssrf-dispatcher` | Вузькі допоміжні засоби pinned-dispatcher без широкої infra runtime surface | + | `plugin-sdk/ssrf-runtime` | Pinned-dispatcher, fetch із SSRF-захистом і допоміжні засоби політики SSRF | + | `plugin-sdk/secret-input` | Допоміжні засоби парсингу secret input | + | `plugin-sdk/webhook-ingress` | Допоміжні засоби Webhook request/target | + | `plugin-sdk/webhook-request-guards` | Допоміжні засоби для розміру body request/timeout | | Subpath | Ключові експорти | | --- | --- | | `plugin-sdk/runtime` | Широкі допоміжні засоби runtime/logging/backup/встановлення plugin | - | `plugin-sdk/runtime-env` | Вузькі допоміжні засоби середовища runtime, logger, timeout, retry і backoff | - | `plugin-sdk/channel-runtime-context` | Узагальнені допоміжні засоби реєстрації та пошуку runtime-context channel | + | `plugin-sdk/runtime-env` | Вузькі допоміжні засоби runtime env, logger, timeout, retry і backoff | + | `plugin-sdk/channel-runtime-context` | Узагальнені допоміжні засоби реєстрації та пошуку channel runtime-context | | `plugin-sdk/runtime-store` | `createPluginRuntimeStore` | - | `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби команд/hook/http/interactive plugin | - | `plugin-sdk/hook-runtime` | Спільні допоміжні засоби конвеєра Webhook/внутрішніх hook | - | `plugin-sdk/lazy-runtime` | Допоміжні засоби lazy імпорту/прив’язки runtime, такі як `createLazyRuntimeModule`, `createLazyRuntimeMethod` і `createLazyRuntimeSurface` | + | `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби command/hook/http/interactive для plugin | + | `plugin-sdk/hook-runtime` | Спільні допоміжні засоби pipeline webhook/internal hook | + | `plugin-sdk/lazy-runtime` | Допоміжні засоби lazy runtime import/binding, такі як `createLazyRuntimeModule`, `createLazyRuntimeMethod` і `createLazyRuntimeSurface` | | `plugin-sdk/process-runtime` | Допоміжні засоби exec процесів | - | `plugin-sdk/cli-runtime` | Допоміжні засоби форматування CLI, очікування та версії | - | `plugin-sdk/gateway-runtime` | Допоміжні засоби клієнта Gateway і виправлення статусу channel | - | `plugin-sdk/config-runtime` | Допоміжні засоби завантаження/запису config | - | `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації назви/опису команди Telegram і перевірки дублікатів/конфліктів, навіть коли поверхня контракту вбудованого Telegram недоступна | - | `plugin-sdk/text-autolink-runtime` | Виявлення автопосилань на файлові посилання без широкого barrel `text-runtime` | - | `plugin-sdk/approval-runtime` | Допоміжні засоби exec/plugin approval, побудовники можливостей approval, допоміжні засоби auth/profile, native routing/runtime | - | `plugin-sdk/reply-runtime` | Спільні допоміжні засоби runtime для вхідних даних/відповідей, chunking, dispatch, Heartbeat, planner відповіді | + | `plugin-sdk/cli-runtime` | Допоміжні засоби форматування CLI, очікування і версій | + | `plugin-sdk/gateway-runtime` | Допоміжні засоби клієнта Gateway і patch статусу каналу | + | `plugin-sdk/config-runtime` | Допоміжні засоби завантаження/запису конфігурації | + | `plugin-sdk/telegram-command-config` | Нормалізація імені/опису команд Telegram і перевірки дублікатів/конфліктів, навіть коли поверхня контракту вбудованого Telegram недоступна | + | `plugin-sdk/text-autolink-runtime` | Виявлення autolink посилань на файли без широкого barrel `text-runtime` | + | `plugin-sdk/approval-runtime` | Допоміжні засоби exec/plugin approval, побудовники approval-capability, допоміжні засоби auth/profile, native routing/runtime helpers | + | `plugin-sdk/reply-runtime` | Спільні допоміжні засоби inbound/reply runtime, chunking, dispatch, Heartbeat, планувальник відповіді | | `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні засоби dispatch/finalize відповіді | - | `plugin-sdk/reply-history` | Спільні допоміжні засоби коротковіконної історії відповідей, такі як `buildHistoryContext`, `recordPendingHistoryEntry` і `clearHistoryEntriesIfEnabled` | + | `plugin-sdk/reply-history` | Спільні допоміжні засоби short-window reply-history, такі як `buildHistoryContext`, `recordPendingHistoryEntry` і `clearHistoryEntriesIfEnabled` | | `plugin-sdk/reply-reference` | `createReplyReferencePlanner` | - | `plugin-sdk/reply-chunking` | Вузькі допоміжні засоби chunking тексту/markdown | - | `plugin-sdk/session-store-runtime` | Допоміжні засоби шляху сховища session + `updated-at` | - | `plugin-sdk/state-paths` | Допоміжні засоби шляхів до каталогів state/OAuth | - | `plugin-sdk/routing` | Допоміжні засоби route/session-key/прив’язки облікового запису, такі як `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` | - | `plugin-sdk/status-helpers` | Спільні допоміжні засоби зведення статусу channel/account, значення runtime-state за замовчуванням і допоміжні засоби метаданих issue | - | `plugin-sdk/target-resolver-runtime` | Спільні допоміжні засоби розв’язання target | + | `plugin-sdk/reply-chunking` | Вузькі допоміжні засоби chunking тексту/Markdown | + | `plugin-sdk/session-store-runtime` | Допоміжні засоби шляху session store + updated-at | + | `plugin-sdk/state-paths` | Допоміжні засоби шляхів директорій State/OAuth | + | `plugin-sdk/routing` | Допоміжні засоби прив’язки route/session-key/акаунта, такі як `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` | + | `plugin-sdk/status-helpers` | Спільні допоміжні засоби підсумку статусу каналу/акаунта, значення за замовчуванням для runtime-state і допоміжні засоби метаданих issues | + | `plugin-sdk/target-resolver-runtime` | Спільні допоміжні засоби target 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` | Витягування канонічних полів target надсилання з аргументів tool | - | `plugin-sdk/temp-path` | Спільні допоміжні засоби шляхів до тимчасових завантажень | - | `plugin-sdk/logging-core` | Допоміжні засоби logger підсистеми та редагування | + | `plugin-sdk/request-url` | Витягування рядкових URL з fetch/request-подібних вхідних даних | + | `plugin-sdk/run-command` | Запускач команд із таймером і нормалізованими результатами stdout/stderr | + | `plugin-sdk/param-readers` | Поширені readers параметрів tool/CLI | + | `plugin-sdk/tool-payload` | Витягування нормалізованих payload із об’єктів результату tool | + | `plugin-sdk/tool-send` | Витягування канонічних полів send target з аргументів tool | + | `plugin-sdk/temp-path` | Спільні допоміжні засоби шляхів тимчасового завантаження | + | `plugin-sdk/logging-core` | Допоміжні засоби subsystem logger і редагування чутливих даних | | `plugin-sdk/markdown-table-runtime` | Допоміжні засоби режиму таблиць Markdown | - | `plugin-sdk/json-store` | Невеликі допоміжні засоби читання/запису стану JSON | + | `plugin-sdk/json-store` | Невеликі допоміжні засоби читання/запису JSON state | | `plugin-sdk/file-lock` | Допоміжні засоби повторно вхідного file-lock | - | `plugin-sdk/persistent-dedupe` | Допоміжні засоби кешу dedupe з бекінгом на диску | - | `plugin-sdk/acp-runtime` | Допоміжні засоби runtime/session ACP і dispatch відповідей | - | `plugin-sdk/acp-binding-resolve-runtime` | Лише читання для розв’язання прив’язок ACP без імпортів запуску життєвого циклу | - | `plugin-sdk/agent-config-primitives` | Вузькі примітиви config-schema runtime агента | - | `plugin-sdk/boolean-param` | Нестрогий читач boolean-параметрів | - | `plugin-sdk/dangerous-name-runtime` | Допоміжні засоби розв’язання збігів небезпечних назв | - | `plugin-sdk/device-bootstrap` | Допоміжні засоби початкового запуску пристрою та токенів pairing | + | `plugin-sdk/persistent-dedupe` | Допоміжні засоби dedupe-кешу з дисковим збереженням | + | `plugin-sdk/acp-runtime` | Допоміжні засоби ACP runtime/session і reply-dispatch | + | `plugin-sdk/acp-binding-resolve-runtime` | Розв’язання прив’язок ACP лише для читання без імпортів запуску життєвого циклу | + | `plugin-sdk/agent-config-primitives` | Вузькі примітиви схеми конфігурації agent runtime | + | `plugin-sdk/boolean-param` | Нестрогий reader булевого параметра | + | `plugin-sdk/dangerous-name-runtime` | Допоміжні засоби визначення збігів небезпечних імен | + | `plugin-sdk/device-bootstrap` | Допоміжні засоби bootstrap пристрою і токенів pairing | | `plugin-sdk/extension-shared` | Спільні примітиви допоміжних засобів passive-channel, status і ambient proxy | - | `plugin-sdk/models-provider-runtime` | Допоміжні засоби відповіді command/provider для `/models` | - | `plugin-sdk/skill-commands-runtime` | Допоміжні засоби переліку команд Skill | + | `plugin-sdk/models-provider-runtime` | Допоміжні засоби відповіді `/models` command/provider | + | `plugin-sdk/skill-commands-runtime` | Допоміжні засоби списку команд Skills | | `plugin-sdk/native-command-registry` | Допоміжні засоби реєстру/build/serialize native command | - | `plugin-sdk/agent-harness` | Експериментальна поверхня trusted-plugin для низькорівневих harness агента: типи harness, допоміжні засоби steer/abort активного запуску, міст інструментів OpenClaw і утиліти результатів спроб | - | `plugin-sdk/provider-zai-endpoint` | Допоміжні засоби виявлення endpoint Z.AI | + | `plugin-sdk/agent-harness` | Експериментальна surface trusted-plugin для низькорівневих harness агента: типи harness, допоміжні засоби steer/abort активного запуску, місток tool OpenClaw і утиліти результатів attempt | + | `plugin-sdk/provider-zai-endpoint` | Допоміжні засоби виявлення endpoint Z.A.I | | `plugin-sdk/infra-runtime` | Допоміжні засоби системних подій/Heartbeat | | `plugin-sdk/collection-runtime` | Невеликі допоміжні засоби обмеженого кешу | | `plugin-sdk/diagnostic-runtime` | Допоміжні засоби діагностичних прапорців і подій | - | `plugin-sdk/error-runtime` | Граф помилок, форматування, спільні допоміжні засоби класифікації помилок, `isApprovalNotFoundError` | - | `plugin-sdk/fetch-runtime` | Обгорнутий fetch, proxy і допоміжні засоби pinned lookup | + | `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` | Читач тіла відповіді з обмеженням без широкої поверхні runtime медіа | - | `plugin-sdk/session-binding-runtime` | Поточний стан прив’язки conversation без routing configured binding або сховищ pairing | - | `plugin-sdk/session-store-runtime` | Допоміжні засоби читання session-store без широких імпортів запису/обслуговування config | - | `plugin-sdk/context-visibility-runtime` | Розв’язання видимості контексту та фільтрація додаткового контексту без широких імпортів config/security | - | `plugin-sdk/string-coerce-runtime` | Вузькі допоміжні засоби приведення й нормалізації примітивних record/рядків без імпортів markdown/logging | - | `plugin-sdk/host-runtime` | Допоміжні засоби нормалізації hostname і хоста SCP | + | `plugin-sdk/response-limit-runtime` | Reader body відповіді з обмеженням без широкої media runtime surface | + | `plugin-sdk/session-binding-runtime` | Поточний стан прив’язки conversation без routing configured binding або pairing stores | + | `plugin-sdk/session-store-runtime` | Допоміжні засоби читання session-store без широких імпортів запису/обслуговування конфігурації | + | `plugin-sdk/context-visibility-runtime` | Допоміжні засоби визначення видимості контексту і фільтрації додаткового контексту без широких імпортів config/security | + | `plugin-sdk/string-coerce-runtime` | Вузькі допоміжні засоби приведення і нормалізації primitive record/string без імпортів markdown/logging | + | `plugin-sdk/host-runtime` | Допоміжні засоби нормалізації hostname і SCP host | | `plugin-sdk/retry-runtime` | Допоміжні засоби конфігурації retry і запуску retry | - | `plugin-sdk/agent-runtime` | Допоміжні засоби каталогу/ідентичності/workspace агента | - | `plugin-sdk/directory-runtime` | Запит/усунення дублікатів каталогів із бекінгом на config | + | `plugin-sdk/agent-runtime` | Допоміжні засоби директорії/ідентичності/workspace агента | + | `plugin-sdk/directory-runtime` | Запит/усунення дублікатів директорій на основі конфігурації | | `plugin-sdk/keyed-async-queue` | `KeyedAsyncQueue` | | Subpath | Ключові експорти | | --- | --- | - | `plugin-sdk/media-runtime` | Спільні допоміжні засоби fetch/transform/store медіа, а також побудовники payload медіа | - | `plugin-sdk/media-generation-runtime` | Спільні допоміжні засоби failover медіагенерації, вибору кандидатів і повідомлень про відсутню модель | - | `plugin-sdk/media-understanding` | Типи provider media understanding, а також орієнтовані на provider експорти допоміжних засобів для зображень/аудіо | - | `plugin-sdk/text-runtime` | Спільні допоміжні засоби text/markdown/logging, такі як видалення тексту, видимого асистенту, допоміжні засоби render/chunking/table для markdown, допоміжні засоби редагування, допоміжні засоби тегів директив і утиліти безпечного тексту | + | `plugin-sdk/media-runtime` | Спільні допоміжні засоби fetch/transform/store для медіа, а також побудовники медіа payload | + | `plugin-sdk/media-generation-runtime` | Спільні допоміжні засоби failover для генерації медіа, вибору кандидатів і повідомлень про відсутню модель | + | `plugin-sdk/media-understanding` | Типи провайдерів розуміння медіа, а також provider-facing експорти допоміжних засобів зображень/аудіо | + | `plugin-sdk/text-runtime` | Спільні допоміжні засоби text/Markdown/logging, такі як вилучення тексту, видимого асистенту, допоміжні засоби render/chunking/table для Markdown, допоміжні засоби редагування чутливих даних, допоміжні засоби тегів директив і утиліти безпечного тексту | | `plugin-sdk/text-chunking` | Допоміжний засіб chunking вихідного тексту | - | `plugin-sdk/speech` | Типи speech provider, а також орієнтовані на provider допоміжні засоби директив, реєстру та валідації | - | `plugin-sdk/speech-core` | Спільні допоміжні засоби типів, реєстру, директив і нормалізації для speech provider | - | `plugin-sdk/realtime-transcription` | Типи provider транскрибування в реальному часі та допоміжні засоби реєстру | - | `plugin-sdk/realtime-voice` | Типи provider голосу в реальному часі та допоміжні засоби реєстру | - | `plugin-sdk/image-generation` | Типи provider генерації зображень | - | `plugin-sdk/image-generation-core` | Спільні допоміжні засоби типів, failover, auth і реєстру для генерації зображень | - | `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` | Допоміжні засоби реєстру target Webhook і встановлення route | + | `plugin-sdk/speech` | Типи speech-провайдерів, а також provider-facing допоміжні засоби directive, registry і validation | + | `plugin-sdk/speech-core` | Спільні типи speech-провайдерів, registry, directive і допоміжні засоби нормалізації | + | `plugin-sdk/realtime-transcription` | Типи провайдерів realtime transcription і допоміжні засоби registry | + | `plugin-sdk/realtime-voice` | Типи провайдерів realtime voice і допоміжні засоби registry | + | `plugin-sdk/image-generation` | Типи провайдерів генерації зображень | + | `plugin-sdk/image-generation-core` | Спільні типи генерації зображень, failover, auth і допоміжні засоби registry | + | `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 target і встановлення route | | `plugin-sdk/webhook-path` | Допоміжні засоби нормалізації шляху Webhook | - | `plugin-sdk/web-media` | Спільні допоміжні засоби завантаження віддалених/локальних медіа | + | `plugin-sdk/web-media` | Спільні допоміжні засоби завантаження віддаленого/локального медіа | | `plugin-sdk/zod` | Повторно експортований `zod` для користувачів plugin SDK | | `plugin-sdk/testing` | `installCommonResolveTargetErrorCases`, `shouldAckReaction` | @@ -283,110 +283,109 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core"; | Subpath | Ключові експорти | | --- | --- | - | `plugin-sdk/memory-core` | Поверхня допоміжних засобів bundled `memory-core` для допоміжних засобів manager/config/file/CLI | - | `plugin-sdk/memory-core-engine-runtime` | Фасад runtime індексації/пошуку Memory | + | `plugin-sdk/memory-core` | Поверхня допоміжних засобів вбудованого memory-core для manager/config/file/CLI helpers | + | `plugin-sdk/memory-core-engine-runtime` | Runtime facade індексу/пошуку Memory | | `plugin-sdk/memory-core-host-engine-foundation` | Експорти foundation engine хоста Memory | - | `plugin-sdk/memory-core-host-engine-embeddings` | Контракти embedding хоста Memory, доступ до реєстру, локальний provider і узагальнені пакетні/віддалені допоміжні засоби | + | `plugin-sdk/memory-core-host-engine-embeddings` | Контракти embedding хоста Memory, доступ до registry, локальний provider і узагальнені допоміжні засоби batch/remote | | `plugin-sdk/memory-core-host-engine-qmd` | Експорти QMD engine хоста Memory | | `plugin-sdk/memory-core-host-engine-storage` | Експорти storage engine хоста Memory | - | `plugin-sdk/memory-core-host-multimodal` | Мультимодальні допоміжні засоби хоста Memory | - | `plugin-sdk/memory-core-host-query` | Допоміжні засоби запитів хоста Memory | - | `plugin-sdk/memory-core-host-secret` | Допоміжні засоби секретів хоста Memory | + | `plugin-sdk/memory-core-host-multimodal` | Допоміжні засоби multimodal хоста Memory | + | `plugin-sdk/memory-core-host-query` | Допоміжні засоби query хоста Memory | + | `plugin-sdk/memory-core-host-secret` | Допоміжні засоби secret хоста Memory | | `plugin-sdk/memory-core-host-events` | Допоміжні засоби журналу подій хоста Memory | | `plugin-sdk/memory-core-host-status` | Допоміжні засоби статусу хоста Memory | | `plugin-sdk/memory-core-host-runtime-cli` | Допоміжні засоби CLI runtime хоста Memory | | `plugin-sdk/memory-core-host-runtime-core` | Допоміжні засоби core runtime хоста Memory | - | `plugin-sdk/memory-core-host-runtime-files` | Допоміжні засоби файлів/runtime хоста Memory | - | `plugin-sdk/memory-host-core` | Вендорно-нейтральний псевдонім для допоміжних засобів core runtime хоста Memory | - | `plugin-sdk/memory-host-events` | Вендорно-нейтральний псевдонім для допоміжних засобів журналу подій хоста Memory | - | `plugin-sdk/memory-host-files` | Вендорно-нейтральний псевдонім для допоміжних засобів файлів/runtime хоста Memory | - | `plugin-sdk/memory-host-markdown` | Спільні допоміжні засоби керованого markdown для plugins, суміжних із memory | - | `plugin-sdk/memory-host-search` | Фасад runtime Active Memory для доступу до search-manager | - | `plugin-sdk/memory-host-status` | Вендорно-нейтральний псевдонім для допоміжних засобів статусу хоста Memory | - | `plugin-sdk/memory-lancedb` | Поверхня допоміжних засобів bundled `memory-lancedb` | + | `plugin-sdk/memory-core-host-runtime-files` | Допоміжні засоби file/runtime хоста Memory | + | `plugin-sdk/memory-host-core` | Нейтральний щодо постачальника псевдонім для допоміжних засобів core runtime хоста Memory | + | `plugin-sdk/memory-host-events` | Нейтральний щодо постачальника псевдонім для допоміжних засобів журналу подій хоста Memory | + | `plugin-sdk/memory-host-files` | Нейтральний щодо постачальника псевдонім для допоміжних засобів file/runtime хоста Memory | + | `plugin-sdk/memory-host-markdown` | Спільні допоміжні засоби managed-markdown для plugins, суміжних із memory | + | `plugin-sdk/memory-host-search` | Runtime facade Active Memory для доступу до search-manager | + | `plugin-sdk/memory-host-status` | Нейтральний щодо постачальника псевдонім для допоміжних засобів статусу хоста Memory | + | `plugin-sdk/memory-lancedb` | Поверхня допоміжних засобів вбудованого memory-lancedb | - - | Family | Поточні підшляхи | Призначене використання | + + | Family | Поточні підшляхи | Призначення | | --- | --- | --- | - | 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-support` залишається 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 | - | Допоміжні засоби, специфічні для channel | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Шви сумісності/допоміжні шви bundled channel | - | Допоміжні засоби, специфічні для auth/plugin | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Шви допоміжних засобів bundled feature/plugin; `plugin-sdk/github-copilot-token` наразі експортує `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` і `resolveCopilotApiToken` | + | 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` | Допоміжні засоби підтримки вбудованого browser plugin (`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` | Поверхня helper/runtime вбудованого Matrix | + | Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Поверхня helper/runtime вбудованого LINE | + | IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Поверхня helper вбудованого IRC | + | Допоміжні засоби, специфічні для каналів | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Вбудовані compatibility/helper seams для каналів | + | Допоміжні засоби, специфічні для auth/plugin | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Вбудовані feature/plugin helper seams; `plugin-sdk/github-copilot-token` зараз експортує `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` і `resolveCopilotApiToken` | ## API реєстрації -Колбек `register(api)` отримує об’єкт `OpenClawPluginApi` з такими +Callback `register(api)` отримує об’єкт `OpenClawPluginApi` з такими методами: ### Реєстрація можливостей -| Method | Що реєструє | -| ------------------------------------------------ | ------------------------------------- | -| `api.registerProvider(...)` | Виведення тексту (LLM) | +| Method | Що він реєструє | +| ------------------------------------------------ | ------------------------------------ | +| `api.registerProvider(...)` | Текстовий inference (LLM) | | `api.registerAgentHarness(...)` | Експериментальний низькорівневий виконавець агента | -| `api.registerCliBackend(...)` | Локальний backend виведення CLI | -| `api.registerChannel(...)` | Канал обміну повідомленнями | -| `api.registerSpeechProvider(...)` | Синтез text-to-speech / STT | -| `api.registerRealtimeTranscriptionProvider(...)` | Потокове транскрибування в реальному часі | -| `api.registerRealtimeVoiceProvider(...)` | Двоспрямовані голосові сесії в реальному часі | -| `api.registerMediaUnderstandingProvider(...)` | Аналіз зображень/аудіо/відео | -| `api.registerImageGenerationProvider(...)` | Генерація зображень | -| `api.registerMusicGenerationProvider(...)` | Генерація музики | -| `api.registerVideoGenerationProvider(...)` | Генерація відео | -| `api.registerWebFetchProvider(...)` | Provider web fetch / scrape | -| `api.registerWebSearchProvider(...)` | Вебпошук | +| `api.registerCliBackend(...)` | Локальний CLI backend для inference | +| `api.registerChannel(...)` | Канал обміну повідомленнями | +| `api.registerSpeechProvider(...)` | Text-to-speech / STT synthesis | +| `api.registerRealtimeTranscriptionProvider(...)` | Потокова realtime transcription | +| `api.registerRealtimeVoiceProvider(...)` | Двосторонні сесії realtime voice | +| `api.registerMediaUnderstandingProvider(...)` | Аналіз зображень/аудіо/відео | +| `api.registerImageGenerationProvider(...)` | Генерація зображень | +| `api.registerMusicGenerationProvider(...)` | Генерація музики | +| `api.registerVideoGenerationProvider(...)` | Генерація відео | +| `api.registerWebFetchProvider(...)` | Провайдер web fetch / scrape | +| `api.registerWebSearchProvider(...)` | Вебпошук | -### Інструменти й команди +### Інструменти та команди -| Method | Що реєструє | -| ------------------------------- | -------------------------------------------- | +| Method | Що він реєструє | +| ------------------------------- | --------------------------------------------- | | `api.registerTool(tool, opts?)` | Інструмент агента (обов’язковий або `{ optional: true }`) | -| `api.registerCommand(def)` | Користувацька команда (обходить LLM) | +| `api.registerCommand(def)` | Користувацька команда (обходить LLM) | ### Інфраструктура -| Method | Що реєструє | +| Method | Що він реєструє | | ----------------------------------------------- | -------------------------------------- | -| `api.registerHook(events, handler, opts?)` | Hook події | +| `api.registerHook(events, handler, opts?)` | Хук події | | `api.registerHttpRoute(params)` | HTTP endpoint Gateway | | `api.registerGatewayMethod(name, handler)` | RPC-метод Gateway | | `api.registerCli(registrar, opts?)` | Підкоманда CLI | | `api.registerService(service)` | Фонова служба | -| `api.registerInteractiveHandler(registration)` | Інтерактивний обробник | -| `api.registerEmbeddedExtensionFactory(factory)` | Фабрика розширень embedded-runner для Pi | -| `api.registerMemoryPromptSupplement(builder)` | Адитивний розділ prompt, суміжний із memory | +| `api.registerInteractiveHandler(registration)` | Інтерактивний handler | +| `api.registerEmbeddedExtensionFactory(factory)` | Фабрика extension вбудованого runner Pi | +| `api.registerMemoryPromptSupplement(builder)` | Адитивна секція prompt, суміжна з memory | | `api.registerMemoryCorpusSupplement(adapter)` | Адитивний корпус пошуку/читання memory | -Зарезервовані простори імен core admin (`config.*`, `exec.approvals.*`, `wizard.*`, +Зарезервовані простори імен адміністрування ядра (`config.*`, `exec.approvals.*`, `wizard.*`, `update.*`) завжди залишаються `operator.admin`, навіть якщо plugin намагається призначити -вужчу область дії методу gateway. Для методів, що належать plugin, -віддавайте перевагу префіксам, специфічним для plugin. +вужчу область gateway method. Для методів, +що належать plugin, надавайте перевагу префіксам, специфічним для plugin. -Використовуйте `api.registerEmbeddedExtensionFactory(...)`, коли plugin потрібен -власний для Pi таймінг подій під час embedded-запусків OpenClaw, наприклад асинхронні -переписування `tool_result`, які мають відбутися до того, як буде виведено -остаточне повідомлення результату інструмента. -Наразі це шов bundled-plugin: лише bundled plugins можуть реєструвати такий factory, і +Використовуйте `api.registerEmbeddedExtensionFactory(...)`, коли plugin потрібен нативний для Pi +таймінг подій під час вбудованих запусків OpenClaw, наприклад асинхронні переписування `tool_result`, +які мають відбутися до того, як буде надіслано фінальне повідомлення з результатом tool. +Сьогодні це seam для вбудованих plugins: лише вбудовані plugins можуть реєструвати такий factory, і вони мають оголосити `contracts.embeddedExtensionFactories: ["pi"]` у -`openclaw.plugin.json`. Для всього, що не потребує цього нижчорівневого шва, -залишайте звичайні hook plugin OpenClaw. +`openclaw.plugin.json`. Для всього, що +не потребує цього нижчого рівня seam, залишайте звичайні хуки plugin OpenClaw. ### Метадані реєстрації CLI -`api.registerCli(registrar, opts?)` приймає два типи метаданих верхнього рівня: +`api.registerCli(registrar, opts?)` приймає два види метаданих верхнього рівня: -- `commands`: явні корені команд, що належать registrar -- `descriptors`: дескриптори команд на етапі розбору, що використовуються для кореневої довідки CLI, +- `commands`: явні корені команд, якими володіє registrar +- `descriptors`: дескриптори команд для етапу парсингу, що використовуються для кореневої довідки CLI, маршрутизації та lazy-реєстрації CLI plugin Якщо ви хочете, щоб команда plugin залишалася lazy-loaded у звичайному шляху кореневого CLI, -надайте `descriptors`, які охоплюють кожен корінь команди верхнього рівня, що експонується -цим registrar. +надайте `descriptors`, які охоплюють кожен корінь команди верхнього рівня, що експонується цим +registrar. ```typescript api.registerCli( @@ -398,7 +397,7 @@ api.registerCli( descriptors: [ { name: "matrix", - description: "Керування обліковими записами Matrix, верифікацією, пристроями та станом профілю", + description: "Керування акаунтами Matrix, верифікацією, пристроями та станом профілю", hasSubcommands: true, }, ], @@ -406,85 +405,86 @@ api.registerCli( ); ``` -Використовуйте `commands` окремо лише тоді, коли вам не потрібна lazy-реєстрація кореневого CLI. -Цей eager-шлях сумісності залишається підтримуваним, але він не встановлює -плейсхолдери на основі descriptor для lazy loading на етапі розбору. +Використовуйте `commands` окремо лише тоді, коли вам не потрібна lazy-реєстрація в кореневому CLI. +Цей eager compatibility path залишається підтримуваним, але він не встановлює +placeholders, що підтримуються descriptors, для lazy loading на етапі парсингу. -### Реєстрація backend CLI +### Реєстрація CLI backend `api.registerCliBackend(...)` дає plugin змогу володіти конфігурацією за замовчуванням для локального -AI CLI backend, такого як `codex-cli`. +CLI backend ШІ, такого як `codex-cli`. -- `id` backend стає префіксом provider у посиланнях на моделі, таких як `codex-cli/gpt-5`. +- `id` backend стає префіксом provider у model refs, таких як `codex-cli/gpt-5`. - `config` backend використовує ту саму форму, що й `agents.defaults.cliBackends.`. - Конфігурація користувача все одно має пріоритет. OpenClaw об’єднує `agents.defaults.cliBackends.` поверх - значення за замовчуванням plugin перед запуском CLI. + значення plugin за замовчуванням перед запуском CLI. - Використовуйте `normalizeConfig`, коли backend потребує переписувань сумісності після об’єднання (наприклад, нормалізації старих форм прапорців). ### Ексклюзивні слоти -| Method | Що реєструє | -| ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `api.registerContextEngine(id, factory)` | Context engine (одночасно активний лише один). Колбек `assemble()` отримує `availableTools` і `citationsMode`, щоб engine міг налаштувати доповнення prompt. | -| `api.registerMemoryCapability(capability)` | Уніфіковану можливість memory | -| `api.registerMemoryPromptSection(builder)` | Побудовник розділу prompt для memory | -| `api.registerMemoryFlushPlan(resolver)` | Resolver плану flush для memory | -| `api.registerMemoryRuntime(runtime)` | Адаптер runtime для memory | +| Method | Що він реєструє | +| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `api.registerContextEngine(id, factory)` | Контекстний рушій (одночасно активний лише один). Callback `assemble()` отримує `availableTools` і `citationsMode`, щоб рушій міг адаптувати доповнення до prompt. | +| `api.registerMemoryCapability(capability)` | Єдину можливість memory | +| `api.registerMemoryPromptSection(builder)` | Побудовник секції prompt для memory | +| `api.registerMemoryFlushPlan(resolver)` | Resolver плану flush для memory | +| `api.registerMemoryRuntime(runtime)` | Adapter runtime для memory | -### Адаптери embedding для memory +### Adapters вбудовування memory -| Method | Що реєструє | -| ---------------------------------------------- | ---------------------------------------------- | -| `api.registerMemoryEmbeddingProvider(adapter)` | Адаптер embedding для memory для активного plugin | +| Method | Що він реєструє | +| ---------------------------------------------- | --------------------------------------------- | +| `api.registerMemoryEmbeddingProvider(adapter)` | Adapter вбудовування memory для активного plugin | - `registerMemoryCapability` — це рекомендований API ексклюзивного plugin для memory. -- `registerMemoryCapability` також може експонувати `publicArtifacts.listArtifacts(...)`, +- `registerMemoryCapability` також може надавати `publicArtifacts.listArtifacts(...)`, щоб plugins-компаньйони могли споживати експортовані артефакти memory через - `openclaw/plugin-sdk/memory-host-core` замість звернення до приватного + `openclaw/plugin-sdk/memory-host-core`, не звертаючись до приватного layout конкретного plugin memory. - `registerMemoryPromptSection`, `registerMemoryFlushPlan` і - `registerMemoryRuntime` — це застарілі, але сумісні API ексклюзивного plugin для memory. -- `registerMemoryEmbeddingProvider` дає активному plugin memory змогу зареєструвати один - або кілька id адаптерів embedding (наприклад, `openai`, `gemini` або користувацький id, - визначений plugin). + `registerMemoryRuntime` — це застарілі, але сумісні API ексклюзивного plugin memory. +- `registerMemoryEmbeddingProvider` дає активному plugin memory змогу реєструвати один + або кілька id adapter вбудовування (наприклад, `openai`, `gemini` або визначений plugin користувацький id). - Конфігурація користувача, така як `agents.defaults.memorySearch.provider` і - `agents.defaults.memorySearch.fallback`, розв’язується відносно цих зареєстрованих - id адаптерів. + `agents.defaults.memorySearch.fallback`, визначається відносно зареєстрованих id цих + adapter. ### Події та життєвий цикл -| Method | Що робить | +| Method | Що він робить | | -------------------------------------------- | ---------------------------- | -| `api.on(hookName, handler, opts?)` | Типізований hook життєвого циклу | -| `api.onConversationBindingResolved(handler)` | Колбек розв’язання прив’язки conversation | +| `api.on(hookName, handler, opts?)` | Типізований хук життєвого циклу | +| `api.onConversationBindingResolved(handler)` | Callback прив’язки conversation | -### Семантика рішень hook +### Семантика рішень хуків -- `before_tool_call`: повернення `{ block: true }` є термінальним. Щойно будь-який обробник встановлює його, обробники з нижчим пріоритетом пропускаються. -- `before_tool_call`: повернення `{ block: false }` трактується як відсутність рішення (так само, як і пропуск `block`), а не як перевизначення. -- `before_install`: повернення `{ block: true }` є термінальним. Щойно будь-який обробник встановлює його, обробники з нижчим пріоритетом пропускаються. -- `before_install`: повернення `{ block: false }` трактується як відсутність рішення (так само, як і пропуск `block`), а не як перевизначення. -- `reply_dispatch`: повернення `{ handled: true, ... }` є термінальним. Щойно будь-який обробник перехоплює dispatch, обробники з нижчим пріоритетом і стандартний шлях dispatch моделі пропускаються. -- `message_sending`: повернення `{ cancel: true }` є термінальним. Щойно будь-який обробник встановлює його, обробники з нижчим пріоритетом пропускаються. -- `message_sending`: повернення `{ cancel: false }` трактується як відсутність рішення (так само, як і пропуск `cancel`), а не як перевизначення. +- `before_tool_call`: повернення `{ block: true }` є термінальним. Щойно будь-який handler встановлює його, handlers із нижчим пріоритетом пропускаються. +- `before_tool_call`: повернення `{ block: false }` розглядається як відсутність рішення (так само, як якщо не вказати `block`), а не як перевизначення. +- `before_install`: повернення `{ block: true }` є термінальним. Щойно будь-який handler встановлює його, handlers із нижчим пріоритетом пропускаються. +- `before_install`: повернення `{ block: false }` розглядається як відсутність рішення (так само, як якщо не вказати `block`), а не як перевизначення. +- `reply_dispatch`: повернення `{ handled: true, ... }` є термінальним. Щойно будь-який handler заявляє про dispatch, handlers із нижчим пріоритетом і типовий шлях model dispatch пропускаються. +- `message_sending`: повернення `{ cancel: true }` є термінальним. Щойно будь-який handler встановлює його, handlers із нижчим пріоритетом пропускаються. +- `message_sending`: повернення `{ cancel: false }` розглядається як відсутність рішення (так само, як якщо не вказати `cancel`), а не як перевизначення. +- `message_received`: використовуйте типізоване поле `threadId`, коли вам потрібна маршрутизація вхідного потоку/теми. `metadata` залишайте для додаткових даних, специфічних для каналу. +- `message_sending`: використовуйте типізовані поля маршрутизації `replyToId` / `threadId`, перш ніж переходити до специфічного для каналу `metadata`. ### Поля об’єкта API -| Field | Type | Опис | -| ------------------------ | ------------------------- | ------------------------------------------------------------------------------------------- | -| `api.id` | `string` | ID plugin | -| `api.name` | `string` | Відображувана назва | -| `api.version` | `string?` | Версія plugin (необов’язково) | -| `api.description` | `string?` | Опис plugin (необов’язково) | -| `api.source` | `string` | Шлях до джерела plugin | -| `api.rootDir` | `string?` | Кореневий каталог plugin (необов’язково) | -| `api.config` | `OpenClawConfig` | Поточний знімок config (активний внутрішньопам’ятний знімок runtime, коли доступний) | -| `api.pluginConfig` | `Record` | Конфігурація, специфічна для plugin, з `plugins.entries..config` | -| `api.runtime` | `PluginRuntime` | [Допоміжні засоби runtime](/uk/plugins/sdk-runtime) | -| `api.logger` | `PluginLogger` | Logger з областю видимості (`debug`, `info`, `warn`, `error`) | -| `api.registrationMode` | `PluginRegistrationMode` | Поточний режим завантаження; `"setup-runtime"` — це полегшене вікно запуску/налаштування до повного entry | -| `api.resolvePath(input)` | `(string) => string` | Розв’язати шлях відносно кореня plugin | +| Field | Type | Опис | +| ------------------------ | ------------------------- | ------------------------------------------------------------------------------------------ | +| `api.id` | `string` | ID plugin | +| `api.name` | `string` | Відображувана назва | +| `api.version` | `string?` | Версія plugin (необов’язково) | +| `api.description` | `string?` | Опис plugin (необов’язково) | +| `api.source` | `string` | Шлях до джерела plugin | +| `api.rootDir` | `string?` | Коренева директорія plugin (необов’язково) | +| `api.config` | `OpenClawConfig` | Поточний знімок конфігурації (активний знімок runtime в пам’яті, якщо доступний) | +| `api.pluginConfig` | `Record` | Конфігурація plugin з `plugins.entries..config` | +| `api.runtime` | `PluginRuntime` | [Допоміжні засоби runtime](/uk/plugins/sdk-runtime) | +| `api.logger` | `PluginLogger` | Logger з обмеженою областю (`debug`, `info`, `warn`, `error`) | +| `api.registrationMode` | `PluginRegistrationMode` | Поточний режим завантаження; `"setup-runtime"` — це легковагове вікно запуску/налаштування до повного entry | +| `api.resolvePath(input)` | `(string) => string` | Розв’язати шлях відносно кореня plugin | ## Угода щодо внутрішніх модулів @@ -492,49 +492,49 @@ AI CLI backend, такого як `codex-cli`. ``` my-plugin/ - api.ts # Публічні експорти для зовнішніх споживачів + api.ts # Публічні експорти для зовнішніх користувачів runtime-api.ts # Експорти runtime лише для внутрішнього використання index.ts # Точка входу plugin - setup-entry.ts # Полегшене entry лише для налаштування (необов’язково) + setup-entry.ts # Легка точка входу лише для налаштування (необов’язково) ``` Ніколи не імпортуйте власний plugin через `openclaw/plugin-sdk/` - у production-коді. Спрямовуйте внутрішні імпорти через `./api.ts` або + із production-коду. Спрямовуйте внутрішні імпорти через `./api.ts` або `./runtime-api.ts`. Шлях SDK — це лише зовнішній контракт. -Завантажувані через facade публічні поверхні bundled plugin (`api.ts`, `runtime-api.ts`, -`index.ts`, `setup-entry.ts` та подібні публічні entry-файли) тепер віддають перевагу -активному знімку config runtime, коли OpenClaw уже запущено. Якщо знімок runtime -ще не існує, вони повертаються до розв’язаного config-файлу на диску. +Публічні поверхні вбудованих plugins, завантажені через facade (`api.ts`, `runtime-api.ts`, +`index.ts`, `setup-entry.ts` та подібні публічні entry-файли), тепер надають перевагу +активному знімку конфігурації runtime, коли OpenClaw уже запущений. Якщо знімка runtime +ще не існує, вони повертаються до розв’язуваного файла конфігурації на диску. -Plugins provider також можуть експонувати вузький локальний для plugin barrel контракту, коли -допоміжний засіб навмисно є специфічним для provider і ще не належить до узагальненого -підшляху SDK. Поточний bundled-приклад: provider Anthropic тримає свої -допоміжні засоби потоку Claude у власному публічному шві `api.ts` / `contract-api.ts` замість -просування логіки Anthropic beta-header і `service_tier` в узагальнений -контракт `plugin-sdk/*`. +Plugins провайдерів також можуть експортувати вузький локальний barrel контракту plugin, коли +допоміжний засіб навмисно є специфічним для провайдера й поки що не належить до узагальненого підшляху SDK. +Поточний вбудований приклад: провайдер Anthropic зберігає свої допоміжні засоби Claude +stream у власному публічному seam `api.ts` / `contract-api.ts`, замість того щоб +просувати логіку Anthropic beta-header і `service_tier` до узагальненого +контракту `plugin-sdk/*`. -Інші поточні bundled-приклади: +Інші поточні вбудовані приклади: -- `@openclaw/openai-provider`: `api.ts` експортує побудовники provider, - допоміжні засоби моделей за замовчуванням і побудовники provider реального часу -- `@openclaw/openrouter-provider`: `api.ts` експортує побудовник provider, а також - допоміжні засоби onboarding/config +- `@openclaw/openai-provider`: `api.ts` експортує побудовники провайдерів, + допоміжні засоби моделей за замовчуванням і побудовники realtime-провайдерів +- `@openclaw/openrouter-provider`: `api.ts` експортує побудовник провайдера, а також + допоміжні засоби онбордингу/конфігурації Production-код extension також має уникати імпортів `openclaw/plugin-sdk/`. - Якщо допоміжний засіб справді є спільним, перенесіть його до нейтрального підшляху SDK, + Якщо допоміжний засіб справді є спільним, просувайте його до нейтрального підшляху SDK, такого як `openclaw/plugin-sdk/speech`, `.../provider-model-shared` або іншої - поверхні, орієнтованої на можливості, замість жорсткого зв’язування двох plugins. + surface, орієнтованої на можливість, замість зв’язування двох plugins між собою. ## Пов’язане -- [Точки входу](/uk/plugins/sdk-entrypoints) — параметри `definePluginEntry` і `defineChannelPluginEntry` -- [Допоміжні засоби runtime](/uk/plugins/sdk-runtime) — повний довідник простору імен `api.runtime` -- [Налаштування та config](/uk/plugins/sdk-setup) — пакування, маніфести, схеми config -- [Тестування](/uk/plugins/sdk-testing) — тестові утиліти та правила lint -- [Міграція SDK](/uk/plugins/sdk-migration) — міграція із застарілих поверхонь -- [Внутрішня будова plugin](/uk/plugins/architecture) — глибока архітектура та модель можливостей +- [Entry Points](/uk/plugins/sdk-entrypoints) — параметри `definePluginEntry` і `defineChannelPluginEntry` +- [Runtime Helpers](/uk/plugins/sdk-runtime) — повний довідник простору імен `api.runtime` +- [Setup and Config](/uk/plugins/sdk-setup) — пакування, маніфести, схеми конфігурації +- [Testing](/uk/plugins/sdk-testing) — тестові утиліти та правила lint +- [SDK Migration](/uk/plugins/sdk-migration) — міграція із застарілих surface +- [Plugin Internals](/uk/plugins/architecture) — глибока архітектура і модель можливостей plugin