@iola_adm/iola-cli 0.2.33 → 0.2.34

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.
@@ -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 для пользовательских сервисов Яндекса:
@@ -48,7 +69,7 @@ Toolset `yandex` включает локальные tools для пользов
48
69
  - Яндекс Диск: список, создание папок, поиск, сохранение текста, загрузка, скачивание, публичные ссылки;
49
70
  - Яндекс Почта: статус, список писем, поиск, чтение, отправка;
50
71
  - Яндекс Календарь: статус, список событий, создание события;
51
- - Яндекс Контакты: статус, список, поиск;
72
+ - Яндекс Контакты: статус, список, поиск, карточка, создание, обновление, удаление, импорт/экспорт, дубликаты, неполные карточки, backup на Диск, дни рождения в календарь, письмо/ссылка/встреча по контакту;
52
73
  - Телемост: подготовка встречи через календарное событие.
53
74
 
54
75
  Опасные действия ограничены: отправка письма, удаление файлов, публикация ссылок и создание событий требуют явного подтверждения в tool-вызове. Токены хранятся локально в `~/.iola/secrets.json`.
@@ -116,12 +116,27 @@ 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` - найти письма;
@@ -132,9 +147,39 @@ OAuth-права дают CLI разрешение обращаться к се
132
147
  - `yandex_calendar_create_event` - создать событие;
133
148
  - `yandex_contacts_status` - проверить доступ к Контактам;
134
149
  - `yandex_contacts_list` - показать контакты;
135
- - `yandex_contacts_search` - найти контакт;
150
+ - `yandex_contacts_search` - найти контакт по имени, email, телефону, организации, адресу или заметке;
151
+ - `yandex_contacts_get` - открыть карточку контакта;
152
+ - `yandex_contacts_create` - создать контакт;
153
+ - `yandex_contacts_update` - обновить поля контакта;
154
+ - `yandex_contacts_delete` - удалить контакт;
155
+ - `yandex_contacts_add_email`, `yandex_contacts_add_phone`, `yandex_contacts_add_address`, `yandex_contacts_add_note`, `yandex_contacts_add_birthday`, `yandex_contacts_add_org` - добавить отдельные поля;
156
+ - `yandex_contacts_remove_email`, `yandex_contacts_remove_phone` - удалить отдельные поля;
157
+ - `yandex_contacts_export_vcard`, `yandex_contacts_export_csv` - экспортировать контакты;
158
+ - `yandex_contacts_import_vcard`, `yandex_contacts_import_csv` - импортировать контакты;
159
+ - `yandex_contacts_find_incomplete` - найти неполные карточки;
160
+ - `yandex_contacts_find_duplicates` - найти дубликаты;
161
+ - `yandex_contacts_backup_to_disk` - сохранить backup контактов на Яндекс Диск;
162
+ - `yandex_contacts_birthdays_to_calendar` - создать события дней рождения в календаре;
163
+ - `yandex_contact_send_mail` - отправить письмо контакту;
164
+ - `yandex_contact_send_disk_link_qr` - отправить контакту ссылку и QR-код на объект Диска;
165
+ - `yandex_contact_create_disk_folder` - создать папку контакта на Диске с vCard и README;
166
+ - `yandex_contact_create_calendar_event` - создать встречу с контактом;
167
+ - `yandex_contact_create_telemost_event` - создать событие для Телемоста с контактом;
168
+ - `yandex_contact_from_public_entity` - создать контакт из открытого городского слоя;
136
169
  - `yandex_telemost_create_event` - создать календарное событие для встречи.
137
170
 
171
+ Регулярная проверка контактов:
172
+
173
+ ```bash
174
+ iola yandex contacts-maintenance on --days 7
175
+ iola yandex contacts-maintenance on --days 7 --backup
176
+ iola yandex contacts-maintenance status
177
+ iola yandex contacts-maintenance tick
178
+ iola yandex contacts-maintenance off
179
+ ```
180
+
181
+ Проверка ищет дубликаты и неполные карточки. Если включен `--backup`, при tick сохраняется CSV-копия контактов на Яндекс Диск.
182
+
138
183
  Включение сервиса в `/yandex` разрешает CLI использовать соответствующую категорию. Отправка письма, удаление файлов, публикация ссылок и создание событий требуют явного намерения пользователя и подтверждения в tool-вызове.
139
184
 
140
185
  ## Иконка приложения
@@ -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
 
@@ -213,7 +241,56 @@ iola geo services "Йошкар-Ола, улица Петрова, 15"
213
241
 
214
242
  - проверить доступ к адресной книге;
215
243
  - показать контакты;
216
- - найти контакт по имени, email или телефону.
244
+ - найти контакт по имени, email, телефону, организации, адресу или заметке;
245
+ - открыть карточку контакта;
246
+ - создать контакт с email или телефоном;
247
+ - добавить или обновить email, телефон, адрес, заметку, день рождения, организацию и должность;
248
+ - удалить email или телефон из карточки;
249
+ - удалить контакт по явной просьбе пользователя;
250
+ - найти неполные контакты: без email, телефона или адреса;
251
+ - найти дубликаты контактов;
252
+ - экспортировать контакты в vCard или CSV;
253
+ - импортировать контакты из vCard или CSV;
254
+ - сохранить резервную копию контактов на Яндекс Диск;
255
+ - создать события дней рождения в Яндекс Календаре;
256
+ - включить регулярную проверку контактов: дубликаты, неполные карточки и опциональный backup на Диск.
257
+
258
+ Примеры:
259
+
260
+ - `найди контакт Петров`;
261
+ - `создай контакт Иван Петров email ivan@example.com`;
262
+ - `добавь телефон +7 999 123 45 67 к контакту Иван Петров`;
263
+ - `добавь заметку к контакту Иван Петров заметка: родительский комитет`;
264
+ - `покажи контакты без email`;
265
+ - `покажи дубликаты контактов`;
266
+ - `экспортируй контакты в csv`;
267
+ - `сохрани резервную копию контактов на Яндекс Диск`;
268
+ - `импортируй контакты из contacts.csv`;
269
+ - `создай события дней рождения из контактов в календаре`.
270
+ - `включи регулярную проверку контактов каждые 7 дней`;
271
+ - `запусти проверку контактов сейчас`;
272
+ - `включи проверку контактов с backup на Диск`.
273
+
274
+ ### yandex-contacts-combined
275
+
276
+ Комбинированные сценарии с контактами:
277
+
278
+ - отправить письмо контакту по имени;
279
+ - если найдено несколько контактов, попросить уточнить;
280
+ - если у контакта нет email, сказать прямо и не отправлять письмо;
281
+ - отправить контакту публичную ссылку и QR-код на файл или папку Яндекс Диска;
282
+ - создать папку контакта на Яндекс Диске и сохранить туда `contact.vcf` и `README.txt`;
283
+ - создать встречу с контактом в Яндекс Календаре;
284
+ - создать календарное событие для Телемоста с контактом;
285
+ - создать контакт из открытого городского слоя, если у школы или детского сада есть публичный email или телефон.
286
+
287
+ Примеры:
288
+
289
+ - `отправь Петрову письмо текст: встреча завтра в 14:00`;
290
+ - `отправь Иванову ссылку и QR-код на /IOLA/report.pdf`;
291
+ - `создай папку на Яндекс Диске для контакта Иван Петров`;
292
+ - `создай встречу с Иваном Петровым завтра в 15:00`;
293
+ - `создай контакт из школы № 7`.
217
294
 
218
295
  ### yandex-telemost
219
296