@reximo/cli 0.1.0-alpha.2 → 0.1.0-alpha.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.
@@ -1,8 +1,14 @@
1
+ import { loadResolvedConfig } from './config';
1
2
  import { type Writable } from './output';
3
+ import { type PromptAdapter } from './prompts';
4
+ import { type ReximoClient } from '../client/reximo-client';
2
5
  export type CliDependencies = {
3
6
  stdout: Writable;
4
7
  stderr: Writable;
8
+ stdin?: NodeJS.ReadStream;
5
9
  env?: NodeJS.ProcessEnv;
6
10
  homeDirectory?: string;
11
+ promptAdapter?: PromptAdapter;
12
+ clientFactory?: (config: ReturnType<typeof loadResolvedConfig>) => ReximoClient;
7
13
  };
8
14
  export declare function runCli(args: string[], dependencies?: CliDependencies): Promise<number>;
@@ -6,30 +6,48 @@ const node_process_1 = tslib_1.__importDefault(require("node:process"));
6
6
  const commander_1 = require("commander");
7
7
  const config_1 = require("./config");
8
8
  const output_1 = require("./output");
9
+ const prompts_1 = require("./prompts");
9
10
  const package_json_1 = tslib_1.__importDefault(require("../../package.json"));
10
11
  const reximo_client_1 = require("../client/reximo-client");
11
12
  function normalizeArgs(args) {
12
13
  return args[0] === '--' ? args.slice(1) : args;
13
14
  }
14
15
  function toRuntimeDependencies(dependencies) {
16
+ const stdout = dependencies?.stdout ?? node_process_1.default.stdout;
17
+ const stdin = dependencies?.stdin ?? node_process_1.default.stdin;
15
18
  return {
16
- stdout: dependencies?.stdout ?? node_process_1.default.stdout,
19
+ stdout,
17
20
  stderr: dependencies?.stderr ?? node_process_1.default.stderr,
21
+ stdin,
18
22
  env: dependencies?.env ?? node_process_1.default.env,
19
- homeDirectory: dependencies?.homeDirectory ?? node_process_1.default.env['HOME'] ?? node_process_1.default.cwd()
23
+ homeDirectory: dependencies?.homeDirectory ?? node_process_1.default.env['HOME'] ?? node_process_1.default.cwd(),
24
+ promptAdapter: dependencies?.promptAdapter ??
25
+ (0, prompts_1.createDefaultPromptAdapter)({
26
+ stdin,
27
+ stdout
28
+ }),
29
+ clientFactory: dependencies?.clientFactory ?? reximo_client_1.createReximoClient
20
30
  };
21
31
  }
22
32
  function getOutputMode(command) {
23
33
  const opts = command.optsWithGlobals();
24
34
  return opts.json ? "json" /* OutputMode.Json */ : "text" /* OutputMode.Text */;
25
35
  }
36
+ function parseCsvOption(value) {
37
+ return value
38
+ .split(',')
39
+ .map((entry) => entry.trim())
40
+ .filter((entry) => entry.length > 0);
41
+ }
26
42
  function renderConfigSummary(config, includeSensitive) {
27
43
  return {
28
44
  profile: config.profile,
29
45
  configPath: config.configPath,
30
46
  configFileFound: config.configFileFound,
31
47
  apiBaseUrl: config.apiBaseUrl,
32
- token: (0, config_1.redactToken)(config.token, includeSensitive),
48
+ accessToken: (0, config_1.redactToken)(config.accessToken, includeSensitive),
49
+ refreshToken: (0, config_1.redactToken)(config.refreshToken, includeSensitive),
50
+ organizationId: config.organizationId,
33
51
  sources: config.sources
34
52
  };
35
53
  }
@@ -42,6 +60,186 @@ function writeResult(command, dependencies, textLines, jsonValue) {
42
60
  (0, output_1.writeLine)(dependencies.stdout, line);
43
61
  }
44
62
  }
63
+ function requireConfiguredToken(config, field) {
64
+ const value = config[field];
65
+ if (!value) {
66
+ throw new Error(field === "accessToken" /* ConfiguredTokenField.AccessToken */
67
+ ? 'No access token is configured. Run `reximo login` first.'
68
+ : 'No refresh token is configured. Run `reximo login` first.');
69
+ }
70
+ return value;
71
+ }
72
+ function requireConfiguredOrganization(config) {
73
+ if (!config.organizationId) {
74
+ throw new Error('No organization is configured. Run `reximo login` first.');
75
+ }
76
+ return config.organizationId;
77
+ }
78
+ function createAuthenticatedContext(dependencies, configOptions) {
79
+ const config = (0, config_1.loadResolvedConfig)(configOptions);
80
+ return {
81
+ config,
82
+ client: dependencies.clientFactory(config),
83
+ accessToken: requireConfiguredToken(config, "accessToken" /* ConfiguredTokenField.AccessToken */),
84
+ organizationId: requireConfiguredOrganization(config)
85
+ };
86
+ }
87
+ async function resolveRequiredValue(currentValue, label, prompt) {
88
+ if (currentValue?.trim()) {
89
+ return currentValue.trim();
90
+ }
91
+ const prompted = await prompt();
92
+ if (!prompted) {
93
+ throw new Error(`${label} is required`);
94
+ }
95
+ return prompted;
96
+ }
97
+ function chooseDefaultOrganization(organizations) {
98
+ const activeOrganizations = organizations.filter((organization) => organization.isActive);
99
+ if (activeOrganizations.length === 0) {
100
+ return null;
101
+ }
102
+ if (activeOrganizations.length === 1) {
103
+ return activeOrganizations[0] ?? null;
104
+ }
105
+ const defaults = activeOrganizations.filter((organization) => organization.isDefault);
106
+ return defaults.length === 1 ? (defaults[0] ?? null) : null;
107
+ }
108
+ function extractTenantIdFromAuthResponse(auth) {
109
+ const tenantId = auth.user?.tenantId;
110
+ if (typeof tenantId !== 'string') {
111
+ return null;
112
+ }
113
+ const normalized = tenantId.trim();
114
+ return normalized.length > 0 ? normalized : null;
115
+ }
116
+ async function resolveOrganizationContext(promptAdapter, organizations, organizationId) {
117
+ const activeOrganizations = organizations.filter((organization) => organization.isActive);
118
+ if (organizationId) {
119
+ const matched = activeOrganizations.find((organization) => organization.organizationId === organizationId);
120
+ if (!matched) {
121
+ throw new Error(`Organization ${organizationId} is not available for this user`);
122
+ }
123
+ return matched;
124
+ }
125
+ const defaultOrganization = chooseDefaultOrganization(activeOrganizations);
126
+ if (defaultOrganization) {
127
+ return defaultOrganization;
128
+ }
129
+ if (activeOrganizations.length === 0) {
130
+ return null;
131
+ }
132
+ if (!promptAdapter.isInteractive()) {
133
+ throw new Error('Multiple organizations are available. Re-run with --organization-id or use an interactive terminal.');
134
+ }
135
+ const choices = activeOrganizations.map((organization) => ({
136
+ value: organization.organizationId,
137
+ label: `${organization.displayName ?? organization.name} (${organization.organizationId})`
138
+ }));
139
+ const selectedOrganizationId = await promptAdapter.select('Select organization', choices);
140
+ return (activeOrganizations.find((organization) => organization.organizationId === selectedOrganizationId) ?? null);
141
+ }
142
+ function formatIssueIdentifier(issue) {
143
+ if (issue.project?.key) {
144
+ return `${issue.project.key}-${issue.issueNumber}`;
145
+ }
146
+ return `#${issue.issueNumber}`;
147
+ }
148
+ function formatIssueLines(result) {
149
+ if (result.data.length === 0) {
150
+ return ['No issues found.'];
151
+ }
152
+ const lines = [
153
+ `Issues: ${result.metadata.pagination.total} total (page ${result.metadata.pagination.page}/${Math.max(result.metadata.pagination.totalPages, 1)})`
154
+ ];
155
+ for (const issue of result.data) {
156
+ lines.push(`${formatIssueIdentifier(issue)} [id:${issue.id}] ${issue.title} (${issue.status}, ${issue.priority})`);
157
+ }
158
+ return lines;
159
+ }
160
+ function formatIssueDetailLines(issue) {
161
+ return [
162
+ `Issue: ${formatIssueIdentifier(issue)} [id:${issue.id}]`,
163
+ `Title: ${issue.title}`,
164
+ `Status: ${issue.status}`,
165
+ `Priority: ${issue.priority}`,
166
+ `Project: ${issue.project?.name ?? '(none)'}`,
167
+ `Updated: ${issue.updatedAt}`
168
+ ];
169
+ }
170
+ function formatProjectAccess(project) {
171
+ if (project.visibility === 'public') {
172
+ return 'public';
173
+ }
174
+ return project.isMember ? 'private member' : 'private';
175
+ }
176
+ function formatProjectLines(result) {
177
+ if (result.data.length === 0) {
178
+ return ['No projects found.'];
179
+ }
180
+ const lines = [
181
+ `Projects: ${result.metadata.pagination.total} total (page ${result.metadata.pagination.page}/${Math.max(result.metadata.pagination.totalPages, 1)})`
182
+ ];
183
+ for (const project of result.data) {
184
+ lines.push(`${project.key} [id:${project.id}] ${project.name} (${formatProjectAccess(project)})`);
185
+ }
186
+ return lines;
187
+ }
188
+ function buildUpdateIssuePayload(options) {
189
+ const payload = {};
190
+ if (options.title !== undefined) {
191
+ payload['title'] = options.title;
192
+ }
193
+ if (options.descriptionMarkdown !== undefined) {
194
+ payload['descriptionMarkdown'] = options.descriptionMarkdown;
195
+ }
196
+ if (options.status !== undefined) {
197
+ payload['status'] = options.status;
198
+ }
199
+ if (options.statusDefinitionId !== undefined) {
200
+ payload['statusDefinitionId'] = options.statusDefinitionId;
201
+ }
202
+ if (options.priority !== undefined) {
203
+ payload['priority'] = options.priority;
204
+ }
205
+ if (options.position !== undefined) {
206
+ payload['position'] = options.position;
207
+ }
208
+ if (options.baseRevision !== undefined) {
209
+ payload['baseRevision'] = options.baseRevision;
210
+ }
211
+ if (options.clearParentIssue) {
212
+ payload['parentIssueId'] = null;
213
+ }
214
+ else if (options.parentIssueId !== undefined) {
215
+ payload['parentIssueId'] = options.parentIssueId;
216
+ }
217
+ if (options.clearEstimate) {
218
+ payload['estimate'] = null;
219
+ }
220
+ else if (options.estimate !== undefined) {
221
+ payload['estimate'] = options.estimate;
222
+ }
223
+ if (options.clearDueAt) {
224
+ payload['dueAt'] = null;
225
+ }
226
+ else if (options.dueAt !== undefined) {
227
+ payload['dueAt'] = options.dueAt;
228
+ }
229
+ if (Object.keys(payload).length === 0) {
230
+ throw new Error('At least one update field is required.');
231
+ }
232
+ return payload;
233
+ }
234
+ function buildIssuesSearchInput(options) {
235
+ if (options.status !== undefined || options.statuses !== undefined) {
236
+ return options;
237
+ }
238
+ return {
239
+ ...options,
240
+ statuses: ["backlog" /* IssueStatusOption.Backlog */, "in_progress" /* IssueStatusOption.InProgress */, "blocked" /* IssueStatusOption.Blocked */]
241
+ };
242
+ }
45
243
  function createProgram(dependencies) {
46
244
  const configOptions = {
47
245
  env: dependencies.env,
@@ -62,30 +260,21 @@ function createProgram(dependencies) {
62
260
  dependencies.stderr.write(message);
63
261
  }
64
262
  });
65
- program
66
- .command('hello')
67
- .description('Print a greeting to validate the CLI entrypoint.')
68
- .option('--name <name>', 'Name to include in the greeting')
69
- .action(function action(options) {
70
- const greeting = options.name ? `Hello, ${options.name}.` : 'Hello from @reximo/cli.';
71
- writeResult(this, dependencies, [greeting], {
72
- command: 'hello',
73
- greeting
74
- });
75
- });
76
263
  program
77
264
  .command('info')
78
265
  .description('Show package and runtime information for diagnostics.')
79
266
  .action(function action() {
80
267
  const config = (0, config_1.loadResolvedConfig)(configOptions);
81
- const client = (0, reximo_client_1.createReximoClient)(config);
268
+ const client = dependencies.clientFactory(config);
82
269
  writeResult(this, dependencies, [
83
270
  `${package_json_1.default.name} ${package_json_1.default.version}`,
84
271
  `Node: ${node_process_1.default.version}`,
85
272
  `Platform: ${node_process_1.default.platform}/${node_process_1.default.arch}`,
86
273
  `Profile: ${config.profile}`,
87
- `API base URL: ${config.apiBaseUrl ?? '(not configured)'}`,
88
- `Token configured: ${config.token ? 'yes' : 'no'}`
274
+ `API base URL: ${config.apiBaseUrl ?? config_1.DEFAULT_API_BASE_URL}`,
275
+ `Access token configured: ${config.accessToken ? 'yes' : 'no'}`,
276
+ `Refresh token configured: ${config.refreshToken ? 'yes' : 'no'}`,
277
+ `Organization: ${config.organizationId ?? '(not configured)'}`
89
278
  ], {
90
279
  command: 'info',
91
280
  package: {
@@ -101,9 +290,139 @@ function createProgram(dependencies) {
101
290
  profile: config.profile,
102
291
  apiBaseUrl: config.apiBaseUrl,
103
292
  configuredForApi: client.isConfigured(),
104
- hasToken: Boolean(config.token)
293
+ hasAccessToken: Boolean(config.accessToken),
294
+ hasRefreshToken: Boolean(config.refreshToken),
295
+ organizationId: config.organizationId
296
+ }
297
+ });
298
+ });
299
+ const issuesCommand = program.command('issues').description('Manage issues.');
300
+ issuesCommand
301
+ .command('search')
302
+ .alias('list')
303
+ .description('Search visible issues within the configured organization.')
304
+ .option('--page <page>', 'Page number (1-based)', Number)
305
+ .option('--page-size <pageSize>', 'Items per page', Number)
306
+ .option('--project-id <projectId>', 'Restrict to one project id', Number)
307
+ .option('--label-id <labelId>', 'Restrict to one label id', Number)
308
+ .option('--assignee-user-id <assigneeUserId>', 'Restrict to one assignee user id', Number)
309
+ .option('--watcher-user-id <watcherUserId>', 'Restrict to one watcher user id', Number)
310
+ .option('--activity-actor-user-id <activityActorUserId>', 'Restrict to issues with activity authored by one user', Number)
311
+ .option('--search <search>', 'Search by issue identifier, title, or description')
312
+ .option('--status <status>', 'Restrict to one status')
313
+ .option('--statuses <statuses>', 'Comma-separated list of statuses', parseCsvOption)
314
+ .option('--priority <priority>', 'Restrict to one priority')
315
+ .option('--sort-by <sortBy>', 'Sort field')
316
+ .option('--sort-order <sortOrder>', 'Sort direction')
317
+ .action(async function action(options) {
318
+ const { client, accessToken, organizationId } = createAuthenticatedContext(dependencies, configOptions);
319
+ const result = await client.listIssues({
320
+ accessToken,
321
+ organizationId,
322
+ ...buildIssuesSearchInput(options)
323
+ });
324
+ writeResult(this, dependencies, formatIssueLines(result), {
325
+ command: 'issues.search',
326
+ result
327
+ });
328
+ });
329
+ issuesCommand
330
+ .command('create')
331
+ .description('Create one issue in the configured organization.')
332
+ .option('--title <title>', 'Issue title')
333
+ .option('--description-markdown <descriptionMarkdown>', 'Issue description in markdown')
334
+ .option('--status <status>', 'Issue status')
335
+ .option('--status-definition-id <statusDefinitionId>', 'Issue status definition id', Number)
336
+ .option('--priority <priority>', 'Issue priority')
337
+ .option('--project-id <projectId>', 'Project id', Number)
338
+ .option('--parent-issue-id <parentIssueId>', 'Parent issue id', Number)
339
+ .option('--position <position>', 'Issue position', Number)
340
+ .option('--estimate <estimate>', 'Issue estimate', Number)
341
+ .option('--due-at <dueAt>', 'Issue due date as an ISO-8601 string')
342
+ .action(async function action(options) {
343
+ const { client, accessToken, organizationId } = createAuthenticatedContext(dependencies, configOptions);
344
+ if (!options.title?.trim()) {
345
+ throw new Error('Title is required');
346
+ }
347
+ const issue = await client.createIssue({
348
+ accessToken,
349
+ organizationId,
350
+ issue: {
351
+ ...options,
352
+ title: options.title.trim()
105
353
  }
106
354
  });
355
+ writeResult(this, dependencies, formatIssueDetailLines(issue), {
356
+ command: 'issues.create',
357
+ issue
358
+ });
359
+ });
360
+ issuesCommand
361
+ .command('update <issueId>')
362
+ .description('Update one issue by id in the configured organization.')
363
+ .option('--title <title>', 'Issue title')
364
+ .option('--description-markdown <descriptionMarkdown>', 'Issue description in markdown')
365
+ .option('--status <status>', 'Issue status')
366
+ .option('--status-definition-id <statusDefinitionId>', 'Issue status definition id', Number)
367
+ .option('--priority <priority>', 'Issue priority')
368
+ .option('--parent-issue-id <parentIssueId>', 'Parent issue id', Number)
369
+ .option('--position <position>', 'Issue position', Number)
370
+ .option('--estimate <estimate>', 'Issue estimate', Number)
371
+ .option('--due-at <dueAt>', 'Issue due date as an ISO-8601 string')
372
+ .option('--clear-parent-issue', 'Clear the current parent issue')
373
+ .option('--clear-estimate', 'Clear the current estimate')
374
+ .option('--clear-due-at', 'Clear the current due date')
375
+ .option('--base-revision <baseRevision>', 'Optimistic concurrency token from the last issue read')
376
+ .action(async function action(issueId, options) {
377
+ const { client, accessToken, organizationId } = createAuthenticatedContext(dependencies, configOptions);
378
+ const issue = await client.updateIssue({
379
+ accessToken,
380
+ organizationId,
381
+ issueId,
382
+ issue: buildUpdateIssuePayload(options)
383
+ });
384
+ writeResult(this, dependencies, formatIssueDetailLines(issue), {
385
+ command: 'issues.update',
386
+ issue
387
+ });
388
+ });
389
+ issuesCommand
390
+ .command('delete <issueId>')
391
+ .description('Delete one issue by id in the configured organization.')
392
+ .action(async function action(issueId) {
393
+ const { client, accessToken, organizationId } = createAuthenticatedContext(dependencies, configOptions);
394
+ await client.deleteIssue({
395
+ accessToken,
396
+ organizationId,
397
+ issueId
398
+ });
399
+ writeResult(this, dependencies, [`Issue ${issueId} deleted.`], {
400
+ command: 'issues.delete',
401
+ issueId,
402
+ deleted: true
403
+ });
404
+ });
405
+ const projectsCommand = program.command('projects').description('Manage projects.');
406
+ projectsCommand
407
+ .command('list')
408
+ .description('List projects visible to the current user in the configured organization.')
409
+ .option('--page <page>', 'Page number (1-based)', Number)
410
+ .option('--page-size <pageSize>', 'Items per page', Number)
411
+ .option('--search <search>', 'Search by project name')
412
+ .option('--visibility <visibility>', 'Restrict to one visibility')
413
+ .option('--sort-by <sortBy>', 'Sort field')
414
+ .option('--sort-order <sortOrder>', 'Sort direction')
415
+ .action(async function action(options) {
416
+ const { client, accessToken, organizationId } = createAuthenticatedContext(dependencies, configOptions);
417
+ const result = await client.listProjects({
418
+ accessToken,
419
+ organizationId,
420
+ ...options
421
+ });
422
+ writeResult(this, dependencies, formatProjectLines(result), {
423
+ command: 'projects.list',
424
+ result
425
+ });
107
426
  });
108
427
  const configCommand = program
109
428
  .command('config')
@@ -118,13 +437,115 @@ function createProgram(dependencies) {
118
437
  `Profile: ${config.profile}`,
119
438
  `Config path: ${config.configPath}`,
120
439
  `Config file found: ${config.configFileFound ? 'yes' : 'no'}`,
121
- `API base URL: ${config.apiBaseUrl ?? '(not configured)'}`,
122
- `Token: ${(0, config_1.redactToken)(config.token, Boolean(options.includeSensitive)) ?? '(not configured)'}`
440
+ `API base URL: ${config.apiBaseUrl ?? config_1.DEFAULT_API_BASE_URL}`,
441
+ `Access token: ${(0, config_1.redactToken)(config.accessToken, Boolean(options.includeSensitive)) ?? '(not configured)'}`,
442
+ `Refresh token: ${(0, config_1.redactToken)(config.refreshToken, Boolean(options.includeSensitive)) ?? '(not configured)'}`,
443
+ `Organization: ${config.organizationId ?? '(not configured)'}`
123
444
  ], {
124
445
  command: 'config.show',
125
446
  config: renderConfigSummary(config, Boolean(options.includeSensitive))
126
447
  });
127
448
  });
449
+ program
450
+ .command('login')
451
+ .description('Authenticate with the Reximo API and save auth state for the active profile.')
452
+ .option('--email <email>', 'Email address to authenticate with')
453
+ .option('--password <password>', 'Password to authenticate with')
454
+ .option('--organization-id <organizationId>', 'Organization ID to use as x-tenant-id')
455
+ .action(async function action(options) {
456
+ const config = (0, config_1.loadResolvedConfig)(configOptions);
457
+ const client = dependencies.clientFactory(config);
458
+ const email = await resolveRequiredValue(options.email, 'Email', () => dependencies.promptAdapter.promptText('Email'));
459
+ const password = await resolveRequiredValue(options.password, 'Password', () => dependencies.promptAdapter.promptPassword('Password'));
460
+ const loginResponse = await client.login({
461
+ email,
462
+ password,
463
+ organizationId: options.organizationId ?? null
464
+ });
465
+ const initialOrganizationId = options.organizationId ?? extractTenantIdFromAuthResponse(loginResponse);
466
+ const organizations = await client.getMyOrganizations({
467
+ accessToken: loginResponse.accessToken,
468
+ organizationId: initialOrganizationId
469
+ });
470
+ const selectedOrganization = await resolveOrganizationContext(dependencies.promptAdapter, organizations, options.organizationId);
471
+ const shouldRefreshForOrganizationSwitch = Boolean(selectedOrganization?.organizationId) &&
472
+ selectedOrganization?.organizationId !== initialOrganizationId;
473
+ const scopedAuth = shouldRefreshForOrganizationSwitch && selectedOrganization?.organizationId
474
+ ? await client.refreshToken({
475
+ refreshToken: loginResponse.refreshToken,
476
+ organizationId: selectedOrganization.organizationId
477
+ })
478
+ : loginResponse;
479
+ (0, config_1.saveProfileConfig)({
480
+ apiBaseUrl: config.apiBaseUrl,
481
+ accessToken: scopedAuth.accessToken,
482
+ refreshToken: scopedAuth.refreshToken,
483
+ organizationId: selectedOrganization?.organizationId ?? null
484
+ }, configOptions);
485
+ writeResult(this, dependencies, [
486
+ 'Login successful.',
487
+ `Profile: ${config.profile}`,
488
+ `API base URL: ${config.apiBaseUrl ?? config_1.DEFAULT_API_BASE_URL}`,
489
+ `Organization: ${selectedOrganization?.organizationId ?? '(none selected)'}`,
490
+ 'Access token saved: yes',
491
+ 'Refresh token saved: yes'
492
+ ], {
493
+ command: 'login',
494
+ profile: config.profile,
495
+ apiBaseUrl: config.apiBaseUrl ?? config_1.DEFAULT_API_BASE_URL,
496
+ organizationId: selectedOrganization?.organizationId ?? null,
497
+ accessTokenSaved: true,
498
+ refreshTokenSaved: true
499
+ });
500
+ });
501
+ program
502
+ .command('me')
503
+ .alias('profile')
504
+ .description('Display the current authenticated user profile from /api/v1/auth/me.')
505
+ .action(async function action() {
506
+ const config = (0, config_1.loadResolvedConfig)(configOptions);
507
+ const client = dependencies.clientFactory(config);
508
+ const profile = await client.getMe({
509
+ accessToken: requireConfiguredToken(config, "accessToken" /* ConfiguredTokenField.AccessToken */),
510
+ organizationId: requireConfiguredOrganization(config)
511
+ });
512
+ writeResult(this, dependencies, [
513
+ `User ID: ${profile.userId}`,
514
+ `Email: ${profile.email ?? '(not set)'}`,
515
+ `Name: ${profile.displayName ?? profile.name ?? '(not set)'}`,
516
+ `Organization: ${profile.tenantId}`,
517
+ `Roles: ${profile.roles?.join(', ') || '(none)'}`,
518
+ `Permissions: ${profile.permissions?.join(', ') || '(none)'}`
519
+ ], {
520
+ command: 'me',
521
+ profile
522
+ });
523
+ });
524
+ program
525
+ .command('logout')
526
+ .description('Log out of the current profile and remove stored tokens.')
527
+ .action(async function action() {
528
+ const config = (0, config_1.loadResolvedConfig)(configOptions);
529
+ const client = dependencies.clientFactory(config);
530
+ const accessToken = requireConfiguredToken(config, "accessToken" /* ConfiguredTokenField.AccessToken */);
531
+ const refreshToken = requireConfiguredToken(config, "refreshToken" /* ConfiguredTokenField.RefreshToken */);
532
+ const organizationId = requireConfiguredOrganization(config);
533
+ const response = await client.logout({
534
+ accessToken,
535
+ refreshToken,
536
+ organizationId
537
+ });
538
+ (0, config_1.saveProfileConfig)({
539
+ apiBaseUrl: config.apiBaseUrl ?? config_1.DEFAULT_API_BASE_URL,
540
+ accessToken: null,
541
+ refreshToken: null
542
+ }, configOptions);
543
+ writeResult(this, dependencies, [response.message ?? 'Logged out successfully.'], {
544
+ command: 'logout',
545
+ message: response.message ?? 'Logged out successfully',
546
+ tokensCleared: true
547
+ });
548
+ });
128
549
  return program;
129
550
  }
130
551
  async function runCli(args, dependencies) {
@@ -1 +1 @@
1
- {"version":3,"file":"run-cli.js","sourceRoot":"","sources":["../../../../../packages/reximo-cli/src/lib/run-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-cli.js","sourceRoot":"","sources":["../../../../../packages/reximo-cli/src/lib/run-cli.ts"],"names":[],"mappings":"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"}