@iola_adm/iola-cli 0.2.43 → 0.2.44

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iola_adm/iola-cli",
3
- "version": "0.2.43",
3
+ "version": "0.2.44",
4
4
  "description": "CLI и AI-агент городского округа Йошкар-Ола.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/adm-iola/iola-cli#readme",
package/src/cli.js CHANGED
@@ -16734,8 +16734,12 @@ async function chooseOnboardComponents(status = null) {
16734
16734
  console.log("");
16735
16735
  console.log("Выберите компоненты через запятую:");
16736
16736
  console.log("0. выход в CLI [без настройки] - пропустить мастер");
16737
- for (const item of onboardComponentRows(componentStatus)) {
16738
- console.log(`${item.number}. ${item.title} [${item.status}] - ${item.hint}`);
16737
+ for (const group of onboardComponentGroups(componentStatus)) {
16738
+ console.log("");
16739
+ console.log(group.title);
16740
+ for (const item of group.rows) {
16741
+ console.log(`${item.number}. ${item.title} [${item.status}] - ${item.hint}`);
16742
+ }
16739
16743
  }
16740
16744
  console.log("");
16741
16745
  const rl = readline.createInterface({ input, output });
@@ -16747,19 +16751,18 @@ async function chooseOnboardComponents(status = null) {
16747
16751
  const map = {
16748
16752
  1: "workspace",
16749
16753
  2: "policy",
16750
- 3: "iola",
16751
- 4: "gigachat",
16752
- 5: "openai",
16753
- 6: "openrouter",
16754
- 7: "codex",
16755
- 8: "codex-mcp",
16756
- 9: "archive",
16757
- 10: "index",
16758
- 11: "browser",
16759
- 12: "ollama",
16760
- 13: "yandex",
16761
- 14: "yandex-cloud",
16762
- 15: "yandex-cloud",
16754
+ 3: "archive",
16755
+ 4: "index",
16756
+ 5: "browser",
16757
+ 6: "iola",
16758
+ 7: "ollama",
16759
+ 8: "gigachat",
16760
+ 9: "yandex",
16761
+ 10: "yandex-cloud",
16762
+ 11: "openai",
16763
+ 12: "openrouter",
16764
+ 13: "codex",
16765
+ 14: "codex-mcp",
16763
16766
  };
16764
16767
  return [...selected].map((item) => map[item] || item).filter(Boolean);
16765
16768
  } finally {
@@ -16802,37 +16805,69 @@ async function getOnboardComponentStatus() {
16802
16805
  };
16803
16806
  }
16804
16807
 
16805
- function onboardComponentRows(status) {
16806
- const rows = [
16807
- ["1", "workspace", "workspace и контекст", "рабочая папка, IOLA.md и .iola/context.md"],
16808
- ["2", "policy", "policy analyst", "разрешения и профиль аналитика"],
16809
- ["3", "iola", "IOLA локальная модель", "локальная модель найдена"],
16810
- ["4", "gigachat", "GigaChat API", "authorization key сохранен или есть в env"],
16811
- ["5", "openai", "OpenAI API", "API-ключ сохранен или есть в env"],
16812
- ["6", "openrouter", "OpenRouter API", "API-ключ сохранен или есть в env"],
16813
- ["7", "codex", "Codex CLI", "CLI установлен и авторизация найдена"],
16814
- ["8", "codex-mcp", "MCP для Codex", "можно переустановить/обновить"],
16815
- ["9", "archive", "7-Zip / архивы", "архиватор найден"],
16816
- ["10", "index", "Индекс локальных документов", "настраивается под выбранную папку"],
16817
- ["11", "browser", "Browser runtime", "Playwright/Chromium установлен"],
16818
- ["12", "ollama", "Ollama", "опциональный локальный runtime"],
16819
- ["13", "yandex", "Yandex Connector", "единый вход и категории сервисов Яндекса"],
16820
- ["14", "yandex-cloud", "Yandex Cloud Connector", "геокодинг и YandexGPT"],
16808
+ function onboardComponentGroups(status) {
16809
+ const groups = [
16810
+ {
16811
+ title: "Базовая настройка",
16812
+ rows: [
16813
+ ["1", "workspace", "Рабочая папка и контекст", "IOLA.md и .iola/context.md"],
16814
+ ["2", "policy", "Разрешения и безопасный режим", "профиль аналитика"],
16815
+ ["3", "archive", "7-Zip / архивы", "архиватор найден"],
16816
+ ["4", "index", "Индекс локальных документов", "выбранная папка"],
16817
+ ["5", "browser", "Браузерный модуль", "Playwright/Chromium"],
16818
+ ],
16819
+ },
16820
+ {
16821
+ title: "Локальный AI",
16822
+ rows: [
16823
+ ["6", "iola", "IOLA локальная модель", "локальная модель найдена"],
16824
+ ["7", "ollama", "Ollama", "опциональный локальный runtime"],
16825
+ ],
16826
+ },
16827
+ {
16828
+ title: "Российские AI и сервисы",
16829
+ rows: [
16830
+ ["8", "gigachat", "GigaChat API", "authorization key сохранен или есть в env"],
16831
+ ["9", "yandex", "Yandex Connector", "Диск, Почта, Календарь, Контакты"],
16832
+ ["10", "yandex-cloud", "Yandex Cloud Connector", "геокодинг и YandexGPT"],
16833
+ ],
16834
+ },
16835
+ {
16836
+ title: "Зарубежные AI",
16837
+ rows: [
16838
+ ["11", "openai", "OpenAI API", "API-ключ сохранен или есть в env"],
16839
+ ["12", "openrouter", "OpenRouter API", "API-ключ сохранен или есть в env"],
16840
+ ],
16841
+ },
16842
+ {
16843
+ title: "Codex",
16844
+ rows: [
16845
+ ["13", "codex", "Codex CLI", "CLI установлен и авторизация найдена"],
16846
+ ["14", "codex-mcp", "Подключение IOLA к Codex", "MCP для Codex"],
16847
+ ],
16848
+ },
16821
16849
  ];
16822
- return rows.map(([number, key, title, hint]) => ({ number, key, title, hint, status: status[key] ? "готово" : "не настроено" }));
16850
+ return groups.map((group) => ({
16851
+ ...group,
16852
+ rows: group.rows.map(([number, key, title, hint]) => ({ number, key, title, hint, status: status[key] ? "готово" : "не настроено" })),
16853
+ }));
16854
+ }
16855
+
16856
+ function onboardComponentRows(status) {
16857
+ return onboardComponentGroups(status).flatMap((group) => group.rows);
16823
16858
  }
16824
16859
 
16825
16860
  function defaultOnboardSelection(status) {
16826
16861
  const defaults = [];
16827
16862
  if (!status.workspace) defaults.push("1");
16828
16863
  if (!status.policy) defaults.push("2");
16829
- if (!status.iola) defaults.push("3");
16830
- if (!status.archive) defaults.push("9");
16864
+ if (!status.archive) defaults.push("3");
16865
+ if (!status.iola) defaults.push("6");
16831
16866
  return defaults.length ? defaults : ["1", "2"];
16832
16867
  }
16833
16868
 
16834
16869
  function defaultOnboardComponents(status) {
16835
- const map = { 1: "workspace", 2: "policy", 3: "iola", 4: "gigachat", 5: "openai", 6: "openrouter", 7: "codex", 8: "codex-mcp", 9: "archive", 10: "index", 11: "browser", 12: "ollama", 13: "yandex", 14: "yandex-cloud", 15: "yandex-cloud" };
16870
+ const map = { 1: "workspace", 2: "policy", 3: "archive", 4: "index", 5: "browser", 6: "iola", 7: "ollama", 8: "gigachat", 9: "yandex", 10: "yandex-cloud", 11: "openai", 12: "openrouter", 13: "codex", 14: "codex-mcp" };
16836
16871
  return defaultOnboardSelection(status).map((item) => map[item]).filter(Boolean);
16837
16872
  }
16838
16873
 
@@ -18,7 +18,7 @@ iola master
18
18
  В мастере выберите:
19
19
 
20
20
  ```text
21
- 14. Yandex Cloud Connector - геокодинг и YandexGPT
21
+ 10. Yandex Cloud Connector - геокодинг и YandexGPT
22
22
  ```
23
23
 
24
24
  CLI не просто открывает консоль. Он печатает короткую инструкцию, что делать дальше, и только потом просит вставить ключи.
@@ -12,57 +12,53 @@ iola master
12
12
 
13
13
  ## Компоненты
14
14
 
15
- ### 1. workspace и контекст
15
+ ```text
16
+ 0. выход в CLI [без настройки] - пропустить мастер
17
+
18
+ Базовая настройка
19
+ 1. Рабочая папка и контекст
20
+ 2. Разрешения и безопасный режим
21
+ 3. 7-Zip / архивы
22
+ 4. Индекс локальных документов
23
+ 5. Браузерный модуль
24
+
25
+ Локальный AI
26
+ 6. IOLA локальная модель
27
+ 7. Ollama
28
+
29
+ Российские AI и сервисы
30
+ 8. GigaChat API
31
+ 9. Yandex Connector
32
+ 10. Yandex Cloud Connector
33
+
34
+ Зарубежные AI
35
+ 11. OpenAI API
36
+ 12. OpenRouter API
37
+
38
+ Codex
39
+ 13. Codex CLI
40
+ 14. Подключение IOLA к Codex
41
+ ```
42
+
43
+ ## Базовая настройка
44
+
45
+ ### 1. Рабочая папка и контекст
16
46
 
17
47
  Создает рабочую среду текущей папки: `.iola/`, `IOLA.md` и `.iola/context.md`.
18
48
 
19
49
  Нужно, если агент будет работать с локальными файлами, документами, задачами, артефактами и контекстом проекта.
20
50
 
21
- ### 2. policy analyst
51
+ ### 2. Разрешения и безопасный режим
22
52
 
23
53
  Включает профиль разрешений для аналитической работы: открытые данные, отчеты, безопасные локальные операции.
24
54
 
25
- ### 3. IOLA локальная модель
26
-
27
- Проверяет штатную локальную модель IOLA и готовит ее к работе через доступный runtime.
28
-
29
- Если модель уже скачана и доступна, пункт показывается как `готово`.
30
-
31
- После настройки локальную модель можно менять в интерактивном агенте через `/model`. Помимо штатной IOLA-модели можно выбрать установленную или рекомендуемую Ollama-модель, либо вручную ввести имя любой модели из библиотеки Ollama.
32
-
33
- ### 4. GigaChat API
34
-
35
- Настраивает профиль GigaChat и сохраняет authorization key локально у пользователя.
36
-
37
- Российский провайдер вызывается напрямую, без gateway/proxy.
38
-
39
- ### 5. OpenAI API
40
-
41
- Настраивает профиль OpenAI и сохраняет API-ключ локально у пользователя.
42
-
43
- После сохранения ключа мастер предлагает выбрать модель из доступного списка.
44
-
45
- ### 6. OpenRouter API
46
-
47
- Настраивает профиль OpenRouter и сохраняет API-ключ локально у пользователя.
48
-
49
- После сохранения ключа мастер предлагает выбрать разработчика моделей OpenRouter, а затем одну из свежих моделей для текстовой работы. В списке моделей `0` возвращает к выбору разработчика.
50
-
51
- ### 7. Codex CLI
52
-
53
- Проверяет наличие Codex CLI и авторизации. Если Codex уже установлен и вход выполнен, пункт показывается как `готово`.
54
-
55
- ### 8. MCP для Codex
56
-
57
- Добавляет MCP-сервер открытых данных Йошкар-Олы в Codex. Этот пункт можно запускать повторно для обновления подключения.
58
-
59
- ### 9. 7-Zip / архивы
55
+ ### 3. 7-Zip / архивы
60
56
 
61
57
  Проверяет 7-Zip. Если архиватор не найден, мастер устанавливает его.
62
58
 
63
59
  Нужен для чтения, распаковки, сборки и индексирования архивов.
64
60
 
65
- ### 10. Индекс локальных документов
61
+ ### 4. Индекс локальных документов
66
62
 
67
63
  Готовит режим чтения файлов и подсказывает команду индексирования локальной папки:
68
64
 
@@ -70,17 +66,35 @@ iola master
70
66
  iola index folder ./docs
71
67
  ```
72
68
 
73
- ### 11. Browser runtime
69
+ ### 5. Браузерный модуль
74
70
 
75
71
  Проверяет Playwright/Chromium runtime. Нужен для браузерного агента.
76
72
 
77
- ### 12. Ollama
73
+ ## Локальный AI
74
+
75
+ ### 6. IOLA локальная модель
76
+
77
+ Проверяет штатную локальную модель IOLA и готовит ее к работе через доступный runtime.
78
+
79
+ Если модель уже скачана и доступна, пункт показывается как `готово`.
80
+
81
+ После настройки локальную модель можно менять в интерактивном агенте через `/model`. Помимо штатной IOLA-модели можно выбрать установленную или рекомендуемую Ollama-модель, либо вручную ввести имя любой модели из библиотеки Ollama.
82
+
83
+ ### 7. Ollama
78
84
 
79
85
  Опциональный локальный runtime для выбора сторонних моделей из библиотеки Ollama.
80
86
 
81
87
  Если runtime уже установлен, пункт показывается как `готово`.
82
88
 
83
- ### 13. Yandex Connector
89
+ ## Российские AI и сервисы
90
+
91
+ ### 8. GigaChat API
92
+
93
+ Настраивает профиль GigaChat и сохраняет authorization key локально у пользователя.
94
+
95
+ Российский провайдер вызывается напрямую, без gateway/proxy.
96
+
97
+ ### 9. Yandex Connector
84
98
 
85
99
  Настраивает единый коннектор пользовательских сервисов Яндекса.
86
100
 
@@ -95,7 +109,7 @@ iola index folder ./docs
95
109
 
96
110
  Инструкция: [Yandex Connector](Yandex-Connector).
97
111
 
98
- ### 14. Yandex Cloud Connector
112
+ ### 10. Yandex Cloud Connector
99
113
 
100
114
  Настраивает Yandex Cloud Connector: геокодер и, при необходимости, YandexGPT.
101
115
 
@@ -107,6 +121,30 @@ iola index folder ./docs
107
121
 
108
122
  Инструкция: [Yandex Cloud Connector](Yandex-Cloud-Connector).
109
123
 
124
+ ## Зарубежные AI
125
+
126
+ ### 11. OpenAI API
127
+
128
+ Настраивает профиль OpenAI и сохраняет API-ключ локально у пользователя.
129
+
130
+ После сохранения ключа мастер предлагает выбрать модель из доступного списка.
131
+
132
+ ### 12. OpenRouter API
133
+
134
+ Настраивает профиль OpenRouter и сохраняет API-ключ локально у пользователя.
135
+
136
+ После сохранения ключа мастер предлагает выбрать разработчика моделей OpenRouter, а затем одну из свежих моделей для текстовой работы. В списке моделей `0` возвращает к выбору разработчика.
137
+
138
+ ## Codex
139
+
140
+ ### 13. Codex CLI
141
+
142
+ Проверяет наличие Codex CLI и авторизации. Если Codex уже установлен и вход выполнен, пункт показывается как `готово`.
143
+
144
+ ### 14. Подключение IOLA к Codex
145
+
146
+ Добавляет MCP-сервер открытых данных Йошкар-Олы в Codex. Этот пункт можно запускать повторно для обновления подключения.
147
+
110
148
  ## Повторный запуск
111
149
 
112
150
  Если компонент уже настроен, его можно не выбирать. Если нужно переустановить или обновить компонент, выберите его номер вручную.