@ganakailabs/cloudeval-cli 0.26.0 → 0.26.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/dist/{App-XNVJF2ON.js → App-RTGF4RMI.js} +6 -6
- package/dist/{Banner-2FNO54OA.js → Banner-H2UMEBYX.js} +2 -2
- package/dist/{Onboarding-QV5RTUCR.js → Onboarding-SAYMQ36N.js} +2 -2
- package/dist/{chunk-IAXSLM2G.js → chunk-25ILWQUX.js} +1 -1
- package/dist/{chunk-KBHRBGSX.js → chunk-3MIP274G.js} +5 -1
- package/dist/{chunk-U5TI24XX.js → chunk-QZTBYLF7.js} +1 -1
- package/dist/{chunk-N4REL72M.js → chunk-XHA4BH3P.js} +1 -1
- package/dist/cli.js +179 -94
- package/dist/{dist-CFLR5FML.js → dist-QLN52XKY.js} +1 -1
- package/dist/{resolveAskProject-NK435I56.js → resolveAskProject-WOMNHUYT.js} +1 -1
- package/package.json +1 -1
- package/sbom.spdx.json +1 -1
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from "./chunk-QSBGUI25.js";
|
|
9
9
|
import {
|
|
10
10
|
Onboarding
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-XHA4BH3P.js";
|
|
12
12
|
import {
|
|
13
13
|
checkUserStatus,
|
|
14
14
|
completeActiveAssistantMessage,
|
|
@@ -35,13 +35,13 @@ import {
|
|
|
35
35
|
reduceChunk,
|
|
36
36
|
runReports,
|
|
37
37
|
streamChat
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-3MIP274G.js";
|
|
39
39
|
import {
|
|
40
40
|
Banner
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-QZTBYLF7.js";
|
|
42
42
|
import {
|
|
43
43
|
CLI_VERSION
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-25ILWQUX.js";
|
|
45
45
|
import {
|
|
46
46
|
raisedButtonStyle,
|
|
47
47
|
terminalTheme
|
|
@@ -5914,7 +5914,7 @@ var getUserIdentityFromToken = async (token) => {
|
|
|
5914
5914
|
return { name: "You" };
|
|
5915
5915
|
}
|
|
5916
5916
|
try {
|
|
5917
|
-
const { extractEmailFromToken } = await import("./dist-
|
|
5917
|
+
const { extractEmailFromToken } = await import("./dist-QLN52XKY.js");
|
|
5918
5918
|
const email = extractEmailFromToken(token) ?? void 0;
|
|
5919
5919
|
return {
|
|
5920
5920
|
name: getFirstNameForDisplay({ email }),
|
|
@@ -7350,7 +7350,7 @@ var App = ({
|
|
|
7350
7350
|
setIsLoggingIn(true);
|
|
7351
7351
|
setLoaderStep(1);
|
|
7352
7352
|
try {
|
|
7353
|
-
const { login } = await import("./dist-
|
|
7353
|
+
const { login } = await import("./dist-QLN52XKY.js");
|
|
7354
7354
|
const newToken = await login(baseUrl, {
|
|
7355
7355
|
headless: Boolean(process.env.SSH_TTY || process.env.CI)
|
|
7356
7356
|
});
|
|
@@ -1998,7 +1998,11 @@ async function* streamChat(options) {
|
|
|
1998
1998
|
assertSecureBaseUrl2(options.baseUrl);
|
|
1999
1999
|
const payload = buildPayload(options);
|
|
2000
2000
|
const apiBase = normalizeApiBase(options.baseUrl);
|
|
2001
|
-
const
|
|
2001
|
+
const streamUrl = new URL(`${apiBase}/chat/stream`);
|
|
2002
|
+
if (options.project?.id) {
|
|
2003
|
+
streamUrl.searchParams.set("project_id", options.project.id);
|
|
2004
|
+
}
|
|
2005
|
+
const url = streamUrl.toString();
|
|
2002
2006
|
const streamIdleTimeoutMs = typeof options.streamIdleTimeoutMs === "number" && Number.isFinite(options.streamIdleTimeoutMs) && options.streamIdleTimeoutMs > 0 ? options.streamIdleTimeoutMs : void 0;
|
|
2003
2007
|
const headers = withIdempotencyHeader({
|
|
2004
2008
|
"Content-Type": "application/json",
|
package/dist/cli.js
CHANGED
|
@@ -33,10 +33,10 @@ import {
|
|
|
33
33
|
normalizeApiBase,
|
|
34
34
|
redactSensitiveSecrets,
|
|
35
35
|
redactSensitiveText
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-3MIP274G.js";
|
|
37
37
|
import {
|
|
38
38
|
CLI_VERSION
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-25ILWQUX.js";
|
|
40
40
|
|
|
41
41
|
// src/runtime/prepareInk.ts
|
|
42
42
|
import fs from "fs";
|
|
@@ -1643,7 +1643,7 @@ var resolveReportProjectId = async ({
|
|
|
1643
1643
|
if (!token) {
|
|
1644
1644
|
throw new Error("No project specified. Use --project <id> for report access.");
|
|
1645
1645
|
}
|
|
1646
|
-
const resolvedWorkspace = workspace ?? await import("./dist-
|
|
1646
|
+
const resolvedWorkspace = workspace ?? await import("./dist-QLN52XKY.js").then((core) => ({
|
|
1647
1647
|
checkUserStatus: core.checkUserStatus,
|
|
1648
1648
|
getProjects: core.getProjects
|
|
1649
1649
|
}));
|
|
@@ -1672,7 +1672,7 @@ var warnIfAccessKeyFromCliOption = (options, command) => {
|
|
|
1672
1672
|
};
|
|
1673
1673
|
var resolveAuthContext = async (options, command, deps) => {
|
|
1674
1674
|
const baseUrl = await deps.resolveBaseUrl(options, command);
|
|
1675
|
-
const core = await import("./dist-
|
|
1675
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
1676
1676
|
core.assertSecureBaseUrl(baseUrl);
|
|
1677
1677
|
warnIfAccessKeyFromCliOption(options, command);
|
|
1678
1678
|
let accessKey = options.accessKey;
|
|
@@ -1758,7 +1758,7 @@ var resolveToken = async (options, baseUrl, deps, command) => {
|
|
|
1758
1758
|
if (options.accessKey) {
|
|
1759
1759
|
return options.accessKey;
|
|
1760
1760
|
}
|
|
1761
|
-
const { getAuthToken } = await import("./dist-
|
|
1761
|
+
const { getAuthToken } = await import("./dist-QLN52XKY.js");
|
|
1762
1762
|
try {
|
|
1763
1763
|
return await getAuthToken({
|
|
1764
1764
|
accessKey: options.accessKey,
|
|
@@ -1769,7 +1769,7 @@ var resolveToken = async (options, baseUrl, deps, command) => {
|
|
|
1769
1769
|
if (!canLogin) {
|
|
1770
1770
|
throw error;
|
|
1771
1771
|
}
|
|
1772
|
-
const { login } = await import("./dist-
|
|
1772
|
+
const { login } = await import("./dist-QLN52XKY.js");
|
|
1773
1773
|
process.stderr.write("Authentication required. Starting login flow...\n");
|
|
1774
1774
|
const token = await login(baseUrl, {
|
|
1775
1775
|
headless: Boolean(process.env.SSH_TTY || process.env.CLOUDEVAL_HEADLESS_LOGIN)
|
|
@@ -1935,7 +1935,7 @@ var registerReportsCommand = (program2, deps) => {
|
|
|
1935
1935
|
token,
|
|
1936
1936
|
requestedProjectId: options.project
|
|
1937
1937
|
});
|
|
1938
|
-
const core = await import("./dist-
|
|
1938
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
1939
1939
|
const status = token ? await core.checkUserStatus(baseUrl, token) : void 0;
|
|
1940
1940
|
const reports2 = await core.listReports({
|
|
1941
1941
|
baseUrl,
|
|
@@ -1957,7 +1957,7 @@ var registerReportsCommand = (program2, deps) => {
|
|
|
1957
1957
|
try {
|
|
1958
1958
|
const baseUrl = await deps.resolveBaseUrl(options, command);
|
|
1959
1959
|
const token = await resolveToken(options, baseUrl, deps, command);
|
|
1960
|
-
const core = await import("./dist-
|
|
1960
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
1961
1961
|
const status = token ? await core.checkUserStatus(baseUrl, token) : void 0;
|
|
1962
1962
|
const projectId = await resolveReportProjectId({
|
|
1963
1963
|
baseUrl,
|
|
@@ -2060,7 +2060,7 @@ var registerReportsCommand = (program2, deps) => {
|
|
|
2060
2060
|
try {
|
|
2061
2061
|
const baseUrl = await deps.resolveBaseUrl(options, command);
|
|
2062
2062
|
const token = await resolveToken(options, baseUrl, deps, command);
|
|
2063
|
-
const core = await import("./dist-
|
|
2063
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
2064
2064
|
const status = token ? await core.checkUserStatus(baseUrl, token) : void 0;
|
|
2065
2065
|
const projectId = await resolveReportProjectId({
|
|
2066
2066
|
baseUrl,
|
|
@@ -2130,7 +2130,7 @@ var registerReportsCommand = (program2, deps) => {
|
|
|
2130
2130
|
token,
|
|
2131
2131
|
requestedProjectId: options.project
|
|
2132
2132
|
});
|
|
2133
|
-
const core = await import("./dist-
|
|
2133
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
2134
2134
|
const status = token ? await core.checkUserStatus(baseUrl, token) : void 0;
|
|
2135
2135
|
const report = await core.getWafReport({
|
|
2136
2136
|
baseUrl,
|
|
@@ -2169,7 +2169,7 @@ var registerReportsCommand = (program2, deps) => {
|
|
|
2169
2169
|
token,
|
|
2170
2170
|
requestedProjectId: options.project
|
|
2171
2171
|
});
|
|
2172
|
-
const core = await import("./dist-
|
|
2172
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
2173
2173
|
const status = token ? await core.checkUserStatus(baseUrl, token) : void 0;
|
|
2174
2174
|
const report = await core.getReport({
|
|
2175
2175
|
baseUrl,
|
|
@@ -2197,7 +2197,7 @@ var registerReportsCommand = (program2, deps) => {
|
|
|
2197
2197
|
token,
|
|
2198
2198
|
requestedProjectId: options.project
|
|
2199
2199
|
});
|
|
2200
|
-
const core = await import("./dist-
|
|
2200
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
2201
2201
|
const status = token ? await core.checkUserStatus(baseUrl, token) : void 0;
|
|
2202
2202
|
const report = await core.getCostReport({
|
|
2203
2203
|
baseUrl,
|
|
@@ -2226,7 +2226,7 @@ var registerReportsCommand = (program2, deps) => {
|
|
|
2226
2226
|
token,
|
|
2227
2227
|
requestedProjectId: options.project
|
|
2228
2228
|
});
|
|
2229
|
-
const core = await import("./dist-
|
|
2229
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
2230
2230
|
const status = token ? await core.checkUserStatus(baseUrl, token) : void 0;
|
|
2231
2231
|
const report = await core.getWafReport({
|
|
2232
2232
|
baseUrl,
|
|
@@ -2464,6 +2464,16 @@ var firstRecord = (...values) => {
|
|
|
2464
2464
|
}
|
|
2465
2465
|
return void 0;
|
|
2466
2466
|
};
|
|
2467
|
+
var entriesAsNamedRecords = (value, amountKey = "amount") => {
|
|
2468
|
+
const record = firstRecord(value);
|
|
2469
|
+
if (!record) {
|
|
2470
|
+
return [];
|
|
2471
|
+
}
|
|
2472
|
+
return Object.entries(record).map(([name, amount]) => ({
|
|
2473
|
+
name,
|
|
2474
|
+
[amountKey]: amount
|
|
2475
|
+
}));
|
|
2476
|
+
};
|
|
2467
2477
|
var extractPillars = (waf) => {
|
|
2468
2478
|
const fromArray = waf?.parsed?.score?.pillars;
|
|
2469
2479
|
if (Array.isArray(fromArray)) {
|
|
@@ -2483,9 +2493,11 @@ var extractPillars = (waf) => {
|
|
|
2483
2493
|
}).filter((pillar) => pillar !== void 0);
|
|
2484
2494
|
}
|
|
2485
2495
|
const scores = firstRecord(
|
|
2496
|
+
waf?.pillar_scores,
|
|
2486
2497
|
waf?.parsed?.pillar_scores,
|
|
2487
2498
|
waf?.parsed?.score?.pillar_scores,
|
|
2488
|
-
waf?.raw?.pillar_scores
|
|
2499
|
+
waf?.raw?.pillar_scores,
|
|
2500
|
+
waf?.report?.pillar_scores
|
|
2489
2501
|
);
|
|
2490
2502
|
if (!scores) return [];
|
|
2491
2503
|
return Object.entries(scores).map(([id, score]) => ({
|
|
@@ -2538,24 +2550,32 @@ var evaluateGate = ({
|
|
|
2538
2550
|
}) => {
|
|
2539
2551
|
const gateConfig = parseGateConfig(configText);
|
|
2540
2552
|
const overallScore = numberFrom(
|
|
2553
|
+
waf?.overall_score,
|
|
2554
|
+
waf?.report?.overall_score,
|
|
2541
2555
|
waf?.parsed?.score?.overall,
|
|
2542
2556
|
waf?.parsed?.overall_score,
|
|
2543
2557
|
waf?.raw?.score
|
|
2544
2558
|
);
|
|
2545
2559
|
const highRisk = numberFrom(
|
|
2560
|
+
waf?.critical_issues_count !== void 0 || waf?.high_issues_count !== void 0 ? (numberFrom(waf?.critical_issues_count) ?? 0) + (numberFrom(waf?.high_issues_count) ?? 0) : void 0,
|
|
2561
|
+
waf?.report?.critical_issues_count !== void 0 || waf?.report?.high_issues_count !== void 0 ? (numberFrom(waf?.report?.critical_issues_count) ?? 0) + (numberFrom(waf?.report?.high_issues_count) ?? 0) : void 0,
|
|
2546
2562
|
waf?.parsed?.counts?.highRisk,
|
|
2547
2563
|
waf?.parsed?.counts?.high_count,
|
|
2548
2564
|
waf?.parsed?.highRisk
|
|
2549
2565
|
);
|
|
2550
2566
|
const monthlyCost = numberFrom(
|
|
2567
|
+
cost?.report?.processed?.total_monthly_cost,
|
|
2568
|
+
cost?.report?.processed?.totalMonthlyCost,
|
|
2551
2569
|
cost?.parsed?.totalSpend?.amount,
|
|
2552
2570
|
cost?.parsed?.total_spend?.amount,
|
|
2553
2571
|
cost?.raw?.total
|
|
2554
2572
|
);
|
|
2555
2573
|
const currency = String(
|
|
2556
|
-
cost?.parsed?.totalSpend?.currency ?? cost?.parsed?.total_spend?.currency ?? cost?.raw?.currency ?? ""
|
|
2574
|
+
cost?.report?.metadata?.currency ?? cost?.parsed?.totalSpend?.currency ?? cost?.parsed?.total_spend?.currency ?? cost?.raw?.currency ?? ""
|
|
2557
2575
|
) || void 0;
|
|
2558
2576
|
const savings = numberFrom(
|
|
2577
|
+
cost?.report?.processed?.opportunity_summary?.total_monthly_savings,
|
|
2578
|
+
cost?.report?.processed?.opportunitySummary?.totalMonthlySavings,
|
|
2559
2579
|
cost?.parsed?.estimatedSavings?.amount,
|
|
2560
2580
|
cost?.parsed?.estimated_savings?.amount
|
|
2561
2581
|
);
|
|
@@ -2593,8 +2613,8 @@ var evaluateGate = ({
|
|
|
2593
2613
|
amount: savings,
|
|
2594
2614
|
currency
|
|
2595
2615
|
},
|
|
2596
|
-
topServices: Array.isArray(cost?.parsed?.serviceGroups) ? cost.parsed.serviceGroups.slice(0, 5)
|
|
2597
|
-
recommendations: Array.isArray(cost?.parsed?.recommendations) ? cost.parsed.recommendations.slice(0, 5)
|
|
2616
|
+
topServices: (Array.isArray(cost?.parsed?.serviceGroups) ? cost.parsed.serviceGroups : entriesAsNamedRecords(cost?.report?.processed?.cost_by_service_family)).slice(0, 5),
|
|
2617
|
+
recommendations: (Array.isArray(cost?.parsed?.recommendations) ? cost.parsed.recommendations : Array.isArray(cost?.report?.processed?.optimization_recommendations) ? cost.report.processed.optimization_recommendations : []).slice(0, 5)
|
|
2598
2618
|
};
|
|
2599
2619
|
if (!gateConfig) {
|
|
2600
2620
|
return {
|
|
@@ -2700,6 +2720,7 @@ var waitForJob = async ({
|
|
|
2700
2720
|
baseUrl,
|
|
2701
2721
|
token,
|
|
2702
2722
|
userId,
|
|
2723
|
+
projectId,
|
|
2703
2724
|
jobId,
|
|
2704
2725
|
pollIntervalMs,
|
|
2705
2726
|
waitTimeoutMs
|
|
@@ -2707,11 +2728,14 @@ var waitForJob = async ({
|
|
|
2707
2728
|
const startedAt = Date.now();
|
|
2708
2729
|
let lastStatus;
|
|
2709
2730
|
for (; ; ) {
|
|
2710
|
-
const query =
|
|
2731
|
+
const query = new URLSearchParams({ project_id: projectId });
|
|
2732
|
+
if (userId) {
|
|
2733
|
+
query.set("user_id", userId);
|
|
2734
|
+
}
|
|
2711
2735
|
lastStatus = await fetchCloudEvalJson({
|
|
2712
2736
|
baseUrl,
|
|
2713
2737
|
authToken: token,
|
|
2714
|
-
path: `/jobs/${encodeURIComponent(jobId)}
|
|
2738
|
+
path: `/jobs/${encodeURIComponent(jobId)}?${query.toString()}`
|
|
2715
2739
|
});
|
|
2716
2740
|
const status = String(lastStatus.status ?? "unknown");
|
|
2717
2741
|
process.stderr.write(`github sync job ${jobId}: ${status}
|
|
@@ -2740,6 +2764,62 @@ var fetchProjectById = async ({
|
|
|
2740
2764
|
});
|
|
2741
2765
|
return projects?.map(asRecord).find((project) => project.id === projectId);
|
|
2742
2766
|
};
|
|
2767
|
+
var userScopedPath = (pathValue, userId) => {
|
|
2768
|
+
if (!userId) {
|
|
2769
|
+
return pathValue;
|
|
2770
|
+
}
|
|
2771
|
+
const [pathPart, queryPart = ""] = pathValue.split("?");
|
|
2772
|
+
const query = new URLSearchParams(queryPart);
|
|
2773
|
+
query.set("user_id", userId);
|
|
2774
|
+
const suffix = query.toString();
|
|
2775
|
+
return suffix ? `${pathPart}?${suffix}` : pathPart;
|
|
2776
|
+
};
|
|
2777
|
+
var sleep2 = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
2778
|
+
var fetchReviewReports = async ({
|
|
2779
|
+
baseUrl,
|
|
2780
|
+
token,
|
|
2781
|
+
projectId,
|
|
2782
|
+
userId
|
|
2783
|
+
}) => {
|
|
2784
|
+
const [cost, waf, preload] = await Promise.all([
|
|
2785
|
+
safeFetch({
|
|
2786
|
+
baseUrl,
|
|
2787
|
+
authToken: token,
|
|
2788
|
+
path: userScopedPath(`/cost-reports/${projectId}/full`, userId)
|
|
2789
|
+
}),
|
|
2790
|
+
safeFetch({
|
|
2791
|
+
baseUrl,
|
|
2792
|
+
authToken: token,
|
|
2793
|
+
path: userScopedPath(`/well-architected-reports/${projectId}/full`, userId)
|
|
2794
|
+
}),
|
|
2795
|
+
userId ? safeFetch({
|
|
2796
|
+
baseUrl,
|
|
2797
|
+
authToken: token,
|
|
2798
|
+
path: `/reports/preload/${encodeURIComponent(projectId)}?user_id=${encodeURIComponent(userId)}&include_payload=true`
|
|
2799
|
+
}) : Promise.resolve(void 0)
|
|
2800
|
+
]);
|
|
2801
|
+
return { cost, waf, preload };
|
|
2802
|
+
};
|
|
2803
|
+
var waitForReviewReports = async ({
|
|
2804
|
+
baseUrl,
|
|
2805
|
+
token,
|
|
2806
|
+
projectId,
|
|
2807
|
+
userId,
|
|
2808
|
+
wait,
|
|
2809
|
+
pollIntervalMs,
|
|
2810
|
+
waitTimeoutMs
|
|
2811
|
+
}) => {
|
|
2812
|
+
const startedAt = Date.now();
|
|
2813
|
+
let latest = await fetchReviewReports({ baseUrl, token, projectId, userId });
|
|
2814
|
+
while (wait && (!latest.cost || !latest.waf)) {
|
|
2815
|
+
if (Date.now() - startedAt > waitTimeoutMs) {
|
|
2816
|
+
return latest;
|
|
2817
|
+
}
|
|
2818
|
+
await sleep2(pollIntervalMs);
|
|
2819
|
+
latest = await fetchReviewReports({ baseUrl, token, projectId, userId });
|
|
2820
|
+
}
|
|
2821
|
+
return latest;
|
|
2822
|
+
};
|
|
2743
2823
|
var buildAiSummaryPrompt = (data) => [
|
|
2744
2824
|
"Write a concise CloudEval pull request review summary in Markdown.",
|
|
2745
2825
|
"Focus on gate status, Well-Architected posture, cost posture, and security/operational risks.",
|
|
@@ -2750,9 +2830,9 @@ var buildAiSummaryPrompt = (data) => [
|
|
|
2750
2830
|
`Ref: ${data.ref ?? "unknown"}`,
|
|
2751
2831
|
`Commit: ${data.commitSha ?? "unknown"}`,
|
|
2752
2832
|
`Gate: ${String(data.gate?.status ?? "unknown").toUpperCase()}`,
|
|
2753
|
-
`Well-Architected score: ${data.gate?.overallScore ?? "unknown"}`,
|
|
2754
|
-
`High-risk findings: ${data.gate?.highRisk ?? "unknown"}`,
|
|
2755
|
-
`Monthly cost: ${data.gate?.monthlyCost ?? "unknown"}`,
|
|
2833
|
+
`Well-Architected score: ${data.gate?.wellArchitected?.overall?.score ?? data.gate?.overallScore ?? "unknown"}`,
|
|
2834
|
+
`High-risk findings: ${data.gate?.wellArchitected?.risks?.high ?? data.gate?.highRisk ?? "unknown"}`,
|
|
2835
|
+
`Monthly cost: ${data.gate?.cost?.monthly?.amount ?? data.gate?.monthlyCost ?? "unknown"}`,
|
|
2756
2836
|
`Validation: PSRule failed ${data.gate?.validation?.psRule?.failed ?? "unknown"}, unit tests failed ${data.gate?.validation?.unitTests?.failed ?? "unknown"}`,
|
|
2757
2837
|
Array.isArray(data.gate?.failures) && data.gate.failures.length ? `Gate failures: ${data.gate.failures.join("; ")}` : "Gate failures: none reported"
|
|
2758
2838
|
].join("\n");
|
|
@@ -2766,7 +2846,7 @@ var generateAiSummary = async ({
|
|
|
2766
2846
|
agentProfileId,
|
|
2767
2847
|
data
|
|
2768
2848
|
}) => {
|
|
2769
|
-
const core = await import("./dist-
|
|
2849
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
2770
2850
|
const threadId = `review-${data.projectId}-${Date.now()}`;
|
|
2771
2851
|
let markdown = "";
|
|
2772
2852
|
for await (const chunk of core.streamChat({
|
|
@@ -2796,7 +2876,7 @@ var generateAiSummary = async ({
|
|
|
2796
2876
|
...mode === "agent" ? { agentProfileId: agentProfileId ?? "architecture" } : {},
|
|
2797
2877
|
completeAfterResponse: true,
|
|
2798
2878
|
responseCompletionGraceMs: 250,
|
|
2799
|
-
streamIdleTimeoutMs:
|
|
2879
|
+
streamIdleTimeoutMs: 12e4
|
|
2800
2880
|
})) {
|
|
2801
2881
|
const content = chunk?.content;
|
|
2802
2882
|
if (chunk.type === "responding" && typeof content === "string") {
|
|
@@ -2892,10 +2972,18 @@ var registerReviewCommand = (program2, deps) => {
|
|
|
2892
2972
|
body: commitSha ? { commit_sha: commitSha } : {},
|
|
2893
2973
|
idempotencyKey: `cloudeval-review-${projectId}-${commitSha ?? "head"}`
|
|
2894
2974
|
});
|
|
2975
|
+
const project = await fetchProjectById({
|
|
2976
|
+
baseUrl: context.baseUrl,
|
|
2977
|
+
token: context.token,
|
|
2978
|
+
projectId
|
|
2979
|
+
});
|
|
2980
|
+
const projectUserId = typeof project?.user_id === "string" && project.user_id.trim() ? project.user_id : void 0;
|
|
2981
|
+
const scopedUserId = context.user?.id ?? projectUserId;
|
|
2895
2982
|
const finalStatus = options.wait === false ? void 0 : extractJobId2(sync) ? await waitForJob({
|
|
2896
2983
|
baseUrl: context.baseUrl,
|
|
2897
2984
|
token: context.token,
|
|
2898
|
-
userId:
|
|
2985
|
+
userId: scopedUserId,
|
|
2986
|
+
projectId,
|
|
2899
2987
|
jobId: extractJobId2(sync),
|
|
2900
2988
|
pollIntervalMs: parsePositiveInteger(
|
|
2901
2989
|
options.pollInterval,
|
|
@@ -2908,29 +2996,26 @@ var registerReviewCommand = (program2, deps) => {
|
|
|
2908
2996
|
9e5
|
|
2909
2997
|
)
|
|
2910
2998
|
}) : void 0;
|
|
2911
|
-
const [cost, waf, configText] = await Promise.all([
|
|
2912
|
-
|
|
2913
|
-
baseUrl: context.baseUrl,
|
|
2914
|
-
authToken: context.token,
|
|
2915
|
-
path: `/cost-reports/${projectId}/full`
|
|
2916
|
-
}),
|
|
2917
|
-
safeFetch({
|
|
2999
|
+
const [{ cost, waf, preload }, configText] = await Promise.all([
|
|
3000
|
+
waitForReviewReports({
|
|
2918
3001
|
baseUrl: context.baseUrl,
|
|
2919
|
-
|
|
2920
|
-
|
|
3002
|
+
token: context.token,
|
|
3003
|
+
projectId,
|
|
3004
|
+
userId: scopedUserId,
|
|
3005
|
+
wait: options.wait !== false,
|
|
3006
|
+
pollIntervalMs: parsePositiveInteger(
|
|
3007
|
+
options.pollInterval,
|
|
3008
|
+
"--poll-interval",
|
|
3009
|
+
5e3
|
|
3010
|
+
),
|
|
3011
|
+
waitTimeoutMs: parsePositiveInteger(
|
|
3012
|
+
options.waitTimeout,
|
|
3013
|
+
"--wait-timeout",
|
|
3014
|
+
9e5
|
|
3015
|
+
)
|
|
2921
3016
|
}),
|
|
2922
3017
|
readConfigText(cwd, options)
|
|
2923
3018
|
]);
|
|
2924
|
-
const project = await fetchProjectById({
|
|
2925
|
-
baseUrl: context.baseUrl,
|
|
2926
|
-
token: context.token,
|
|
2927
|
-
projectId
|
|
2928
|
-
});
|
|
2929
|
-
const preload = context.user?.id ? await safeFetch({
|
|
2930
|
-
baseUrl: context.baseUrl,
|
|
2931
|
-
authToken: context.token,
|
|
2932
|
-
path: `/reports/preload/${encodeURIComponent(projectId)}?user_id=${encodeURIComponent(context.user.id)}&include_payload=true`
|
|
2933
|
-
}) : void 0;
|
|
2934
3019
|
const data = {
|
|
2935
3020
|
projectId,
|
|
2936
3021
|
repo,
|
|
@@ -4321,7 +4406,7 @@ var runChatRecipe = async (recipe, prompt2, options, command, deps) => {
|
|
|
4321
4406
|
});
|
|
4322
4407
|
progressWriter.write({ type: "auth", step: "auth", message: "Resolving authentication" });
|
|
4323
4408
|
const context = await resolveAuthContext(options, command, deps);
|
|
4324
|
-
const core = await import("./dist-
|
|
4409
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
4325
4410
|
progressWriter.write({
|
|
4326
4411
|
type: "request",
|
|
4327
4412
|
step: "project",
|
|
@@ -5790,7 +5875,7 @@ var configureDiagramExportCommand = (command, deps) => addAuthOptions(command, d
|
|
|
5790
5875
|
const context = requireAuthUser(
|
|
5791
5876
|
await resolveAuthContext(options, actionCommand, deps)
|
|
5792
5877
|
);
|
|
5793
|
-
const core = await import("./dist-
|
|
5878
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
5794
5879
|
const projects = await core.getProjects(
|
|
5795
5880
|
context.baseUrl,
|
|
5796
5881
|
context.token,
|
|
@@ -5867,7 +5952,7 @@ var registerProjectsCommand = (program2, deps) => {
|
|
|
5867
5952
|
addCommon(addAuthOptions(projects.command("list").description("List projects"), deps.defaultBaseUrl)).action(async (options, command) => {
|
|
5868
5953
|
try {
|
|
5869
5954
|
const context = await resolveAuthContext(options, command, deps);
|
|
5870
|
-
const core = await import("./dist-
|
|
5955
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
5871
5956
|
const data = await listProjectsForContext(core, context);
|
|
5872
5957
|
const url = buildFrontendUrl({ baseUrl: frontendBase(context, options), target: "projects" });
|
|
5873
5958
|
await writeProjectListOutput({ data, options, frontendUrl: url });
|
|
@@ -5885,7 +5970,7 @@ var registerProjectsCommand = (program2, deps) => {
|
|
|
5885
5970
|
).action(async (id, options, command) => {
|
|
5886
5971
|
try {
|
|
5887
5972
|
const context = await resolveAuthContext(options, command, deps);
|
|
5888
|
-
const core = await import("./dist-
|
|
5973
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
5889
5974
|
const list = await listProjectsForContext(core, context);
|
|
5890
5975
|
const data = list.find((project) => project.id === id);
|
|
5891
5976
|
if (!data) {
|
|
@@ -5950,7 +6035,7 @@ var registerProjectsCommand = (program2, deps) => {
|
|
|
5950
6035
|
try {
|
|
5951
6036
|
assertSingleProjectSource(options);
|
|
5952
6037
|
const context = requireAuthUser(await resolveAuthContext(options, command, deps));
|
|
5953
|
-
const core = await import("./dist-
|
|
6038
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
5954
6039
|
const template = await fileBlob(options.templateFile);
|
|
5955
6040
|
const parameters = await fileBlob(options.parametersFile);
|
|
5956
6041
|
const workspace = options.workspaceDir ? await collectWorkspaceFiles(options.workspaceDir, options) : void 0;
|
|
@@ -6079,7 +6164,7 @@ var registerConnectionsCommand = (program2, deps) => {
|
|
|
6079
6164
|
addCommon2(addAuthOptions(connections.command("list").description("List connections"), deps.defaultBaseUrl)).action(async (options, command) => {
|
|
6080
6165
|
try {
|
|
6081
6166
|
const context = requireAuthUser(await resolveAuthContext(options, command, deps));
|
|
6082
|
-
const core = await import("./dist-
|
|
6167
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
6083
6168
|
const data = await core.listConnections({
|
|
6084
6169
|
baseUrl: context.baseUrl,
|
|
6085
6170
|
authToken: context.token,
|
|
@@ -6104,7 +6189,7 @@ var registerConnectionsCommand = (program2, deps) => {
|
|
|
6104
6189
|
).action(async (id, options, command) => {
|
|
6105
6190
|
try {
|
|
6106
6191
|
const context = requireAuthUser(await resolveAuthContext(options, command, deps));
|
|
6107
|
-
const core = await import("./dist-
|
|
6192
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
6108
6193
|
const data = await core.getConnection({
|
|
6109
6194
|
baseUrl: context.baseUrl,
|
|
6110
6195
|
authToken: context.token,
|
|
@@ -6442,7 +6527,7 @@ var checkoutReturnUrl = (context, options) => options.returnTo || billingUrl(con
|
|
|
6442
6527
|
var runTopUpCheckout = async (commandName, packId, options, command, deps) => {
|
|
6443
6528
|
try {
|
|
6444
6529
|
const context = requireAuthUser(await resolveAuthContext(options, command, deps));
|
|
6445
|
-
const core = await import("./dist-
|
|
6530
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
6446
6531
|
const returnTo = checkoutReturnUrl(context, options);
|
|
6447
6532
|
const session = await core.createTopUpCheckoutSession({
|
|
6448
6533
|
baseUrl: context.baseUrl,
|
|
@@ -6482,7 +6567,7 @@ var registerBillingCommands = (program2, deps) => {
|
|
|
6482
6567
|
).action(async (options, command) => {
|
|
6483
6568
|
try {
|
|
6484
6569
|
const context = requireAuthUser(await resolveAuthContext(options, command, deps));
|
|
6485
|
-
const core = await import("./dist-
|
|
6570
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
6486
6571
|
const range = rangeToDates("30d");
|
|
6487
6572
|
const [entitlement, usageSummary] = await Promise.all([
|
|
6488
6573
|
core.getBillingEntitlement({
|
|
@@ -6512,7 +6597,7 @@ var registerBillingCommands = (program2, deps) => {
|
|
|
6512
6597
|
addCommon3(addAuthOptions(billing.command("summary").description("Show billing summary"), deps.defaultBaseUrl)).action(async (options, command) => {
|
|
6513
6598
|
try {
|
|
6514
6599
|
const context = requireAuthUser(await resolveAuthContext(options, command, deps));
|
|
6515
|
-
const core = await import("./dist-
|
|
6600
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
6516
6601
|
const range = rangeToDates("30d");
|
|
6517
6602
|
const [entitlement, subscriptionStatus, usageSummary] = await Promise.all([
|
|
6518
6603
|
core.getBillingEntitlement({ baseUrl: context.baseUrl, authToken: context.token }),
|
|
@@ -6548,7 +6633,7 @@ var registerBillingCommands = (program2, deps) => {
|
|
|
6548
6633
|
addCommon3(addAuthOptions(billing.command("plans").description("Show billing plans"), deps.defaultBaseUrl)).action(async (options, command) => {
|
|
6549
6634
|
try {
|
|
6550
6635
|
const context = await resolveAuthContext(options, command, deps);
|
|
6551
|
-
const core = await import("./dist-
|
|
6636
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
6552
6637
|
const data = await core.getBillingConfig({ baseUrl: context.baseUrl, authToken: context.token });
|
|
6553
6638
|
const url = billingUrl(context, { ...options, tab: "plans" });
|
|
6554
6639
|
await write("billing plans", data, options, url);
|
|
@@ -6560,7 +6645,7 @@ var registerBillingCommands = (program2, deps) => {
|
|
|
6560
6645
|
addCommon3(addAuthOptions(billing.command("usage").description("Show billing usage summary"), deps.defaultBaseUrl)).option("--range <range>", "Usage range: 7d, 30d, 90d, all", "30d").option("--start-at <iso>", "Start timestamp").option("--end-at <iso>", "End timestamp").option("--granularity <value>", "Granularity: hour, day, month", "day").option("--action-type <type>", "Action type filter").option("--model <name>", "Model filter").option("--outcome <outcome>", "Outcome filter").option("--charge-status <status>", "Charge status filter").action(async (options, command) => {
|
|
6561
6646
|
try {
|
|
6562
6647
|
const context = requireAuthUser(await resolveAuthContext(options, command, deps));
|
|
6563
|
-
const core = await import("./dist-
|
|
6648
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
6564
6649
|
const range = rangeToDates(options.range);
|
|
6565
6650
|
const data = await core.getBillingUsageSummary({
|
|
6566
6651
|
baseUrl: context.baseUrl,
|
|
@@ -6583,7 +6668,7 @@ var registerBillingCommands = (program2, deps) => {
|
|
|
6583
6668
|
addCommon3(addAuthOptions(billing.command("ledger").description("Show billing ledger"), deps.defaultBaseUrl)).option("--range <range>", "Usage range: 7d, 30d, 90d, all", "30d").option("--start-at <iso>", "Start timestamp").option("--end-at <iso>", "End timestamp").option("--action-type <type>", "Action type filter").option("--model <name>", "Model filter").option("--outcome <outcome>", "Outcome filter").option("--charge-status <status>", "Charge status filter").option("--limit <n>", "Page size", "25").option("--cursor <cursor>", "Pagination cursor").action(async (options, command) => {
|
|
6584
6669
|
try {
|
|
6585
6670
|
const context = requireAuthUser(await resolveAuthContext(options, command, deps));
|
|
6586
|
-
const core = await import("./dist-
|
|
6671
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
6587
6672
|
const range = rangeToDates(options.range);
|
|
6588
6673
|
const data = await core.getBillingUsageLedger({
|
|
6589
6674
|
baseUrl: context.baseUrl,
|
|
@@ -6611,7 +6696,7 @@ var registerBillingCommands = (program2, deps) => {
|
|
|
6611
6696
|
addCommon3(addAuthOptions(billing.command(name).description(`Show billing ${name}`), deps.defaultBaseUrl)).option("--limit <n>", "Result limit", "25").action(async (options, command) => {
|
|
6612
6697
|
try {
|
|
6613
6698
|
const context = requireAuthUser(await resolveAuthContext(options, command, deps));
|
|
6614
|
-
const core = await import("./dist-
|
|
6699
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
6615
6700
|
const data = await core[getter]({
|
|
6616
6701
|
baseUrl: context.baseUrl,
|
|
6617
6702
|
authToken: context.token,
|
|
@@ -6629,7 +6714,7 @@ var registerBillingCommands = (program2, deps) => {
|
|
|
6629
6714
|
addCommon3(addAuthOptions(topups, deps.defaultBaseUrl)).option("--limit <n>", "Result limit", "25").action(async (options, command) => {
|
|
6630
6715
|
try {
|
|
6631
6716
|
const context = requireAuthUser(await resolveAuthContext(options, command, deps));
|
|
6632
|
-
const core = await import("./dist-
|
|
6717
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
6633
6718
|
const data = await core.getTopUpPacks({
|
|
6634
6719
|
baseUrl: context.baseUrl,
|
|
6635
6720
|
authToken: context.token
|
|
@@ -6901,7 +6986,7 @@ var validateTemplate = async (input) => fetchCloudEvalJson({
|
|
|
6901
6986
|
userId: input.userId
|
|
6902
6987
|
})
|
|
6903
6988
|
});
|
|
6904
|
-
var
|
|
6989
|
+
var sleep3 = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
6905
6990
|
var recordValue = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
|
|
6906
6991
|
var stringField = (value, field) => {
|
|
6907
6992
|
const raw = value?.[field];
|
|
@@ -7082,7 +7167,7 @@ var waitForTemplateValidationResult = async (input) => {
|
|
|
7082
7167
|
`Template validation job ${jobId} did not finish within ${waitTimeoutMs}ms.`
|
|
7083
7168
|
);
|
|
7084
7169
|
}
|
|
7085
|
-
await
|
|
7170
|
+
await sleep3(Math.min(pollIntervalMs, Math.max(1, deadline - Date.now())));
|
|
7086
7171
|
}
|
|
7087
7172
|
if (!isSuccessfulJobStatus(status)) {
|
|
7088
7173
|
throw new Error(
|
|
@@ -9264,7 +9349,7 @@ var isTerminalJobStatus4 = (value) => {
|
|
|
9264
9349
|
"canceled"
|
|
9265
9350
|
].includes(status);
|
|
9266
9351
|
};
|
|
9267
|
-
var
|
|
9352
|
+
var sleep4 = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
9268
9353
|
var writeHeaderFile = async (outputPath, headers) => {
|
|
9269
9354
|
await fs9.mkdir(path6.dirname(outputPath), { recursive: true });
|
|
9270
9355
|
const text = Object.entries(headers).sort(([left], [right]) => left.localeCompare(right)).map(([key, value]) => `${key}: ${value}`).join("\n");
|
|
@@ -9300,7 +9385,7 @@ var reportsFrontendUrl = (config, input) => buildFrontendUrl({
|
|
|
9300
9385
|
reportVerbosity: input.reportVerbosity
|
|
9301
9386
|
});
|
|
9302
9387
|
var resolveAuth = async (config, options = {}) => {
|
|
9303
|
-
const core = await import("./dist-
|
|
9388
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
9304
9389
|
core.assertSecureBaseUrl(config.baseUrl);
|
|
9305
9390
|
let token;
|
|
9306
9391
|
try {
|
|
@@ -9396,7 +9481,7 @@ var assertModelAvailable = async (config, token) => {
|
|
|
9396
9481
|
if (!config.model) {
|
|
9397
9482
|
return;
|
|
9398
9483
|
}
|
|
9399
|
-
const core = await import("./dist-
|
|
9484
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
9400
9485
|
try {
|
|
9401
9486
|
const response = await fetch(
|
|
9402
9487
|
`${core.normalizeApiBase(config.baseUrl)}/models`,
|
|
@@ -9444,7 +9529,7 @@ var waitForReportJobs2 = async (input) => {
|
|
|
9444
9529
|
if (isTerminalJobStatus4(lastStatus)) {
|
|
9445
9530
|
break;
|
|
9446
9531
|
}
|
|
9447
|
-
await
|
|
9532
|
+
await sleep4(input.pollIntervalMs);
|
|
9448
9533
|
}
|
|
9449
9534
|
finalStatuses.push(lastStatus);
|
|
9450
9535
|
}
|
|
@@ -9653,7 +9738,7 @@ var buildToolHandlers = (serverOptions) => {
|
|
|
9653
9738
|
});
|
|
9654
9739
|
handlers.set("agent_profiles_list", async (args) => {
|
|
9655
9740
|
const config = await resolveInvocationConfig(serverOptions, args);
|
|
9656
|
-
const core = await import("./dist-
|
|
9741
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
9657
9742
|
const data = await listProfilesForDiscovery(core, config.baseUrl);
|
|
9658
9743
|
return withEnvelope({
|
|
9659
9744
|
command: "agents list",
|
|
@@ -9666,7 +9751,7 @@ var buildToolHandlers = (serverOptions) => {
|
|
|
9666
9751
|
throw new Error("profileId is required.");
|
|
9667
9752
|
}
|
|
9668
9753
|
const config = await resolveInvocationConfig(serverOptions, args);
|
|
9669
|
-
const core = await import("./dist-
|
|
9754
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
9670
9755
|
const data = await getProfileForDiscovery(core, config.baseUrl, profileId);
|
|
9671
9756
|
return withEnvelope({
|
|
9672
9757
|
command: "agents show",
|
|
@@ -10303,7 +10388,7 @@ var buildToolHandlers = (serverOptions) => {
|
|
|
10303
10388
|
});
|
|
10304
10389
|
handlers.set("auth_status", async (args) => {
|
|
10305
10390
|
const config = await resolveInvocationConfig(serverOptions, args);
|
|
10306
|
-
const core = await import("./dist-
|
|
10391
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
10307
10392
|
const data = await core.getAuthStatus(config.baseUrl, { validate: true });
|
|
10308
10393
|
return withEnvelope({
|
|
10309
10394
|
command: "auth status",
|
|
@@ -10312,7 +10397,7 @@ var buildToolHandlers = (serverOptions) => {
|
|
|
10312
10397
|
});
|
|
10313
10398
|
handlers.set("status", async (args) => {
|
|
10314
10399
|
const config = await resolveInvocationConfig(serverOptions, args);
|
|
10315
|
-
const core = await import("./dist-
|
|
10400
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
10316
10401
|
const auth = await core.getAuthStatus(config.baseUrl, { validate: true });
|
|
10317
10402
|
return withEnvelope({
|
|
10318
10403
|
command: "status",
|
|
@@ -10343,7 +10428,7 @@ var buildToolHandlers = (serverOptions) => {
|
|
|
10343
10428
|
}
|
|
10344
10429
|
];
|
|
10345
10430
|
try {
|
|
10346
|
-
const core = await import("./dist-
|
|
10431
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
10347
10432
|
core.assertSecureBaseUrl(config.baseUrl);
|
|
10348
10433
|
checks.push({
|
|
10349
10434
|
id: "base-url-secure",
|
|
@@ -10863,7 +10948,7 @@ var buildToolHandlers = (serverOptions) => {
|
|
|
10863
10948
|
} catch {
|
|
10864
10949
|
token = config.accessKey;
|
|
10865
10950
|
}
|
|
10866
|
-
const core = await import("./dist-
|
|
10951
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
10867
10952
|
const data = await core.getBillingConfig({
|
|
10868
10953
|
baseUrl: config.baseUrl,
|
|
10869
10954
|
authToken: token
|
|
@@ -11717,7 +11802,7 @@ var registerCapabilitiesCommand = (program2, deps) => {
|
|
|
11717
11802
|
warnIfAccessKeyFromCliOption(options, command);
|
|
11718
11803
|
let data = capabilities;
|
|
11719
11804
|
if (options.live) {
|
|
11720
|
-
const core = await import("./dist-
|
|
11805
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
11721
11806
|
const baseUrl = await deps.resolveBaseUrl(options, command);
|
|
11722
11807
|
const accessKey = options.accessKeyStdin ? await deps.readStdinValue() : options.accessKey;
|
|
11723
11808
|
const token = await core.getAuthToken({ accessKey, baseUrl });
|
|
@@ -11855,7 +11940,7 @@ var writeCredentialOutput = async (input) => {
|
|
|
11855
11940
|
};
|
|
11856
11941
|
var resolveCoreAuth = async (options, command, deps) => {
|
|
11857
11942
|
const context = await resolveAuthContext(options, command, deps);
|
|
11858
|
-
const core = await import("./dist-
|
|
11943
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
11859
11944
|
return { ...context, core };
|
|
11860
11945
|
};
|
|
11861
11946
|
var parseCapabilities = (value) => value?.split(",").map((item) => item.trim()).filter(Boolean);
|
|
@@ -12172,7 +12257,7 @@ var registerAgentsCommand = (program2, deps) => {
|
|
|
12172
12257
|
const agents = program2.command("agents").description("CloudEval Agent Profile utilities");
|
|
12173
12258
|
addAgentOutputOptions(agents.command("list").description("List Agent Profiles"), deps).action(async (options, command) => {
|
|
12174
12259
|
const baseUrl = await deps.resolveBaseUrl(options, command);
|
|
12175
|
-
const core = await import("./dist-
|
|
12260
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
12176
12261
|
core.assertSecureBaseUrl(baseUrl);
|
|
12177
12262
|
const data = await listProfilesForDiscovery2(core, baseUrl);
|
|
12178
12263
|
await writeProfiles({
|
|
@@ -12188,7 +12273,7 @@ var registerAgentsCommand = (program2, deps) => {
|
|
|
12188
12273
|
deps
|
|
12189
12274
|
).action(async (profileId, options, command) => {
|
|
12190
12275
|
const baseUrl = await deps.resolveBaseUrl(options, command);
|
|
12191
|
-
const core = await import("./dist-
|
|
12276
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
12192
12277
|
core.assertSecureBaseUrl(baseUrl);
|
|
12193
12278
|
const data = await getProfileForDiscovery2(core, baseUrl, profileId);
|
|
12194
12279
|
await writeProfiles({
|
|
@@ -12207,7 +12292,7 @@ var registerAgentsCommand = (program2, deps) => {
|
|
|
12207
12292
|
const cliProfile = getActiveConfigProfile(command);
|
|
12208
12293
|
const cliConfig = await loadCliConfig(cliProfile);
|
|
12209
12294
|
const auth = await resolveAuthContext(options, command, deps);
|
|
12210
|
-
const core = await import("./dist-
|
|
12295
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
12211
12296
|
const profileResponse = await core.getAgentProfile({
|
|
12212
12297
|
baseUrl: auth.baseUrl,
|
|
12213
12298
|
authToken: auth.token,
|
|
@@ -12705,7 +12790,7 @@ var registerDiagnosticsCommands = (program2, deps) => {
|
|
|
12705
12790
|
const baseUrl = await deps.resolveBaseUrl(options, command);
|
|
12706
12791
|
const profile = getActiveConfigProfile(command);
|
|
12707
12792
|
const config = await loadCliConfig(profile);
|
|
12708
|
-
const core = await import("./dist-
|
|
12793
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
12709
12794
|
const auth = await core.getAuthStatus(baseUrl, { validate: true });
|
|
12710
12795
|
if (options.format === "text" || !options.format) {
|
|
12711
12796
|
process.stdout.write(
|
|
@@ -12755,7 +12840,7 @@ var registerDiagnosticsCommands = (program2, deps) => {
|
|
|
12755
12840
|
detail: getCliConfigPath(profile)
|
|
12756
12841
|
});
|
|
12757
12842
|
try {
|
|
12758
|
-
const core = await import("./dist-
|
|
12843
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
12759
12844
|
core.assertSecureBaseUrl(baseUrl);
|
|
12760
12845
|
checks.push({
|
|
12761
12846
|
id: "base-url-secure",
|
|
@@ -12855,7 +12940,7 @@ var resolveToken2 = async (options, deps, baseUrl, command) => {
|
|
|
12855
12940
|
return options.accessKey;
|
|
12856
12941
|
}
|
|
12857
12942
|
try {
|
|
12858
|
-
const core = await import("./dist-
|
|
12943
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
12859
12944
|
return await core.getAuthToken({
|
|
12860
12945
|
baseUrl
|
|
12861
12946
|
});
|
|
@@ -12939,7 +13024,7 @@ var registerModelsCommand = (program2, deps) => {
|
|
|
12939
13024
|
let source = "fallback";
|
|
12940
13025
|
let modelList = fallbackModels;
|
|
12941
13026
|
try {
|
|
12942
|
-
const core = await import("./dist-
|
|
13027
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
12943
13028
|
const response = await fetch(`${core.normalizeApiBase(baseUrl)}/models`, {
|
|
12944
13029
|
headers: {
|
|
12945
13030
|
Accept: "application/json",
|
|
@@ -14118,7 +14203,7 @@ var uninstallCompletionScript = async (shell) => {
|
|
|
14118
14203
|
var runInteractiveLoginOnboarding = async (baseUrl, token) => {
|
|
14119
14204
|
const [{ render }, { Onboarding }] = await Promise.all([
|
|
14120
14205
|
import("ink"),
|
|
14121
|
-
import("./Onboarding-
|
|
14206
|
+
import("./Onboarding-SAYMQ36N.js")
|
|
14122
14207
|
]);
|
|
14123
14208
|
await new Promise((resolve) => {
|
|
14124
14209
|
let app;
|
|
@@ -14440,7 +14525,7 @@ var resolveBaseUrl = async (options, command) => {
|
|
|
14440
14525
|
});
|
|
14441
14526
|
}
|
|
14442
14527
|
try {
|
|
14443
|
-
const { getAuthStatus } = await import("./dist-
|
|
14528
|
+
const { getAuthStatus } = await import("./dist-QLN52XKY.js");
|
|
14444
14529
|
const status = await getAuthStatus();
|
|
14445
14530
|
const storedBaseUrl = status.baseUrl;
|
|
14446
14531
|
if (storedBaseUrl && shouldUseStoredBaseUrl(storedBaseUrl)) {
|
|
@@ -14514,7 +14599,7 @@ program.command("login").description("Authenticate with Cloudeval").option(
|
|
|
14514
14599
|
checkUserStatus,
|
|
14515
14600
|
ensurePlaygroundProject,
|
|
14516
14601
|
login
|
|
14517
|
-
} = await import("./dist-
|
|
14602
|
+
} = await import("./dist-QLN52XKY.js");
|
|
14518
14603
|
assertSecureBaseUrl(options.baseUrl);
|
|
14519
14604
|
const headlessEnvironment = isHeadlessEnvironment();
|
|
14520
14605
|
const headlessLogin = options.headless || headlessEnvironment;
|
|
@@ -14589,7 +14674,7 @@ program.command("logout").description("Log out and clear stored authentication s
|
|
|
14589
14674
|
DEFAULT_BASE_URL
|
|
14590
14675
|
).option("--all-devices", "Revoke sessions on all devices", false).action(async (options) => {
|
|
14591
14676
|
try {
|
|
14592
|
-
const { assertSecureBaseUrl, logout } = await import("./dist-
|
|
14677
|
+
const { assertSecureBaseUrl, logout } = await import("./dist-QLN52XKY.js");
|
|
14593
14678
|
assertSecureBaseUrl(options.baseUrl);
|
|
14594
14679
|
const result = await logout({
|
|
14595
14680
|
baseUrl: options.baseUrl,
|
|
@@ -14623,7 +14708,7 @@ authCommand.command("status").description("Show current authentication status").
|
|
|
14623
14708
|
DEFAULT_BASE_URL
|
|
14624
14709
|
).option("--format <format>", "Output format: text, json, ndjson, markdown", "text").option("--show-sensitive-ids", "Show full account/session identifiers in command output", false).option("-v, --verbose", "Enable verbose logging and show full non-token identifiers", false).action(async (options, command) => {
|
|
14625
14710
|
try {
|
|
14626
|
-
const { assertSecureBaseUrl, getAuthStatus } = await import("./dist-
|
|
14711
|
+
const { assertSecureBaseUrl, getAuthStatus } = await import("./dist-QLN52XKY.js");
|
|
14627
14712
|
const effectiveBaseUrl = await resolveBaseUrl(options, command);
|
|
14628
14713
|
assertSecureBaseUrl(effectiveBaseUrl);
|
|
14629
14714
|
const status = await getAuthStatus(effectiveBaseUrl, { validate: true });
|
|
@@ -14840,10 +14925,10 @@ program.command("tui").description("Open the CloudEval Terminal UI").option(
|
|
|
14840
14925
|
"Access key for automation",
|
|
14841
14926
|
process.env.CLOUDEVAL_ACCESS_KEY
|
|
14842
14927
|
).option("--access-key-stdin", "Read access key from stdin (recommended for automation)", false).option("--model <name>", "Model name").option("--debug", "Log raw chunks", false).option("--health-check", "Enable health check (disabled by default)").option("--no-banner", "Disable ASCII banner").option("--animate", "Enable TUI animations (default)").option("--no-anim", "Disable TUI animations").option("-v, --verbose", "Enable verbose logging", false).action(async (options, command) => {
|
|
14843
|
-
const { assertSecureBaseUrl } = await import("./dist-
|
|
14928
|
+
const { assertSecureBaseUrl } = await import("./dist-QLN52XKY.js");
|
|
14844
14929
|
const [{ render }, { App }] = await Promise.all([
|
|
14845
14930
|
import("ink"),
|
|
14846
|
-
import("./App-
|
|
14931
|
+
import("./App-RTGF4RMI.js")
|
|
14847
14932
|
]);
|
|
14848
14933
|
const baseUrl = await resolveBaseUrl(options, command);
|
|
14849
14934
|
assertSecureBaseUrl(baseUrl);
|
|
@@ -14898,10 +14983,10 @@ program.command("chat").description("Start an interactive chat session").option(
|
|
|
14898
14983
|
"Access key for automation",
|
|
14899
14984
|
process.env.CLOUDEVAL_ACCESS_KEY
|
|
14900
14985
|
).option("--access-key-stdin", "Read access key from stdin (recommended for automation)", false).option("--conversation <id>", "Conversation/thread id to resume").option("--continue", "Resume the most recent local chat session", false).option("--resume <id-or-title>", "Resume a local chat session by thread id or title").option("--model <name>", "Model name").option("--mode <mode>", "Initial chat mode: ask, agent").option("--debug", "Log raw chunks", false).option("--health-check", "Enable health check (disabled by default)").option("--no-banner", "Disable ASCII banner").option("--animate", "Enable TUI animations (default)").option("--no-anim", "Disable TUI animations").option("-v, --verbose", "Enable verbose logging", false).action(async (options, command) => {
|
|
14901
|
-
const { assertSecureBaseUrl } = await import("./dist-
|
|
14986
|
+
const { assertSecureBaseUrl } = await import("./dist-QLN52XKY.js");
|
|
14902
14987
|
const [{ render }, { App }] = await Promise.all([
|
|
14903
14988
|
import("ink"),
|
|
14904
|
-
import("./App-
|
|
14989
|
+
import("./App-RTGF4RMI.js")
|
|
14905
14990
|
]);
|
|
14906
14991
|
const baseUrl = await resolveBaseUrl(options, command);
|
|
14907
14992
|
assertSecureBaseUrl(baseUrl);
|
|
@@ -14976,7 +15061,7 @@ program.command("ask").alias("agent").description("Ask a single question or run
|
|
|
14976
15061
|
const question = Array.isArray(questionParts) ? questionParts.join(" ") : String(questionParts);
|
|
14977
15062
|
const commandName = command.parent?.args?.[0] === "agent" ? "agent" : "ask";
|
|
14978
15063
|
const selectedMode = commandName === "agent" ? "agent" : "ask";
|
|
14979
|
-
const { assertSecureBaseUrl } = await import("./dist-
|
|
15064
|
+
const { assertSecureBaseUrl } = await import("./dist-QLN52XKY.js");
|
|
14980
15065
|
const baseUrl = await resolveBaseUrl(options, command);
|
|
14981
15066
|
assertSecureBaseUrl(baseUrl);
|
|
14982
15067
|
const selectedProfile = getActiveConfigProfile(command);
|
|
@@ -15017,7 +15102,7 @@ program.command("ask").alias("agent").description("Ask a single question or run
|
|
|
15017
15102
|
const fs14 = await import("fs");
|
|
15018
15103
|
const fsPromises = await import("fs/promises");
|
|
15019
15104
|
const { randomUUID: randomUUID5 } = await import("crypto");
|
|
15020
|
-
const core = await import("./dist-
|
|
15105
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
15021
15106
|
const {
|
|
15022
15107
|
streamChat,
|
|
15023
15108
|
reduceChunk,
|
|
@@ -15073,7 +15158,7 @@ program.command("ask").alias("agent").description("Ask a single question or run
|
|
|
15073
15158
|
console.error("Authentication required. Starting login process...\n");
|
|
15074
15159
|
}
|
|
15075
15160
|
try {
|
|
15076
|
-
const { login } = await import("./dist-
|
|
15161
|
+
const { login } = await import("./dist-QLN52XKY.js");
|
|
15077
15162
|
verboseLog("Calling interactive login", { baseUrl });
|
|
15078
15163
|
token = await login(baseUrl, {
|
|
15079
15164
|
headless: isHeadlessEnvironment()
|
|
@@ -15137,7 +15222,7 @@ program.command("ask").alias("agent").description("Ask a single question or run
|
|
|
15137
15222
|
message: error.message
|
|
15138
15223
|
});
|
|
15139
15224
|
}
|
|
15140
|
-
const { resolveAskProject } = await import("./resolveAskProject-
|
|
15225
|
+
const { resolveAskProject } = await import("./resolveAskProject-WOMNHUYT.js");
|
|
15141
15226
|
let project;
|
|
15142
15227
|
try {
|
|
15143
15228
|
project = await resolveAskProject({
|
|
@@ -15655,7 +15740,7 @@ Error: ${errorMsg}
|
|
|
15655
15740
|
program.command("banner").description("Preview the startup banner and terminal capabilities").action(async () => {
|
|
15656
15741
|
const { render } = await import("ink");
|
|
15657
15742
|
const BannerPreview = React.lazy(async () => ({
|
|
15658
|
-
default: (await import("./Banner-
|
|
15743
|
+
default: (await import("./Banner-H2UMEBYX.js")).Banner
|
|
15659
15744
|
}));
|
|
15660
15745
|
render(
|
|
15661
15746
|
/* @__PURE__ */ jsx(React.Suspense, { fallback: null, children: /* @__PURE__ */ jsx(BannerPreview, { disable: false }) })
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/resolveAskProject.ts
|
|
2
2
|
var resolveAskProject = async (input) => {
|
|
3
|
-
const core = await import("./dist-
|
|
3
|
+
const core = await import("./dist-QLN52XKY.js");
|
|
4
4
|
const { getProjects, ensurePlaygroundProject, checkUserStatus } = core;
|
|
5
5
|
let userId = input.authenticatedUserId;
|
|
6
6
|
let user = input.authenticatedUser;
|
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.2",
|
|
18
18
|
"downloadLocation": "https://github.com/ganakailabs/cloudeval-cli",
|
|
19
19
|
"filesAnalyzed": false,
|
|
20
20
|
"licenseConcluded": "LicenseRef-CloudEval-CLI",
|