Разработка плагина
Третьесторонний плагин — это TypeScript плюс декларативный манифест
yttri-plugin.json. Код обращается к Yttri только через типизированный
YttriHost.
Быстрый старт
Заголовок раздела «Быстрый старт»# Скаффолд из шаблонаnpx @yttri/plugin-cli create my-plugincd my-pluginnpm install
# Отредактируйте yttri-plugin.json и src/index.ts, затем:npm run buildnpx yttri-plugin validatenpx yttri-plugin packСборка создаст my-plugin-0.1.0.yttri-plugin. Установите пакет через
Настройки → Плагины. Для итераций удобнее Папка разработчика: после
npm run build нажмите Обновить — файлы заменятся, а настройки и состояние
сохранятся.
Точка входа
Заголовок раздела «Точка входа»import { definePlugin, type YttriHost } from '@yttri/plugin-api';
export default definePlugin({ async activate(host: YttriHost) { host.log.info('activated'); },
tools: { // Ключ совпадает с capabilities.tools[].name в манифесте. async acme_ping(host: YttriHost) { const token = await host.secrets.get('api_token'); const res = await host.network.fetch({ url: 'https://api.acme.com/ping', headers: token ? { authorization: `Bearer ${token}` } : {}, }); return { ok: res.ok, status: res.status }; }, },
jobs: { async sync(host: YttriHost) { // Фоновая задача из capabilities.jobs. }, },});YttriHost
Заголовок раздела «YttriHost»host.invoke({ capability, operation, payload })— вызовы в домены данных: notes, tasks, calendar, contacts, projects и search (чтение и создание), documents, mail и meetings (чтение). Write-операции требуют write-гранта.host.secrets.{get,set,delete,list}— секреты в изолированном пространстве плагина; значения шифруются.host.network.fetch(req)— HTTP только к хостам, объявленным в манифесте.host.settings.getAll()— настройки плагина; форму по схеме генерирует Yttri.host.log.{info,warn,error}— лог без чувствительных данных.
Инструменты для агента
Заголовок раздела «Инструменты для агента»Инструменты включённого плагина попадают в реестр AI-агента как
plugin_<имя>. По умолчанию каждый изменяющий вызов требует подтверждения
пользователя. Доверенному плагину можно разрешить выполнение без подтверждений
отдельным переключателем.