@iola_adm/iola-cli 0.2.32 → 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.
- package/README.md +2 -1
- package/package.json +4 -1
- package/skills/user-skills/SKILL.md +40 -0
- package/skills/yandex-services/SKILL.md +55 -4
- package/src/cli.js +2046 -100
- package/test/smoke-test.js +1 -1
- package/wiki/Skills-/320/270-toolsets.md +23 -2
- package/wiki/Yandex-Connector.md +46 -1
- 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 +79 -2
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
|
-
|
|
205
|
+
Yandex tools уже доступны: профиль Yandex ID, расширенная работа с Яндекс Диском (место, список, поиск, карточка, чтение текста, папки, загрузка, скачивание, ссылки, QR-коды к публичным ссылкам, отправка ссылки и QR по почте, перемещение, копирование, переименование, корзина), статус/список/поиск/чтение/отправка Яндекс Почты, события Календаря, расширенные Яндекс Контакты (поиск, создание, обновление, удаление, импорт/экспорт, дубликаты, backup на Диск, дни рождения в календарь, регулярная contacts-maintenance проверка) и комбинированные сценарии: письмо контакту, ссылка+QR контакту, папка контакта на Диске, встреча/Телемост с контактом. Отправка письма, удаление/перемещение файлов, публикация ссылок, изменение контактов и создание событий требуют явного подтверждения.
|
|
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.
|
|
3
|
+
"version": "0.2.34",
|
|
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` - показать последние письма.
|
|
@@ -42,16 +54,55 @@ description: Сервисы Яндекса через Yandex Connector: ID, Ди
|
|
|
42
54
|
- `yandex_calendar_create_event` - создать событие.
|
|
43
55
|
- `yandex_contacts_status` - проверить доступ к Яндекс Контактам.
|
|
44
56
|
- `yandex_contacts_list` - показать контакты.
|
|
45
|
-
- `yandex_contacts_search` - найти
|
|
46
|
-
- `
|
|
57
|
+
- `yandex_contacts_search` - найти контакт по имени, email, телефону, организации, адресу или заметке.
|
|
58
|
+
- `yandex_contacts_get` - открыть карточку контакта.
|
|
59
|
+
- `yandex_contacts_create` - создать новый контакт с email или телефоном.
|
|
60
|
+
- `yandex_contacts_update` - обновить имя, email, телефон, адрес, заметку, день рождения, организацию или должность.
|
|
61
|
+
- `yandex_contacts_delete` - удалить контакт.
|
|
47
62
|
- `yandex_contacts_add_email` - добавить email в существующий контакт.
|
|
63
|
+
- `yandex_contacts_add_phone` - добавить телефон.
|
|
64
|
+
- `yandex_contacts_add_address` - добавить адрес.
|
|
65
|
+
- `yandex_contacts_add_note` - добавить заметку.
|
|
66
|
+
- `yandex_contacts_add_birthday` - добавить день рождения.
|
|
67
|
+
- `yandex_contacts_add_org` - добавить организацию и должность.
|
|
68
|
+
- `yandex_contacts_remove_email` - удалить email из карточки.
|
|
69
|
+
- `yandex_contacts_remove_phone` - удалить телефон из карточки.
|
|
70
|
+
- `yandex_contacts_export_vcard` - экспортировать контакты в vCard.
|
|
71
|
+
- `yandex_contacts_export_csv` - экспортировать контакты в CSV.
|
|
72
|
+
- `yandex_contacts_import_vcard` - импортировать контакты из vCard.
|
|
73
|
+
- `yandex_contacts_import_csv` - импортировать контакты из CSV.
|
|
74
|
+
- `yandex_contacts_find_incomplete` - найти неполные контакты.
|
|
75
|
+
- `yandex_contacts_find_duplicates` - найти дубликаты.
|
|
76
|
+
- `yandex_contacts_backup_to_disk` - сохранить резервную копию контактов на Яндекс Диск.
|
|
77
|
+
- `yandex_contacts_birthdays_to_calendar` - создать события дней рождения в календаре.
|
|
78
|
+
- `yandex_contact_send_mail` - отправить письмо контакту по имени.
|
|
79
|
+
- `yandex_contact_send_disk_link_qr` - отправить контакту ссылку и QR-код на объект Яндекс Диска.
|
|
80
|
+
- `yandex_contact_create_disk_folder` - создать папку контакта на Диске и сохранить туда vCard/README.
|
|
81
|
+
- `yandex_contact_create_calendar_event` - создать встречу с контактом.
|
|
82
|
+
- `yandex_contact_create_telemost_event` - создать календарное событие для Телемоста с контактом.
|
|
83
|
+
- `yandex_contact_from_public_entity` - создать контакт из открытого городского слоя, если у организации есть email или телефон.
|
|
48
84
|
- `yandex_telemost_create_event` - создать календарное событие для встречи.
|
|
85
|
+
- Регулярная проверка контактов включается командой `iola yandex contacts-maintenance on --days 7`, выключается `iola yandex contacts-maintenance off`, ручная проверка `iola yandex contacts-maintenance tick`. Флаг `--backup` включает backup контактов на Диск при tick.
|
|
86
|
+
|
|
87
|
+
Комбинированные сценарии:
|
|
88
|
+
|
|
89
|
+
- Если пользователь просит "сделай ссылку и QR", используй `yandex_disk_share_qr`.
|
|
90
|
+
- Если пользователь просит "отправь ссылку/QR по почте" или "отправь ссылку контакту", используй `yandex_disk_share_email`.
|
|
91
|
+
- Если пользователь просит "перенеси/скопируй файлы из папки, создай ссылку/QR и отправь", используй `yandex_disk_package_share_email`.
|
|
92
|
+
- Если получатель указан именем, сначала ищи его в контактах. Если контактов несколько или email не найден, попроси уточнение.
|
|
93
|
+
- Если пользователь просит отправить письмо контакту, создать встречу с контактом или отправить ссылку контакту, используй специализированные `yandex_contact_*` tools, а не ручную цепочку из нескольких tools.
|
|
94
|
+
- Если пользователь просит создать папку для контакта на Яндекс Диске, используй `yandex_contact_create_disk_folder`.
|
|
95
|
+
- Если пользователь просит резервную копию контактов, используй `yandex_contacts_backup_to_disk`.
|
|
96
|
+
- Если пользователь просит регулярную проверку контактов, дубликатов или неполных карточек, используй `iola yandex contacts-maintenance ...`.
|
|
97
|
+
- Если пользователь просит импорт/экспорт контактов, используй CSV или vCard по расширению файла или явному формату.
|
|
98
|
+
- QR-код создается локально из публичной ссылки Яндекс Диска, сохраняется PNG-файлом на Яндекс Диск рядом с исходным объектом и публикуется отдельной ссылкой.
|
|
99
|
+
- REST API Яндекс Диска не отдает отдельное поле готового QR-кода, поэтому CLI не вытаскивает QR из API, а создает QR локально без сторонних QR-сервисов.
|
|
49
100
|
|
|
50
101
|
Безопасность:
|
|
51
102
|
|
|
52
|
-
- Для отправки письма, ответа на письмо, удаления письма, удаления файлов, публикации ссылки и создания событий нужен явный запрос пользователя и `confirm=true`.
|
|
103
|
+
- Для отправки письма, ответа на письмо, удаления письма, удаления файлов, перемещения/копирования/переименования объектов, восстановления/очистки корзины, публикации ссылки, создания QR-ссылки, отправки ссылки по почте и создания событий нужен явный запрос пользователя и `confirm=true`.
|
|
53
104
|
- Для пересылки письма, создания контакта, создания события из письма и добавления отправителя в контакты также нужен явный запрос пользователя и `confirm=true`.
|
|
54
|
-
- Не отправляй письма, не отвечай на письма, не пересылай письма, не создавай контакты/события, не удаляй
|
|
105
|
+
- Не отправляй письма, не отвечай на письма, не пересылай письма, не создавай контакты/события, не удаляй письма/файлы, не перемещай/копируй/переименовывай объекты и не публикуй ссылки по косвенному намерению.
|
|
55
106
|
- Список писем и поиск не должны помечать письма прочитанными. Чтение письма по просьбе пользователя помечает письмо прочитанным.
|
|
56
107
|
- Если пользователь просит отправить письмо по имени контакта, сначала ищи контакт. Если контактов несколько, покажи варианты и попроси уточнить. Если контакта нет или у него нет email, скажи прямо.
|
|
57
108
|
- Если пользователь отправил письмо на введенный email и указал имя контакта, можно предложить добавить email в найденный контакт без email.
|