@ganakailabs/cloudeval-cli 0.20.3 → 0.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -33,10 +33,10 @@ import {
33
33
  normalizeApiBase,
34
34
  redactSensitiveSecrets,
35
35
  redactSensitiveText
36
- } from "./chunk-2D4BE3OS.js";
36
+ } from "./chunk-LDDHLUZH.js";
37
37
  import {
38
38
  CLI_VERSION
39
- } from "./chunk-TCNIIMWL.js";
39
+ } from "./chunk-74TONCUI.js";
40
40
 
41
41
  // src/runtime/prepareInk.ts
42
42
  import fs from "fs";
@@ -1604,7 +1604,7 @@ var resolveReportProjectId = async ({
1604
1604
  if (!token) {
1605
1605
  throw new Error("No project specified. Use --project <id> for report access.");
1606
1606
  }
1607
- const resolvedWorkspace = workspace ?? await import("./dist-TBAQ5KOK.js").then((core) => ({
1607
+ const resolvedWorkspace = workspace ?? await import("./dist-AGQQPJUD.js").then((core) => ({
1608
1608
  checkUserStatus: core.checkUserStatus,
1609
1609
  getProjects: core.getProjects
1610
1610
  }));
@@ -1633,7 +1633,7 @@ var warnIfAccessKeyFromCliOption = (options, command) => {
1633
1633
  };
1634
1634
  var resolveAuthContext = async (options, command, deps) => {
1635
1635
  const baseUrl = await deps.resolveBaseUrl(options, command);
1636
- const core = await import("./dist-TBAQ5KOK.js");
1636
+ const core = await import("./dist-AGQQPJUD.js");
1637
1637
  core.assertSecureBaseUrl(baseUrl);
1638
1638
  warnIfAccessKeyFromCliOption(options, command);
1639
1639
  let accessKey = options.accessKey;
@@ -1719,7 +1719,7 @@ var resolveToken = async (options, baseUrl, deps, command) => {
1719
1719
  if (options.accessKey) {
1720
1720
  return options.accessKey;
1721
1721
  }
1722
- const { getAuthToken } = await import("./dist-TBAQ5KOK.js");
1722
+ const { getAuthToken } = await import("./dist-AGQQPJUD.js");
1723
1723
  try {
1724
1724
  return await getAuthToken({
1725
1725
  accessKey: options.accessKey,
@@ -1730,7 +1730,7 @@ var resolveToken = async (options, baseUrl, deps, command) => {
1730
1730
  if (!canLogin) {
1731
1731
  throw error;
1732
1732
  }
1733
- const { login } = await import("./dist-TBAQ5KOK.js");
1733
+ const { login } = await import("./dist-AGQQPJUD.js");
1734
1734
  process.stderr.write("Authentication required. Starting login flow...\n");
1735
1735
  const token = await login(baseUrl, {
1736
1736
  headless: Boolean(process.env.SSH_TTY || process.env.CLOUDEVAL_HEADLESS_LOGIN)
@@ -1766,7 +1766,7 @@ var writeReport = async (report, options, tuiDefault) => {
1766
1766
  const [{ default: React2 }, { render }, { ReportDashboard }] = await Promise.all([
1767
1767
  import("react"),
1768
1768
  import("ink"),
1769
- import("./ReportDashboard-T63UGA7M.js")
1769
+ import("./ReportDashboard-DOAUB727.js")
1770
1770
  ]);
1771
1771
  render(React2.createElement(ReportDashboard, {
1772
1772
  report,
@@ -1896,7 +1896,7 @@ var registerReportsCommand = (program2, deps) => {
1896
1896
  token,
1897
1897
  requestedProjectId: options.project
1898
1898
  });
1899
- const core = await import("./dist-TBAQ5KOK.js");
1899
+ const core = await import("./dist-AGQQPJUD.js");
1900
1900
  const status = token ? await core.checkUserStatus(baseUrl, token) : void 0;
1901
1901
  const reports2 = await core.listReports({
1902
1902
  baseUrl,
@@ -1918,7 +1918,7 @@ var registerReportsCommand = (program2, deps) => {
1918
1918
  try {
1919
1919
  const baseUrl = await deps.resolveBaseUrl(options, command);
1920
1920
  const token = await resolveToken(options, baseUrl, deps, command);
1921
- const core = await import("./dist-TBAQ5KOK.js");
1921
+ const core = await import("./dist-AGQQPJUD.js");
1922
1922
  const status = token ? await core.checkUserStatus(baseUrl, token) : void 0;
1923
1923
  const projectId = await resolveReportProjectId({
1924
1924
  baseUrl,
@@ -2021,7 +2021,7 @@ var registerReportsCommand = (program2, deps) => {
2021
2021
  try {
2022
2022
  const baseUrl = await deps.resolveBaseUrl(options, command);
2023
2023
  const token = await resolveToken(options, baseUrl, deps, command);
2024
- const core = await import("./dist-TBAQ5KOK.js");
2024
+ const core = await import("./dist-AGQQPJUD.js");
2025
2025
  const status = token ? await core.checkUserStatus(baseUrl, token) : void 0;
2026
2026
  const projectId = await resolveReportProjectId({
2027
2027
  baseUrl,
@@ -2091,7 +2091,7 @@ var registerReportsCommand = (program2, deps) => {
2091
2091
  token,
2092
2092
  requestedProjectId: options.project
2093
2093
  });
2094
- const core = await import("./dist-TBAQ5KOK.js");
2094
+ const core = await import("./dist-AGQQPJUD.js");
2095
2095
  const status = token ? await core.checkUserStatus(baseUrl, token) : void 0;
2096
2096
  const report = await core.getWafReport({
2097
2097
  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-TBAQ5KOK.js");
2133
+ const core = await import("./dist-AGQQPJUD.js");
2134
2134
  const status = token ? await core.checkUserStatus(baseUrl, token) : void 0;
2135
2135
  const report = await core.getReport({
2136
2136
  baseUrl,
@@ -2158,7 +2158,7 @@ var registerReportsCommand = (program2, deps) => {
2158
2158
  token,
2159
2159
  requestedProjectId: options.project
2160
2160
  });
2161
- const core = await import("./dist-TBAQ5KOK.js");
2161
+ const core = await import("./dist-AGQQPJUD.js");
2162
2162
  const status = token ? await core.checkUserStatus(baseUrl, token) : void 0;
2163
2163
  const report = await core.getCostReport({
2164
2164
  baseUrl,
@@ -2187,7 +2187,7 @@ var registerReportsCommand = (program2, deps) => {
2187
2187
  token,
2188
2188
  requestedProjectId: options.project
2189
2189
  });
2190
- const core = await import("./dist-TBAQ5KOK.js");
2190
+ const core = await import("./dist-AGQQPJUD.js");
2191
2191
  const status = token ? await core.checkUserStatus(baseUrl, token) : void 0;
2192
2192
  const report = await core.getWafReport({
2193
2193
  baseUrl,
@@ -3529,7 +3529,7 @@ var runChatRecipe = async (recipe, prompt2, options, command, deps) => {
3529
3529
  });
3530
3530
  progressWriter.write({ type: "auth", step: "auth", message: "Resolving authentication" });
3531
3531
  const context = await resolveAuthContext(options, command, deps);
3532
- const core = await import("./dist-TBAQ5KOK.js");
3532
+ const core = await import("./dist-AGQQPJUD.js");
3533
3533
  progressWriter.write({
3534
3534
  type: "request",
3535
3535
  step: "project",
@@ -4778,7 +4778,7 @@ var configureDiagramExportCommand = (command, deps) => addAuthOptions(command, d
4778
4778
  const context = requireAuthUser(
4779
4779
  await resolveAuthContext(options, actionCommand, deps)
4780
4780
  );
4781
- const core = await import("./dist-TBAQ5KOK.js");
4781
+ const core = await import("./dist-AGQQPJUD.js");
4782
4782
  const projects = await core.getProjects(
4783
4783
  context.baseUrl,
4784
4784
  context.token,
@@ -4855,7 +4855,7 @@ var registerProjectsCommand = (program2, deps) => {
4855
4855
  addCommon(addAuthOptions(projects.command("list").description("List projects"), deps.defaultBaseUrl)).action(async (options, command) => {
4856
4856
  try {
4857
4857
  const context = await resolveAuthContext(options, command, deps);
4858
- const core = await import("./dist-TBAQ5KOK.js");
4858
+ const core = await import("./dist-AGQQPJUD.js");
4859
4859
  const data = await listProjectsForContext(core, context);
4860
4860
  const url = buildFrontendUrl({ baseUrl: frontendBase(context, options), target: "projects" });
4861
4861
  await writeProjectListOutput({ data, options, frontendUrl: url });
@@ -4873,7 +4873,7 @@ var registerProjectsCommand = (program2, deps) => {
4873
4873
  ).action(async (id, options, command) => {
4874
4874
  try {
4875
4875
  const context = await resolveAuthContext(options, command, deps);
4876
- const core = await import("./dist-TBAQ5KOK.js");
4876
+ const core = await import("./dist-AGQQPJUD.js");
4877
4877
  const list = await listProjectsForContext(core, context);
4878
4878
  const data = list.find((project) => project.id === id);
4879
4879
  if (!data) {
@@ -4937,7 +4937,7 @@ var registerProjectsCommand = (program2, deps) => {
4937
4937
  addCommon(addAuthOptions(projects.command("create").description("Create a quick template project"), deps.defaultBaseUrl)).option("--template-url <url>", "Template URL").option("--template-file <path>", "Local JSON template file").option("--parameters-file <path>", "Local JSON parameters file").option("--parameters-url <url>", "Parameters file URL").option("--name <name>", "Project name").option("--description <text>", "Project description").option("--provider <provider>", "Cloud provider: azure, aws, gcp").action(async (options, command) => {
4938
4938
  try {
4939
4939
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
4940
- const core = await import("./dist-TBAQ5KOK.js");
4940
+ const core = await import("./dist-AGQQPJUD.js");
4941
4941
  const template = await fileBlob(options.templateFile);
4942
4942
  const parameters = await fileBlob(options.parametersFile);
4943
4943
  const inferredName = options.name || (options.templateFile ? path3.basename(options.templateFile, path3.extname(options.templateFile)) : void 0);
@@ -5060,7 +5060,7 @@ var registerConnectionsCommand = (program2, deps) => {
5060
5060
  addCommon2(addAuthOptions(connections.command("list").description("List connections"), deps.defaultBaseUrl)).action(async (options, command) => {
5061
5061
  try {
5062
5062
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
5063
- const core = await import("./dist-TBAQ5KOK.js");
5063
+ const core = await import("./dist-AGQQPJUD.js");
5064
5064
  const data = await core.listConnections({
5065
5065
  baseUrl: context.baseUrl,
5066
5066
  authToken: context.token,
@@ -5085,7 +5085,7 @@ var registerConnectionsCommand = (program2, deps) => {
5085
5085
  ).action(async (id, options, command) => {
5086
5086
  try {
5087
5087
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
5088
- const core = await import("./dist-TBAQ5KOK.js");
5088
+ const core = await import("./dist-AGQQPJUD.js");
5089
5089
  const data = await core.getConnection({
5090
5090
  baseUrl: context.baseUrl,
5091
5091
  authToken: context.token,
@@ -5423,7 +5423,7 @@ var checkoutReturnUrl = (context, options) => options.returnTo || billingUrl(con
5423
5423
  var runTopUpCheckout = async (commandName, packId, options, command, deps) => {
5424
5424
  try {
5425
5425
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
5426
- const core = await import("./dist-TBAQ5KOK.js");
5426
+ const core = await import("./dist-AGQQPJUD.js");
5427
5427
  const returnTo = checkoutReturnUrl(context, options);
5428
5428
  const session = await core.createTopUpCheckoutSession({
5429
5429
  baseUrl: context.baseUrl,
@@ -5463,7 +5463,7 @@ var registerBillingCommands = (program2, deps) => {
5463
5463
  ).action(async (options, command) => {
5464
5464
  try {
5465
5465
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
5466
- const core = await import("./dist-TBAQ5KOK.js");
5466
+ const core = await import("./dist-AGQQPJUD.js");
5467
5467
  const range = rangeToDates("30d");
5468
5468
  const [entitlement, usageSummary] = await Promise.all([
5469
5469
  core.getBillingEntitlement({
@@ -5493,7 +5493,7 @@ var registerBillingCommands = (program2, deps) => {
5493
5493
  addCommon3(addAuthOptions(billing.command("summary").description("Show billing summary"), deps.defaultBaseUrl)).action(async (options, command) => {
5494
5494
  try {
5495
5495
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
5496
- const core = await import("./dist-TBAQ5KOK.js");
5496
+ const core = await import("./dist-AGQQPJUD.js");
5497
5497
  const range = rangeToDates("30d");
5498
5498
  const [entitlement, subscriptionStatus, usageSummary] = await Promise.all([
5499
5499
  core.getBillingEntitlement({ baseUrl: context.baseUrl, authToken: context.token }),
@@ -5529,7 +5529,7 @@ var registerBillingCommands = (program2, deps) => {
5529
5529
  addCommon3(addAuthOptions(billing.command("plans").description("Show billing plans"), deps.defaultBaseUrl)).action(async (options, command) => {
5530
5530
  try {
5531
5531
  const context = await resolveAuthContext(options, command, deps);
5532
- const core = await import("./dist-TBAQ5KOK.js");
5532
+ const core = await import("./dist-AGQQPJUD.js");
5533
5533
  const data = await core.getBillingConfig({ baseUrl: context.baseUrl, authToken: context.token });
5534
5534
  const url = billingUrl(context, { ...options, tab: "plans" });
5535
5535
  await write("billing plans", data, options, url);
@@ -5541,7 +5541,7 @@ var registerBillingCommands = (program2, deps) => {
5541
5541
  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) => {
5542
5542
  try {
5543
5543
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
5544
- const core = await import("./dist-TBAQ5KOK.js");
5544
+ const core = await import("./dist-AGQQPJUD.js");
5545
5545
  const range = rangeToDates(options.range);
5546
5546
  const data = await core.getBillingUsageSummary({
5547
5547
  baseUrl: context.baseUrl,
@@ -5564,7 +5564,7 @@ var registerBillingCommands = (program2, deps) => {
5564
5564
  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) => {
5565
5565
  try {
5566
5566
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
5567
- const core = await import("./dist-TBAQ5KOK.js");
5567
+ const core = await import("./dist-AGQQPJUD.js");
5568
5568
  const range = rangeToDates(options.range);
5569
5569
  const data = await core.getBillingUsageLedger({
5570
5570
  baseUrl: context.baseUrl,
@@ -5592,7 +5592,7 @@ var registerBillingCommands = (program2, deps) => {
5592
5592
  addCommon3(addAuthOptions(billing.command(name).description(`Show billing ${name}`), deps.defaultBaseUrl)).option("--limit <n>", "Result limit", "25").action(async (options, command) => {
5593
5593
  try {
5594
5594
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
5595
- const core = await import("./dist-TBAQ5KOK.js");
5595
+ const core = await import("./dist-AGQQPJUD.js");
5596
5596
  const data = await core[getter]({
5597
5597
  baseUrl: context.baseUrl,
5598
5598
  authToken: context.token,
@@ -5610,7 +5610,7 @@ var registerBillingCommands = (program2, deps) => {
5610
5610
  addCommon3(addAuthOptions(topups, deps.defaultBaseUrl)).option("--limit <n>", "Result limit", "25").action(async (options, command) => {
5611
5611
  try {
5612
5612
  const context = requireAuthUser(await resolveAuthContext(options, command, deps));
5613
- const core = await import("./dist-TBAQ5KOK.js");
5613
+ const core = await import("./dist-AGQQPJUD.js");
5614
5614
  const data = await core.getTopUpPacks({
5615
5615
  baseUrl: context.baseUrl,
5616
5616
  authToken: context.token
@@ -8008,7 +8008,7 @@ var reportsFrontendUrl = (config, input) => buildFrontendUrl({
8008
8008
  reportVerbosity: input.reportVerbosity
8009
8009
  });
8010
8010
  var resolveAuth = async (config, options = {}) => {
8011
- const core = await import("./dist-TBAQ5KOK.js");
8011
+ const core = await import("./dist-AGQQPJUD.js");
8012
8012
  core.assertSecureBaseUrl(config.baseUrl);
8013
8013
  let token;
8014
8014
  try {
@@ -8108,7 +8108,7 @@ var assertModelAvailable = async (config, token) => {
8108
8108
  if (!config.model) {
8109
8109
  return;
8110
8110
  }
8111
- const core = await import("./dist-TBAQ5KOK.js");
8111
+ const core = await import("./dist-AGQQPJUD.js");
8112
8112
  try {
8113
8113
  const response = await fetch(
8114
8114
  `${core.normalizeApiBase(config.baseUrl)}/models`,
@@ -8365,7 +8365,7 @@ var buildToolHandlers = (serverOptions) => {
8365
8365
  });
8366
8366
  handlers.set("agent_profiles_list", async (args) => {
8367
8367
  const config = await resolveInvocationConfig(serverOptions, args);
8368
- const core = await import("./dist-TBAQ5KOK.js");
8368
+ const core = await import("./dist-AGQQPJUD.js");
8369
8369
  const data = await listProfilesForDiscovery(core, config.baseUrl);
8370
8370
  return withEnvelope({
8371
8371
  command: "agents list",
@@ -8378,7 +8378,7 @@ var buildToolHandlers = (serverOptions) => {
8378
8378
  throw new Error("profileId is required.");
8379
8379
  }
8380
8380
  const config = await resolveInvocationConfig(serverOptions, args);
8381
- const core = await import("./dist-TBAQ5KOK.js");
8381
+ const core = await import("./dist-AGQQPJUD.js");
8382
8382
  const data = await getProfileForDiscovery(core, config.baseUrl, profileId);
8383
8383
  return withEnvelope({
8384
8384
  command: "agents show",
@@ -9015,7 +9015,7 @@ var buildToolHandlers = (serverOptions) => {
9015
9015
  });
9016
9016
  handlers.set("auth_status", async (args) => {
9017
9017
  const config = await resolveInvocationConfig(serverOptions, args);
9018
- const core = await import("./dist-TBAQ5KOK.js");
9018
+ const core = await import("./dist-AGQQPJUD.js");
9019
9019
  const data = await core.getAuthStatus(config.baseUrl, { validate: true });
9020
9020
  return withEnvelope({
9021
9021
  command: "auth status",
@@ -9024,7 +9024,7 @@ var buildToolHandlers = (serverOptions) => {
9024
9024
  });
9025
9025
  handlers.set("status", async (args) => {
9026
9026
  const config = await resolveInvocationConfig(serverOptions, args);
9027
- const core = await import("./dist-TBAQ5KOK.js");
9027
+ const core = await import("./dist-AGQQPJUD.js");
9028
9028
  const auth = await core.getAuthStatus(config.baseUrl, { validate: true });
9029
9029
  return withEnvelope({
9030
9030
  command: "status",
@@ -9055,7 +9055,7 @@ var buildToolHandlers = (serverOptions) => {
9055
9055
  }
9056
9056
  ];
9057
9057
  try {
9058
- const core = await import("./dist-TBAQ5KOK.js");
9058
+ const core = await import("./dist-AGQQPJUD.js");
9059
9059
  core.assertSecureBaseUrl(config.baseUrl);
9060
9060
  checks.push({
9061
9061
  id: "base-url-secure",
@@ -9575,7 +9575,7 @@ var buildToolHandlers = (serverOptions) => {
9575
9575
  } catch {
9576
9576
  token = config.accessKey;
9577
9577
  }
9578
- const core = await import("./dist-TBAQ5KOK.js");
9578
+ const core = await import("./dist-AGQQPJUD.js");
9579
9579
  const data = await core.getBillingConfig({
9580
9580
  baseUrl: config.baseUrl,
9581
9581
  authToken: token
@@ -10409,7 +10409,7 @@ var registerCapabilitiesCommand = (program2, deps) => {
10409
10409
  warnIfAccessKeyFromCliOption(options, command);
10410
10410
  let data = capabilities;
10411
10411
  if (options.live) {
10412
- const core = await import("./dist-TBAQ5KOK.js");
10412
+ const core = await import("./dist-AGQQPJUD.js");
10413
10413
  const baseUrl = await deps.resolveBaseUrl(options, command);
10414
10414
  const accessKey = options.accessKeyStdin ? await deps.readStdinValue() : options.accessKey;
10415
10415
  const token = await core.getAuthToken({ accessKey, baseUrl });
@@ -10547,7 +10547,7 @@ var writeCredentialOutput = async (input) => {
10547
10547
  };
10548
10548
  var resolveCoreAuth = async (options, command, deps) => {
10549
10549
  const context = await resolveAuthContext(options, command, deps);
10550
- const core = await import("./dist-TBAQ5KOK.js");
10550
+ const core = await import("./dist-AGQQPJUD.js");
10551
10551
  return { ...context, core };
10552
10552
  };
10553
10553
  var parseCapabilities = (value) => value?.split(",").map((item) => item.trim()).filter(Boolean);
@@ -10864,7 +10864,7 @@ var registerAgentsCommand = (program2, deps) => {
10864
10864
  const agents = program2.command("agents").description("CloudEval Agent Profile utilities");
10865
10865
  addAgentOutputOptions(agents.command("list").description("List Agent Profiles"), deps).action(async (options, command) => {
10866
10866
  const baseUrl = await deps.resolveBaseUrl(options, command);
10867
- const core = await import("./dist-TBAQ5KOK.js");
10867
+ const core = await import("./dist-AGQQPJUD.js");
10868
10868
  core.assertSecureBaseUrl(baseUrl);
10869
10869
  const data = await listProfilesForDiscovery2(core, baseUrl);
10870
10870
  await writeProfiles({
@@ -10880,7 +10880,7 @@ var registerAgentsCommand = (program2, deps) => {
10880
10880
  deps
10881
10881
  ).action(async (profileId, options, command) => {
10882
10882
  const baseUrl = await deps.resolveBaseUrl(options, command);
10883
- const core = await import("./dist-TBAQ5KOK.js");
10883
+ const core = await import("./dist-AGQQPJUD.js");
10884
10884
  core.assertSecureBaseUrl(baseUrl);
10885
10885
  const data = await getProfileForDiscovery2(core, baseUrl, profileId);
10886
10886
  await writeProfiles({
@@ -10899,7 +10899,7 @@ var registerAgentsCommand = (program2, deps) => {
10899
10899
  const cliProfile = getActiveConfigProfile(command);
10900
10900
  const cliConfig = await loadCliConfig(cliProfile);
10901
10901
  const auth = await resolveAuthContext(options, command, deps);
10902
- const core = await import("./dist-TBAQ5KOK.js");
10902
+ const core = await import("./dist-AGQQPJUD.js");
10903
10903
  const profileResponse = await core.getAgentProfile({
10904
10904
  baseUrl: auth.baseUrl,
10905
10905
  authToken: auth.token,
@@ -11397,7 +11397,7 @@ var registerDiagnosticsCommands = (program2, deps) => {
11397
11397
  const baseUrl = await deps.resolveBaseUrl(options, command);
11398
11398
  const profile = getActiveConfigProfile(command);
11399
11399
  const config = await loadCliConfig(profile);
11400
- const core = await import("./dist-TBAQ5KOK.js");
11400
+ const core = await import("./dist-AGQQPJUD.js");
11401
11401
  const auth = await core.getAuthStatus(baseUrl, { validate: true });
11402
11402
  if (options.format === "text" || !options.format) {
11403
11403
  process.stdout.write(
@@ -11447,7 +11447,7 @@ var registerDiagnosticsCommands = (program2, deps) => {
11447
11447
  detail: getCliConfigPath(profile)
11448
11448
  });
11449
11449
  try {
11450
- const core = await import("./dist-TBAQ5KOK.js");
11450
+ const core = await import("./dist-AGQQPJUD.js");
11451
11451
  core.assertSecureBaseUrl(baseUrl);
11452
11452
  checks.push({
11453
11453
  id: "base-url-secure",
@@ -11547,7 +11547,7 @@ var resolveToken2 = async (options, deps, baseUrl, command) => {
11547
11547
  return options.accessKey;
11548
11548
  }
11549
11549
  try {
11550
- const core = await import("./dist-TBAQ5KOK.js");
11550
+ const core = await import("./dist-AGQQPJUD.js");
11551
11551
  return await core.getAuthToken({
11552
11552
  baseUrl
11553
11553
  });
@@ -11631,7 +11631,7 @@ var registerModelsCommand = (program2, deps) => {
11631
11631
  let source = "fallback";
11632
11632
  let modelList = fallbackModels;
11633
11633
  try {
11634
- const core = await import("./dist-TBAQ5KOK.js");
11634
+ const core = await import("./dist-AGQQPJUD.js");
11635
11635
  const response = await fetch(`${core.normalizeApiBase(baseUrl)}/models`, {
11636
11636
  headers: {
11637
11637
  Accept: "application/json",
@@ -12803,7 +12803,7 @@ var uninstallCompletionScript = async (shell) => {
12803
12803
  var runInteractiveLoginOnboarding = async (baseUrl, token) => {
12804
12804
  const [{ render }, { Onboarding }] = await Promise.all([
12805
12805
  import("ink"),
12806
- import("./Onboarding-3NZCPBCO.js")
12806
+ import("./Onboarding-4N4WIORR.js")
12807
12807
  ]);
12808
12808
  await new Promise((resolve) => {
12809
12809
  let app;
@@ -13037,7 +13037,7 @@ var resolveBaseUrl = async (options, command) => {
13037
13037
  });
13038
13038
  }
13039
13039
  try {
13040
- const { getAuthStatus } = await import("./dist-TBAQ5KOK.js");
13040
+ const { getAuthStatus } = await import("./dist-AGQQPJUD.js");
13041
13041
  const status = await getAuthStatus();
13042
13042
  const storedBaseUrl = status.baseUrl;
13043
13043
  if (storedBaseUrl && shouldUseStoredBaseUrl(storedBaseUrl)) {
@@ -13108,7 +13108,7 @@ program.command("login").description("Authenticate with Cloudeval").option(
13108
13108
  checkUserStatus,
13109
13109
  ensurePlaygroundProject,
13110
13110
  login
13111
- } = await import("./dist-TBAQ5KOK.js");
13111
+ } = await import("./dist-AGQQPJUD.js");
13112
13112
  assertSecureBaseUrl(options.baseUrl);
13113
13113
  const headlessEnvironment = isHeadlessEnvironment();
13114
13114
  const headlessLogin = options.headless || headlessEnvironment;
@@ -13172,7 +13172,7 @@ program.command("logout").description("Log out and clear stored authentication s
13172
13172
  DEFAULT_BASE_URL
13173
13173
  ).option("--all-devices", "Revoke sessions on all devices", false).action(async (options) => {
13174
13174
  try {
13175
- const { assertSecureBaseUrl, logout } = await import("./dist-TBAQ5KOK.js");
13175
+ const { assertSecureBaseUrl, logout } = await import("./dist-AGQQPJUD.js");
13176
13176
  assertSecureBaseUrl(options.baseUrl);
13177
13177
  const result = await logout({
13178
13178
  baseUrl: options.baseUrl,
@@ -13196,7 +13196,7 @@ authCommand.command("status").description("Show current authentication status").
13196
13196
  DEFAULT_BASE_URL
13197
13197
  ).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) => {
13198
13198
  try {
13199
- const { assertSecureBaseUrl, getAuthStatus } = await import("./dist-TBAQ5KOK.js");
13199
+ const { assertSecureBaseUrl, getAuthStatus } = await import("./dist-AGQQPJUD.js");
13200
13200
  const effectiveBaseUrl = await resolveBaseUrl(options, command);
13201
13201
  assertSecureBaseUrl(effectiveBaseUrl);
13202
13202
  const status = await getAuthStatus(effectiveBaseUrl, { validate: true });
@@ -13379,10 +13379,10 @@ program.command("tui").description("Open the CloudEval Terminal UI").option(
13379
13379
  "Access key for automation",
13380
13380
  process.env.CLOUDEVAL_ACCESS_KEY
13381
13381
  ).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) => {
13382
- const { assertSecureBaseUrl } = await import("./dist-TBAQ5KOK.js");
13382
+ const { assertSecureBaseUrl } = await import("./dist-AGQQPJUD.js");
13383
13383
  const [{ render }, { App }] = await Promise.all([
13384
13384
  import("ink"),
13385
- import("./App-7N7BOWNP.js")
13385
+ import("./App-77Q76GI5.js")
13386
13386
  ]);
13387
13387
  const baseUrl = await resolveBaseUrl(options, command);
13388
13388
  assertSecureBaseUrl(baseUrl);
@@ -13396,7 +13396,7 @@ program.command("tui").description("Open the CloudEval Terminal UI").option(
13396
13396
  warnIfAccessKeyFromCliOption(options, command);
13397
13397
  if (options.tab && options.tab !== "chat") {
13398
13398
  process.stderr.write(
13399
- `Opening Terminal UI with requested tab '${options.tab}'. Rich non-chat tabs load real API data where supported.
13399
+ `Opening Terminal UI with requested tab '${options.tab}'. Workspace tabs load account data when available.
13400
13400
  `
13401
13401
  );
13402
13402
  }
@@ -13431,10 +13431,10 @@ program.command("chat").description("Start an interactive chat session").option(
13431
13431
  "Access key for automation",
13432
13432
  process.env.CLOUDEVAL_ACCESS_KEY
13433
13433
  ).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) => {
13434
- const { assertSecureBaseUrl } = await import("./dist-TBAQ5KOK.js");
13434
+ const { assertSecureBaseUrl } = await import("./dist-AGQQPJUD.js");
13435
13435
  const [{ render }, { App }] = await Promise.all([
13436
13436
  import("ink"),
13437
- import("./App-7N7BOWNP.js")
13437
+ import("./App-77Q76GI5.js")
13438
13438
  ]);
13439
13439
  const baseUrl = await resolveBaseUrl(options, command);
13440
13440
  assertSecureBaseUrl(baseUrl);
@@ -13503,7 +13503,7 @@ program.command("ask").alias("agent").description("Ask a single question or run
13503
13503
  const question = Array.isArray(questionParts) ? questionParts.join(" ") : String(questionParts);
13504
13504
  const commandName = command.parent?.args?.[0] === "agent" ? "agent" : "ask";
13505
13505
  const selectedMode = commandName === "agent" ? "agent" : "ask";
13506
- const { assertSecureBaseUrl } = await import("./dist-TBAQ5KOK.js");
13506
+ const { assertSecureBaseUrl } = await import("./dist-AGQQPJUD.js");
13507
13507
  const baseUrl = await resolveBaseUrl(options, command);
13508
13508
  assertSecureBaseUrl(baseUrl);
13509
13509
  const selectedProfile = getActiveConfigProfile(command);
@@ -13544,7 +13544,7 @@ program.command("ask").alias("agent").description("Ask a single question or run
13544
13544
  const fs13 = await import("fs");
13545
13545
  const fsPromises = await import("fs/promises");
13546
13546
  const { randomUUID: randomUUID5 } = await import("crypto");
13547
- const core = await import("./dist-TBAQ5KOK.js");
13547
+ const core = await import("./dist-AGQQPJUD.js");
13548
13548
  const {
13549
13549
  streamChat,
13550
13550
  reduceChunk,
@@ -13602,7 +13602,7 @@ program.command("ask").alias("agent").description("Ask a single question or run
13602
13602
  console.error("Authentication required. Starting login process...\n");
13603
13603
  }
13604
13604
  try {
13605
- const { login } = await import("./dist-TBAQ5KOK.js");
13605
+ const { login } = await import("./dist-AGQQPJUD.js");
13606
13606
  verboseLog("Calling interactive login", { baseUrl });
13607
13607
  token = await login(baseUrl, {
13608
13608
  headless: isHeadlessEnvironment()
@@ -14191,7 +14191,7 @@ Error: ${errorMsg}
14191
14191
  program.command("banner").description("Preview the startup banner and terminal capabilities").action(async () => {
14192
14192
  const { render } = await import("ink");
14193
14193
  const BannerPreview = React.lazy(async () => ({
14194
- default: (await import("./Banner-FTZBMWDO.js")).Banner
14194
+ default: (await import("./Banner-43UE3WHI.js")).Banner
14195
14195
  }));
14196
14196
  render(
14197
14197
  /* @__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-2D4BE3OS.js";
75
+ } from "./chunk-LDDHLUZH.js";
76
76
  export {
77
77
  AgentProfileRequestError,
78
78
  BUNDLED_AGENT_PROFILES,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ganakailabs/cloudeval-cli",
3
- "version": "0.20.3",
3
+ "version": "0.21.1",
4
4
  "license": "LicenseRef-CloudEval-CLI",
5
5
  "type": "module",
6
6
  "description": "CloudEval CLI for cloud architecture, cost, report, automation, and MCP workflows.",
@@ -63,7 +63,7 @@
63
63
  "run": "node dist/cli.js",
64
64
  "dev": "tsx src/cli.tsx",
65
65
  "lint": "pnpm -C ../shared build && pnpm -C ../core build && tsc --noEmit -p tsconfig.json",
66
- "test": "pnpm -C ../shared build && pnpm -C ../core build && tsx --test src/askProgress.test.ts src/hitlPrompt.test.ts src/baseUrl.test.ts src/frontendLinks.test.ts src/outputFormatter.test.ts src/localHooks.test.ts src/projectDiagramImage.test.ts src/loginOnboardingMode.test.ts src/runtime/prepareInk.test.ts src/ui/animationPolicy.test.ts src/ui/components/Banner.test.ts src/ui/components/InputBox.test.ts src/ui/components/Transcript.test.ts src/ui/billingSummary.test.ts src/ui/inputSanitizer.test.ts src/ui/inputViewport.test.ts src/ui/keyBindings.test.ts src/ui/layout.test.ts src/ui/scrollBehavior.test.ts src/ui/promptSuggestions.test.ts src/ui/commandCompletion.test.ts src/ui/interactionModel.test.ts src/ui/sessionThreads.test.ts src/ui/userDisplayName.test.ts src/ui/workspaceTabs.test.ts src/ui/workspaceDataStore.test.ts src/ui/overviewDashboard.test.ts src/ui/reportsDashboard.test.ts src/completionEngine.test.ts src/shellCompletion.test.ts src/updateCommand.test.ts src/uninstallCommand.test.ts src/mcpSetupCommand.test.ts src/mcpCommand.test.ts src/sessionsStore.test.ts src/recipes/catalog.test.ts src/skills/catalog.test.ts src/reports/reportRender.test.ts src/reports/reportCommand.test.ts",
66
+ "test": "pnpm -C ../shared build && pnpm -C ../core build && tsx --test src/askProgress.test.ts src/hitlPrompt.test.ts src/baseUrl.test.ts src/frontendLinks.test.ts src/outputFormatter.test.ts src/localHooks.test.ts src/projectDiagramImage.test.ts src/loginOnboardingMode.test.ts src/runtime/prepareInk.test.ts src/ui/animationPolicy.test.ts src/ui/appHeaderDetails.test.ts src/ui/components/Banner.test.ts src/ui/components/InputBox.test.ts src/ui/components/Spinner.test.ts src/ui/components/Transcript.test.ts src/ui/artifactChips.test.ts src/ui/citationContent.test.ts src/ui/chatResponseActions.test.ts src/ui/billingSummary.test.ts src/ui/workspaceEntityDetails.test.ts src/ui/inputSanitizer.test.ts src/ui/inputViewport.test.ts src/ui/keyBindings.test.ts src/ui/layout.test.ts src/ui/scrollBehavior.test.ts src/ui/promptSuggestions.test.ts src/ui/commandCompletion.test.ts src/ui/interactionModel.test.ts src/ui/sessionThreads.test.ts src/ui/userDisplayName.test.ts src/ui/workspaceSelection.test.ts src/ui/workspaceTabs.test.ts src/ui/workspaceDataStore.test.ts src/ui/overviewDashboard.test.ts src/ui/reportsDashboard.test.ts src/completionEngine.test.ts src/shellCompletion.test.ts src/updateCommand.test.ts src/uninstallCommand.test.ts src/mcpSetupCommand.test.ts src/mcpCommand.test.ts src/sessionsStore.test.ts src/recipes/catalog.test.ts src/skills/catalog.test.ts src/reports/reportRender.test.ts src/reports/reportCommand.test.ts",
67
67
  "test:cli:noninteractive": "pnpm -C ../shared build && pnpm -C ../core build && tsx --test src/nonInteractiveCli.test.ts",
68
68
  "test:cli:noninteractive:packaged": "pnpm build:executable:current && CLOUDEVAL_CLI_BIN=./dist/bin/cloudeval pnpm test:cli:noninteractive",
69
69
  "test:cli:noninteractive:live": "pnpm build:executable:current && CLOUDEVAL_CLI_BIN=./dist/bin/cloudeval tsx --test src/liveNonInteractiveCli.test.ts",
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.20.3",
17
+ "versionInfo": "0.21.1",
18
18
  "downloadLocation": "https://github.com/ganakailabs/cloudeval-cli",
19
19
  "filesAnalyzed": false,
20
20
  "licenseConcluded": "LicenseRef-CloudEval-CLI",
@@ -1,8 +0,0 @@
1
- import {
2
- Onboarding
3
- } from "./chunk-2GTSKMHA.js";
4
- import "./chunk-2D4BE3OS.js";
5
- import "./chunk-QKZCKI55.js";
6
- export {
7
- Onboarding
8
- };
@@ -1,45 +0,0 @@
1
- // src/ui/theme.ts
2
- var hasColor = () => !process.env.NO_COLOR && process.env.TERM !== "dumb";
3
- var terminalBackground = () => {
4
- const colorFgBg = process.env.COLORFGBG;
5
- if (!colorFgBg) {
6
- return "unknown";
7
- }
8
- const bg = Number(colorFgBg.split(";").pop());
9
- if (!Number.isFinite(bg)) {
10
- return "unknown";
11
- }
12
- return bg >= 7 && bg <= 15 ? "light" : "dark";
13
- };
14
- var isLightTerminal = () => terminalBackground() === "light";
15
- var color = (dark, light) => {
16
- if (!hasColor()) {
17
- return void 0;
18
- }
19
- return isLightTerminal() ? light : dark;
20
- };
21
- var terminalTheme = {
22
- brand: color("cyanBright", "blue"),
23
- accent: color("magentaBright", "magenta"),
24
- focus: color("cyanBright", "blue"),
25
- selected: color("greenBright", "green"),
26
- success: color("greenBright", "green"),
27
- muted: color("gray", "gray"),
28
- /** Inline ghost / autosuggest — distinct from user text and from gray-muted UI chrome */
29
- inputGhost: color("magenta", "blue"),
30
- warning: color("yellowBright", "magenta"),
31
- danger: color("redBright", "red"),
32
- cursor: color("cyanBright", "blue")
33
- };
34
- var shouldUseColor = hasColor;
35
- var raisedButtonStyle = {
36
- border: "round",
37
- activeMarker: "\u25CF",
38
- inactiveMarker: "\u25CB"
39
- };
40
-
41
- export {
42
- terminalTheme,
43
- shouldUseColor,
44
- raisedButtonStyle
45
- };