@ganakailabs/cloudeval-cli 0.19.4 → 0.20.2

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 CHANGED
@@ -5,8 +5,11 @@
5
5
  </p>
6
6
 
7
7
  <p align="center">
8
- <a href="https://www.npmjs.com/package/@ganakailabs/cloudeval-cli"><img alt="npm" src="https://img.shields.io/npm/v/@ganakailabs/cloudeval-cli?style=flat-square"></a>
8
+ <a href="https://www.npmjs.com/package/@ganakailabs/cloudeval-cli"><img alt="npm version" src="https://img.shields.io/npm/v/@ganakailabs/cloudeval-cli?style=flat-square&logo=npm"></a>
9
+ <a href="https://www.npmjs.com/package/@ganakailabs/cloudeval-cli"><img alt="npm downloads" src="https://img.shields.io/npm/dm/@ganakailabs/cloudeval-cli?style=flat-square&logo=npm&label=npm%20downloads"></a>
9
10
  <a href="https://github.com/ganakailabs/cloudeval-cli/releases"><img alt="release" src="https://img.shields.io/github/v/release/ganakailabs/cloudeval-cli?sort=semver&style=flat-square"></a>
11
+ <a href="https://github.com/ganakailabs/cloudeval-cli/releases"><img alt="GitHub downloads" src="https://img.shields.io/github/downloads/ganakailabs/cloudeval-cli/total?style=flat-square&logo=github&label=release%20downloads"></a>
12
+ <a href="https://github.com/ganakailabs/cloudeval-cli/actions/workflows/semantic-release.yml"><img alt="release health" src="https://img.shields.io/github/actions/workflow/status/ganakailabs/cloudeval-cli/semantic-release.yml?branch=main&style=flat-square&label=release%20health"></a>
10
13
  <a href="https://github.com/ganakailabs/cloudeval-cli/blob/main/LICENSE"><img alt="license" src="https://img.shields.io/badge/license-CloudEval%20CLI%20License-blue?style=flat-square"></a>
11
14
  <a href="https://docs.cloudeval.ai/reference/cli-overview"><img alt="docs" src="https://img.shields.io/badge/docs-docs.cloudeval.ai-2d6cdf?style=flat-square"></a>
12
15
  <a href="https://discord.gg/tk5dcU2a7T"><img alt="Discord" src="https://img.shields.io/badge/Discord-community-5865F2?style=flat-square&logo=discord&logoColor=white"></a>
@@ -33,12 +36,16 @@ The npm package requires Node.js 20 or newer and installs these command aliases:
33
36
  - `eva`
34
37
 
35
38
  For standalone macOS, Linux, and Windows binaries, use the GitHub releases or
36
- the shell installer:
39
+ the installers:
37
40
 
38
41
  ```bash
39
42
  curl -fsSL https://cli.cloudeval.ai/install.sh | bash
40
43
  ```
41
44
 
45
+ ```powershell
46
+ irm https://cli.cloudeval.ai/install.ps1 | iex
47
+ ```
48
+
42
49
  The shell installer can detect Codex, Claude Desktop, Cursor, and VS Code,
43
50
  skip clients where CloudEval MCP is already configured, and offer setup only
44
51
  for missing clients that can be configured automatically. Manual-only clients
@@ -38,10 +38,10 @@ import {
38
38
  } from "./chunk-2D4BE3OS.js";
39
39
  import {
40
40
  Banner
41
- } from "./chunk-L2H4P4BP.js";
41
+ } from "./chunk-VUFGCS6W.js";
42
42
  import {
43
43
  CLI_VERSION
44
- } from "./chunk-HUE4D6RO.js";
44
+ } from "./chunk-ETTAAQ6J.js";
45
45
  import {
46
46
  raisedButtonStyle,
47
47
  terminalTheme
@@ -2,8 +2,8 @@ import {
2
2
  Banner,
3
3
  bannerSegmentColor,
4
4
  splitBannerLineSegments
5
- } from "./chunk-L2H4P4BP.js";
6
- import "./chunk-HUE4D6RO.js";
5
+ } from "./chunk-VUFGCS6W.js";
6
+ import "./chunk-ETTAAQ6J.js";
7
7
  import "./chunk-QKZCKI55.js";
8
8
  export {
9
9
  Banner,
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var CLI_VERSION = "0.19.4";
2
+ var CLI_VERSION = "0.20.2";
3
3
 
4
4
  export {
5
5
  CLI_VERSION
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CLI_VERSION
3
- } from "./chunk-HUE4D6RO.js";
3
+ } from "./chunk-ETTAAQ6J.js";
4
4
  import {
5
5
  shouldUseColor,
6
6
  terminalTheme
package/dist/cli.js CHANGED
@@ -36,7 +36,7 @@ import {
36
36
  } from "./chunk-2D4BE3OS.js";
37
37
  import {
38
38
  CLI_VERSION
39
- } from "./chunk-HUE4D6RO.js";
39
+ } from "./chunk-ETTAAQ6J.js";
40
40
 
41
41
  // src/runtime/prepareInk.ts
42
42
  import fs from "fs";
@@ -11917,6 +11917,7 @@ import path7 from "path";
11917
11917
  import { createInterface as createInterface2 } from "readline/promises";
11918
11918
  var DEFAULT_LATEST_RELEASE_URL = "https://api.github.com/repos/ganakailabs/cloudeval-cli/releases/latest";
11919
11919
  var DEFAULT_INSTALLER_URL = "https://cli.cloudeval.ai/install.sh";
11920
+ var DEFAULT_POWERSHELL_INSTALLER_URL = "https://cli.cloudeval.ai/install.ps1";
11920
11921
  var DEFAULT_UPDATE_CHECK_INTERVAL_MS = 24 * 60 * 60 * 1e3;
11921
11922
  var UPDATE_CACHE_FILE = "update-check.json";
11922
11923
  var normalizeVersion = (value) => value.trim().replace(/^v/i, "").split("+")[0] || "0.0.0";
@@ -12026,7 +12027,7 @@ var getUpdateStatus = async ({
12026
12027
  );
12027
12028
  };
12028
12029
  var runInstaller = async ({
12029
- installerUrl = process.env.CLOUDEVAL_UPDATE_INSTALLER_URL ?? DEFAULT_INSTALLER_URL,
12030
+ installerUrl,
12030
12031
  targetTag,
12031
12032
  fetchImpl = fetch,
12032
12033
  spawnImpl = spawn,
@@ -12035,14 +12036,11 @@ var runInstaller = async ({
12035
12036
  env = process.env,
12036
12037
  promptAgentSetup = false
12037
12038
  }) => {
12038
- if (platform === "win32") {
12039
- throw new Error(
12040
- "Automatic update currently requires bash. Install the latest CLI from https://cli.cloudeval.ai/install.sh in Git Bash, WSL, or another POSIX shell."
12041
- );
12042
- }
12043
- const response = await fetchImpl(installerUrl, {
12039
+ const resolvedInstallerUrl = installerUrl ?? process.env.CLOUDEVAL_UPDATE_INSTALLER_URL ?? (platform === "win32" ? DEFAULT_POWERSHELL_INSTALLER_URL : DEFAULT_INSTALLER_URL);
12040
+ const usePowerShellInstaller = platform === "win32" || resolvedInstallerUrl.endsWith(".ps1");
12041
+ const response = await fetchImpl(resolvedInstallerUrl, {
12044
12042
  headers: {
12045
- Accept: "text/x-shellscript,text/plain,*/*",
12043
+ Accept: usePowerShellInstaller ? "text/plain,*/*" : "text/x-shellscript,text/plain,*/*",
12046
12044
  "User-Agent": `cloudeval-cli/${CLI_VERSION}`
12047
12045
  }
12048
12046
  });
@@ -12052,6 +12050,55 @@ var runInstaller = async ({
12052
12050
  );
12053
12051
  }
12054
12052
  const installerScript = await response.text();
12053
+ if (usePowerShellInstaller) {
12054
+ const configDir = getCloudevalConfigDir();
12055
+ await fs10.mkdir(configDir, { recursive: true, mode: 448 });
12056
+ const scriptPath = path7.join(
12057
+ await fs10.mkdtemp(path7.join(configDir, "installer-")),
12058
+ "install.ps1"
12059
+ );
12060
+ await fs10.writeFile(scriptPath, installerScript, "utf8");
12061
+ const child2 = spawnImpl(
12062
+ "pwsh",
12063
+ [
12064
+ "-NoProfile",
12065
+ "-ExecutionPolicy",
12066
+ "Bypass",
12067
+ "-File",
12068
+ scriptPath,
12069
+ targetTag
12070
+ ],
12071
+ {
12072
+ env: {
12073
+ ...env,
12074
+ CLOUDEVAL_ASSUME_YES: "1"
12075
+ },
12076
+ stdio: ["ignore", "pipe", "pipe"]
12077
+ }
12078
+ );
12079
+ await new Promise((resolve, reject) => {
12080
+ child2.once("error", (error) => {
12081
+ reject(
12082
+ error instanceof Error && error.message.includes("ENOENT") ? new Error(
12083
+ "Automatic update requires PowerShell 7 (pwsh). Install the latest CLI from https://cli.cloudeval.ai/install.ps1."
12084
+ ) : error
12085
+ );
12086
+ });
12087
+ child2.once("close", (code) => {
12088
+ void fs10.rm(path7.dirname(scriptPath), { recursive: true, force: true });
12089
+ if (code === 0) {
12090
+ resolve();
12091
+ return;
12092
+ }
12093
+ reject(
12094
+ new Error(`CloudEval CLI installer exited with code ${code ?? "unknown"}.`)
12095
+ );
12096
+ });
12097
+ child2.stdout?.on("data", (chunk) => output.write(chunk));
12098
+ child2.stderr?.on("data", (chunk) => output.write(chunk));
12099
+ });
12100
+ return;
12101
+ }
12055
12102
  const child = spawnImpl("bash", ["-s", "--", targetTag], {
12056
12103
  env: {
12057
12104
  ...env,
@@ -13335,7 +13382,7 @@ program.command("tui").description("Open the CloudEval Terminal UI").option(
13335
13382
  const { assertSecureBaseUrl } = await import("./dist-TBAQ5KOK.js");
13336
13383
  const [{ render }, { App }] = await Promise.all([
13337
13384
  import("ink"),
13338
- import("./App-AQAMCM4E.js")
13385
+ import("./App-EJ63ARJ3.js")
13339
13386
  ]);
13340
13387
  const baseUrl = await resolveBaseUrl(options, command);
13341
13388
  assertSecureBaseUrl(baseUrl);
@@ -13387,7 +13434,7 @@ program.command("chat").description("Start an interactive chat session").option(
13387
13434
  const { assertSecureBaseUrl } = await import("./dist-TBAQ5KOK.js");
13388
13435
  const [{ render }, { App }] = await Promise.all([
13389
13436
  import("ink"),
13390
- import("./App-AQAMCM4E.js")
13437
+ import("./App-EJ63ARJ3.js")
13391
13438
  ]);
13392
13439
  const baseUrl = await resolveBaseUrl(options, command);
13393
13440
  assertSecureBaseUrl(baseUrl);
@@ -14144,7 +14191,7 @@ Error: ${errorMsg}
14144
14191
  program.command("banner").description("Preview the startup banner and terminal capabilities").action(async () => {
14145
14192
  const { render } = await import("ink");
14146
14193
  const BannerPreview = React.lazy(async () => ({
14147
- default: (await import("./Banner-64DOS5YB.js")).Banner
14194
+ default: (await import("./Banner-7CWUTKMQ.js")).Banner
14148
14195
  }));
14149
14196
  render(
14150
14197
  /* @__PURE__ */ jsx(React.Suspense, { fallback: null, children: /* @__PURE__ */ jsx(BannerPreview, { disable: false }) })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ganakailabs/cloudeval-cli",
3
- "version": "0.19.4",
3
+ "version": "0.20.2",
4
4
  "license": "LicenseRef-CloudEval-CLI",
5
5
  "type": "module",
6
6
  "description": "CloudEval CLI for cloud architecture, cost, report, automation, and MCP workflows.",
package/sbom.spdx.json CHANGED
@@ -14,7 +14,7 @@
14
14
  {
15
15
  "SPDXID": "SPDXRef-Package-CloudEval-CLI",
16
16
  "name": "CloudEval CLI",
17
- "versionInfo": "0.19.4",
17
+ "versionInfo": "0.20.2",
18
18
  "downloadLocation": "https://github.com/ganakailabs/cloudeval-cli",
19
19
  "filesAnalyzed": false,
20
20
  "licenseConcluded": "LicenseRef-CloudEval-CLI",