@ganakailabs/cloudeval-cli 0.19.3 → 0.19.4

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.
@@ -2,6 +2,7 @@ import {
2
2
  AgentProfileRequestError,
3
3
  BUNDLED_AGENT_PROFILES,
4
4
  SECRET_REDACTION,
5
+ StreamRequestError,
5
6
  assertSecureBaseUrl,
6
7
  buildQuickProjectPayload,
7
8
  checkUserStatus,
@@ -23,6 +24,7 @@ import {
23
24
  getBillingConfig,
24
25
  getBillingEntitlement,
25
26
  getBillingNotifications,
27
+ getBillingUsageCreditsUsed,
26
28
  getBillingUsageLedger,
27
29
  getBillingUsageSummary,
28
30
  getBundledAgentProfile,
@@ -51,6 +53,7 @@ import {
51
53
  isAgentProfileAuthRequiredError,
52
54
  isAgentProfileDiscoveryFallbackError,
53
55
  isAuthLookupFailure,
56
+ isExpiredDeviceTokenStreamError,
54
57
  isSensitiveSecretKey,
55
58
  listAgentProfiles,
56
59
  listConnections,
@@ -69,11 +72,12 @@ import {
69
72
  revokeCredential,
70
73
  runReports,
71
74
  streamChat
72
- } from "./chunk-4QIKW5TJ.js";
75
+ } from "./chunk-2D4BE3OS.js";
73
76
  export {
74
77
  AgentProfileRequestError,
75
78
  BUNDLED_AGENT_PROFILES,
76
79
  SECRET_REDACTION,
80
+ StreamRequestError,
77
81
  assertSecureBaseUrl,
78
82
  buildQuickProjectPayload,
79
83
  checkUserStatus,
@@ -95,6 +99,7 @@ export {
95
99
  getBillingConfig,
96
100
  getBillingEntitlement,
97
101
  getBillingNotifications,
102
+ getBillingUsageCreditsUsed,
98
103
  getBillingUsageLedger,
99
104
  getBillingUsageSummary,
100
105
  getBundledAgentProfile,
@@ -123,6 +128,7 @@ export {
123
128
  isAgentProfileAuthRequiredError,
124
129
  isAgentProfileDiscoveryFallbackError,
125
130
  isAuthLookupFailure,
131
+ isExpiredDeviceTokenStreamError,
126
132
  isSensitiveSecretKey,
127
133
  listAgentProfiles,
128
134
  listConnections,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ganakailabs/cloudeval-cli",
3
- "version": "0.19.3",
3
+ "version": "0.19.4",
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/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/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/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",
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.19.3",
17
+ "versionInfo": "0.19.4",
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-3DVPEIVB.js";
4
- import "./chunk-4QIKW5TJ.js";
5
- import "./chunk-UOCT7M4J.js";
6
- export {
7
- Onboarding
8
- };
@@ -1,174 +0,0 @@
1
- // src/frontendLinks.ts
2
- var trimTrailingSlash = (value) => value.replace(/\/+$/, "");
3
- var resolveFrontendBaseUrl = ({
4
- frontendUrl,
5
- apiBaseUrl,
6
- env = process.env
7
- } = {}) => {
8
- const explicit = frontendUrl?.trim() || env.CLOUDEVAL_FRONTEND_URL || env.CLOUDEVAL_WEB_URL;
9
- if (explicit) {
10
- return trimTrailingSlash(explicit);
11
- }
12
- try {
13
- const api = apiBaseUrl ? new URL(apiBaseUrl) : void 0;
14
- if (api && ["localhost", "127.0.0.1", "::1"].includes(api.hostname)) {
15
- return "http://localhost:3000";
16
- }
17
- } catch {
18
- }
19
- return "https://cloudeval.ai";
20
- };
21
- var appUrl = (baseUrl, path) => new URL(
22
- `/app${path.startsWith("/") ? path : `/${path}`}`,
23
- `${trimTrailingSlash(baseUrl)}/`
24
- );
25
- var setParam = (url, key, value) => {
26
- if (value !== void 0 && value !== "" && value !== false) {
27
- url.searchParams.set(key, String(value));
28
- }
29
- };
30
- var setArrayParam = (url, key, value) => {
31
- if (!value) {
32
- return;
33
- }
34
- url.searchParams.set(key, Array.isArray(value) ? value.join(",") : value);
35
- };
36
- var buildFrontendUrl = (options) => {
37
- let url;
38
- switch (options.target) {
39
- case "overview":
40
- url = appUrl(options.baseUrl, "/overview");
41
- break;
42
- case "chat":
43
- url = appUrl(options.baseUrl, "/chat");
44
- setParam(url, "threadId", options.threadId);
45
- break;
46
- case "projects":
47
- url = appUrl(options.baseUrl, "/projects");
48
- if (options.quick) {
49
- setParam(url, "dialog", "quick");
50
- setParam(url, "template_url", options.templateUrl);
51
- setParam(url, "name", options.name);
52
- setParam(url, "description", options.description);
53
- setParam(url, "provider", options.provider);
54
- setParam(url, "auto_submit", options.autoSubmit ? "true" : void 0);
55
- }
56
- break;
57
- case "project":
58
- if (!options.projectId) {
59
- throw new Error("projectId is required for project frontend links.");
60
- }
61
- url = appUrl(
62
- options.baseUrl,
63
- `/projects/${encodeURIComponent(options.projectId)}`
64
- );
65
- setParam(url, "view", options.view);
66
- setParam(url, "layout", options.layout);
67
- setArrayParam(url, "node", options.node);
68
- setParam(url, "resource", options.resource);
69
- setParam(url, "tab", options.tab);
70
- setParam(url, "file", options.file);
71
- setArrayParam(url, "files", options.files);
72
- setParam(url, "cursor", options.cursor);
73
- setParam(url, "selection", options.selection);
74
- setParam(
75
- url,
76
- "workspaceFocus",
77
- options.workspaceFocus ? "true" : void 0
78
- );
79
- setParam(url, "mode", options.presentation ? "presentation" : void 0);
80
- break;
81
- case "connections":
82
- url = appUrl(options.baseUrl, "/connections");
83
- setParam(url, "dialog", options.dialog);
84
- break;
85
- case "connection":
86
- if (!options.connectionId) {
87
- throw new Error(
88
- "connectionId is required for connection frontend links."
89
- );
90
- }
91
- url = appUrl(
92
- options.baseUrl,
93
- `/connections/${encodeURIComponent(options.connectionId)}`
94
- );
95
- break;
96
- case "reports":
97
- url = options.projectId ? appUrl(
98
- options.baseUrl,
99
- `/reports/${encodeURIComponent(options.projectId)}`
100
- ) : appUrl(options.baseUrl, "/reports");
101
- setParam(url, "tab", options.tab);
102
- setParam(url, "reportType", options.reportType);
103
- setParam(url, "timeRange", options.timeRange);
104
- setParam(url, "persona", options.persona);
105
- setParam(url, "cadence", options.cadence);
106
- setParam(url, "issuesQuery", options.issuesQuery);
107
- setParam(
108
- url,
109
- "issuesFullscreen",
110
- options.issuesFullscreen ? "1" : void 0
111
- );
112
- setParam(url, "issuesView", options.issuesView);
113
- setParam(url, "downloadPdf", options.downloadPdf ? "1" : void 0);
114
- setParam(url, "pdfVerbosity", options.pdfVerbosity);
115
- setParam(url, "downloadReport", options.downloadReport);
116
- setParam(url, "reportVerbosity", options.reportVerbosity);
117
- break;
118
- case "billing":
119
- url = appUrl(options.baseUrl, "/subscription");
120
- setParam(url, "tab", options.tab);
121
- break;
122
- default:
123
- throw new Error(
124
- `Unsupported frontend target '${String(options.target)}'.`
125
- );
126
- }
127
- return url.toString();
128
- };
129
- var openExternalUrl = async (url) => {
130
- const { spawn } = await import("child_process");
131
- const platform = process.platform;
132
- const command = platform === "darwin" ? "open" : platform === "win32" ? "cmd" : "xdg-open";
133
- const args = platform === "win32" ? ["/c", "start", "", url] : [url];
134
- const child = spawn(command, args, {
135
- detached: true,
136
- stdio: "ignore"
137
- });
138
- child.unref();
139
- };
140
-
141
- // src/ui/userDisplayName.ts
142
- var toTitleCase = (value) => {
143
- const normalized = value.trim();
144
- if (!normalized) {
145
- return "";
146
- }
147
- return normalized.charAt(0).toUpperCase() + normalized.slice(1).toLowerCase();
148
- };
149
- var firstToken = (value) => {
150
- const token = value?.trim().split(/\s+/)[0]?.replace(/^[^\p{L}]+|[^\p{L}]+$/gu, "");
151
- return token ? toTitleCase(token) : void 0;
152
- };
153
- var firstNameFromEmail = (email) => {
154
- const localPart = email?.split("@")[0];
155
- if (!localPart) {
156
- return void 0;
157
- }
158
- const token = localPart.split(/[._-]+/).find((part) => /[a-z]/i.test(part))?.replace(/\d+/g, "");
159
- return token ? toTitleCase(token) : void 0;
160
- };
161
- var getFirstNameForDisplay = (user, fallback = "You") => {
162
- const fromName = firstToken(user?.full_name ?? user?.fullName ?? user?.name);
163
- if (fromName) {
164
- return fromName;
165
- }
166
- return firstNameFromEmail(user?.email) ?? fallback;
167
- };
168
-
169
- export {
170
- resolveFrontendBaseUrl,
171
- buildFrontendUrl,
172
- openExternalUrl,
173
- getFirstNameForDisplay
174
- };