@elaraai/e3-cloud-cli 0.0.0-stage → 1.0.90

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.
Files changed (71) hide show
  1. package/LICENSE.md +54 -0
  2. package/README.md +433 -2
  3. package/dist/src/app-source.d.ts +16 -0
  4. package/dist/src/app-source.d.ts.map +1 -0
  5. package/dist/src/app-source.js +112 -0
  6. package/dist/src/app-source.js.map +1 -0
  7. package/dist/src/cli.d.ts +7 -0
  8. package/dist/src/cli.d.ts.map +1 -0
  9. package/dist/src/cli.js +472 -0
  10. package/dist/src/cli.js.map +1 -0
  11. package/dist/src/commands/app.d.ts +28 -0
  12. package/dist/src/commands/app.d.ts.map +1 -0
  13. package/dist/src/commands/app.js +286 -0
  14. package/dist/src/commands/app.js.map +1 -0
  15. package/dist/src/commands/compute.d.ts +16 -0
  16. package/dist/src/commands/compute.d.ts.map +1 -0
  17. package/dist/src/commands/compute.js +110 -0
  18. package/dist/src/commands/compute.js.map +1 -0
  19. package/dist/src/commands/feedback.d.ts +27 -0
  20. package/dist/src/commands/feedback.d.ts.map +1 -0
  21. package/dist/src/commands/feedback.js +197 -0
  22. package/dist/src/commands/feedback.js.map +1 -0
  23. package/dist/src/commands/records.d.ts +42 -0
  24. package/dist/src/commands/records.d.ts.map +1 -0
  25. package/dist/src/commands/records.js +301 -0
  26. package/dist/src/commands/records.js.map +1 -0
  27. package/dist/src/commands/release.d.ts +39 -0
  28. package/dist/src/commands/release.d.ts.map +1 -0
  29. package/dist/src/commands/release.js +219 -0
  30. package/dist/src/commands/release.js.map +1 -0
  31. package/dist/src/commands/role.d.ts +24 -0
  32. package/dist/src/commands/role.d.ts.map +1 -0
  33. package/dist/src/commands/role.js +94 -0
  34. package/dist/src/commands/role.js.map +1 -0
  35. package/dist/src/commands/schedule.d.ts +18 -0
  36. package/dist/src/commands/schedule.d.ts.map +1 -0
  37. package/dist/src/commands/schedule.js +128 -0
  38. package/dist/src/commands/schedule.js.map +1 -0
  39. package/dist/src/commands/secrets.d.ts +15 -0
  40. package/dist/src/commands/secrets.d.ts.map +1 -0
  41. package/dist/src/commands/secrets.js +82 -0
  42. package/dist/src/commands/secrets.js.map +1 -0
  43. package/dist/src/commands/staging.d.ts +36 -0
  44. package/dist/src/commands/staging.d.ts.map +1 -0
  45. package/dist/src/commands/staging.js +98 -0
  46. package/dist/src/commands/staging.js.map +1 -0
  47. package/dist/src/commands/timeout.d.ts +16 -0
  48. package/dist/src/commands/timeout.d.ts.map +1 -0
  49. package/dist/src/commands/timeout.js +124 -0
  50. package/dist/src/commands/timeout.js.map +1 -0
  51. package/dist/src/commands/user-settings.d.ts +15 -0
  52. package/dist/src/commands/user-settings.d.ts.map +1 -0
  53. package/dist/src/commands/user-settings.js +74 -0
  54. package/dist/src/commands/user-settings.js.map +1 -0
  55. package/dist/src/commands/user.d.ts +26 -0
  56. package/dist/src/commands/user.d.ts.map +1 -0
  57. package/dist/src/commands/user.js +206 -0
  58. package/dist/src/commands/user.js.map +1 -0
  59. package/dist/src/commands/whoami.d.ts +6 -0
  60. package/dist/src/commands/whoami.d.ts.map +1 -0
  61. package/dist/src/commands/whoami.js +38 -0
  62. package/dist/src/commands/whoami.js.map +1 -0
  63. package/dist/src/credentials.d.ts +100 -0
  64. package/dist/src/credentials.d.ts.map +1 -0
  65. package/dist/src/credentials.js +164 -0
  66. package/dist/src/credentials.js.map +1 -0
  67. package/dist/src/utils.d.ts +38 -0
  68. package/dist/src/utils.d.ts.map +1 -0
  69. package/dist/src/utils.js +73 -0
  70. package/dist/src/utils.js.map +1 -0
  71. package/package.json +32 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../src/commands/user.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ export declare function whoamiCommand(server?: string): Promise<void>;
6
+ //# sourceMappingURL=whoami.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,wBAAsB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BlE"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * whoami command - show current user identity and admin status.
7
+ */
8
+ import { whoami } from '@elaraai/e3-cloud-client';
9
+ import { getValidToken, listCredentials, normalizeServerUrl } from '../credentials.js';
10
+ import { formatError, exitError } from '../utils.js';
11
+ export async function whoamiCommand(server) {
12
+ try {
13
+ // If no server specified, use first stored credential
14
+ let serverUrl = server;
15
+ if (!serverUrl) {
16
+ const creds = listCredentials();
17
+ if (creds.length === 0) {
18
+ exitError('No stored credentials. Run: e3 auth login <server>');
19
+ }
20
+ serverUrl = creds[0].server;
21
+ }
22
+ serverUrl = normalizeServerUrl(serverUrl);
23
+ const token = await getValidToken(serverUrl);
24
+ const me = await whoami(serverUrl, { token });
25
+ console.log(`sub: ${me.sub}`);
26
+ if (me.email.value !== undefined) {
27
+ console.log(`email: ${me.email.value}`);
28
+ }
29
+ if (me.name.value !== undefined) {
30
+ console.log(`name: ${me.name.value}`);
31
+ }
32
+ console.log(`admin: ${me.isAdmin}`);
33
+ }
34
+ catch (err) {
35
+ exitError(formatError(err));
36
+ }
37
+ }
38
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAe;IACjD,IAAI,CAAC;QACH,sDAAsD;QACtD,IAAI,SAAS,GAAG,MAAM,CAAC;QACvB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,SAAS,CAAC,oDAAoD,CAAC,CAAC;YAClE,CAAC;YACD,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9B,CAAC;QACD,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAE1C,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAE9C,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Single credential entry for a server.
7
+ */
8
+ export interface CredentialEntry {
9
+ /** JWT access token */
10
+ accessToken: string;
11
+ /** JWT refresh token */
12
+ refreshToken: string;
13
+ /** Access token expiration (ISO 8601) */
14
+ expiresAt: string;
15
+ }
16
+ /**
17
+ * Credentials file structure.
18
+ */
19
+ export interface CredentialsFile {
20
+ /** File format version */
21
+ version: 1;
22
+ /** Credentials keyed by server URL (normalized, no trailing slash) */
23
+ credentials: Record<string, CredentialEntry>;
24
+ }
25
+ /**
26
+ * OIDC Discovery document.
27
+ */
28
+ export interface OidcDiscovery {
29
+ issuer: string;
30
+ device_authorization_endpoint: string;
31
+ token_endpoint: string;
32
+ jwks_uri: string;
33
+ }
34
+ /**
35
+ * Token response from OAuth2 token endpoint.
36
+ */
37
+ export interface TokenResponse {
38
+ access_token: string;
39
+ refresh_token: string;
40
+ token_type: string;
41
+ expires_in: number;
42
+ }
43
+ /**
44
+ * Token error response.
45
+ */
46
+ export interface TokenErrorResponse {
47
+ error: string;
48
+ error_description?: string;
49
+ }
50
+ /**
51
+ * Normalize server URL (remove trailing slash).
52
+ */
53
+ export declare function normalizeServerUrl(url: string): string;
54
+ /**
55
+ * Load credentials file.
56
+ */
57
+ export declare function loadCredentials(): CredentialsFile;
58
+ /**
59
+ * Save credentials file.
60
+ */
61
+ export declare function saveCredentials(file: CredentialsFile): void;
62
+ /**
63
+ * Get credential for a server.
64
+ */
65
+ export declare function getCredential(serverUrl: string): CredentialEntry | null;
66
+ /**
67
+ * Set credential for a server.
68
+ */
69
+ export declare function setCredential(serverUrl: string, entry: CredentialEntry): void;
70
+ /**
71
+ * Remove credential for a server.
72
+ */
73
+ export declare function removeCredential(serverUrl: string): boolean;
74
+ /**
75
+ * List all saved credentials.
76
+ */
77
+ export declare function listCredentials(): Array<{
78
+ server: string;
79
+ expiresAt: string;
80
+ }>;
81
+ /**
82
+ * Check if a token expiration time has passed.
83
+ */
84
+ export declare function isExpired(expiresAt: string): boolean;
85
+ /**
86
+ * Fetch OIDC discovery document.
87
+ */
88
+ export declare function fetchDiscovery(serverUrl: string): Promise<OidcDiscovery>;
89
+ /**
90
+ * Refresh an access token using a refresh token.
91
+ */
92
+ export declare function refreshAccessToken(serverUrl: string, refreshToken: string): Promise<TokenResponse>;
93
+ /**
94
+ * Get a valid access token for a server.
95
+ *
96
+ * If the current token is expired, attempts to refresh it.
97
+ * Throws if not logged in or refresh fails.
98
+ */
99
+ export declare function getValidToken(serverUrl: string): Promise<string>;
100
+ //# sourceMappingURL=credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/credentials.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,6BAA6B,EAAE,MAAM,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAUD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,eAAe,CAOjD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAU3D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAGvE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CAI7E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAS3D;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAM9E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAO9E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,CAAC,CAkBxB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BtE"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Credential storage for the e3-cloud CLI.
7
+ *
8
+ * Shares access and refresh tokens with e3 CLI
9
+ * in ~/.e3/credentials.json.
10
+ *
11
+ * This file is adapted from e3-cli's credentials.ts.
12
+ */
13
+ import * as fs from 'node:fs';
14
+ import * as path from 'node:path';
15
+ import * as os from 'node:os';
16
+ /**
17
+ * Get path to credentials file.
18
+ * Uses E3_CREDENTIALS_PATH env var if set, otherwise ~/.e3/credentials.json.
19
+ */
20
+ function getCredentialsPath() {
21
+ return process.env.E3_CREDENTIALS_PATH ?? path.join(os.homedir(), '.e3', 'credentials.json');
22
+ }
23
+ /**
24
+ * Normalize server URL (remove trailing slash).
25
+ */
26
+ export function normalizeServerUrl(url) {
27
+ return url.replace(/\/+$/, '');
28
+ }
29
+ /**
30
+ * Load credentials file.
31
+ */
32
+ export function loadCredentials() {
33
+ try {
34
+ const content = fs.readFileSync(getCredentialsPath(), 'utf8');
35
+ return JSON.parse(content);
36
+ }
37
+ catch {
38
+ return { version: 1, credentials: {} };
39
+ }
40
+ }
41
+ /**
42
+ * Save credentials file.
43
+ */
44
+ export function saveCredentials(file) {
45
+ const credPath = getCredentialsPath();
46
+ const dir = path.dirname(credPath);
47
+ if (!fs.existsSync(dir)) {
48
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
49
+ }
50
+ // A file made before keeps its mode, which writeFileSync's applies only to a
51
+ // new one: hold it to its owner before the tokens go in
52
+ if (fs.existsSync(credPath))
53
+ fs.chmodSync(credPath, 0o600);
54
+ fs.writeFileSync(credPath, JSON.stringify(file, null, 2), { mode: 0o600 });
55
+ }
56
+ /**
57
+ * Get credential for a server.
58
+ */
59
+ export function getCredential(serverUrl) {
60
+ const file = loadCredentials();
61
+ return file.credentials[normalizeServerUrl(serverUrl)] ?? null;
62
+ }
63
+ /**
64
+ * Set credential for a server.
65
+ */
66
+ export function setCredential(serverUrl, entry) {
67
+ const file = loadCredentials();
68
+ file.credentials[normalizeServerUrl(serverUrl)] = entry;
69
+ saveCredentials(file);
70
+ }
71
+ /**
72
+ * Remove credential for a server.
73
+ */
74
+ export function removeCredential(serverUrl) {
75
+ const file = loadCredentials();
76
+ const key = normalizeServerUrl(serverUrl);
77
+ if (key in file.credentials) {
78
+ delete file.credentials[key];
79
+ saveCredentials(file);
80
+ return true;
81
+ }
82
+ return false;
83
+ }
84
+ /**
85
+ * List all saved credentials.
86
+ */
87
+ export function listCredentials() {
88
+ const file = loadCredentials();
89
+ return Object.entries(file.credentials).map(([server, entry]) => ({
90
+ server,
91
+ expiresAt: entry.expiresAt,
92
+ }));
93
+ }
94
+ /**
95
+ * Check if a token expiration time has passed.
96
+ */
97
+ export function isExpired(expiresAt) {
98
+ return new Date(expiresAt).getTime() < Date.now();
99
+ }
100
+ /**
101
+ * Fetch OIDC discovery document.
102
+ */
103
+ export async function fetchDiscovery(serverUrl) {
104
+ const url = `${normalizeServerUrl(serverUrl)}/.well-known/openid-configuration`;
105
+ const response = await fetch(url);
106
+ if (!response.ok) {
107
+ throw new Error(`Failed to fetch OIDC discovery: ${response.status}`);
108
+ }
109
+ return response.json();
110
+ }
111
+ /**
112
+ * Refresh an access token using a refresh token.
113
+ */
114
+ export async function refreshAccessToken(serverUrl, refreshToken) {
115
+ const discovery = await fetchDiscovery(serverUrl);
116
+ const response = await fetch(discovery.token_endpoint, {
117
+ method: 'POST',
118
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
119
+ body: new URLSearchParams({
120
+ grant_type: 'refresh_token',
121
+ refresh_token: refreshToken,
122
+ client_id: 'e3-cli',
123
+ }),
124
+ });
125
+ if (!response.ok) {
126
+ const error = await response.json();
127
+ throw new Error(`Token refresh failed: ${error.error} - ${error.error_description ?? ''}`);
128
+ }
129
+ return response.json();
130
+ }
131
+ /**
132
+ * Get a valid access token for a server.
133
+ *
134
+ * If the current token is expired, attempts to refresh it.
135
+ * Throws if not logged in or refresh fails.
136
+ */
137
+ export async function getValidToken(serverUrl) {
138
+ const creds = getCredential(serverUrl);
139
+ if (!creds) {
140
+ throw new Error(`Not logged in to ${serverUrl}. Run: e3 auth login ${serverUrl}`);
141
+ }
142
+ // Return existing token if not expired
143
+ if (!isExpired(creds.expiresAt)) {
144
+ return creds.accessToken;
145
+ }
146
+ // Attempt to refresh
147
+ try {
148
+ const tokens = await refreshAccessToken(serverUrl, creds.refreshToken);
149
+ const newEntry = {
150
+ accessToken: tokens.access_token,
151
+ refreshToken: tokens.refresh_token,
152
+ expiresAt: new Date(Date.now() + tokens.expires_in * 1000).toISOString(),
153
+ };
154
+ setCredential(serverUrl, newEntry);
155
+ return tokens.access_token;
156
+ }
157
+ catch (err) {
158
+ // Refresh failed, need to re-login
159
+ removeCredential(serverUrl);
160
+ const message = err instanceof Error ? err.message : 'unknown error';
161
+ throw new Error(`Session expired and refresh failed: ${message}. Run: e3 auth login ${serverUrl}`);
162
+ }
163
+ }
164
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Utility functions for the e3-cloud CLI.
7
+ */
8
+ /**
9
+ * Parse a repository URL into base URL and repo name.
10
+ * Format: https://server/repos/{repo}
11
+ */
12
+ export declare function parseRepoUrl(url: string): {
13
+ baseUrl: string;
14
+ repo: string;
15
+ };
16
+ /**
17
+ * Parse a workspace URL into base URL, repo name, and workspace name.
18
+ * Format: https://server/repos/{repo}/workspaces/{workspace}
19
+ */
20
+ export declare function parseWorkspaceUrl(url: string): {
21
+ baseUrl: string;
22
+ repo: string;
23
+ workspace: string;
24
+ };
25
+ /**
26
+ * Format error for CLI output.
27
+ */
28
+ export declare function formatError(err: unknown): string;
29
+ /**
30
+ * Exit with error message.
31
+ */
32
+ export declare function exitError(message: string): never;
33
+ /**
34
+ * Interactive yes/no confirmation prompt.
35
+ * Returns true if user answers 'y' or 'yes', false otherwise.
36
+ */
37
+ export declare function confirm(message: string): Promise<boolean>;
38
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAU3E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAWnG;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAKhD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAGhD;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAS/D"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ import { ApiError } from '@elaraai/e3-api-client';
6
+ /**
7
+ * Utility functions for the e3-cloud CLI.
8
+ */
9
+ /**
10
+ * Parse a repository URL into base URL and repo name.
11
+ * Format: https://server/repos/{repo}
12
+ */
13
+ export function parseRepoUrl(url) {
14
+ const parsed = new URL(url);
15
+ const match = parsed.pathname.match(/^\/repos\/([^/]+)/);
16
+ if (!match) {
17
+ throw new Error(`Invalid URL: expected /repos/{repo} in path`);
18
+ }
19
+ return {
20
+ baseUrl: parsed.origin,
21
+ repo: decodeURIComponent(match[1]),
22
+ };
23
+ }
24
+ /**
25
+ * Parse a workspace URL into base URL, repo name, and workspace name.
26
+ * Format: https://server/repos/{repo}/workspaces/{workspace}
27
+ */
28
+ export function parseWorkspaceUrl(url) {
29
+ const parsed = new URL(url);
30
+ const match = parsed.pathname.match(/^\/repos\/([^/]+)\/workspaces\/([^/]+)/);
31
+ if (!match) {
32
+ throw new Error(`Invalid URL: expected /repos/{repo}/workspaces/{workspace} in path`);
33
+ }
34
+ return {
35
+ baseUrl: parsed.origin,
36
+ repo: decodeURIComponent(match[1]),
37
+ workspace: decodeURIComponent(match[2]),
38
+ };
39
+ }
40
+ /**
41
+ * Format error for CLI output.
42
+ */
43
+ export function formatError(err) {
44
+ // A refusal's words are its details: say them, after its type, as the app commands do
45
+ if (err instanceof ApiError && typeof err.details === 'string' && err.details !== '')
46
+ return `${err.code}: ${err.details}`;
47
+ if (err instanceof Error)
48
+ return err.message;
49
+ return String(err);
50
+ }
51
+ /**
52
+ * Exit with error message.
53
+ */
54
+ export function exitError(message) {
55
+ console.error(`Error: ${message}`);
56
+ process.exit(1);
57
+ }
58
+ /**
59
+ * Interactive yes/no confirmation prompt.
60
+ * Returns true if user answers 'y' or 'yes', false otherwise.
61
+ */
62
+ export async function confirm(message) {
63
+ const { createInterface } = await import('node:readline/promises');
64
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
65
+ try {
66
+ const answer = await rl.question(`${message} [y/N] `);
67
+ return answer.trim().toLowerCase() === 'y' || answer.trim().toLowerCase() === 'yes';
68
+ }
69
+ finally {
70
+ rl.close();
71
+ }
72
+ }
73
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD;;GAEG;AAEH;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACnC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC9E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACxF,CAAC;IACD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,SAAS,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,sFAAsF;IACtF,IAAI,GAAG,YAAY,QAAQ,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,KAAK,EAAE;QAAE,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;IAC3H,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IAC7C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe;IAC3C,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACnE,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,OAAO,SAAS,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;IACtF,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,35 @@
1
1
  {
2
2
  "name": "@elaraai/e3-cloud-cli",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "1.0.90",
4
+ "type": "module",
5
+ "description": "CLI for e3 cloud management",
6
+ "license": "BUSL-1.1",
7
+ "bin": {
8
+ "e3-cloud": "./dist/src/cli.js"
9
+ },
10
+ "main": "dist/src/cli.js",
11
+ "dependencies": {
12
+ "@elaraai/e3-api-client": "1.0.90",
13
+ "@elaraai/e3-types": "1.0.90",
14
+ "commander": "^12.0.0",
15
+ "esbuild": "^0.27.2",
16
+ "@elaraai/e3-cloud-client": "1.0.90",
17
+ "@elaraai/e3-cloud-types": "1.0.90",
18
+ "@elaraai/e3-cloud-ui": "1.0.90"
19
+ },
20
+ "peerDependencies": {
21
+ "@elaraai/east": "1.0.90"
22
+ },
23
+ "files": [
24
+ "dist/src",
25
+ "!dist/src/**/*.spec.*",
26
+ "README.md",
27
+ "LICENSE.md"
28
+ ],
29
+ "publishConfig": {
30
+ "access": "public"
31
+ },
32
+ "exports": {
33
+ ".": "./dist/src/cli.js"
34
+ }
6
35
  }