@getbrevo/cli 1.1.0 → 2.0.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 (75) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +19 -2
  3. package/agent-context/AGENTS.md +16 -5
  4. package/agent-context/SKILL.md +17 -3
  5. package/dist/api/client.d.ts +2 -0
  6. package/dist/api/client.d.ts.map +1 -1
  7. package/dist/api/client.js +50 -36
  8. package/dist/api/client.js.map +1 -1
  9. package/dist/bin/index.js +19 -4
  10. package/dist/bin/index.js.map +1 -1
  11. package/dist/commands/app/create.d.ts.map +1 -1
  12. package/dist/commands/app/create.js +240 -221
  13. package/dist/commands/app/create.js.map +1 -1
  14. package/dist/commands/app/delete.d.ts.map +1 -1
  15. package/dist/commands/app/delete.js +81 -62
  16. package/dist/commands/app/delete.js.map +1 -1
  17. package/dist/commands/app/list.d.ts.map +1 -1
  18. package/dist/commands/app/list.js +10 -3
  19. package/dist/commands/app/list.js.map +1 -1
  20. package/dist/commands/app/scaffold.d.ts.map +1 -1
  21. package/dist/commands/app/scaffold.js +12 -2
  22. package/dist/commands/app/scaffold.js.map +1 -1
  23. package/dist/commands/app/scopes.d.ts.map +1 -1
  24. package/dist/commands/app/scopes.js +2 -0
  25. package/dist/commands/app/scopes.js.map +1 -1
  26. package/dist/commands/app/start.d.ts.map +1 -1
  27. package/dist/commands/app/start.js +7 -0
  28. package/dist/commands/app/start.js.map +1 -1
  29. package/dist/commands/app/update.d.ts.map +1 -1
  30. package/dist/commands/app/update.js +297 -266
  31. package/dist/commands/app/update.js.map +1 -1
  32. package/dist/commands/login.d.ts.map +1 -1
  33. package/dist/commands/login.js +154 -138
  34. package/dist/commands/login.js.map +1 -1
  35. package/dist/commands/whoami.d.ts.map +1 -1
  36. package/dist/commands/whoami.js +27 -20
  37. package/dist/commands/whoami.js.map +1 -1
  38. package/dist/lang/en.d.ts +23 -1
  39. package/dist/lang/en.d.ts.map +1 -1
  40. package/dist/lang/en.js +25 -1
  41. package/dist/lang/en.js.map +1 -1
  42. package/dist/lib/auth-guard.d.ts.map +1 -1
  43. package/dist/lib/auth-guard.js +10 -1
  44. package/dist/lib/auth-guard.js.map +1 -1
  45. package/dist/lib/constants.d.ts +10 -3
  46. package/dist/lib/constants.d.ts.map +1 -1
  47. package/dist/lib/constants.js +19 -4
  48. package/dist/lib/constants.js.map +1 -1
  49. package/dist/lib/logger.d.ts.map +1 -1
  50. package/dist/lib/logger.js +16 -3
  51. package/dist/lib/logger.js.map +1 -1
  52. package/dist/lib/telemetry.d.ts +9 -0
  53. package/dist/lib/telemetry.d.ts.map +1 -0
  54. package/dist/lib/telemetry.js +57 -0
  55. package/dist/lib/telemetry.js.map +1 -0
  56. package/dist/lib/update-notifier.d.ts +3 -0
  57. package/dist/lib/update-notifier.d.ts.map +1 -1
  58. package/dist/lib/update-notifier.js +77 -34
  59. package/dist/lib/update-notifier.js.map +1 -1
  60. package/dist/lib/validators.d.ts +6 -0
  61. package/dist/lib/validators.d.ts.map +1 -1
  62. package/dist/lib/validators.js +10 -0
  63. package/dist/lib/validators.js.map +1 -1
  64. package/dist/services/app.d.ts +1 -1
  65. package/dist/services/app.d.ts.map +1 -1
  66. package/dist/services/app.js +6 -6
  67. package/dist/services/app.js.map +1 -1
  68. package/dist/services/scopes-html.d.ts.map +1 -1
  69. package/dist/services/scopes-html.js +208 -29
  70. package/dist/services/scopes-html.js.map +1 -1
  71. package/dist/services/skill.js +1 -1
  72. package/dist/services/skill.js.map +1 -1
  73. package/dist/types.d.ts +2 -2
  74. package/dist/types.d.ts.map +1 -1
  75. package/package.json +1 -2
@@ -17,272 +17,258 @@ const ui_1 = require("../../lib/ui");
17
17
  const config_1 = require("../../lib/config");
18
18
  const scaffold_1 = require("./scaffold");
19
19
  const container_1 = require("../../container");
20
- exports.createCommand = (0, command_handler_1.withCommandHandler)(async (options) => {
21
- // 0. Check for existing app-config.json in current directory
22
- if ((0, config_1.hasLocalApp)()) {
23
- if (!process.stdin.isTTY) {
24
- throw new errors_1.CliError('An app is already linked in this directory (app-config.json). Use --force or run interactively.');
25
- }
26
- const projectConfig = (0, config_1.readProjectConfig)();
27
- const linkedName = projectConfig?.appName || String(projectConfig?.appId);
28
- (0, logger_1.logInfo)(` App "${linkedName}" is already linked in this directory (app-config.json).`);
29
- const { proceed } = await inquirer_1.default.prompt([
30
- {
31
- type: 'confirm',
32
- name: 'proceed',
33
- message: 'Create a new app anyway?',
34
- default: false,
35
- },
36
- ]);
37
- if (!proceed) {
38
- (0, logger_1.logInfo)(`\n Use \`${constants_1.CLI.APP_UPDATE}\` to modify the existing app.\n`);
39
- return;
20
+ function validateHttpUrl(trimmed, invalidMessage) {
21
+ try {
22
+ const parsed = new URL(trimmed);
23
+ if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
24
+ return invalidMessage;
40
25
  }
26
+ return true;
27
+ }
28
+ catch {
29
+ return invalidMessage;
30
+ }
31
+ }
32
+ const validateRedirectUrl = (input) => {
33
+ const trimmed = input.trim();
34
+ if (!trimmed)
35
+ return en_1.messages.APP_CREATE_REDIRECT_EMPTY;
36
+ return validateHttpUrl(trimmed, en_1.messages.APP_CREATE_REDIRECT_INVALID);
37
+ };
38
+ const validateLogoUrl = (input) => {
39
+ const trimmed = input.trim();
40
+ if (!trimmed)
41
+ return true;
42
+ return validateHttpUrl(trimmed, en_1.messages.APP_CREATE_LOGO_INVALID);
43
+ };
44
+ // 0. Check for existing app-config.json in current directory.
45
+ // Returns true when it is OK to proceed with creation.
46
+ async function confirmCreateOverLinkedApp() {
47
+ if (!(0, config_1.hasLocalApp)())
48
+ return true;
49
+ if (!process.stdin.isTTY) {
50
+ throw new errors_1.CliError('An app is already linked in this directory (app-config.json). Use --force or run interactively.');
51
+ }
52
+ const projectConfig = (0, config_1.readProjectConfig)();
53
+ const linkedName = projectConfig?.appName || String(projectConfig?.appId);
54
+ (0, logger_1.logInfo)(` App "${linkedName}" is already linked in this directory (app-config.json).`);
55
+ const { proceed } = await inquirer_1.default.prompt([
56
+ {
57
+ type: 'confirm',
58
+ name: 'proceed',
59
+ message: 'Create a new app anyway?',
60
+ default: false,
61
+ },
62
+ ]);
63
+ if (!proceed) {
64
+ (0, logger_1.logInfo)(`\n Use \`${constants_1.CLI.APP_UPDATE}\` to modify the existing app.\n`);
65
+ return false;
41
66
  }
42
- // 1. App name
43
- let appName = options.name;
44
- if (appName) {
45
- const nameCheck = (0, validators_1.validateAppName)(appName);
67
+ return true;
68
+ }
69
+ // 1. App name
70
+ async function resolveAppName(nameFlag) {
71
+ if (nameFlag) {
72
+ const nameCheck = (0, validators_1.validateAppName)(nameFlag);
46
73
  if (nameCheck !== true)
47
74
  throw new errors_1.CliError(nameCheck);
75
+ return nameFlag;
48
76
  }
49
- else {
50
- const answer = await inquirer_1.default.prompt([
51
- {
52
- type: 'input',
53
- name: 'name',
54
- message: en_1.messages.APP_CREATE_NAME_PROMPT,
55
- validate: validators_1.validateAppName,
56
- },
57
- ]);
58
- appName = answer.name;
59
- }
60
- // 2. Distribution type
77
+ const answer = await inquirer_1.default.prompt([
78
+ {
79
+ type: 'input',
80
+ name: 'name',
81
+ message: en_1.messages.APP_CREATE_NAME_PROMPT,
82
+ validate: validators_1.validateAppName,
83
+ },
84
+ ]);
85
+ return answer.name;
86
+ }
87
+ // 2. Distribution type
88
+ async function resolveDistribution(distributionFlag) {
61
89
  const VALID_DISTRIBUTIONS = ['private', 'public'];
62
- let distribution = options.distribution;
63
- (0, validators_1.validateEnum)(distribution, VALID_DISTRIBUTIONS, '--distribution');
64
- if (distribution === 'public') {
90
+ (0, validators_1.validateEnum)(distributionFlag, VALID_DISTRIBUTIONS, '--distribution');
91
+ if (distributionFlag === 'public') {
65
92
  throw new errors_1.CliError(en_1.messages.APP_CREATE_PUBLIC_UNAVAILABLE);
66
93
  }
67
- if (!distribution) {
68
- const answer = await inquirer_1.default.prompt([
69
- {
70
- type: 'list',
71
- name: 'distribution',
72
- message: en_1.messages.APP_CREATE_TYPE_PROMPT,
73
- choices: [
74
- {
75
- name: 'Private (Used exclusively by your organisation)',
76
- value: 'private',
77
- },
78
- {
79
- name: 'Public (Distributed to end users or marketplace listings)',
80
- value: 'public',
81
- disabled: 'coming soon',
82
- },
83
- ],
84
- },
85
- ]);
86
- distribution = answer.distribution;
94
+ if (distributionFlag) {
95
+ return distributionFlag;
87
96
  }
88
- // 3. Redirect URI(s) — already validated by collectUrls parser when passed via flag
89
- let redirectUrls = options.redirectUri ?? [];
90
- if (redirectUrls.length === 0) {
91
- if (process.stdin.isTTY) {
92
- // Find an available port for the default redirect URL
93
- const availablePort = await (0, port_1.findAvailablePort)(constants_1.DEFAULT_PORT);
94
- const defaultRedirect = availablePort == null || availablePort === constants_1.DEFAULT_PORT
95
- ? constants_1.DEFAULT_REDIRECT_URI
96
- : `http://localhost:${availablePort}/auth/callback`;
97
- if (!options.json) {
98
- if (availablePort == null) {
99
- (0, logger_1.logInfo)(en_1.messages.APP_CREATE_PORT_SCAN_FAILED(constants_1.DEFAULT_PORT));
100
- }
101
- else if (availablePort !== constants_1.DEFAULT_PORT) {
102
- (0, logger_1.logInfo)(en_1.messages.APP_CREATE_PORT_IN_USE(constants_1.DEFAULT_PORT, availablePort));
103
- }
104
- (0, logger_1.logInfo)(en_1.messages.APP_CREATE_REDIRECT_HINT(constants_1.CLI.APP_START('oauth')));
105
- }
106
- const validateRedirectUrl = (input) => {
107
- const trimmed = input.trim();
108
- if (!trimmed)
109
- return en_1.messages.APP_CREATE_REDIRECT_EMPTY;
110
- try {
111
- const parsed = new URL(trimmed);
112
- if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
113
- return en_1.messages.APP_CREATE_REDIRECT_INVALID;
114
- }
115
- return true;
116
- }
117
- catch {
118
- return en_1.messages.APP_CREATE_REDIRECT_INVALID;
119
- }
120
- };
121
- const { redirectUrl: firstUrl } = await inquirer_1.default.prompt([
97
+ const answer = await inquirer_1.default.prompt([
98
+ {
99
+ type: 'list',
100
+ name: 'distribution',
101
+ message: en_1.messages.APP_CREATE_TYPE_PROMPT,
102
+ choices: [
122
103
  {
123
- type: 'input',
124
- name: 'redirectUrl',
125
- message: en_1.messages.APP_CREATE_REDIRECT_PROMPT,
126
- default: defaultRedirect,
127
- validate: validateRedirectUrl,
104
+ name: 'Private (Used exclusively by your organisation)',
105
+ value: 'private',
128
106
  },
129
- ]);
130
- redirectUrls.push(firstUrl.trim());
131
- let addMore = true;
132
- while (addMore) {
133
- const { anotherRaw } = await inquirer_1.default.prompt([
134
- {
135
- type: 'input',
136
- name: 'anotherRaw',
137
- message: en_1.messages.APP_CREATE_REDIRECT_ANOTHER + ' (y/N)',
138
- default: 'n',
139
- validate: (input) => {
140
- const val = String(input).toLowerCase().trim();
141
- if (val === 'y' || val === 'yes' || val === 'n' || val === 'no' || val === '') {
142
- return true;
143
- }
144
- return 'Please enter y or n';
145
- },
146
- },
147
- ]);
148
- const another = String(anotherRaw).toLowerCase().trim().startsWith('y');
149
- if (another) {
150
- const { nextUrl } = await inquirer_1.default.prompt([
151
- {
152
- type: 'input',
153
- name: 'nextUrl',
154
- message: en_1.messages.APP_CREATE_REDIRECT_PROMPT,
155
- validate: validateRedirectUrl,
156
- },
157
- ]);
158
- redirectUrls.push(nextUrl.trim());
159
- }
160
- else {
161
- addMore = false;
162
- }
163
- }
107
+ {
108
+ name: 'Public (Distributed to end users or marketplace listings)',
109
+ value: 'public',
110
+ disabled: 'coming soon',
111
+ },
112
+ ],
113
+ },
114
+ ]);
115
+ return answer.distribution;
116
+ }
117
+ const validateYesNo = (input) => {
118
+ const val = String(input).toLowerCase().trim();
119
+ if (val === 'y' || val === 'yes' || val === 'n' || val === 'no' || val === '') {
120
+ return true;
121
+ }
122
+ return 'Please enter y or n';
123
+ };
124
+ async function promptAddAnotherRedirect() {
125
+ const { anotherRaw } = await inquirer_1.default.prompt([
126
+ {
127
+ type: 'input',
128
+ name: 'anotherRaw',
129
+ message: en_1.messages.APP_CREATE_REDIRECT_ANOTHER + ' (y/N)',
130
+ default: 'n',
131
+ validate: validateYesNo,
132
+ },
133
+ ]);
134
+ return String(anotherRaw).toLowerCase().trim().startsWith('y');
135
+ }
136
+ async function promptRedirectUrls(quiet) {
137
+ // Find an available port for the default redirect URL
138
+ const availablePort = await (0, port_1.findAvailablePort)(constants_1.DEFAULT_PORT);
139
+ const defaultRedirect = availablePort == null || availablePort === constants_1.DEFAULT_PORT
140
+ ? constants_1.DEFAULT_REDIRECT_URI
141
+ : `http://localhost:${availablePort}/auth/callback`;
142
+ if (!quiet) {
143
+ if (availablePort == null) {
144
+ (0, logger_1.logInfo)(en_1.messages.APP_CREATE_PORT_SCAN_FAILED(constants_1.DEFAULT_PORT));
164
145
  }
165
- else {
166
- redirectUrls = [constants_1.DEFAULT_REDIRECT_URI];
146
+ else if (availablePort !== constants_1.DEFAULT_PORT) {
147
+ (0, logger_1.logInfo)(en_1.messages.APP_CREATE_PORT_IN_USE(constants_1.DEFAULT_PORT, availablePort));
167
148
  }
149
+ (0, logger_1.logInfo)(en_1.messages.APP_CREATE_REDIRECT_HINT(constants_1.CLI.APP_START('oauth')));
168
150
  }
169
- // 4. Logo URL (optional) — prompt interactively when no --logo-uri flag.
170
- // Skipped under --json since the field is optional and --json implies scripting.
171
- let logoUri = options.logoUri;
172
- if (!logoUri && process.stdin.isTTY && !options.json) {
173
- const validateLogoUrl = (input) => {
174
- const trimmed = input.trim();
175
- if (!trimmed)
176
- return true;
177
- try {
178
- const parsed = new URL(trimmed);
179
- if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
180
- return en_1.messages.APP_CREATE_LOGO_INVALID;
181
- }
182
- return true;
183
- }
184
- catch {
185
- return en_1.messages.APP_CREATE_LOGO_INVALID;
186
- }
187
- };
188
- const { logoUrl } = await inquirer_1.default.prompt([
151
+ const redirectUrls = [];
152
+ const { redirectUrl: firstUrl } = await inquirer_1.default.prompt([
153
+ {
154
+ type: 'input',
155
+ name: 'redirectUrl',
156
+ message: en_1.messages.APP_CREATE_REDIRECT_PROMPT,
157
+ default: defaultRedirect,
158
+ validate: validateRedirectUrl,
159
+ },
160
+ ]);
161
+ redirectUrls.push(firstUrl.trim());
162
+ while (await promptAddAnotherRedirect()) {
163
+ const { nextUrl } = await inquirer_1.default.prompt([
189
164
  {
190
165
  type: 'input',
191
- name: 'logoUrl',
192
- message: en_1.messages.APP_CREATE_LOGO_PROMPT,
193
- validate: validateLogoUrl,
166
+ name: 'nextUrl',
167
+ message: en_1.messages.APP_CREATE_REDIRECT_PROMPT,
168
+ validate: validateRedirectUrl,
194
169
  },
195
170
  ]);
196
- const trimmed = String(logoUrl ?? '').trim();
197
- if (trimmed)
198
- logoUri = trimmed;
171
+ redirectUrls.push(nextUrl.trim());
172
+ }
173
+ return redirectUrls;
174
+ }
175
+ // 3. Redirect URI(s) — already validated by collectUrls parser when passed via flag
176
+ async function resolveRedirectUrls(redirectUriFlag, quiet) {
177
+ const flagUrls = redirectUriFlag ?? [];
178
+ if (flagUrls.length > 0) {
179
+ return flagUrls;
199
180
  }
200
- // 5. Create the app
201
- const payload = {
202
- name: appName,
203
- public: distribution === 'public',
204
- redirect_uris: redirectUrls,
181
+ if (process.stdin.isTTY) {
182
+ return promptRedirectUrls(quiet);
183
+ }
184
+ return [constants_1.DEFAULT_REDIRECT_URI];
185
+ }
186
+ // 4. Logo URL (optional) — prompt interactively when no --logo-uri flag.
187
+ // Skipped under --json since the field is optional and --json implies scripting.
188
+ async function resolveLogoUri(logoUriFlag, jsonMode) {
189
+ if (logoUriFlag || !process.stdin.isTTY || jsonMode) {
190
+ return logoUriFlag;
191
+ }
192
+ const { logoUrl } = await inquirer_1.default.prompt([
193
+ {
194
+ type: 'input',
195
+ name: 'logoUrl',
196
+ message: en_1.messages.APP_CREATE_LOGO_PROMPT,
197
+ validate: validateLogoUrl,
198
+ },
199
+ ]);
200
+ const trimmed = String(logoUrl ?? '').trim();
201
+ return trimmed || undefined;
202
+ }
203
+ function buildCreatePayload(inputs) {
204
+ return {
205
+ name: inputs.appName,
206
+ distribution_type: inputs.distribution,
207
+ redirect_uris: inputs.redirectUrls,
205
208
  scopes: [...constants_1.DEFAULT_SCOPES],
206
- ...(logoUri ? { logo_uri: logoUri } : {}),
209
+ ...(inputs.logoUri ? { logo_uri: inputs.logoUri } : {}),
207
210
  };
208
- let result;
209
- const spinner = (0, ui_1.createSpinner)('Creating app...', { silent: options.json });
211
+ }
212
+ async function retryCreateWithNewName(inputs) {
213
+ (0, logger_1.logError)(en_1.messages.APP_CREATE_NAME_TAKEN);
214
+ const retry = await inquirer_1.default.prompt([
215
+ {
216
+ type: 'input',
217
+ name: 'name',
218
+ message: en_1.messages.APP_CREATE_NAME_PROMPT,
219
+ validate: validators_1.validateAppName,
220
+ },
221
+ ]);
222
+ const retrySpinner = (0, ui_1.createSpinner)('Creating app...');
223
+ try {
224
+ const result = await container_1.appService.createApp(buildCreatePayload({ ...inputs, appName: retry.name }));
225
+ retrySpinner.stop();
226
+ // Use the retried name for cache, JSON output, display, and scaffold prompt
227
+ return { result, appName: retry.name };
228
+ }
229
+ catch (retryErr) {
230
+ retrySpinner.stop();
231
+ throw retryErr;
232
+ }
233
+ }
234
+ // 5. Create the app
235
+ async function createAppWithRetry(inputs, jsonMode) {
236
+ const spinner = (0, ui_1.createSpinner)('Creating app...', { silent: jsonMode });
210
237
  try {
211
- result = await container_1.appService.createApp(payload);
238
+ const result = await container_1.appService.createApp(buildCreatePayload(inputs));
212
239
  spinner.stop();
240
+ return { result, appName: inputs.appName };
213
241
  }
214
242
  catch (err) {
215
243
  spinner.stop();
216
244
  if (err instanceof errors_1.ApiError && err.errorCode === errors_1.ErrorCode.APP_LIMIT_REACHED) {
217
- if (options.json) {
245
+ if (jsonMode) {
218
246
  (0, json_output_1.jsonOutput)({ error: 'APP_LIMIT_REACHED', message: en_1.messages.APP_CREATE_LIMIT_REACHED });
219
247
  }
220
248
  throw new errors_1.CliError(en_1.messages.APP_CREATE_LIMIT_REACHED);
221
249
  }
222
250
  if (err instanceof errors_1.ApiError && err.statusCode === 409) {
223
- (0, logger_1.logError)(en_1.messages.APP_CREATE_NAME_TAKEN);
224
- const retry = await inquirer_1.default.prompt([
225
- {
226
- type: 'input',
227
- name: 'name',
228
- message: en_1.messages.APP_CREATE_NAME_PROMPT,
229
- validate: validators_1.validateAppName,
230
- },
231
- ]);
232
- const retrySpinner = (0, ui_1.createSpinner)('Creating app...');
233
- try {
234
- result = await container_1.appService.createApp({
235
- name: retry.name,
236
- public: distribution === 'public',
237
- redirect_uris: redirectUrls,
238
- scopes: [...constants_1.DEFAULT_SCOPES],
239
- ...(logoUri ? { logo_uri: logoUri } : {}),
240
- });
241
- retrySpinner.stop();
242
- // Use the retried name for cache, JSON output, display, and scaffold prompt
243
- appName = retry.name;
244
- }
245
- catch (retryErr) {
246
- retrySpinner.stop();
247
- throw retryErr;
248
- }
249
- }
250
- else {
251
- throw err;
251
+ return retryCreateWithNewName(inputs);
252
252
  }
253
+ throw err;
253
254
  }
254
- // Store app credentials locally — client_secret may not be retrievable again
255
- (0, config_1.saveAppCredentials)(result.app_id, {
256
- clientId: result.client_id,
257
- clientSecret: result.client_secret,
258
- });
259
- if (appName)
260
- (0, config_1.saveAppName)(result.app_id, appName);
261
- const resultRedirectUris = result.redirect_uris;
262
- if (options.json) {
263
- (0, json_output_1.jsonOutput)({
264
- appId: result.app_id,
265
- appName,
266
- clientId: result.client_id,
267
- clientSecret: en_1.messages.CLIENT_SECRET_HIDDEN_JSON,
268
- redirectUri: resultRedirectUris,
269
- ...(logoUri ? { logoUri } : {}),
270
- });
271
- return;
272
- }
255
+ }
256
+ function renderCreatedApp(result, appName, logoUri) {
273
257
  const boxLines = [
274
258
  `App name: ${appName}`,
275
259
  `App ID: ${result.app_id}`,
276
260
  `Client ID: ${result.client_id}`,
277
261
  `Client secret: ${en_1.messages.CLIENT_SECRET_HIDDEN_HUMAN}`,
278
- ...resultRedirectUris.map((uri, i) => `Redirect URL ${i + 1}: ${uri}`),
262
+ ...result.redirect_uris.map((uri, i) => `Redirect URL ${i + 1}: ${uri}`),
279
263
  ...(logoUri ? [`Logo URL: ${logoUri}`] : []),
280
264
  `${en_1.messages.APP_CREATE_BOX_SCOPES_LABEL} ${[...constants_1.DEFAULT_SCOPES].join(', ')}`,
281
265
  '',
282
266
  en_1.messages.APP_CREATE_BOX_SCOPE_HINT,
283
267
  ];
284
268
  (0, ui_1.printBox)(en_1.messages.APP_CREATE_BOX_TITLE, boxLines);
285
- // 4. Smart hand-off → scaffold
269
+ }
270
+ // Smart hand-off → scaffold
271
+ async function offerScaffoldHandoff(result, appName) {
286
272
  const { shouldScaffold } = await inquirer_1.default.prompt([
287
273
  {
288
274
  type: 'confirm',
@@ -302,5 +288,38 @@ exports.createCommand = (0, command_handler_1.withCommandHandler)(async (options
302
288
  constants_1.CLI.APP_LIST,
303
289
  ]);
304
290
  }
291
+ }
292
+ exports.createCommand = (0, command_handler_1.withCommandHandler)(async (options) => {
293
+ const jsonMode = !!options.json;
294
+ if (!(await confirmCreateOverLinkedApp())) {
295
+ return;
296
+ }
297
+ const inputs = {
298
+ appName: await resolveAppName(options.name),
299
+ distribution: await resolveDistribution(options.distribution),
300
+ redirectUrls: await resolveRedirectUrls(options.redirectUri, jsonMode),
301
+ logoUri: await resolveLogoUri(options.logoUri, jsonMode),
302
+ };
303
+ const { result, appName } = await createAppWithRetry(inputs, jsonMode);
304
+ // Store app credentials locally — client_secret may not be retrievable again
305
+ (0, config_1.saveAppCredentials)(result.app_id, {
306
+ clientId: result.client_id,
307
+ clientSecret: result.client_secret,
308
+ });
309
+ if (appName)
310
+ (0, config_1.saveAppName)(result.app_id, appName);
311
+ if (jsonMode) {
312
+ (0, json_output_1.jsonOutput)({
313
+ appId: result.app_id,
314
+ appName,
315
+ clientId: result.client_id,
316
+ clientSecret: en_1.messages.CLIENT_SECRET_HIDDEN_JSON,
317
+ redirectUri: result.redirect_uris,
318
+ ...(inputs.logoUri ? { logoUri: inputs.logoUri } : {}),
319
+ });
320
+ return;
321
+ }
322
+ renderCreatedApp(result, appName, inputs.logoUri);
323
+ await offerScaffoldHandoff(result, appName);
305
324
  });
306
325
  //# sourceMappingURL=create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/app/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/app/create.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/app/delete.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,aAAa;YACE,MAAM;YAAU,OAAO;WAAS,OAAO;mBAyFlE,CAAC"}
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/app/delete.ts"],"names":[],"mappings":"AA0GA,eAAO,MAAM,aAAa;YACE,MAAM;YAAU,OAAO;WAAS,OAAO;mBAgClE,CAAC"}