@ganakailabs/cloudeval-cli 0.30.1 → 0.30.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
@@ -1,197 +1,266 @@
1
1
  # CloudEval CLI
2
2
 
3
+ Review Azure infrastructure before merge - from CLI, CI, and AI agents.
4
+
3
5
  <p align="center">
4
6
  <img src="https://raw.githubusercontent.com/ganakailabs/cloudeval-cli/main/docs/assets/images/cli/tui-chat.png" alt="CloudEval CLI terminal UI" width="100%">
5
7
  </p>
6
8
 
7
9
  <p align="center">
8
10
  <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>
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
11
  <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>
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>
12
+ <a href="https://cloudeval.ai"><img alt="CloudEval app" src="https://img.shields.io/badge/app-cloudeval.ai-b6f23c?style=flat-square&labelColor=0b0f0a"></a>
14
13
  <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>
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>
14
+ <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>
16
15
  </p>
17
16
 
18
- CloudEval CLI brings CloudEval into your terminal, scripts, and agent tools. It
19
- supports cloud chat, Agent mode, Agent Profiles, project and report inspection,
20
- template validation, recipes, local hooks, MCP server workflows, and local
21
- thread switching in the Terminal UI.
17
+ CloudEval CLI brings **CloudEval** into terminals, CI pipelines, and MCP-capable coding agents. Use it to review Azure ARM templates, Bicep-generated ARM JSON, and live Azure context with cost, architecture, and Well-Architected signals.
18
+
19
+ ## What It Does
20
+
21
+ CloudEval helps teams catch infrastructure risk before merge:
22
22
 
23
- [CloudEval](https://cloudeval.ai) | [Docs](https://docs.cloudeval.ai/reference/cli-overview) | [GitHub](https://github.com/ganakailabs/cloudeval-cli) | [Discord](https://discord.gg/tk5dcU2a7T) | [Issues](https://github.com/ganakailabs/cloudeval-cli/issues) | [Releases](https://github.com/ganakailabs/cloudeval-cli/releases)
23
+ - reviews **ARM JSON** and **Bicep-generated ARM JSON** templates;
24
+ - validates templates from local files or CI workspaces;
25
+ - connects to live Azure context for cloud review workflows;
26
+ - exposes machine-readable output for scripts and GitHub Actions;
27
+ - runs as an MCP server for Codex, Cursor, Claude, VS Code, and other clients.
24
28
 
25
- ## Install
29
+ ## Quickstart: Run Your First Azure/IaC Review
30
+
31
+ Install from npm:
26
32
 
27
33
  ```bash
28
34
  npm install -g @ganakailabs/cloudeval-cli
29
35
  cloudeval --help
30
36
  ```
31
37
 
32
- The npm package requires Node.js 20 or newer and installs these command aliases:
38
+ Sign in for local use:
33
39
 
34
- - `cloudeval`
35
- - `cloud`
36
- - `eva`
40
+ ```bash
41
+ cloudeval login
42
+ cloudeval status
43
+ ```
37
44
 
38
- For standalone macOS, Linux, and Windows binaries, use the GitHub releases or
39
- the installers:
45
+ Validate an ARM template:
40
46
 
41
47
  ```bash
42
- curl -fsSL https://cli.cloudeval.ai/install.sh | bash
48
+ cloudeval validate template \
49
+ --template-file ./infra/azuredeploy.json \
50
+ --wait \
51
+ --progress stderr \
52
+ --format json \
53
+ --non-interactive
43
54
  ```
44
55
 
45
- ```powershell
46
- irm https://cli.cloudeval.ai/install.ps1 | iex
47
- ```
56
+ Full setup docs: [Use the CLI](https://docs.cloudeval.ai/quickstart/use-the-cli.md) and [CLI command reference](https://docs.cloudeval.ai/reference/cli-command-reference.md).
48
57
 
49
- The shell installer can detect Codex, Claude Desktop, Cursor, and VS Code,
50
- skip clients where CloudEval MCP is already configured, and offer setup only
51
- for missing clients that can be configured automatically. Manual-only clients
52
- are summarized with a follow-up command instead of forcing another prompt.
53
- It also asks whether to share limited CLI telemetry, defaulting to yes; decline
54
- or set `CLOUDEVAL_TELEMETRY=0` to write `telemetry.enabled=false`.
55
- When a CLI update exposes new MCP capabilities, restart or reload your MCP
56
- client when you are ready; CloudEval never restarts those apps automatically.
58
+ ## Choose Your Workflow
57
59
 
58
- `npm install -g` does not run that installer wizard. After installing from npm,
59
- use `cloudeval login` for first-run auth, `cloudeval mcp setup <client>` to
60
- configure MCP in your editor, or `cloudeval update` (TTY) to rerun the shell
61
- installer and optionally accept agent/MCP setup prompts.
60
+ ### Local ARM / Bicep-Generated ARM JSON
62
61
 
63
- ## Common Commands
62
+ Use `validate template` for local review and scriptable checks:
63
+
64
+ ```bash
65
+ cloudeval validate template \
66
+ --template-file ./infra/azuredeploy.json \
67
+ --parameters-file ./infra/azuredeploy.parameters.json \
68
+ --wait \
69
+ --progress stderr \
70
+ --format json
71
+ ```
72
+
73
+ ### Live Azure Sync
74
+
75
+ Use CloudEval projects and reports after connecting Azure in the app or CLI:
64
76
 
65
77
  ```bash
66
- cloudeval # Terminal UI
67
- cloudeval login # Browser device login
68
- cloudeval status # Account, API, and local CLI status
69
- cloudeval ask "Summarize my cloud risk" --format json
70
- cloudeval agent "Find cost and architecture risks" --format json
71
- cloudeval agents list
72
- cloudeval agents run cost --project <project-id> --format json
73
78
  cloudeval projects list
74
79
  cloudeval reports list
80
+ cloudeval ask "Summarize my Azure architecture risks" --format json
81
+ ```
82
+
83
+ ### GitHub Actions / CI
84
+
85
+ Use a scoped `CLOUDEVAL_ACCESS_KEY` secret and keep generated JSON on stdout:
86
+
87
+ ```yaml
88
+ name: CloudEval review
89
+
90
+ on:
91
+ pull_request:
92
+ paths:
93
+ - "infra/**"
94
+
95
+ jobs:
96
+ cloudeval:
97
+ runs-on: ubuntu-latest
98
+
99
+ steps:
100
+ - uses: actions/checkout@v4
101
+
102
+ - uses: actions/setup-node@v4
103
+ with:
104
+ node-version: "20"
105
+
106
+ - run: npm install -g @ganakailabs/cloudeval-cli
107
+
108
+ - name: Validate ARM template
109
+ env:
110
+ CLOUDEVAL_ACCESS_KEY: ${{ secrets.CLOUDEVAL_ACCESS_KEY }}
111
+ run: |
112
+ cloudeval validate template \
113
+ --template-file ./infra/azuredeploy.json \
114
+ --wait \
115
+ --progress stderr \
116
+ --format json \
117
+ --non-interactive
118
+ ```
119
+
120
+ Public example: [passing baseline PR #6](https://github.com/ganakailabs/cloudeval-azure-arm-review-example/pull/6) in [`ganakailabs/cloudeval-azure-arm-review-example`](https://github.com/ganakailabs/cloudeval-azure-arm-review-example).
121
+
122
+ ### MCP For Codex, Cursor, Claude, VS Code
123
+
124
+ Start with read-only agent integration:
125
+
126
+ ```bash
75
127
  cloudeval mcp serve --toolset readonly
128
+ ```
129
+
130
+ Setup docs: [MCP client setup](https://docs.cloudeval.ai/reference/mcp-client-setup.md) and [agent automation rules](https://docs.cloudeval.ai/reference/agent-and-automation-rules.md).
131
+
132
+ ## Example Outputs
133
+
134
+ Human-facing commands print concise summaries by default:
135
+
136
+ ```bash
137
+ cloudeval status
138
+ cloudeval reports list
139
+ cloudeval rules search "public network"
140
+ cloudeval agents run cost --project <project-id> --format json
141
+ ```
142
+
143
+ Automation should request structured output:
144
+
145
+ ```bash
76
146
  cloudeval capabilities --format json
147
+ cloudeval validate template --template-file ./infra/azuredeploy.json --wait --format json --non-interactive
148
+ cloudeval ask "Summarize top risks" --format ndjson --progress ndjson --non-interactive
77
149
  ```
78
150
 
79
- ## Telemetry
151
+ ## Trust, Privacy, And Limits
152
+
153
+ CloudEval is designed for review workflows, not silent cloud mutation.
154
+
155
+ - Azure is the primary supported live-cloud provider today.
156
+ - ARM JSON and Bicep-generated ARM JSON are the strongest current IaC paths.
157
+ - AWS and GCP live sync are not full-parity workflows today.
158
+ - Machine-readable commands write payloads to stdout.
159
+ - Prompts, warnings, progress, and browser-open messages go to stderr.
160
+ - Telemetry does not send raw prompts, command output, tokens, local paths, resource IDs, tenant IDs, cloud resource names, stack traces, or raw error messages.
161
+ - Use `--format json --non-interactive` for scripts and CI.
162
+ - Use `cloudeval mcp serve --toolset readonly` as the default agent integration mode.
163
+
164
+ Privacy and automation details: [agent and automation rules](https://docs.cloudeval.ai/reference/agent-and-automation-rules.md).
80
165
 
81
- Telemetry is default-on and uses curated Azure Application Insights custom
82
- events only. CloudEval records command family, success, duration, safe option
83
- enums, CLI/runtime versions, OS major version, architecture, install source,
84
- update/install outcomes, MCP tool names, TUI metadata, a W3C `traceId`, and a
85
- per-command `requestId` for backend correlation. After login, events may include
86
- a hashed internal user ID only.
166
+ ## Automation Contract
87
167
 
88
- Telemetry does not include prompts, command output, tokens, local paths, project
89
- or resource IDs, raw email/name fields, account/session/tenant IDs, stack
90
- traces, raw error messages, command arguments, cwd, file paths, or cloud
91
- resource names.
168
+ CloudEval separates machine output from human/operator messages:
169
+
170
+ - **stdout**: JSON, NDJSON, Markdown, or text payload requested by `--format`;
171
+ - **stderr**: prompts, warnings, progress, browser-open messages, and MCP diagnostics;
172
+ - **JSON/NDJSON**: use `--format json` for one final payload or `--format ndjson` for streaming events where supported;
173
+ - **exit codes**: non-zero exits indicate failed commands, validation failures, missing auth, or required human approval;
174
+ - **non-interactive mode**: use `--non-interactive` in CI so commands fail instead of prompting.
175
+
176
+ Recommended CI shape:
92
177
 
93
178
  ```bash
94
- cloudeval config set telemetry.enabled false
95
- cloudeval config get telemetry.enabled --format json
96
- cloudeval config set telemetry.enabled true
97
- cloudeval config unset telemetry.enabled
179
+ cloudeval validate template \
180
+ --template-file ./infra/azuredeploy.json \
181
+ --wait \
182
+ --progress stderr \
183
+ --format json \
184
+ --non-interactive
98
185
  ```
99
186
 
100
- For one run, use `CLOUDEVAL_TELEMETRY=0` or `CLOUDEVAL_TELEMETRY=1`.
187
+ ## MCP For Coding Agents
188
+
189
+ Use MCP when an AI coding agent should inspect CloudEval projects, reports, rules, recipes, or validation capabilities.
101
190
 
102
- ## Uninstall
191
+ ```bash
192
+ cloudeval mcp serve --toolset readonly
193
+ ```
103
194
 
104
- To remove local installer-owned artifacts while keeping CloudEval config,
105
- sessions, and auth:
195
+ Common setup commands:
106
196
 
107
197
  ```bash
108
- cloudeval uninstall --yes
198
+ codex mcp add cloudeval -- cloudeval mcp serve --toolset readonly
199
+ cloudeval mcp setup cursor --dry-run --toolset readonly --format json
200
+ cloudeval mcp setup vscode --dry-run --toolset readonly --format json
109
201
  ```
110
202
 
111
- To preview cleanup first:
203
+ MCP stdout is reserved for JSON-RPC. Diagnostics go to stderr.
204
+
205
+ ## Advanced Install, Update, Uninstall
206
+
207
+ Standalone installers are available for macOS, Linux, WSL2, Git Bash, and PowerShell 7+:
112
208
 
113
209
  ```bash
114
- cloudeval uninstall --dry-run
210
+ curl -fsSL https://cli.cloudeval.ai/install.sh | bash
211
+ ```
212
+
213
+ ```powershell
214
+ irm https://cli.cloudeval.ai/install.ps1 | iex
115
215
  ```
116
216
 
117
- To remove local config and session state too:
217
+ Update and uninstall:
118
218
 
119
219
  ```bash
220
+ cloudeval update --check
221
+ cloudeval update --yes
222
+ cloudeval uninstall --dry-run
223
+ cloudeval uninstall --yes
120
224
  cloudeval uninstall --yes --remove-config
225
+ npm uninstall -g @ganakailabs/cloudeval-cli
121
226
  ```
122
227
 
123
- If you installed through npm, remove the npm package as the final step:
228
+ The installer can offer optional MCP setup for detected clients. It does not create access keys or write secrets into MCP client config.
229
+
230
+ ## Full Docs
231
+
232
+ - [CloudEval app](https://cloudeval.ai)
233
+ - [CLI overview](https://docs.cloudeval.ai/reference/cli-overview)
234
+ - [Use the CLI](https://docs.cloudeval.ai/quickstart/use-the-cli.md)
235
+ - [CLI command reference](https://docs.cloudeval.ai/reference/cli-command-reference.md)
236
+ - [MCP client setup](https://docs.cloudeval.ai/reference/mcp-client-setup.md)
237
+ - [Agent and automation rules](https://docs.cloudeval.ai/reference/agent-and-automation-rules.md)
238
+ - [Sign-in and onboarding troubleshooting](https://docs.cloudeval.ai/troubleshooting/sign-in-and-onboarding.md)
239
+ - [GitHub issues](https://github.com/ganakailabs/cloudeval-cli/issues)
240
+ - [Releases](https://github.com/ganakailabs/cloudeval-cli/releases)
241
+ - [Discord](https://discord.gg/tk5dcU2a7T)
242
+
243
+ ## Build From Source / Contributing
244
+
245
+ Read [AGENTS.md](https://github.com/ganakailabs/cloudeval-cli/blob/main/AGENTS.md) before touching auth, credentials, smoke artifacts, or user-facing command behavior.
124
246
 
125
247
  ```bash
126
- npm uninstall -g @ganakailabs/cloudeval-cli
248
+ git clone https://github.com/ganakailabs/cloudeval-cli.git
249
+ cd cloudeval-cli
250
+ pnpm install
251
+ pnpm build
252
+ pnpm -C packages/cli dev --help
127
253
  ```
128
254
 
129
- ## What It Covers
130
-
131
- - Terminal UI for chat, Agent mode, Agent Profile selection, recent thread
132
- switching, projects, reports, billing, context rail, task ledger, artifact
133
- chips, and a docked composer.
134
- - Scriptable commands with `json`, `ndjson`, `markdown`, and text output.
135
- - Agent Profiles: `architecture`, `cost`, `triage`, and `remediation`.
136
- - MCP tools for Codex, Cursor, Claude, VS Code, and other stdio JSON-RPC hosts.
137
- - Project graph, report, recipe, rules, and validation workflows.
138
- - Local opt-in hooks for CLI and Agent Profile events.
139
-
140
- In the Terminal UI, use the Thread control or `/thread` to choose open chat
141
- sessions, recent CloudEval chat threads, and local CLI sessions. `/thread new`
142
- starts another independent open session, and `/open` opens the matching
143
- CloudEval web chat thread when the active session has a thread id. Roomy
144
- terminals show a context rail with project, thread, model, mode, profile, report
145
- artifact chips; narrower terminals
146
- keep the chat first and expose the same controls through the docked composer and
147
- slash commands. Typing `/` opens a bottom command completion strip; use Tab or
148
- Up/Down to move, Right to accept the ghost text, and Enter to choose the
149
- highlighted command. Streaming work appears as a task ledger in the thread.
150
- Grounded answers show numbered citations and a Sources section instead of raw
151
- `[S_tool_...]` tags, with citation numbers highlighted inline; `/copy` copies
152
- the latest assistant response and `/download` writes a Markdown transcript with
153
- the same references. Project and Connection tabs include selected-item detail
154
- panes for backend fields, report coverage, sync state, and linked records; use
155
- `J`/`K` or Up/Down on Projects and Connections to move the selected row, then
156
- Enter to confirm it. The billing header separates credits left from observed
157
- credits used so usage does not look like the current budget. Use the Profile
158
- control or `/profile architecture|cost|triage|remediation` to choose an Agent
159
- Profile for the next chat stream. Selecting a profile switches to Agent mode;
160
- selecting Ask mode clears the profile back to the default chat flow. Starter
161
- prompts stay hidden until you run `/starter`. Press `Esc` from the prompt to
162
- leave text editing so tab, arrow, and number shortcuts move through controls
163
- and tabs; type again to resume editing. Busy loaders and the input cursor animate
164
- unless you pass `--no-anim`. The
165
- banner details include the logged-in user. Focused controls and the active top
166
- tab use the shared warm banner-yellow accent, with the active tab filled across
167
- its full button interior.
168
-
169
- ## Authentication
170
-
171
- Use `cloudeval login` for local development. For CI or hosted agents, create a
172
- scoped CloudEval access key in the app or with `cloudeval credentials create`,
173
- then provide it as `CLOUDEVAL_ACCESS_KEY`.
174
-
175
- Stored device-login sessions are refreshed automatically before authenticated
176
- requests. If a long-running terminal session receives an expired-token response
177
- from the chat stream, the CLI refreshes the stored session and retries the
178
- request once. If the refresh token is revoked or expired, run `cloudeval login`
179
- again.
180
-
181
- ## Documentation
182
-
183
- - CLI overview: <https://docs.cloudeval.ai/reference/cli-overview>
184
- - Command reference: <https://docs.cloudeval.ai/reference/cli-command-reference>
185
- - MCP setup: <https://docs.cloudeval.ai/reference/mcp-client-setup>
186
- - Release smoke tests: <https://github.com/ganakailabs/cloudeval-cli/blob/main/docs/release-smoke-tests.md>
187
-
188
- ## License And Notices
189
-
190
- CloudEval CLI first-party code is provided under the
191
- [CloudEval CLI License](https://github.com/ganakailabs/cloudeval-cli/blob/main/LICENSE).
192
- Production third-party package attribution is published in
193
- [THIRD_PARTY_NOTICES.md](https://github.com/ganakailabs/cloudeval-cli/blob/main/THIRD_PARTY_NOTICES.md),
194
- and the release SBOM is published as
195
- [sbom.spdx.json](https://github.com/ganakailabs/cloudeval-cli/blob/main/sbom.spdx.json).
196
- Installer releases also place these notice files under
197
- `~/.local/share/cloudeval/licenses`.
255
+ Run focused package checks:
256
+
257
+ ```bash
258
+ pnpm test:npm-package
259
+ pnpm -C packages/cli test:cli:noninteractive
260
+ ```
261
+
262
+ ## License
263
+
264
+ CloudEval CLI first-party code is provided under the [CloudEval CLI License](https://github.com/ganakailabs/cloudeval-cli/blob/main/LICENSE).
265
+
266
+ Production third-party attribution is published in [THIRD_PARTY_NOTICES.md](https://github.com/ganakailabs/cloudeval-cli/blob/main/THIRD_PARTY_NOTICES.md), and the release SBOM is published as [sbom.spdx.json](https://github.com/ganakailabs/cloudeval-cli/blob/main/sbom.spdx.json).
@@ -38,10 +38,10 @@ import {
38
38
  } from "./chunk-NXM4JEOB.js";
39
39
  import {
40
40
  Banner
41
- } from "./chunk-P5JXFRYX.js";
41
+ } from "./chunk-6WVS2D2U.js";
42
42
  import {
43
43
  CLI_VERSION
44
- } from "./chunk-STE265DV.js";
44
+ } from "./chunk-XGKZ2VPZ.js";
45
45
  import {
46
46
  raisedButtonStyle,
47
47
  terminalTheme
@@ -3,8 +3,8 @@ import {
3
3
  bannerMetaColor,
4
4
  bannerSegmentColor,
5
5
  splitBannerLineSegments
6
- } from "./chunk-P5JXFRYX.js";
7
- import "./chunk-STE265DV.js";
6
+ } from "./chunk-6WVS2D2U.js";
7
+ import "./chunk-XGKZ2VPZ.js";
8
8
  import "./chunk-ZDKRIOMB.js";
9
9
  export {
10
10
  Banner,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CLI_VERSION
3
- } from "./chunk-STE265DV.js";
3
+ } from "./chunk-XGKZ2VPZ.js";
4
4
  import {
5
5
  shouldUseColor,
6
6
  terminalTheme
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var CLI_VERSION = "0.30.1";
2
+ var CLI_VERSION = "0.30.2";
3
3
 
4
4
  export {
5
5
  CLI_VERSION
package/dist/cli.js CHANGED
@@ -39,7 +39,7 @@ import {
39
39
  } from "./chunk-NXM4JEOB.js";
40
40
  import {
41
41
  CLI_VERSION
42
- } from "./chunk-STE265DV.js";
42
+ } from "./chunk-XGKZ2VPZ.js";
43
43
 
44
44
  // src/runtime/prepareInk.ts
45
45
  import fs from "fs";
@@ -16869,7 +16869,7 @@ program.command("tui").description("Open the CloudEval Terminal UI").option("--b
16869
16869
  const { assertSecureBaseUrl } = await import("./dist-6LEMVXIY.js");
16870
16870
  const [{ render }, { App }] = await Promise.all([
16871
16871
  import("ink"),
16872
- import("./App-IRVY4LSK.js")
16872
+ import("./App-5LBIATTG.js")
16873
16873
  ]);
16874
16874
  const baseUrl = await resolveBaseUrl(options, command);
16875
16875
  assertSecureBaseUrl(baseUrl);
@@ -16930,7 +16930,7 @@ program.command("chat").description("Start an interactive chat session").option(
16930
16930
  const { assertSecureBaseUrl } = await import("./dist-6LEMVXIY.js");
16931
16931
  const [{ render }, { App }] = await Promise.all([
16932
16932
  import("ink"),
16933
- import("./App-IRVY4LSK.js")
16933
+ import("./App-5LBIATTG.js")
16934
16934
  ]);
16935
16935
  const baseUrl = await resolveBaseUrl(options, command);
16936
16936
  assertSecureBaseUrl(baseUrl);
@@ -17722,7 +17722,7 @@ Error: ${errorMsg}
17722
17722
  program.command("banner").description("Preview the startup banner and terminal capabilities").action(async () => {
17723
17723
  const { render } = await import("ink");
17724
17724
  const BannerPreview = React.lazy(async () => ({
17725
- default: (await import("./Banner-4PWF5O3B.js")).Banner
17725
+ default: (await import("./Banner-LJ5AITDD.js")).Banner
17726
17726
  }));
17727
17727
  render(
17728
17728
  /* @__PURE__ */ jsx(React.Suspense, { fallback: null, children: /* @__PURE__ */ jsx(BannerPreview, { disable: false }) })
package/package.json CHANGED
@@ -1,24 +1,27 @@
1
1
  {
2
2
  "name": "@ganakailabs/cloudeval-cli",
3
- "version": "0.30.1",
3
+ "version": "0.30.2",
4
4
  "license": "LicenseRef-CloudEval-CLI",
5
5
  "type": "module",
6
- "description": "CloudEval CLI for cloud architecture, cost, report, automation, and MCP workflows.",
6
+ "description": "Review Cloud infra-as-code and live environments from CLI, CI, and MCP agents.",
7
7
  "author": "Ganak AI Labs (https://cloudeval.ai)",
8
8
  "keywords": [
9
9
  "cloudeval",
10
- "cloud",
11
10
  "azure",
12
- "cli",
13
- "mcp",
14
- "agents",
15
- "automation",
16
- "iac",
11
+ "azure-devops",
17
12
  "arm-template",
13
+ "bicep",
14
+ "infrastructure-as-code",
15
+ "iac-review",
16
+ "cloud-architecture",
17
+ "cloud-cost",
18
18
  "well-architected",
19
- "cost",
20
- "architecture",
21
- "devops"
19
+ "finops",
20
+ "devops",
21
+ "github-actions",
22
+ "ci-cd",
23
+ "mcp",
24
+ "agents"
22
25
  ],
23
26
  "homepage": "https://docs.cloudeval.ai/reference/cli-overview",
24
27
  "repository": {
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.30.1",
17
+ "versionInfo": "0.30.2",
18
18
  "downloadLocation": "https://github.com/ganakailabs/cloudeval-cli",
19
19
  "filesAnalyzed": false,
20
20
  "licenseConcluded": "LicenseRef-CloudEval-CLI",