@ganakailabs/cloudeval-cli 0.26.9 → 0.26.11
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/dist/{App-4NDMTVMJ.js → App-VZXTX4H7.js} +2 -2
- package/dist/{Banner-LP37NIKI.js → Banner-URKZ37H4.js} +2 -2
- package/dist/{chunk-6TCB66QU.js → chunk-XBVIBHTB.js} +1 -1
- package/dist/{chunk-NCMNBZG7.js → chunk-Y5L2F7X3.js} +1 -1
- package/dist/cli.js +56 -7
- package/package.json +1 -1
- package/sbom.spdx.json +1 -1
|
@@ -38,10 +38,10 @@ import {
|
|
|
38
38
|
} from "./chunk-2OLI5VOG.js";
|
|
39
39
|
import {
|
|
40
40
|
Banner
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-XBVIBHTB.js";
|
|
42
42
|
import {
|
|
43
43
|
CLI_VERSION
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-Y5L2F7X3.js";
|
|
45
45
|
import {
|
|
46
46
|
raisedButtonStyle,
|
|
47
47
|
terminalTheme
|
package/dist/cli.js
CHANGED
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
} from "./chunk-2OLI5VOG.js";
|
|
37
37
|
import {
|
|
38
38
|
CLI_VERSION
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-Y5L2F7X3.js";
|
|
40
40
|
|
|
41
41
|
// src/runtime/prepareInk.ts
|
|
42
42
|
import fs from "fs";
|
|
@@ -2920,7 +2920,22 @@ var buildAiSummaryPrompt = (data) => [
|
|
|
2920
2920
|
`Validation: ${formatValidation(data.gate?.validation)}`,
|
|
2921
2921
|
Array.isArray(data.gate?.failures) && data.gate.failures.length ? `Gate failures: ${data.gate.failures.join("; ")}` : "Gate failures: none reported"
|
|
2922
2922
|
].join("\n");
|
|
2923
|
-
var
|
|
2923
|
+
var isTransientAiSummaryText = (text) => {
|
|
2924
|
+
if (!text?.trim()) {
|
|
2925
|
+
return false;
|
|
2926
|
+
}
|
|
2927
|
+
return /too many requests|rate[- ]?limit|try again in a moment|temporarily unavailable/i.test(
|
|
2928
|
+
text
|
|
2929
|
+
);
|
|
2930
|
+
};
|
|
2931
|
+
var aiSummaryRetryDelaysMs = () => {
|
|
2932
|
+
const raw = process.env.CLOUDEVAL_REVIEW_AI_RETRY_DELAYS_MS;
|
|
2933
|
+
if (raw?.trim()) {
|
|
2934
|
+
return raw.split(",").map((value) => Number.parseInt(value.trim(), 10)).filter((value) => Number.isFinite(value) && value >= 0);
|
|
2935
|
+
}
|
|
2936
|
+
return [5e3, 15e3];
|
|
2937
|
+
};
|
|
2938
|
+
var generateAiSummaryAttempt = async ({
|
|
2924
2939
|
baseUrl,
|
|
2925
2940
|
token,
|
|
2926
2941
|
user,
|
|
@@ -2977,6 +2992,7 @@ var generateAiSummary = async ({
|
|
|
2977
2992
|
const finalMessage = [...chatState.messages ?? []].reverse().find((message) => message.role === "assistant");
|
|
2978
2993
|
return {
|
|
2979
2994
|
enabled: true,
|
|
2995
|
+
status: "ok",
|
|
2980
2996
|
mode,
|
|
2981
2997
|
...mode === "agent" ? { agentProfileId: agentProfileId ?? "architecture" } : {},
|
|
2982
2998
|
...model ? { model } : {},
|
|
@@ -2984,6 +3000,34 @@ var generateAiSummary = async ({
|
|
|
2984
3000
|
threadId
|
|
2985
3001
|
};
|
|
2986
3002
|
};
|
|
3003
|
+
var generateAiSummary = async (input) => {
|
|
3004
|
+
const retryDelays = aiSummaryRetryDelaysMs();
|
|
3005
|
+
let lastResult;
|
|
3006
|
+
for (let attemptIndex = 0; attemptIndex <= retryDelays.length; attemptIndex += 1) {
|
|
3007
|
+
const result = await generateAiSummaryAttempt(input);
|
|
3008
|
+
result.attempts = attemptIndex + 1;
|
|
3009
|
+
lastResult = result;
|
|
3010
|
+
if (!isTransientAiSummaryText(result.markdown)) {
|
|
3011
|
+
return result;
|
|
3012
|
+
}
|
|
3013
|
+
const retryDelay = retryDelays[attemptIndex];
|
|
3014
|
+
if (retryDelay === void 0) {
|
|
3015
|
+
break;
|
|
3016
|
+
}
|
|
3017
|
+
await sleep2(retryDelay);
|
|
3018
|
+
}
|
|
3019
|
+
return {
|
|
3020
|
+
...lastResult ?? {},
|
|
3021
|
+
enabled: true,
|
|
3022
|
+
status: "unavailable",
|
|
3023
|
+
mode: input.mode,
|
|
3024
|
+
...input.mode === "agent" ? { agentProfileId: input.agentProfileId ?? "architecture" } : {},
|
|
3025
|
+
...input.model ? { model: input.model } : {},
|
|
3026
|
+
attempts: lastResult?.attempts ?? retryDelays.length + 1,
|
|
3027
|
+
error: lastResult?.markdown || "AI summary unavailable",
|
|
3028
|
+
markdown: "AI summary unavailable: CloudEval AI was rate-limited. Retry the workflow or rerun `cloudeval review`."
|
|
3029
|
+
};
|
|
3030
|
+
};
|
|
2987
3031
|
var buildMarkdownSummary = (data) => {
|
|
2988
3032
|
const gateStatus = String(data.gate?.status ?? "unknown").toUpperCase();
|
|
2989
3033
|
const score = data.gate?.overallScore ?? "unknown";
|
|
@@ -3020,13 +3064,18 @@ var buildMarkdownSummary = (data) => {
|
|
|
3020
3064
|
);
|
|
3021
3065
|
}
|
|
3022
3066
|
if (cost?.amount !== void 0 || cost?.threshold !== void 0) {
|
|
3067
|
+
const costLines = [`- Monthly estimate: ${formatMoney(cost?.amount, cost?.currency)}`];
|
|
3068
|
+
if (data.gate?.cost?.estimatedSavings?.amount !== void 0) {
|
|
3069
|
+
costLines.push(
|
|
3070
|
+
`- Estimated savings: ${formatMoney(data.gate.cost.estimatedSavings.amount, data.gate.cost.estimatedSavings.currency)}`
|
|
3071
|
+
);
|
|
3072
|
+
}
|
|
3023
3073
|
lines.push(
|
|
3024
3074
|
"",
|
|
3025
3075
|
"<details>",
|
|
3026
3076
|
"<summary>Cost details</summary>",
|
|
3027
3077
|
"",
|
|
3028
|
-
|
|
3029
|
-
data.gate?.cost?.estimatedSavings?.amount !== void 0 ? `- Estimated savings: ${formatMoney(data.gate.cost.estimatedSavings.amount, data.gate.cost.estimatedSavings.currency)}` : void 0,
|
|
3078
|
+
...costLines,
|
|
3030
3079
|
"",
|
|
3031
3080
|
"</details>"
|
|
3032
3081
|
);
|
|
@@ -15040,7 +15089,7 @@ program.command("tui").description("Open the CloudEval Terminal UI").option(
|
|
|
15040
15089
|
const { assertSecureBaseUrl } = await import("./dist-MQQKC6DZ.js");
|
|
15041
15090
|
const [{ render }, { App }] = await Promise.all([
|
|
15042
15091
|
import("ink"),
|
|
15043
|
-
import("./App-
|
|
15092
|
+
import("./App-VZXTX4H7.js")
|
|
15044
15093
|
]);
|
|
15045
15094
|
const baseUrl = await resolveBaseUrl(options, command);
|
|
15046
15095
|
assertSecureBaseUrl(baseUrl);
|
|
@@ -15098,7 +15147,7 @@ program.command("chat").description("Start an interactive chat session").option(
|
|
|
15098
15147
|
const { assertSecureBaseUrl } = await import("./dist-MQQKC6DZ.js");
|
|
15099
15148
|
const [{ render }, { App }] = await Promise.all([
|
|
15100
15149
|
import("ink"),
|
|
15101
|
-
import("./App-
|
|
15150
|
+
import("./App-VZXTX4H7.js")
|
|
15102
15151
|
]);
|
|
15103
15152
|
const baseUrl = await resolveBaseUrl(options, command);
|
|
15104
15153
|
assertSecureBaseUrl(baseUrl);
|
|
@@ -15852,7 +15901,7 @@ Error: ${errorMsg}
|
|
|
15852
15901
|
program.command("banner").description("Preview the startup banner and terminal capabilities").action(async () => {
|
|
15853
15902
|
const { render } = await import("ink");
|
|
15854
15903
|
const BannerPreview = React.lazy(async () => ({
|
|
15855
|
-
default: (await import("./Banner-
|
|
15904
|
+
default: (await import("./Banner-URKZ37H4.js")).Banner
|
|
15856
15905
|
}));
|
|
15857
15906
|
render(
|
|
15858
15907
|
/* @__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.26.
|
|
17
|
+
"versionInfo": "0.26.11",
|
|
18
18
|
"downloadLocation": "https://github.com/ganakailabs/cloudeval-cli",
|
|
19
19
|
"filesAnalyzed": false,
|
|
20
20
|
"licenseConcluded": "LicenseRef-CloudEval-CLI",
|