@iola_adm/iola-cli 0.2.44 → 0.2.45

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.44",
3
+ "version": "0.2.45",
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
@@ -16668,6 +16668,7 @@ async function onboard(args = []) {
16668
16668
  if (components.includes("workspace")) await handleWorkspace(["init"]);
16669
16669
  if (components.includes("policy")) await handlePolicy(["use", "analyst"]);
16670
16670
  if (components.includes("archive")) await ensureArchiveTool({ install: true });
16671
+ if (components.includes("city-data")) await checkHealth([]);
16671
16672
  if (components.includes("iola")) {
16672
16673
  await setupIolaLocal(["--yes"]);
16673
16674
  }
@@ -16754,15 +16755,16 @@ async function chooseOnboardComponents(status = null) {
16754
16755
  3: "archive",
16755
16756
  4: "index",
16756
16757
  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",
16758
+ 6: "city-data",
16759
+ 7: "codex-mcp",
16760
+ 8: "iola",
16761
+ 9: "ollama",
16762
+ 10: "gigachat",
16763
+ 11: "yandex",
16764
+ 12: "yandex-cloud",
16765
+ 13: "openai",
16766
+ 14: "openrouter",
16767
+ 15: "codex",
16766
16768
  };
16767
16769
  return [...selected].map((item) => map[item] || item).filter(Boolean);
16768
16770
  } finally {
@@ -16775,7 +16777,7 @@ function isOnboardExitAnswer(answer) {
16775
16777
  }
16776
16778
 
16777
16779
  async function getOnboardComponentStatus() {
16778
- const [config, readiness, browser, archive, codexVersion, ollamaVersion, yandexGeocoderKey, secrets] = await Promise.all([
16780
+ const [config, readiness, browser, archive, codexVersion, ollamaVersion, yandexGeocoderKey, secrets, cityDataHealth] = await Promise.all([
16779
16781
  loadConfig(),
16780
16782
  getAiReadiness(),
16781
16783
  getBrowserStatus(),
@@ -16784,6 +16786,7 @@ async function getOnboardComponentStatus() {
16784
16786
  getOllamaVersion(),
16785
16787
  getYandexGeocoderKey(),
16786
16788
  loadSecrets(),
16789
+ getMcpBaseUrl().then((baseUrl) => probeEndpoint(`${baseUrl}/mcp-health`)),
16787
16790
  ]);
16788
16791
  const workspaceReady = existsSync(PROJECT_CONTEXT_FILE) || existsSync(PROJECT_CONTEXT_DIR_FILE) || existsSync(PROJECT_IOLA_DIR);
16789
16792
  const policyReady = (config.toolsets?.enabled || []).includes("analyst");
@@ -16798,6 +16801,7 @@ async function getOnboardComponentStatus() {
16798
16801
  openrouter: Boolean(readiness.openrouter),
16799
16802
  codex: Boolean(codexVersion !== "не найден" && readiness.codex),
16800
16803
  "codex-mcp": false,
16804
+ "city-data": cityDataHealth === "доступен",
16801
16805
  archive: Boolean(archive),
16802
16806
  index: false,
16803
16807
  browser: browser.installed === "yes",
@@ -16817,33 +16821,39 @@ function onboardComponentGroups(status) {
16817
16821
  ["5", "browser", "Браузерный модуль", "Playwright/Chromium"],
16818
16822
  ],
16819
16823
  },
16824
+ {
16825
+ title: "Городские сервисы",
16826
+ rows: [
16827
+ ["6", "city-data", "Открытые данные Йошкар-Олы", "API/MCP gateway доступен"],
16828
+ ["7", "codex-mcp", "Подключить городские данные к Codex", "MCP для Codex"],
16829
+ ],
16830
+ },
16820
16831
  {
16821
16832
  title: "Локальный AI",
16822
16833
  rows: [
16823
- ["6", "iola", "IOLA локальная модель", "локальная модель найдена"],
16824
- ["7", "ollama", "Ollama", "опциональный локальный runtime"],
16834
+ ["8", "iola", "IOLA локальная модель", "локальная модель найдена"],
16835
+ ["9", "ollama", "Ollama", "опциональный локальный runtime"],
16825
16836
  ],
16826
16837
  },
16827
16838
  {
16828
16839
  title: "Российские AI и сервисы",
16829
16840
  rows: [
16830
- ["8", "gigachat", "GigaChat API", "authorization key сохранен или есть в env"],
16831
- ["9", "yandex", "Yandex Connector", "Диск, Почта, Календарь, Контакты"],
16832
- ["10", "yandex-cloud", "Yandex Cloud Connector", "геокодинг и YandexGPT"],
16841
+ ["10", "gigachat", "GigaChat API", "authorization key сохранен или есть в env"],
16842
+ ["11", "yandex", "Yandex Connector", "Диск, Почта, Календарь, Контакты"],
16843
+ ["12", "yandex-cloud", "Yandex Cloud Connector", "геокодинг и YandexGPT"],
16833
16844
  ],
16834
16845
  },
16835
16846
  {
16836
16847
  title: "Зарубежные AI",
16837
16848
  rows: [
16838
- ["11", "openai", "OpenAI API", "API-ключ сохранен или есть в env"],
16839
- ["12", "openrouter", "OpenRouter API", "API-ключ сохранен или есть в env"],
16849
+ ["13", "openai", "OpenAI API", "API-ключ сохранен или есть в env"],
16850
+ ["14", "openrouter", "OpenRouter API", "API-ключ сохранен или есть в env"],
16840
16851
  ],
16841
16852
  },
16842
16853
  {
16843
16854
  title: "Codex",
16844
16855
  rows: [
16845
- ["13", "codex", "Codex CLI", "CLI установлен и авторизация найдена"],
16846
- ["14", "codex-mcp", "Подключение IOLA к Codex", "MCP для Codex"],
16856
+ ["15", "codex", "Codex CLI", "CLI установлен и авторизация найдена"],
16847
16857
  ],
16848
16858
  },
16849
16859
  ];
@@ -16862,12 +16872,12 @@ function defaultOnboardSelection(status) {
16862
16872
  if (!status.workspace) defaults.push("1");
16863
16873
  if (!status.policy) defaults.push("2");
16864
16874
  if (!status.archive) defaults.push("3");
16865
- if (!status.iola) defaults.push("6");
16875
+ if (!status.iola) defaults.push("8");
16866
16876
  return defaults.length ? defaults : ["1", "2"];
16867
16877
  }
16868
16878
 
16869
16879
  function defaultOnboardComponents(status) {
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" };
16880
+ const map = { 1: "workspace", 2: "policy", 3: "archive", 4: "index", 5: "browser", 6: "city-data", 7: "codex-mcp", 8: "iola", 9: "ollama", 10: "gigachat", 11: "yandex", 12: "yandex-cloud", 13: "openai", 14: "openrouter", 15: "codex" };
16871
16881
  return defaultOnboardSelection(status).map((item) => map[item]).filter(Boolean);
16872
16882
  }
16873
16883
 
@@ -18,7 +18,7 @@ iola master
18
18
  В мастере выберите:
19
19
 
20
20
  ```text
21
- 10. Yandex Cloud Connector - геокодинг и YandexGPT
21
+ 12. Yandex Cloud Connector - геокодинг и YandexGPT
22
22
  ```
23
23
 
24
24
  CLI не просто открывает консоль. Он печатает короткую инструкцию, что делать дальше, и только потом просит вставить ключи.
@@ -22,22 +22,25 @@ iola master
22
22
  4. Индекс локальных документов
23
23
  5. Браузерный модуль
24
24
 
25
+ Городские сервисы
26
+ 6. Открытые данные Йошкар-Олы
27
+ 7. Подключить городские данные к Codex
28
+
25
29
  Локальный AI
26
- 6. IOLA локальная модель
27
- 7. Ollama
30
+ 8. IOLA локальная модель
31
+ 9. Ollama
28
32
 
29
33
  Российские AI и сервисы
30
- 8. GigaChat API
31
- 9. Yandex Connector
32
- 10. Yandex Cloud Connector
34
+ 10. GigaChat API
35
+ 11. Yandex Connector
36
+ 12. Yandex Cloud Connector
33
37
 
34
38
  Зарубежные AI
35
- 11. OpenAI API
36
- 12. OpenRouter API
39
+ 13. OpenAI API
40
+ 14. OpenRouter API
37
41
 
38
42
  Codex
39
- 13. Codex CLI
40
- 14. Подключение IOLA к Codex
43
+ 15. Codex CLI
41
44
  ```
42
45
 
43
46
  ## Базовая настройка
@@ -70,9 +73,23 @@ iola index folder ./docs
70
73
 
71
74
  Проверяет Playwright/Chromium runtime. Нужен для браузерного агента.
72
75
 
76
+ ## Городские сервисы
77
+
78
+ ### 6. Открытые данные Йошкар-Олы
79
+
80
+ Проверяет доступность городского API/MCP-шлюза `apiiola.yasg.ru`.
81
+
82
+ Этот пункт ничего не устанавливает локально. Он нужен, чтобы пользователь явно видел: CLI подключен к городским слоям открытых данных и может проверять школы, детские сады и другие подключенные городские сервисы через проверяемый gateway.
83
+
84
+ ### 7. Подключить городские данные к Codex
85
+
86
+ Добавляет MCP-сервер открытых данных Йошкар-Олы во внешний Codex CLI. Этот пункт нужен только тем, кто хочет, чтобы Codex CLI тоже видел городские данные как MCP-инструменты.
87
+
88
+ Для обычной работы `iola-cli` с городскими слоями этот пункт не обязателен: сам CLI уже ходит к городскому API/MCP-шлюзу напрямую.
89
+
73
90
  ## Локальный AI
74
91
 
75
- ### 6. IOLA локальная модель
92
+ ### 8. IOLA локальная модель
76
93
 
77
94
  Проверяет штатную локальную модель IOLA и готовит ее к работе через доступный runtime.
78
95
 
@@ -80,7 +97,7 @@ iola index folder ./docs
80
97
 
81
98
  После настройки локальную модель можно менять в интерактивном агенте через `/model`. Помимо штатной IOLA-модели можно выбрать установленную или рекомендуемую Ollama-модель, либо вручную ввести имя любой модели из библиотеки Ollama.
82
99
 
83
- ### 7. Ollama
100
+ ### 9. Ollama
84
101
 
85
102
  Опциональный локальный runtime для выбора сторонних моделей из библиотеки Ollama.
86
103
 
@@ -88,13 +105,13 @@ iola index folder ./docs
88
105
 
89
106
  ## Российские AI и сервисы
90
107
 
91
- ### 8. GigaChat API
108
+ ### 10. GigaChat API
92
109
 
93
110
  Настраивает профиль GigaChat и сохраняет authorization key локально у пользователя.
94
111
 
95
112
  Российский провайдер вызывается напрямую, без gateway/proxy.
96
113
 
97
- ### 9. Yandex Connector
114
+ ### 11. Yandex Connector
98
115
 
99
116
  Настраивает единый коннектор пользовательских сервисов Яндекса.
100
117
 
@@ -109,7 +126,7 @@ iola index folder ./docs
109
126
 
110
127
  Инструкция: [Yandex Connector](Yandex-Connector).
111
128
 
112
- ### 10. Yandex Cloud Connector
129
+ ### 12. Yandex Cloud Connector
113
130
 
114
131
  Настраивает Yandex Cloud Connector: геокодер и, при необходимости, YandexGPT.
115
132
 
@@ -123,13 +140,13 @@ iola index folder ./docs
123
140
 
124
141
  ## Зарубежные AI
125
142
 
126
- ### 11. OpenAI API
143
+ ### 13. OpenAI API
127
144
 
128
145
  Настраивает профиль OpenAI и сохраняет API-ключ локально у пользователя.
129
146
 
130
147
  После сохранения ключа мастер предлагает выбрать модель из доступного списка.
131
148
 
132
- ### 12. OpenRouter API
149
+ ### 14. OpenRouter API
133
150
 
134
151
  Настраивает профиль OpenRouter и сохраняет API-ключ локально у пользователя.
135
152
 
@@ -137,14 +154,10 @@ iola index folder ./docs
137
154
 
138
155
  ## Codex
139
156
 
140
- ### 13. Codex CLI
157
+ ### 15. Codex CLI
141
158
 
142
159
  Проверяет наличие Codex CLI и авторизации. Если Codex уже установлен и вход выполнен, пункт показывается как `готово`.
143
160
 
144
- ### 14. Подключение IOLA к Codex
145
-
146
- Добавляет MCP-сервер открытых данных Йошкар-Олы в Codex. Этот пункт можно запускать повторно для обновления подключения.
147
-
148
161
  ## Повторный запуск
149
162
 
150
163
  Если компонент уже настроен, его можно не выбирать. Если нужно переустановить или обновить компонент, выберите его номер вручную.