@velaro/cli 1.4.54 → 1.4.56
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/README.md +9 -0
- package/assets/billing-doc-patterns/concentric-arcs.png +0 -0
- package/assets/billing-doc-patterns/diagonal-hatch.png +0 -0
- package/assets/billing-doc-patterns/dot-grid.png +0 -0
- package/assets/billing-doc-patterns/hex-grid.png +0 -0
- package/assets/billing-doc-patterns/wave-lines.png +0 -0
- package/assets/velaro-logo-lockup-full-color.png +0 -0
- package/bin/velaro.js +4 -0
- package/lib/commands/article.js +7 -3
- package/lib/commands/billing-subscription.js +610 -3
- package/lib/commands/contact-list.js +88 -1
- package/lib/commands/db.js +3 -0
- package/lib/commands/entitlement.js +24 -1
- package/lib/commands/login.js +7 -6
- package/lib/commands/logs.js +129 -5
- package/lib/commands/mcp-key.js +24 -14
- package/lib/commands/order-form.js +107 -0
- package/lib/commands/outbound-activity.js +124 -0
- package/lib/commands/subscription.js +61 -2
- package/lib/commands/support.js +19 -1
- package/lib/commands/teams.js +49 -1
- package/lib/config.js +24 -2
- package/lib/config.test.js +94 -0
- package/lib/kb-screenshot.js +120 -43
- package/lib/mcp-key.test.js +17 -0
- package/lib/pdf/billing-document.js +534 -0
- package/lib/pdf/billing-document.test.js +349 -0
- package/lib/site-flags.js +71 -0
- package/lib/site-flags.test.js +57 -0
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -95,6 +95,15 @@ Revoke an MCP key by ID.
|
|
|
95
95
|
velaro mcp-key revoke 2
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
+
### `velaro mcp-key rotate <id|label>`
|
|
99
|
+
Create a replacement key, show its value once, then revoke the matched key. The
|
|
100
|
+
replacement keeps the old expiry unless `--expires` is supplied. Update every
|
|
101
|
+
client using the old key; the command does not edit client configurations.
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
velaro mcp-key rotate 2
|
|
105
|
+
```
|
|
106
|
+
|
|
98
107
|
### `velaro kb article <subcommand>`
|
|
99
108
|
Manage your help.velaro.com knowledge base articles. Full reference (including the REST/MCP equivalents and the screenshot pipeline): [`docs/architecture/kb-publishing-system.md`](../docs/architecture/kb-publishing-system.md).
|
|
100
109
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/bin/velaro.js
CHANGED
|
@@ -47,6 +47,7 @@ import { mondayCommand } from '../lib/commands/monday.js';
|
|
|
47
47
|
import { notionCommand } from '../lib/commands/notion.js';
|
|
48
48
|
import { callrailCommand } from '../lib/commands/callrail.js';
|
|
49
49
|
import { emailCampaignCommand } from '../lib/commands/email-campaign.js';
|
|
50
|
+
import { outboundActivityCommand } from '../lib/commands/outbound-activity.js';
|
|
50
51
|
import { telephonyCommand } from '../lib/commands/telephony.js';
|
|
51
52
|
import { teamsPhoneCommand } from '../lib/commands/teams-phone.js';
|
|
52
53
|
import { teamsCommand } from '../lib/commands/teams.js';
|
|
@@ -61,6 +62,7 @@ import { migrationStatusCommand } from '../lib/commands/migration-status.js';
|
|
|
61
62
|
import { complianceCommand } from '../lib/commands/compliance.js';
|
|
62
63
|
import { billingContactsCommand } from '../lib/commands/billing-contacts.js';
|
|
63
64
|
import { billingSubscriptionCommand } from '../lib/commands/billing-subscription.js';
|
|
65
|
+
import { orderFormCommand } from '../lib/commands/order-form.js';
|
|
64
66
|
import { billingEmailPreferenceCommand } from '../lib/commands/billing-email-preference.js';
|
|
65
67
|
import { billingCommand } from '../lib/commands/billing.js';
|
|
66
68
|
import { couponGrantCommand } from '../lib/commands/coupon-grant.js';
|
|
@@ -140,6 +142,7 @@ await yargs(hideBin(process.argv))
|
|
|
140
142
|
.command(notionCommand)
|
|
141
143
|
.command(callrailCommand)
|
|
142
144
|
.command(emailCampaignCommand)
|
|
145
|
+
.command(outboundActivityCommand)
|
|
143
146
|
.command(telephonyCommand)
|
|
144
147
|
.command(teamsPhoneCommand)
|
|
145
148
|
.command(teamsCommand)
|
|
@@ -154,6 +157,7 @@ await yargs(hideBin(process.argv))
|
|
|
154
157
|
.command(complianceCommand)
|
|
155
158
|
.command(billingContactsCommand)
|
|
156
159
|
.command(billingSubscriptionCommand)
|
|
160
|
+
.command(orderFormCommand)
|
|
157
161
|
.command(billingEmailPreferenceCommand)
|
|
158
162
|
.command(billingCommand)
|
|
159
163
|
.command(couponGrantCommand)
|
package/lib/commands/article.js
CHANGED
|
@@ -238,17 +238,19 @@ const screenshotCommand = {
|
|
|
238
238
|
builder: (y) =>
|
|
239
239
|
y
|
|
240
240
|
.positional('articleId', { type: 'number', describe: 'Target article ID' })
|
|
241
|
-
.option('app', { type: 'string', choices: ['admin', 'messaging'], demandOption: true, describe: 'Which app to capture from' })
|
|
241
|
+
.option('app', { type: 'string', choices: ['admin', 'messaging', 'livefluence'], demandOption: true, describe: 'Which app to capture from' })
|
|
242
242
|
.option('route', { type: 'string', demandOption: true, describe: 'Route to navigate to, e.g. "/Settings/Routing"' })
|
|
243
243
|
.option('heading', { type: 'string', describe: 'Insert the image immediately after the <h2>/<h3> whose text contains this (case-insensitive). Falls back to appending at the end.' })
|
|
244
|
-
.option('annotate', { type: 'array', default: [], describe: 'x,y,label annotation, repeatable — e.g. --annotate 120,80,1 --annotate 400,200,"Click here"' })
|
|
244
|
+
.option('annotate', { type: 'array', default: [], describe: 'x,y,label annotation, repeatable — e.g. --annotate 120,80,1 --annotate 400,200,"Click here"' })
|
|
245
|
+
.option('click', { type: 'string', describe: 'Selector to click after the route loads, before capturing (CSS, or Playwright\'s "text=..."/"role=..." engines) — e.g. --click "text=Export"' })
|
|
246
|
+
.option('popup', { type: 'boolean', default: false, describe: 'The --click target opens a NEW browser window (window.open/target=_blank, e.g. a per-transcript export action) — capture that window instead of the original page' }),
|
|
245
247
|
handler: runCommand(async (argv) => {
|
|
246
248
|
const annotations = (argv.annotate || []).map((raw) => {
|
|
247
249
|
const [x, y, ...labelParts] = String(raw).split(',');
|
|
248
250
|
return { x: parseInt(x, 10), y: parseInt(y, 10), label: labelParts.join(',').trim() || undefined };
|
|
249
251
|
});
|
|
250
252
|
|
|
251
|
-
console.log(`Capturing ${argv.app} staging screenshot of "${argv.route}" for article [${argv.articleId}]...`);
|
|
253
|
+
console.log(`Capturing ${argv.app} staging screenshot of "${argv.route}"${argv.click ? ` (click "${argv.click}"${argv.popup ? ', following popup' : ''})` : ''} for article [${argv.articleId}]...`);
|
|
252
254
|
|
|
253
255
|
const result = await captureKbScreenshot({
|
|
254
256
|
app: argv.app,
|
|
@@ -256,6 +258,8 @@ const screenshotCommand = {
|
|
|
256
258
|
articleId: argv.articleId,
|
|
257
259
|
heading: argv.heading,
|
|
258
260
|
annotations,
|
|
261
|
+
click: argv.click,
|
|
262
|
+
popup: argv.popup,
|
|
259
263
|
});
|
|
260
264
|
|
|
261
265
|
console.log(`Uploaded: ${result.imageUrl}`);
|