@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 CHANGED
@@ -90,6 +90,7 @@ iola agent
90
90
 
91
91
  ```bash
92
92
  iola skills list
93
+ iola skills create mail-digest --description "Сводка почты" --instructions "Когда пользователь просит сводку почты, найди непрочитанные письма и кратко сгруппируй их по отправителям." --allowed-tools yandex_mail_list,yandex_mail_read --enable
93
94
  iola tools toolsets
94
95
  iola files mode read-only
95
96
  iola files tree .
@@ -201,7 +202,7 @@ Yandex Connector использует две встроенные OAuth-груп
201
202
 
202
203
  В `/yandex` функции выбираются номерами через запятую, как в мастере настройки. Там же есть пункт `Удалить подключение-коннектор`, который чистит локальные токены и настройки Yandex Connector. Мастер считает коннектор готовым только после токенов обеих групп.
203
204
 
204
- Первый набор Yandex tools уже доступен: профиль Yandex ID, список/поиск/папки/ссылки Яндекс Диска, статус/список/поиск/чтение/отправка Яндекс Почты, события Календаря, Контакты и подготовка встречи через календарь. Отправка письма, удаление файлов, публикация ссылок и создание событий требуют явного подтверждения.
205
+ Yandex tools уже доступны: профиль Yandex ID, расширенная работа с Яндекс Диском (место, список, поиск, карточка, чтение текста, папки, загрузка, скачивание, ссылки, QR-коды к публичным ссылкам, отправка ссылки и QR по почте, перемещение, копирование, переименование, корзина), статус/список/поиск/чтение/отправка Яндекс Почты, полноценная работа с Календарем через CalDAV (календари, список, поиск, создание, перенос, редактирование, напоминания, повторы, удаление), Яндекс Документы/360 через Диск (создание текстовых документов, поиск, чтение, ссылки/QR, переименование, удаление), расширенные Яндекс Контакты (поиск, создание, обновление, удаление, импорт/экспорт, дубликаты, backup на Диск, дни рождения в календарь, регулярная contacts-maintenance проверка) и комбинированные сценарии: письмо контакту, ссылка+QR контакту, папка контакта на Диске, встреча/Телемост с контактом. Телемост пытается использовать прямой API, а если он недоступен текущему аккаунту, честно создает календарное событие без выдуманной ссылки. Отправка письма, удаление/перемещение файлов, публикация ссылок, изменение контактов, документов и событий требуют явного подтверждения.
205
206
 
206
207
  Инструкция: [Yandex Connector](https://github.com/adm-iola/iola-cli/wiki/Yandex-Connector).
207
208
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iola_adm/iola-cli",
3
- "version": "0.2.33",
3
+ "version": "0.2.35",
4
4
  "description": "CLI и AI-агент городского округа Йошкар-Ола.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/adm-iola/iola-cli#readme",
@@ -42,5 +42,8 @@
42
42
  ],
43
43
  "engines": {
44
44
  "node": ">=22.5.0"
45
+ },
46
+ "dependencies": {
47
+ "qrcode": "^1.5.4"
45
48
  }
46
49
  }
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: user-skills
3
+ description: Создание и управление пользовательскими skills на базе встроенных tools iola-cli.
4
+ ---
5
+
6
+ Используй этот skill, когда пользователь просит создать, добавить, изменить, включить, выключить или удалить пользовательский skill/скилл/навык.
7
+
8
+ Пользовательские skills могут описывать любые сценарии работы CLI, но должны опираться на встроенные безопасные механизмы `iola-cli`: открытые данные, локальные файлы, Яндекс-сервисы, календарь, почту, контакты, Диск, browser runtime, cron, MCP, отчеты и память.
9
+
10
+ Не создавай произвольный исполняемый JavaScript/PowerShell/Python-код внутри skill. Skill должен быть инструкцией и правилами использования существующих tools.
11
+
12
+ Доступные tools:
13
+
14
+ - `user_skill_list` - показать пользовательские skills.
15
+ - `user_skill_create` - создать пользовательский skill в `~/.iola/skills`.
16
+ - `user_skill_enable` - включить skill.
17
+ - `user_skill_disable` - выключить skill.
18
+ - `user_skill_delete` - удалить пользовательский skill.
19
+
20
+ Схема `user_skill_create`:
21
+
22
+ ```json
23
+ {
24
+ "name": "short-skill-name",
25
+ "description": "Короткое описание",
26
+ "instructions": "Что skill должен делать, когда включается, какие уточнения задавать, какие tools использовать.",
27
+ "tools": ["yandex_mail_search", "yandex_disk_save_text"],
28
+ "enable": true,
29
+ "confirm": true
30
+ }
31
+ ```
32
+
33
+ Правила:
34
+
35
+ - Создавай skill только по явной просьбе пользователя.
36
+ - Для `user_skill_create` и `user_skill_delete` всегда передавай `confirm=true`.
37
+ - Если пользователь описал идею нечетко, сначала уточни, что является триггером, какие данные использовать и какое действие выполнить.
38
+ - В инструкциях skill явно указывай, какие действия считаются опасными и требуют подтверждения пользователя.
39
+ - Если skill должен писать файлы, отправлять письма, удалять данные, публиковать ссылки или менять внешние сервисы, в инструкциях обязательно требуй явного подтверждения пользователя.
40
+ - Не сохраняй в skill OAuth-токены, API-ключи, пароли и другие секреты.
@@ -14,12 +14,24 @@ description: Сервисы Яндекса через Yandex Connector: ID, Ди
14
14
  - `yandex_disk_ls` - показать папку на Яндекс Диске.
15
15
  - `yandex_disk_mkdir` - создать папку на Яндекс Диске.
16
16
  - `yandex_disk_find` - найти файл или папку на Яндекс Диске.
17
+ - `yandex_disk_stat` - получить карточку файла или папки: тип, размер, даты, публичная ссылка.
18
+ - `yandex_disk_exists` - проверить, есть ли файл или папка.
19
+ - `yandex_disk_read_text` - прочитать небольшой текстовый файл с Диска.
17
20
  - `yandex_disk_save_text` - сохранить текстовый результат в файл на Яндекс Диске.
18
21
  - `yandex_disk_upload` - загрузить локальный файл на Яндекс Диск.
19
22
  - `yandex_disk_download` - скачать файл с Яндекс Диска.
23
+ - `yandex_disk_move` - переместить файл или папку.
24
+ - `yandex_disk_copy` - скопировать файл или папку.
25
+ - `yandex_disk_rename` - переименовать файл или папку.
20
26
  - `yandex_disk_share` - сделать публичную ссылку.
27
+ - `yandex_disk_share_qr` - сделать публичную ссылку, создать локальный QR-код из ссылки, сохранить QR PNG на Диск и опубликовать QR.
28
+ - `yandex_disk_share_email` - сделать публичную ссылку, QR-код и отправить ссылку + QR по Яндекс Почте email-адресу или контакту.
29
+ - `yandex_disk_package_share_email` - создать/подготовить папку, перенести или скопировать в нее файлы из другой папки, сделать ссылку + QR и отправить по почте.
21
30
  - `yandex_disk_unshare` - снять публичную ссылку.
22
31
  - `yandex_disk_delete` - удалить файл или папку.
32
+ - `yandex_disk_trash_list` - показать корзину Диска.
33
+ - `yandex_disk_restore` - восстановить объект из корзины.
34
+ - `yandex_disk_empty_trash` - очистить корзину.
23
35
  - `yandex_mail_status` - проверить доступ к Яндекс Почте.
24
36
  - `yandex_mail_folders` - показать папки Яндекс Почты.
25
37
  - `yandex_mail_list` - показать последние письма.
@@ -38,20 +50,80 @@ description: Сервисы Яндекса через Yandex Connector: ID, Ди
38
50
  - `yandex_mail_create_task` - создать локальную задачу по письму.
39
51
  - Автоопрос почты включается командой `iola yandex mail-watch on --minutes 5`, выключается `iola yandex mail-watch off`, ручная проверка `iola yandex mail-watch tick`.
40
52
  - `yandex_calendar_status` - проверить доступ к Яндекс Календарю.
41
- - `yandex_calendar_list` - показать события.
42
- - `yandex_calendar_create_event` - создать событие.
53
+ - `yandex_calendar_calendars` - показать доступные календари.
54
+ - `yandex_calendar_list` - показать ближайшие события.
55
+ - `yandex_calendar_search` - найти событие по названию, описанию, месту, UID или дате.
56
+ - `yandex_calendar_get` - открыть карточку события.
57
+ - `yandex_calendar_create_event` - создать событие с участниками, местом и напоминаниями.
58
+ - `yandex_calendar_create_recurring_event` - создать повторяющееся событие.
59
+ - `yandex_calendar_update` - изменить название, описание, место, время, участников, повторы или напоминания.
60
+ - `yandex_calendar_move` - перенести событие на новую дату/время.
61
+ - `yandex_calendar_add_reminder` - добавить напоминание к событию.
62
+ - `yandex_calendar_delete` - удалить событие.
63
+ - `yandex_docs_status` - проверить работу Яндекс Документов / 360 через Диск.
64
+ - `yandex_docs_list` - показать документы на Яндекс Диске.
65
+ - `yandex_docs_find` - найти документ по названию.
66
+ - `yandex_docs_create_text` - создать текстовый/Markdown/HTML-документ на Яндекс Диске.
67
+ - `yandex_docs_read` - прочитать небольшой текстовый документ.
68
+ - `yandex_docs_share` - создать публичную ссылку и QR-код на документ.
69
+ - `yandex_docs_rename` - переименовать документ.
70
+ - `yandex_docs_delete` - удалить документ.
71
+ - `yandex_docs_save_answer` - сохранить текст ответа как документ.
43
72
  - `yandex_contacts_status` - проверить доступ к Яндекс Контактам.
44
73
  - `yandex_contacts_list` - показать контакты.
45
- - `yandex_contacts_search` - найти контакт.
46
- - `yandex_contacts_create` - создать новый контакт.
74
+ - `yandex_contacts_search` - найти контакт по имени, email, телефону, организации, адресу или заметке.
75
+ - `yandex_contacts_get` - открыть карточку контакта.
76
+ - `yandex_contacts_create` - создать новый контакт с email или телефоном.
77
+ - `yandex_contacts_update` - обновить имя, email, телефон, адрес, заметку, день рождения, организацию или должность.
78
+ - `yandex_contacts_delete` - удалить контакт.
47
79
  - `yandex_contacts_add_email` - добавить email в существующий контакт.
48
- - `yandex_telemost_create_event` - создать календарное событие для встречи.
80
+ - `yandex_contacts_add_phone` - добавить телефон.
81
+ - `yandex_contacts_add_address` - добавить адрес.
82
+ - `yandex_contacts_add_note` - добавить заметку.
83
+ - `yandex_contacts_add_birthday` - добавить день рождения.
84
+ - `yandex_contacts_add_org` - добавить организацию и должность.
85
+ - `yandex_contacts_remove_email` - удалить email из карточки.
86
+ - `yandex_contacts_remove_phone` - удалить телефон из карточки.
87
+ - `yandex_contacts_export_vcard` - экспортировать контакты в vCard.
88
+ - `yandex_contacts_export_csv` - экспортировать контакты в CSV.
89
+ - `yandex_contacts_import_vcard` - импортировать контакты из vCard.
90
+ - `yandex_contacts_import_csv` - импортировать контакты из CSV.
91
+ - `yandex_contacts_find_incomplete` - найти неполные контакты.
92
+ - `yandex_contacts_find_duplicates` - найти дубликаты.
93
+ - `yandex_contacts_backup_to_disk` - сохранить резервную копию контактов на Яндекс Диск.
94
+ - `yandex_contacts_birthdays_to_calendar` - создать события дней рождения в календаре.
95
+ - `yandex_contact_send_mail` - отправить письмо контакту по имени.
96
+ - `yandex_contact_send_disk_link_qr` - отправить контакту ссылку и QR-код на объект Яндекс Диска.
97
+ - `yandex_contact_create_disk_folder` - создать папку контакта на Диске и сохранить туда vCard/README.
98
+ - `yandex_contact_create_calendar_event` - создать встречу с контактом.
99
+ - `yandex_contact_create_telemost_event` - создать календарное событие для Телемоста с контактом.
100
+ - `yandex_contact_from_public_entity` - создать контакт из открытого городского слоя, если у организации есть email или телефон.
101
+ - `yandex_telemost_status` - проверить режим Телемоста.
102
+ - `yandex_telemost_create_event` - создать встречу: если прямой Telemost API доступен аккаунту, добавить ссылку; иначе создать календарное событие с честным fallback.
103
+ - Регулярная проверка контактов включается командой `iola yandex contacts-maintenance on --days 7`, выключается `iola yandex contacts-maintenance off`, ручная проверка `iola yandex contacts-maintenance tick`. Флаг `--backup` включает backup контактов на Диск при tick.
104
+
105
+ Комбинированные сценарии:
106
+
107
+ - Если пользователь просит "сделай ссылку и QR", используй `yandex_disk_share_qr`.
108
+ - Если пользователь просит "отправь ссылку/QR по почте" или "отправь ссылку контакту", используй `yandex_disk_share_email`.
109
+ - Если пользователь просит "перенеси/скопируй файлы из папки, создай ссылку/QR и отправь", используй `yandex_disk_package_share_email`.
110
+ - Если получатель указан именем, сначала ищи его в контактах. Если контактов несколько или email не найден, попроси уточнение.
111
+ - Если пользователь просит отправить письмо контакту, создать встречу с контактом или отправить ссылку контакту, используй специализированные `yandex_contact_*` tools, а не ручную цепочку из нескольких tools.
112
+ - Если пользователь просит создать папку для контакта на Яндекс Диске, используй `yandex_contact_create_disk_folder`.
113
+ - Если пользователь просит создать/найти/прочитать/переименовать/удалить документ именно на Яндекс Диске или в Яндекс 360, используй `yandex_docs_*`, а не общий список файлов.
114
+ - Если пользователь просит перенести событие, добавить напоминание или удалить встречу, используй `yandex_calendar_move`, `yandex_calendar_add_reminder`, `yandex_calendar_delete`.
115
+ - Если пользователь просит Телемост, используй `yandex_telemost_create_event`. Не обещай ссылку Телемоста, если API ее не вернул.
116
+ - Если пользователь просит резервную копию контактов, используй `yandex_contacts_backup_to_disk`.
117
+ - Если пользователь просит регулярную проверку контактов, дубликатов или неполных карточек, используй `iola yandex contacts-maintenance ...`.
118
+ - Если пользователь просит импорт/экспорт контактов, используй CSV или vCard по расширению файла или явному формату.
119
+ - QR-код создается локально из публичной ссылки Яндекс Диска, сохраняется PNG-файлом на Яндекс Диск рядом с исходным объектом и публикуется отдельной ссылкой.
120
+ - REST API Яндекс Диска не отдает отдельное поле готового QR-кода, поэтому CLI не вытаскивает QR из API, а создает QR локально без сторонних QR-сервисов.
49
121
 
50
122
  Безопасность:
51
123
 
52
- - Для отправки письма, ответа на письмо, удаления письма, удаления файлов, публикации ссылки и создания событий нужен явный запрос пользователя и `confirm=true`.
124
+ - Для отправки письма, ответа на письмо, удаления письма, удаления файлов, перемещения/копирования/переименования объектов, восстановления/очистки корзины, публикации ссылки, создания QR-ссылки, отправки ссылки по почте, создания/изменения/удаления событий и создания/изменения/удаления документов нужен явный запрос пользователя и `confirm=true`.
53
125
  - Для пересылки письма, создания контакта, создания события из письма и добавления отправителя в контакты также нужен явный запрос пользователя и `confirm=true`.
54
- - Не отправляй письма, не отвечай на письма, не пересылай письма, не создавай контакты/события, не удаляй письма/файлы и не публикуй ссылки по косвенному намерению.
126
+ - Не отправляй письма, не отвечай на письма, не пересылай письма, не создавай контакты/события, не удаляй письма/файлы, не перемещай/копируй/переименовывай объекты и не публикуй ссылки по косвенному намерению.
55
127
  - Список писем и поиск не должны помечать письма прочитанными. Чтение письма по просьбе пользователя помечает письмо прочитанным.
56
128
  - Если пользователь просит отправить письмо по имени контакта, сначала ищи контакт. Если контактов несколько, покажи варианты и попроси уточнить. Если контакта нет или у него нет email, скажи прямо.
57
129
  - Если пользователь отправил письмо на введенный email и указал имя контакта, можно предложить добавить email в найденный контакт без email.