@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.
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-QSBGUI25.js";
9
9
  import {
10
10
  Onboarding
11
- } from "./chunk-N4REL72M.js";
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-KBHRBGSX.js";
38
+ } from "./chunk-3MIP274G.js";
39
39
  import {
40
40
  Banner
41
- } from "./chunk-U5TI24XX.js";
41
+ } from "./chunk-QZTBYLF7.js";
42
42
  import {
43
43
  CLI_VERSION
44
- } from "./chunk-IAXSLM2G.js";
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-CFLR5FML.js");
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-CFLR5FML.js");
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
  });
@@ -3,8 +3,8 @@ import {
3
3
  bannerMetaColor,
4
4
  bannerSegmentColor,
5
5
  splitBannerLineSegments
6
- } from "./chunk-U5TI24XX.js";
7
- import "./chunk-IAXSLM2G.js";
6
+ } from "./chunk-QZTBYLF7.js";
7
+ import "./chunk-25ILWQUX.js";
8
8
  import "./chunk-ZDKRIOMB.js";
9
9
  export {
10
10
  Banner,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Onboarding
3
- } from "./chunk-N4REL72M.js";
4
- import "./chunk-KBHRBGSX.js";
3
+ } from "./chunk-XHA4BH3P.js";
4
+ import "./chunk-3MIP274G.js";
5
5
  import "./chunk-ZDKRIOMB.js";
6
6
  export {
7
7
  Onboarding
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var CLI_VERSION = "0.26.0";
2
+ var CLI_VERSION = "0.26.2";
3
3
 
4
4
  export {
5
5
  CLI_VERSION
@@ -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 url = `${apiBase}/chat/stream`;
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",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CLI_VERSION
3
- } from "./chunk-IAXSLM2G.js";
3
+ } from "./chunk-25ILWQUX.js";
4
4
  import {
5
5
  shouldUseColor,
6
6
  terminalTheme
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  completeOnboarding
3
- } from "./chunk-KBHRBGSX.js";
3
+ } from "./chunk-3MIP274G.js";
4
4
  import {
5
5
  terminalTheme
6
6
  } from "./chunk-ZDKRIOMB.js";
package/dist/cli.js CHANGED
@@ -33,10 +33,10 @@ import {
33
33
  normalizeApiBase,
34
34
  redactSensitiveSecrets,
35
35
  redactSensitiveText
36
- } from "./chunk-KBHRBGSX.js";
36
+ } from "./chunk-3MIP274G.js";
37
37
  import {
38
38
  CLI_VERSION
39
- } from "./chunk-IAXSLM2G.js";
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-CFLR5FML.js").then((core) => ({
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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 = userId ? `?user_id=${encodeURIComponent(userId)}` : "";
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)}${query}`
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-CFLR5FML.js");
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: 3e4
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: context.user?.id,
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
- safeFetch({
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
- authToken: context.token,
2920
- path: `/well-architected-reports/${projectId}/full`
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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 sleep2 = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
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 sleep2(Math.min(pollIntervalMs, Math.max(1, deadline - Date.now())));
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 sleep3 = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
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-CFLR5FML.js");
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-CFLR5FML.js");
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 sleep3(input.pollIntervalMs);
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-QV5RTUCR.js")
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
14928
+ const { assertSecureBaseUrl } = await import("./dist-QLN52XKY.js");
14844
14929
  const [{ render }, { App }] = await Promise.all([
14845
14930
  import("ink"),
14846
- import("./App-XNVJF2ON.js")
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-CFLR5FML.js");
14986
+ const { assertSecureBaseUrl } = await import("./dist-QLN52XKY.js");
14902
14987
  const [{ render }, { App }] = await Promise.all([
14903
14988
  import("ink"),
14904
- import("./App-XNVJF2ON.js")
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-CFLR5FML.js");
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-CFLR5FML.js");
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-CFLR5FML.js");
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-NK435I56.js");
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-2FNO54OA.js")).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 }) })
@@ -72,7 +72,7 @@ import {
72
72
  revokeCredential,
73
73
  runReports,
74
74
  streamChat
75
- } from "./chunk-KBHRBGSX.js";
75
+ } from "./chunk-3MIP274G.js";
76
76
  export {
77
77
  AgentProfileRequestError,
78
78
  BUNDLED_AGENT_PROFILES,
@@ -1,6 +1,6 @@
1
1
  // src/resolveAskProject.ts
2
2
  var resolveAskProject = async (input) => {
3
- const core = await import("./dist-CFLR5FML.js");
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ganakailabs/cloudeval-cli",
3
- "version": "0.26.0",
3
+ "version": "0.26.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.26.0",
17
+ "versionInfo": "0.26.2",
18
18
  "downloadLocation": "https://github.com/ganakailabs/cloudeval-cli",
19
19
  "filesAnalyzed": false,
20
20
  "licenseConcluded": "LicenseRef-CloudEval-CLI",