@getbrevo/cli 1.1.0 → 1.1.1
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.
- package/CHANGELOG.md +16 -0
- package/README.md +14 -2
- package/agent-context/AGENTS.md +14 -4
- package/agent-context/SKILL.md +13 -3
- package/dist/api/client.d.ts +2 -0
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +50 -36
- package/dist/api/client.js.map +1 -1
- package/dist/bin/index.js +2 -0
- package/dist/bin/index.js.map +1 -1
- package/dist/commands/app/create.d.ts.map +1 -1
- package/dist/commands/app/create.js +240 -221
- package/dist/commands/app/create.js.map +1 -1
- package/dist/commands/app/delete.d.ts.map +1 -1
- package/dist/commands/app/delete.js +81 -62
- package/dist/commands/app/delete.js.map +1 -1
- package/dist/commands/app/list.d.ts.map +1 -1
- package/dist/commands/app/list.js +9 -2
- package/dist/commands/app/list.js.map +1 -1
- package/dist/commands/app/scaffold.d.ts.map +1 -1
- package/dist/commands/app/scaffold.js +12 -2
- package/dist/commands/app/scaffold.js.map +1 -1
- package/dist/commands/app/scopes.d.ts.map +1 -1
- package/dist/commands/app/scopes.js +2 -0
- package/dist/commands/app/scopes.js.map +1 -1
- package/dist/commands/app/start.d.ts.map +1 -1
- package/dist/commands/app/start.js +7 -0
- package/dist/commands/app/start.js.map +1 -1
- package/dist/commands/app/update.d.ts.map +1 -1
- package/dist/commands/app/update.js +297 -266
- package/dist/commands/app/update.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +154 -138
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +27 -20
- package/dist/commands/whoami.js.map +1 -1
- package/dist/lang/en.d.ts +20 -1
- package/dist/lang/en.d.ts.map +1 -1
- package/dist/lang/en.js +20 -1
- package/dist/lang/en.js.map +1 -1
- package/dist/lib/auth-guard.d.ts.map +1 -1
- package/dist/lib/auth-guard.js +10 -1
- package/dist/lib/auth-guard.js.map +1 -1
- package/dist/lib/constants.d.ts +8 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +17 -1
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +16 -3
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/telemetry.d.ts +9 -0
- package/dist/lib/telemetry.d.ts.map +1 -0
- package/dist/lib/telemetry.js +57 -0
- package/dist/lib/telemetry.js.map +1 -0
- package/dist/lib/update-notifier.d.ts.map +1 -1
- package/dist/lib/update-notifier.js +24 -20
- package/dist/lib/update-notifier.js.map +1 -1
- package/dist/lib/validators.d.ts +6 -0
- package/dist/lib/validators.d.ts.map +1 -1
- package/dist/lib/validators.js +10 -0
- package/dist/lib/validators.js.map +1 -1
- package/dist/services/scopes-html.d.ts.map +1 -1
- package/dist/services/scopes-html.js +208 -29
- package/dist/services/scopes-html.js.map +1 -1
- package/dist/services/skill.js +1 -1
- package/dist/services/skill.js.map +1 -1
- package/package.json +1 -2
|
@@ -16,23 +16,24 @@ function safeJson(value) {
|
|
|
16
16
|
// </script> can end the block, so we just neutralise '<'.
|
|
17
17
|
return JSON.stringify(value).replaceAll('<', String.raw `\u003c`);
|
|
18
18
|
}
|
|
19
|
-
// Styling
|
|
20
|
-
// accent and charcoal-grey neutrals. Fonts use a
|
|
21
|
-
// or web-font download) so the page renders the
|
|
19
|
+
// Styling matches the Brevo developers docs (developers.brevo.com) — Brevo
|
|
20
|
+
// green accent, pale-green hero, and charcoal-grey neutrals. Fonts use a
|
|
21
|
+
// system stack (no CDN fetch or web-font download) so the page renders the
|
|
22
|
+
// same with or without network.
|
|
22
23
|
const STYLES = `
|
|
23
24
|
:root {
|
|
24
25
|
color-scheme: light dark;
|
|
25
26
|
--bg: #ffffff;
|
|
26
|
-
--hero-bg: #
|
|
27
|
+
--hero-bg: #e6f6ec;
|
|
27
28
|
--fg: #1b1b1b;
|
|
28
29
|
--muted: #696969;
|
|
29
30
|
--border: #e3e3e3;
|
|
30
|
-
--accent: #
|
|
31
|
+
--accent: #0b996e;
|
|
31
32
|
--card: #ffffff;
|
|
32
33
|
--card-shadow: 0 1px 2px rgba(28, 28, 28, .08);
|
|
33
|
-
--chip-bg: #
|
|
34
|
-
--chip-fg: #
|
|
35
|
-
--section-header-bg: #
|
|
34
|
+
--chip-bg: #e1f3e8;
|
|
35
|
+
--chip-fg: #00734a;
|
|
36
|
+
--section-header-bg: #f6fbf8;
|
|
36
37
|
--error: #cf1a3b;
|
|
37
38
|
--radius-card: 16px;
|
|
38
39
|
--radius-input: 16px;
|
|
@@ -40,17 +41,17 @@ const STYLES = `
|
|
|
40
41
|
}
|
|
41
42
|
@media (prefers-color-scheme: dark) {
|
|
42
43
|
:root {
|
|
43
|
-
--bg: #
|
|
44
|
-
--hero-bg: #
|
|
45
|
-
--fg: #
|
|
46
|
-
--muted: #
|
|
47
|
-
--border: #
|
|
48
|
-
--accent: #
|
|
49
|
-
--card: #
|
|
44
|
+
--bg: #0e1613;
|
|
45
|
+
--hero-bg: #142119;
|
|
46
|
+
--fg: #f1f5f2;
|
|
47
|
+
--muted: #94a89c;
|
|
48
|
+
--border: #25382d;
|
|
49
|
+
--accent: #3ddc97;
|
|
50
|
+
--card: #16241c;
|
|
50
51
|
--card-shadow: 0 1px 2px rgba(0, 0, 0, .4);
|
|
51
|
-
--chip-bg: #
|
|
52
|
-
--chip-fg: #
|
|
53
|
-
--section-header-bg: #
|
|
52
|
+
--chip-bg: #1d3327;
|
|
53
|
+
--chip-fg: #a7e3c5;
|
|
54
|
+
--section-header-bg: #121f18;
|
|
54
55
|
--error: #ff8d9a;
|
|
55
56
|
}
|
|
56
57
|
}
|
|
@@ -68,7 +69,16 @@ body {
|
|
|
68
69
|
background: var(--hero-bg);
|
|
69
70
|
padding: 2.5rem 1.5rem 2rem;
|
|
70
71
|
}
|
|
71
|
-
.hero-inner {
|
|
72
|
+
.hero-inner {
|
|
73
|
+
max-width: 880px;
|
|
74
|
+
margin: 0 auto;
|
|
75
|
+
display: flex;
|
|
76
|
+
align-items: center;
|
|
77
|
+
justify-content: space-between;
|
|
78
|
+
gap: 1.5rem;
|
|
79
|
+
flex-wrap: wrap;
|
|
80
|
+
}
|
|
81
|
+
.hero-copy { flex: 1 1 24rem; min-width: 0; }
|
|
72
82
|
h1 {
|
|
73
83
|
font-size: 2rem;
|
|
74
84
|
line-height: 2.5rem;
|
|
@@ -76,6 +86,23 @@ h1 {
|
|
|
76
86
|
margin: 0 0 .5rem;
|
|
77
87
|
}
|
|
78
88
|
.intro { color: var(--muted); margin: 0; word-break: break-word; }
|
|
89
|
+
a.docs-cta {
|
|
90
|
+
display: inline-block;
|
|
91
|
+
flex: none;
|
|
92
|
+
white-space: nowrap;
|
|
93
|
+
padding: .5rem 1.1rem;
|
|
94
|
+
font-weight: 600;
|
|
95
|
+
font-size: .9rem;
|
|
96
|
+
color: #ffffff;
|
|
97
|
+
background: var(--accent);
|
|
98
|
+
border-radius: var(--radius-input);
|
|
99
|
+
text-decoration: none;
|
|
100
|
+
box-shadow: var(--card-shadow);
|
|
101
|
+
}
|
|
102
|
+
a.docs-cta:hover { opacity: .9; }
|
|
103
|
+
@media (prefers-color-scheme: dark) {
|
|
104
|
+
a.docs-cta { color: #0e1613; }
|
|
105
|
+
}
|
|
79
106
|
main {
|
|
80
107
|
max-width: 880px;
|
|
81
108
|
margin: 0 auto;
|
|
@@ -130,20 +157,77 @@ section {
|
|
|
130
157
|
overflow: hidden;
|
|
131
158
|
}
|
|
132
159
|
section[hidden] { display: none; }
|
|
133
|
-
section
|
|
160
|
+
.section-head {
|
|
161
|
+
display: flex;
|
|
162
|
+
align-items: center;
|
|
163
|
+
justify-content: space-between;
|
|
164
|
+
gap: .75rem;
|
|
165
|
+
padding: .55rem 1rem;
|
|
166
|
+
background: var(--section-header-bg);
|
|
167
|
+
border-bottom: 1px solid var(--border);
|
|
168
|
+
}
|
|
169
|
+
.section-head h2 {
|
|
134
170
|
font-size: .75rem;
|
|
135
171
|
font-weight: 600;
|
|
136
172
|
text-transform: uppercase;
|
|
137
173
|
letter-spacing: .06em;
|
|
138
174
|
color: var(--muted);
|
|
139
175
|
margin: 0;
|
|
140
|
-
padding: .85rem 1rem;
|
|
141
|
-
background: var(--section-header-bg);
|
|
142
|
-
border-bottom: 1px solid var(--border);
|
|
143
176
|
}
|
|
177
|
+
button.copy {
|
|
178
|
+
font: inherit;
|
|
179
|
+
font-size: .75rem;
|
|
180
|
+
font-weight: 600;
|
|
181
|
+
padding: .2rem .7rem;
|
|
182
|
+
border: 1px solid var(--border);
|
|
183
|
+
border-radius: var(--radius-chip);
|
|
184
|
+
background: var(--card);
|
|
185
|
+
color: var(--accent);
|
|
186
|
+
cursor: pointer;
|
|
187
|
+
white-space: nowrap;
|
|
188
|
+
}
|
|
189
|
+
button.copy:hover { background: var(--chip-bg); border-color: var(--chip-bg); }
|
|
190
|
+
button.copy:disabled { opacity: .55; cursor: default; }
|
|
191
|
+
.selection-bar {
|
|
192
|
+
display: flex;
|
|
193
|
+
gap: .75rem;
|
|
194
|
+
align-items: center;
|
|
195
|
+
margin-bottom: 1.5rem;
|
|
196
|
+
}
|
|
197
|
+
.selection-bar input[type="text"] {
|
|
198
|
+
flex: 1;
|
|
199
|
+
padding: .55rem .9rem;
|
|
200
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace;
|
|
201
|
+
font-size: .85rem;
|
|
202
|
+
border: 1px solid var(--border);
|
|
203
|
+
border-radius: var(--radius-input);
|
|
204
|
+
background: var(--card);
|
|
205
|
+
color: var(--fg);
|
|
206
|
+
}
|
|
207
|
+
.selection-bar button.copy { padding: .5rem 1rem; font-size: .9rem; }
|
|
144
208
|
ul { list-style: none; margin: 0; padding: .5rem 0; }
|
|
145
209
|
li { padding: .4rem 1rem; }
|
|
146
210
|
li[hidden] { display: none; }
|
|
211
|
+
.scope-row { display: flex; align-items: flex-start; gap: .55rem; }
|
|
212
|
+
.scope-row input[type="checkbox"] {
|
|
213
|
+
accent-color: var(--accent);
|
|
214
|
+
margin-top: .25rem;
|
|
215
|
+
flex: none;
|
|
216
|
+
cursor: pointer;
|
|
217
|
+
}
|
|
218
|
+
.scope-row details { flex: 1; min-width: 0; }
|
|
219
|
+
.badge {
|
|
220
|
+
font-size: .68rem;
|
|
221
|
+
font-weight: 600;
|
|
222
|
+
text-transform: uppercase;
|
|
223
|
+
letter-spacing: .04em;
|
|
224
|
+
color: var(--error);
|
|
225
|
+
border: 1px solid currentColor;
|
|
226
|
+
border-radius: var(--radius-chip);
|
|
227
|
+
padding: 0 .45rem;
|
|
228
|
+
margin-left: .5rem;
|
|
229
|
+
vertical-align: middle;
|
|
230
|
+
}
|
|
147
231
|
details > summary {
|
|
148
232
|
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace;
|
|
149
233
|
font-size: .9rem;
|
|
@@ -179,6 +263,7 @@ footer {
|
|
|
179
263
|
font-size: .8rem;
|
|
180
264
|
color: var(--muted);
|
|
181
265
|
}
|
|
266
|
+
footer a { color: var(--accent); }
|
|
182
267
|
`.trim();
|
|
183
268
|
const SCRIPT = `
|
|
184
269
|
(function () {
|
|
@@ -190,8 +275,19 @@ const SCRIPT = `
|
|
|
190
275
|
var refreshBtn = document.getElementById('refresh-btn');
|
|
191
276
|
var errorEl = document.getElementById('refresh-error');
|
|
192
277
|
var introCountEl = document.getElementById('scopes-count');
|
|
278
|
+
var selectedEl = document.getElementById('selected-scopes');
|
|
279
|
+
var copySelectedBtn = document.getElementById('copy-selected');
|
|
193
280
|
var labels = JSON.parse(document.getElementById('labels').textContent);
|
|
194
281
|
|
|
282
|
+
// Selected scope names, in click order. Rendered as '"a","b"' — pastes
|
|
283
|
+
// straight into app-config.json's auth.scopes array, and shells strip the
|
|
284
|
+
// quotes so "brevo app update --scope" accepts the same paste.
|
|
285
|
+
var selected = [];
|
|
286
|
+
|
|
287
|
+
function quoted(names) {
|
|
288
|
+
return names.map(function (n) { return '"' + n + '"'; }).join(',');
|
|
289
|
+
}
|
|
290
|
+
|
|
195
291
|
function escapeHtml(s) {
|
|
196
292
|
return String(s).replace(/[&<>"']/g, function (c) {
|
|
197
293
|
return { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c];
|
|
@@ -211,10 +307,28 @@ const SCRIPT = `
|
|
|
211
307
|
});
|
|
212
308
|
var html = '';
|
|
213
309
|
byCategory.forEach(function (items, cat) {
|
|
214
|
-
|
|
310
|
+
var copyAria = labels.copyCategoryAria.replace('{category}', cat);
|
|
311
|
+
html += '<section><div class="section-head"><h2>' + escapeHtml(cat) + '</h2>';
|
|
312
|
+
html +=
|
|
313
|
+
'<button type="button" class="copy copy-category" data-category="' + escapeHtml(cat) +
|
|
314
|
+
'" aria-label="' + escapeHtml(copyAria) + '">' + escapeHtml(labels.copy) + '</button></div><ul>';
|
|
215
315
|
items.forEach(function (e) {
|
|
216
316
|
var endpoints = Array.isArray(e.apiEndpoints) ? e.apiEndpoints : [];
|
|
217
|
-
|
|
317
|
+
var isLegacy = e.name === labels.legacyScope;
|
|
318
|
+
html += '<li><div class="scope-row">';
|
|
319
|
+
if (isLegacy) {
|
|
320
|
+
// The legacy catch-all scope is deprecated: badge it, no checkbox,
|
|
321
|
+
// and copy CTAs skip it so pasted lists never reintroduce it.
|
|
322
|
+
html += '<details><summary>' + escapeHtml(e.name) +
|
|
323
|
+
'<span class="badge" title="' + escapeHtml(labels.legacyTitle) + '">' +
|
|
324
|
+
escapeHtml(labels.legacyBadge) + '</span></summary>';
|
|
325
|
+
} else {
|
|
326
|
+
var selectAria = labels.selectScopeAria.replace('{scope}', e.name);
|
|
327
|
+
html += '<input type="checkbox" class="scope-check" data-scope="' + escapeHtml(e.name) +
|
|
328
|
+
'" aria-label="' + escapeHtml(selectAria) + '"' +
|
|
329
|
+
(selected.indexOf(e.name) !== -1 ? ' checked' : '') + '>';
|
|
330
|
+
html += '<details><summary>' + escapeHtml(e.name) + '</summary>';
|
|
331
|
+
}
|
|
218
332
|
if (endpoints.length) {
|
|
219
333
|
html += '<div class="endpoints" aria-label="' + escapeHtml(labels.endpointsLabel) + '">';
|
|
220
334
|
endpoints.forEach(function (ep) {
|
|
@@ -224,7 +338,7 @@ const SCRIPT = `
|
|
|
224
338
|
} else {
|
|
225
339
|
html += '<div class="endpoints"><span class="none">' + escapeHtml(labels.noEndpoints) + '</span></div>';
|
|
226
340
|
}
|
|
227
|
-
html += '</details></li>';
|
|
341
|
+
html += '</details></div></li>';
|
|
228
342
|
});
|
|
229
343
|
html += '</ul></section>';
|
|
230
344
|
});
|
|
@@ -232,6 +346,22 @@ const SCRIPT = `
|
|
|
232
346
|
applyFilter();
|
|
233
347
|
}
|
|
234
348
|
|
|
349
|
+
function copyText(text, btn) {
|
|
350
|
+
if (!navigator.clipboard || !navigator.clipboard.writeText) return;
|
|
351
|
+
navigator.clipboard.writeText(text).then(function () {
|
|
352
|
+
var original = btn.textContent;
|
|
353
|
+
btn.textContent = labels.copied;
|
|
354
|
+
setTimeout(function () {
|
|
355
|
+
btn.textContent = original;
|
|
356
|
+
}, 1200);
|
|
357
|
+
}).catch(function () { /* clipboard denied — leave the button as-is */ });
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
function updateSelection() {
|
|
361
|
+
selectedEl.value = quoted(selected);
|
|
362
|
+
copySelectedBtn.disabled = selected.length === 0;
|
|
363
|
+
}
|
|
364
|
+
|
|
235
365
|
function applyFilter() {
|
|
236
366
|
var q = searchEl ? searchEl.value.toLowerCase().trim() : '';
|
|
237
367
|
var sections = listEl.querySelectorAll('section');
|
|
@@ -254,11 +384,37 @@ const SCRIPT = `
|
|
|
254
384
|
|
|
255
385
|
render(state);
|
|
256
386
|
setCount(state.length);
|
|
387
|
+
updateSelection();
|
|
257
388
|
|
|
258
389
|
if (searchEl) {
|
|
259
390
|
searchEl.addEventListener('input', applyFilter);
|
|
260
391
|
}
|
|
261
392
|
|
|
393
|
+
// Delegated handlers survive re-renders (refresh replaces listEl's HTML).
|
|
394
|
+
listEl.addEventListener('click', function (ev) {
|
|
395
|
+
var btn = ev.target.closest ? ev.target.closest('button.copy-category') : null;
|
|
396
|
+
if (!btn) return;
|
|
397
|
+
var cat = btn.getAttribute('data-category');
|
|
398
|
+
var names = state
|
|
399
|
+
.filter(function (e) { return e.category === cat && e.name !== labels.legacyScope; })
|
|
400
|
+
.map(function (e) { return e.name; });
|
|
401
|
+
copyText(quoted(names), btn);
|
|
402
|
+
});
|
|
403
|
+
|
|
404
|
+
listEl.addEventListener('change', function (ev) {
|
|
405
|
+
var box = ev.target.closest ? ev.target.closest('input.scope-check') : null;
|
|
406
|
+
if (!box) return;
|
|
407
|
+
var name = box.getAttribute('data-scope');
|
|
408
|
+
var idx = selected.indexOf(name);
|
|
409
|
+
if (box.checked && idx === -1) selected.push(name);
|
|
410
|
+
if (!box.checked && idx !== -1) selected.splice(idx, 1);
|
|
411
|
+
updateSelection();
|
|
412
|
+
});
|
|
413
|
+
|
|
414
|
+
copySelectedBtn.addEventListener('click', function () {
|
|
415
|
+
if (selected.length) copyText(quoted(selected), copySelectedBtn);
|
|
416
|
+
});
|
|
417
|
+
|
|
262
418
|
if (refreshBtn) {
|
|
263
419
|
var defaultLabel = refreshBtn.textContent;
|
|
264
420
|
refreshBtn.addEventListener('click', function () {
|
|
@@ -273,8 +429,13 @@ const SCRIPT = `
|
|
|
273
429
|
.then(function (body) {
|
|
274
430
|
var entries = Array.isArray(body && body.scopes) ? body.scopes : [];
|
|
275
431
|
state = entries;
|
|
432
|
+
// Drop selections for scopes the IdP no longer returns.
|
|
433
|
+
selected = selected.filter(function (name) {
|
|
434
|
+
return state.some(function (e) { return e.name === name; });
|
|
435
|
+
});
|
|
276
436
|
render(state);
|
|
277
437
|
setCount(state.length);
|
|
438
|
+
updateSelection();
|
|
278
439
|
})
|
|
279
440
|
.catch(function () {
|
|
280
441
|
if (errorEl) errorEl.hidden = false;
|
|
@@ -297,11 +458,22 @@ function renderScopesHtml(entries) {
|
|
|
297
458
|
const refreshLabel = escapeHtml(en_1.messages.APP_SCOPES_WEB_REFRESH);
|
|
298
459
|
const refreshError = escapeHtml(en_1.messages.APP_SCOPES_WEB_REFRESH_FAILED);
|
|
299
460
|
const footer = escapeHtml(en_1.messages.APP_SCOPES_WEB_FOOTER);
|
|
461
|
+
const docsLink = escapeHtml(en_1.messages.APP_SCOPES_WEB_DOCS_LINK);
|
|
462
|
+
const catalogDocsCta = escapeHtml(en_1.messages.APP_SCOPES_WEB_CATALOG_DOCS_CTA);
|
|
463
|
+
const selectedPlaceholder = escapeHtml(en_1.messages.APP_SCOPES_WEB_SELECTED_PLACEHOLDER);
|
|
464
|
+
const copySelected = escapeHtml(en_1.messages.APP_SCOPES_WEB_COPY_SELECTED);
|
|
300
465
|
const labels = {
|
|
301
466
|
empty: en_1.messages.APP_SCOPES_WEB_EMPTY,
|
|
302
467
|
refreshing: en_1.messages.APP_SCOPES_WEB_REFRESHING,
|
|
303
468
|
endpointsLabel: en_1.messages.APP_SCOPES_WEB_ENDPOINTS_LABEL,
|
|
304
469
|
noEndpoints: en_1.messages.APP_SCOPES_WEB_NO_ENDPOINTS,
|
|
470
|
+
copy: en_1.messages.APP_SCOPES_WEB_COPY,
|
|
471
|
+
copied: en_1.messages.APP_SCOPES_WEB_COPIED,
|
|
472
|
+
copyCategoryAria: en_1.messages.APP_SCOPES_WEB_COPY_CATEGORY_ARIA,
|
|
473
|
+
selectScopeAria: en_1.messages.APP_SCOPES_WEB_SELECT_SCOPE_ARIA,
|
|
474
|
+
legacyScope: constants_1.LEGACY_ALL_SCOPE,
|
|
475
|
+
legacyBadge: en_1.messages.APP_SCOPES_WEB_LEGACY_BADGE,
|
|
476
|
+
legacyTitle: en_1.messages.APP_SCOPES_WEB_LEGACY_TITLE,
|
|
305
477
|
};
|
|
306
478
|
return `<!doctype html>
|
|
307
479
|
<html lang="en">
|
|
@@ -314,8 +486,11 @@ function renderScopesHtml(entries) {
|
|
|
314
486
|
<body>
|
|
315
487
|
<header class="hero">
|
|
316
488
|
<div class="hero-inner">
|
|
317
|
-
<
|
|
318
|
-
|
|
489
|
+
<div class="hero-copy">
|
|
490
|
+
<h1>${title}</h1>
|
|
491
|
+
<p class="intro">${introWithSpan}</p>
|
|
492
|
+
</div>
|
|
493
|
+
<a class="docs-cta" href="${constants_1.BREVO_OAUTH_SCOPES_DOCS_URL}" target="_blank" rel="noopener noreferrer">${catalogDocsCta} ↗</a>
|
|
319
494
|
</div>
|
|
320
495
|
</header>
|
|
321
496
|
<main>
|
|
@@ -324,8 +499,12 @@ function renderScopesHtml(entries) {
|
|
|
324
499
|
<button id="refresh-btn" class="refresh" type="button">${refreshLabel}</button>
|
|
325
500
|
</div>
|
|
326
501
|
<p id="refresh-error" class="refresh-error" hidden>${refreshError}</p>
|
|
502
|
+
<div class="selection-bar">
|
|
503
|
+
<input id="selected-scopes" type="text" readonly placeholder="${selectedPlaceholder}" aria-label="${selectedPlaceholder}">
|
|
504
|
+
<button id="copy-selected" class="copy" type="button" disabled>${copySelected}</button>
|
|
505
|
+
</div>
|
|
327
506
|
<div id="scopes-list"></div>
|
|
328
|
-
<footer>${footer}</footer>
|
|
507
|
+
<footer>${footer} <a href="${constants_1.BREVO_CLI_REFERENCE_URL}">${docsLink}</a></footer>
|
|
329
508
|
</main>
|
|
330
509
|
<script type="application/json" id="scopes-data">${safeJson(entries)}</script>
|
|
331
510
|
<script type="application/json" id="labels">${safeJson(labels)}</script>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scopes-html.js","sourceRoot":"","sources":["../../src/services/scopes-html.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"scopes-html.js","sourceRoot":"","sources":["../../src/services/scopes-html.ts"],"names":[],"mappings":"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"}
|
package/dist/services/skill.js
CHANGED
|
@@ -48,7 +48,7 @@ const skills_1 = require("../skills");
|
|
|
48
48
|
// can target a different root without monkey-patching `os.homedir`.
|
|
49
49
|
function getClaudeSkillsRoot() {
|
|
50
50
|
const override = process.env.BREVO_CLAUDE_HOME;
|
|
51
|
-
if (override
|
|
51
|
+
if (override?.trim()) {
|
|
52
52
|
return path.join(override, 'skills');
|
|
53
53
|
}
|
|
54
54
|
return path.join(os.homedir(), '.claude', 'skills');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/services/skill.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,kDAMC;AA6MD,sDAgBC;AAhPD,4CAA8B;AAC9B,gDAAkC;AAClC,4CAA8B;AAE9B,mCAAsC;AACtC,0CAAyC;AACzC,sCAAmF;AAEnF,qDAAqD;AACrD,wEAAwE;AACxE,yEAAyE;AACzE,oEAAoE;AAEpE,SAAgB,mBAAmB;IACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC/C,IAAI,QAAQ,
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/services/skill.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getbrevo/cli",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"author": "Brevo",
|
|
5
5
|
"description": "Brevo Developer CLI — create, manage apps and OAuth integrations",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -30,7 +30,6 @@
|
|
|
30
30
|
"lint:fix": "eslint 'src/**/*.ts' --fix",
|
|
31
31
|
"format": "prettier --write 'src/**/*.ts'",
|
|
32
32
|
"format:check": "prettier --check 'src/**/*.ts'",
|
|
33
|
-
"mock": "npx @stoplight/prism-cli mock mock/openapi.yaml --port 3112",
|
|
34
33
|
"smoke": "tsx scripts/smoke-test.ts",
|
|
35
34
|
"clean": "rm -rf dist",
|
|
36
35
|
"prepare": "husky",
|