@iola_adm/iola-cli 0.2.33 → 0.2.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/package.json +4 -1
- package/skills/user-skills/SKILL.md +40 -0
- package/skills/yandex-services/SKILL.md +79 -7
- package/src/cli.js +2640 -116
- package/wiki/Skills-/320/270-toolsets.md +27 -5
- package/wiki/Yandex-Connector.md +66 -4
- package/wiki//320/241/320/272/320/270/320/273/320/273/321/213-/320/264/320/273/321/217-/320/266/320/270/321/202/320/265/320/273/320/265/320/271.md +127 -4
|
@@ -9,15 +9,18 @@ Skills не подмешиваются в каждый запрос целико
|
|
|
9
9
|
- `local-files` - когда пользователь просит работать с локальными файлами, папками, архивами или документами;
|
|
10
10
|
- `browser-agent` - когда запрос связан с сайтом, URL, страницей, скриншотом или браузером;
|
|
11
11
|
- `local-model` - инструкции для локальных компактных моделей и tool-планирования;
|
|
12
|
-
- `yandex-services` - когда запрос связан с Yandex Connector: Яндекс Диск, Почта, Календарь, Контакты, Телемост или Yandex ID
|
|
12
|
+
- `yandex-services` - когда запрос связан с Yandex Connector: Яндекс Диск, Почта, Календарь, Контакты, Телемост или Yandex ID;
|
|
13
|
+
- `user-skills` - когда пользователь просит создать, включить, выключить или удалить собственный skill.
|
|
13
14
|
|
|
14
15
|
Обычный диалог вроде `привет` не получает инструкции про слои, отчеты, файлы и браузер.
|
|
15
16
|
|
|
16
17
|
```bash
|
|
17
18
|
iola skills list
|
|
18
19
|
iola skills show open-data
|
|
20
|
+
iola skills create mail-digest --description "Сводка почты" --instructions "Когда пользователь просит сводку почты, найди непрочитанные письма и кратко сгруппируй их по отправителям." --allowed-tools yandex_mail_list,yandex_mail_read --enable
|
|
19
21
|
iola skills enable reports
|
|
20
22
|
iola skills disable local-model
|
|
23
|
+
iola skills delete mail-digest --yes
|
|
21
24
|
iola skills paths
|
|
22
25
|
```
|
|
23
26
|
|
|
@@ -40,6 +43,24 @@ iola tools profile full
|
|
|
40
43
|
Режим `safe` подходит для чтения и анализа без записи файлов и без запуска sync.
|
|
41
44
|
Режим `full` предназначен для доверенного локального пользователя.
|
|
42
45
|
|
|
46
|
+
## Пользовательские skills
|
|
47
|
+
|
|
48
|
+
Пользователь может создавать собственные skills без редактирования npm-пакета. Такие skills сохраняются локально в `~/.iola/skills/<name>/SKILL.md` и не пропадают при обновлении CLI.
|
|
49
|
+
|
|
50
|
+
Skill - это инструкция для агента, а не произвольный исполняемый код. Он может описывать любые сценарии, но должен опираться на встроенные tools `iola-cli`: открытые данные, Яндекс Почту/Диск/Календарь/Контакты, локальные файлы, browser runtime, cron, MCP, отчеты и память.
|
|
51
|
+
|
|
52
|
+
Доступные tools управления:
|
|
53
|
+
|
|
54
|
+
- `user_skill_list` - список пользовательских skills;
|
|
55
|
+
- `user_skill_create` - создать skill;
|
|
56
|
+
- `user_skill_enable` - включить skill;
|
|
57
|
+
- `user_skill_disable` - выключить skill;
|
|
58
|
+
- `user_skill_delete` - удалить пользовательский skill.
|
|
59
|
+
|
|
60
|
+
При создании через AI пользователь может написать обычным языком: `создай скилл, который при просьбе "сводка почты" берет непрочитанные письма и группирует по отправителям`. CLI создаст локальный `SKILL.md` и включит его.
|
|
61
|
+
|
|
62
|
+
Для опасных действий внутри пользовательского skill нужно явное подтверждение пользователя: отправка писем, удаление данных, публикация ссылок, запись файлов и изменение внешних сервисов.
|
|
63
|
+
|
|
43
64
|
## Yandex toolset
|
|
44
65
|
|
|
45
66
|
Toolset `yandex` включает локальные tools для пользовательских сервисов Яндекса:
|
|
@@ -47,8 +68,9 @@ Toolset `yandex` включает локальные tools для пользов
|
|
|
47
68
|
- Yandex ID: профиль, логин, email;
|
|
48
69
|
- Яндекс Диск: список, создание папок, поиск, сохранение текста, загрузка, скачивание, публичные ссылки;
|
|
49
70
|
- Яндекс Почта: статус, список писем, поиск, чтение, отправка;
|
|
50
|
-
- Яндекс Календарь:
|
|
51
|
-
- Яндекс
|
|
52
|
-
-
|
|
71
|
+
- Яндекс Календарь: календари, список, поиск, создание, перенос, редактирование, повторы, напоминания, удаление событий;
|
|
72
|
+
- Яндекс Документы / 360: работа через Яндекс Диск - список, поиск, создание текстовых документов, чтение, ссылка/QR, переименование, удаление;
|
|
73
|
+
- Яндекс Контакты: статус, список, поиск, карточка, создание, обновление, удаление, импорт/экспорт, дубликаты, неполные карточки, backup на Диск, дни рождения в календарь, письмо/ссылка/встреча по контакту;
|
|
74
|
+
- Телемост: попытка прямого API и fallback через календарное событие, если API недоступен аккаунту.
|
|
53
75
|
|
|
54
|
-
Опасные действия ограничены: отправка письма, удаление файлов, публикация
|
|
76
|
+
Опасные действия ограничены: отправка письма, удаление файлов, публикация ссылок, создание/изменение документов и создание/изменение/удаление событий требуют явного подтверждения в tool-вызове. Токены хранятся локально в `~/.iola/secrets.json`.
|
package/wiki/Yandex-Connector.md
CHANGED
|
@@ -116,24 +116,86 @@ OAuth-права дают CLI разрешение обращаться к се
|
|
|
116
116
|
- `yandex_disk_ls` - список файлов и папок;
|
|
117
117
|
- `yandex_disk_mkdir` - создать папку;
|
|
118
118
|
- `yandex_disk_find` - найти файл или папку;
|
|
119
|
+
- `yandex_disk_stat` - метаданные файла или папки;
|
|
120
|
+
- `yandex_disk_exists` - проверка существования;
|
|
121
|
+
- `yandex_disk_read_text` - чтение небольшого текстового файла;
|
|
119
122
|
- `yandex_disk_save_text` - сохранить текстовый результат на Диск;
|
|
120
123
|
- `yandex_disk_upload` - загрузить локальный файл на Диск;
|
|
121
124
|
- `yandex_disk_download` - скачать файл с Диска;
|
|
125
|
+
- `yandex_disk_move` - переместить файл или папку;
|
|
126
|
+
- `yandex_disk_copy` - скопировать файл или папку;
|
|
127
|
+
- `yandex_disk_rename` - переименовать файл или папку;
|
|
122
128
|
- `yandex_disk_share` - создать публичную ссылку;
|
|
129
|
+
- `yandex_disk_share_qr` - создать публичную ссылку и QR-код, сохранить QR PNG на Диск;
|
|
130
|
+
- `yandex_disk_share_email` - создать ссылку, QR-код и отправить их по Яндекс Почте;
|
|
123
131
|
- `yandex_disk_unshare` - снять публичную ссылку;
|
|
124
132
|
- `yandex_disk_delete` - удалить файл или папку;
|
|
133
|
+
- `yandex_disk_trash_list` - показать корзину;
|
|
134
|
+
- `yandex_disk_restore` - восстановить из корзины;
|
|
135
|
+
- `yandex_disk_empty_trash` - очистить корзину;
|
|
136
|
+
|
|
137
|
+
QR-код:
|
|
138
|
+
|
|
139
|
+
В веб-интерфейсе Яндекс Диска QR-код доступен при работе с публичной ссылкой. В REST API отдельное поле готового QR-кода не документировано. Поэтому `iola-cli` берет публичную ссылку через API, локально создает PNG QR-кода, загружает этот PNG на Яндекс Диск рядом с исходным объектом и при необходимости публикует отдельную ссылку на QR.
|
|
125
140
|
- `yandex_mail_status` - проверить доступ к Почте;
|
|
126
141
|
- `yandex_mail_list` - показать последние письма;
|
|
127
142
|
- `yandex_mail_search` - найти письма;
|
|
128
143
|
- `yandex_mail_read` - прочитать письмо по UID;
|
|
129
144
|
- `yandex_mail_send` - отправить письмо;
|
|
130
145
|
- `yandex_calendar_status` - проверить доступ к Календарю;
|
|
131
|
-
- `
|
|
132
|
-
- `
|
|
146
|
+
- `yandex_calendar_calendars` - показать доступные календари;
|
|
147
|
+
- `yandex_calendar_list` - показать ближайшие события;
|
|
148
|
+
- `yandex_calendar_search` - найти событие;
|
|
149
|
+
- `yandex_calendar_get` - открыть карточку события;
|
|
150
|
+
- `yandex_calendar_create_event` - создать событие с участниками, местом и напоминаниями;
|
|
151
|
+
- `yandex_calendar_create_recurring_event` - создать повторяющееся событие;
|
|
152
|
+
- `yandex_calendar_update` - изменить событие;
|
|
153
|
+
- `yandex_calendar_move` - перенести событие;
|
|
154
|
+
- `yandex_calendar_add_reminder` - добавить напоминание;
|
|
155
|
+
- `yandex_calendar_delete` - удалить событие;
|
|
156
|
+
- `yandex_docs_status` - проверить Документы / 360 через Диск;
|
|
157
|
+
- `yandex_docs_list` - показать документы;
|
|
158
|
+
- `yandex_docs_find` - найти документ;
|
|
159
|
+
- `yandex_docs_create_text` - создать текстовый документ на Яндекс Диске;
|
|
160
|
+
- `yandex_docs_read` - прочитать небольшой текстовый документ;
|
|
161
|
+
- `yandex_docs_share` - создать ссылку и QR-код на документ;
|
|
162
|
+
- `yandex_docs_rename` - переименовать документ;
|
|
163
|
+
- `yandex_docs_delete` - удалить документ;
|
|
133
164
|
- `yandex_contacts_status` - проверить доступ к Контактам;
|
|
134
165
|
- `yandex_contacts_list` - показать контакты;
|
|
135
|
-
- `yandex_contacts_search` - найти
|
|
136
|
-
- `
|
|
166
|
+
- `yandex_contacts_search` - найти контакт по имени, email, телефону, организации, адресу или заметке;
|
|
167
|
+
- `yandex_contacts_get` - открыть карточку контакта;
|
|
168
|
+
- `yandex_contacts_create` - создать контакт;
|
|
169
|
+
- `yandex_contacts_update` - обновить поля контакта;
|
|
170
|
+
- `yandex_contacts_delete` - удалить контакт;
|
|
171
|
+
- `yandex_contacts_add_email`, `yandex_contacts_add_phone`, `yandex_contacts_add_address`, `yandex_contacts_add_note`, `yandex_contacts_add_birthday`, `yandex_contacts_add_org` - добавить отдельные поля;
|
|
172
|
+
- `yandex_contacts_remove_email`, `yandex_contacts_remove_phone` - удалить отдельные поля;
|
|
173
|
+
- `yandex_contacts_export_vcard`, `yandex_contacts_export_csv` - экспортировать контакты;
|
|
174
|
+
- `yandex_contacts_import_vcard`, `yandex_contacts_import_csv` - импортировать контакты;
|
|
175
|
+
- `yandex_contacts_find_incomplete` - найти неполные карточки;
|
|
176
|
+
- `yandex_contacts_find_duplicates` - найти дубликаты;
|
|
177
|
+
- `yandex_contacts_backup_to_disk` - сохранить backup контактов на Яндекс Диск;
|
|
178
|
+
- `yandex_contacts_birthdays_to_calendar` - создать события дней рождения в календаре;
|
|
179
|
+
- `yandex_contact_send_mail` - отправить письмо контакту;
|
|
180
|
+
- `yandex_contact_send_disk_link_qr` - отправить контакту ссылку и QR-код на объект Диска;
|
|
181
|
+
- `yandex_contact_create_disk_folder` - создать папку контакта на Диске с vCard и README;
|
|
182
|
+
- `yandex_contact_create_calendar_event` - создать встречу с контактом;
|
|
183
|
+
- `yandex_contact_create_telemost_event` - создать событие для Телемоста с контактом;
|
|
184
|
+
- `yandex_contact_from_public_entity` - создать контакт из открытого городского слоя;
|
|
185
|
+
- `yandex_telemost_status` - проверить режим Телемоста;
|
|
186
|
+
- `yandex_telemost_create_event` - создать встречу: прямой Telemost API используется только если он доступен аккаунту; иначе создается календарное событие без выдуманной ссылки.
|
|
187
|
+
|
|
188
|
+
Регулярная проверка контактов:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
iola yandex contacts-maintenance on --days 7
|
|
192
|
+
iola yandex contacts-maintenance on --days 7 --backup
|
|
193
|
+
iola yandex contacts-maintenance status
|
|
194
|
+
iola yandex contacts-maintenance tick
|
|
195
|
+
iola yandex contacts-maintenance off
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Проверка ищет дубликаты и неполные карточки. Если включен `--backup`, при tick сохраняется CSV-копия контактов на Яндекс Диск.
|
|
137
199
|
|
|
138
200
|
Включение сервиса в `/yandex` разрешает CLI использовать соответствующую категорию. Отправка письма, удаление файлов, публикация ссылок и создание событий требуют явного намерения пользователя и подтверждения в tool-вызове.
|
|
139
201
|
|
|
@@ -162,9 +162,37 @@ iola geo services "Йошкар-Ола, улица Петрова, 15"
|
|
|
162
162
|
- показать файлы и папки в `/IOLA`;
|
|
163
163
|
- создать папку;
|
|
164
164
|
- найти файл или папку;
|
|
165
|
+
- проверить, есть ли файл или папка;
|
|
166
|
+
- показать карточку файла: размер, тип, даты изменения, публичная ссылка;
|
|
167
|
+
- прочитать небольшой текстовый файл;
|
|
165
168
|
- сохранить текстовый результат;
|
|
166
169
|
- создать или снять публичную ссылку;
|
|
167
|
-
-
|
|
170
|
+
- создать QR-код для публичной ссылки и сохранить его на Диск;
|
|
171
|
+
- отправить публичную ссылку и QR-код по Яндекс Почте email-адресу или контакту;
|
|
172
|
+
- загрузить или скачать файл;
|
|
173
|
+
- переместить, скопировать или переименовать файл/папку;
|
|
174
|
+
- удалить файл/папку в корзину;
|
|
175
|
+
- показать корзину, восстановить объект из корзины или очистить корзину.
|
|
176
|
+
|
|
177
|
+
Примеры:
|
|
178
|
+
|
|
179
|
+
- `сколько места на Яндекс Диске`;
|
|
180
|
+
- `покажи файлы на Яндекс Диске`;
|
|
181
|
+
- `найди на Диске договор`;
|
|
182
|
+
- `прочитай файл /IOLA/notes/todo.txt`;
|
|
183
|
+
- `создай папку фото на Яндекс Диске`;
|
|
184
|
+
- `сделай публичную ссылку на /IOLA/report.pdf`;
|
|
185
|
+
- `сделай публичную ссылку и QR-код на /IOLA/report.pdf`;
|
|
186
|
+
- `отправь ссылку и QR-код на /IOLA/report.pdf по почте user@example.com`;
|
|
187
|
+
- `отправь Петрову ссылку и QR-код на папку /IOLA/reports`;
|
|
188
|
+
- `создай папку /IOLA/share, перенеси файлы из папки /IOLA/inbox, сделай ссылку и QR-код и отправь по почте user@example.com`;
|
|
189
|
+
- `сними публичную ссылку с /IOLA/report.pdf`;
|
|
190
|
+
- `переименуй /IOLA/a.txt в b.txt`;
|
|
191
|
+
- `перемести /IOLA/a.txt в /IOLA/archive/a.txt`;
|
|
192
|
+
- `скопируй /IOLA/a.txt в /IOLA/copy/a.txt`;
|
|
193
|
+
- `удали /IOLA/tmp.txt`;
|
|
194
|
+
- `покажи корзину Яндекс Диска`;
|
|
195
|
+
- `восстанови /IOLA/tmp.txt из корзины`.
|
|
168
196
|
|
|
169
197
|
### yandex-mail
|
|
170
198
|
|
|
@@ -205,7 +233,47 @@ iola geo services "Йошкар-Ола, улица Петрова, 15"
|
|
|
205
233
|
Работать с Яндекс Календарем:
|
|
206
234
|
|
|
207
235
|
- показать ближайшие события;
|
|
208
|
-
-
|
|
236
|
+
- показать список календарей;
|
|
237
|
+
- найти событие по названию, месту, описанию или дате;
|
|
238
|
+
- создать событие только после явного подтверждения;
|
|
239
|
+
- создать повторяющееся событие;
|
|
240
|
+
- перенести встречу на новую дату или время;
|
|
241
|
+
- изменить название, описание или место события;
|
|
242
|
+
- добавить напоминание;
|
|
243
|
+
- удалить событие по явной просьбе.
|
|
244
|
+
|
|
245
|
+
Примеры:
|
|
246
|
+
|
|
247
|
+
- `покажи яндекс календарь`;
|
|
248
|
+
- `найди событие собрание в яндекс календаре`;
|
|
249
|
+
- `создай событие название: прием врача завтра в 10:00`;
|
|
250
|
+
- `перенеси встречу прием врача на послезавтра в 11:00`;
|
|
251
|
+
- `добавь напоминание 20 минут к событию прием врача`;
|
|
252
|
+
- `удали событие прием врача`.
|
|
253
|
+
|
|
254
|
+
### yandex-docs
|
|
255
|
+
|
|
256
|
+
Работать с документами Яндекс 360 через Яндекс Диск:
|
|
257
|
+
|
|
258
|
+
- показать документы в папке `/IOLA/docs`;
|
|
259
|
+
- найти документ по названию;
|
|
260
|
+
- создать текстовый, Markdown или HTML-документ;
|
|
261
|
+
- прочитать небольшой текстовый документ;
|
|
262
|
+
- создать публичную ссылку и QR-код на документ;
|
|
263
|
+
- переименовать документ;
|
|
264
|
+
- удалить документ по явной просьбе.
|
|
265
|
+
|
|
266
|
+
Важно: CLI работает с документами как с файлами на Яндекс Диске. Он не подменяет веб-редактор Яндекс Документов и не обещает создание "нативного" документа, если Яндекс не дает стабильный API для этого действия.
|
|
267
|
+
|
|
268
|
+
Примеры:
|
|
269
|
+
|
|
270
|
+
- `покажи документы на Яндекс Диске`;
|
|
271
|
+
- `найди документ справка на Яндекс Диске`;
|
|
272
|
+
- `создай документ яндекс 360 название: заметка текст: купить лекарства`;
|
|
273
|
+
- `прочитай документ /IOLA/docs/заметка.md`;
|
|
274
|
+
- `сделай ссылку на документ /IOLA/docs/заметка.md`;
|
|
275
|
+
- `переименуй документ /IOLA/docs/заметка.md в лекарства.md`;
|
|
276
|
+
- `удали документ /IOLA/docs/лекарства.md`.
|
|
209
277
|
|
|
210
278
|
### yandex-contacts
|
|
211
279
|
|
|
@@ -213,11 +281,66 @@ iola geo services "Йошкар-Ола, улица Петрова, 15"
|
|
|
213
281
|
|
|
214
282
|
- проверить доступ к адресной книге;
|
|
215
283
|
- показать контакты;
|
|
216
|
-
- найти контакт по имени, email или
|
|
284
|
+
- найти контакт по имени, email, телефону, организации, адресу или заметке;
|
|
285
|
+
- открыть карточку контакта;
|
|
286
|
+
- создать контакт с email или телефоном;
|
|
287
|
+
- добавить или обновить email, телефон, адрес, заметку, день рождения, организацию и должность;
|
|
288
|
+
- удалить email или телефон из карточки;
|
|
289
|
+
- удалить контакт по явной просьбе пользователя;
|
|
290
|
+
- найти неполные контакты: без email, телефона или адреса;
|
|
291
|
+
- найти дубликаты контактов;
|
|
292
|
+
- экспортировать контакты в vCard или CSV;
|
|
293
|
+
- импортировать контакты из vCard или CSV;
|
|
294
|
+
- сохранить резервную копию контактов на Яндекс Диск;
|
|
295
|
+
- создать события дней рождения в Яндекс Календаре;
|
|
296
|
+
- включить регулярную проверку контактов: дубликаты, неполные карточки и опциональный backup на Диск.
|
|
297
|
+
|
|
298
|
+
Примеры:
|
|
299
|
+
|
|
300
|
+
- `найди контакт Петров`;
|
|
301
|
+
- `создай контакт Иван Петров email ivan@example.com`;
|
|
302
|
+
- `добавь телефон +7 999 123 45 67 к контакту Иван Петров`;
|
|
303
|
+
- `добавь заметку к контакту Иван Петров заметка: родительский комитет`;
|
|
304
|
+
- `покажи контакты без email`;
|
|
305
|
+
- `покажи дубликаты контактов`;
|
|
306
|
+
- `экспортируй контакты в csv`;
|
|
307
|
+
- `сохрани резервную копию контактов на Яндекс Диск`;
|
|
308
|
+
- `импортируй контакты из contacts.csv`;
|
|
309
|
+
- `создай события дней рождения из контактов в календаре`.
|
|
310
|
+
- `включи регулярную проверку контактов каждые 7 дней`;
|
|
311
|
+
- `запусти проверку контактов сейчас`;
|
|
312
|
+
- `включи проверку контактов с backup на Диск`.
|
|
313
|
+
|
|
314
|
+
### yandex-contacts-combined
|
|
315
|
+
|
|
316
|
+
Комбинированные сценарии с контактами:
|
|
317
|
+
|
|
318
|
+
- отправить письмо контакту по имени;
|
|
319
|
+
- если найдено несколько контактов, попросить уточнить;
|
|
320
|
+
- если у контакта нет email, сказать прямо и не отправлять письмо;
|
|
321
|
+
- отправить контакту публичную ссылку и QR-код на файл или папку Яндекс Диска;
|
|
322
|
+
- создать папку контакта на Яндекс Диске и сохранить туда `contact.vcf` и `README.txt`;
|
|
323
|
+
- создать встречу с контактом в Яндекс Календаре;
|
|
324
|
+
- создать календарное событие для Телемоста с контактом;
|
|
325
|
+
- создать контакт из открытого городского слоя, если у школы или детского сада есть публичный email или телефон.
|
|
326
|
+
|
|
327
|
+
Примеры:
|
|
328
|
+
|
|
329
|
+
- `отправь Петрову письмо текст: встреча завтра в 14:00`;
|
|
330
|
+
- `отправь Иванову ссылку и QR-код на /IOLA/report.pdf`;
|
|
331
|
+
- `создай папку на Яндекс Диске для контакта Иван Петров`;
|
|
332
|
+
- `создай встречу с Иваном Петровым завтра в 15:00`;
|
|
333
|
+
- `создай контакт из школы № 7`.
|
|
217
334
|
|
|
218
335
|
### yandex-telemost
|
|
219
336
|
|
|
220
|
-
Подготовить встречу через
|
|
337
|
+
Подготовить встречу через Телемост:
|
|
338
|
+
|
|
339
|
+
- проверить режим Телемоста;
|
|
340
|
+
- попробовать создать ссылку через прямой API, если он доступен текущему аккаунту;
|
|
341
|
+
- если прямой API недоступен, создать календарное событие и честно сообщить, что ссылка Телемоста не была получена через API.
|
|
342
|
+
|
|
343
|
+
CLI не должен сам нажимать финальные кнопки в веб-интерфейсе Яндекса без явного действия пользователя и не должен выдумывать ссылку Телемоста.
|
|
221
344
|
|
|
222
345
|
## Yandex Connector backlog
|
|
223
346
|
|