@getbrevo/cli 2.0.1 → 2.1.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 (213) hide show
  1. package/CHANGELOG.md +221 -0
  2. package/README.md +8 -5
  3. package/agent-context/AGENTS.md +59 -15
  4. package/agent-context/SKILL.md +70 -14
  5. package/dist/{templates → bin}/files/AGENTS.md.tmpl +11 -1
  6. package/dist/{templates → bin}/files/CLAUDE.md.tmpl +8 -0
  7. package/dist/{templates → bin}/files/README.md.tmpl +11 -14
  8. package/dist/bin/files/app-config.json.tmpl +16 -0
  9. package/dist/{templates → bin}/files/src/oauth/.env.example.tmpl +8 -0
  10. package/dist/{templates → bin}/files/src/oauth/.env.local.tmpl +2 -0
  11. package/dist/{templates → bin}/files/src/oauth/handler.js.tmpl +49 -7
  12. package/dist/{templates → bin}/files/src/oauth/server.js.tmpl +20 -14
  13. package/dist/{templates → bin}/files/src/oauth/token-store.js.tmpl +19 -0
  14. package/dist/bin/index.js +660 -221
  15. package/dist/bin/index.js.map +7 -1
  16. package/package.json +6 -4
  17. package/dist/api/client.d.ts +0 -25
  18. package/dist/api/client.d.ts.map +0 -1
  19. package/dist/api/client.js +0 -205
  20. package/dist/api/client.js.map +0 -1
  21. package/dist/bin/index.d.ts +0 -3
  22. package/dist/bin/index.d.ts.map +0 -1
  23. package/dist/commands/app/create.d.ts +0 -8
  24. package/dist/commands/app/create.d.ts.map +0 -1
  25. package/dist/commands/app/create.js +0 -325
  26. package/dist/commands/app/create.js.map +0 -1
  27. package/dist/commands/app/credentials.d.ts +0 -6
  28. package/dist/commands/app/credentials.d.ts.map +0 -1
  29. package/dist/commands/app/credentials.js +0 -114
  30. package/dist/commands/app/credentials.js.map +0 -1
  31. package/dist/commands/app/delete.d.ts +0 -6
  32. package/dist/commands/app/delete.d.ts.map +0 -1
  33. package/dist/commands/app/delete.js +0 -167
  34. package/dist/commands/app/delete.js.map +0 -1
  35. package/dist/commands/app/list.d.ts +0 -4
  36. package/dist/commands/app/list.d.ts.map +0 -1
  37. package/dist/commands/app/list.js +0 -71
  38. package/dist/commands/app/list.js.map +0 -1
  39. package/dist/commands/app/scaffold.d.ts +0 -5
  40. package/dist/commands/app/scaffold.d.ts.map +0 -1
  41. package/dist/commands/app/scaffold.js +0 -213
  42. package/dist/commands/app/scaffold.js.map +0 -1
  43. package/dist/commands/app/scopes.d.ts +0 -2
  44. package/dist/commands/app/scopes.d.ts.map +0 -1
  45. package/dist/commands/app/scopes.js +0 -81
  46. package/dist/commands/app/scopes.js.map +0 -1
  47. package/dist/commands/app/start.d.ts +0 -5
  48. package/dist/commands/app/start.d.ts.map +0 -1
  49. package/dist/commands/app/start.js +0 -220
  50. package/dist/commands/app/start.js.map +0 -1
  51. package/dist/commands/app/update.d.ts +0 -2
  52. package/dist/commands/app/update.d.ts.map +0 -1
  53. package/dist/commands/app/update.js +0 -444
  54. package/dist/commands/app/update.js.map +0 -1
  55. package/dist/commands/definitions.d.ts +0 -5
  56. package/dist/commands/definitions.d.ts.map +0 -1
  57. package/dist/commands/definitions.js +0 -262
  58. package/dist/commands/definitions.js.map +0 -1
  59. package/dist/commands/init.d.ts +0 -2
  60. package/dist/commands/init.d.ts.map +0 -1
  61. package/dist/commands/init.js +0 -106
  62. package/dist/commands/init.js.map +0 -1
  63. package/dist/commands/login.d.ts +0 -6
  64. package/dist/commands/login.d.ts.map +0 -1
  65. package/dist/commands/login.js +0 -251
  66. package/dist/commands/login.js.map +0 -1
  67. package/dist/commands/logout.d.ts +0 -5
  68. package/dist/commands/logout.d.ts.map +0 -1
  69. package/dist/commands/logout.js +0 -54
  70. package/dist/commands/logout.js.map +0 -1
  71. package/dist/commands/skill/install.d.ts +0 -4
  72. package/dist/commands/skill/install.d.ts.map +0 -1
  73. package/dist/commands/skill/install.js +0 -29
  74. package/dist/commands/skill/install.js.map +0 -1
  75. package/dist/commands/skill/uninstall.d.ts +0 -4
  76. package/dist/commands/skill/uninstall.d.ts.map +0 -1
  77. package/dist/commands/skill/uninstall.js +0 -23
  78. package/dist/commands/skill/uninstall.js.map +0 -1
  79. package/dist/commands/whoami.d.ts +0 -4
  80. package/dist/commands/whoami.d.ts.map +0 -1
  81. package/dist/commands/whoami.js +0 -85
  82. package/dist/commands/whoami.js.map +0 -1
  83. package/dist/container.d.ts +0 -7
  84. package/dist/container.d.ts.map +0 -1
  85. package/dist/container.js +0 -28
  86. package/dist/container.js.map +0 -1
  87. package/dist/lang/en.d.ts +0 -161
  88. package/dist/lang/en.d.ts.map +0 -1
  89. package/dist/lang/en.js +0 -188
  90. package/dist/lang/en.js.map +0 -1
  91. package/dist/lib/abort.d.ts +0 -3
  92. package/dist/lib/abort.d.ts.map +0 -1
  93. package/dist/lib/abort.js +0 -30
  94. package/dist/lib/abort.js.map +0 -1
  95. package/dist/lib/auth-guard.d.ts +0 -3
  96. package/dist/lib/auth-guard.d.ts.map +0 -1
  97. package/dist/lib/auth-guard.js +0 -47
  98. package/dist/lib/auth-guard.js.map +0 -1
  99. package/dist/lib/browser.d.ts +0 -2
  100. package/dist/lib/browser.d.ts.map +0 -1
  101. package/dist/lib/browser.js +0 -16
  102. package/dist/lib/browser.js.map +0 -1
  103. package/dist/lib/cli-version.d.ts +0 -2
  104. package/dist/lib/cli-version.d.ts.map +0 -1
  105. package/dist/lib/cli-version.js +0 -59
  106. package/dist/lib/cli-version.js.map +0 -1
  107. package/dist/lib/command-handler.d.ts +0 -10
  108. package/dist/lib/command-handler.d.ts.map +0 -1
  109. package/dist/lib/command-handler.js +0 -16
  110. package/dist/lib/command-handler.js.map +0 -1
  111. package/dist/lib/command-registry.d.ts +0 -28
  112. package/dist/lib/command-registry.d.ts.map +0 -1
  113. package/dist/lib/command-registry.js +0 -54
  114. package/dist/lib/command-registry.js.map +0 -1
  115. package/dist/lib/config.d.ts +0 -83
  116. package/dist/lib/config.d.ts.map +0 -1
  117. package/dist/lib/config.js +0 -430
  118. package/dist/lib/config.js.map +0 -1
  119. package/dist/lib/constants.d.ts +0 -48
  120. package/dist/lib/constants.d.ts.map +0 -1
  121. package/dist/lib/constants.js +0 -121
  122. package/dist/lib/constants.js.map +0 -1
  123. package/dist/lib/errors.d.ts +0 -30
  124. package/dist/lib/errors.d.ts.map +0 -1
  125. package/dist/lib/errors.js +0 -66
  126. package/dist/lib/errors.js.map +0 -1
  127. package/dist/lib/exit-codes.d.ts +0 -9
  128. package/dist/lib/exit-codes.d.ts.map +0 -1
  129. package/dist/lib/exit-codes.js +0 -12
  130. package/dist/lib/exit-codes.js.map +0 -1
  131. package/dist/lib/hidden-input.d.ts +0 -2
  132. package/dist/lib/hidden-input.d.ts.map +0 -1
  133. package/dist/lib/hidden-input.js +0 -78
  134. package/dist/lib/hidden-input.js.map +0 -1
  135. package/dist/lib/json-output.d.ts +0 -6
  136. package/dist/lib/json-output.d.ts.map +0 -1
  137. package/dist/lib/json-output.js +0 -11
  138. package/dist/lib/json-output.js.map +0 -1
  139. package/dist/lib/logger.d.ts +0 -11
  140. package/dist/lib/logger.d.ts.map +0 -1
  141. package/dist/lib/logger.js +0 -110
  142. package/dist/lib/logger.js.map +0 -1
  143. package/dist/lib/port.d.ts +0 -25
  144. package/dist/lib/port.d.ts.map +0 -1
  145. package/dist/lib/port.js +0 -103
  146. package/dist/lib/port.js.map +0 -1
  147. package/dist/lib/telemetry.d.ts +0 -9
  148. package/dist/lib/telemetry.d.ts.map +0 -1
  149. package/dist/lib/telemetry.js +0 -57
  150. package/dist/lib/telemetry.js.map +0 -1
  151. package/dist/lib/ui.d.ts +0 -14
  152. package/dist/lib/ui.d.ts.map +0 -1
  153. package/dist/lib/ui.js +0 -75
  154. package/dist/lib/ui.js.map +0 -1
  155. package/dist/lib/update-notifier.d.ts +0 -37
  156. package/dist/lib/update-notifier.d.ts.map +0 -1
  157. package/dist/lib/update-notifier.js +0 -298
  158. package/dist/lib/update-notifier.js.map +0 -1
  159. package/dist/lib/validators.d.ts +0 -55
  160. package/dist/lib/validators.d.ts.map +0 -1
  161. package/dist/lib/validators.js +0 -166
  162. package/dist/lib/validators.js.map +0 -1
  163. package/dist/services/account.d.ts +0 -8
  164. package/dist/services/account.d.ts.map +0 -1
  165. package/dist/services/account.js +0 -15
  166. package/dist/services/account.js.map +0 -1
  167. package/dist/services/app.d.ts +0 -38
  168. package/dist/services/app.d.ts.map +0 -1
  169. package/dist/services/app.js +0 -145
  170. package/dist/services/app.js.map +0 -1
  171. package/dist/services/browser-auth.d.ts +0 -15
  172. package/dist/services/browser-auth.d.ts.map +0 -1
  173. package/dist/services/browser-auth.js +0 -188
  174. package/dist/services/browser-auth.js.map +0 -1
  175. package/dist/services/normalize-app-id.d.ts +0 -12
  176. package/dist/services/normalize-app-id.d.ts.map +0 -1
  177. package/dist/services/normalize-app-id.js +0 -38
  178. package/dist/services/normalize-app-id.js.map +0 -1
  179. package/dist/services/oauth-metadata.d.ts +0 -7
  180. package/dist/services/oauth-metadata.d.ts.map +0 -1
  181. package/dist/services/oauth-metadata.js +0 -43
  182. package/dist/services/oauth-metadata.js.map +0 -1
  183. package/dist/services/oauth-refresh.d.ts +0 -14
  184. package/dist/services/oauth-refresh.d.ts.map +0 -1
  185. package/dist/services/oauth-refresh.js +0 -70
  186. package/dist/services/oauth-refresh.js.map +0 -1
  187. package/dist/services/scopes-html.d.ts +0 -3
  188. package/dist/services/scopes-html.d.ts.map +0 -1
  189. package/dist/services/scopes-html.js +0 -516
  190. package/dist/services/scopes-html.js.map +0 -1
  191. package/dist/services/scopes-web.d.ts +0 -12
  192. package/dist/services/scopes-web.d.ts.map +0 -1
  193. package/dist/services/scopes-web.js +0 -95
  194. package/dist/services/scopes-web.js.map +0 -1
  195. package/dist/services/skill.d.ts +0 -48
  196. package/dist/services/skill.d.ts.map +0 -1
  197. package/dist/services/skill.js +0 -223
  198. package/dist/services/skill.js.map +0 -1
  199. package/dist/skills/index.d.ts +0 -47
  200. package/dist/skills/index.d.ts.map +0 -1
  201. package/dist/skills/index.js +0 -61
  202. package/dist/skills/index.js.map +0 -1
  203. package/dist/templates/files/app-config.json.tmpl +0 -25
  204. package/dist/templates/index.d.ts +0 -36
  205. package/dist/templates/index.d.ts.map +0 -1
  206. package/dist/templates/index.js +0 -105
  207. package/dist/templates/index.js.map +0 -1
  208. package/dist/types.d.ts +0 -32
  209. package/dist/types.d.ts.map +0 -1
  210. package/dist/types.js +0 -3
  211. package/dist/types.js.map +0 -1
  212. /package/dist/{templates → bin}/files/gitignore.tmpl +0 -0
  213. /package/dist/{templates → bin}/files/src/oauth/package.json.tmpl +0 -0
package/dist/lang/en.js DELETED
@@ -1,188 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.messages = void 0;
4
- const constants_1 = require("../lib/constants");
5
- exports.messages = {
6
- // Update notifier
7
- UPDATE_AVAILABLE: (current, latest) => `Update available: ${current} → ${latest}`,
8
- UPDATE_RUN: (name) => `Run: npm install -g ${name}`,
9
- UPDATE_RUN_YARN: (name) => `Or: yarn global add ${name}`,
10
- // Homebrew formula is `brevo` (tap getbrevo/tap), not the npm package name.
11
- UPDATE_RUN_BREW: 'Or: brew upgrade brevo',
12
- // Force update (major-version behind — blocks the command)
13
- FORCE_UPDATE_REQUIRED: (current, latest) => `Update required: v${current} is no longer supported (latest v${latest}).`,
14
- FORCE_UPDATE_HINT: 'Update to continue using the Brevo CLI:',
15
- // Auth
16
- AUTH_WELCOME: 'Welcome to Brevo CLI',
17
- AUTH_PROMPT_METHOD: 'How would you like to authenticate?',
18
- AUTH_PROMPT_API_KEY: 'Paste your API key:',
19
- AUTH_SUCCESS: (email) => `Authenticated as ${email}`,
20
- AUTH_INVALID_KEY: 'Invalid API key. Please check and try again.',
21
- AUTH_HINT: (keysUrl, docsUrl) => `\n To authenticate, you need a Brevo API key.\n Create one at: ${keysUrl}\n Docs: ${docsUrl}\n`,
22
- AUTH_SAVED: (path) => `Credentials saved to ${path}`,
23
- AUTH_NEXT: `Next: ${constants_1.CLI.APP_CREATE}`,
24
- AUTH_CREATE_APP_PROMPT: 'Would you like to create an app?',
25
- AUTH_NOT_LOGGED_IN: 'Not currently authenticated.',
26
- AUTH_LOGGED_OUT: 'Credentials cleared.',
27
- AUTH_LOGGED_OUT_WITH_APPS: (count) => `Credentials cleared, including cached credentials for ${count} app${count === 1 ? '' : 's'}.`,
28
- AUTH_LOGOUT_APP_WARNING: 'You have cached app credentials (clientId/clientSecret) that cannot be recovered after logout.\n Run `brevo app credentials --reveal-secret` to view them before proceeding.',
29
- AUTH_LOGOUT_CONFIRM: 'Proceed with logout?',
30
- AUTH_EXPIRED: 'Your API key is invalid or expired.',
31
- AUTH_EXPIRED_PROMPT: 'Enter a new API key:',
32
- AUTH_GET_KEY_URL: 'Create an API key at: https://app.brevo.com/settings/keys/api',
33
- AUTH_BROWSER_OPENING: 'Opening your browser to log you in...',
34
- AUTH_BROWSER_FALLBACK_URL: (url) => `If your browser didn't open automatically, open this URL to log in:\n ${url}`,
35
- AUTH_BROWSER_WAITING: 'Waiting for login to complete (Ctrl+C to cancel)...',
36
- AUTH_BROWSER_TOKENS_RECEIVED: (path) => `Login complete. Credentials saved to ${path}. Verifying account...`,
37
- AUTH_BROWSER_TIMEOUT: 'Login timed out before we received a response from the browser.\n If you were completing 2FA, close the browser tab and run `brevo login` again.\n For non-interactive use, set BREVO_API_KEY instead.',
38
- AUTH_BROWSER_CANCELLED: 'Login cancelled.',
39
- AUTH_BROWSER_BAD_PAYLOAD: 'Unexpected response from the login service. Please try again.',
40
- AUTH_BROWSER_NON_INTERACTIVE: 'Browser login needs an interactive terminal. Set BREVO_API_KEY to authenticate non-interactively.',
41
- // Whoami
42
- WHOAMI_AUTHENTICATED: (email, company) => `Authenticated as ${email} (${company})`,
43
- WHOAMI_NOT_AUTHENTICATED: `Not authenticated. Run: ${constants_1.CLI.LOGIN}`,
44
- WHOAMI_CREDENTIAL_MISMATCH: (fields) => `Local credentials mismatch with API for: ${fields.join(', ')}. Run \`${constants_1.CLI.LOGIN}\` to re-authenticate.`,
45
- // App create
46
- APP_CREATE_NAME_PROMPT: 'App name:',
47
- APP_CREATE_TYPE_PROMPT: 'Distribution type?',
48
- APP_CREATE_SUCCESS: 'App created.',
49
- APP_CREATE_SCAFFOLD_PROMPT: 'Generate starter code now?',
50
- APP_CREATE_NAME_TAKEN: 'That name is already taken. Try a different name.',
51
- APP_CREATE_REDIRECT_PROMPT: 'OAuth callback URL — where users are sent after authorizing your app:',
52
- APP_CREATE_REDIRECT_HINT: (cmd) => `Tip: The scaffolded example requires the default callback URL shown below — keep it to test with \`${cmd}\`.`,
53
- APP_CREATE_REDIRECT_ANOTHER: 'Add another redirect URL?',
54
- APP_CREATE_REDIRECT_EMPTY: 'Redirect URL cannot be empty',
55
- APP_CREATE_REDIRECT_INVALID: 'Invalid format. Must start with http:// or https://',
56
- APP_CREATE_LOGO_PROMPT: 'App logo URL (e.g. https://example.com/logo.png, optional — leave blank to skip):',
57
- APP_CREATE_LOGO_INVALID: 'Invalid format. Must be a valid https:// URL (e.g. https://example.com/logo.png).',
58
- APP_CREATE_PORT_IN_USE: (port, available) => `Port ${port} is in use. Defaulting to port ${available}.`,
59
- APP_CREATE_PORT_SCAN_FAILED: (port) => `Warning: Could not find a free port near ${port}. Defaulting to ${port} — it may conflict with a running process.`,
60
- APP_CREATE_LIMIT_REACHED: 'You have reached the maximum number of OAuth apps allowed for your account. To make room, delete an existing app: brevo app delete',
61
- APP_CREATE_PUBLIC_UNAVAILABLE: 'Public distribution is not yet available (coming soon). Use `--distribution private` for now.',
62
- APP_CREATE_BOX_TITLE: 'App created',
63
- APP_CREATE_BOX_SCOPES_LABEL: 'Default scopes:',
64
- APP_CREATE_BOX_SCOPE_HINT: `You can add more scopes later with: ${constants_1.CLI.APP_UPDATE_SCOPE} <scope>`,
65
- // App list
66
- APP_LIST_EMPTY: `No apps found. Create one with: ${constants_1.CLI.APP_CREATE}`,
67
- APP_LIST_HEADER: 'Your OAuth apps:',
68
- // App credentials
69
- APP_CREDENTIALS_REVEAL_CONFIRM: 'Are you sure you want to reveal the client secret?',
70
- APP_CREDENTIALS_SELECT: 'Select an app:',
71
- CLIENT_SECRET_HIDDEN_HUMAN: `[hidden — run \`${constants_1.CLI.APP_CREDENTIALS_REVEAL()}\`]`,
72
- CLIENT_SECRET_HIDDEN_JSON: '[hidden]',
73
- CLIENT_SECRET_NOT_AVAILABLE: '[not available]',
74
- // App update
75
- APP_UPDATE_INVALID_JSON: 'app-config.json contains invalid JSON. Please check the file and try again.',
76
- APP_UPDATE_MISSING_APP_ID: 'app-config.json is missing "appId".',
77
- APP_UPDATE_NO_REDIRECT_URLS: 'app-config.json has no redirect URLs configured.',
78
- APP_UPDATE_INVALID_APP_ID: 'app-config.json has an invalid "appId". Expected a non-empty string.',
79
- APP_UPDATE_INVALID_REDIRECT_URL: (url) => `Invalid redirect URL "${url}". Must be a valid http:// or https:// URL.`,
80
- APP_UPDATE_INVALID_REDIRECT_PROTOCOL: (url) => `Invalid redirect URL "${url}". Must use http:// or https://.`,
81
- APP_UPDATE_SUMMARY: 'Update summary:',
82
- APP_UPDATE_CONFIRM: 'Proceed with update?',
83
- APP_UPDATE_CANCELLED: 'Update cancelled.',
84
- APP_UPDATE_SUCCESS: 'App updated.',
85
- APP_UPDATE_NOTHING_TO_UPDATE: 'Nothing to update. Provide --app-id with --name, --redirect-uri, --scope, or --logo-uri, or run from a scaffolded project directory.',
86
- APP_UPDATE_NO_APP_RESOLVED: 'Cannot determine which app to update. Provide --app-id or run from a directory with app-config.json.',
87
- APP_UPDATE_APP_ID_MISMATCH: (flagId, configId) => `--app-id ${flagId} does not match app-config.json (${configId}). Pass --name or --redirect-uri to update app ${flagId}, or remove --app-id to update app ${configId}.`,
88
- APP_UPDATE_SCOPES_APPENDED: (scopes) => `Scopes appended: ${scopes.join(', ')}`,
89
- // Legacy 'all' scope deprecation (BEX-214)
90
- LEGACY_ALL_SCOPE_DEPRECATED_BLOCK: `This app currently has the legacy 'all' OAuth scope, which is being deprecated.\n Replace 'all' with the specific scopes your integration uses (if you keep an app-config.json, edit auth.scopes there too).\n Run \`${constants_1.CLI.APP_SCOPES}\` to see the catalog, then re-run \`${constants_1.CLI.APP_UPDATE_SCOPE} <scope>\` (repeatable) to migrate.`,
91
- LEGACY_ALL_SCOPE_START_BLOCK: `This app's auth.scopes in app-config.json still contains the legacy 'all' OAuth scope, which is being deprecated.\n Replace 'all' with the specific scopes your integration uses (run \`${constants_1.CLI.APP_SCOPES}\` to see the catalog),\n migrate with \`${constants_1.CLI.APP_UPDATE_SCOPE} <scope>\` (repeatable), then re-run \`${constants_1.CLI.APP_START('oauth')}\`.`,
92
- LEGACY_ALL_SCOPE_LIST_TAG: ` (legacy 'all' — deprecated)`,
93
- LEGACY_ALL_SCOPE_SCAFFOLD_SUBSTITUTED: (writtenScopes) => `This app still has the legacy 'all' OAuth scope (deprecated). Wrote ${writtenScopes} to app-config.json instead of 'all'. Migrate the app with \`${constants_1.CLI.APP_UPDATE_SCOPE} <scope>\`.`,
94
- LEGACY_ALL_SCOPE_UPDATE_MIGRATING: `Migrating from legacy 'all' scope — 'all' will be removed.`,
95
- // App delete
96
- APP_DELETE_CONFIRM: (name, id) => `Delete app "${name}" (${id})? This cannot be undone.`,
97
- APP_DELETE_SUCCESS: (id) => `App ${id} deleted.`,
98
- APP_DELETE_CANCELLED: 'Delete cancelled.',
99
- APP_DELETE_FOLDER_CONFIRM: (dir) => `Delete the local project folder at ${dir}?`,
100
- APP_DELETE_FOLDER_SUCCESS: (dir) => `Project folder deleted: ${dir}`,
101
- APP_DELETE_FOLDER_FAILED: (dir) => `Could not delete folder ${dir}. Remove it manually.`,
102
- // App scaffold
103
- APP_SCAFFOLD_DIR_PROMPT: 'Output directory:',
104
- APP_SCAFFOLD_DIR_EXISTS: 'Directory already exists. What would you like to do?',
105
- APP_SCAFFOLD_ALREADY_IN_PROJECT: `Project already scaffolded in this directory (app-config.json found). Run from a different directory, or use \`${constants_1.CLI.APP_UPDATE}\` to push config changes.`,
106
- APP_SCAFFOLD_SUCCESS: (count) => `Test app scaffolded (${count} files)`,
107
- APP_SCAFFOLD_NEXT_STEPS_TITLE: 'Next steps',
108
- APP_SCAFFOLD_NEXT_STEPS_LINES: (dir) => [
109
- `1. cd ${dir}`,
110
- `2. yarn --cwd src/oauth`,
111
- ` (or: npm --prefix src/oauth install)`,
112
- `3. ${constants_1.CLI.APP_START('oauth')}`,
113
- ],
114
- APP_SCAFFOLD_SCOPES_TIP: `Tip: list available scopes with \`${constants_1.CLI.APP_SCOPES}\`. Update scopes via \`${constants_1.CLI.APP_UPDATE_SCOPE} <name>\` (repeatable), or by editing \`auth.scopes\` in app-config.json and running \`${constants_1.CLI.APP_UPDATE}\`.`,
115
- // App start
116
- APP_START_FEATURE_NOT_FOUND: (entryFile) => `Feature entry file not found.\n\n Expected: ${entryFile}\n Current directory: ${process.cwd()}\n\n Make sure you are inside your scaffolded project directory.\n Run \`cd <your-project-folder>\` and try again.`,
117
- APP_START_NO_DEPS: (featureDir) => `Dependencies not installed. Run \`yarn --cwd ${featureDir}\` (or \`npm --prefix ${featureDir} install\`) first.`,
118
- APP_START_STOPPED: 'Process stopped.',
119
- APP_START_MISSING_FEATURE: (available) => `Missing feature name.\n\nAvailable features:\n${available}\n\nUsage: ${constants_1.CLI.APP_START()}`,
120
- APP_START_UNKNOWN_FEATURE: (feature, available) => `Unknown feature "${feature}". Available features: ${available}`,
121
- APP_START_PORT_IN_USE: (port) => `Port ${port} is already in use.\n\n Either stop the process using port ${port}, use a different port with \`--port <port>\`,\n or update your redirect URL with \`${constants_1.CLI.APP_UPDATE} --redirect-uri http://localhost:<port>/auth/callback\`.`,
122
- APP_START_CUSTOM_PORT_IN_USE: (port) => `Port ${port} is already in use.\n\n Stop the process using port ${port}, or pick another port with \`--port <port>\`\n and update your redirect URL with \`${constants_1.CLI.APP_UPDATE} --redirect-uri http://localhost:<port>/auth/callback\`.`,
123
- APP_START_EXITED: (feature, code) => `${feature} exited with code ${code}`,
124
- APP_START_FAILED: (feature, error) => `Failed to start ${feature}: ${error}`,
125
- APP_START_REDIRECT_NOT_REGISTERED: (port) => `Port ${port} isn't registered as a redirect URL for this app.`,
126
- APP_START_REDIRECT_REGISTER_PROMPT: (url) => `Register ${url}? You can delete it later if you want.`,
127
- APP_START_REDIRECT_REGISTERING: 'Registering redirect URL...',
128
- APP_START_REDIRECT_REGISTERED: (url) => `Registered ${url}.`,
129
- APP_START_REDIRECT_DECLINED: (url) => `Continuing without registering. The OAuth callback at ${url} will fail until you register it. Run \`${constants_1.CLI.APP_UPDATE} --redirect-uri ${url}\` to register later.`,
130
- APP_START_REDIRECT_NON_INTERACTIVE: (port, url) => `Port ${port} is not registered as a redirect URL for this app, and we can't prompt in non-interactive mode. Run \`${constants_1.CLI.APP_UPDATE} --redirect-uri ${url}\` first, or re-run interactively.`,
131
- AUTH_LOGOUT_NON_INTERACTIVE: 'Cannot prompt for confirmation in non-interactive mode. Use --force to skip.',
132
- // Errors
133
- ERR_NETWORK: 'Cannot reach Brevo API.',
134
- ERR_RATE_LIMITED: (retryAfter) => `Rate limited. Retrying in ${retryAfter} seconds...`,
135
- ERR_REGISTRY: 'Operation failed due to a registry error. Please try again.',
136
- ERR_AUTH_GATEWAY: 'API is behind an authentication gateway (e.g. Cloudflare Access). Sign in via your browser first, or check your API base URL.',
137
- // Security warnings
138
- TLS_VERIFICATION_DISABLED: 'TLS certificate verification is disabled (NODE_TLS_REJECT_UNAUTHORIZED=0). This is insecure — API keys and tokens can be intercepted on the network.',
139
- // Init
140
- INIT_WELCOME: 'Brevo CLI — Quick Setup',
141
- INIT_ALREADY_LOGGED_IN: 'Already authenticated.',
142
- INIT_STEP_LOGIN: ' Step 1: Authenticate with your Brevo account',
143
- INIT_STEP_CREATE: ' Step 2: Create your first OAuth app',
144
- INIT_APPS_EXIST: (count) => `You have ${count} app${count === 1 ? '' : 's'} already.`,
145
- INIT_APP_LINKED: (name) => `App "${name}" is linked to this project (app-config.json).`,
146
- INIT_APP_ACTION: 'What would you like to do?',
147
- INIT_DONE: `All set! Run \`${constants_1.CLI.APP_START('oauth')}\` to test your OAuth flow, or \`${constants_1.CLI.HELP}\` to see all commands.`,
148
- // Skill
149
- SKILL_INSTALL_SUCCESS: (name, version, dir) => `Installed ${name}@${version} → ${dir}`,
150
- SKILL_INSTALL_CLAUDE_ONLY: 'This skill is consumed by Claude Code. Other AI tools (Claude Desktop chat, Cursor, Copilot CLI, Gemini, etc.) should reference agent-context/AGENTS.md from the @getbrevo/cli npm package instead.',
151
- SKILL_INSTALL_ALREADY: (name, version) => `${name}@${version} is already up to date.`,
152
- SKILL_UNINSTALL_SUCCESS: (name, dir) => `Uninstalled ${name} from ${dir}`,
153
- SKILL_UNINSTALL_NONE: 'No Brevo skills installed.',
154
- SKILL_AUTOREFRESHED: (name, oldVer, newVer) => `↻ refreshed ${name} skill (v${oldVer} → v${newVer})`,
155
- SKILL_AUTOREFRESH_FAILED: (name, err) => `⚠ failed to refresh ${name} skill: ${err}`,
156
- // App scopes
157
- APP_SCOPES_EMPTY: 'The IdP returned an empty scope list.',
158
- APP_SCOPES_USAGE_HINT: `Add a scope to an app with \`${constants_1.CLI.APP_UPDATE_SCOPE} <scope> --app-id <id>\`.`,
159
- APP_SCOPES_DOCS_HINT: `Full CLI reference: ${constants_1.BREVO_CLI_REFERENCE_URL}`,
160
- APP_SCOPES_CATALOG_DOCS_HINT: `Scope catalog docs: ${constants_1.BREVO_OAUTH_SCOPES_DOCS_URL}`,
161
- APP_SCOPES_WEB_LISTENING: (url) => `Open in browser: ${url} (Ctrl+C to stop)`,
162
- APP_SCOPES_WEB_TITLE: 'Brevo OAuth scopes',
163
- APP_SCOPES_WEB_INTRO: (count, sourceUrl) => `${count} scope${count === 1 ? '' : 's'} from ${sourceUrl}`,
164
- APP_SCOPES_WEB_SEARCH_PLACEHOLDER: 'Filter scopes…',
165
- APP_SCOPES_WEB_EMPTY: 'The IdP returned an empty scope list.',
166
- APP_SCOPES_WEB_FOOTER: 'Served locally by the Brevo CLI. Press Ctrl+C in the terminal to stop.',
167
- APP_SCOPES_WEB_REFRESH: 'Refresh',
168
- APP_SCOPES_WEB_REFRESHING: 'Refreshing…',
169
- APP_SCOPES_WEB_REFRESH_FAILED: `Refresh failed. Please restart \`${constants_1.CLI.APP_SCOPES} --web\` to retry.`,
170
- APP_SCOPES_WEB_ENDPOINTS_LABEL: 'API endpoints',
171
- APP_SCOPES_WEB_NO_ENDPOINTS: 'No API endpoints listed for this scope.',
172
- APP_SCOPES_WEB_COPY: 'Copy',
173
- APP_SCOPES_WEB_COPIED: 'Copied!',
174
- // {category} / {scope} are replaced client-side in the web page script.
175
- APP_SCOPES_WEB_COPY_CATEGORY_ARIA: 'Copy {category} scopes',
176
- APP_SCOPES_WEB_SELECT_SCOPE_ARIA: 'Select {scope}',
177
- APP_SCOPES_WEB_COPY_SELECTED: 'Copy selected',
178
- APP_SCOPES_WEB_SELECTED_PLACEHOLDER: `Tick scopes to build a comma-separated list for \`${constants_1.CLI.APP_UPDATE_SCOPE}\` or app-config.json`,
179
- APP_SCOPES_WEB_LEGACY_BADGE: 'deprecated',
180
- APP_SCOPES_WEB_LEGACY_TITLE: `Legacy 'all' scope — replace with the granular scopes your integration uses.`,
181
- APP_SCOPES_WEB_DOCS_LINK: 'Full CLI reference',
182
- APP_SCOPES_WEB_CATALOG_DOCS_CTA: 'Read the scope catalog docs',
183
- OAUTH_METADATA_MISSING_SCOPES: 'IdP scopes response did not include a scopes array.',
184
- OAUTH_METADATA_FETCH_FAILED: (url, status) => `Failed to fetch OAuth scopes from ${url} (HTTP ${status}).`,
185
- // General
186
- ABORTED: 'Aborted.',
187
- };
188
- //# sourceMappingURL=en.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/lang/en.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare function isAbortError(err: unknown): boolean;
2
- export declare function withAbortHandler<T>(fn: () => Promise<T>): Promise<T>;
3
- //# sourceMappingURL=abort.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../src/lib/abort.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAclD;AAED,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAS1E"}
package/dist/lib/abort.js DELETED
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isAbortError = isAbortError;
4
- exports.withAbortHandler = withAbortHandler;
5
- const errors_1 = require("./errors");
6
- function isAbortError(err) {
7
- if (!(err instanceof Error))
8
- return false;
9
- // Check error name/constructor first (more reliable than message strings)
10
- const name = err.name?.toLowerCase() ?? '';
11
- if (name === 'exitprompterror')
12
- return true;
13
- const msg = err.message.toLowerCase();
14
- return (msg.includes('readline was closed') ||
15
- msg.includes('user force closed') ||
16
- msg.includes('exitprompterror') ||
17
- msg.includes('prompt was closed'));
18
- }
19
- async function withAbortHandler(fn) {
20
- try {
21
- return await fn();
22
- }
23
- catch (err) {
24
- if (isAbortError(err)) {
25
- throw new errors_1.AbortError();
26
- }
27
- throw err;
28
- }
29
- }
30
- //# sourceMappingURL=abort.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"abort.js","sourceRoot":"","sources":["../../src/lib/abort.ts"],"names":[],"mappings":";;AAEA,oCAcC;AAED,4CASC;AA3BD,qCAAsC;AAEtC,SAAgB,YAAY,CAAC,GAAY;IACvC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE1C,0EAA0E;IAC1E,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAI,IAAI,KAAK,iBAAiB;QAAE,OAAO,IAAI,CAAC;IAE5C,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACtC,OAAO,CACL,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACnC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACjC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC/B,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAClC,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,gBAAgB,CAAI,EAAoB;IAC5D,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,mBAAU,EAAE,CAAC;QACzB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function installAuthGuard(program: Command): void;
3
- //# sourceMappingURL=auth-guard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-guard.d.ts","sourceRoot":"","sources":["../../src/lib/auth-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8BvD"}
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.installAuthGuard = installAuthGuard;
4
- const config_1 = require("./config");
5
- const constants_1 = require("./constants");
6
- const errors_1 = require("./errors");
7
- // `available-scopes` only fetches the public IdP scope catalog (no Brevo API
8
- // key involved), so it works before `brevo login`.
9
- const UNAUTHENTICATED_COMMANDS = new Set([
10
- 'login',
11
- 'help',
12
- 'init',
13
- 'whoami',
14
- 'logout',
15
- 'available-scopes',
16
- ]);
17
- // Subcommand groups whose entire subtree is local-only and never needs auth.
18
- // Skill management touches files under ~/.claude/ — there is nothing to call
19
- // against the Brevo API.
20
- const UNAUTHENTICATED_GROUPS = new Set(['skill:cli']);
21
- function installAuthGuard(program) {
22
- program.hook('preAction', (thisCommand, actionCommand) => {
23
- const commandName = actionCommand.name();
24
- const parentName = actionCommand.parent?.name();
25
- // The root program's default action handles "no args" (help) and
26
- // "unknown command" (error). Skipping the auth guard there ensures
27
- // unknown commands surface as "unknown command" instead of being
28
- // intercepted by an auth-required check.
29
- if (actionCommand === thisCommand || commandName === program.name()) {
30
- return;
31
- }
32
- // Allow login, help, and version through without auth
33
- if (UNAUTHENTICATED_COMMANDS.has(commandName) ||
34
- (parentName && UNAUTHENTICATED_GROUPS.has(parentName)) ||
35
- process.argv.includes('--help') ||
36
- process.argv.includes('-h') ||
37
- process.argv.includes('--version') ||
38
- process.argv.includes('-V') ||
39
- process.argv.length <= 2) {
40
- return;
41
- }
42
- if (!(0, config_1.isAuthenticated)()) {
43
- throw new errors_1.CliError(`Not authenticated. Run: ${constants_1.CLI.LOGIN}`);
44
- }
45
- });
46
- }
47
- //# sourceMappingURL=auth-guard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-guard.js","sourceRoot":"","sources":["../../src/lib/auth-guard.ts"],"names":[],"mappings":";;AAoBA,4CA8BC;AAjDD,qCAA2C;AAC3C,2CAAkC;AAClC,qCAAoC;AAEpC,6EAA6E;AAC7E,mDAAmD;AACnD,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC;IACvC,OAAO;IACP,MAAM;IACN,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,kBAAkB;CACnB,CAAC,CAAC;AACH,6EAA6E;AAC7E,6EAA6E;AAC7E,yBAAyB;AACzB,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAEtD,SAAgB,gBAAgB,CAAC,OAAgB;IAC/C,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE;QACvD,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QAEhD,iEAAiE;QACjE,mEAAmE;QACnE,iEAAiE;QACjE,yCAAyC;QACzC,IAAI,aAAa,KAAK,WAAW,IAAI,WAAW,KAAK,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACpE,OAAO;QACT,CAAC;QAED,sDAAsD;QACtD,IACE,wBAAwB,CAAC,GAAG,CAAC,WAAW,CAAC;YACzC,CAAC,UAAU,IAAI,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EACxB,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAA,wBAAe,GAAE,EAAE,CAAC;YACvB,MAAM,IAAI,iBAAQ,CAAC,2BAA2B,eAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function openBrowser(url: string): void;
2
- //# sourceMappingURL=browser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/lib/browser.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQ7C"}
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.openBrowser = openBrowser;
4
- const node_child_process_1 = require("node:child_process");
5
- function openBrowser(url) {
6
- if (process.platform === 'darwin') {
7
- (0, node_child_process_1.execFile)('open', [url]);
8
- }
9
- else if (process.platform === 'win32') {
10
- (0, node_child_process_1.execFile)('cmd', ['/c', 'start', '', url]);
11
- }
12
- else {
13
- (0, node_child_process_1.execFile)('xdg-open', [url]);
14
- }
15
- }
16
- //# sourceMappingURL=browser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/lib/browser.ts"],"names":[],"mappings":";;AAEA,kCAQC;AAVD,2DAA8C;AAE9C,SAAgB,WAAW,CAAC,GAAW;IACrC,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAA,6BAAQ,EAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACxC,IAAA,6BAAQ,EAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,IAAA,6BAAQ,EAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare const CLI_VERSION: string;
2
- //# sourceMappingURL=cli-version.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-version.d.ts","sourceRoot":"","sources":["../../src/lib/cli-version.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,WAAW,QAAmB,CAAC"}
@@ -1,59 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.CLI_VERSION = void 0;
37
- const fs = __importStar(require("node:fs"));
38
- const path = __importStar(require("node:path"));
39
- /**
40
- * CLI version pulled from the bundled `package.json` at module-init.
41
- *
42
- * Resolved relative to this file so the same lookup works under ts-jest
43
- * (`src/lib/` → repo root) and the published tarball
44
- * (`node_modules/@getbrevo/cli/dist/lib/` → package root). Falls back to
45
- * `'0.0.0'` if the file is missing or malformed — safe default for any
46
- * consumer that uses this for telemetry or skill-version stamping.
47
- */
48
- function readCliVersion() {
49
- try {
50
- const pkgPath = path.resolve(__dirname, '..', '..', 'package.json');
51
- const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
52
- return typeof pkg.version === 'string' ? pkg.version : '0.0.0';
53
- }
54
- catch {
55
- return '0.0.0';
56
- }
57
- }
58
- exports.CLI_VERSION = readCliVersion();
59
- //# sourceMappingURL=cli-version.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-version.js","sourceRoot":"","sources":["../../src/lib/cli-version.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA8B;AAC9B,gDAAkC;AAElC;;;;;;;;GAQG;AACH,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAA0B,CAAC;QACnF,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAEY,QAAA,WAAW,GAAG,cAAc,EAAE,CAAC"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Wraps a command handler with abort handling (Ctrl+C during inquirer prompts).
3
- *
4
- * Usage:
5
- * export const myCommand = withCommandHandler(async (opts) => {
6
- * // command logic
7
- * });
8
- */
9
- export declare function withCommandHandler<T extends Record<string, unknown>>(fn: (opts: T) => Promise<void>): (opts: T) => Promise<void>;
10
- //# sourceMappingURL=command-handler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../src/lib/command-handler.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAC7B,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAE5B"}
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.withCommandHandler = withCommandHandler;
4
- const abort_1 = require("./abort");
5
- /**
6
- * Wraps a command handler with abort handling (Ctrl+C during inquirer prompts).
7
- *
8
- * Usage:
9
- * export const myCommand = withCommandHandler(async (opts) => {
10
- * // command logic
11
- * });
12
- */
13
- function withCommandHandler(fn) {
14
- return (opts) => (0, abort_1.withAbortHandler)(() => fn(opts));
15
- }
16
- //# sourceMappingURL=command-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-handler.js","sourceRoot":"","sources":["../../src/lib/command-handler.ts"],"names":[],"mappings":";;AAUA,gDAIC;AAdD,mCAA2C;AAE3C;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAChC,EAA8B;IAE9B,OAAO,CAAC,IAAO,EAAE,EAAE,CAAC,IAAA,wBAAgB,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC"}
@@ -1,28 +0,0 @@
1
- import { Command } from 'commander';
2
- export interface CommandOption {
3
- flags: string;
4
- description: string;
5
- parser?: (value: string) => unknown;
6
- }
7
- export interface CommandArgument {
8
- name: string;
9
- description: string;
10
- }
11
- export interface CommandDefinition {
12
- name: string;
13
- description: string;
14
- arguments?: CommandArgument[];
15
- options?: CommandOption[];
16
- examples?: string[];
17
- handler: (opts: Record<string, unknown>, ...args: unknown[]) => void | Promise<void>;
18
- }
19
- export interface SubcommandGroupDefinition {
20
- name: string;
21
- description: string;
22
- commands: CommandDefinition[];
23
- }
24
- /**
25
- * Register all commands and subcommand groups onto the program.
26
- */
27
- export declare function registerAll(program: Command, commands: CommandDefinition[], groups: SubcommandGroupDefinition[]): void;
28
- //# sourceMappingURL=command-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtF;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAiDD;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,MAAM,EAAE,yBAAyB,EAAE,GAClC,IAAI,CAON"}
@@ -1,54 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerAll = registerAll;
4
- /**
5
- * Register a flat command on the program.
6
- */
7
- function registerCommand(parent, def) {
8
- const cmd = parent.command(def.name).description(def.description);
9
- if (def.arguments) {
10
- for (const arg of def.arguments) {
11
- cmd.argument(arg.name, arg.description);
12
- }
13
- }
14
- if (def.options) {
15
- for (const opt of def.options) {
16
- if (opt.parser) {
17
- cmd.option(opt.flags, opt.description, opt.parser);
18
- }
19
- else {
20
- cmd.option(opt.flags, opt.description);
21
- }
22
- }
23
- }
24
- if (def.examples?.length) {
25
- cmd.addHelpText('after', '\nExamples:\n' + def.examples.map((e) => ` $ ${e}`).join('\n') + '\n');
26
- }
27
- cmd.action((...actionArgs) => {
28
- // Commander passes positional args first, then options object, then Command
29
- const opts = actionArgs.at(-2);
30
- const positionalArgs = actionArgs.slice(0, -2);
31
- return def.handler(opts, ...positionalArgs);
32
- });
33
- }
34
- /**
35
- * Register a group of subcommands (e.g. `app create`, `app list`).
36
- */
37
- function registerSubcommandGroup(parent, group) {
38
- const groupCmd = parent.command(group.name).description(group.description);
39
- for (const def of group.commands) {
40
- registerCommand(groupCmd, def);
41
- }
42
- }
43
- /**
44
- * Register all commands and subcommand groups onto the program.
45
- */
46
- function registerAll(program, commands, groups) {
47
- for (const cmd of commands) {
48
- registerCommand(program, cmd);
49
- }
50
- for (const group of groups) {
51
- registerSubcommandGroup(program, group);
52
- }
53
- }
54
- //# sourceMappingURL=command-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":";;AA8EA,kCAWC;AA7DD;;GAEG;AACH,SAAS,eAAe,CAAC,MAAe,EAAE,GAAsB;IAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAElE,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAChC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACzB,GAAG,CAAC,WAAW,CACb,OAAO,EACP,eAAe,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CACxE,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,EAAE,EAAE;QAC3B,4EAA4E;QAC5E,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAA4B,CAAC;QAC1D,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,cAAc,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,MAAe,EAAE,KAAgC;IAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3E,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CACzB,OAAgB,EAChB,QAA6B,EAC7B,MAAmC;IAEnC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC"}
@@ -1,83 +0,0 @@
1
- export declare function getCredentialsPath(): string;
2
- export interface AppCredential {
3
- clientId: string;
4
- clientSecret: string;
5
- }
6
- export type AuthCred = {
7
- kind: 'api-key';
8
- apiKey: string;
9
- } | {
10
- kind: 'oauth';
11
- accessToken: string;
12
- refreshToken: string;
13
- expiresAt: number;
14
- tokenType: string;
15
- scope?: string;
16
- };
17
- export declare function getApiKey(): string | undefined;
18
- export declare function getAccessToken(): string | undefined;
19
- export declare function getAuthCred(): AuthCred | undefined;
20
- export declare function getEmail(): string | undefined;
21
- export declare function getOrganizationId(): string | undefined;
22
- export declare function getUserId(): number | undefined;
23
- export declare function saveCredentials(apiKey: string, account: {
24
- email: string;
25
- organizationId: string;
26
- userId: number;
27
- }): void;
28
- export interface OauthTokensToStore {
29
- accessToken: string;
30
- refreshToken: string;
31
- expiresIn: number;
32
- tokenType: string;
33
- scope?: string;
34
- }
35
- export declare function saveOauthCredentials(tokens: OauthTokensToStore, account?: {
36
- email: string;
37
- organizationId: string;
38
- userId: number;
39
- }): void;
40
- export declare function updateOauthTokens(tokens: OauthTokensToStore): void;
41
- export declare function clearCredentials(): void;
42
- export declare function deleteCredentialsFile(): void;
43
- export declare function hasAppCredentials(): boolean;
44
- export declare function countAppCredentials(): number;
45
- export declare function isAuthenticated(): boolean;
46
- export declare function saveAppCredentials(appId: string, cred: AppCredential): void;
47
- export declare function clearAppsCache(): void;
48
- export declare function getAppCredentials(appId: string): AppCredential | undefined;
49
- export declare function deleteAppCredentials(appId: string): void;
50
- export declare function saveAppName(appId: string, name: string): void;
51
- export declare function getAppNames(): Record<string, string>;
52
- export declare function deleteAppName(appId: string): void;
53
- export interface ProjectConfig {
54
- appId: string;
55
- appName: string;
56
- logoUri?: string;
57
- cliVersion?: string;
58
- createdAt?: string;
59
- updatedAt?: string;
60
- auth: {
61
- type: string;
62
- scopes: string[];
63
- redirectUrls?: string[];
64
- };
65
- distribution: string;
66
- permittedUrls: {
67
- fetch: string[];
68
- img: string[];
69
- iframe: string[];
70
- js: string[];
71
- css: string[];
72
- };
73
- support: {
74
- supportEmail: string;
75
- documentationUrl: string;
76
- supportUrl: string;
77
- supportPhone: string;
78
- };
79
- }
80
- export declare function readProjectConfig(): ProjectConfig | null;
81
- export declare function hasLocalApp(): boolean;
82
- export declare function writeProjectConfig(config: ProjectConfig): void;
83
- //# sourceMappingURL=config.d.ts.map