@iola_adm/iola-cli 0.1.63 → 0.1.64
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 +1 -0
- package/package.json +1 -1
- package/src/cli.js +68 -14
- package/wiki/Home.md +1 -0
- package/wiki//320/220/321/200/321/205/320/270/320/262/321/213-/320/270-/320/274/320/260/321/201/321/202/320/265/321/200-/320/275/320/260/321/201/321/202/321/200/320/276/320/271/320/272/320/270.md +2 -0
- package/wiki//320/234/320/260/321/201/321/202/320/265/321/200-/320/275/320/260/321/201/321/202/321/200/320/276/320/271/320/272/320/270.md +82 -0
- package/wiki//320/237/320/265/321/200/320/262/321/213/320/271-/320/267/320/260/320/277/321/203/321/201/320/272.md +3 -2
package/README.md
CHANGED
|
@@ -111,6 +111,7 @@ iola version --check
|
|
|
111
111
|
|
|
112
112
|
- [Установка](https://github.com/adm-iola/iola-cli/wiki/Установка)
|
|
113
113
|
- [Первый запуск](https://github.com/adm-iola/iola-cli/wiki/Первый-запуск)
|
|
114
|
+
- [Мастер настройки](https://github.com/adm-iola/iola-cli/wiki/Мастер-настройки)
|
|
114
115
|
- [AI-профили](https://github.com/adm-iola/iola-cli/wiki/AI-профили)
|
|
115
116
|
- [Локальный инструментальный агент](https://github.com/adm-iola/iola-cli/wiki/Локальный-инструментальный-агент)
|
|
116
117
|
- [Skills и toolsets](https://github.com/adm-iola/iola-cli/wiki/Skills-и-toolsets)
|
package/package.json
CHANGED
package/src/cli.js
CHANGED
|
@@ -2431,6 +2431,7 @@ async function handleWiki(args) {
|
|
|
2431
2431
|
["Главная", base],
|
|
2432
2432
|
["Установка", `${base}/Установка`],
|
|
2433
2433
|
["Первый запуск", `${base}/Первый-запуск`],
|
|
2434
|
+
["Мастер настройки", `${base}/Мастер-настройки`],
|
|
2434
2435
|
["AI-профили", `${base}/AI-профили`],
|
|
2435
2436
|
["Локальный инструментальный агент", `${base}/Локальный-инструментальный-агент`],
|
|
2436
2437
|
["Skills и toolsets", `${base}/Skills-и-toolsets`],
|
|
@@ -7094,7 +7095,8 @@ async function onboard(args = []) {
|
|
|
7094
7095
|
}
|
|
7095
7096
|
}
|
|
7096
7097
|
|
|
7097
|
-
const
|
|
7098
|
+
const componentStatus = await getOnboardComponentStatus();
|
|
7099
|
+
const components = options.yes ? defaultOnboardComponents(componentStatus) : await chooseOnboardComponents(componentStatus);
|
|
7098
7100
|
if (components.includes("workspace")) await handleWorkspace(["init"]);
|
|
7099
7101
|
if (components.includes("policy")) await handlePolicy(["use", "analyst"]);
|
|
7100
7102
|
if (components.includes("archive")) await ensureArchiveTool({ install: true });
|
|
@@ -7139,25 +7141,19 @@ async function onboard(args = []) {
|
|
|
7139
7141
|
console.log("Onboard завершен.");
|
|
7140
7142
|
}
|
|
7141
7143
|
|
|
7142
|
-
async function chooseOnboardComponents() {
|
|
7144
|
+
async function chooseOnboardComponents(status = null) {
|
|
7143
7145
|
if (!process.stdin.isTTY) return ["workspace", "policy"];
|
|
7146
|
+
const componentStatus = status || await getOnboardComponentStatus();
|
|
7144
7147
|
console.log("");
|
|
7145
7148
|
console.log("Выберите компоненты через запятую:");
|
|
7146
|
-
|
|
7147
|
-
|
|
7148
|
-
|
|
7149
|
-
console.log("4. OpenAI API");
|
|
7150
|
-
console.log("5. OpenRouter API");
|
|
7151
|
-
console.log("6. Codex CLI");
|
|
7152
|
-
console.log("7. MCP для Codex");
|
|
7153
|
-
console.log("8. 7-Zip / архивы");
|
|
7154
|
-
console.log("9. Индекс локальных документов");
|
|
7155
|
-
console.log("10. Browser runtime");
|
|
7156
|
-
console.log("11. Личное подключение Госуслуг");
|
|
7149
|
+
for (const item of onboardComponentRows(componentStatus)) {
|
|
7150
|
+
console.log(`${item.number}. ${item.title} [${item.status}] - ${item.hint}`);
|
|
7151
|
+
}
|
|
7157
7152
|
console.log("");
|
|
7158
7153
|
const rl = readline.createInterface({ input, output });
|
|
7159
7154
|
try {
|
|
7160
|
-
const
|
|
7155
|
+
const defaults = defaultOnboardSelection(componentStatus);
|
|
7156
|
+
const answer = (await rl.question(`Компоненты [${defaults.join(",")}]: `)).trim() || defaults.join(",");
|
|
7161
7157
|
const selected = new Set(answer.split(/[,\s]+/).filter(Boolean));
|
|
7162
7158
|
const map = {
|
|
7163
7159
|
1: "workspace",
|
|
@@ -7178,6 +7174,64 @@ async function chooseOnboardComponents() {
|
|
|
7178
7174
|
}
|
|
7179
7175
|
}
|
|
7180
7176
|
|
|
7177
|
+
async function getOnboardComponentStatus() {
|
|
7178
|
+
const [config, readiness, browser, archive, codexVersion, ollamaVersion, secrets] = await Promise.all([
|
|
7179
|
+
loadConfig(),
|
|
7180
|
+
getAiReadiness(),
|
|
7181
|
+
getBrowserStatus(),
|
|
7182
|
+
findCommand(["7z", "7zz", "7za"], ["--help"]).catch(() => null),
|
|
7183
|
+
getCommandVersion("codex", ["--version"]),
|
|
7184
|
+
getOllamaVersion(),
|
|
7185
|
+
loadSecrets(),
|
|
7186
|
+
]);
|
|
7187
|
+
const workspaceReady = existsSync(PROJECT_CONTEXT_FILE) || existsSync(PROJECT_CONTEXT_DIR_FILE) || existsSync(PROJECT_IOLA_DIR);
|
|
7188
|
+
const policyReady = (config.toolsets?.enabled || []).includes("analyst");
|
|
7189
|
+
const gosuslugiReady = Boolean(config.gosuslugi?.enabled && existsSync(GOSUSLUGI_BROWSER_PROFILE_DIR) && secrets.gosuslugiBrowser?.connectedAt);
|
|
7190
|
+
return {
|
|
7191
|
+
workspace: workspaceReady,
|
|
7192
|
+
policy: policyReady,
|
|
7193
|
+
ollama: Boolean(ollamaVersion && readiness.ollama),
|
|
7194
|
+
openai: Boolean(readiness.openai),
|
|
7195
|
+
openrouter: Boolean(readiness.openrouter),
|
|
7196
|
+
codex: Boolean(codexVersion !== "не найден" && readiness.codex),
|
|
7197
|
+
"codex-mcp": false,
|
|
7198
|
+
archive: Boolean(archive),
|
|
7199
|
+
index: false,
|
|
7200
|
+
browser: browser.installed === "yes",
|
|
7201
|
+
gosuslugi: gosuslugiReady,
|
|
7202
|
+
};
|
|
7203
|
+
}
|
|
7204
|
+
|
|
7205
|
+
function onboardComponentRows(status) {
|
|
7206
|
+
const rows = [
|
|
7207
|
+
["1", "workspace", "workspace и контекст", "рабочая папка, IOLA.md и .iola/context.md"],
|
|
7208
|
+
["2", "policy", "policy analyst", "разрешения и профиль аналитика"],
|
|
7209
|
+
["3", "ollama", "Ollama + локальная модель", "локальная модель найдена"],
|
|
7210
|
+
["4", "openai", "OpenAI API", "API-ключ сохранен или есть в env"],
|
|
7211
|
+
["5", "openrouter", "OpenRouter API", "API-ключ сохранен или есть в env"],
|
|
7212
|
+
["6", "codex", "Codex CLI", "CLI установлен и авторизация найдена"],
|
|
7213
|
+
["7", "codex-mcp", "MCP для Codex", "можно переустановить/обновить"],
|
|
7214
|
+
["8", "archive", "7-Zip / архивы", "архиватор найден"],
|
|
7215
|
+
["9", "index", "Индекс локальных документов", "настраивается под выбранную папку"],
|
|
7216
|
+
["10", "browser", "Browser runtime", "Playwright/Chromium установлен"],
|
|
7217
|
+
["11", "gosuslugi", "Личное подключение Госуслуг", "профиль и keepalive"],
|
|
7218
|
+
];
|
|
7219
|
+
return rows.map(([number, key, title, hint]) => ({ number, key, title, hint, status: status[key] ? "готово" : "не настроено" }));
|
|
7220
|
+
}
|
|
7221
|
+
|
|
7222
|
+
function defaultOnboardSelection(status) {
|
|
7223
|
+
const defaults = [];
|
|
7224
|
+
if (!status.workspace) defaults.push("1");
|
|
7225
|
+
if (!status.policy) defaults.push("2");
|
|
7226
|
+
if (!status.archive) defaults.push("8");
|
|
7227
|
+
return defaults.length ? defaults : ["1", "2"];
|
|
7228
|
+
}
|
|
7229
|
+
|
|
7230
|
+
function defaultOnboardComponents(status) {
|
|
7231
|
+
const map = { 1: "workspace", 2: "policy", 3: "ollama", 4: "openai", 5: "openrouter", 6: "codex", 7: "codex-mcp", 8: "archive", 9: "index", 10: "browser", 11: "gosuslugi" };
|
|
7232
|
+
return defaultOnboardSelection(status).map((item) => map[item]).filter(Boolean);
|
|
7233
|
+
}
|
|
7234
|
+
|
|
7181
7235
|
function parseOptions(args) {
|
|
7182
7236
|
const result = { _: [] };
|
|
7183
7237
|
|
package/wiki/Home.md
CHANGED
|
@@ -26,6 +26,7 @@ iola ask "найди школу 29"
|
|
|
26
26
|
|
|
27
27
|
- [Установка](Установка)
|
|
28
28
|
- [Первый запуск](Первый-запуск)
|
|
29
|
+
- [Мастер настройки](Мастер-настройки)
|
|
29
30
|
- [AI-профили](AI-профили)
|
|
30
31
|
- [Локальный инструментальный агент](Локальный-инструментальный-агент)
|
|
31
32
|
- [Skills и toolsets](Skills-и-toolsets)
|
|
@@ -43,3 +43,5 @@ iola onboard
|
|
|
43
43
|
В списке компонентов есть отдельный пункт `7-Zip / архивы`. Если выбрать его, CLI установит архиватор сразу из мастера настройки.
|
|
44
44
|
|
|
45
45
|
Мастер также предлагает подключить workspace, policy, Ollama, OpenAI, OpenRouter, Codex CLI, MCP, browser runtime, Госуслуги и индекс локальных документов.
|
|
46
|
+
|
|
47
|
+
Подробное описание пунктов мастера вынесено на страницу [Мастер настройки](Мастер-настройки).
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Мастер настройки
|
|
2
|
+
|
|
3
|
+
Мастер запускается при первом старте CLI и повторно командой:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
iola master
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Мастер обновляет только выбранные компоненты и не сбрасывает остальные настройки.
|
|
10
|
+
|
|
11
|
+
Перед выбором компонентов CLI проверяет окружение и показывает статус каждого пункта: `готово` или `не настроено`.
|
|
12
|
+
|
|
13
|
+
## Компоненты
|
|
14
|
+
|
|
15
|
+
### 1. workspace и контекст
|
|
16
|
+
|
|
17
|
+
Создает рабочую среду текущей папки: `.iola/`, `IOLA.md` и `.iola/context.md`.
|
|
18
|
+
|
|
19
|
+
Нужно, если агент будет работать с локальными файлами, документами, задачами, артефактами и контекстом проекта.
|
|
20
|
+
|
|
21
|
+
### 2. policy analyst
|
|
22
|
+
|
|
23
|
+
Включает профиль разрешений для аналитической работы: открытые данные, отчеты, безопасные локальные операции.
|
|
24
|
+
|
|
25
|
+
### 3. Ollama + локальная модель
|
|
26
|
+
|
|
27
|
+
Проверяет Ollama и локальные модели. Если Ollama не установлена, мастер может установить ее и предложить модель под возможности ПК.
|
|
28
|
+
|
|
29
|
+
Если модель уже скачана и доступна, пункт показывается как `готово`.
|
|
30
|
+
|
|
31
|
+
### 4. OpenAI API
|
|
32
|
+
|
|
33
|
+
Настраивает профиль OpenAI и сохраняет API-ключ локально у пользователя.
|
|
34
|
+
|
|
35
|
+
### 5. OpenRouter API
|
|
36
|
+
|
|
37
|
+
Настраивает профиль OpenRouter и сохраняет API-ключ локально у пользователя.
|
|
38
|
+
|
|
39
|
+
### 6. Codex CLI
|
|
40
|
+
|
|
41
|
+
Проверяет наличие Codex CLI и авторизации. Если Codex уже установлен и вход выполнен, пункт показывается как `готово`.
|
|
42
|
+
|
|
43
|
+
### 7. MCP для Codex
|
|
44
|
+
|
|
45
|
+
Добавляет MCP-сервер открытых данных Йошкар-Олы в Codex. Этот пункт можно запускать повторно для обновления подключения.
|
|
46
|
+
|
|
47
|
+
### 8. 7-Zip / архивы
|
|
48
|
+
|
|
49
|
+
Проверяет 7-Zip. Если архиватор не найден, мастер устанавливает его.
|
|
50
|
+
|
|
51
|
+
Нужен для чтения, распаковки, сборки и индексирования архивов.
|
|
52
|
+
|
|
53
|
+
### 9. Индекс локальных документов
|
|
54
|
+
|
|
55
|
+
Готовит режим чтения файлов и подсказывает команду индексирования локальной папки:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
iola index folder ./docs
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 10. Browser runtime
|
|
62
|
+
|
|
63
|
+
Проверяет Playwright/Chromium runtime. Нужен для браузерного агента и подключения Госуслуг.
|
|
64
|
+
|
|
65
|
+
Если runtime уже установлен, пункт показывается как `готово`.
|
|
66
|
+
|
|
67
|
+
### 11. Личное подключение Госуслуг
|
|
68
|
+
|
|
69
|
+
Открывает браузерный профиль Госуслуг. Пользователь сам вводит логин, пароль и двухфакторный код.
|
|
70
|
+
|
|
71
|
+
После входа CLI сохраняет профиль на ПК и автоматически создает keepalive-задачу Windows Task Scheduler каждые 30 минут.
|
|
72
|
+
|
|
73
|
+
Проверить:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
iola gosuslugi status
|
|
77
|
+
iola gosuslugi keepalive-status
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Повторный запуск
|
|
81
|
+
|
|
82
|
+
Если компонент уже настроен, его можно не выбирать. Если нужно переустановить или обновить компонент, выберите его номер вручную.
|
|
@@ -34,12 +34,13 @@ iola commands
|
|
|
34
34
|
Повторный запуск мастера:
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
iola
|
|
38
|
-
iola setup wizard
|
|
37
|
+
iola master
|
|
39
38
|
```
|
|
40
39
|
|
|
41
40
|
Мастер обновляет только выбранные разделы и не сбрасывает остальные настройки.
|
|
42
41
|
|
|
42
|
+
Подробное описание всех пунктов: [Мастер настройки](Мастер-настройки).
|
|
43
|
+
|
|
43
44
|
Диагностика:
|
|
44
45
|
|
|
45
46
|
```bash
|