@iola_adm/iola-cli 0.1.35 → 0.1.36
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 +1 -1
- package/src/cli.js +37 -19
package/package.json
CHANGED
package/src/cli.js
CHANGED
|
@@ -265,17 +265,18 @@ const DATASETS = {
|
|
|
265
265
|
},
|
|
266
266
|
};
|
|
267
267
|
const BANNER = `\x1b[38;5;45m┌────────────────────────────────────────────────────────────────────────────┐
|
|
268
|
-
│\x1b[38;5;51m ____ _ ___ ____ ____ ___ _____ _ _______ \x1b[38;5;45m│
|
|
269
|
-
│\x1b[38;5;51m / ___| | |_ _| | _ \\| _ \\ / _ \\| ____| |/ /_ _| \x1b[38;5;45m│
|
|
270
|
-
│\x1b[38;5;51m | | | | | |_____| |_) | |_) | | | | _| | ' / | | \x1b[38;5;45m│
|
|
271
|
-
│\x1b[38;5;51m | |___| |___ | |_____| __/| _ <| |_| | |___| . \\ | | \x1b[38;5;45m│
|
|
272
|
-
│\x1b[38;5;51m \\____|_____|___| |_| |_| \\_\\\\___/|_____|_|\\_\\ |_| \x1b[38;5;45m│
|
|
273
268
|
│ │
|
|
274
|
-
│\x1b[38;5;
|
|
269
|
+
│\x1b[38;5;51m ____ _ ___ __ ______ ____ _ _ _ __ _ ____ \x1b[38;5;45m│
|
|
270
|
+
│\x1b[38;5;51m / ___| | |_ _| \\ \\ / / ___|| _ \\| | | | |/ / / \\ | _ \\ \x1b[38;5;45m│
|
|
271
|
+
│\x1b[38;5;51m | | | | | | _____ \\ V /\\___ \\| | | | |_| | ' / / _ \\ | |_) | \x1b[38;5;45m│
|
|
272
|
+
│\x1b[38;5;51m | |___| |___ | | |_____| | | ___) | |_| | _ | . \\ / ___ \\| _ < \x1b[38;5;45m│
|
|
273
|
+
│\x1b[38;5;51m \\____|_____|___| |_| |____/|____/|_| |_|_|\\_\\/_/ \\_\\_| \\_\\ \x1b[38;5;45m│
|
|
274
|
+
│ │
|
|
275
|
+
│\x1b[38;5;213m CLI-ЙОШКАР-ОЛА \x1b[38;5;45m│
|
|
275
276
|
│ │
|
|
276
277
|
│\x1b[38;5;250m открытые данные • MCP • локальный AI \x1b[38;5;45m│
|
|
277
278
|
│ │
|
|
278
|
-
│\x1b[38;5;82m
|
|
279
|
+
│\x1b[38;5;82m VERSION_LINE \x1b[38;5;45m│
|
|
279
280
|
└────────────────────────────────────────────────────────────────────────────┘\x1b[0m`;
|
|
280
281
|
|
|
281
282
|
const COMMANDS = new Map([
|
|
@@ -405,7 +406,7 @@ export async function main(argv) {
|
|
|
405
406
|
}
|
|
406
407
|
|
|
407
408
|
async function showHelp() {
|
|
408
|
-
showBanner();
|
|
409
|
+
await showBanner();
|
|
409
410
|
console.log(`iola - CLI и AI-агент городского округа "Город Йошкар-Ола"
|
|
410
411
|
|
|
411
412
|
Запуск:
|
|
@@ -434,7 +435,7 @@ Requirements:
|
|
|
434
435
|
}
|
|
435
436
|
|
|
436
437
|
async function showCommands() {
|
|
437
|
-
showBanner();
|
|
438
|
+
await showBanner();
|
|
438
439
|
console.log(`iola - CLI для открытых данных городского округа "Город Йошкар-Ола"
|
|
439
440
|
|
|
440
441
|
Usage:
|
|
@@ -554,7 +555,7 @@ async function runDefaultCli() {
|
|
|
554
555
|
|
|
555
556
|
initDatabase();
|
|
556
557
|
if (!isFirstRunCompleted()) {
|
|
557
|
-
showBanner();
|
|
558
|
+
await showBanner();
|
|
558
559
|
console.log("Первый запуск iola-cli. Сейчас откроется мастер настройки.");
|
|
559
560
|
console.log("После мастера запустится интерактивный агент.");
|
|
560
561
|
console.log("");
|
|
@@ -567,7 +568,7 @@ async function runDefaultCli() {
|
|
|
567
568
|
}
|
|
568
569
|
|
|
569
570
|
async function startAgent() {
|
|
570
|
-
showBanner();
|
|
571
|
+
await showBanner();
|
|
571
572
|
console.log("Интерактивный режим. Введите /help для списка команд, /exit для выхода.");
|
|
572
573
|
await runHooks("SessionStart", { mode: "agent" });
|
|
573
574
|
|
|
@@ -897,7 +898,7 @@ async function handleAgentLine(line, state) {
|
|
|
897
898
|
}
|
|
898
899
|
|
|
899
900
|
if (command === "banner") {
|
|
900
|
-
showBanner();
|
|
901
|
+
await showBanner();
|
|
901
902
|
return false;
|
|
902
903
|
}
|
|
903
904
|
|
|
@@ -1101,15 +1102,32 @@ function safePrompt(rl, closed = false) {
|
|
|
1101
1102
|
}
|
|
1102
1103
|
}
|
|
1103
1104
|
|
|
1104
|
-
function showBanner() {
|
|
1105
|
+
async function showBanner(options = {}) {
|
|
1105
1106
|
const version = getPackageVersion();
|
|
1107
|
+
const latest = options.skipUpdate ? null : await getLatestNpmVersion("@iola_adm/iola-cli");
|
|
1108
|
+
const updateAvailable = latest && compareVersions(latest, version) > 0;
|
|
1109
|
+
const versionLine = updateAvailable ? `v${version} -> v${latest} • npm install -g @iola_adm/iola-cli@latest` : `v${version} • iola help`;
|
|
1106
1110
|
if (process.stdout.isTTY && process.env.NO_COLOR !== "1") {
|
|
1107
|
-
console.log(BANNER.replace("
|
|
1111
|
+
console.log(BANNER.replace("VERSION_LINE", padBannerLine(versionLine)));
|
|
1112
|
+
if (updateAvailable) {
|
|
1113
|
+
console.log(`Доступно обновление: v${version} -> v${latest}`);
|
|
1114
|
+
console.log("Обновить: npm install -g @iola_adm/iola-cli@latest");
|
|
1115
|
+
}
|
|
1108
1116
|
return;
|
|
1109
1117
|
}
|
|
1110
1118
|
|
|
1111
|
-
console.log(`CLI-ЙОШКАР-ОЛА v${version}`);
|
|
1119
|
+
console.log(`CLI-ЙОШКАР-ОЛА ${updateAvailable ? `v${version} -> v${latest}` : `v${version}`}`);
|
|
1112
1120
|
console.log("открытые данные • MCP • локальный AI");
|
|
1121
|
+
if (updateAvailable) console.log("Обновить: npm install -g @iola_adm/iola-cli@latest");
|
|
1122
|
+
}
|
|
1123
|
+
|
|
1124
|
+
function padBannerLine(value) {
|
|
1125
|
+
const text = String(value).slice(0, 62);
|
|
1126
|
+
return `${text}${" ".repeat(Math.max(0, 62 - bannerVisibleLength(text)))}`;
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
function bannerVisibleLength(value) {
|
|
1130
|
+
return [...String(value)].length;
|
|
1113
1131
|
}
|
|
1114
1132
|
|
|
1115
1133
|
function getPackageVersion() {
|
|
@@ -1392,7 +1410,7 @@ async function initCli(args = []) {
|
|
|
1392
1410
|
const options = parseOptions(args);
|
|
1393
1411
|
const nodeStatus = getNodeRequirementStatus();
|
|
1394
1412
|
|
|
1395
|
-
showBanner();
|
|
1413
|
+
await showBanner();
|
|
1396
1414
|
console.log("Проверка окружения");
|
|
1397
1415
|
initDatabase();
|
|
1398
1416
|
const dbStatus = getDbStatus();
|
|
@@ -1439,7 +1457,7 @@ async function handleAi(args) {
|
|
|
1439
1457
|
const [subcommand = "help", ...rest] = args;
|
|
1440
1458
|
|
|
1441
1459
|
if (subcommand === "help") {
|
|
1442
|
-
showBanner();
|
|
1460
|
+
await showBanner();
|
|
1443
1461
|
console.log(`AI-команды:
|
|
1444
1462
|
iola ai ask TEXT [--provider ollama|openai|openrouter] [--model MODEL]
|
|
1445
1463
|
iola ai context TEXT [--json]
|
|
@@ -3711,7 +3729,7 @@ async function aiSetup(args) {
|
|
|
3711
3729
|
const [provider] = args;
|
|
3712
3730
|
|
|
3713
3731
|
if (!provider) {
|
|
3714
|
-
showBanner();
|
|
3732
|
+
await showBanner();
|
|
3715
3733
|
const selected = await chooseAiProvider();
|
|
3716
3734
|
await aiSetup([selected]);
|
|
3717
3735
|
return;
|
|
@@ -6338,7 +6356,7 @@ async function setupClient(args) {
|
|
|
6338
6356
|
|
|
6339
6357
|
async function onboard(args = []) {
|
|
6340
6358
|
const options = parseOptions(args);
|
|
6341
|
-
showBanner();
|
|
6359
|
+
await showBanner();
|
|
6342
6360
|
console.log("Мастер настройки iola-cli.");
|
|
6343
6361
|
console.log("Повторный запуск обновляет только выбранные разделы и не сбрасывает остальные настройки.");
|
|
6344
6362
|
console.log("");
|