@ganakailabs/cloudeval-cli 0.30.3 → 0.30.4
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 -1
- package/dist/{App-SKVX7NAF.js → App-AN3ELGIY.js} +2 -2
- package/dist/{Banner-CRBHEOTC.js → Banner-XD5GCTUQ.js} +2 -2
- package/dist/{chunk-QB3BBKVH.js → chunk-NOR7UT66.js} +1 -1
- package/dist/{chunk-FPZWMNAI.js → chunk-RVZOUNMP.js} +1 -1
- package/dist/cli.js +40 -7
- package/package.json +1 -1
- package/sbom.spdx.json +1 -1
package/README.md
CHANGED
|
@@ -117,7 +117,7 @@ jobs:
|
|
|
117
117
|
--non-interactive
|
|
118
118
|
```
|
|
119
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). Review comments show a merge-gate table, CloudEval report badges, a visible AI summary, a folded detailed AI reviewer note, a Well-Architected radar/table drilldown, and cost Mermaid charts.
|
|
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). Review comments show a merge-gate table, CloudEval report badges, a visible AI summary, a folded detailed AI reviewer note, a compact Well-Architected radar/table drilldown, and cost Mermaid charts grouped for quick scanning.
|
|
121
121
|
|
|
122
122
|
### MCP For Codex, Cursor, Claude, VS Code
|
|
123
123
|
|
|
@@ -38,10 +38,10 @@ import {
|
|
|
38
38
|
} from "./chunk-NXM4JEOB.js";
|
|
39
39
|
import {
|
|
40
40
|
Banner
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-NOR7UT66.js";
|
|
42
42
|
import {
|
|
43
43
|
CLI_VERSION
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-RVZOUNMP.js";
|
|
45
45
|
import {
|
|
46
46
|
raisedButtonStyle,
|
|
47
47
|
terminalTheme
|
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-
|
|
42
|
+
} from "./chunk-RVZOUNMP.js";
|
|
43
43
|
|
|
44
44
|
// src/runtime/prepareInk.ts
|
|
45
45
|
import fs from "fs";
|
|
@@ -3397,6 +3397,28 @@ var mermaidAxisId = (label) => {
|
|
|
3397
3397
|
const normalized = normalizeKey(label).replace(/[^a-z0-9_]/g, "_");
|
|
3398
3398
|
return normalized || "pillar";
|
|
3399
3399
|
};
|
|
3400
|
+
var compactMermaidAxisLabel = (label) => {
|
|
3401
|
+
const compactLabels = {
|
|
3402
|
+
security: "Security",
|
|
3403
|
+
reliability: "Reliability",
|
|
3404
|
+
cost_optimization: "Cost",
|
|
3405
|
+
operational_excellence: "Ops",
|
|
3406
|
+
performance_efficiency: "Performance"
|
|
3407
|
+
};
|
|
3408
|
+
const normalized = normalizeKey(label);
|
|
3409
|
+
if (compactLabels[normalized]) {
|
|
3410
|
+
return compactLabels[normalized];
|
|
3411
|
+
}
|
|
3412
|
+
const cleaned = label.trim().replace(/\s+/g, " ");
|
|
3413
|
+
if (cleaned.length <= 16) {
|
|
3414
|
+
return cleaned;
|
|
3415
|
+
}
|
|
3416
|
+
const words = cleaned.split(" ");
|
|
3417
|
+
if (words.length > 1) {
|
|
3418
|
+
return words.slice(0, 2).map((word) => word.length > 8 ? word.slice(0, 8) : word).join(" ");
|
|
3419
|
+
}
|
|
3420
|
+
return cleaned.slice(0, 16);
|
|
3421
|
+
};
|
|
3400
3422
|
var wellArchitectedRadarLines = (pillars) => {
|
|
3401
3423
|
const scored = pillars.map((pillar) => {
|
|
3402
3424
|
const label = String(pillar.label ?? pillar.id ?? "Pillar");
|
|
@@ -3416,10 +3438,15 @@ var wellArchitectedRadarLines = (pillars) => {
|
|
|
3416
3438
|
"```mermaid",
|
|
3417
3439
|
"radar-beta",
|
|
3418
3440
|
" title Well-Architected posture",
|
|
3419
|
-
` axis ${scored.map(
|
|
3441
|
+
` axis ${scored.map(
|
|
3442
|
+
(pillar) => `${pillar.id}["${mermaidLabel(compactMermaidAxisLabel(pillar.label))}"]`
|
|
3443
|
+
).join(", ")}`,
|
|
3420
3444
|
` curve current["Current"]{${scored.map((pillar) => trimNumber(pillar.score, 3)).join(", ")}}`,
|
|
3445
|
+
" showLegend false",
|
|
3421
3446
|
" max 100",
|
|
3422
3447
|
" min 0",
|
|
3448
|
+
" graticule polygon",
|
|
3449
|
+
" ticks 4",
|
|
3423
3450
|
"```",
|
|
3424
3451
|
"",
|
|
3425
3452
|
"_If GitHub does not render Mermaid radar charts yet, use the table below as the fallback._"
|
|
@@ -4186,7 +4213,9 @@ var buildMarkdownSummary = (data) => {
|
|
|
4186
4213
|
"",
|
|
4187
4214
|
...riskLines,
|
|
4188
4215
|
"",
|
|
4189
|
-
...radarLines.length ? [...radarLines, ""] : [],
|
|
4216
|
+
...radarLines.length ? ["**Radar (compact labels)**", "", ...radarLines, ""] : [],
|
|
4217
|
+
"**Scores**",
|
|
4218
|
+
"",
|
|
4190
4219
|
"| Pillar | Score | Rating |",
|
|
4191
4220
|
"| --- | ---: | --- |",
|
|
4192
4221
|
...pillarLines,
|
|
@@ -4202,14 +4231,18 @@ var buildMarkdownSummary = (data) => {
|
|
|
4202
4231
|
cost?.currency ?? data.gate?.cost?.estimatedSavings?.currency
|
|
4203
4232
|
);
|
|
4204
4233
|
if (impactLines.length) {
|
|
4205
|
-
costLines.push(...impactLines);
|
|
4234
|
+
costLines.push("**Cost impact**", "", ...impactLines);
|
|
4206
4235
|
} else if (data.gate?.cost?.estimatedSavings?.amount !== void 0) {
|
|
4207
4236
|
costLines.push(
|
|
4237
|
+
"**Cost impact**",
|
|
4238
|
+
"",
|
|
4208
4239
|
`- Estimated savings: **${formatMonthlyMoney(data.gate.cost.estimatedSavings.amount, data.gate.cost.estimatedSavings.currency)}**`
|
|
4209
4240
|
);
|
|
4210
4241
|
}
|
|
4211
4242
|
if (costPieRows.length) {
|
|
4212
4243
|
costLines.push(
|
|
4244
|
+
"",
|
|
4245
|
+
"**Cost split**",
|
|
4213
4246
|
"",
|
|
4214
4247
|
"```mermaid",
|
|
4215
4248
|
`pie title ${costPieTitle}`,
|
|
@@ -17181,7 +17214,7 @@ program.command("tui").description("Open the CloudEval Terminal UI").option("--b
|
|
|
17181
17214
|
const { assertSecureBaseUrl } = await import("./dist-6LEMVXIY.js");
|
|
17182
17215
|
const [{ render }, { App }] = await Promise.all([
|
|
17183
17216
|
import("ink"),
|
|
17184
|
-
import("./App-
|
|
17217
|
+
import("./App-AN3ELGIY.js")
|
|
17185
17218
|
]);
|
|
17186
17219
|
const baseUrl = await resolveBaseUrl(options, command);
|
|
17187
17220
|
assertSecureBaseUrl(baseUrl);
|
|
@@ -17242,7 +17275,7 @@ program.command("chat").description("Start an interactive chat session").option(
|
|
|
17242
17275
|
const { assertSecureBaseUrl } = await import("./dist-6LEMVXIY.js");
|
|
17243
17276
|
const [{ render }, { App }] = await Promise.all([
|
|
17244
17277
|
import("ink"),
|
|
17245
|
-
import("./App-
|
|
17278
|
+
import("./App-AN3ELGIY.js")
|
|
17246
17279
|
]);
|
|
17247
17280
|
const baseUrl = await resolveBaseUrl(options, command);
|
|
17248
17281
|
assertSecureBaseUrl(baseUrl);
|
|
@@ -18034,7 +18067,7 @@ Error: ${errorMsg}
|
|
|
18034
18067
|
program.command("banner").description("Preview the startup banner and terminal capabilities").action(async () => {
|
|
18035
18068
|
const { render } = await import("ink");
|
|
18036
18069
|
const BannerPreview = React.lazy(async () => ({
|
|
18037
|
-
default: (await import("./Banner-
|
|
18070
|
+
default: (await import("./Banner-XD5GCTUQ.js")).Banner
|
|
18038
18071
|
}));
|
|
18039
18072
|
render(
|
|
18040
18073
|
/* @__PURE__ */ jsx(React.Suspense, { fallback: null, children: /* @__PURE__ */ jsx(BannerPreview, { disable: false }) })
|
package/package.json
CHANGED
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.
|
|
17
|
+
"versionInfo": "0.30.4",
|
|
18
18
|
"downloadLocation": "https://github.com/ganakailabs/cloudeval-cli",
|
|
19
19
|
"filesAnalyzed": false,
|
|
20
20
|
"licenseConcluded": "LicenseRef-CloudEval-CLI",
|