@iola_adm/iola-cli 0.2.37 → 0.2.38
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
package/src/cli.js
CHANGED
|
@@ -10062,6 +10062,15 @@ async function askText(question) {
|
|
|
10062
10062
|
}
|
|
10063
10063
|
}
|
|
10064
10064
|
|
|
10065
|
+
async function askYesNo(question, defaultValue = false) {
|
|
10066
|
+
if (!process.stdin.isTTY) return Boolean(defaultValue);
|
|
10067
|
+
const answer = (await askText(question)).trim().toLocaleLowerCase("ru-RU");
|
|
10068
|
+
if (!answer) return Boolean(defaultValue);
|
|
10069
|
+
if (answer === "y" || answer === "yes" || answer === "д" || answer === "да") return true;
|
|
10070
|
+
if (answer === "n" || answer === "no" || answer === "н" || answer === "нет") return false;
|
|
10071
|
+
return Boolean(defaultValue);
|
|
10072
|
+
}
|
|
10073
|
+
|
|
10065
10074
|
async function aiContext(args) {
|
|
10066
10075
|
const options = parseOptions(args);
|
|
10067
10076
|
const query = options._.join(" ").trim();
|
|
@@ -16465,9 +16474,6 @@ async function onboard(args = []) {
|
|
|
16465
16474
|
await chooseAndSaveApiModel("openrouter");
|
|
16466
16475
|
}
|
|
16467
16476
|
}
|
|
16468
|
-
if (components.includes("yandex-cloud")) {
|
|
16469
|
-
await setupYandexCloudConnector({});
|
|
16470
|
-
}
|
|
16471
16477
|
if (components.includes("gigachat")) {
|
|
16472
16478
|
await aiSetup(["gigachat"]);
|
|
16473
16479
|
if (process.stdin.isTTY) {
|
|
@@ -16486,6 +16492,9 @@ async function onboard(args = []) {
|
|
|
16486
16492
|
if (components.includes("yandex")) {
|
|
16487
16493
|
await setupYandexConnector([]);
|
|
16488
16494
|
}
|
|
16495
|
+
if (components.includes("yandex-cloud")) {
|
|
16496
|
+
await setupYandexCloudConnector({});
|
|
16497
|
+
}
|
|
16489
16498
|
if (components.includes("codex")) {
|
|
16490
16499
|
await installCodexIfMissing();
|
|
16491
16500
|
await aiSetup(["codex"]);
|
|
@@ -16524,19 +16533,18 @@ async function chooseOnboardComponents(status = null) {
|
|
|
16524
16533
|
1: "workspace",
|
|
16525
16534
|
2: "policy",
|
|
16526
16535
|
3: "iola",
|
|
16527
|
-
4: "
|
|
16528
|
-
5: "
|
|
16529
|
-
6: "
|
|
16530
|
-
7: "
|
|
16531
|
-
8: "codex",
|
|
16532
|
-
9: "
|
|
16533
|
-
10: "
|
|
16534
|
-
11: "
|
|
16535
|
-
12: "
|
|
16536
|
-
13: "
|
|
16537
|
-
14: "cloud",
|
|
16538
|
-
15: "yandex",
|
|
16539
|
-
16: "yandex",
|
|
16536
|
+
4: "gigachat",
|
|
16537
|
+
5: "openai",
|
|
16538
|
+
6: "openrouter",
|
|
16539
|
+
7: "codex",
|
|
16540
|
+
8: "codex-mcp",
|
|
16541
|
+
9: "archive",
|
|
16542
|
+
10: "index",
|
|
16543
|
+
11: "browser",
|
|
16544
|
+
12: "ollama",
|
|
16545
|
+
13: "yandex",
|
|
16546
|
+
14: "yandex-cloud",
|
|
16547
|
+
15: "yandex-cloud",
|
|
16540
16548
|
};
|
|
16541
16549
|
return [...selected].map((item) => map[item] || item).filter(Boolean);
|
|
16542
16550
|
} finally {
|
|
@@ -16559,7 +16567,6 @@ async function getOnboardComponentStatus() {
|
|
|
16559
16567
|
getYandexGeocoderKey(),
|
|
16560
16568
|
loadSecrets(),
|
|
16561
16569
|
]);
|
|
16562
|
-
const cloudSecrets = secrets.cloud || {};
|
|
16563
16570
|
const workspaceReady = existsSync(PROJECT_CONTEXT_FILE) || existsSync(PROJECT_CONTEXT_DIR_FILE) || existsSync(PROJECT_IOLA_DIR);
|
|
16564
16571
|
const policyReady = (config.toolsets?.enabled || []).includes("analyst");
|
|
16565
16572
|
return {
|
|
@@ -16576,7 +16583,6 @@ async function getOnboardComponentStatus() {
|
|
|
16576
16583
|
archive: Boolean(archive),
|
|
16577
16584
|
index: false,
|
|
16578
16585
|
browser: browser.installed === "yes",
|
|
16579
|
-
cloud: Object.keys(cloudSecrets).length > 0,
|
|
16580
16586
|
yandex: isYandexConnectorFullyConnected(secrets),
|
|
16581
16587
|
};
|
|
16582
16588
|
}
|
|
@@ -16586,18 +16592,17 @@ function onboardComponentRows(status) {
|
|
|
16586
16592
|
["1", "workspace", "workspace и контекст", "рабочая папка, IOLA.md и .iola/context.md"],
|
|
16587
16593
|
["2", "policy", "policy analyst", "разрешения и профиль аналитика"],
|
|
16588
16594
|
["3", "iola", "IOLA локальная модель", "локальная модель найдена"],
|
|
16589
|
-
["4", "
|
|
16590
|
-
["5", "
|
|
16591
|
-
["6", "
|
|
16592
|
-
["7", "
|
|
16593
|
-
["8", "codex", "Codex
|
|
16594
|
-
["9", "
|
|
16595
|
-
["10", "
|
|
16596
|
-
["11", "
|
|
16597
|
-
["12", "
|
|
16598
|
-
["13", "
|
|
16599
|
-
["14", "cloud", "
|
|
16600
|
-
["15", "yandex", "Yandex Connector", "единый вход и категории сервисов Яндекса"],
|
|
16595
|
+
["4", "gigachat", "GigaChat API", "authorization key сохранен или есть в env"],
|
|
16596
|
+
["5", "openai", "OpenAI API", "API-ключ сохранен или есть в env"],
|
|
16597
|
+
["6", "openrouter", "OpenRouter API", "API-ключ сохранен или есть в env"],
|
|
16598
|
+
["7", "codex", "Codex CLI", "CLI установлен и авторизация найдена"],
|
|
16599
|
+
["8", "codex-mcp", "MCP для Codex", "можно переустановить/обновить"],
|
|
16600
|
+
["9", "archive", "7-Zip / архивы", "архиватор найден"],
|
|
16601
|
+
["10", "index", "Индекс локальных документов", "настраивается под выбранную папку"],
|
|
16602
|
+
["11", "browser", "Browser runtime", "Playwright/Chromium установлен"],
|
|
16603
|
+
["12", "ollama", "Ollama", "опциональный локальный runtime"],
|
|
16604
|
+
["13", "yandex", "Yandex Connector", "единый вход и категории сервисов Яндекса"],
|
|
16605
|
+
["14", "yandex-cloud", "Yandex Cloud Connector", "геокодинг и YandexGPT"],
|
|
16601
16606
|
];
|
|
16602
16607
|
return rows.map(([number, key, title, hint]) => ({ number, key, title, hint, status: status[key] ? "готово" : "не настроено" }));
|
|
16603
16608
|
}
|
|
@@ -16607,12 +16612,12 @@ function defaultOnboardSelection(status) {
|
|
|
16607
16612
|
if (!status.workspace) defaults.push("1");
|
|
16608
16613
|
if (!status.policy) defaults.push("2");
|
|
16609
16614
|
if (!status.iola) defaults.push("3");
|
|
16610
|
-
if (!status.archive) defaults.push("
|
|
16615
|
+
if (!status.archive) defaults.push("9");
|
|
16611
16616
|
return defaults.length ? defaults : ["1", "2"];
|
|
16612
16617
|
}
|
|
16613
16618
|
|
|
16614
16619
|
function defaultOnboardComponents(status) {
|
|
16615
|
-
const map = { 1: "workspace", 2: "policy", 3: "iola", 4: "
|
|
16620
|
+
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" };
|
|
16616
16621
|
return defaultOnboardSelection(status).map((item) => map[item]).filter(Boolean);
|
|
16617
16622
|
}
|
|
16618
16623
|
|
|
@@ -30,49 +30,39 @@ iola master
|
|
|
30
30
|
|
|
31
31
|
После настройки локальную модель можно менять в интерактивном агенте через `/model`. Помимо штатной IOLA-модели можно выбрать установленную или рекомендуемую Ollama-модель, либо вручную ввести имя любой модели из библиотеки Ollama.
|
|
32
32
|
|
|
33
|
-
### 4.
|
|
34
|
-
|
|
35
|
-
Настраивает Yandex Cloud Connector: геокодер и, при необходимости, YandexGPT.
|
|
36
|
-
|
|
37
|
-
Геокодер включается по умолчанию. Он нужен для geo-skills и deeplink Яндекс Go. YandexGPT можно включить сразу или выбрать позже через `/model`.
|
|
38
|
-
|
|
39
|
-
Ключи сохраняются локально у пользователя. Российский AI-провайдер вызывается напрямую, без gateway/proxy.
|
|
40
|
-
|
|
41
|
-
Инструкция: [Yandex Cloud Connector](Yandex-Cloud-Connector).
|
|
42
|
-
|
|
43
|
-
### 5. GigaChat API
|
|
33
|
+
### 4. GigaChat API
|
|
44
34
|
|
|
45
35
|
Настраивает профиль GigaChat и сохраняет authorization key локально у пользователя.
|
|
46
36
|
|
|
47
37
|
Российский провайдер вызывается напрямую, без gateway/proxy.
|
|
48
38
|
|
|
49
|
-
###
|
|
39
|
+
### 5. OpenAI API
|
|
50
40
|
|
|
51
41
|
Настраивает профиль OpenAI и сохраняет API-ключ локально у пользователя.
|
|
52
42
|
|
|
53
43
|
После сохранения ключа мастер предлагает выбрать модель из доступного списка.
|
|
54
44
|
|
|
55
|
-
###
|
|
45
|
+
### 6. OpenRouter API
|
|
56
46
|
|
|
57
47
|
Настраивает профиль OpenRouter и сохраняет API-ключ локально у пользователя.
|
|
58
48
|
|
|
59
49
|
После сохранения ключа мастер предлагает выбрать разработчика моделей OpenRouter, а затем одну из свежих моделей для текстовой работы. В списке моделей `0` возвращает к выбору разработчика.
|
|
60
50
|
|
|
61
|
-
###
|
|
51
|
+
### 7. Codex CLI
|
|
62
52
|
|
|
63
53
|
Проверяет наличие Codex CLI и авторизации. Если Codex уже установлен и вход выполнен, пункт показывается как `готово`.
|
|
64
54
|
|
|
65
|
-
###
|
|
55
|
+
### 8. MCP для Codex
|
|
66
56
|
|
|
67
57
|
Добавляет MCP-сервер открытых данных Йошкар-Олы в Codex. Этот пункт можно запускать повторно для обновления подключения.
|
|
68
58
|
|
|
69
|
-
###
|
|
59
|
+
### 9. 7-Zip / архивы
|
|
70
60
|
|
|
71
61
|
Проверяет 7-Zip. Если архиватор не найден, мастер устанавливает его.
|
|
72
62
|
|
|
73
63
|
Нужен для чтения, распаковки, сборки и индексирования архивов.
|
|
74
64
|
|
|
75
|
-
###
|
|
65
|
+
### 10. Индекс локальных документов
|
|
76
66
|
|
|
77
67
|
Готовит режим чтения файлов и подсказывает команду индексирования локальной папки:
|
|
78
68
|
|
|
@@ -80,28 +70,17 @@ iola master
|
|
|
80
70
|
iola index folder ./docs
|
|
81
71
|
```
|
|
82
72
|
|
|
83
|
-
###
|
|
73
|
+
### 11. Browser runtime
|
|
84
74
|
|
|
85
75
|
Проверяет Playwright/Chromium runtime. Нужен для браузерного агента.
|
|
86
76
|
|
|
87
|
-
###
|
|
77
|
+
### 12. Ollama
|
|
88
78
|
|
|
89
79
|
Опциональный локальный runtime для выбора сторонних моделей из библиотеки Ollama.
|
|
90
80
|
|
|
91
81
|
Если runtime уже установлен, пункт показывается как `готово`.
|
|
92
82
|
|
|
93
|
-
###
|
|
94
|
-
|
|
95
|
-
Подключает личный облачный диск пользователя:
|
|
96
|
-
|
|
97
|
-
- Яндекс Диск;
|
|
98
|
-
- Облако Mail.ru.
|
|
99
|
-
|
|
100
|
-
Секреты сохраняются локально в `~/.iola/secrets.json`. Резервные копии CLI не включают OAuth-токены, пароли и API-ключи.
|
|
101
|
-
|
|
102
|
-
Инструкция: [Облачные диски](Облачные-диски).
|
|
103
|
-
|
|
104
|
-
### 15. Yandex Connector
|
|
83
|
+
### 13. Yandex Connector
|
|
105
84
|
|
|
106
85
|
Настраивает единый коннектор пользовательских сервисов Яндекса.
|
|
107
86
|
|
|
@@ -116,6 +95,16 @@ iola index folder ./docs
|
|
|
116
95
|
|
|
117
96
|
Инструкция: [Yandex Connector](Yandex-Connector).
|
|
118
97
|
|
|
98
|
+
### 14. Yandex Cloud Connector
|
|
99
|
+
|
|
100
|
+
Настраивает Yandex Cloud Connector: геокодер и, при необходимости, YandexGPT.
|
|
101
|
+
|
|
102
|
+
Геокодер включается по умолчанию. Он нужен для geo-skills и deeplink Яндекс Go. YandexGPT можно включить сразу или выбрать позже через `/model`.
|
|
103
|
+
|
|
104
|
+
Ключи сохраняются локально у пользователя. Российский AI-провайдер вызывается напрямую, без gateway/proxy.
|
|
105
|
+
|
|
106
|
+
Инструкция: [Yandex Cloud Connector](Yandex-Cloud-Connector).
|
|
107
|
+
|
|
119
108
|
## Повторный запуск
|
|
120
109
|
|
|
121
110
|
Если компонент уже настроен, его можно не выбирать. Если нужно переустановить или обновить компонент, выберите его номер вручную.
|