@iola_adm/iola-cli 0.1.90 → 0.1.92

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.1.90",
3
+ "version": "0.1.92",
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
@@ -390,7 +390,6 @@ const COMMANDS = new Map([
390
390
  ["alias", handleAlias],
391
391
  ["run", runNaturalLanguage],
392
392
  ["config", handleConfig],
393
- ["purge", handleUninstall],
394
393
  ["delete", handleUninstall],
395
394
  ["banner", showBanner],
396
395
  ["agent", startAgent],
@@ -1261,7 +1260,6 @@ async function handleAgentLine(line, state) {
1261
1260
  diff: ["diff", args],
1262
1261
  config: ["config", args],
1263
1262
  delete: ["delete", args],
1264
- purge: ["purge", args],
1265
1263
  layers: ["layers", args],
1266
1264
  data: ["data", args],
1267
1265
  schools: ["schools", args],
@@ -1286,7 +1284,8 @@ async function handleAgentLine(line, state) {
1286
1284
  }
1287
1285
 
1288
1286
  const [cliCommand, cliArgs] = mapped;
1289
- await COMMANDS.get(cliCommand)(cliArgs);
1287
+ const result = await COMMANDS.get(cliCommand)(cliArgs);
1288
+ if (cliCommand === "delete" && result?.deleted) return true;
1290
1289
  return false;
1291
1290
  }
1292
1291
 
@@ -2139,6 +2138,7 @@ async function handleUninstall(args = []) {
2139
2138
  description: "локальная папка .iola текущего проекта",
2140
2139
  });
2141
2140
  }
2141
+ const npmPackage = "@iola_adm/iola-cli";
2142
2142
 
2143
2143
  const safeTargets = targets.map((target) => ({
2144
2144
  ...target,
@@ -2161,12 +2161,13 @@ async function handleUninstall(args = []) {
2161
2161
  exists: existsSync(target.path),
2162
2162
  description: target.description,
2163
2163
  })),
2164
- willKeep: ["Codex CLI", "Codex auth/config", "npm package files"],
2164
+ willRemovePackage: npmPackage,
2165
+ willKeep: ["Codex CLI", "Codex auth/config"],
2165
2166
  reinstall: "npm install -g @iola_adm/iola-cli@latest",
2166
2167
  };
2167
2168
  if (options.json) printJson(payload);
2168
2169
  else printKeyValue(Object.fromEntries(payload.willDelete.map((item) => [item.label, `${item.path} (${item.exists ? "exists" : "missing"})`])));
2169
- return;
2170
+ return { deleted: false };
2170
2171
  }
2171
2172
 
2172
2173
  if (!options.yes) {
@@ -2176,11 +2177,12 @@ async function handleUninstall(args = []) {
2176
2177
  console.log(` ${target.description}`);
2177
2178
  }
2178
2179
  console.log("");
2180
+ console.log(`Будет удален npm-пакет: ${npmPackage}`);
2179
2181
  console.log("Codex CLI и его настройки не удаляются.");
2180
- const confirmed = await confirm("Удалить локальные данные iola-cli? [y/N] ");
2182
+ const confirmed = await confirm("Полностью удалить iola-cli? [y/N] ");
2181
2183
  if (!confirmed) {
2182
2184
  console.log("Удаление отменено.");
2183
- return;
2185
+ return { deleted: false };
2184
2186
  }
2185
2187
  }
2186
2188
 
@@ -2189,10 +2191,13 @@ async function handleUninstall(args = []) {
2189
2191
  }
2190
2192
 
2191
2193
  console.log("Локальные данные iola-cli удалены.");
2194
+ console.log(`Удаляю npm-пакет ${npmPackage}...`);
2195
+ await runCommand(getNpmCommand(), ["remove", "-g", npmPackage], { inherit: true });
2196
+ console.log("npm-пакет iola-cli удален.");
2192
2197
  console.log("Codex CLI не тронут.");
2193
- console.log("Для полной переустановки npm-пакета:");
2194
- console.log(" npm remove -g @iola_adm/iola-cli");
2198
+ console.log("Для повторной установки:");
2195
2199
  console.log(" npm install -g @iola_adm/iola-cli@latest");
2200
+ return { deleted: true };
2196
2201
  }
2197
2202
 
2198
2203
  async function handleDb(args) {
@@ -9986,6 +9991,10 @@ function runCommand(command, args, options = {}) {
9986
9991
  });
9987
9992
  }
9988
9993
 
9994
+ function getNpmCommand() {
9995
+ return process.platform === "win32" ? "npm.cmd" : "npm";
9996
+ }
9997
+
9989
9998
  function debugLog(message) {
9990
9999
  if (!process.env.IOLA_DEBUG_FILE) return;
9991
10000
  appendFile(process.env.IOLA_DEBUG_FILE, `[${new Date().toISOString()}] ${message}\n`, "utf8").catch(() => {});
@@ -64,8 +64,11 @@ assertIncludes(skills, "reports", "skills list");
64
64
  assertNotIncludes(skills, "gosuslugi", "skills list");
65
65
 
66
66
  const deletePlan = JSON.parse(await runCli(["delete", "--dry-run", "--json"]));
67
- if (!Array.isArray(deletePlan.willDelete) || !deletePlan.willKeep.includes("Codex CLI")) {
68
- throw new Error("delete dry-run should list delete targets and keep Codex CLI");
67
+ if (!Array.isArray(deletePlan.willDelete) || deletePlan.willRemovePackage !== "@iola_adm/iola-cli" || !deletePlan.willKeep.includes("Codex CLI")) {
68
+ throw new Error("delete dry-run should list delete targets, npm package, and keep Codex CLI");
69
+ }
70
+ if (deletePlan.willKeep.includes("npm package files")) {
71
+ throw new Error("delete dry-run should not keep npm package files");
69
72
  }
70
73
 
71
74
  console.log("smoke tests passed");