@uluops/cli 0.2.0

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 (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +825 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +93 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/analytics.d.ts +6 -0
  8. package/dist/commands/analytics.d.ts.map +1 -0
  9. package/dist/commands/analytics.js +445 -0
  10. package/dist/commands/analytics.js.map +1 -0
  11. package/dist/commands/auth.d.ts +6 -0
  12. package/dist/commands/auth.d.ts.map +1 -0
  13. package/dist/commands/auth.js +496 -0
  14. package/dist/commands/auth.js.map +1 -0
  15. package/dist/commands/completion.d.ts +7 -0
  16. package/dist/commands/completion.d.ts.map +1 -0
  17. package/dist/commands/completion.js +188 -0
  18. package/dist/commands/completion.js.map +1 -0
  19. package/dist/commands/config.d.ts +6 -0
  20. package/dist/commands/config.d.ts.map +1 -0
  21. package/dist/commands/config.js +279 -0
  22. package/dist/commands/config.js.map +1 -0
  23. package/dist/commands/definitions.d.ts +6 -0
  24. package/dist/commands/definitions.d.ts.map +1 -0
  25. package/dist/commands/definitions.js +229 -0
  26. package/dist/commands/definitions.js.map +1 -0
  27. package/dist/commands/deps.d.ts +6 -0
  28. package/dist/commands/deps.d.ts.map +1 -0
  29. package/dist/commands/deps.js +87 -0
  30. package/dist/commands/deps.js.map +1 -0
  31. package/dist/commands/exec.d.ts +6 -0
  32. package/dist/commands/exec.d.ts.map +1 -0
  33. package/dist/commands/exec.js +334 -0
  34. package/dist/commands/exec.js.map +1 -0
  35. package/dist/commands/executions.d.ts +6 -0
  36. package/dist/commands/executions.d.ts.map +1 -0
  37. package/dist/commands/executions.js +63 -0
  38. package/dist/commands/executions.js.map +1 -0
  39. package/dist/commands/forks.d.ts +6 -0
  40. package/dist/commands/forks.d.ts.map +1 -0
  41. package/dist/commands/forks.js +145 -0
  42. package/dist/commands/forks.js.map +1 -0
  43. package/dist/commands/issues.d.ts +6 -0
  44. package/dist/commands/issues.d.ts.map +1 -0
  45. package/dist/commands/issues.js +458 -0
  46. package/dist/commands/issues.js.map +1 -0
  47. package/dist/commands/models.d.ts +6 -0
  48. package/dist/commands/models.d.ts.map +1 -0
  49. package/dist/commands/models.js +156 -0
  50. package/dist/commands/models.js.map +1 -0
  51. package/dist/commands/projects.d.ts +6 -0
  52. package/dist/commands/projects.d.ts.map +1 -0
  53. package/dist/commands/projects.js +262 -0
  54. package/dist/commands/projects.js.map +1 -0
  55. package/dist/commands/render.d.ts +6 -0
  56. package/dist/commands/render.d.ts.map +1 -0
  57. package/dist/commands/render.js +59 -0
  58. package/dist/commands/render.js.map +1 -0
  59. package/dist/commands/runs.d.ts +6 -0
  60. package/dist/commands/runs.d.ts.map +1 -0
  61. package/dist/commands/runs.js +442 -0
  62. package/dist/commands/runs.js.map +1 -0
  63. package/dist/commands/taxonomy.d.ts +6 -0
  64. package/dist/commands/taxonomy.d.ts.map +1 -0
  65. package/dist/commands/taxonomy.js +45 -0
  66. package/dist/commands/taxonomy.js.map +1 -0
  67. package/dist/commands/translation.d.ts +6 -0
  68. package/dist/commands/translation.d.ts.map +1 -0
  69. package/dist/commands/translation.js +85 -0
  70. package/dist/commands/translation.js.map +1 -0
  71. package/dist/commands/versions.d.ts +6 -0
  72. package/dist/commands/versions.d.ts.map +1 -0
  73. package/dist/commands/versions.js +61 -0
  74. package/dist/commands/versions.js.map +1 -0
  75. package/dist/context.d.ts +85 -0
  76. package/dist/context.d.ts.map +1 -0
  77. package/dist/context.js +386 -0
  78. package/dist/context.js.map +1 -0
  79. package/dist/formatters/core.d.ts +31 -0
  80. package/dist/formatters/core.d.ts.map +1 -0
  81. package/dist/formatters/core.js +176 -0
  82. package/dist/formatters/core.js.map +1 -0
  83. package/dist/formatters/ops.d.ts +43 -0
  84. package/dist/formatters/ops.d.ts.map +1 -0
  85. package/dist/formatters/ops.js +112 -0
  86. package/dist/formatters/ops.js.map +1 -0
  87. package/dist/formatters/registry.d.ts +41 -0
  88. package/dist/formatters/registry.d.ts.map +1 -0
  89. package/dist/formatters/registry.js +167 -0
  90. package/dist/formatters/registry.js.map +1 -0
  91. package/dist/formatters/table.d.ts +18 -0
  92. package/dist/formatters/table.d.ts.map +1 -0
  93. package/dist/formatters/table.js +76 -0
  94. package/dist/formatters/table.js.map +1 -0
  95. package/dist/utils.d.ts +99 -0
  96. package/dist/utils.d.ts.map +1 -0
  97. package/dist/utils.js +201 -0
  98. package/dist/utils.js.map +1 -0
  99. package/package.json +57 -0
@@ -0,0 +1,496 @@
1
+ import { mkdirSync, existsSync, readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ import { OpsClient } from '@uluops/ops-sdk';
5
+ import { createOpsContext, createUnauthenticatedContext, handleOpsError, } from '../context.js';
6
+ import { withSpinner, writeFileAtomic, exitWithError } from '../utils.js';
7
+ import { formatApiKeys } from '../formatters/ops.js';
8
+ /**
9
+ * Config file paths
10
+ */
11
+ const CONFIG_PATHS = {
12
+ GLOBAL_DIR: '.uluops',
13
+ CREDENTIALS: '.uluops/credentials.json',
14
+ };
15
+ /**
16
+ * Save credentials to the credentials file
17
+ */
18
+ function saveCredentials(profile, credentials) {
19
+ const configDir = join(homedir(), CONFIG_PATHS.GLOBAL_DIR);
20
+ const credPath = join(homedir(), CONFIG_PATHS.CREDENTIALS);
21
+ // Create config directory if it doesn't exist
22
+ if (!existsSync(configDir)) {
23
+ mkdirSync(configDir, { recursive: true });
24
+ }
25
+ // Load existing credentials or start fresh
26
+ let stored = {};
27
+ if (existsSync(credPath)) {
28
+ try {
29
+ stored = JSON.parse(readFileSync(credPath, 'utf-8'));
30
+ }
31
+ catch {
32
+ // Start fresh if file is corrupted
33
+ }
34
+ }
35
+ // Update the profile
36
+ stored[profile] = credentials;
37
+ // Write back atomically (write to .tmp then rename)
38
+ writeFileAtomic(credPath, JSON.stringify(stored, null, 2));
39
+ }
40
+ /**
41
+ * Remove credentials for a profile from the credentials file
42
+ */
43
+ function removeCredentials(profile) {
44
+ const credPath = join(homedir(), CONFIG_PATHS.CREDENTIALS);
45
+ if (!existsSync(credPath)) {
46
+ return;
47
+ }
48
+ let stored = {};
49
+ try {
50
+ stored = JSON.parse(readFileSync(credPath, 'utf-8'));
51
+ }
52
+ catch {
53
+ return;
54
+ }
55
+ delete stored[profile];
56
+ writeFileAtomic(credPath, JSON.stringify(stored, null, 2));
57
+ }
58
+ /**
59
+ * Register auth commands
60
+ */
61
+ export function registerAuthCommands(program) {
62
+ const auth = program
63
+ .command('auth')
64
+ .description('Authentication and credential management');
65
+ // ulu auth login
66
+ auth
67
+ .command('login')
68
+ .description('Login with email and password')
69
+ .option('-e, --email <email>', 'Email address')
70
+ .option('-p, --password <password>', 'Password')
71
+ .action(async (options, cmd) => {
72
+ const globalOpts = cmd.optsWithGlobals();
73
+ const ctx = createUnauthenticatedContext(globalOpts);
74
+ if (!options.email || !options.password) {
75
+ console.error('Error: Both --email and --password are required');
76
+ console.error('Usage: ulu auth login --email <email> --password <password>');
77
+ process.exit(1);
78
+ }
79
+ try {
80
+ const result = await withSpinner(ctx, { start: 'Logging in...', success: 'Login successful', failure: 'Login failed' }, async () => {
81
+ const client = new OpsClient({ baseUrl: ctx.baseUrl, debug: ctx.debug, email: options.email, password: options.password });
82
+ return client.login(options.email, options.password);
83
+ });
84
+ // Save credentials
85
+ const profile = globalOpts.profile ?? 'default';
86
+ try {
87
+ saveCredentials(profile, {
88
+ type: 'session',
89
+ sessionToken: result.sessionToken,
90
+ expiresAt: result.expiresAt,
91
+ email: options.email,
92
+ });
93
+ }
94
+ catch (saveError) {
95
+ const msg = saveError instanceof Error ? saveError.message : String(saveError);
96
+ if (msg.includes('EACCES') || msg.includes('permission denied')) {
97
+ exitWithError(`Cannot save credentials: permission denied.\n` +
98
+ 'Check file permissions on ~/.uluops/credentials.json');
99
+ }
100
+ exitWithError(`Failed to save credentials: ${msg}`);
101
+ }
102
+ if (ctx.json) {
103
+ console.log(JSON.stringify({ success: true, profile }, null, 2));
104
+ }
105
+ else {
106
+ console.log(`\nCredentials saved to profile: ${profile}`);
107
+ console.log('You can now use other ulu commands.');
108
+ }
109
+ }
110
+ catch (error) {
111
+ const message = error instanceof Error ? error.message : String(error);
112
+ if (message.includes('No credentials configured') || message.includes('credentials')) {
113
+ console.error('Error: Invalid email or password.');
114
+ console.error('\nHint: Check your email and password, then try again.');
115
+ process.exit(1);
116
+ }
117
+ handleOpsError(error, ctx);
118
+ }
119
+ });
120
+ // ulu auth logout
121
+ auth
122
+ .command('logout')
123
+ .description('Logout and revoke all sessions')
124
+ .action(async (_, cmd) => {
125
+ const globalOpts = cmd.optsWithGlobals();
126
+ const profile = globalOpts.profile ?? 'default';
127
+ const json = globalOpts.json ?? false;
128
+ const debug = globalOpts.debug ?? false;
129
+ // Try to revoke server-side sessions using raw client (avoid createOpsContext
130
+ // which calls process.exit on expired sessions)
131
+ let sessionsRevoked = 0;
132
+ try {
133
+ const credPath = join(homedir(), CONFIG_PATHS.CREDENTIALS);
134
+ if (existsSync(credPath)) {
135
+ const stored = JSON.parse(readFileSync(credPath, 'utf-8'));
136
+ const creds = stored[profile];
137
+ if (creds) {
138
+ const { loadConfig: loadOpsConfig } = await import('@uluops/ops-sdk');
139
+ const config = loadOpsConfig({ baseUrl: globalOpts.baseUrl, profile, debug: globalOpts.debug });
140
+ const client = new OpsClient({
141
+ apiKey: creds.type === 'api_key' ? creds.apiKey : undefined,
142
+ sessionToken: creds.type === 'session' ? creds.sessionToken : undefined,
143
+ baseUrl: config.baseUrl,
144
+ debug,
145
+ });
146
+ const spinnerCtx = { json, debug, quiet: false };
147
+ const result = await withSpinner(spinnerCtx, { start: 'Logging out...', success: 'Logged out', failure: 'Logout failed' }, () => client.logout());
148
+ sessionsRevoked = result.sessionsRevoked;
149
+ }
150
+ }
151
+ }
152
+ catch {
153
+ // If credentials are expired/invalid, that's fine — we still remove local creds
154
+ }
155
+ // Always remove local credentials for this profile
156
+ removeCredentials(profile);
157
+ if (json) {
158
+ console.log(JSON.stringify({ success: true, profile, sessionsRevoked }, null, 2));
159
+ }
160
+ else {
161
+ if (sessionsRevoked > 0) {
162
+ console.log(`Revoked ${sessionsRevoked} server session(s)`);
163
+ }
164
+ console.log(`Removed local credentials for profile "${profile}"`);
165
+ }
166
+ });
167
+ // ulu auth whoami
168
+ auth
169
+ .command('whoami')
170
+ .description('Show current authenticated user')
171
+ .action(async (_, cmd) => {
172
+ const globalOpts = cmd.optsWithGlobals();
173
+ const ctx = createOpsContext(globalOpts);
174
+ try {
175
+ const user = await withSpinner(ctx, { start: 'Fetching user info...', failure: 'Failed to fetch user info' }, () => ctx.client.auth.getMe());
176
+ if (ctx.json) {
177
+ console.log(JSON.stringify(user, null, 2));
178
+ }
179
+ else {
180
+ console.log(`Email: ${user.email}`);
181
+ console.log(`Role: ${user.role}`);
182
+ console.log(`Tier: ${user.subscriptionTier}`);
183
+ if (user.username)
184
+ console.log(`Username: ${user.username}`);
185
+ if (user.name)
186
+ console.log(`Name: ${user.name}`);
187
+ console.log(`Auth Type: ${ctx.client.getAuthType()}`);
188
+ }
189
+ }
190
+ catch (error) {
191
+ handleOpsError(error, ctx);
192
+ }
193
+ });
194
+ // ulu auth register
195
+ auth
196
+ .command('register')
197
+ .description('Register a new account')
198
+ .requiredOption('-e, --email <email>', 'Email address')
199
+ .requiredOption('-p, --password <password>', 'Password')
200
+ .action(async (options, cmd) => {
201
+ const globalOpts = cmd.optsWithGlobals();
202
+ const ctx = createUnauthenticatedContext(globalOpts);
203
+ try {
204
+ const result = await withSpinner(ctx, { start: 'Registering...', success: 'Registration successful', failure: 'Registration failed' }, async () => {
205
+ const client = new OpsClient({ baseUrl: ctx.baseUrl });
206
+ return client.auth.register({ email: options.email, password: options.password });
207
+ });
208
+ if (ctx.json) {
209
+ console.log(JSON.stringify(result, null, 2));
210
+ }
211
+ else {
212
+ console.log(`Account registered for ${options.email}`);
213
+ console.log('You can now login with: ulu auth login');
214
+ }
215
+ }
216
+ catch (error) {
217
+ handleOpsError(error, ctx);
218
+ }
219
+ });
220
+ // ulu auth forgot-password
221
+ auth
222
+ .command('forgot-password')
223
+ .description('Request a password reset email')
224
+ .requiredOption('-e, --email <email>', 'Email address')
225
+ .action(async (options, cmd) => {
226
+ const globalOpts = cmd.optsWithGlobals();
227
+ const ctx = createUnauthenticatedContext(globalOpts);
228
+ try {
229
+ const result = await withSpinner(ctx, { start: 'Sending reset email...', success: 'Reset email sent', failure: 'Failed to send reset email' }, async () => {
230
+ const client = new OpsClient({ baseUrl: ctx.baseUrl });
231
+ return client.auth.forgotPassword(options.email);
232
+ });
233
+ if (ctx.json) {
234
+ console.log(JSON.stringify(result, null, 2));
235
+ }
236
+ else {
237
+ console.log(result.message);
238
+ }
239
+ }
240
+ catch (error) {
241
+ handleOpsError(error, ctx);
242
+ }
243
+ });
244
+ // ulu auth reset-password
245
+ auth
246
+ .command('reset-password')
247
+ .description('Reset password using a token')
248
+ .requiredOption('-t, --token <token>', 'Reset token from email')
249
+ .requiredOption('-p, --password <password>', 'New password')
250
+ .action(async (options, cmd) => {
251
+ const globalOpts = cmd.optsWithGlobals();
252
+ const ctx = createUnauthenticatedContext(globalOpts);
253
+ try {
254
+ const result = await withSpinner(ctx, { start: 'Resetting password...', success: 'Password reset', failure: 'Failed to reset password' }, async () => {
255
+ const client = new OpsClient({ baseUrl: ctx.baseUrl });
256
+ return client.auth.resetPassword({ token: options.token, password: options.password });
257
+ });
258
+ if (ctx.json) {
259
+ console.log(JSON.stringify(result, null, 2));
260
+ }
261
+ else {
262
+ console.log(result.message);
263
+ }
264
+ }
265
+ catch (error) {
266
+ handleOpsError(error, ctx);
267
+ }
268
+ });
269
+ // ulu auth change-password
270
+ auth
271
+ .command('change-password')
272
+ .description('Change your current password')
273
+ .requiredOption('-c, --current <password>', 'Current password')
274
+ .requiredOption('-n, --new-password <password>', 'New password')
275
+ .action(async (options, cmd) => {
276
+ const globalOpts = cmd.optsWithGlobals();
277
+ const ctx = createOpsContext(globalOpts);
278
+ try {
279
+ const result = await withSpinner(ctx, { start: 'Changing password...', success: 'Password changed', failure: 'Failed to change password' }, () => ctx.client.auth.changePassword({
280
+ currentPassword: options.current,
281
+ newPassword: options.newPassword,
282
+ }));
283
+ if (ctx.json) {
284
+ console.log(JSON.stringify(result, null, 2));
285
+ }
286
+ else {
287
+ console.log(result.message);
288
+ }
289
+ }
290
+ catch (error) {
291
+ handleOpsError(error, ctx);
292
+ }
293
+ });
294
+ // ulu auth profile
295
+ auth
296
+ .command('profile')
297
+ .description('View your profile')
298
+ .action(async (_, cmd) => {
299
+ const globalOpts = cmd.optsWithGlobals();
300
+ const ctx = createOpsContext(globalOpts);
301
+ try {
302
+ const data = await withSpinner(ctx, { start: 'Fetching profile...', failure: 'Failed to fetch profile' }, () => ctx.client.auth.getProfile());
303
+ if (ctx.json) {
304
+ console.log(JSON.stringify(data, null, 2));
305
+ }
306
+ else {
307
+ const u = data.user;
308
+ console.log(`Email: ${u.email}`);
309
+ console.log(`Role: ${u.role}`);
310
+ if (u.username)
311
+ console.log(`Username: ${u.username}`);
312
+ if (u.name)
313
+ console.log(`Name: ${u.name}`);
314
+ if (u.bio)
315
+ console.log(`Bio: ${u.bio}`);
316
+ if (u.timezone)
317
+ console.log(`Timezone: ${u.timezone}`);
318
+ if (u.websiteUrl)
319
+ console.log(`Website: ${u.websiteUrl}`);
320
+ }
321
+ }
322
+ catch (error) {
323
+ handleOpsError(error, ctx);
324
+ }
325
+ });
326
+ // ulu auth update-profile
327
+ auth
328
+ .command('update-profile')
329
+ .description('Update your profile')
330
+ .option('-u, --username <username>', 'Username')
331
+ .option('-n, --name <name>', 'Display name')
332
+ .option('--bio <bio>', 'Bio')
333
+ .option('--timezone <tz>', 'Timezone')
334
+ .option('--website <url>', 'Website URL')
335
+ .action(async (options, cmd) => {
336
+ const globalOpts = cmd.optsWithGlobals();
337
+ const ctx = createOpsContext(globalOpts);
338
+ const input = {};
339
+ if (options.username !== undefined)
340
+ input.username = options.username;
341
+ if (options.name !== undefined)
342
+ input.name = options.name;
343
+ if (options.bio !== undefined)
344
+ input.bio = options.bio;
345
+ if (options.timezone !== undefined)
346
+ input.timezone = options.timezone;
347
+ if (options.website !== undefined)
348
+ input.websiteUrl = options.website;
349
+ if (Object.keys(input).length === 0) {
350
+ console.error('Error: At least one field must be specified');
351
+ process.exit(1);
352
+ }
353
+ try {
354
+ const data = await withSpinner(ctx, { start: 'Updating profile...', success: 'Profile updated', failure: 'Failed to update profile' }, () => ctx.client.auth.updateProfile(input));
355
+ if (ctx.json) {
356
+ console.log(JSON.stringify(data, null, 2));
357
+ }
358
+ else {
359
+ console.log(`Profile updated for ${data.user.email}`);
360
+ }
361
+ }
362
+ catch (error) {
363
+ handleOpsError(error, ctx);
364
+ }
365
+ });
366
+ // ulu auth sessions
367
+ const authSessions = auth
368
+ .command('sessions')
369
+ .description('Manage your sessions');
370
+ // ulu auth sessions list
371
+ authSessions
372
+ .command('list')
373
+ .description('List your active sessions')
374
+ .action(async (_, cmd) => {
375
+ const globalOpts = cmd.optsWithGlobals();
376
+ const ctx = createOpsContext(globalOpts);
377
+ try {
378
+ const sessions = await withSpinner(ctx, { start: 'Fetching sessions...', failure: 'Failed to fetch sessions' }, () => ctx.client.auth.listSessions());
379
+ if (ctx.json) {
380
+ console.log(JSON.stringify(sessions, null, 2));
381
+ }
382
+ else if (sessions.length === 0) {
383
+ console.log('No active sessions');
384
+ }
385
+ else {
386
+ console.log(`Active sessions: ${sessions.length}\n`);
387
+ for (const s of sessions) {
388
+ console.log(` ${s.id.slice(0, 8)} ${s.ipAddress ?? '-'} ${s.createdAt}`);
389
+ }
390
+ }
391
+ }
392
+ catch (error) {
393
+ handleOpsError(error, ctx);
394
+ }
395
+ });
396
+ // ulu auth sessions revoke <id>
397
+ authSessions
398
+ .command('revoke <sessionId>')
399
+ .description('Revoke a session')
400
+ .action(async (sessionId, _, cmd) => {
401
+ const globalOpts = cmd.optsWithGlobals();
402
+ const ctx = createOpsContext(globalOpts);
403
+ try {
404
+ await withSpinner(ctx, { start: 'Revoking session...', success: 'Session revoked', failure: 'Failed to revoke session' }, () => ctx.client.auth.revokeSession(sessionId));
405
+ if (ctx.json) {
406
+ console.log(JSON.stringify({ success: true, sessionId }, null, 2));
407
+ }
408
+ else {
409
+ console.log(`Session ${sessionId.slice(0, 8)} revoked`);
410
+ }
411
+ }
412
+ catch (error) {
413
+ handleOpsError(error, ctx);
414
+ }
415
+ });
416
+ // ulu auth api-keys
417
+ const apiKeys = auth
418
+ .command('api-keys')
419
+ .description('Manage API keys');
420
+ // ulu auth api-keys list
421
+ apiKeys
422
+ .command('list')
423
+ .description('List all API keys')
424
+ .action(async (_, cmd) => {
425
+ const globalOpts = cmd.optsWithGlobals();
426
+ const ctx = createOpsContext(globalOpts);
427
+ try {
428
+ const keys = await withSpinner(ctx, { start: 'Fetching API keys...', failure: 'Failed to fetch API keys' }, () => ctx.client.auth.listApiKeys());
429
+ if (ctx.json) {
430
+ console.log(JSON.stringify(keys, null, 2));
431
+ }
432
+ else if (keys.length === 0) {
433
+ console.log('No API keys found');
434
+ }
435
+ else {
436
+ console.log(formatApiKeys(keys));
437
+ }
438
+ }
439
+ catch (error) {
440
+ handleOpsError(error, ctx);
441
+ }
442
+ });
443
+ // ulu auth api-keys create
444
+ apiKeys
445
+ .command('create')
446
+ .description('Create a new API key')
447
+ .option('-n, --name <name>', 'Key name (for identification)')
448
+ .option('--expires <date>', 'Expiration date (ISO format)')
449
+ .action(async (options, cmd) => {
450
+ const globalOpts = cmd.optsWithGlobals();
451
+ const ctx = createOpsContext(globalOpts);
452
+ try {
453
+ const result = await withSpinner(ctx, { start: 'Creating API key...', success: 'API key created', failure: 'Failed to create API key' }, () => ctx.client.auth.createApiKey({
454
+ name: options.name,
455
+ expiresAt: options.expires,
456
+ }));
457
+ if (ctx.json) {
458
+ console.log(JSON.stringify(result, null, 2));
459
+ }
460
+ else {
461
+ console.log('\n' + '='.repeat(60));
462
+ console.log('IMPORTANT: Save this key now - it will not be shown again!');
463
+ console.log('='.repeat(60));
464
+ console.log(`\nAPI Key: ${result.key}`);
465
+ console.log(`Key ID: ${result.apiKey.id}`);
466
+ if (result.apiKey.name)
467
+ console.log(`Name: ${result.apiKey.name}`);
468
+ console.log('\n' + '='.repeat(60));
469
+ }
470
+ }
471
+ catch (error) {
472
+ handleOpsError(error, ctx);
473
+ }
474
+ });
475
+ // ulu auth api-keys revoke
476
+ apiKeys
477
+ .command('revoke <keyId>')
478
+ .description('Revoke an API key')
479
+ .action(async (keyId, _, cmd) => {
480
+ const globalOpts = cmd.optsWithGlobals();
481
+ const ctx = createOpsContext(globalOpts);
482
+ try {
483
+ await withSpinner(ctx, { start: 'Revoking API key...', success: 'API key revoked', failure: 'Failed to revoke API key' }, () => ctx.client.auth.revokeApiKey(keyId));
484
+ if (ctx.json) {
485
+ console.log(JSON.stringify({ success: true, keyId }, null, 2));
486
+ }
487
+ else {
488
+ console.log(`API key ${keyId} has been revoked`);
489
+ }
490
+ }
491
+ catch (error) {
492
+ handleOpsError(error, ctx);
493
+ }
494
+ });
495
+ }
496
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Register completion command.
4
+ * Requires the fully-built program so it can introspect the command tree.
5
+ */
6
+ export declare function registerCompletionCommands(program: Command): void;
7
+ //# sourceMappingURL=completion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmLpC;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyBjE"}