@ganakailabs/cloudeval-cli 0.26.1 → 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-M5XGS3ZV.js";
41
+ } from "./chunk-QZTBYLF7.js";
42
42
  import {
43
43
  CLI_VERSION
44
- } from "./chunk-UUXJKGRN.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-M5XGS3ZV.js";
7
- import "./chunk-UUXJKGRN.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.1";
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-UUXJKGRN.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-UUXJKGRN.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 {
@@ -2744,6 +2764,62 @@ var fetchProjectById = async ({
2744
2764
  });
2745
2765
  return projects?.map(asRecord).find((project) => project.id === projectId);
2746
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
+ };
2747
2823
  var buildAiSummaryPrompt = (data) => [
2748
2824
  "Write a concise CloudEval pull request review summary in Markdown.",
2749
2825
  "Focus on gate status, Well-Architected posture, cost posture, and security/operational risks.",
@@ -2754,9 +2830,9 @@ var buildAiSummaryPrompt = (data) => [
2754
2830
  `Ref: ${data.ref ?? "unknown"}`,
2755
2831
  `Commit: ${data.commitSha ?? "unknown"}`,
2756
2832
  `Gate: ${String(data.gate?.status ?? "unknown").toUpperCase()}`,
2757
- `Well-Architected score: ${data.gate?.overallScore ?? "unknown"}`,
2758
- `High-risk findings: ${data.gate?.highRisk ?? "unknown"}`,
2759
- `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"}`,
2760
2836
  `Validation: PSRule failed ${data.gate?.validation?.psRule?.failed ?? "unknown"}, unit tests failed ${data.gate?.validation?.unitTests?.failed ?? "unknown"}`,
2761
2837
  Array.isArray(data.gate?.failures) && data.gate.failures.length ? `Gate failures: ${data.gate.failures.join("; ")}` : "Gate failures: none reported"
2762
2838
  ].join("\n");
@@ -2770,7 +2846,7 @@ var generateAiSummary = async ({
2770
2846
  agentProfileId,
2771
2847
  data
2772
2848
  }) => {
2773
- const core = await import("./dist-CFLR5FML.js");
2849
+ const core = await import("./dist-QLN52XKY.js");
2774
2850
  const threadId = `review-${data.projectId}-${Date.now()}`;
2775
2851
  let markdown = "";
2776
2852
  for await (const chunk of core.streamChat({
@@ -2800,7 +2876,7 @@ var generateAiSummary = async ({
2800
2876
  ...mode === "agent" ? { agentProfileId: agentProfileId ?? "architecture" } : {},
2801
2877
  completeAfterResponse: true,
2802
2878
  responseCompletionGraceMs: 250,
2803
- streamIdleTimeoutMs: 3e4
2879
+ streamIdleTimeoutMs: 12e4
2804
2880
  })) {
2805
2881
  const content = chunk?.content;
2806
2882
  if (chunk.type === "responding" && typeof content === "string") {
@@ -2896,10 +2972,17 @@ var registerReviewCommand = (program2, deps) => {
2896
2972
  body: commitSha ? { commit_sha: commitSha } : {},
2897
2973
  idempotencyKey: `cloudeval-review-${projectId}-${commitSha ?? "head"}`
2898
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;
2899
2982
  const finalStatus = options.wait === false ? void 0 : extractJobId2(sync) ? await waitForJob({
2900
2983
  baseUrl: context.baseUrl,
2901
2984
  token: context.token,
2902
- userId: context.user?.id,
2985
+ userId: scopedUserId,
2903
2986
  projectId,
2904
2987
  jobId: extractJobId2(sync),
2905
2988
  pollIntervalMs: parsePositiveInteger(
@@ -2913,29 +2996,26 @@ var registerReviewCommand = (program2, deps) => {
2913
2996
  9e5
2914
2997
  )
2915
2998
  }) : void 0;
2916
- const [cost, waf, configText] = await Promise.all([
2917
- safeFetch({
2999
+ const [{ cost, waf, preload }, configText] = await Promise.all([
3000
+ waitForReviewReports({
2918
3001
  baseUrl: context.baseUrl,
2919
- authToken: context.token,
2920
- path: `/cost-reports/${projectId}/full`
2921
- }),
2922
- safeFetch({
2923
- baseUrl: context.baseUrl,
2924
- authToken: context.token,
2925
- 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
+ )
2926
3016
  }),
2927
3017
  readConfigText(cwd, options)
2928
3018
  ]);
2929
- const project = await fetchProjectById({
2930
- baseUrl: context.baseUrl,
2931
- token: context.token,
2932
- projectId
2933
- });
2934
- const preload = context.user?.id ? await safeFetch({
2935
- baseUrl: context.baseUrl,
2936
- authToken: context.token,
2937
- path: `/reports/preload/${encodeURIComponent(projectId)}?user_id=${encodeURIComponent(context.user.id)}&include_payload=true`
2938
- }) : void 0;
2939
3019
  const data = {
2940
3020
  projectId,
2941
3021
  repo,
@@ -4326,7 +4406,7 @@ var runChatRecipe = async (recipe, prompt2, options, command, deps) => {
4326
4406
  });
4327
4407
  progressWriter.write({ type: "auth", step: "auth", message: "Resolving authentication" });
4328
4408
  const context = await resolveAuthContext(options, command, deps);
4329
- const core = await import("./dist-CFLR5FML.js");
4409
+ const core = await import("./dist-QLN52XKY.js");
4330
4410
  progressWriter.write({
4331
4411
  type: "request",
4332
4412
  step: "project",
@@ -5795,7 +5875,7 @@ var configureDiagramExportCommand = (command, deps) => addAuthOptions(command, d
5795
5875
  const context = requireAuthUser(
5796
5876
  await resolveAuthContext(options, actionCommand, deps)
5797
5877
  );
5798
- const core = await import("./dist-CFLR5FML.js");
5878
+ const core = await import("./dist-QLN52XKY.js");
5799
5879
  const projects = await core.getProjects(
5800
5880
  context.baseUrl,
5801
5881
  context.token,
@@ -5872,7 +5952,7 @@ var registerProjectsCommand = (program2, deps) => {
5872
5952
  addCommon(addAuthOptions(projects.command("list").description("List projects"), deps.defaultBaseUrl)).action(async (options, command) => {
5873
5953
  try {
5874
5954
  const context = await resolveAuthContext(options, command, deps);
5875
- const core = await import("./dist-CFLR5FML.js");
5955
+ const core = await import("./dist-QLN52XKY.js");
5876
5956
  const data = await listProjectsForContext(core, context);
5877
5957
  const url = buildFrontendUrl({ baseUrl: frontendBase(context, options), target: "projects" });
5878
5958
  await writeProjectListOutput({ data, options, frontendUrl: url });
@@ -5890,7 +5970,7 @@ var registerProjectsCommand = (program2, deps) => {
5890
5970
  ).action(async (id, options, command) => {
5891
5971
  try {
5892
5972
  const context = await resolveAuthContext(options, command, deps);
5893
- const core = await import("./dist-CFLR5FML.js");
5973
+ const core = await import("./dist-QLN52XKY.js");
5894
5974
  const list = await listProjectsForContext(core, context);
5895
5975
  const data = list.find((project) => project.id === id);
5896
5976
  if (!data) {
@@ -5955,7 +6035,7 @@ var registerProjectsCommand = (program2, deps) => {
5955
6035
  try {
5956
6036
  assertSingleProjectSource(options);
5957
6037
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
5958
- const core = await import("./dist-CFLR5FML.js");
6038
+ const core = await import("./dist-QLN52XKY.js");
5959
6039
  const template = await fileBlob(options.templateFile);
5960
6040
  const parameters = await fileBlob(options.parametersFile);
5961
6041
  const workspace = options.workspaceDir ? await collectWorkspaceFiles(options.workspaceDir, options) : void 0;
@@ -6084,7 +6164,7 @@ var registerConnectionsCommand = (program2, deps) => {
6084
6164
  addCommon2(addAuthOptions(connections.command("list").description("List connections"), deps.defaultBaseUrl)).action(async (options, command) => {
6085
6165
  try {
6086
6166
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
6087
- const core = await import("./dist-CFLR5FML.js");
6167
+ const core = await import("./dist-QLN52XKY.js");
6088
6168
  const data = await core.listConnections({
6089
6169
  baseUrl: context.baseUrl,
6090
6170
  authToken: context.token,
@@ -6109,7 +6189,7 @@ var registerConnectionsCommand = (program2, deps) => {
6109
6189
  ).action(async (id, options, command) => {
6110
6190
  try {
6111
6191
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
6112
- const core = await import("./dist-CFLR5FML.js");
6192
+ const core = await import("./dist-QLN52XKY.js");
6113
6193
  const data = await core.getConnection({
6114
6194
  baseUrl: context.baseUrl,
6115
6195
  authToken: context.token,
@@ -6447,7 +6527,7 @@ var checkoutReturnUrl = (context, options) => options.returnTo || billingUrl(con
6447
6527
  var runTopUpCheckout = async (commandName, packId, options, command, deps) => {
6448
6528
  try {
6449
6529
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
6450
- const core = await import("./dist-CFLR5FML.js");
6530
+ const core = await import("./dist-QLN52XKY.js");
6451
6531
  const returnTo = checkoutReturnUrl(context, options);
6452
6532
  const session = await core.createTopUpCheckoutSession({
6453
6533
  baseUrl: context.baseUrl,
@@ -6487,7 +6567,7 @@ var registerBillingCommands = (program2, deps) => {
6487
6567
  ).action(async (options, command) => {
6488
6568
  try {
6489
6569
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
6490
- const core = await import("./dist-CFLR5FML.js");
6570
+ const core = await import("./dist-QLN52XKY.js");
6491
6571
  const range = rangeToDates("30d");
6492
6572
  const [entitlement, usageSummary] = await Promise.all([
6493
6573
  core.getBillingEntitlement({
@@ -6517,7 +6597,7 @@ var registerBillingCommands = (program2, deps) => {
6517
6597
  addCommon3(addAuthOptions(billing.command("summary").description("Show billing summary"), deps.defaultBaseUrl)).action(async (options, command) => {
6518
6598
  try {
6519
6599
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
6520
- const core = await import("./dist-CFLR5FML.js");
6600
+ const core = await import("./dist-QLN52XKY.js");
6521
6601
  const range = rangeToDates("30d");
6522
6602
  const [entitlement, subscriptionStatus, usageSummary] = await Promise.all([
6523
6603
  core.getBillingEntitlement({ baseUrl: context.baseUrl, authToken: context.token }),
@@ -6553,7 +6633,7 @@ var registerBillingCommands = (program2, deps) => {
6553
6633
  addCommon3(addAuthOptions(billing.command("plans").description("Show billing plans"), deps.defaultBaseUrl)).action(async (options, command) => {
6554
6634
  try {
6555
6635
  const context = await resolveAuthContext(options, command, deps);
6556
- const core = await import("./dist-CFLR5FML.js");
6636
+ const core = await import("./dist-QLN52XKY.js");
6557
6637
  const data = await core.getBillingConfig({ baseUrl: context.baseUrl, authToken: context.token });
6558
6638
  const url = billingUrl(context, { ...options, tab: "plans" });
6559
6639
  await write("billing plans", data, options, url);
@@ -6565,7 +6645,7 @@ var registerBillingCommands = (program2, deps) => {
6565
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) => {
6566
6646
  try {
6567
6647
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
6568
- const core = await import("./dist-CFLR5FML.js");
6648
+ const core = await import("./dist-QLN52XKY.js");
6569
6649
  const range = rangeToDates(options.range);
6570
6650
  const data = await core.getBillingUsageSummary({
6571
6651
  baseUrl: context.baseUrl,
@@ -6588,7 +6668,7 @@ var registerBillingCommands = (program2, deps) => {
6588
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) => {
6589
6669
  try {
6590
6670
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
6591
- const core = await import("./dist-CFLR5FML.js");
6671
+ const core = await import("./dist-QLN52XKY.js");
6592
6672
  const range = rangeToDates(options.range);
6593
6673
  const data = await core.getBillingUsageLedger({
6594
6674
  baseUrl: context.baseUrl,
@@ -6616,7 +6696,7 @@ var registerBillingCommands = (program2, deps) => {
6616
6696
  addCommon3(addAuthOptions(billing.command(name).description(`Show billing ${name}`), deps.defaultBaseUrl)).option("--limit <n>", "Result limit", "25").action(async (options, command) => {
6617
6697
  try {
6618
6698
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
6619
- const core = await import("./dist-CFLR5FML.js");
6699
+ const core = await import("./dist-QLN52XKY.js");
6620
6700
  const data = await core[getter]({
6621
6701
  baseUrl: context.baseUrl,
6622
6702
  authToken: context.token,
@@ -6634,7 +6714,7 @@ var registerBillingCommands = (program2, deps) => {
6634
6714
  addCommon3(addAuthOptions(topups, deps.defaultBaseUrl)).option("--limit <n>", "Result limit", "25").action(async (options, command) => {
6635
6715
  try {
6636
6716
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
6637
- const core = await import("./dist-CFLR5FML.js");
6717
+ const core = await import("./dist-QLN52XKY.js");
6638
6718
  const data = await core.getTopUpPacks({
6639
6719
  baseUrl: context.baseUrl,
6640
6720
  authToken: context.token
@@ -6906,7 +6986,7 @@ var validateTemplate = async (input) => fetchCloudEvalJson({
6906
6986
  userId: input.userId
6907
6987
  })
6908
6988
  });
6909
- var sleep2 = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
6989
+ var sleep3 = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
6910
6990
  var recordValue = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
6911
6991
  var stringField = (value, field) => {
6912
6992
  const raw = value?.[field];
@@ -7087,7 +7167,7 @@ var waitForTemplateValidationResult = async (input) => {
7087
7167
  `Template validation job ${jobId} did not finish within ${waitTimeoutMs}ms.`
7088
7168
  );
7089
7169
  }
7090
- await sleep2(Math.min(pollIntervalMs, Math.max(1, deadline - Date.now())));
7170
+ await sleep3(Math.min(pollIntervalMs, Math.max(1, deadline - Date.now())));
7091
7171
  }
7092
7172
  if (!isSuccessfulJobStatus(status)) {
7093
7173
  throw new Error(
@@ -9269,7 +9349,7 @@ var isTerminalJobStatus4 = (value) => {
9269
9349
  "canceled"
9270
9350
  ].includes(status);
9271
9351
  };
9272
- var sleep3 = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
9352
+ var sleep4 = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
9273
9353
  var writeHeaderFile = async (outputPath, headers) => {
9274
9354
  await fs9.mkdir(path6.dirname(outputPath), { recursive: true });
9275
9355
  const text = Object.entries(headers).sort(([left], [right]) => left.localeCompare(right)).map(([key, value]) => `${key}: ${value}`).join("\n");
@@ -9305,7 +9385,7 @@ var reportsFrontendUrl = (config, input) => buildFrontendUrl({
9305
9385
  reportVerbosity: input.reportVerbosity
9306
9386
  });
9307
9387
  var resolveAuth = async (config, options = {}) => {
9308
- const core = await import("./dist-CFLR5FML.js");
9388
+ const core = await import("./dist-QLN52XKY.js");
9309
9389
  core.assertSecureBaseUrl(config.baseUrl);
9310
9390
  let token;
9311
9391
  try {
@@ -9401,7 +9481,7 @@ var assertModelAvailable = async (config, token) => {
9401
9481
  if (!config.model) {
9402
9482
  return;
9403
9483
  }
9404
- const core = await import("./dist-CFLR5FML.js");
9484
+ const core = await import("./dist-QLN52XKY.js");
9405
9485
  try {
9406
9486
  const response = await fetch(
9407
9487
  `${core.normalizeApiBase(config.baseUrl)}/models`,
@@ -9449,7 +9529,7 @@ var waitForReportJobs2 = async (input) => {
9449
9529
  if (isTerminalJobStatus4(lastStatus)) {
9450
9530
  break;
9451
9531
  }
9452
- await sleep3(input.pollIntervalMs);
9532
+ await sleep4(input.pollIntervalMs);
9453
9533
  }
9454
9534
  finalStatuses.push(lastStatus);
9455
9535
  }
@@ -9658,7 +9738,7 @@ var buildToolHandlers = (serverOptions) => {
9658
9738
  });
9659
9739
  handlers.set("agent_profiles_list", async (args) => {
9660
9740
  const config = await resolveInvocationConfig(serverOptions, args);
9661
- const core = await import("./dist-CFLR5FML.js");
9741
+ const core = await import("./dist-QLN52XKY.js");
9662
9742
  const data = await listProfilesForDiscovery(core, config.baseUrl);
9663
9743
  return withEnvelope({
9664
9744
  command: "agents list",
@@ -9671,7 +9751,7 @@ var buildToolHandlers = (serverOptions) => {
9671
9751
  throw new Error("profileId is required.");
9672
9752
  }
9673
9753
  const config = await resolveInvocationConfig(serverOptions, args);
9674
- const core = await import("./dist-CFLR5FML.js");
9754
+ const core = await import("./dist-QLN52XKY.js");
9675
9755
  const data = await getProfileForDiscovery(core, config.baseUrl, profileId);
9676
9756
  return withEnvelope({
9677
9757
  command: "agents show",
@@ -10308,7 +10388,7 @@ var buildToolHandlers = (serverOptions) => {
10308
10388
  });
10309
10389
  handlers.set("auth_status", async (args) => {
10310
10390
  const config = await resolveInvocationConfig(serverOptions, args);
10311
- const core = await import("./dist-CFLR5FML.js");
10391
+ const core = await import("./dist-QLN52XKY.js");
10312
10392
  const data = await core.getAuthStatus(config.baseUrl, { validate: true });
10313
10393
  return withEnvelope({
10314
10394
  command: "auth status",
@@ -10317,7 +10397,7 @@ var buildToolHandlers = (serverOptions) => {
10317
10397
  });
10318
10398
  handlers.set("status", async (args) => {
10319
10399
  const config = await resolveInvocationConfig(serverOptions, args);
10320
- const core = await import("./dist-CFLR5FML.js");
10400
+ const core = await import("./dist-QLN52XKY.js");
10321
10401
  const auth = await core.getAuthStatus(config.baseUrl, { validate: true });
10322
10402
  return withEnvelope({
10323
10403
  command: "status",
@@ -10348,7 +10428,7 @@ var buildToolHandlers = (serverOptions) => {
10348
10428
  }
10349
10429
  ];
10350
10430
  try {
10351
- const core = await import("./dist-CFLR5FML.js");
10431
+ const core = await import("./dist-QLN52XKY.js");
10352
10432
  core.assertSecureBaseUrl(config.baseUrl);
10353
10433
  checks.push({
10354
10434
  id: "base-url-secure",
@@ -10868,7 +10948,7 @@ var buildToolHandlers = (serverOptions) => {
10868
10948
  } catch {
10869
10949
  token = config.accessKey;
10870
10950
  }
10871
- const core = await import("./dist-CFLR5FML.js");
10951
+ const core = await import("./dist-QLN52XKY.js");
10872
10952
  const data = await core.getBillingConfig({
10873
10953
  baseUrl: config.baseUrl,
10874
10954
  authToken: token
@@ -11722,7 +11802,7 @@ var registerCapabilitiesCommand = (program2, deps) => {
11722
11802
  warnIfAccessKeyFromCliOption(options, command);
11723
11803
  let data = capabilities;
11724
11804
  if (options.live) {
11725
- const core = await import("./dist-CFLR5FML.js");
11805
+ const core = await import("./dist-QLN52XKY.js");
11726
11806
  const baseUrl = await deps.resolveBaseUrl(options, command);
11727
11807
  const accessKey = options.accessKeyStdin ? await deps.readStdinValue() : options.accessKey;
11728
11808
  const token = await core.getAuthToken({ accessKey, baseUrl });
@@ -11860,7 +11940,7 @@ var writeCredentialOutput = async (input) => {
11860
11940
  };
11861
11941
  var resolveCoreAuth = async (options, command, deps) => {
11862
11942
  const context = await resolveAuthContext(options, command, deps);
11863
- const core = await import("./dist-CFLR5FML.js");
11943
+ const core = await import("./dist-QLN52XKY.js");
11864
11944
  return { ...context, core };
11865
11945
  };
11866
11946
  var parseCapabilities = (value) => value?.split(",").map((item) => item.trim()).filter(Boolean);
@@ -12177,7 +12257,7 @@ var registerAgentsCommand = (program2, deps) => {
12177
12257
  const agents = program2.command("agents").description("CloudEval Agent Profile utilities");
12178
12258
  addAgentOutputOptions(agents.command("list").description("List Agent Profiles"), deps).action(async (options, command) => {
12179
12259
  const baseUrl = await deps.resolveBaseUrl(options, command);
12180
- const core = await import("./dist-CFLR5FML.js");
12260
+ const core = await import("./dist-QLN52XKY.js");
12181
12261
  core.assertSecureBaseUrl(baseUrl);
12182
12262
  const data = await listProfilesForDiscovery2(core, baseUrl);
12183
12263
  await writeProfiles({
@@ -12193,7 +12273,7 @@ var registerAgentsCommand = (program2, deps) => {
12193
12273
  deps
12194
12274
  ).action(async (profileId, options, command) => {
12195
12275
  const baseUrl = await deps.resolveBaseUrl(options, command);
12196
- const core = await import("./dist-CFLR5FML.js");
12276
+ const core = await import("./dist-QLN52XKY.js");
12197
12277
  core.assertSecureBaseUrl(baseUrl);
12198
12278
  const data = await getProfileForDiscovery2(core, baseUrl, profileId);
12199
12279
  await writeProfiles({
@@ -12212,7 +12292,7 @@ var registerAgentsCommand = (program2, deps) => {
12212
12292
  const cliProfile = getActiveConfigProfile(command);
12213
12293
  const cliConfig = await loadCliConfig(cliProfile);
12214
12294
  const auth = await resolveAuthContext(options, command, deps);
12215
- const core = await import("./dist-CFLR5FML.js");
12295
+ const core = await import("./dist-QLN52XKY.js");
12216
12296
  const profileResponse = await core.getAgentProfile({
12217
12297
  baseUrl: auth.baseUrl,
12218
12298
  authToken: auth.token,
@@ -12710,7 +12790,7 @@ var registerDiagnosticsCommands = (program2, deps) => {
12710
12790
  const baseUrl = await deps.resolveBaseUrl(options, command);
12711
12791
  const profile = getActiveConfigProfile(command);
12712
12792
  const config = await loadCliConfig(profile);
12713
- const core = await import("./dist-CFLR5FML.js");
12793
+ const core = await import("./dist-QLN52XKY.js");
12714
12794
  const auth = await core.getAuthStatus(baseUrl, { validate: true });
12715
12795
  if (options.format === "text" || !options.format) {
12716
12796
  process.stdout.write(
@@ -12760,7 +12840,7 @@ var registerDiagnosticsCommands = (program2, deps) => {
12760
12840
  detail: getCliConfigPath(profile)
12761
12841
  });
12762
12842
  try {
12763
- const core = await import("./dist-CFLR5FML.js");
12843
+ const core = await import("./dist-QLN52XKY.js");
12764
12844
  core.assertSecureBaseUrl(baseUrl);
12765
12845
  checks.push({
12766
12846
  id: "base-url-secure",
@@ -12860,7 +12940,7 @@ var resolveToken2 = async (options, deps, baseUrl, command) => {
12860
12940
  return options.accessKey;
12861
12941
  }
12862
12942
  try {
12863
- const core = await import("./dist-CFLR5FML.js");
12943
+ const core = await import("./dist-QLN52XKY.js");
12864
12944
  return await core.getAuthToken({
12865
12945
  baseUrl
12866
12946
  });
@@ -12944,7 +13024,7 @@ var registerModelsCommand = (program2, deps) => {
12944
13024
  let source = "fallback";
12945
13025
  let modelList = fallbackModels;
12946
13026
  try {
12947
- const core = await import("./dist-CFLR5FML.js");
13027
+ const core = await import("./dist-QLN52XKY.js");
12948
13028
  const response = await fetch(`${core.normalizeApiBase(baseUrl)}/models`, {
12949
13029
  headers: {
12950
13030
  Accept: "application/json",
@@ -14123,7 +14203,7 @@ var uninstallCompletionScript = async (shell) => {
14123
14203
  var runInteractiveLoginOnboarding = async (baseUrl, token) => {
14124
14204
  const [{ render }, { Onboarding }] = await Promise.all([
14125
14205
  import("ink"),
14126
- import("./Onboarding-QV5RTUCR.js")
14206
+ import("./Onboarding-SAYMQ36N.js")
14127
14207
  ]);
14128
14208
  await new Promise((resolve) => {
14129
14209
  let app;
@@ -14445,7 +14525,7 @@ var resolveBaseUrl = async (options, command) => {
14445
14525
  });
14446
14526
  }
14447
14527
  try {
14448
- const { getAuthStatus } = await import("./dist-CFLR5FML.js");
14528
+ const { getAuthStatus } = await import("./dist-QLN52XKY.js");
14449
14529
  const status = await getAuthStatus();
14450
14530
  const storedBaseUrl = status.baseUrl;
14451
14531
  if (storedBaseUrl && shouldUseStoredBaseUrl(storedBaseUrl)) {
@@ -14519,7 +14599,7 @@ program.command("login").description("Authenticate with Cloudeval").option(
14519
14599
  checkUserStatus,
14520
14600
  ensurePlaygroundProject,
14521
14601
  login
14522
- } = await import("./dist-CFLR5FML.js");
14602
+ } = await import("./dist-QLN52XKY.js");
14523
14603
  assertSecureBaseUrl(options.baseUrl);
14524
14604
  const headlessEnvironment = isHeadlessEnvironment();
14525
14605
  const headlessLogin = options.headless || headlessEnvironment;
@@ -14594,7 +14674,7 @@ program.command("logout").description("Log out and clear stored authentication s
14594
14674
  DEFAULT_BASE_URL
14595
14675
  ).option("--all-devices", "Revoke sessions on all devices", false).action(async (options) => {
14596
14676
  try {
14597
- const { assertSecureBaseUrl, logout } = await import("./dist-CFLR5FML.js");
14677
+ const { assertSecureBaseUrl, logout } = await import("./dist-QLN52XKY.js");
14598
14678
  assertSecureBaseUrl(options.baseUrl);
14599
14679
  const result = await logout({
14600
14680
  baseUrl: options.baseUrl,
@@ -14628,7 +14708,7 @@ authCommand.command("status").description("Show current authentication status").
14628
14708
  DEFAULT_BASE_URL
14629
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) => {
14630
14710
  try {
14631
- const { assertSecureBaseUrl, getAuthStatus } = await import("./dist-CFLR5FML.js");
14711
+ const { assertSecureBaseUrl, getAuthStatus } = await import("./dist-QLN52XKY.js");
14632
14712
  const effectiveBaseUrl = await resolveBaseUrl(options, command);
14633
14713
  assertSecureBaseUrl(effectiveBaseUrl);
14634
14714
  const status = await getAuthStatus(effectiveBaseUrl, { validate: true });
@@ -14845,10 +14925,10 @@ program.command("tui").description("Open the CloudEval Terminal UI").option(
14845
14925
  "Access key for automation",
14846
14926
  process.env.CLOUDEVAL_ACCESS_KEY
14847
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) => {
14848
- const { assertSecureBaseUrl } = await import("./dist-CFLR5FML.js");
14928
+ const { assertSecureBaseUrl } = await import("./dist-QLN52XKY.js");
14849
14929
  const [{ render }, { App }] = await Promise.all([
14850
14930
  import("ink"),
14851
- import("./App-3VDZ4SKF.js")
14931
+ import("./App-RTGF4RMI.js")
14852
14932
  ]);
14853
14933
  const baseUrl = await resolveBaseUrl(options, command);
14854
14934
  assertSecureBaseUrl(baseUrl);
@@ -14903,10 +14983,10 @@ program.command("chat").description("Start an interactive chat session").option(
14903
14983
  "Access key for automation",
14904
14984
  process.env.CLOUDEVAL_ACCESS_KEY
14905
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) => {
14906
- const { assertSecureBaseUrl } = await import("./dist-CFLR5FML.js");
14986
+ const { assertSecureBaseUrl } = await import("./dist-QLN52XKY.js");
14907
14987
  const [{ render }, { App }] = await Promise.all([
14908
14988
  import("ink"),
14909
- import("./App-3VDZ4SKF.js")
14989
+ import("./App-RTGF4RMI.js")
14910
14990
  ]);
14911
14991
  const baseUrl = await resolveBaseUrl(options, command);
14912
14992
  assertSecureBaseUrl(baseUrl);
@@ -14981,7 +15061,7 @@ program.command("ask").alias("agent").description("Ask a single question or run
14981
15061
  const question = Array.isArray(questionParts) ? questionParts.join(" ") : String(questionParts);
14982
15062
  const commandName = command.parent?.args?.[0] === "agent" ? "agent" : "ask";
14983
15063
  const selectedMode = commandName === "agent" ? "agent" : "ask";
14984
- const { assertSecureBaseUrl } = await import("./dist-CFLR5FML.js");
15064
+ const { assertSecureBaseUrl } = await import("./dist-QLN52XKY.js");
14985
15065
  const baseUrl = await resolveBaseUrl(options, command);
14986
15066
  assertSecureBaseUrl(baseUrl);
14987
15067
  const selectedProfile = getActiveConfigProfile(command);
@@ -15022,7 +15102,7 @@ program.command("ask").alias("agent").description("Ask a single question or run
15022
15102
  const fs14 = await import("fs");
15023
15103
  const fsPromises = await import("fs/promises");
15024
15104
  const { randomUUID: randomUUID5 } = await import("crypto");
15025
- const core = await import("./dist-CFLR5FML.js");
15105
+ const core = await import("./dist-QLN52XKY.js");
15026
15106
  const {
15027
15107
  streamChat,
15028
15108
  reduceChunk,
@@ -15078,7 +15158,7 @@ program.command("ask").alias("agent").description("Ask a single question or run
15078
15158
  console.error("Authentication required. Starting login process...\n");
15079
15159
  }
15080
15160
  try {
15081
- const { login } = await import("./dist-CFLR5FML.js");
15161
+ const { login } = await import("./dist-QLN52XKY.js");
15082
15162
  verboseLog("Calling interactive login", { baseUrl });
15083
15163
  token = await login(baseUrl, {
15084
15164
  headless: isHeadlessEnvironment()
@@ -15142,7 +15222,7 @@ program.command("ask").alias("agent").description("Ask a single question or run
15142
15222
  message: error.message
15143
15223
  });
15144
15224
  }
15145
- const { resolveAskProject } = await import("./resolveAskProject-NK435I56.js");
15225
+ const { resolveAskProject } = await import("./resolveAskProject-WOMNHUYT.js");
15146
15226
  let project;
15147
15227
  try {
15148
15228
  project = await resolveAskProject({
@@ -15660,7 +15740,7 @@ Error: ${errorMsg}
15660
15740
  program.command("banner").description("Preview the startup banner and terminal capabilities").action(async () => {
15661
15741
  const { render } = await import("ink");
15662
15742
  const BannerPreview = React.lazy(async () => ({
15663
- default: (await import("./Banner-7BP5U7P4.js")).Banner
15743
+ default: (await import("./Banner-H2UMEBYX.js")).Banner
15664
15744
  }));
15665
15745
  render(
15666
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.1",
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.1",
17
+ "versionInfo": "0.26.2",
18
18
  "downloadLocation": "https://github.com/ganakailabs/cloudeval-cli",
19
19
  "filesAnalyzed": false,
20
20
  "licenseConcluded": "LicenseRef-CloudEval-CLI",